@provoly/dashboard 1.2.8 → 1.2.10
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/admin/admin.module.d.ts +14 -14
- package/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.d.ts +5 -16
- package/admin/components/admin-dataset/{shared/admin-form-dataset → admin-form-dataset}/admin-form-dataset.component.d.ts +8 -7
- package/admin/components/admin-dataset/store/admin-dataset.actions.d.ts +23 -18
- package/admin/components/admin-dataset/store/admin-dataset.effects.d.ts +9 -6
- package/admin/components/admin-dataset/store/admin-dataset.service.d.ts +2 -1
- package/admin/components/shared/add-category-modal/add-category-modal.component.d.ts +39 -0
- package/admin/i18n/en.translations.d.ts +23 -8
- package/admin/i18n/fr.translations.d.ts +23 -8
- package/dataset/components/dataset.component.d.ts +3 -7
- package/dataset/dataset.module.d.ts +7 -9
- package/dataset/i18n/en.translations.d.ts +8 -0
- package/dataset/i18n/fr.translations.d.ts +8 -0
- package/dataset/public-api.d.ts +0 -1
- package/dataset/style/_o-pry-dataset.scss +5 -42
- package/esm2022/admin/admin.module.mjs +7 -8
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +22 -53
- package/esm2022/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.mjs +1 -1
- package/esm2022/admin/components/admin-dataset/admin-form-dataset/admin-form-dataset.component.mjs +115 -0
- package/esm2022/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.mjs +1 -1
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +3 -3
- package/esm2022/admin/components/admin-dataset/store/admin-dataset.actions.mjs +11 -10
- package/esm2022/admin/components/admin-dataset/store/admin-dataset.effects.mjs +2 -1
- package/esm2022/admin/components/admin-dataset/store/admin-dataset.service.mjs +10 -4
- package/esm2022/admin/components/shared/add-category-modal/add-category-modal.component.mjs +73 -0
- package/esm2022/admin/i18n/en.translations.mjs +25 -10
- package/esm2022/admin/i18n/fr.translations.mjs +26 -11
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +4 -5
- package/esm2022/dataset/components/dataset.component.mjs +8 -23
- package/esm2022/dataset/dataset.module.mjs +12 -13
- package/esm2022/dataset/i18n/en.translations.mjs +9 -1
- package/esm2022/dataset/i18n/fr.translations.mjs +10 -2
- package/esm2022/dataset/public-api.mjs +1 -2
- package/esm2022/dataset/style/css.component.mjs +3 -3
- package/esm2022/lib/core/components/chips-selector/chips-selector.component.mjs +7 -27
- package/esm2022/lib/core/components/chips-selector/chips-selector.module.mjs +21 -0
- package/esm2022/lib/core/components/select-image/select-image.component.mjs +1 -1
- package/esm2022/lib/core/components/share/group-share/group-share.component.mjs +3 -3
- package/esm2022/lib/core/components/share/share.module.mjs +8 -12
- package/esm2022/lib/core/core.module.mjs +4 -8
- package/esm2022/lib/core/i18n/en.translations.mjs +8 -8
- package/esm2022/lib/core/i18n/fr.translations.mjs +9 -9
- package/esm2022/lib/core/pipes/get-secured-image/get-secured-image.pipe.mjs +21 -0
- package/esm2022/lib/core/pipes/since-date/since-date.module.mjs +18 -0
- package/esm2022/lib/core/pipes/since-date/since-date.pipe.mjs +55 -0
- package/esm2022/lib/core/pipes/translate-id/translate-id.pipe.mjs +108 -0
- package/esm2022/lib/core/pipes/translate-item-to-symbol/translate-item-to-symbol.pipe.mjs +23 -0
- package/esm2022/lib/core/public-api.mjs +7 -4
- package/esm2022/lib/core/store/data-source/data-source.actions.mjs +4 -2
- package/esm2022/lib/core/store/data-source/data-source.effects.mjs +4 -1
- package/esm2022/lib/core/store/data-source/data-source.model.mjs +1 -1
- package/esm2022/lib/core/store/data-source/data-source.reducer.mjs +6 -2
- package/esm2022/lib/core/store/data-source/data-source.selectors.mjs +4 -2
- package/esm2022/lib/core/store/data-source/data-source.service.mjs +6 -1
- package/esm2022/lib/core/store/data-source/datasource-utils.mjs +22 -1
- package/esm2022/lib/dashboard/components/widgets/data-widget.component.mjs +2 -2
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-card/datasource-card.component.mjs +60 -0
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.mjs +95 -0
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +53 -48
- package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +6 -7
- package/esm2022/lib/dashboard/components/widgets/public-api.mjs +3 -1
- package/esm2022/lib/dashboard/dashboard.module.mjs +19 -7
- package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +2 -2
- package/esm2022/pipeline/components/pipeline-details/pipeline-details.component.mjs +2 -3
- package/esm2022/pipeline/components/pipeline-list/pipeline-list.component.mjs +2 -3
- package/esm2022/pipeline/pipeline.module.mjs +8 -9
- package/esm2022/presentation/components/presentation.component.mjs +2 -3
- package/esm2022/presentation/presentation.module.mjs +8 -9
- package/esm2022/restitution/components/restitution/restitution.component.mjs +4 -4
- package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +2 -3
- package/esm2022/restitution/restitution.module.mjs +2 -3
- package/esm2022/restitution/style/css.component.mjs +2 -2
- package/fesm2022/provoly-dashboard-admin.mjs +194 -109
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +51 -79
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline.mjs +17 -19
- package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +8 -10
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +7 -9
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +3475 -3233
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/components/chips-selector/chips-selector.component.d.ts +1 -6
- package/lib/core/components/chips-selector/chips-selector.module.d.ts +11 -0
- package/lib/core/components/share/share.module.d.ts +3 -4
- package/lib/core/core.module.d.ts +26 -27
- package/lib/core/i18n/en.translations.d.ts +7 -7
- package/lib/core/i18n/fr.translations.d.ts +7 -7
- package/{components/sinceDate/sinceDate.module.d.ts → lib/core/pipes/since-date/since-date.module.d.ts} +3 -2
- package/{components/sinceDate/sinceDate.pipe.d.ts → lib/core/pipes/since-date/since-date.pipe.d.ts} +4 -4
- package/lib/core/{components → pipes}/translate-id/translate-id.pipe.d.ts +0 -2
- package/lib/core/public-api.d.ts +6 -3
- package/lib/core/store/data-source/data-source.actions.d.ts +7 -0
- package/lib/core/store/data-source/data-source.effects.d.ts +3 -0
- package/lib/core/store/data-source/data-source.model.d.ts +3 -0
- package/lib/core/store/data-source/data-source.reducer.d.ts +2 -0
- package/lib/core/store/data-source/data-source.selectors.d.ts +1 -0
- package/lib/core/store/data-source/data-source.service.d.ts +2 -0
- package/lib/core/store/data-source/datasource-utils.d.ts +4 -1
- package/lib/dashboard/components/widgets/datasource-selector/datasource-card/datasource-card.component.d.ts +24 -0
- package/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.d.ts +35 -0
- package/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.d.ts +19 -11
- package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +1 -1
- package/lib/dashboard/components/widgets/public-api.d.ts +2 -0
- package/lib/dashboard/dashboard.module.d.ts +18 -15
- package/package.json +13 -19
- package/pipeline/pipeline.module.d.ts +3 -4
- package/presentation/presentation.module.d.ts +7 -8
- package/restitution/components/restitution/restitution.component.d.ts +1 -1
- package/restitution/restitution.module.d.ts +1 -2
- package/restitution/style/_o-restitution.scss +4 -0
- package/styles/base/_typography.scss +4 -0
- package/styles/base/_utils.scss +27 -1
- package/styles/components/_a-btn.scss +4 -0
- package/styles/components/_a-chip.scss +45 -0
- package/styles/components/_o-datasource-selector.scss +192 -0
- package/styles/components/_o-modal.scss +0 -42
- package/styles/components/_o-widget.scss +1 -1
- package/styles/layout/_o-base-layout.scss +1 -7
- package/styles/main.scss +1 -0
- package/styles-theme/main-theme.scss +0 -3
- package/components/sinceDate/index.d.ts +0 -5
- package/components/sinceDate/public-api.d.ts +0 -2
- package/dataset/components/dataset-card/dataset-card.component.d.ts +0 -18
- package/dataset/style/_o-pry-dataset-card.scss +0 -85
- package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +0 -99
- package/esm2022/components/sinceDate/provoly-dashboard-components-sinceDate.mjs +0 -5
- package/esm2022/components/sinceDate/public-api.mjs +0 -3
- package/esm2022/components/sinceDate/sinceDate.module.mjs +0 -16
- package/esm2022/components/sinceDate/sinceDate.pipe.mjs +0 -55
- package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +0 -41
- package/esm2022/lib/core/components/get-secured-image/get-secured-image.pipe.mjs +0 -21
- package/esm2022/lib/core/components/translate-id/translate-id.pipe.mjs +0 -114
- package/esm2022/lib/core/components/translate-item-to-symbol/translate-item-to-symbol.pipe.mjs +0 -23
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs +0 -75
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs.map +0 -1
- package/styles-theme/components-theme/_a-chip.theme.scss +0 -32
- package/styles-theme/components-theme/_o-pry-dataset-card.theme.scss +0 -26
- package/styles-theme/components-theme/_o-pry-dataset.theme.scss +0 -4
- /package/lib/core/{components → pipes}/get-secured-image/get-secured-image.pipe.d.ts +0 -0
- /package/lib/core/{components → pipes}/translate-item-to-symbol/translate-item-to-symbol.pipe.d.ts +0 -0
package/esm2022/admin/components/admin-dataset/admin-form-dataset/admin-form-dataset.component.mjs
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import { ClassActions, ClassSelectors, DataSourceActions, DataSourceSelectors, PryDatasetType, SubscriptionnerDirective } from '@provoly/dashboard';
|
|
4
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
5
|
+
import { AdminDatasetActions } from '../store/admin-dataset.actions';
|
|
6
|
+
import { AdminActions } from '../../../store/admin.actions';
|
|
7
|
+
import { AddCategoryModalComponent } from '../../shared/add-category-modal/add-category-modal.component';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@ngrx/store";
|
|
10
|
+
import * as i2 from "@angular/router";
|
|
11
|
+
import * as i3 from "@angular/forms";
|
|
12
|
+
import * as i4 from "@provoly/dashboard";
|
|
13
|
+
import * as i5 from "@angular/common";
|
|
14
|
+
export class AdminFormDatasetComponent extends SubscriptionnerDirective {
|
|
15
|
+
constructor(store, router, route, formBuilder, dialog) {
|
|
16
|
+
super();
|
|
17
|
+
this.store = store;
|
|
18
|
+
this.router = router;
|
|
19
|
+
this.route = route;
|
|
20
|
+
this.formBuilder = formBuilder;
|
|
21
|
+
this.dialog = dialog;
|
|
22
|
+
this.datasetList = [];
|
|
23
|
+
this.datasetTypes = [];
|
|
24
|
+
this.isSameName = false;
|
|
25
|
+
this.isSubmitted = false;
|
|
26
|
+
this.store.dispatch(ClassActions.load());
|
|
27
|
+
this.store.dispatch(DataSourceActions.dataset.loadDataset());
|
|
28
|
+
this.store.dispatch(DataSourceActions.dataset.getCategories());
|
|
29
|
+
this.datasetList$ = this.store.select(DataSourceSelectors.datasets);
|
|
30
|
+
this.classes$ = this.store.select(ClassSelectors.classes);
|
|
31
|
+
this.categories$ = this.store.select(DataSourceSelectors.categories);
|
|
32
|
+
this.form = this.formBuilder.group({
|
|
33
|
+
id: [uuidv4()],
|
|
34
|
+
name: ['', [Validators.required, Validators.maxLength(100)]],
|
|
35
|
+
oClass: ['', [Validators.required]],
|
|
36
|
+
type: ['', [Validators.required]],
|
|
37
|
+
description: ['', [Validators.maxLength(500)]],
|
|
38
|
+
categories: [[]]
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
ngOnInit() {
|
|
42
|
+
this.isSameName = false;
|
|
43
|
+
this.subscriptions.add(this.datasetList$.subscribe((dataset) => {
|
|
44
|
+
this.datasetList = dataset;
|
|
45
|
+
}));
|
|
46
|
+
this.datasetTypes = Object.keys(PryDatasetType).map((label) => ({
|
|
47
|
+
label: '@pry.admin.dataset.' + label,
|
|
48
|
+
value: label
|
|
49
|
+
}));
|
|
50
|
+
this.subscriptions.add(this.dataset$?.subscribe((dataset) => {
|
|
51
|
+
if (dataset) {
|
|
52
|
+
this.form.patchValue({
|
|
53
|
+
id: dataset.id,
|
|
54
|
+
name: dataset.name,
|
|
55
|
+
oClass: dataset.oClass,
|
|
56
|
+
type: dataset.type,
|
|
57
|
+
description: dataset.description,
|
|
58
|
+
categories: dataset.categories
|
|
59
|
+
});
|
|
60
|
+
this.form.controls['oClass'].disable();
|
|
61
|
+
this.form.controls['type'].disable();
|
|
62
|
+
}
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
goBack() {
|
|
66
|
+
this.store.dispatch(AdminActions.routeTo({ path: this.getPath() }));
|
|
67
|
+
}
|
|
68
|
+
getPath() {
|
|
69
|
+
let path = this.router.createUrlTree(['..'], { relativeTo: this.route });
|
|
70
|
+
if (this.dataset$) {
|
|
71
|
+
path = this.router.createUrlTree(['../..'], { relativeTo: this.route });
|
|
72
|
+
}
|
|
73
|
+
return path.toString();
|
|
74
|
+
}
|
|
75
|
+
changeValueName(value) {
|
|
76
|
+
this.isSameName = false;
|
|
77
|
+
}
|
|
78
|
+
submit() {
|
|
79
|
+
this.isSubmitted = true;
|
|
80
|
+
if (this.form.valid) {
|
|
81
|
+
this.isSubmitted = false;
|
|
82
|
+
if (this.dataset$) {
|
|
83
|
+
const path = this.router.createUrlTree(['../..'], { relativeTo: this.route });
|
|
84
|
+
this.store.dispatch(AdminDatasetActions.update({ dataset: this.form.getRawValue(), route: path.toString() }));
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const path = this.router.createUrlTree(['..'], { relativeTo: this.route });
|
|
88
|
+
this.isSameName = !!this.datasetList.find((dataset) => this.form.get('name')?.value.toLowerCase() === dataset.name.toLowerCase());
|
|
89
|
+
if (!this.isSameName) {
|
|
90
|
+
this.store.dispatch(AdminDatasetActions.create({ dataset: this.form.getRawValue(), route: path.toString() }));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
openModal() {
|
|
95
|
+
const ref = this.dialog.open(AddCategoryModalComponent);
|
|
96
|
+
ref.component.entityType = 'dataset';
|
|
97
|
+
this.subscriptions.add(ref.component.category.subscribe((category) => {
|
|
98
|
+
if (!this.form.get('categories')?.value?.some((cat) => cat.id === category.id)) {
|
|
99
|
+
this.form.patchValue({
|
|
100
|
+
categories: [...(this.form.get('categories')?.value ?? []), category]
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}));
|
|
104
|
+
this.subscriptions.add(ref.component.closeModal.subscribe(() => ref.close()));
|
|
105
|
+
}
|
|
106
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminFormDatasetComponent, deps: [{ token: i1.Store }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.UntypedFormBuilder }, { token: i4.PryDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
107
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: AdminFormDatasetComponent, selector: "pry-admin-form-dataset", inputs: { dataset$: "dataset$" }, usesInheritance: true, ngImport: i0, template: "<form class=\"o-form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"name-label\" for=\"name\">\n {{ '@pry.admin.dataset.name' | i18n }} <span class=\"-error\">*</span>\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n (ngModelChange)=\"changeValueName($event)\"\n [attr.aria-labelledby]=\"isSubmitted && form.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && form.get('name')?.invalid\"\n required\n />\n @if (\n (isSubmitted && form.get('name')?.invalid) ||\n (form.get('name')?.touched && form.get('name')?.hasError('required'))\n ) {\n <label class=\"a-label a-label--help -error\" id=\"name-error\" for=\"name\">{{ '@pry.admin.required' | i18n }}</label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"description-label\" for=\"description\"\n >{{ '@pry.admin.fields.description' | i18n }}\n </label>\n <textarea\n class=\"-resizable-both\"\n formControlName=\"description\"\n name=\"description\"\n id=\"description\"\n maxlength=\"500\"\n ></textarea>\n @if (form.get('description')?.hasError('maxlength')) {\n <label for=\"description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '500' } }}\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"item-label\" for=\"class\"\n >{{ '@pry.admin.dataset.oClass' | i18n }}\n @if (!dataset$) {\n <span>*</span>\n }\n </label>\n <pry-select\n id=\"class\"\n formControlName=\"oClass\"\n [items]=\"classes$ | async\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n aria-labelledby=\"item-label\"\n ></pry-select>\n @if (form.get('oClass')?.touched && form.get('oClass')?.hasError('required')) {\n <label for=\"description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '500' } }}\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"user-label\" for=\"type\"\n >{{ '@pry.admin.dataset.type' | i18n }}\n @if (!dataset$) {\n <span>*</span>\n }\n </label>\n <pry-select\n id=\"type\"\n formControlName=\"type\"\n [items]=\"datasetTypes\"\n bindValue=\"value\"\n bindLabel=\"label\"\n [isForm]=\"true\"\n aria-labelledby=\"user-label\"\n ></pry-select>\n </div>\n\n <div class=\"u-display-flex -gap-20\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"tags-label\" for=\"tags\">{{ '@pry.dataset.tags' | i18n }}</label>\n <pry-select\n id=\"tags\"\n formControlName=\"categories\"\n [items]=\"categories$ | async\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n aria-labelledby=\"tags-label\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n ></pry-select>\n </div>\n <button class=\"a-btn a-btn--primary u-self-center\" type=\"button\" (click)=\"openModal()\">\n {{ '@pry.admin.dataset.addTag' | i18n }}\n </button>\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"goBack()\">\n {{ '@pry.admin.cancel' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" [disabled]=\"form.invalid\">\n {{ (dataset$ ? '@pry.admin.edit' : '@pry.admin.create') | i18n }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
|
|
108
|
+
}
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminFormDatasetComponent, decorators: [{
|
|
110
|
+
type: Component,
|
|
111
|
+
args: [{ selector: 'pry-admin-form-dataset', template: "<form class=\"o-form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"name-label\" for=\"name\">\n {{ '@pry.admin.dataset.name' | i18n }} <span class=\"-error\">*</span>\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n (ngModelChange)=\"changeValueName($event)\"\n [attr.aria-labelledby]=\"isSubmitted && form.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && form.get('name')?.invalid\"\n required\n />\n @if (\n (isSubmitted && form.get('name')?.invalid) ||\n (form.get('name')?.touched && form.get('name')?.hasError('required'))\n ) {\n <label class=\"a-label a-label--help -error\" id=\"name-error\" for=\"name\">{{ '@pry.admin.required' | i18n }}</label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"description-label\" for=\"description\"\n >{{ '@pry.admin.fields.description' | i18n }}\n </label>\n <textarea\n class=\"-resizable-both\"\n formControlName=\"description\"\n name=\"description\"\n id=\"description\"\n maxlength=\"500\"\n ></textarea>\n @if (form.get('description')?.hasError('maxlength')) {\n <label for=\"description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '500' } }}\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"item-label\" for=\"class\"\n >{{ '@pry.admin.dataset.oClass' | i18n }}\n @if (!dataset$) {\n <span>*</span>\n }\n </label>\n <pry-select\n id=\"class\"\n formControlName=\"oClass\"\n [items]=\"classes$ | async\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n aria-labelledby=\"item-label\"\n ></pry-select>\n @if (form.get('oClass')?.touched && form.get('oClass')?.hasError('required')) {\n <label for=\"description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '500' } }}\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"user-label\" for=\"type\"\n >{{ '@pry.admin.dataset.type' | i18n }}\n @if (!dataset$) {\n <span>*</span>\n }\n </label>\n <pry-select\n id=\"type\"\n formControlName=\"type\"\n [items]=\"datasetTypes\"\n bindValue=\"value\"\n bindLabel=\"label\"\n [isForm]=\"true\"\n aria-labelledby=\"user-label\"\n ></pry-select>\n </div>\n\n <div class=\"u-display-flex -gap-20\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"tags-label\" for=\"tags\">{{ '@pry.dataset.tags' | i18n }}</label>\n <pry-select\n id=\"tags\"\n formControlName=\"categories\"\n [items]=\"categories$ | async\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n aria-labelledby=\"tags-label\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n ></pry-select>\n </div>\n <button class=\"a-btn a-btn--primary u-self-center\" type=\"button\" (click)=\"openModal()\">\n {{ '@pry.admin.dataset.addTag' | i18n }}\n </button>\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"goBack()\">\n {{ '@pry.admin.cancel' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" [disabled]=\"form.invalid\">\n {{ (dataset$ ? '@pry.admin.edit' : '@pry.admin.create') | i18n }}\n </button>\n </div>\n</form>\n" }]
|
|
112
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.UntypedFormBuilder }, { type: i4.PryDialogService }], propDecorators: { dataset$: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}] } });
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tZm9ybS1kYXRhc2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2FkbWluL2NvbXBvbmVudHMvYWRtaW4tZGF0YXNldC9hZG1pbi1mb3JtLWRhdGFzZXQvYWRtaW4tZm9ybS1kYXRhc2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2FkbWluL2NvbXBvbmVudHMvYWRtaW4tZGF0YXNldC9hZG1pbi1mb3JtLWRhdGFzZXQvYWRtaW4tZm9ybS1kYXRhc2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQXdDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2xGLE9BQU8sRUFHTCxZQUFZLEVBQ1osY0FBYyxFQUVkLGlCQUFpQixFQUNqQixtQkFBbUIsRUFFbkIsY0FBYyxFQUVkLHdCQUF3QixFQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7OztBQU16RyxNQUFNLE9BQU8seUJBQTBCLFNBQVEsd0JBQXdCO0lBY3JFLFlBQ1UsS0FBNkIsRUFDN0IsTUFBYyxFQUNkLEtBQXFCLEVBQ3JCLFdBQStCLEVBQy9CLE1BQXdCO1FBRWhDLEtBQUssRUFBRSxDQUFDO1FBTkEsVUFBSyxHQUFMLEtB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R0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3hELEdBQUcsQ0FBQyxTQUFVLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsR0FBRyxDQUFDLFNBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFhLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pGLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO29CQUNuQixVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQztpQkFDdEUsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDOzhHQXZIVSx5QkFBeUI7a0dBQXpCLHlCQUF5Qix1SEMzQnRDLHkwSEErR0E7OzJGRHBGYSx5QkFBeUI7a0JBSnJDLFNBQVM7K0JBQ0Usd0JBQXdCOzRMQUl6QixRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBDYXRlZ29yeSxcbiAgQ2xhc3MsXG4gIENsYXNzQWN0aW9ucyxcbiAgQ2xhc3NTZWxlY3RvcnMsXG4gIERhdGFzZXQsXG4gIERhdGFTb3VyY2VBY3Rpb25zLFxuICBEYXRhU291cmNlU2VsZWN0b3JzLFxuICBEYXRhU291cmNlU3RhdGUsXG4gIFByeURhdGFzZXRUeXBlLFxuICBQcnlEaWFsb2dTZXJ2aWNlLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmVcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgQWRtaW5EYXRhc2V0QWN0aW9ucyB9IGZyb20gJy4uL3N0b3JlL2FkbWluLWRhdGFzZXQuYWN0aW9ucyc7XG5pbXBvcnQgeyBBZG1pbkFjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9hZG1pbi5hY3Rpb25zJztcbmltcG9ydCB7IEFkZENhdGVnb3J5TW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zaGFyZWQvYWRkLWNhdGVnb3J5LW1vZGFsL2FkZC1jYXRlZ29yeS1tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktYWRtaW4tZm9ybS1kYXRhc2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkbWluLWZvcm0tZGF0YXNldC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQWRtaW5Gb3JtRGF0YXNldENvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgZGF0YXNldCQ/OiBPYnNlcnZhYmxlPERhdGFzZXQgfCBudWxsPjtcblxuICBkYXRhc2V0TGlzdCQ6IE9ic2VydmFibGU8RGF0YXNldFtdPjtcbiAgZGF0YXNldExpc3Q6IERhdGFzZXRbXSA9IFtdO1xuICBkYXRhc2V0VHlwZXM6IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W10gPSBbXTtcbiAgY2xhc3NlcyQ6IE9ic2VydmFibGU8Q2xhc3NbXT47XG4gIGNhdGVnb3JpZXMkOiBPYnNlcnZhYmxlPENhdGVnb3J5W10+O1xuXG4gIGZvcm0hOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIGlzU2FtZU5hbWUgPSBmYWxzZTtcbiAgaXNTdWJtaXR0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxEYXRhU291cmNlU3RhdGU+LFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgZGlhbG9nOiBQcnlEaWFsb2dTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDbGFzc0FjdGlvbnMubG9hZCgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQubG9hZERhdGFzZXQoKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmdldENhdGVnb3JpZXMoKSk7XG4gICAgdGhpcy5kYXRhc2V0TGlzdCQgPSB0aGlzLnN0b3JlLnNlbGVjdChEYXRhU291cmNlU2VsZWN0b3JzLmRhdGFzZXRzKTtcbiAgICB0aGlzLmNsYXNzZXMkID0gdGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3Nlcyk7XG4gICAgdGhpcy5jYXRlZ29yaWVzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMuY2F0ZWdvcmllcyk7XG5cbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGlkOiBbdXVpZHY0KCldLFxuICAgICAgbmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKV1dLFxuICAgICAgb0NsYXNzOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICB0eXBlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBkZXNjcmlwdGlvbjogWycnLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTAwKV1dLFxuICAgICAgY2F0ZWdvcmllczogW1tdXVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc1NhbWVOYW1lID0gZmFsc2U7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZGF0YXNldExpc3QkLnN1YnNjcmliZSgoZGF0YXNldCkgPT4ge1xuICAgICAgICB0aGlzLmRhdGFzZXRMaXN0ID0gZGF0YXNldDtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuZGF0YXNldFR5cGVzID0gT2JqZWN0LmtleXMoUHJ5RGF0YXNldFR5cGUpLm1hcCgobGFiZWwpID0+ICh7XG4gICAgICBsYWJlbDogJ0BwcnkuYWRtaW4uZGF0YXNldC4nICsgbGFiZWwsXG4gICAgICB2YWx1ZTogbGFiZWxcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5kYXRhc2V0JD8uc3Vic2NyaWJlKChkYXRhc2V0OiBEYXRhc2V0IHwgbnVsbCkgPT4ge1xuICAgICAgICBpZiAoZGF0YXNldCkge1xuICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgIGlkOiBkYXRhc2V0LmlkLFxuICAgICAgICAgICAgbmFtZTogZGF0YXNldC5uYW1lLFxuICAgICAgICAgICAgb0NsYXNzOiBkYXRhc2V0Lm9DbGFzcyxcbiAgICAgICAgICAgIHR5cGU6IGRhdGFzZXQudHlwZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkYXRhc2V0LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogZGF0YXNldC5jYXRlZ29yaWVzXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbJ29DbGFzcyddLmRpc2FibGUoKTtcbiAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbJ3R5cGUnXS5kaXNhYmxlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdvQmFjaygpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEFkbWluQWN0aW9ucy5yb3V0ZVRvKHsgcGF0aDogdGhpcy5nZXRQYXRoKCkgfSkpO1xuICB9XG5cbiAgZ2V0UGF0aCgpIHtcbiAgICBsZXQgcGF0aCA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWycuLiddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgaWYgKHRoaXMuZGF0YXNldCQpIHtcbiAgICAgIHBhdGggPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnLi4vLi4nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aC50b1N0cmluZygpO1xuICB9XG5cbiAgY2hhbmdlVmFsdWVOYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlzU2FtZU5hbWUgPSBmYWxzZTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICB0aGlzLmlzU3VibWl0dGVkID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmlzU3VibWl0dGVkID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5kYXRhc2V0JCkge1xuICAgICAgICBjb25zdCBwYXRoID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy4uLy4uJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChBZG1pbkRhdGFzZXRBY3Rpb25zLnVwZGF0ZSh7IGRhdGFzZXQ6IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLCByb3V0ZTogcGF0aC50b1N0cmluZygpIH0pKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgcGF0aCA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWycuLiddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICB0aGlzLmlzU2FtZU5hbWUgPSAhIXRoaXMuZGF0YXNldExpc3QuZmluZChcbiAgICAgICAgKGRhdGFzZXQpID0+IHRoaXMuZm9ybS5nZXQoJ25hbWUnKT8udmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gZGF0YXNldC5uYW1lLnRvTG93ZXJDYXNlKClcbiAgICAgICk7XG4gICAgICBpZiAoIXRoaXMuaXNTYW1lTmFtZSkge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEFkbWluRGF0YXNldEFjdGlvbnMuY3JlYXRlKHsgZGF0YXNldDogdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCksIHJvdXRlOiBwYXRoLnRvU3RyaW5nKCkgfSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9wZW5Nb2RhbCgpIHtcbiAgICBjb25zdCByZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFkZENhdGVnb3J5TW9kYWxDb21wb25lbnQpO1xuICAgIHJlZi5jb21wb25lbnQhLmVudGl0eVR5cGUgPSAnZGF0YXNldCc7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHJlZi5jb21wb25lbnQhLmNhdGVnb3J5LnN1YnNjcmliZSgoY2F0ZWdvcnkpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm0uZ2V0KCdjYXRlZ29yaWVzJyk/LnZhbHVlPy5zb21lKChjYXQ6IENhdGVnb3J5KSA9PiBjYXQuaWQgPT09IGNhdGVnb3J5LmlkKSkge1xuICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IFsuLi4odGhpcy5mb3JtLmdldCgnY2F0ZWdvcmllcycpPy52YWx1ZSA/PyBbXSksIGNhdGVnb3J5XVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChyZWYuY29tcG9uZW50IS5jbG9zZU1vZGFsLnN1YnNjcmliZSgoKSA9PiByZWYuY2xvc2UoKSkpO1xuICB9XG59XG4iLCI8Zm9ybSBjbGFzcz1cIm8tZm9ybVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJzdWJtaXQoKVwiPlxuICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1zbVwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBpZD1cIm5hbWUtbGFiZWxcIiBmb3I9XCJuYW1lXCI+XG4gICAgICB7eyAnQHByeS5hZG1pbi5kYXRhc2V0Lm5hbWUnIHwgaTE4biB9fSA8c3BhbiBjbGFzcz1cIi1lcnJvclwiPio8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+KHt7ICdAcHJ5LmFkbWluLnJlcXVpcmVkJyB8IGkxOG4gfX0pPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICBpZD1cIm5hbWVcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VWYWx1ZU5hbWUoJGV2ZW50KVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiaXNTdWJtaXR0ZWQgJiYgZm9ybS5nZXQoJ25hbWUnKT8uaW52YWxpZCA/ICduYW1lLWxhYmVsIG5hbWUtZXJyb3InIDogJ25hbWUtbGFiZWwnXCJcbiAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpc1N1Ym1pdHRlZCAmJiBmb3JtLmdldCgnbmFtZScpPy5pbnZhbGlkXCJcbiAgICAgIHJlcXVpcmVkXG4gICAgLz5cbiAgICBAaWYgKFxuICAgICAgKGlzU3VibWl0dGVkICYmIGZvcm0uZ2V0KCduYW1lJyk/LmludmFsaWQpIHx8XG4gICAgICAoZm9ybS5nZXQoJ25hbWUnKT8udG91Y2hlZCAmJiBmb3JtLmdldCgnbmFtZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKSlcbiAgICApIHtcbiAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIiBpZD1cIm5hbWUtZXJyb3JcIiBmb3I9XCJuYW1lXCI+e3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgfVxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1zbVwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBpZD1cImRlc2NyaXB0aW9uLWxhYmVsXCIgZm9yPVwiZGVzY3JpcHRpb25cIlxuICAgICAgPnt7ICdAcHJ5LmFkbWluLmZpZWxkcy5kZXNjcmlwdGlvbicgfCBpMThuIH19XG4gICAgPC9sYWJlbD5cbiAgICA8dGV4dGFyZWFcbiAgICAgIGNsYXNzPVwiLXJlc2l6YWJsZS1ib3RoXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgIG5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICBpZD1cImRlc2NyaXB0aW9uXCJcbiAgICAgIG1heGxlbmd0aD1cIjUwMFwiXG4gICAgPjwvdGV4dGFyZWE+XG4gICAgQGlmIChmb3JtLmdldCgnZGVzY3JpcHRpb24nKT8uaGFzRXJyb3IoJ21heGxlbmd0aCcpKSB7XG4gICAgICA8bGFiZWwgZm9yPVwiZGVzY3JpcHRpb25cIiBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIj5cbiAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLm1heExlbmd0aCcgfCBpMThuOiB7IGxlbjogJzUwMCcgfSB9fVxuICAgICAgPC9sYWJlbD5cbiAgICB9XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLXNtXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGlkPVwiaXRlbS1sYWJlbFwiIGZvcj1cImNsYXNzXCJcbiAgICAgID57eyAnQHByeS5hZG1pbi5kYXRhc2V0Lm9DbGFzcycgfCBpMThuIH19XG4gICAgICBAaWYgKCFkYXRhc2V0JCkge1xuICAgICAgICA8c3Bhbj4qPC9zcGFuPlxuICAgICAgfVxuICAgIDwvbGFiZWw+XG4gICAgPHByeS1zZWxlY3RcbiAgICAgIGlkPVwiY2xhc3NcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwib0NsYXNzXCJcbiAgICAgIFtpdGVtc109XCJjbGFzc2VzJCB8IGFzeW5jXCJcbiAgICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICAgIGJpbmRMYWJlbD1cIm5hbWVcIlxuICAgICAgW2lzRm9ybV09XCJ0cnVlXCJcbiAgICAgIGFyaWEtbGFiZWxsZWRieT1cIml0ZW0tbGFiZWxcIlxuICAgID48L3ByeS1zZWxlY3Q+XG4gICAgQGlmIChmb3JtLmdldCgnb0NsYXNzJyk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoJ29DbGFzcycpPy5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgPGxhYmVsIGZvcj1cImRlc2NyaXB0aW9uXCIgY2xhc3M9XCJhLWxhYmVsIGEtbGFiZWwtLWhlbHAgLWVycm9yXCI+XG4gICAgICAgIHt7ICdAcHJ5LnByZXNlbnRhdGlvbi5tYXhMZW5ndGgnIHwgaTE4bjogeyBsZW46ICc1MDAnIH0gfX1cbiAgICAgIDwvbGFiZWw+XG4gICAgfVxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1zbVwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBpZD1cInVzZXItbGFiZWxcIiBmb3I9XCJ0eXBlXCJcbiAgICAgID57eyAnQHByeS5hZG1pbi5kYXRhc2V0LnR5cGUnIHwgaTE4biB9fVxuICAgICAgQGlmICghZGF0YXNldCQpIHtcbiAgICAgICAgPHNwYW4+Kjwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2xhYmVsPlxuICAgIDxwcnktc2VsZWN0XG4gICAgICBpZD1cInR5cGVcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidHlwZVwiXG4gICAgICBbaXRlbXNdPVwiZGF0YXNldFR5cGVzXCJcbiAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcbiAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgIFtpc0Zvcm1dPVwidHJ1ZVwiXG4gICAgICBhcmlhLWxhYmVsbGVkYnk9XCJ1c2VyLWxhYmVsXCJcbiAgICA+PC9wcnktc2VsZWN0PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwidS1kaXNwbGF5LWZsZXggLWdhcC0yMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLXNtXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgaWQ9XCJ0YWdzLWxhYmVsXCIgZm9yPVwidGFnc1wiPnt7ICdAcHJ5LmRhdGFzZXQudGFncycgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgIGlkPVwidGFnc1wiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNhdGVnb3JpZXNcIlxuICAgICAgICBbaXRlbXNdPVwiY2F0ZWdvcmllcyQgfCBhc3luY1wiXG4gICAgICAgIGJpbmRMYWJlbD1cIm5hbWVcIlxuICAgICAgICBbaXNGb3JtXT1cInRydWVcIlxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJ0YWdzLWxhYmVsXCJcbiAgICAgICAgW211bHRpcGxlXT1cInRydWVcIlxuICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJmYWxzZVwiXG4gICAgICA+PC9wcnktc2VsZWN0PlxuICAgIDwvZGl2PlxuICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeSB1LXNlbGYtY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuTW9kYWwoKVwiPlxuICAgICAge3sgJ0BwcnkuYWRtaW4uZGF0YXNldC5hZGRUYWcnIHwgaTE4biB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibS1idG4tZ3JvdXAgLXdpZHRoLXNtXCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICB7eyAnQHByeS5hZG1pbi5jYW5jZWwnIHwgaTE4biB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiIHR5cGU9XCJzdWJtaXRcIiBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCI+XG4gICAgICB7eyAoZGF0YXNldCQgPyAnQHByeS5hZG1pbi5lZGl0JyA6ICdAcHJ5LmFkbWluLmNyZWF0ZScpIHwgaTE4biB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
package/esm2022/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../
|
|
3
|
+
import * as i1 from "../admin-form-dataset/admin-form-dataset.component";
|
|
4
4
|
import * as i2 from "@provoly/dashboard";
|
|
5
5
|
export class AdminNewDatasetComponent {
|
|
6
6
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminNewDatasetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -150,15 +150,15 @@ export class AdminSelectDatasetComponent extends SubscriptionnerDirective {
|
|
|
150
150
|
return this.access ? this.access.canModifyDataset(dataset) : of(false);
|
|
151
151
|
}
|
|
152
152
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminSelectDatasetComponent, deps: [{ token: i1.Store }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.PryI18nService }, { token: PRY_ACCESS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
153
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: AdminSelectDatasetComponent, selector: "pry-admin-select-dataset", usesInheritance: true, ngImport: i0, template: "<div\n *ngIf=\"selectedDataset$ | async as dataset\"\n [id]=\"'panel-dataset-' + dataset.id\"\n [attr.aria-labelledby]=\"'button-dataset-' + dataset.id\"\n class=\"o-panel o-pry-admin-dataset-select\"\n>\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n\n <h3 class=\"a-h3\">\n {{ '@pry.admin.dataset.
|
|
153
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: AdminSelectDatasetComponent, selector: "pry-admin-select-dataset", usesInheritance: true, ngImport: i0, template: "<div\n *ngIf=\"selectedDataset$ | async as dataset\"\n [id]=\"'panel-dataset-' + dataset.id\"\n [attr.aria-labelledby]=\"'button-dataset-' + dataset.id\"\n class=\"o-panel o-pry-admin-dataset-select\"\n>\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n\n <h3 class=\"a-h3\">\n {{ '@pry.admin.dataset.datasetDetails' | i18n }}\n </h3>\n </div>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"datasetDetails\" name=\"dataset.details\"></pry-tab>\n <pry-tab [templateRef]=\"datasetMetadata\" name=\"metadata.title\"></pry-tab>\n <pry-tab [templateRef]=\"datasetAssociations\" name=\"classes.associations\"></pry-tab>\n <pry-tab *ngIf=\"canModify$(dataset) | async\" [templateRef]=\"shareDataset\" name=\"share\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #datasetDetails>\n <div class=\"u-display-flex -column -gap-20\">\n <div>\n <h4 class=\"a-h4\">{{ '@pry.dataset.name' | i18n }}</h4>\n <span>{{ dataset.name }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.dataset.description' | i18n }}</h4>\n @if (dataset.description) {\n <span>{{ dataset.description }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.dataset.noDescription' | i18n }}</span>\n }\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.customize.name' | i18n }}</h4>\n <span>{{ dataset.oClass | translateId: { type: 'class', output: 'name' } | async }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.dataset.type' | i18n }}</h4>\n <span>{{ '@pry.admin.dataset.' + dataset.type | i18n }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.dataset.tags' | i18n }}</h4>\n @if (dataset.categories && dataset.categories.length > 0) {\n <div class=\"u-display-flex\">\n @for (category of dataset.categories; track category.id) {\n <span class=\"a-chip -md\">{{ category.name }}</span>\n }\n </div>\n } @else {\n <span class=\"-italic\">{{ '@pry.dataset.noTags' | i18n }}</span>\n }\n </div>\n </div>\n </ng-template>\n\n <ng-template #datasetMetadata>\n <pry-metadata-editor\n [targetId]=\"(selectedDataset$ | async)?.id ?? ''\"\n [isModification]=\"(editable$ | async) ?? false\"\n [metadata]=\"(datasetMetadata$ | async) ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addDatasetMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </ng-template>\n\n <ng-template #datasetAssociations>\n <div *ngIf=\"associations$ | async as associations\" class=\"o-tabs__panels__item__content\">\n <h4 class=\"a-h4\">{{ '@pry.admin.classes.associations' | i18n }}</h4>\n <pry-association [associations]=\"associations\"></pry-association>\n </div>\n </ng-template>\n\n <ng-template #shareDataset>\n <div class=\"o-pry-admin-dataset-select__share\">\n <pry-group-share\n [ngModel]=\"dataset.groups\"\n (ngModelChange)=\"changeGroup($event)\"\n (radioValueChange)=\"updateGroups($event)\"\n ></pry-group-share>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary u-self-end\"\n #submit\n (click)=\"share(dataset)\"\n [disabled]=\"disableShareButton$ | async\"\n >\n {{ '@pry.admin.validate' | i18n }}\n </button>\n @if (selectedDatasetMissingGroups$ | async) {\n <h4 class=\"a-h4\">{{ '@pry.admin.dataset.success' | i18n }}</h4>\n }\n @if (missingGroups$ | async; as missingGroups) {\n <div class=\"u-display-flex -column\">\n <span>{{ '@pry.admin.dataset.conflict' | i18n }}</span>\n @for (missing of missingGroups | keyvalue; track missing.key) {\n <div>\n {{ '@pry.admin.dataset.entities.dashboard' | i18n }} <strong>{{ missing.value.entityName }}</strong>\n <div class=\"u-display-flex\">\n @for (group of missing.value.groups; track group) {\n <span class=\"a-chip\">{{ getGroupLabel(group) }}</span>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TabGroupComponent, selector: "pry-tab-group", inputs: ["translationStringBase"], outputs: ["clickedTabIdx"] }, { kind: "component", type: i3.TabComponent, selector: "pry-tab", inputs: ["name", "templateRef", "index"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: ["isModification", "targetId", "type", "metadata"], outputs: ["addMeta", "removeMeta"] }, { kind: "component", type: i3.PryGroupShareComponent, selector: "pry-group-share", inputs: ["disableRadios", "allowedGroups"], outputs: ["radioValueChange"] }, { kind: "component", type: i7.PryAssociationComponent, selector: "pry-association", inputs: ["associations"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i3.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
|
|
154
154
|
}
|
|
155
155
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminSelectDatasetComponent, decorators: [{
|
|
156
156
|
type: Component,
|
|
157
|
-
args: [{ selector: 'pry-admin-select-dataset', template: "<div\n *ngIf=\"selectedDataset$ | async as dataset\"\n [id]=\"'panel-dataset-' + dataset.id\"\n [attr.aria-labelledby]=\"'button-dataset-' + dataset.id\"\n class=\"o-panel o-pry-admin-dataset-select\"\n>\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n\n <h3 class=\"a-h3\">\n {{ '@pry.admin.dataset.
|
|
157
|
+
args: [{ selector: 'pry-admin-select-dataset', template: "<div\n *ngIf=\"selectedDataset$ | async as dataset\"\n [id]=\"'panel-dataset-' + dataset.id\"\n [attr.aria-labelledby]=\"'button-dataset-' + dataset.id\"\n class=\"o-panel o-pry-admin-dataset-select\"\n>\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n\n <h3 class=\"a-h3\">\n {{ '@pry.admin.dataset.datasetDetails' | i18n }}\n </h3>\n </div>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"datasetDetails\" name=\"dataset.details\"></pry-tab>\n <pry-tab [templateRef]=\"datasetMetadata\" name=\"metadata.title\"></pry-tab>\n <pry-tab [templateRef]=\"datasetAssociations\" name=\"classes.associations\"></pry-tab>\n <pry-tab *ngIf=\"canModify$(dataset) | async\" [templateRef]=\"shareDataset\" name=\"share\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #datasetDetails>\n <div class=\"u-display-flex -column -gap-20\">\n <div>\n <h4 class=\"a-h4\">{{ '@pry.dataset.name' | i18n }}</h4>\n <span>{{ dataset.name }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.dataset.description' | i18n }}</h4>\n @if (dataset.description) {\n <span>{{ dataset.description }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.dataset.noDescription' | i18n }}</span>\n }\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.customize.name' | i18n }}</h4>\n <span>{{ dataset.oClass | translateId: { type: 'class', output: 'name' } | async }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.dataset.type' | i18n }}</h4>\n <span>{{ '@pry.admin.dataset.' + dataset.type | i18n }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.dataset.tags' | i18n }}</h4>\n @if (dataset.categories && dataset.categories.length > 0) {\n <div class=\"u-display-flex\">\n @for (category of dataset.categories; track category.id) {\n <span class=\"a-chip -md\">{{ category.name }}</span>\n }\n </div>\n } @else {\n <span class=\"-italic\">{{ '@pry.dataset.noTags' | i18n }}</span>\n }\n </div>\n </div>\n </ng-template>\n\n <ng-template #datasetMetadata>\n <pry-metadata-editor\n [targetId]=\"(selectedDataset$ | async)?.id ?? ''\"\n [isModification]=\"(editable$ | async) ?? false\"\n [metadata]=\"(datasetMetadata$ | async) ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addDatasetMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </ng-template>\n\n <ng-template #datasetAssociations>\n <div *ngIf=\"associations$ | async as associations\" class=\"o-tabs__panels__item__content\">\n <h4 class=\"a-h4\">{{ '@pry.admin.classes.associations' | i18n }}</h4>\n <pry-association [associations]=\"associations\"></pry-association>\n </div>\n </ng-template>\n\n <ng-template #shareDataset>\n <div class=\"o-pry-admin-dataset-select__share\">\n <pry-group-share\n [ngModel]=\"dataset.groups\"\n (ngModelChange)=\"changeGroup($event)\"\n (radioValueChange)=\"updateGroups($event)\"\n ></pry-group-share>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary u-self-end\"\n #submit\n (click)=\"share(dataset)\"\n [disabled]=\"disableShareButton$ | async\"\n >\n {{ '@pry.admin.validate' | i18n }}\n </button>\n @if (selectedDatasetMissingGroups$ | async) {\n <h4 class=\"a-h4\">{{ '@pry.admin.dataset.success' | i18n }}</h4>\n }\n @if (missingGroups$ | async; as missingGroups) {\n <div class=\"u-display-flex -column\">\n <span>{{ '@pry.admin.dataset.conflict' | i18n }}</span>\n @for (missing of missingGroups | keyvalue; track missing.key) {\n <div>\n {{ '@pry.admin.dataset.entities.dashboard' | i18n }} <strong>{{ missing.value.entityName }}</strong>\n <div class=\"u-display-flex\">\n @for (group of missing.value.groups; track group) {\n <span class=\"a-chip\">{{ getGroupLabel(group) }}</span>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n</div>\n" }]
|
|
158
158
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.PryI18nService }, { type: i3.PryBaseAccess, decorators: [{
|
|
159
159
|
type: Optional
|
|
160
160
|
}, {
|
|
161
161
|
type: Inject,
|
|
162
162
|
args: [PRY_ACCESS_TOKEN]
|
|
163
163
|
}] }] });
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tc2VsZWN0LWRhdGFzZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hZG1pbi1kYXRhc2V0L2FkbWluLXNlbGVjdC1kYXRhc2V0L2FkbWluLXNlbGVjdC1kYXRhc2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2FkbWluL2NvbXBvbmVudHMvYWRtaW4tZGF0YXNldC9hZG1pbi1zZWxlY3QtZGF0YXNldC9hZG1pbi1zZWxlY3QtZGF0YXNldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBcUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9FLE9BQU8sRUFFTCxrQkFBa0IsRUFFbEIsbUJBQW1CLEVBR25CLGdCQUFnQixFQUdoQixZQUFZLEVBQ1osd0JBQXdCLEVBQ3pCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSwrQ0FBK0MsQ0FBQztBQUNsSCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxr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LENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RSxDQUFDOzhHQXBLVSwyQkFBMkIseUhBbUJoQixnQkFBZ0I7a0dBbkIzQiwyQkFBMkIsdUZDaEN4QyxnL0ZBOEVBOzsyRkQ5Q2EsMkJBQTJCO2tCQUp2QyxTQUFTOytCQUNFLDBCQUEwQjs7MEJBc0JqQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBBc3NvY2lhdGlvbnMsXG4gIERhc2hib2FyZFNlbGVjdG9ycyxcbiAgRGF0YXNldCxcbiAgRGF0YVNvdXJjZVNlbGVjdG9ycyxcbiAgTWV0YWRhdGFWYWx1ZSxcbiAgTWlzc2luZ0dyb3Vwc0J5RW50aXR5LFxuICBQUllfQUNDRVNTX1RPS0VOLFxuICBQcnlCYXNlQWNjZXNzLFxuICBQcnlJMThuU2VydmljZSxcbiAgUHJ5U2hhcmVNb2RlLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmVcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IE1ldGFkYXRhQWN0aW9ucywgTWV0YWRhdGFTZWxlY3RvcnMsIE1ldGFFdmVudFR5cGUgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQvY29tcG9uZW50cy9tZXRhZGF0YS1lZGl0b3InO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24sIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25jYXRMYXRlc3RGcm9tIH0gZnJvbSAnQG5ncngvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFkbWluQWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2FkbWluLmFjdGlvbnMnO1xuaW1wb3J0IHsgQWRtaW5TZWxlY3RvcnMgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9hZG1pbi5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgQWRtaW5EYXRhc2V0QWN0aW9ucyB9IGZyb20gJy4uL3N0b3JlL2FkbWluLWRhdGFzZXQuYWN0aW9ucyc7XG5pbXBvcnQgeyBBZG1pbkRhdGFzZXRTZWxlY3RvcnMgfSBmcm9tICcuLi9zdG9yZS9hZG1pbi1kYXRhc2V0LnNlbGVjdG9ycyc7XG5cbmludGVyZmFjZSBNaXNzaW5nR3JvdXBzIHtcbiAgW2tleTogc3RyaW5nXTogeyBncm91cHM6IHN0cmluZ1tdOyBlbnRpdHlOYW1lOiBzdHJpbmcgfTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWFkbWluLXNlbGVjdC1kYXRhc2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkbWluLXNlbGVjdC1kYXRhc2V0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBZG1pblNlbGVjdERhdGFzZXRDb21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHN0YXRpYyBpZCA9ICdBZG1pblNlbGVjdERhdGFzZXRDb21wb25lbnQnO1xuICBzZWxlY3RlZERhdGFzZXQkOiBPYnNlcnZhYmxlPERhdGFzZXQgfCBudWxsPjtcbiAgYXNzb2NpYXRpb25zJDogT2JzZXJ2YWJsZTxBc3NvY2lhdGlvbnMgfCB1bmRlZmluZWQ+O1xuICBzdWIgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIGN1cnJlbnRUeXBlVHJhbnNsYXRpb24gPSAnJztcbiAgZGF0YXNldE1ldGFkYXRhJDogT2JzZXJ2YWJsZTxNZXRhZGF0YVZhbHVlW10+O1xuICBlZGl0YWJsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFjY2Vzc0dyb3Vwczogc3RyaW5nW10gPSBbXTtcbiAgc2VsZWN0ZWREYXRhc2V0TWlzc2luZ0dyb3VwcyQ6IE9ic2VydmFibGU8TWlzc2luZ0dyb3Vwc0J5RW50aXR5IHwgdW5kZWZpbmVkPjtcbiAgbWlzc2luZ0dyb3VwcyQ6IE9ic2VydmFibGU8TWlzc2luZ0dyb3VwcyB8IHVuZGVmaW5lZD47XG4gIHNoYXJlUmFkaW9WYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByeVNoYXJlTW9kZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgZGlzYWJsZVNoYXJlQnV0dG9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGkxOG46IFByeUkxOG5TZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUFJZX0FDQ0VTU19UT0tFTikgcHJvdGVjdGVkIGFjY2VzczogUHJ5QmFzZUFjY2Vzc1xuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTWV0YWRhdGFBY3Rpb25zLmxvYWRNZXRhZGF0YSgpKTtcbiAgICB0aGlzLnNlbGVjdGVkRGF0YXNldCQgPSB0aGlzLnN0b3JlLnNlbGVjdChBZG1pbkRhdGFzZXRTZWxlY3RvcnMuc2VsZWN0ZWREYXRhc2V0KTtcbiAgICB0aGlzLmRhdGFzZXRNZXRhZGF0YSQgPSB0aGlzLnN0b3JlLnNlbGVjdChBZG1pbkRhdGFzZXRTZWxlY3RvcnMuc2VsZWN0ZWREYXRhc2V0TWV0YWRhdGEpO1xuICAgIHRoaXMuYXNzb2NpYXRpb25zJCA9IHRoaXMuc3RvcmUuc2VsZWN0KEFkbWluU2VsZWN0b3JzLnNlbGVjdGVkQXNzb2NpYXRpb24pO1xuICAgIHRoaXMuZWRpdGFibGUkID0gdGhpcy5zdG9yZS5zZWxlY3QoTWV0YWRhdGFTZWxlY3RvcnMuZWRpdGFibGUpO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhc2V0TWlzc2luZ0dyb3VwcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChBZG1pbkRhdGFzZXRTZWxlY3RvcnMuc2VsZWN0ZWREYXRhc2V0TWlzc2luZ0dyb3Vwcyk7XG4gICAgdGhpcy5taXNzaW5nR3JvdXBzJCA9IHRoaXMuc2VsZWN0ZWREYXRhc2V0TWlzc2luZ0dyb3VwcyQucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5tYW5pZmVzdHNMaXN0KSksXG4gICAgICBtYXAoKFtjb25mbGljdCwgbWFuaWZlc3RzXSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IHsgW2tleTogc3RyaW5nXTogeyBncm91cHM6IHN0cmluZ1tdOyBlbnRpdHlOYW1lOiBzdHJpbmcgfSB9ID0ge307XG4gICAgICAgIE9iamVjdC5rZXlzKGNvbmZsaWN0ID8/IHt9KS5mb3JFYWNoKChlbnRpdHlJZCkgPT4ge1xuICAgICAgICAgIHJlc3VsdFtlbnRpdHlJZF0gPSB7XG4gICAgICAgICAgICBncm91cHM6IGNvbmZsaWN0Py5bZW50aXR5SWRdID8/IFtdLFxuICAgICAgICAgICAgZW50aXR5TmFtZTogbWFuaWZlc3RzLmZpbmQoKG0pID0+IG0uaWQgPT09IGVudGl0eUlkKT8ubmFtZSA/PyBlbnRpdHlJZFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocmVzdWx0KS5sZW5ndGggPiAwID8gcmVzdWx0IDogdW5kZWZpbmVkO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuc2VsZWN0ZWREYXRhc2V0JCwgdGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5kYXRhc2V0VmVyc2lvbnMpXSlcbiAgICAgICAgLnBpcGUoY29uY2F0TGF0ZXN0RnJvbSgoW2RhdGFzZXQsIHZlcnNpb25zXSkgPT4gKGRhdGFzZXQgPyB0aGlzLmNhbk1vZGlmeSQoZGF0YXNldCkgOiBvZihmYWxzZSkpKSlcbiAgICAgICAgLnN1YnNjcmliZSgoW1tkYXRhc2V0LCB2ZXJzaW9uc10sIGNhbk1vZGlmeV0pID0+IHtcbiAgICAgICAgICBpZiAoZGF0YXNldCkge1xuICAgICAgICAgICAgdGhpcy5hY2Nlc3NHcm91cHMgPSBkYXRhc2V0Lmdyb3VwcyA/PyBbXTtcbiAgICAgICAgICAgIGNvbnN0IGVkaXRQYXRoID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy4nLCAnZGF0YXNldCcsICdlZGl0JywgZGF0YXNldC5pZF0sIHtcbiAgICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoY2FuTW9kaWZ5KSB7XG4gICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgICAgICAgQWRtaW5BY3Rpb25zLm1haW5BY3Rpb25zKHtcbiAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogQWRtaW5BY3Rpb25zLnJvdXRlVG8oeyBwYXRoOiBlZGl0UGF0aC50b1N0cmluZygpIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZWRpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2VkaXQnLFxuICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUFjY2VzczogJ2FkbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlQWNjZXNzOiAnZGF0YXNldCcsXG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uQWNjZXNzOiAnd3JpdGUnXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246IEFkbWluRGF0YXNldEFjdGlvbnMuY29uZmlybURhdGFzZXREZWxldGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhc2V0LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGU6IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWycuJywgJ2RhdGFzZXQnXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRSb3V0ZTogdGhpcy5yb3V0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZVVybFRyZWUoWycuJywgJ2RhdGFzZXQnLCAnbmV3J10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZGVsZXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnZGVsZXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVBY2Nlc3M6ICdhZG1pbicsXG4gICAgICAgICAgICAgICAgICAgICAgcGFnZUFjY2VzczogJ2RhdGFzZXQnLFxuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbkFjY2VzczogJ3dyaXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdmVyc2lvbnMuZmlsdGVyKCh2KSA9PiB2LmRhdGFzZXQgPT09IGRhdGFzZXQuaWQpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgICAgICAgIEFkbWluQWN0aW9ucy5tYWluQWN0aW9ucyh7XG4gICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjbG9zZVBhbmVsKCkge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnLicsICdkYXRhc2V0JywgJ25ldyddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChBZG1pbkRhdGFzZXRBY3Rpb25zLnVuc2VsZWN0RGF0YXNldCgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEFkbWluQWN0aW9ucy50b2dnbGVQYW5lbCh7IHBhbmVsT3BlbjogZmFsc2UgfSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBBZG1pbkFjdGlvbnMubWFpbkFjdGlvbnMoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uOiBBZG1pbkFjdGlvbnMucm91dGVUbyh7IHBhdGg6IHBhdGgudG9TdHJpbmcoKSB9KSxcbiAgICAgICAgICAgIGxhYmVsOiAnYWRkJyxcbiAgICAgICAgICAgIGljb246ICdhZGRfY29sdW1uJyxcbiAgICAgICAgICAgIG1vZHVsZUFjY2VzczogJ2FkbWluJyxcbiAgICAgICAgICAgIHBhZ2VBY2Nlc3M6ICdtZXRhZGF0YV9ydWxlcycsXG4gICAgICAgICAgICBhY3Rpb25BY2Nlc3M6ICd3cml0ZSdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJlbW92ZU1ldGFkYXRhKG1ldGFkYXRhOiBNZXRhRXZlbnRUeXBlKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIE1ldGFkYXRhQWN0aW9ucy5kZWxldGVEYXRhc2V0TWV0YWRhdGEoeyBkYXRhc2V0SWQ6IG1ldGFkYXRhLmlkLCBtZXRhZGF0YUlkOiBtZXRhZGF0YS5tZXRhZGF0YUlkIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFkZERhdGFzZXRNZXRhZGF0YShtZXRhZGF0YTogTWV0YUV2ZW50VHlwZSkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBNZXRhZGF0YUFjdGlvbnMuYWRkRGF0YXNldE1ldGFkYXRhKHtcbiAgICAgICAgZGF0YXNldElkOiBtZXRhZGF0YS5pZCxcbiAgICAgICAgbWV0YWRhdGFJZDogbWV0YWRhdGEubWV0YWRhdGFJZCxcbiAgICAgICAgdmFsdWU6IG1ldGFkYXRhLnZhbHVlXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzaGFyZShkYXRhc2V0OiBEYXRhc2V0KSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChBZG1pbkRhdGFzZXRBY3Rpb25zLnVwZGF0ZSh7IGRhdGFzZXQ6IHsgLi4uZGF0YXNldCwgZ3JvdXBzOiB0aGlzLmFjY2Vzc0dyb3VwcyB9LCByb3V0ZTogJycgfSkpO1xuICB9XG5cbiAgZ2V0R3JvdXBMYWJlbChncm91cE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGkxOG5CYXNlID0gJ0BwcnkuY29tcG9uZW50cy5jaGlwc1NlbGVjdG9yLnNoYXJlLmdyb3Vwcy4nO1xuICAgIGNvbnN0IGxhYmVsID0gdGhpcy5pMThuLmluc3RhbnQoaTE4bkJhc2UgKyBncm91cE5hbWUpO1xuICAgIHJldHVybiBsYWJlbC5zdGFydHNXaXRoKGkxOG5CYXNlKSA/IGdyb3VwTmFtZSA6IGxhYmVsO1xuICB9XG5cbiAgY2hhbmdlR3JvdXAoJGV2ZW50OiBzdHJpbmdbXSkge1xuICAgIHRoaXMuYWNjZXNzR3JvdXBzID0gJGV2ZW50O1xuICAgIHRoaXMudXBkYXRlRGlzYWJsZUJ1dHRvblZhbHVlKCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChBZG1pbkRhdGFzZXRBY3Rpb25zLnNldE1pc3NpbmdHcm91cHMoeyBtaXNzaW5nR3JvdXBzOiB1bmRlZmluZWQgfSkpO1xuICB9XG5cbiAgdXBkYXRlR3JvdXBzKCRldmVudDogUHJ5U2hhcmVNb2RlKSB7XG4gICAgdGhpcy5zaGFyZVJhZGlvVmFsdWUkLm5leHQoJGV2ZW50KTtcbiAgICB0aGlzLnVwZGF0ZURpc2FibGVCdXR0b25WYWx1ZSgpO1xuICB9XG5cbiAgdXBkYXRlRGlzYWJsZUJ1dHRvblZhbHVlKCkge1xuICAgIGlmICh0aGlzLnNoYXJlUmFkaW9WYWx1ZSQuZ2V0VmFsdWUoKSA9PT0gUHJ5U2hhcmVNb2RlLkdST1VQUyAmJiB0aGlzLmFjY2Vzc0dyb3Vwcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZGlzYWJsZVNoYXJlQnV0dG9uJC5uZXh0KHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlU2hhcmVCdXR0b24kLmdldFZhbHVlKCkpIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlU2hhcmVCdXR0b24kLm5leHQoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNhbk1vZGlmeSQoZGF0YXNldDogRGF0YXNldCkge1xuICAgIHJldHVybiB0aGlzLmFjY2VzcyA/IHRoaXMuYWNjZXNzLmNhbk1vZGlmeURhdGFzZXQoZGF0YXNldCkgOiBvZihmYWxzZSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgKm5nSWY9XCJzZWxlY3RlZERhdGFzZXQkIHwgYXN5bmMgYXMgZGF0YXNldFwiXG4gIFtpZF09XCIncGFuZWwtZGF0YXNldC0nICsgZGF0YXNldC5pZFwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInYnV0dG9uLWRhdGFzZXQtJyArIGRhdGFzZXQuaWRcIlxuICBjbGFzcz1cIm8tcGFuZWwgby1wcnktYWRtaW4tZGF0YXNldC1zZWxlY3RcIlxuPlxuICA8ZGl2IGNsYXNzPVwiby1wYW5lbF9faGVhZGVyXCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCIgKGNsaWNrKT1cImNsb3NlUGFuZWwoKVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LmFjdGlvbi5jbG9zZVBhbmVsJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCI+PC9wcnktaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxoMyBjbGFzcz1cImEtaDNcIj5cbiAgICAgIHt7ICdAcHJ5LmFkbWluLmRhdGFzZXQuZGV0YWlscycgfCBpMThuIH19XG4gICAgPC9oMz5cbiAgPC9kaXY+XG5cbiAgPHByeS10YWItZ3JvdXAgdHJhbnNsYXRpb25TdHJpbmdCYXNlPVwiQHByeS5hZG1pbi5cIj5cbiAgICA8cHJ5LXRhYiBbdGVtcGxhdGVSZWZdPVwiZGF0YXNldE1ldGFkYXRhXCIgbmFtZT1cIm1ldGFkYXRhLnRpdGxlXCI+PC9wcnktdGFiPlxuICAgIDxwcnktdGFiIFt0ZW1wbGF0ZVJlZl09XCJkYXRhc2V0QXNzb2NpYXRpb25zXCIgbmFtZT1cImNsYXNzZXMuYXNzb2NpYXRpb25zXCI+PC9wcnktdGFiPlxuICAgIDxwcnktdGFiICpuZ0lmPVwiY2FuTW9kaWZ5JChkYXRhc2V0KSB8IGFzeW5jXCIgW3RlbXBsYXRlUmVmXT1cInNoYXJlRGF0YXNldFwiIG5hbWU9XCJzaGFyZVwiPjwvcHJ5LXRhYj5cbiAgPC9wcnktdGFiLWdyb3VwPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZGF0YXNldE1ldGFkYXRhPlxuICAgIDxwcnktbWV0YWRhdGEtZWRpdG9yXG4gICAgICBbdGFyZ2V0SWRdPVwiKHNlbGVjdGVkRGF0YXNldCQgfCBhc3luYyk/LmlkID8/ICcnXCJcbiAgICAgIFtpc01vZGlmaWNhdGlvbl09XCIoZWRpdGFibGUkIHwgYXN5bmMpID8/IGZhbHNlXCJcbiAgICAgIFttZXRhZGF0YV09XCIoZGF0YXNldE1ldGFkYXRhJCB8IGFzeW5jKSA/PyBbXVwiXG4gICAgICAocmVtb3ZlTWV0YSk9XCJyZW1vdmVNZXRhZGF0YSgkZXZlbnQpXCJcbiAgICAgIChhZGRNZXRhKT1cImFkZERhdGFzZXRNZXRhZGF0YSgkZXZlbnQpXCJcbiAgICAgIFt0eXBlXT1cIidtZXRhJ1wiXG4gICAgPjwvcHJ5LW1ldGFkYXRhLWVkaXRvcj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgI2RhdGFzZXRBc3NvY2lhdGlvbnM+XG4gICAgPGRpdiAqbmdJZj1cImFzc29jaWF0aW9ucyQgfCBhc3luYyBhcyBhc3NvY2lhdGlvbnNcIiBjbGFzcz1cIm8tdGFic19fcGFuZWxzX19pdGVtX19jb250ZW50XCI+XG4gICAgICA8aDQgY2xhc3M9XCJhLWg0XCI+e3sgJ0BwcnkuYWRtaW4uY2xhc3Nlcy5hc3NvY2lhdGlvbnMnIHwgaTE4biB9fTwvaDQ+XG4gICAgICA8cHJ5LWFzc29jaWF0aW9uIFthc3NvY2lhdGlvbnNdPVwiYXNzb2NpYXRpb25zXCI+PC9wcnktYXNzb2NpYXRpb24+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlICNzaGFyZURhdGFzZXQ+XG4gICAgPGRpdiBjbGFzcz1cIm8tcHJ5LWFkbWluLWRhdGFzZXQtc2VsZWN0X19zaGFyZVwiPlxuICAgICAgPHByeS1ncm91cC1zaGFyZVxuICAgICAgICBbbmdNb2RlbF09XCJkYXRhc2V0Lmdyb3Vwc1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUdyb3VwKCRldmVudClcIlxuICAgICAgICAocmFkaW9WYWx1ZUNoYW5nZSk9XCJ1cGRhdGVHcm91cHMoJGV2ZW50KVwiXG4gICAgICA+PC9wcnktZ3JvdXAtc2hhcmU+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5IHUtc2VsZi1lbmRcIlxuICAgICAgICAjc3VibWl0XG4gICAgICAgIChjbGljayk9XCJzaGFyZShkYXRhc2V0KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlU2hhcmVCdXR0b24kIHwgYXN5bmNcIlxuICAgICAgPlxuICAgICAgICB7eyAnQHByeS5hZG1pbi52YWxpZGF0ZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIEBpZiAoc2VsZWN0ZWREYXRhc2V0TWlzc2luZ0dyb3VwcyQgfCBhc3luYykge1xuICAgICAgICA8aDQgY2xhc3M9XCJhLWg0XCI+e3sgJ0BwcnkuYWRtaW4uZGF0YXNldC5zdWNjZXNzJyB8IGkxOG4gfX08L2g0PlxuICAgICAgfVxuICAgICAgQGlmIChtaXNzaW5nR3JvdXBzJCB8IGFzeW5jOyBhcyBtaXNzaW5nR3JvdXBzKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1LWRpc3BsYXktZmxleCAtY29sdW1uXCI+XG4gICAgICAgICAgPHNwYW4+e3sgJ0BwcnkuYWRtaW4uZGF0YXNldC5jb25mbGljdCcgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIEBmb3IgKG1pc3Npbmcgb2YgbWlzc2luZ0dyb3VwcyB8IGtleXZhbHVlOyB0cmFjayBtaXNzaW5nLmtleSkge1xuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAge3sgJ0BwcnkuYWRtaW4uZGF0YXNldC5lbnRpdGllcy5kYXNoYm9hcmQnIHwgaTE4biB9fSA8c3Ryb25nPnt7IG1pc3NpbmcudmFsdWUuZW50aXR5TmFtZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidS1kaXNwbGF5LWZsZXhcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChncm91cCBvZiBtaXNzaW5nLnZhbHVlLmdyb3VwczsgdHJhY2sgZ3JvdXApIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYS1jaGlwXCI+e3sgZ2V0R3JvdXBMYWJlbChncm91cCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tc2VsZWN0LWRhdGFzZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hZG1pbi1kYXRhc2V0L2FkbWluLXNlbGVjdC1kYXRhc2V0L2FkbWluLXNlbGVjdC1kYXRhc2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2FkbWluL2NvbXBvbmVudHMvYWRtaW4tZGF0YXNldC9hZG1pbi1zZWxlY3QtZGF0YXNldC9hZG1pbi1zZWxlY3QtZGF0YXNldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBcUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9FLE9BQU8sRUFFTCxrQkFBa0IsRUFFbEIsbUJBQW1CLEVBR25CLGdCQUFnQixFQUdoQixZQUFZLEVBQ1osd0JBQXdCLEVBQ3pCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSwrQ0FBK0MsQ0FBQztBQUNsSCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxr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LENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RSxDQUFDOzhHQXBLVSwyQkFBMkIseUhBbUJoQixnQkFBZ0I7a0dBbkIzQiwyQkFBMkIsdUZDaEN4QywyOElBb0hBOzsyRkRwRmEsMkJBQTJCO2tCQUp2QyxTQUFTOytCQUNFLDBCQUEwQjs7MEJBc0JqQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBBc3NvY2lhdGlvbnMsXG4gIERhc2hib2FyZFNlbGVjdG9ycyxcbiAgRGF0YXNldCxcbiAgRGF0YVNvdXJjZVNlbGVjdG9ycyxcbiAgTWV0YWRhdGFWYWx1ZSxcbiAgTWlzc2luZ0dyb3Vwc0J5RW50aXR5LFxuICBQUllfQUNDRVNTX1RPS0VOLFxuICBQcnlCYXNlQWNjZXNzLFxuICBQcnlJMThuU2VydmljZSxcbiAgUHJ5U2hhcmVNb2RlLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmVcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IE1ldGFkYXRhQWN0aW9ucywgTWV0YWRhdGFTZWxlY3RvcnMsIE1ldGFFdmVudFR5cGUgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQvY29tcG9uZW50cy9tZXRhZGF0YS1lZGl0b3InO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24sIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25jYXRMYXRlc3RGcm9tIH0gZnJvbSAnQG5ncngvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFkbWluQWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2FkbWluLmFjdGlvbnMnO1xuaW1wb3J0IHsgQWRtaW5TZWxlY3RvcnMgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9hZG1pbi5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgQWRtaW5EYXRhc2V0QWN0aW9ucyB9IGZyb20gJy4uL3N0b3JlL2FkbWluLWRhdGFzZXQuYWN0aW9ucyc7XG5pbXBvcnQgeyBBZG1pbkRhdGFzZXRTZWxlY3RvcnMgfSBmcm9tICcuLi9zdG9yZS9hZG1pbi1kYXRhc2V0LnNlbGVjdG9ycyc7XG5cbmludGVyZmFjZSBNaXNzaW5nR3JvdXBzIHtcbiAgW2tleTogc3RyaW5nXTogeyBncm91cHM6IHN0cmluZ1tdOyBlbnRpdHlOYW1lOiBzdHJpbmcgfTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWFkbWluLXNlbGVjdC1kYXRhc2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkbWluLXNlbGVjdC1kYXRhc2V0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBZG1pblNlbGVjdERhdGFzZXRDb21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHN0YXRpYyBpZCA9ICdBZG1pblNlbGVjdERhdGFzZXRDb21wb25lbnQnO1xuICBzZWxlY3RlZERhdGFzZXQkOiBPYnNlcnZhYmxlPERhdGFzZXQgfCBudWxsPjtcbiAgYXNzb2NpYXRpb25zJDogT2JzZXJ2YWJsZTxBc3NvY2lhdGlvbnMgfCB1bmRlZmluZWQ+O1xuICBzdWIgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIGN1cnJlbnRUeXBlVHJhbnNsYXRpb24gPSAnJztcbiAgZGF0YXNldE1ldGFkYXRhJDogT2JzZXJ2YWJsZTxNZXRhZGF0YVZhbHVlW10+O1xuICBlZGl0YWJsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFjY2Vzc0dyb3Vwczogc3RyaW5nW10gPSBbXTtcbiAgc2VsZWN0ZWREYXRhc2V0TWlzc2luZ0dyb3VwcyQ6IE9ic2VydmFibGU8TWlzc2luZ0dyb3Vwc0J5RW50aXR5IHwgdW5kZWZpbmVkPjtcbiAgbWlzc2luZ0dyb3VwcyQ6IE9ic2VydmFibGU8TWlzc2luZ0dyb3VwcyB8IHVuZGVmaW5lZD47XG4gIHNoYXJlUmFkaW9WYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByeVNoYXJlTW9kZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgZGlzYWJsZVNoYXJlQnV0dG9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGkxOG46IFByeUkxOG5TZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUFJZX0FDQ0VTU19UT0tFTikgcHJvdGVjdGVkIGFjY2VzczogUHJ5QmFzZUFjY2Vzc1xuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTWV0YWRhdGFBY3Rpb25zLmxvYWRNZXRhZGF0YSgpKTtcbiAgICB0aGlzLnNlbGVjdGVkRGF0YXNldCQgPSB0aGlzLnN0b3JlLnNlbGVjdChBZG1pbkRhdGFzZXRTZWxlY3RvcnMuc2VsZWN0ZWREYXRhc2V0KTtcbiAgICB0aGlzLmRhdGFzZXRNZXRhZGF0YSQgPSB0aGlzLnN0b3JlLnNlbGVjdChBZG1pbkRhdGFzZXRTZWxlY3RvcnMuc2VsZWN0ZWREYXRhc2V0TWV0YWRhdGEpO1xuICAgIHRoaXMuYXNzb2NpYXRpb25zJCA9IHRoaXMuc3RvcmUuc2VsZWN0KEFkbWluU2VsZWN0b3JzLnNlbGVjdGVkQXNzb2NpYXRpb24pO1xuICAgIHRoaXMuZWRpdGFibGUkID0gdGhpcy5zdG9yZS5zZWxlY3QoTWV0YWRhdGFTZWxlY3RvcnMuZWRpdGFibGUpO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhc2V0TWlzc2luZ0dyb3VwcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChBZG1pbkRhdGFzZXRTZWxlY3RvcnMuc2VsZWN0ZWREYXRhc2V0TWlzc2luZ0dyb3Vwcyk7XG4gICAgdGhpcy5taXNzaW5nR3JvdXBzJCA9IHRoaXMuc2VsZWN0ZWREYXRhc2V0TWlzc2luZ0dyb3VwcyQucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5tYW5pZmVzdHNMaXN0KSksXG4gICAgICBtYXAoKFtjb25mbGljdCwgbWFuaWZlc3RzXSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IHsgW2tleTogc3RyaW5nXTogeyBncm91cHM6IHN0cmluZ1tdOyBlbnRpdHlOYW1lOiBzdHJpbmcgfSB9ID0ge307XG4gICAgICAgIE9iamVjdC5rZXlzKGNvbmZsaWN0ID8/IHt9KS5mb3JFYWNoKChlbnRpdHlJZCkgPT4ge1xuICAgICAgICAgIHJlc3VsdFtlbnRpdHlJZF0gPSB7XG4gICAgICAgICAgICBncm91cHM6IGNvbmZsaWN0Py5bZW50aXR5SWRdID8/IFtdLFxuICAgICAgICAgICAgZW50aXR5TmFtZTogbWFuaWZlc3RzLmZpbmQoKG0pID0+IG0uaWQgPT09IGVudGl0eUlkKT8ubmFtZSA/PyBlbnRpdHlJZFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocmVzdWx0KS5sZW5ndGggPiAwID8gcmVzdWx0IDogdW5kZWZpbmVkO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuc2VsZWN0ZWREYXRhc2V0JCwgdGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5kYXRhc2V0VmVyc2lvbnMpXSlcbiAgICAgICAgLnBpcGUoY29uY2F0TGF0ZXN0RnJvbSgoW2RhdGFzZXQsIHZlcnNpb25zXSkgPT4gKGRhdGFzZXQgPyB0aGlzLmNhbk1vZGlmeSQoZGF0YXNldCkgOiBvZihmYWxzZSkpKSlcbiAgICAgICAgLnN1YnNjcmliZSgoW1tkYXRhc2V0LCB2ZXJzaW9uc10sIGNhbk1vZGlmeV0pID0+IHtcbiAgICAgICAgICBpZiAoZGF0YXNldCkge1xuICAgICAgICAgICAgdGhpcy5hY2Nlc3NHcm91cHMgPSBkYXRhc2V0Lmdyb3VwcyA/PyBbXTtcbiAgICAgICAgICAgIGNvbnN0IGVkaXRQYXRoID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy4nLCAnZGF0YXNldCcsICdlZGl0JywgZGF0YXNldC5pZF0sIHtcbiAgICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoY2FuTW9kaWZ5KSB7XG4gICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgICAgICAgQWRtaW5BY3Rpb25zLm1haW5BY3Rpb25zKHtcbiAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogQWRtaW5BY3Rpb25zLnJvdXRlVG8oeyBwYXRoOiBlZGl0UGF0aC50b1N0cmluZygpIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZWRpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2VkaXQnLFxuICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUFjY2VzczogJ2FkbWluJyxcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlQWNjZXNzOiAnZGF0YXNldCcsXG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uQWNjZXNzOiAnd3JpdGUnXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246IEFkbWluRGF0YXNldEFjdGlvbnMuY29uZmlybURhdGFzZXREZWxldGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhc2V0LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGU6IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWycuJywgJ2RhdGFzZXQnXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRSb3V0ZTogdGhpcy5yb3V0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZVVybFRyZWUoWycuJywgJ2RhdGFzZXQnLCAnbmV3J10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZGVsZXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnZGVsZXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVBY2Nlc3M6ICdhZG1pbicsXG4gICAgICAgICAgICAgICAgICAgICAgcGFnZUFjY2VzczogJ2RhdGFzZXQnLFxuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbkFjY2VzczogJ3dyaXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdmVyc2lvbnMuZmlsdGVyKCh2KSA9PiB2LmRhdGFzZXQgPT09IGRhdGFzZXQuaWQpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgICAgICAgIEFkbWluQWN0aW9ucy5tYWluQWN0aW9ucyh7XG4gICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjbG9zZVBhbmVsKCkge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnLicsICdkYXRhc2V0JywgJ25ldyddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChBZG1pbkRhdGFzZXRBY3Rpb25zLnVuc2VsZWN0RGF0YXNldCgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEFkbWluQWN0aW9ucy50b2dnbGVQYW5lbCh7IHBhbmVsT3BlbjogZmFsc2UgfSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBBZG1pbkFjdGlvbnMubWFpbkFjdGlvbnMoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uOiBBZG1pbkFjdGlvbnMucm91dGVUbyh7IHBhdGg6IHBhdGgudG9TdHJpbmcoKSB9KSxcbiAgICAgICAgICAgIGxhYmVsOiAnYWRkJyxcbiAgICAgICAgICAgIGljb246ICdhZGRfY29sdW1uJyxcbiAgICAgICAgICAgIG1vZHVsZUFjY2VzczogJ2FkbWluJyxcbiAgICAgICAgICAgIHBhZ2VBY2Nlc3M6ICdtZXRhZGF0YV9ydWxlcycsXG4gICAgICAgICAgICBhY3Rpb25BY2Nlc3M6ICd3cml0ZSdcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJlbW92ZU1ldGFkYXRhKG1ldGFkYXRhOiBNZXRhRXZlbnRUeXBlKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIE1ldGFkYXRhQWN0aW9ucy5kZWxldGVEYXRhc2V0TWV0YWRhdGEoeyBkYXRhc2V0SWQ6IG1ldGFkYXRhLmlkLCBtZXRhZGF0YUlkOiBtZXRhZGF0YS5tZXRhZGF0YUlkIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFkZERhdGFzZXRNZXRhZGF0YShtZXRhZGF0YTogTWV0YUV2ZW50VHlwZSkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBNZXRhZGF0YUFjdGlvbnMuYWRkRGF0YXNldE1ldGFkYXRhKHtcbiAgICAgICAgZGF0YXNldElkOiBtZXRhZGF0YS5pZCxcbiAgICAgICAgbWV0YWRhdGFJZDogbWV0YWRhdGEubWV0YWRhdGFJZCxcbiAgICAgICAgdmFsdWU6IG1ldGFkYXRhLnZhbHVlXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzaGFyZShkYXRhc2V0OiBEYXRhc2V0KSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChBZG1pbkRhdGFzZXRBY3Rpb25zLnVwZGF0ZSh7IGRhdGFzZXQ6IHsgLi4uZGF0YXNldCwgZ3JvdXBzOiB0aGlzLmFjY2Vzc0dyb3VwcyB9LCByb3V0ZTogJycgfSkpO1xuICB9XG5cbiAgZ2V0R3JvdXBMYWJlbChncm91cE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGkxOG5CYXNlID0gJ0BwcnkuY29tcG9uZW50cy5jaGlwc1NlbGVjdG9yLnNoYXJlLmdyb3Vwcy4nO1xuICAgIGNvbnN0IGxhYmVsID0gdGhpcy5pMThuLmluc3RhbnQoaTE4bkJhc2UgKyBncm91cE5hbWUpO1xuICAgIHJldHVybiBsYWJlbC5zdGFydHNXaXRoKGkxOG5CYXNlKSA/IGdyb3VwTmFtZSA6IGxhYmVsO1xuICB9XG5cbiAgY2hhbmdlR3JvdXAoJGV2ZW50OiBzdHJpbmdbXSkge1xuICAgIHRoaXMuYWNjZXNzR3JvdXBzID0gJGV2ZW50O1xuICAgIHRoaXMudXBkYXRlRGlzYWJsZUJ1dHRvblZhbHVlKCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChBZG1pbkRhdGFzZXRBY3Rpb25zLnNldE1pc3NpbmdHcm91cHMoeyBtaXNzaW5nR3JvdXBzOiB1bmRlZmluZWQgfSkpO1xuICB9XG5cbiAgdXBkYXRlR3JvdXBzKCRldmVudDogUHJ5U2hhcmVNb2RlKSB7XG4gICAgdGhpcy5zaGFyZVJhZGlvVmFsdWUkLm5leHQoJGV2ZW50KTtcbiAgICB0aGlzLnVwZGF0ZURpc2FibGVCdXR0b25WYWx1ZSgpO1xuICB9XG5cbiAgdXBkYXRlRGlzYWJsZUJ1dHRvblZhbHVlKCkge1xuICAgIGlmICh0aGlzLnNoYXJlUmFkaW9WYWx1ZSQuZ2V0VmFsdWUoKSA9PT0gUHJ5U2hhcmVNb2RlLkdST1VQUyAmJiB0aGlzLmFjY2Vzc0dyb3Vwcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZGlzYWJsZVNoYXJlQnV0dG9uJC5uZXh0KHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlU2hhcmVCdXR0b24kLmdldFZhbHVlKCkpIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlU2hhcmVCdXR0b24kLm5leHQoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNhbk1vZGlmeSQoZGF0YXNldDogRGF0YXNldCkge1xuICAgIHJldHVybiB0aGlzLmFjY2VzcyA/IHRoaXMuYWNjZXNzLmNhbk1vZGlmeURhdGFzZXQoZGF0YXNldCkgOiBvZihmYWxzZSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgKm5nSWY9XCJzZWxlY3RlZERhdGFzZXQkIHwgYXN5bmMgYXMgZGF0YXNldFwiXG4gIFtpZF09XCIncGFuZWwtZGF0YXNldC0nICsgZGF0YXNldC5pZFwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInYnV0dG9uLWRhdGFzZXQtJyArIGRhdGFzZXQuaWRcIlxuICBjbGFzcz1cIm8tcGFuZWwgby1wcnktYWRtaW4tZGF0YXNldC1zZWxlY3RcIlxuPlxuICA8ZGl2IGNsYXNzPVwiby1wYW5lbF9faGVhZGVyXCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCIgKGNsaWNrKT1cImNsb3NlUGFuZWwoKVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LmFjdGlvbi5jbG9zZVBhbmVsJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCI+PC9wcnktaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxoMyBjbGFzcz1cImEtaDNcIj5cbiAgICAgIHt7ICdAcHJ5LmFkbWluLmRhdGFzZXQuZGF0YXNldERldGFpbHMnIHwgaTE4biB9fVxuICAgIDwvaDM+XG4gIDwvZGl2PlxuXG4gIDxwcnktdGFiLWdyb3VwIHRyYW5zbGF0aW9uU3RyaW5nQmFzZT1cIkBwcnkuYWRtaW4uXCI+XG4gICAgPHByeS10YWIgW3RlbXBsYXRlUmVmXT1cImRhdGFzZXREZXRhaWxzXCIgbmFtZT1cImRhdGFzZXQuZGV0YWlsc1wiPjwvcHJ5LXRhYj5cbiAgICA8cHJ5LXRhYiBbdGVtcGxhdGVSZWZdPVwiZGF0YXNldE1ldGFkYXRhXCIgbmFtZT1cIm1ldGFkYXRhLnRpdGxlXCI+PC9wcnktdGFiPlxuICAgIDxwcnktdGFiIFt0ZW1wbGF0ZVJlZl09XCJkYXRhc2V0QXNzb2NpYXRpb25zXCIgbmFtZT1cImNsYXNzZXMuYXNzb2NpYXRpb25zXCI+PC9wcnktdGFiPlxuICAgIDxwcnktdGFiICpuZ0lmPVwiY2FuTW9kaWZ5JChkYXRhc2V0KSB8IGFzeW5jXCIgW3RlbXBsYXRlUmVmXT1cInNoYXJlRGF0YXNldFwiIG5hbWU9XCJzaGFyZVwiPjwvcHJ5LXRhYj5cbiAgPC9wcnktdGFiLWdyb3VwPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZGF0YXNldERldGFpbHM+XG4gICAgPGRpdiBjbGFzcz1cInUtZGlzcGxheS1mbGV4IC1jb2x1bW4gLWdhcC0yMFwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGg0IGNsYXNzPVwiYS1oNFwiPnt7ICdAcHJ5LmRhdGFzZXQubmFtZScgfCBpMThuIH19PC9oND5cbiAgICAgICAgPHNwYW4+e3sgZGF0YXNldC5uYW1lIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8aDQgY2xhc3M9XCJhLWg0XCI+e3sgJ0BwcnkuZGF0YXNldC5kZXNjcmlwdGlvbicgfCBpMThuIH19PC9oND5cbiAgICAgICAgQGlmIChkYXRhc2V0LmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgPHNwYW4+e3sgZGF0YXNldC5kZXNjcmlwdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCItaXRhbGljXCI+e3sgJ0BwcnkuZGF0YXNldC5ub0Rlc2NyaXB0aW9uJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPGg0IGNsYXNzPVwiYS1oNFwiPnt7ICdAcHJ5LmFkbWluLmN1c3RvbWl6ZS5uYW1lJyB8IGkxOG4gfX08L2g0PlxuICAgICAgICA8c3Bhbj57eyBkYXRhc2V0Lm9DbGFzcyB8IHRyYW5zbGF0ZUlkOiB7IHR5cGU6ICdjbGFzcycsIG91dHB1dDogJ25hbWUnIH0gfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPGg0IGNsYXNzPVwiYS1oNFwiPnt7ICdAcHJ5LmFkbWluLmRhdGFzZXQudHlwZScgfCBpMThuIH19PC9oND5cbiAgICAgICAgPHNwYW4+e3sgJ0BwcnkuYWRtaW4uZGF0YXNldC4nICsgZGF0YXNldC50eXBlIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPGg0IGNsYXNzPVwiYS1oNFwiPnt7ICdAcHJ5LmRhdGFzZXQudGFncycgfCBpMThuIH19PC9oND5cbiAgICAgICAgQGlmIChkYXRhc2V0LmNhdGVnb3JpZXMgJiYgZGF0YXNldC5jYXRlZ29yaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidS1kaXNwbGF5LWZsZXhcIj5cbiAgICAgICAgICAgIEBmb3IgKGNhdGVnb3J5IG9mIGRhdGFzZXQuY2F0ZWdvcmllczsgdHJhY2sgY2F0ZWdvcnkuaWQpIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhLWNoaXAgLW1kXCI+e3sgY2F0ZWdvcnkubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCItaXRhbGljXCI+e3sgJ0BwcnkuZGF0YXNldC5ub1RhZ3MnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlICNkYXRhc2V0TWV0YWRhdGE+XG4gICAgPHByeS1tZXRhZGF0YS1lZGl0b3JcbiAgICAgIFt0YXJnZXRJZF09XCIoc2VsZWN0ZWREYXRhc2V0JCB8IGFzeW5jKT8uaWQgPz8gJydcIlxuICAgICAgW2lzTW9kaWZpY2F0aW9uXT1cIihlZGl0YWJsZSQgfCBhc3luYykgPz8gZmFsc2VcIlxuICAgICAgW21ldGFkYXRhXT1cIihkYXRhc2V0TWV0YWRhdGEkIHwgYXN5bmMpID8/IFtdXCJcbiAgICAgIChyZW1vdmVNZXRhKT1cInJlbW92ZU1ldGFkYXRhKCRldmVudClcIlxuICAgICAgKGFkZE1ldGEpPVwiYWRkRGF0YXNldE1ldGFkYXRhKCRldmVudClcIlxuICAgICAgW3R5cGVdPVwiJ21ldGEnXCJcbiAgICA+PC9wcnktbWV0YWRhdGEtZWRpdG9yPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZGF0YXNldEFzc29jaWF0aW9ucz5cbiAgICA8ZGl2ICpuZ0lmPVwiYXNzb2NpYXRpb25zJCB8IGFzeW5jIGFzIGFzc29jaWF0aW9uc1wiIGNsYXNzPVwiby10YWJzX19wYW5lbHNfX2l0ZW1fX2NvbnRlbnRcIj5cbiAgICAgIDxoNCBjbGFzcz1cImEtaDRcIj57eyAnQHByeS5hZG1pbi5jbGFzc2VzLmFzc29jaWF0aW9ucycgfCBpMThuIH19PC9oND5cbiAgICAgIDxwcnktYXNzb2NpYXRpb24gW2Fzc29jaWF0aW9uc109XCJhc3NvY2lhdGlvbnNcIj48L3ByeS1hc3NvY2lhdGlvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgI3NoYXJlRGF0YXNldD5cbiAgICA8ZGl2IGNsYXNzPVwiby1wcnktYWRtaW4tZGF0YXNldC1zZWxlY3RfX3NoYXJlXCI+XG4gICAgICA8cHJ5LWdyb3VwLXNoYXJlXG4gICAgICAgIFtuZ01vZGVsXT1cImRhdGFzZXQuZ3JvdXBzXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlR3JvdXAoJGV2ZW50KVwiXG4gICAgICAgIChyYWRpb1ZhbHVlQ2hhbmdlKT1cInVwZGF0ZUdyb3VwcygkZXZlbnQpXCJcbiAgICAgID48L3ByeS1ncm91cC1zaGFyZT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnkgdS1zZWxmLWVuZFwiXG4gICAgICAgICNzdWJtaXRcbiAgICAgICAgKGNsaWNrKT1cInNoYXJlKGRhdGFzZXQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVTaGFyZUJ1dHRvbiQgfCBhc3luY1wiXG4gICAgICA+XG4gICAgICAgIHt7ICdAcHJ5LmFkbWluLnZhbGlkYXRlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgQGlmIChzZWxlY3RlZERhdGFzZXRNaXNzaW5nR3JvdXBzJCB8IGFzeW5jKSB7XG4gICAgICAgIDxoNCBjbGFzcz1cImEtaDRcIj57eyAnQHByeS5hZG1pbi5kYXRhc2V0LnN1Y2Nlc3MnIHwgaTE4biB9fTwvaDQ+XG4gICAgICB9XG4gICAgICBAaWYgKG1pc3NpbmdHcm91cHMkIHwgYXN5bmM7IGFzIG1pc3NpbmdHcm91cHMpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInUtZGlzcGxheS1mbGV4IC1jb2x1bW5cIj5cbiAgICAgICAgICA8c3Bhbj57eyAnQHByeS5hZG1pbi5kYXRhc2V0LmNvbmZsaWN0JyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgQGZvciAobWlzc2luZyBvZiBtaXNzaW5nR3JvdXBzIHwga2V5dmFsdWU7IHRyYWNrIG1pc3Npbmcua2V5KSB7XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICB7eyAnQHByeS5hZG1pbi5kYXRhc2V0LmVudGl0aWVzLmRhc2hib2FyZCcgfCBpMThuIH19IDxzdHJvbmc+e3sgbWlzc2luZy52YWx1ZS5lbnRpdHlOYW1lIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1LWRpc3BsYXktZmxleFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGdyb3VwIG9mIG1pc3NpbmcudmFsdWUuZ3JvdXBzOyB0cmFjayBncm91cCkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhLWNoaXBcIj57eyBnZXRHcm91cExhYmVsKGdyb3VwKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { createAction, props } from '@ngrx/store';
|
|
2
2
|
export const AdminDatasetActions = {
|
|
3
|
-
failure: createAction('[Dataset]
|
|
4
|
-
create: createAction('[Dataset]
|
|
5
|
-
update: createAction('[Dataset]
|
|
6
|
-
confirmDatasetDeletion: createAction('[Dataset]
|
|
7
|
-
delete: createAction('[Dataset]
|
|
3
|
+
failure: createAction('[Dataset] Failure effect Dataset', props()),
|
|
4
|
+
create: createAction('[Dataset] Create Dataset', props()),
|
|
5
|
+
update: createAction('[Dataset] Update Dataset', props()),
|
|
6
|
+
confirmDatasetDeletion: createAction('[Dataset] Confirm deletion', props()),
|
|
7
|
+
delete: createAction('[Dataset] Delete Dataset', props()),
|
|
8
8
|
deleted: createAction('[Dataset] Dataset is deleted call to admin', props()),
|
|
9
|
-
selectDataset: createAction('[Dataset]
|
|
10
|
-
unselectDataset: createAction('[Dataset]
|
|
9
|
+
selectDataset: createAction('[Dataset] Open Dataset details', props()),
|
|
10
|
+
unselectDataset: createAction('[Dataset] Unselect Dataset'),
|
|
11
11
|
getDatasetById: createAction('[Dataset] Get Dataset by ID', props()),
|
|
12
12
|
getDatasetByIdSuccess: createAction('[Dataset] Get Dataset by Id Success', props()),
|
|
13
13
|
getDatasetByIdFailure: createAction('[Dataset] Get Dataset by Id Failure', props()),
|
|
14
|
-
openNewDataset: createAction('[Dataset]
|
|
15
|
-
setMissingGroups: createAction('[Dataset]
|
|
14
|
+
openNewDataset: createAction('[Dataset] Open New Dataset', props()),
|
|
15
|
+
setMissingGroups: createAction('[Dataset] Set Missing Groups', props()),
|
|
16
|
+
addCategory: createAction('[Dataset] Add Category', props())
|
|
16
17
|
};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tZGF0YXNldC5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hZG1pbi1kYXRhc2V0L3N0b3JlL2FkbWluLWRhdGFzZXQuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdsRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUNqQyxPQUFPLEVBQUUsWUFBWSxDQUFDLGtDQUFrQyxFQUFFLEtBQUssRUFBa0IsQ0FBQztJQUNsRixNQUFNLEVBQUUsWUFBWSxDQUFDLDBCQUEwQixFQUFFLEtBQUssRUFBdUMsQ0FBQztJQUM5RixNQUFNLEVBQUUsWUFBWSxDQUFDLDBCQUEwQixFQUFFLEtBQUssRUFBd0MsQ0FBQztJQUMvRixzQkFBc0IsRUFBRSxZQUFZLENBQ2xDLDRCQUE0QixFQUM1QixLQUFLLEVBQXFELENBQzNEO0lBQ0QsTUFBTSxFQUFFLFlBQVksQ0FBQywwQkFBMEIsRUFBRSxLQUFLLEVBQXFELENBQUM7SUFDNUcsT0FBTyxFQUFFLFlBQVksQ0FBQyw0Q0FBNEMsRUFBRSxLQUFLLEVBQXdCLENBQUM7SUFFbEcsYUFBYSxFQUFFLFlBQVksQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLEVBQXdCLENBQUM7SUFDNUYsZUFBZSxFQUFFLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQztJQUMzRCxjQUFjLEVBQUUsWUFBWSxDQUFDLDZCQUE2QixFQUFFLEtBQUssRUFBa0IsQ0FBQztJQUNwRixxQkFBcUIsRUFBRSxZQUFZLENBQUMscUNBQXFDLEVBQUUsS0FBSyxFQUFxQixDQUFDO0lBQ3RHLHFCQUFxQixFQUFFLFlBQVksQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLEVBQWtCLENBQUM7SUFDbkcsY0FBYyxFQUFFLFlBQVksQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLEVBQXFCLENBQUM7SUFDdEYsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLDhCQUE4QixFQUFFLEtBQUssRUFBNkMsQ0FBQztJQUNsSCxXQUFXLEVBQUUsWUFBWSxDQUFDLHdCQUF3QixFQUFFLEtBQUssRUFBMEIsQ0FBQztDQUNyRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQWN0aW9uLCBwcm9wcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENhdGVnb3J5LCBEYXRhc2V0LCBNaXNzaW5nR3JvdXBzQnlFbnRpdHkgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuXG5leHBvcnQgY29uc3QgQWRtaW5EYXRhc2V0QWN0aW9ucyA9IHtcbiAgZmFpbHVyZTogY3JlYXRlQWN0aW9uKCdbRGF0YXNldF0gRmFpbHVyZSBlZmZlY3QgRGF0YXNldCcsIHByb3BzPHsgZXJyb3I6IGFueSB9PigpKSxcbiAgY3JlYXRlOiBjcmVhdGVBY3Rpb24oJ1tEYXRhc2V0XSBDcmVhdGUgRGF0YXNldCcsIHByb3BzPHsgZGF0YXNldDogRGF0YXNldDsgcm91dGU6IHN0cmluZyB9PigpKSxcbiAgdXBkYXRlOiBjcmVhdGVBY3Rpb24oJ1tEYXRhc2V0XSBVcGRhdGUgRGF0YXNldCcsIHByb3BzPHsgZGF0YXNldDogRGF0YXNldDsgcm91dGU/OiBzdHJpbmcgfT4oKSksXG4gIGNvbmZpcm1EYXRhc2V0RGVsZXRpb246IGNyZWF0ZUFjdGlvbihcbiAgICAnW0RhdGFzZXRdIENvbmZpcm0gZGVsZXRpb24nLFxuICAgIHByb3BzPHsgbmFtZTogc3RyaW5nOyByb3V0ZTogc3RyaW5nOyBhZGRSb3V0ZTogc3RyaW5nIH0+KClcbiAgKSxcbiAgZGVsZXRlOiBjcmVhdGVBY3Rpb24oJ1tEYXRhc2V0XSBEZWxldGUgRGF0YXNldCcsIHByb3BzPHsgbmFtZTogc3RyaW5nOyByb3V0ZTogc3RyaW5nOyBhZGRSb3V0ZTogc3RyaW5nIH0+KCkpLFxuICBkZWxldGVkOiBjcmVhdGVBY3Rpb24oJ1tEYXRhc2V0XSBEYXRhc2V0IGlzIGRlbGV0ZWQgY2FsbCB0byBhZG1pbicsIHByb3BzPHsgYWRkUm91dGU6IHN0cmluZyB9PigpKSxcblxuICBzZWxlY3REYXRhc2V0OiBjcmVhdGVBY3Rpb24oJ1tEYXRhc2V0XSBPcGVuIERhdGFzZXQgZGV0YWlscycsIHByb3BzPHsgZGF0YXNldDogRGF0YXNldCB9PigpKSxcbiAgdW5zZWxlY3REYXRhc2V0OiBjcmVhdGVBY3Rpb24oJ1tEYXRhc2V0XSBVbnNlbGVjdCBEYXRhc2V0JyksXG4gIGdldERhdGFzZXRCeUlkOiBjcmVhdGVBY3Rpb24oJ1tEYXRhc2V0XSBHZXQgRGF0YXNldCBieSBJRCcsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKSxcbiAgZ2V0RGF0YXNldEJ5SWRTdWNjZXNzOiBjcmVhdGVBY3Rpb24oJ1tEYXRhc2V0XSBHZXQgRGF0YXNldCBieSBJZCBTdWNjZXNzJywgcHJvcHM8eyBkYXRhOiBEYXRhc2V0IH0+KCkpLFxuICBnZXREYXRhc2V0QnlJZEZhaWx1cmU6IGNyZWF0ZUFjdGlvbignW0RhdGFzZXRdIEdldCBEYXRhc2V0IGJ5IElkIEZhaWx1cmUnLCBwcm9wczx7IGVycm9yOiBhbnkgfT4oKSksXG4gIG9wZW5OZXdEYXRhc2V0OiBjcmVhdGVBY3Rpb24oJ1tEYXRhc2V0XSBPcGVuIE5ldyBEYXRhc2V0JywgcHJvcHM8eyByb3V0ZTogc3RyaW5nIH0+KCkpLFxuICBzZXRNaXNzaW5nR3JvdXBzOiBjcmVhdGVBY3Rpb24oJ1tEYXRhc2V0XSBTZXQgTWlzc2luZyBHcm91cHMnLCBwcm9wczx7IG1pc3NpbmdHcm91cHM/OiBNaXNzaW5nR3JvdXBzQnlFbnRpdHkgfT4oKSksXG4gIGFkZENhdGVnb3J5OiBjcmVhdGVBY3Rpb24oJ1tEYXRhc2V0XSBBZGQgQ2F0ZWdvcnknLCBwcm9wczx7IGNhdGVnb3J5OiBDYXRlZ29yeSB9PigpKVxufTtcbiJdfQ==
|
|
@@ -94,6 +94,7 @@ export class AdminDatasetEffects {
|
|
|
94
94
|
DataSourceActions.dataset.loadDataset()
|
|
95
95
|
];
|
|
96
96
|
})));
|
|
97
|
+
this.addCategory$ = createEffect(() => this.actions$.pipe(ofType(AdminDatasetActions.addCategory), mergeMap((action) => this.datasetService.addCategory(action.category).pipe(map(() => DataSourceActions.dataset.getCategories()), catchError((error) => [AdminDatasetActions.failure({ error })])))));
|
|
97
98
|
}
|
|
98
99
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminDatasetEffects, deps: [{ token: i1.Actions }, { token: i2.AdminDatasetService }, { token: i3.PryDialogService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
99
100
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminDatasetEffects }); }
|
|
@@ -101,4 +102,4 @@ export class AdminDatasetEffects {
|
|
|
101
102
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminDatasetEffects, decorators: [{
|
|
102
103
|
type: Injectable
|
|
103
104
|
}], ctorParameters: () => [{ type: i1.Actions }, { type: i2.AdminDatasetService }, { type: i3.PryDialogService }] });
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tZGF0YXNldC5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hZG1pbi1kYXRhc2V0L3N0b3JlL2FkbWluLWRhdGFzZXQuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFFTCxpQkFBaUIsRUFDakIseUJBQXlCLEVBSTFCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7QUFHaEYsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUNVLFFBQWlCLEVBQ2pCLGNBQW1DLEVBQ25DLFNBQTJCO1FBRjNCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsbUJBQWMsR0FBZCxjQUFjLENBQXFCO1FBQ25DLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBR3JDLG1CQUFjLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxFQUNsQyxTQUFTLENBQUMsQ0FBQyxLQUEwQyxFQUFFLEVBQUUs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QWMsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQ2pGLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsNEJBQTRCLENBQUMsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFDeEYsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNqRixDQUNGLENBQ0YsQ0FDRixDQUFDO1FBRUYsa0NBQTZCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxFQUNwRCxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNsQixPQUFPO2dCQUNMLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzVELGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQy9DLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7YUFDeEMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FBQztJQWpMQyxDQUFDOzhHQUxPLG1CQUFtQjtrSEFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7XG4gIERhdGFzZXQsXG4gIERhdGFTb3VyY2VBY3Rpb25zLFxuICBQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LFxuICBQcnlEaWFsb2dDb25maXJtRGF0YSxcbiAgUHJ5RGlhbG9nU2VydmljZSxcbiAgU2hhcmVDb25mbGljdFxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgbWFwLCBtZXJnZU1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBZG1pbkRhdGFzZXRBY3Rpb25zIH0gZnJvbSAnLi9hZG1pbi1kYXRhc2V0LmFjdGlvbnMnO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQWRtaW5BY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvYWRtaW4uYWN0aW9ucyc7XG5pbXBvcnQgeyBBZG1pbkRhdGFzZXRTZXJ2aWNlIH0gZnJvbSAnLi9hZG1pbi1kYXRhc2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWV0YWRhdGFBY3Rpb25zIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkL2NvbXBvbmVudHMvbWV0YWRhdGEtZWRpdG9yJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFkbWluRGF0YXNldEVmZmVjdHMge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgZGF0YXNldFNlcnZpY2U6IEFkbWluRGF0YXNldFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcnlEaWFsb2c6IFByeURpYWxvZ1NlcnZpY2VcbiAgKSB7fVxuXG4gIGNyZWF0ZURhdGFzZXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKEFkbWluRGF0YXNldEFjdGlvbnMuY3JlYXRlKSxcbiAgICAgIHN3aXRjaE1hcCgocHJvcHM6IHsgZGF0YXNldDogRGF0YXNldDsgcm91dGU6IHN0cmluZyB9KSA9PlxuICAgICAgICB0aGlzLmRhdGFzZXRTZXJ2aWNlXG4gICAgICAgICAgLmFkZERhdGFzZXQocHJvcHMuZGF0YXNldClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1lcmdlTWFwKCgpID0+IFtcbiAgICAgICAgICAgICAgRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5sb2FkRGF0YXNldCgpLFxuICAgICAgICAgICAgICBBZG1pbkRhdGFzZXRBY3Rpb25zLnVuc2VsZWN0RGF0YXNldCgpLFxuICAgICAgICAgICAgICBBZG1pbkFjdGlvbnMucm91dGVUbyh7IHBhdGg6IHByb3BzLnJvdXRlIH0pXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIClcbiAgICAgICksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiBbQWRtaW5EYXRhc2V0QWN0aW9ucy5mYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgIClcbiAgKTtcblxuICBjb25maXJtRGF0YXNldERlbGV0aW9uJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoQWRtaW5EYXRhc2V0QWN0aW9ucy5jb25maXJtRGF0YXNldERlbGV0aW9uKSxcbiAgICAgICAgdGFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhOiBQcnlEaWFsb2dDb25maXJtRGF0YSA9IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQHByeS5hZG1pbi5pbmZvTW9kYWxUaXRsZScsXG4gICAgICAgICAgICBtZXNzYWdlOiAnQHByeS5hZG1pbi5kYXRhc2V0LmRlbGV0ZScsXG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogMCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0BwcnkuYWRtaW4uZGVsZXRlJyxcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICBBZG1pbkRhdGFzZXRBY3Rpb25zLmRlbGV0ZSh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGFjdGlvbi5uYW1lLFxuICAgICAgICAgICAgICAgICAgICByb3V0ZTogYWN0aW9uLnJvdXRlLFxuICAgICAgICAgICAgICAgICAgICBhZGRSb3V0ZTogYWN0aW9uLmFkZFJvdXRlXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgeyBpZDogMCwgbGFiZWw6ICdAcHJ5LmFkbWluLmNhbmNlbCcgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5wcnlEaWFsb2cub3BlbihQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7IGRhdGEgfSk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBkZWxldGVEYXRhc2V0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShBZG1pbkRhdGFzZXRBY3Rpb25zLmRlbGV0ZSksXG4gICAgICBzd2l0Y2hNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5kYXRhc2V0U2VydmljZS5kZWxldGVEYXRhc2V0KGFjdGlvbi5uYW1lKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKCgpID0+IFtcbiAgICAgICAgICAgIERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQubG9hZERhdGFzZXQoKSxcbiAgICAgICAgICAgIEFkbWluRGF0YXNldEFjdGlvbnMudW5zZWxlY3REYXRhc2V0KCksXG4gICAgICAgICAgICBBZG1pbkRhdGFzZXRBY3Rpb25zLmRlbGV0ZWQoeyBhZGRSb3V0ZTogYWN0aW9uLmFkZFJvdXRlIH0pXG4gICAgICAgICAgXSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IFtBZG1pbkRhdGFzZXRBY3Rpb25zLmZhaWx1cmUoeyBlcnJvciB9KV0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZ2V0RGF0YXNldEJ5SWQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKEFkbWluRGF0YXNldEFjdGlvbnMuZ2V0RGF0YXNldEJ5SWQpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5kYXRhc2V0U2VydmljZS5nZXREYXRhc2V0QnlJZChhY3Rpb24uaWQpLnBpcGUoXG4gICAgICAgICAgbWFwKChkYXRhKSA9PiBBZG1pbkRhdGFzZXRBY3Rpb25zLmdldERhdGFzZXRCeUlkU3VjY2Vzcyh7IGRhdGEgfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbQWRtaW5EYXRhc2V0QWN0aW9ucy5nZXREYXRhc2V0QnlJZEZhaWx1cmUoeyBlcnJvciB9KV0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgdW5zZXRNaXNzaW5nR3JvdXBzT25EYXRhc2V0U2VsZWN0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShBZG1pbkRhdGFzZXRBY3Rpb25zLnNlbGVjdERhdGFzZXQpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT4gW1xuICAgICAgICBBZG1pbkRhdGFzZXRBY3Rpb25zLnNldE1pc3NpbmdHcm91cHMoeyBtaXNzaW5nR3JvdXBzOiB1bmRlZmluZWQgfSksXG4gICAgICAgIERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQubGlzdFZlcnNpb25zQnlEYXRhc2V0SWQoeyBpZDogYWN0aW9uLmRhdGFzZXQuaWQgfSlcbiAgICAgIF0pXG4gICAgKVxuICApO1xuXG4gIGRlbGV0ZWQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKEFkbWluRGF0YXNldEFjdGlvbnMuZGVsZXRlZCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiBbXG4gICAgICAgIEFkbWluQWN0aW9ucy50b2dnbGVQYW5lbCh7IHBhbmVsT3BlbjogZmFsc2UgfSksXG4gICAgICAgIEFkbWluQWN0aW9ucy5zZWxlY3RDb21wb25lbnRUeXBlKHsgY29tcG9uZW50VHlwZTogbnVsbCB9KSxcbiAgICAgICAgQWRtaW5BY3Rpb25zLm1haW5BY3Rpb25zKHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFjdGlvbjogQWRtaW5BY3Rpb25zLnJvdXRlVG8oeyBwYXRoOiBhY3Rpb24uYWRkUm91dGUgfSksXG4gICAgICAgICAgICAgIGxhYmVsOiAnYWRkJyxcbiAgICAgICAgICAgICAgaWNvbjogJ2FkZF9jb2x1bW4nLFxuICAgICAgICAgICAgICBtb2R1bGVBY2Nlc3M6ICdhZG1pbicsXG4gICAgICAgICAgICAgIHBhZ2VBY2Nlc3M6ICdkYXRhc2V0JyxcbiAgICAgICAgICAgICAgYWN0aW9uQWNjZXNzOiAnd3JpdGUnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9KVxuICAgICAgXSlcbiAgICApXG4gICk7XG5cbiAgdXBkYXRlRGF0YXNldCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQWRtaW5EYXRhc2V0QWN0aW9ucy51cGRhdGUpLFxuICAgICAgc3dpdGNoTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuZGF0YXNldFNlcnZpY2UudXBkYXRlRGF0YXNldChhY3Rpb24uZGF0YXNldCkucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgoY29uZmxpY3Q/OiBTaGFyZUNvbmZsaWN0KSA9PiB7XG4gICAgICAgICAgICBsZXQgYWN0aW9uczogQWN0aW9uW10gPSBbXG4gICAgICAgICAgICAgIEFkbWluRGF0YXNldEFjdGlvbnMuc2V0TWlzc2luZ0dyb3Vwcyh7IG1pc3NpbmdHcm91cHM6IGNvbmZsaWN0Py5taXNzaW5nR3JvdXBzQnlFbnRpdHkgfSksXG4gICAgICAgICAgICAgIERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQubG9hZERhdGFzZXQoKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGlmIChhY3Rpb24ucm91dGUpXG4gICAgICAgICAgICAgIGFjdGlvbnMucHVzaChBZG1pbkRhdGFzZXRBY3Rpb25zLnVuc2VsZWN0RGF0YXNldCgpLCBBZG1pbkFjdGlvbnMucm91dGVUbyh7IHBhdGg6IGFjdGlvbi5yb3V0ZSB9KSk7XG4gICAgICAgICAgICByZXR1cm4gYWN0aW9ucztcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4gW0RhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuZmFpbHVyZSh7IGVycm9yIH0pXSlcbiAgICApXG4gICk7XG5cbiAgYWRkRGF0YXNldE1ldGFkYXRhJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShNZXRhZGF0YUFjdGlvbnMuYWRkRGF0YXNldE1ldGFkYXRhKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuZGF0YXNldFNlcnZpY2UuYWRkRGF0YXNldE1ldGFkYXRhKGFjdGlvbi5kYXRhc2V0SWQsIGFjdGlvbi5tZXRhZGF0YUlkLCBhY3Rpb24udmFsdWUpLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IE1ldGFkYXRhQWN0aW9ucy5hZGREYXRhc2V0TWV0YWRhdGFTdWNjZXNzKHsgZGF0YXNldElkOiBhY3Rpb24uZGF0YXNldElkIH0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW01ldGFkYXRhQWN0aW9ucy5hZGREYXRhc2V0TWV0YWRhdGFGYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGFkZERhdGFzZXRNZXRhZGF0YVN1Y2Nlc3MkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKE1ldGFkYXRhQWN0aW9ucy5hZGREYXRhc2V0TWV0YWRhdGFTdWNjZXNzKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBBZG1pbkRhdGFzZXRBY3Rpb25zLmdldERhdGFzZXRCeUlkKHsgaWQ6IGFjdGlvbi5kYXRhc2V0SWQgfSksXG4gICAgICAgICAgTWV0YWRhdGFBY3Rpb25zLmlzRWRpdGFibGUoeyBlZGl0YWJsZTogZmFsc2UgfSksXG4gICAgICAgICAgRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5sb2FkRGF0YXNldCgpXG4gICAgICAgIF07XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBkZWxldGVEYXRhc2V0TWV0YWRhdGEkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKE1ldGFkYXRhQWN0aW9ucy5kZWxldGVEYXRhc2V0TWV0YWRhdGEpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5kYXRhc2V0U2VydmljZS5kZWxldGVEYXRhc2V0TWV0YWRhdGEoYWN0aW9uLmRhdGFzZXRJZCwgYWN0aW9uLm1ldGFkYXRhSWQpLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IE1ldGFkYXRhQWN0aW9ucy5kZWxldGVEYXRhc2V0TWV0YWRhdGFTdWNjZXNzKHsgZGF0YXNldElkOiBhY3Rpb24uZGF0YXNldElkIH0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW01ldGFkYXRhQWN0aW9ucy5kZWxldGVEYXRhc2V0TWV0YWRhdGFGYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGRlbGV0ZURhdGFzZXRNZXRhZGF0YVN1Y2Nlc3MkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKE1ldGFkYXRhQWN0aW9ucy5kZWxldGVEYXRhc2V0TWV0YWRhdGFTdWNjZXNzKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBBZG1pbkRhdGFzZXRBY3Rpb25zLmdldERhdGFzZXRCeUlkKHsgaWQ6IGFjdGlvbi5kYXRhc2V0SWQgfSksXG4gICAgICAgICAgTWV0YWRhdGFBY3Rpb25zLmlzRWRpdGFibGUoeyBlZGl0YWJsZTogZmFsc2UgfSksXG4gICAgICAgICAgRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5sb2FkRGF0YXNldCgpXG4gICAgICAgIF07XG4gICAgICB9KVxuICAgIClcbiAgKTtcbn1cbiJdfQ==
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tZGF0YXNldC5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hZG1pbi1kYXRhc2V0L3N0b3JlL2FkbWluLWRhdGFzZXQuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFFTCxpQkFBaUIsRUFDakIseUJBQXlCLEVBSTFCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7QUFHaEYsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUNVLFFBQWlCLEVBQ2pCLGNBQW1DLEVBQ25DLFNBQTJCO1FBRjNCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsbUJBQWMsR0FBZCxjQUFjLENBQXFCO1FBQ25DLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBR3JDLG1CQUFjLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxFQUNsQyxTQUFTLENBQUMsQ0FBQyxLQUEwQyxFQUFFLEVBQUUs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T0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQ3BELFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDaEUsQ0FDRixDQUNGLENBQ0YsQ0FBQztJQTdMQyxDQUFDOzhHQUxPLG1CQUFtQjtrSEFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7XG4gIERhdGFzZXQsXG4gIERhdGFTb3VyY2VBY3Rpb25zLFxuICBQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LFxuICBQcnlEaWFsb2dDb25maXJtRGF0YSxcbiAgUHJ5RGlhbG9nU2VydmljZSxcbiAgU2hhcmVDb25mbGljdFxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgbWFwLCBtZXJnZU1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBZG1pbkRhdGFzZXRBY3Rpb25zIH0gZnJvbSAnLi9hZG1pbi1kYXRhc2V0LmFjdGlvbnMnO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQWRtaW5BY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvYWRtaW4uYWN0aW9ucyc7XG5pbXBvcnQgeyBBZG1pbkRhdGFzZXRTZXJ2aWNlIH0gZnJvbSAnLi9hZG1pbi1kYXRhc2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWV0YWRhdGFBY3Rpb25zIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkL2NvbXBvbmVudHMvbWV0YWRhdGEtZWRpdG9yJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFkbWluRGF0YXNldEVmZmVjdHMge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgZGF0YXNldFNlcnZpY2U6IEFkbWluRGF0YXNldFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcnlEaWFsb2c6IFByeURpYWxvZ1NlcnZpY2VcbiAgKSB7fVxuXG4gIGNyZWF0ZURhdGFzZXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKEFkbWluRGF0YXNldEFjdGlvbnMuY3JlYXRlKSxcbiAgICAgIHN3aXRjaE1hcCgocHJvcHM6IHsgZGF0YXNldDogRGF0YXNldDsgcm91dGU6IHN0cmluZyB9KSA9PlxuICAgICAgICB0aGlzLmRhdGFzZXRTZXJ2aWNlXG4gICAgICAgICAgLmFkZERhdGFzZXQocHJvcHMuZGF0YXNldClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1lcmdlTWFwKCgpID0+IFtcbiAgICAgICAgICAgICAgRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5sb2FkRGF0YXNldCgpLFxuICAgICAgICAgICAgICBBZG1pbkRhdGFzZXRBY3Rpb25zLnVuc2VsZWN0RGF0YXNldCgpLFxuICAgICAgICAgICAgICBBZG1pbkFjdGlvbnMucm91dGVUbyh7IHBhdGg6IHByb3BzLnJvdXRlIH0pXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIClcbiAgICAgICksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiBbQWRtaW5EYXRhc2V0QWN0aW9ucy5mYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgIClcbiAgKTtcblxuICBjb25maXJtRGF0YXNldERlbGV0aW9uJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoQWRtaW5EYXRhc2V0QWN0aW9ucy5jb25maXJtRGF0YXNldERlbGV0aW9uKSxcbiAgICAgICAgdGFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhOiBQcnlEaWFsb2dDb25maXJtRGF0YSA9IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQHByeS5hZG1pbi5pbmZvTW9kYWxUaXRsZScsXG4gICAgICAgICAgICBtZXNzYWdlOiAnQHByeS5hZG1pbi5kYXRhc2V0LmRlbGV0ZScsXG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogMCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0BwcnkuYWRtaW4uZGVsZXRlJyxcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICBBZG1pbkRhdGFzZXRBY3Rpb25zLmRlbGV0ZSh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGFjdGlvbi5uYW1lLFxuICAgICAgICAgICAgICAgICAgICByb3V0ZTogYWN0aW9uLnJvdXRlLFxuICAgICAgICAgICAgICAgICAgICBhZGRSb3V0ZTogYWN0aW9uLmFkZFJvdXRlXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgeyBpZDogMCwgbGFiZWw6ICdAcHJ5LmFkbWluLmNhbmNlbCcgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5wcnlEaWFsb2cub3BlbihQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7IGRhdGEgfSk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBkZWxldGVEYXRhc2V0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShBZG1pbkRhdGFzZXRBY3Rpb25zLmRlbGV0ZSksXG4gICAgICBzd2l0Y2hNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5kYXRhc2V0U2VydmljZS5kZWxldGVEYXRhc2V0KGFjdGlvbi5uYW1lKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKCgpID0+IFtcbiAgICAgICAgICAgIERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQubG9hZERhdGFzZXQoKSxcbiAgICAgICAgICAgIEFkbWluRGF0YXNldEFjdGlvbnMudW5zZWxlY3REYXRhc2V0KCksXG4gICAgICAgICAgICBBZG1pbkRhdGFzZXRBY3Rpb25zLmRlbGV0ZWQoeyBhZGRSb3V0ZTogYWN0aW9uLmFkZFJvdXRlIH0pXG4gICAgICAgICAgXSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IFtBZG1pbkRhdGFzZXRBY3Rpb25zLmZhaWx1cmUoeyBlcnJvciB9KV0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZ2V0RGF0YXNldEJ5SWQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKEFkbWluRGF0YXNldEFjdGlvbnMuZ2V0RGF0YXNldEJ5SWQpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5kYXRhc2V0U2VydmljZS5nZXREYXRhc2V0QnlJZChhY3Rpb24uaWQpLnBpcGUoXG4gICAgICAgICAgbWFwKChkYXRhKSA9PiBBZG1pbkRhdGFzZXRBY3Rpb25zLmdldERhdGFzZXRCeUlkU3VjY2Vzcyh7IGRhdGEgfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbQWRtaW5EYXRhc2V0QWN0aW9ucy5nZXREYXRhc2V0QnlJZEZhaWx1cmUoeyBlcnJvciB9KV0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgdW5zZXRNaXNzaW5nR3JvdXBzT25EYXRhc2V0U2VsZWN0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShBZG1pbkRhdGFzZXRBY3Rpb25zLnNlbGVjdERhdGFzZXQpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT4gW1xuICAgICAgICBBZG1pbkRhdGFzZXRBY3Rpb25zLnNldE1pc3NpbmdHcm91cHMoeyBtaXNzaW5nR3JvdXBzOiB1bmRlZmluZWQgfSksXG4gICAgICAgIERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQubGlzdFZlcnNpb25zQnlEYXRhc2V0SWQoeyBpZDogYWN0aW9uLmRhdGFzZXQuaWQgfSlcbiAgICAgIF0pXG4gICAgKVxuICApO1xuXG4gIGRlbGV0ZWQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKEFkbWluRGF0YXNldEFjdGlvbnMuZGVsZXRlZCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiBbXG4gICAgICAgIEFkbWluQWN0aW9ucy50b2dnbGVQYW5lbCh7IHBhbmVsT3BlbjogZmFsc2UgfSksXG4gICAgICAgIEFkbWluQWN0aW9ucy5zZWxlY3RDb21wb25lbnRUeXBlKHsgY29tcG9uZW50VHlwZTogbnVsbCB9KSxcbiAgICAgICAgQWRtaW5BY3Rpb25zLm1haW5BY3Rpb25zKHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFjdGlvbjogQWRtaW5BY3Rpb25zLnJvdXRlVG8oeyBwYXRoOiBhY3Rpb24uYWRkUm91dGUgfSksXG4gICAgICAgICAgICAgIGxhYmVsOiAnYWRkJyxcbiAgICAgICAgICAgICAgaWNvbjogJ2FkZF9jb2x1bW4nLFxuICAgICAgICAgICAgICBtb2R1bGVBY2Nlc3M6ICdhZG1pbicsXG4gICAgICAgICAgICAgIHBhZ2VBY2Nlc3M6ICdkYXRhc2V0JyxcbiAgICAgICAgICAgICAgYWN0aW9uQWNjZXNzOiAnd3JpdGUnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9KVxuICAgICAgXSlcbiAgICApXG4gICk7XG5cbiAgdXBkYXRlRGF0YXNldCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQWRtaW5EYXRhc2V0QWN0aW9ucy51cGRhdGUpLFxuICAgICAgc3dpdGNoTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuZGF0YXNldFNlcnZpY2UudXBkYXRlRGF0YXNldChhY3Rpb24uZGF0YXNldCkucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgoY29uZmxpY3Q/OiBTaGFyZUNvbmZsaWN0KSA9PiB7XG4gICAgICAgICAgICBsZXQgYWN0aW9uczogQWN0aW9uW10gPSBbXG4gICAgICAgICAgICAgIEFkbWluRGF0YXNldEFjdGlvbnMuc2V0TWlzc2luZ0dyb3Vwcyh7IG1pc3NpbmdHcm91cHM6IGNvbmZsaWN0Py5taXNzaW5nR3JvdXBzQnlFbnRpdHkgfSksXG4gICAgICAgICAgICAgIERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQubG9hZERhdGFzZXQoKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGlmIChhY3Rpb24ucm91dGUpXG4gICAgICAgICAgICAgIGFjdGlvbnMucHVzaChBZG1pbkRhdGFzZXRBY3Rpb25zLnVuc2VsZWN0RGF0YXNldCgpLCBBZG1pbkFjdGlvbnMucm91dGVUbyh7IHBhdGg6IGFjdGlvbi5yb3V0ZSB9KSk7XG4gICAgICAgICAgICByZXR1cm4gYWN0aW9ucztcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4gW0RhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuZmFpbHVyZSh7IGVycm9yIH0pXSlcbiAgICApXG4gICk7XG5cbiAgYWRkRGF0YXNldE1ldGFkYXRhJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShNZXRhZGF0YUFjdGlvbnMuYWRkRGF0YXNldE1ldGFkYXRhKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuZGF0YXNldFNlcnZpY2UuYWRkRGF0YXNldE1ldGFkYXRhKGFjdGlvbi5kYXRhc2V0SWQsIGFjdGlvbi5tZXRhZGF0YUlkLCBhY3Rpb24udmFsdWUpLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IE1ldGFkYXRhQWN0aW9ucy5hZGREYXRhc2V0TWV0YWRhdGFTdWNjZXNzKHsgZGF0YXNldElkOiBhY3Rpb24uZGF0YXNldElkIH0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW01ldGFkYXRhQWN0aW9ucy5hZGREYXRhc2V0TWV0YWRhdGFGYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGFkZERhdGFzZXRNZXRhZGF0YVN1Y2Nlc3MkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKE1ldGFkYXRhQWN0aW9ucy5hZGREYXRhc2V0TWV0YWRhdGFTdWNjZXNzKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBBZG1pbkRhdGFzZXRBY3Rpb25zLmdldERhdGFzZXRCeUlkKHsgaWQ6IGFjdGlvbi5kYXRhc2V0SWQgfSksXG4gICAgICAgICAgTWV0YWRhdGFBY3Rpb25zLmlzRWRpdGFibGUoeyBlZGl0YWJsZTogZmFsc2UgfSksXG4gICAgICAgICAgRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5sb2FkRGF0YXNldCgpXG4gICAgICAgIF07XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBkZWxldGVEYXRhc2V0TWV0YWRhdGEkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKE1ldGFkYXRhQWN0aW9ucy5kZWxldGVEYXRhc2V0TWV0YWRhdGEpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5kYXRhc2V0U2VydmljZS5kZWxldGVEYXRhc2V0TWV0YWRhdGEoYWN0aW9uLmRhdGFzZXRJZCwgYWN0aW9uLm1ldGFkYXRhSWQpLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IE1ldGFkYXRhQWN0aW9ucy5kZWxldGVEYXRhc2V0TWV0YWRhdGFTdWNjZXNzKHsgZGF0YXNldElkOiBhY3Rpb24uZGF0YXNldElkIH0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW01ldGFkYXRhQWN0aW9ucy5kZWxldGVEYXRhc2V0TWV0YWRhdGFGYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGRlbGV0ZURhdGFzZXRNZXRhZGF0YVN1Y2Nlc3MkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKE1ldGFkYXRhQWN0aW9ucy5kZWxldGVEYXRhc2V0TWV0YWRhdGFTdWNjZXNzKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBBZG1pbkRhdGFzZXRBY3Rpb25zLmdldERhdGFzZXRCeUlkKHsgaWQ6IGFjdGlvbi5kYXRhc2V0SWQgfSksXG4gICAgICAgICAgTWV0YWRhdGFBY3Rpb25zLmlzRWRpdGFibGUoeyBlZGl0YWJsZTogZmFsc2UgfSksXG4gICAgICAgICAgRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5sb2FkRGF0YXNldCgpXG4gICAgICAgIF07XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBhZGRDYXRlZ29yeSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQWRtaW5EYXRhc2V0QWN0aW9ucy5hZGRDYXRlZ29yeSksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmRhdGFzZXRTZXJ2aWNlLmFkZENhdGVnb3J5KGFjdGlvbi5jYXRlZ29yeSkucGlwZShcbiAgICAgICAgICBtYXAoKCkgPT4gRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5nZXRDYXRlZ29yaWVzKCkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbQWRtaW5EYXRhc2V0QWN0aW9ucy5mYWlsdXJlKHsgZXJyb3IgfSldKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xufVxuIl19
|
|
@@ -15,9 +15,10 @@ export class AdminDatasetService {
|
|
|
15
15
|
.pipe(mergeMap((url) => this.httpClient.post(encodeURI(`${url}/datasets`), dataset)));
|
|
16
16
|
}
|
|
17
17
|
updateDataset(dataset) {
|
|
18
|
-
return this.store
|
|
19
|
-
|
|
20
|
-
.
|
|
18
|
+
return this.store.select(ConfigSelectors.refUrl).pipe(mergeMap((url) => this.httpClient.put(encodeURI(`${url}/datasets`), {
|
|
19
|
+
...dataset,
|
|
20
|
+
categories: dataset.categories?.map((category) => category.id)
|
|
21
|
+
})));
|
|
21
22
|
}
|
|
22
23
|
deleteDataset(id) {
|
|
23
24
|
return this.store
|
|
@@ -44,6 +45,11 @@ export class AdminDatasetService {
|
|
|
44
45
|
.select(ConfigSelectors.refUrl)
|
|
45
46
|
.pipe(mergeMap((url) => this.httpClient.delete(encodeURI(`${url}/datasets/id/${datasetId}/metadata/id/${metadataId}`))));
|
|
46
47
|
}
|
|
48
|
+
addCategory(category) {
|
|
49
|
+
return this.store
|
|
50
|
+
.select(ConfigSelectors.refUrl)
|
|
51
|
+
.pipe(mergeMap((url) => this.httpClient.put(encodeURI(`${url}/datasets/categories`), { ...category })));
|
|
52
|
+
}
|
|
47
53
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminDatasetService, deps: [{ token: i1.Store }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
48
54
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AdminDatasetService, providedIn: 'root' }); }
|
|
49
55
|
}
|
|
@@ -53,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
|
|
|
53
59
|
providedIn: 'root'
|
|
54
60
|
}]
|
|
55
61
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.HttpClient }] });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tZGF0YXNldC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hZG1pbi1kYXRhc2V0L3N0b3JlL2FkbWluLWRhdGFzZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBWSxlQUFlLEVBQXlDLE1BQU0sb0JBQW9CLENBQUM7QUFFdEcsT0FBTyxFQUFFLFFBQVEsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7OztBQU01QyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQ1UsS0FBK0IsRUFDL0IsVUFBc0I7UUFEdEIsVUFBSyxHQUFMLEtBQUssQ0FBMEI7UUFDL0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUM3QixDQUFDO0lBRUosVUFBVSxDQUFDLE9BQWdCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLEtBQUs7YUFDZCxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQzthQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBTyxTQUFTLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQWdCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FDbkQsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDZixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBNEIsU0FBUyxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsRUFBRTtZQUMzRSxHQUFHLE9BQU87WUFDVixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7U0FDL0QsQ0FBQyxDQUNILENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhLENBQUMsRUFBVTtRQUN0QixPQUFPLElBQUksQ0FBQyxLQUFLO2FBQ2QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7YUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQU8sR0FBRyxHQUFHLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsY0FBYyxDQUFDLEVBQVU7UUFDdkIsT0FBTyxJQUFJLENBQUMsS0FBSzthQUNkLE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO2FBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFVLEdBQUcsR0FBRyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVELGtCQUFrQixDQUFDLEVBQVU7UUFDM0IsT0FBTyxJQUFJLENBQUMsS0FBSzthQUNkLE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO2FBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFrQixHQUFHLEdBQUcsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxTQUFpQixFQUFFLFVBQWtCLEVBQUUsS0FBVTtRQUNsRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ25ELFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQU8sU0FBUyxDQUFDLEdBQUcsR0FBRyxnQkFBZ0IsU0FBUyxnQkFBZ0IsVUFBVSxFQUFFLENBQUMsRUFBRTtZQUNoRyxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQscUJBQXFCLENBQUMsU0FBaUIsRUFBRSxVQUFrQjtRQUN6RCxPQUFPLElBQUksQ0FBQyxLQUFLO2FBQ2QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7YUFDOUIsSUFBSSxDQUNILFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQU8sU0FBUyxDQUFDLEdBQUcsR0FBRyxnQkFBZ0IsU0FBUyxnQkFBZ0IsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUNyRyxDQUNGLENBQUM7SUFDTixDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWtCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEtBQUs7YUFDZCxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQzthQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBTyxTQUFTLENBQUMsR0FBRyxHQUFHLHNCQUFzQixDQUFDLEVBQUUsRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xILENBQUM7OEdBakVVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENhdGVnb3J5LCBDb25maWdTZWxlY3RvcnMsIERhdGFzZXQsIE1ldGFkYXRhVmFsdWUsIFNoYXJlQ29uZmxpY3QgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IG1lcmdlTWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBZG1pbkRhdGFzZXRTdGF0ZSB9IGZyb20gJy4vYWRtaW4tZGF0YXNldC5yZWR1Y2VyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQWRtaW5EYXRhc2V0U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPEFkbWluRGF0YXNldFN0YXRlPixcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnRcbiAgKSB7fVxuXG4gIGFkZERhdGFzZXQoZGF0YXNldDogRGF0YXNldCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5yZWZVcmwpXG4gICAgICAucGlwZShtZXJnZU1hcCgodXJsKSA9PiB0aGlzLmh0dHBDbGllbnQucG9zdDx2b2lkPihlbmNvZGVVUkkoYCR7dXJsfS9kYXRhc2V0c2ApLCBkYXRhc2V0KSkpO1xuICB9XG5cbiAgdXBkYXRlRGF0YXNldChkYXRhc2V0OiBEYXRhc2V0KTogT2JzZXJ2YWJsZTx1bmRlZmluZWQgfCBTaGFyZUNvbmZsaWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5yZWZVcmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PlxuICAgICAgICB0aGlzLmh0dHBDbGllbnQucHV0PHVuZGVmaW5lZCB8IFNoYXJlQ29uZmxpY3Q+KGVuY29kZVVSSShgJHt1cmx9L2RhdGFzZXRzYCksIHtcbiAgICAgICAgICAuLi5kYXRhc2V0LFxuICAgICAgICAgIGNhdGVnb3JpZXM6IGRhdGFzZXQuY2F0ZWdvcmllcz8ubWFwKChjYXRlZ29yeSkgPT4gY2F0ZWdvcnkuaWQpXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGRlbGV0ZURhdGFzZXQoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5yZWZVcmwpXG4gICAgICAucGlwZShtZXJnZU1hcCgodXJsKSA9PiB0aGlzLmh0dHBDbGllbnQuZGVsZXRlPHZvaWQ+KGAke3VybH0vZGF0YXNldHMvaWQvJHtpZH1gKSkpO1xuICB9XG5cbiAgZ2V0RGF0YXNldEJ5SWQoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5yZWZVcmwpXG4gICAgICAucGlwZShtZXJnZU1hcCgodXJsKSA9PiB0aGlzLmh0dHBDbGllbnQuZ2V0PERhdGFzZXQ+KGAke3VybH0vZGF0YXNldHMvaWQvJHtpZH1gKSkpO1xuICB9XG5cbiAgZ2V0RGF0YXNldE1ldGFkYXRhKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE1ldGFkYXRhVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5yZWZVcmwpXG4gICAgICAucGlwZShtZXJnZU1hcCgodXJsKSA9PiB0aGlzLmh0dHBDbGllbnQuZ2V0PE1ldGFkYXRhVmFsdWVbXT4oYCR7dXJsfS9kYXRhc2V0cy9pZC8ke2lkfS9tZXRhZGF0YWApKSk7XG4gIH1cblxuICBhZGREYXRhc2V0TWV0YWRhdGEoZGF0YXNldElkOiBzdHJpbmcsIG1ldGFkYXRhSWQ6IHN0cmluZywgdmFsdWU6IGFueSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMucmVmVXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT5cbiAgICAgICAgdGhpcy5odHRwQ2xpZW50LnB1dDx2b2lkPihlbmNvZGVVUkkoYCR7dXJsfS9kYXRhc2V0cy9pZC8ke2RhdGFzZXRJZH0vbWV0YWRhdGEvaWQvJHttZXRhZGF0YUlkfWApLCB7XG4gICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGRlbGV0ZURhdGFzZXRNZXRhZGF0YShkYXRhc2V0SWQ6IHN0cmluZywgbWV0YWRhdGFJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLnJlZlVybClcbiAgICAgIC5waXBlKFxuICAgICAgICBtZXJnZU1hcCgodXJsKSA9PlxuICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5kZWxldGU8dm9pZD4oZW5jb2RlVVJJKGAke3VybH0vZGF0YXNldHMvaWQvJHtkYXRhc2V0SWR9L21ldGFkYXRhL2lkLyR7bWV0YWRhdGFJZH1gKSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgfVxuXG4gIGFkZENhdGVnb3J5KGNhdGVnb3J5OiBDYXRlZ29yeSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5yZWZVcmwpXG4gICAgICAucGlwZShtZXJnZU1hcCgodXJsKSA9PiB0aGlzLmh0dHBDbGllbnQucHV0PHZvaWQ+KGVuY29kZVVSSShgJHt1cmx9L2RhdGFzZXRzL2NhdGVnb3JpZXNgKSwgeyAuLi5jYXRlZ29yeSB9KSkpO1xuICB9XG59XG4iXX0=
|