@provoly/dashboard 1.4.59 → 1.4.60
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/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +39 -30
- package/esm2022/presentation/components/presentation.component.mjs +6 -3
- package/fesm2022/provoly-dashboard-presentation.mjs +43 -31
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/package.json +13 -13
- package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +2 -1
- package/presentation/components/presentation.component.d.ts +2 -1
package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs
CHANGED
|
@@ -29,6 +29,7 @@ export class PryAddEditPresentationComponent extends SubscriptionnerDirective {
|
|
|
29
29
|
this.editionStartUrl = '/';
|
|
30
30
|
this.mode = 'meta';
|
|
31
31
|
this.goBack = new EventEmitter();
|
|
32
|
+
this.officialPresentationNames = [];
|
|
32
33
|
this.staticManifest$ = this.store.select(DashboardSelectors.staticManifest);
|
|
33
34
|
this.subscriptions.add(this.staticManifest$.subscribe((manifest) => (this.staticManifest = manifest)));
|
|
34
35
|
this.subscriptions.add(combineLatest([this.staticManifest$, this.store.select(DashboardSelectors.gridLayout)]).subscribe(([staticManifest, gridLayout]) => {
|
|
@@ -52,35 +53,41 @@ export class PryAddEditPresentationComponent extends SubscriptionnerDirective {
|
|
|
52
53
|
...this.formValue,
|
|
53
54
|
metadata: this.metadata()
|
|
54
55
|
};
|
|
55
|
-
this.
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
if (!this.officialPresentationNames.includes(presentation.name)) {
|
|
57
|
+
this.manifestService
|
|
58
|
+
.save(presentation.name, this.edition ? this.staticManifest : this.getNewManifest(), presentation.id, presentation.description, presentation.image, presentation.metadata?.map((metadata) => ({
|
|
59
|
+
metadataDefId: metadata.metadataDef.id,
|
|
60
|
+
value: metadata.value
|
|
61
|
+
})), presentation.accessRightsByGroup, presentation.additionalInformation)
|
|
62
|
+
.pipe(catchError((error) => {
|
|
63
|
+
this.previousTry.next(presentation.name);
|
|
64
|
+
return throwError(error);
|
|
65
|
+
}))
|
|
66
|
+
.subscribe(() => {
|
|
67
|
+
const presentation = {
|
|
68
|
+
...this.selectedPresentation$.value,
|
|
69
|
+
...this.formValue,
|
|
70
|
+
metadata: this.metadata()
|
|
71
|
+
};
|
|
72
|
+
if (!this.edition) {
|
|
73
|
+
this.store.dispatch(DashboardActions.selectPresentation({
|
|
74
|
+
presentation,
|
|
75
|
+
viewMode: ViewMode.CREATION
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
this.store.dispatch(DashboardActions.loadPresentation({
|
|
80
|
+
presentation,
|
|
81
|
+
viewMode: ViewMode.EDITION
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
this.router?.navigateByUrl(this.editionStartUrl);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
//this.errorDuplicatingText = '@chh.message.failure.alreadyExisting';
|
|
61
89
|
this.previousTry.next(presentation.name);
|
|
62
|
-
|
|
63
|
-
}))
|
|
64
|
-
.subscribe(() => {
|
|
65
|
-
const presentation = {
|
|
66
|
-
...this.selectedPresentation$.value,
|
|
67
|
-
...this.formValue,
|
|
68
|
-
metadata: this.metadata()
|
|
69
|
-
};
|
|
70
|
-
if (!this.edition) {
|
|
71
|
-
this.store.dispatch(DashboardActions.selectPresentation({
|
|
72
|
-
presentation,
|
|
73
|
-
viewMode: ViewMode.CREATION
|
|
74
|
-
}));
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
this.store.dispatch(DashboardActions.loadPresentation({
|
|
78
|
-
presentation,
|
|
79
|
-
viewMode: ViewMode.EDITION
|
|
80
|
-
}));
|
|
81
|
-
}
|
|
82
|
-
this.router?.navigateByUrl(this.editionStartUrl);
|
|
83
|
-
});
|
|
90
|
+
}
|
|
84
91
|
}
|
|
85
92
|
saveDashboard() {
|
|
86
93
|
if (this.isFormValid) {
|
|
@@ -130,7 +137,7 @@ export class PryAddEditPresentationComponent extends SubscriptionnerDirective {
|
|
|
130
137
|
};
|
|
131
138
|
}
|
|
132
139
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryAddEditPresentationComponent, deps: [{ token: i1.Store }, { token: i2.ManifestService }, { token: i3.Router, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
133
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: { selectedPresentation: "selectedPresentation", edition: "edition", themePrefix: "themePrefix", editionStartUrl: "editionStartUrl", mode: "mode" }, outputs: { goBack: "goBack" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-manifest-layout\">\n <div class=\"o-manifest-layout__toolbox -justify-space-between -align-center\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"close()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"button\" (click)=\"saveDashboard()\" [disabled]=\"!isFormValid\">\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content--presentation\">\n <h2 class=\"a-h2\">{{ '@pry.presentation.add' + '.pageTitle' | i18n }}</h2>\n <div class=\"o-presentation-form-wrapper\">\n <div class=\"u-display-flex -column\">\n <pry-presentation-form\n mode=\"theme\"\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (formValue)=\"formValue = $event\"\n (isFormValid)=\"isFormValid = $event\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n [previousTry]=\"previousTry\"\n ></pry-presentation-form>\n <div class=\"m-form-label-field -width-full m-form-label-field--inline\">\n <label class=\"a-label\">{{ '@pry.presentation.form.grid' | i18n }}</label>\n <span class=\"a-label\">{{ '@pry.toolbox.layout.' + this.chosenLayout | i18n }}</span>\n @if (!edition) {\n <pry-select-grid-layout></pry-select-grid-layout>\n }\n </div>\n </div>\n @if (mode === 'meta') {\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <div class=\"o-presentation__metadata-editor\">\n <pry-metadata-editor\n [targetId]=\"selectedPresentation.id\"\n [isModification]=\"true\"\n [metadata]=\"selectedPresentation.metadata ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </div>\n }\n }\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"saveDashboard()\"\n [disabled]=\"!isFormValid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i4.SelectGridLayoutComponent, selector: "pry-select-grid-layout" }, { kind: "component", type: i4.PresentationFormComponent, selector: "pry-presentation-form", inputs: ["previousTry", "mode", "themePrefix", "selectedPresentation"], outputs: ["formValue", "isFormValid"] }, { kind: "component", type: i5.PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: ["isModification", "targetId", "type", "metadata"], outputs: ["addMeta", "removeMeta"] }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] }); }
|
|
140
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: { selectedPresentation: "selectedPresentation", edition: "edition", themePrefix: "themePrefix", editionStartUrl: "editionStartUrl", mode: "mode", officialPresentationNames: "officialPresentationNames" }, outputs: { goBack: "goBack" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-manifest-layout\">\n <div class=\"o-manifest-layout__toolbox -justify-space-between -align-center\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"close()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"button\" (click)=\"saveDashboard()\" [disabled]=\"!isFormValid\">\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content--presentation\">\n <h2 class=\"a-h2\">{{ '@pry.presentation.add' + '.pageTitle' | i18n }}</h2>\n <div class=\"o-presentation-form-wrapper\">\n <div class=\"u-display-flex -column\">\n <pry-presentation-form\n mode=\"theme\"\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (formValue)=\"formValue = $event\"\n (isFormValid)=\"isFormValid = $event\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n [previousTry]=\"previousTry\"\n ></pry-presentation-form>\n <div class=\"m-form-label-field -width-full m-form-label-field--inline\">\n <label class=\"a-label\">{{ '@pry.presentation.form.grid' | i18n }}</label>\n <span class=\"a-label\">{{ '@pry.toolbox.layout.' + this.chosenLayout | i18n }}</span>\n @if (!edition) {\n <pry-select-grid-layout></pry-select-grid-layout>\n }\n </div>\n </div>\n @if (mode === 'meta') {\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <div class=\"o-presentation__metadata-editor\">\n <pry-metadata-editor\n [targetId]=\"selectedPresentation.id\"\n [isModification]=\"true\"\n [metadata]=\"selectedPresentation.metadata ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </div>\n }\n }\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"saveDashboard()\"\n [disabled]=\"!isFormValid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i4.SelectGridLayoutComponent, selector: "pry-select-grid-layout" }, { kind: "component", type: i4.PresentationFormComponent, selector: "pry-presentation-form", inputs: ["previousTry", "mode", "themePrefix", "selectedPresentation"], outputs: ["formValue", "isFormValid"] }, { kind: "component", type: i5.PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: ["isModification", "targetId", "type", "metadata"], outputs: ["addMeta", "removeMeta"] }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] }); }
|
|
134
141
|
}
|
|
135
142
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryAddEditPresentationComponent, decorators: [{
|
|
136
143
|
type: Component,
|
|
@@ -149,5 +156,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
149
156
|
type: Input
|
|
150
157
|
}], goBack: [{
|
|
151
158
|
type: Output
|
|
159
|
+
}], officialPresentationNames: [{
|
|
160
|
+
type: Input
|
|
152
161
|
}] } });
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWVkaXQtcHJlc2VudGF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3ByZXNlbnRhdGlvbi9jb21wb25lbnRzL2FkZC1lZGl0LXByZXNlbnRhdGlvbi9hZGQtZWRpdC1wcmVzZW50YXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvcHJlc2VudGF0aW9uL2NvbXBvbmVudHMvYWRkLWVkaXQtcHJlc2VudGF0aW9uL2FkZC1lZGl0LXByZXNlbnRhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFNbEIsd0JBQXdCLEVBQ3hCLFFBQVEsRUFDUixvQkFBb0IsRUFDckIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQWMsT0FBTyxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQWlCLE1BQU0sK0NBQStDLENBQUM7QUFDakcsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBT3BDLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSx3QkFBd0I7SUFXM0UsSUFBYSxvQkFBb0IsQ0FBQyxZQUE2QztRQUM3RSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFRRCxZQUNZLEtBQVksRUFDZCxlQUFnQyxF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RUFBRSxJQUFJLENBQUMsWUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsZUFBZSxDQUFFO3dCQUN6RixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksRUFBRTtxQkFDbEM7aUJBQ0Y7WUFDTCxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTztZQUNMLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxPQUFPLEVBQUUsRUFBRTtvQkFDWCxJQUFJLEVBQUU7d0JBQ0osTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZO3dCQUN6QixPQUFPLEVBQUUsb0JBQW9CLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxPQUFPO3dCQUNuRSxJQUFJLEVBQUUsb0JBQW9CLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJO3FCQUM5RDtpQkFDRjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7OEdBOUpVLCtCQUErQjtrR0FBL0IsK0JBQStCLG1SQ3pCNUMsbXVFQXNEQTs7MkZEN0JhLCtCQUErQjtrQkFKM0MsU0FBUzsrQkFDRSwyQkFBMkI7OzBCQTJCbEMsUUFBUTt5Q0FiRSxvQkFBb0I7c0JBQWhDLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBEYXNoYm9hcmRBY3Rpb25zLFxuICBEYXNoYm9hcmRHcmlkTGF5b3V0LFxuICBEYXNoYm9hcmRTZWxlY3RvcnMsXG4gIEdsb2JhbE1hbmlmZXN0LFxuICBJTWV0YWRhdGEsXG4gIE1hbmlmZXN0RGVzY3JpcHRpb24sXG4gIE1hbmlmZXN0U2VydmljZSxcbiAgTWV0YWRhdGFWYWx1ZSxcbiAgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlLFxuICBWaWV3TW9kZSxcbiAgV2lkZ2V0UGxhY2VtZW50VXRpbHNcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY2F0Y2hFcnJvciwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNZXRhZGF0YVNlbGVjdG9ycywgTWV0YUV2ZW50VHlwZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL21ldGFkYXRhLWVkaXRvcic7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IFByZXNlbnRhdGlvbkZvcm1WYWx1ZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZC90b29sYm94JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWFkZC1lZGl0LXByZXNlbnRhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtZWRpdC1wcmVzZW50YXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeUFkZEVkaXRQcmVzZW50YXRpb25Db21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUge1xuICBzdGF0aWNNYW5pZmVzdCQ6IE9ic2VydmFibGU8R2xvYmFsTWFuaWZlc3Q+O1xuICBzdGF0aWNNYW5pZmVzdD86IEdsb2JhbE1hbmlmZXN0O1xuICBzZWxlY3RlZFByZXNlbnRhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hbmlmZXN0RGVzY3JpcHRpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNob3NlbkxheW91dDogc3RyaW5nID0gRGFzaGJvYXJkR3JpZExheW91dC5GVUxMO1xuICBtZXRhZGF0YURlZnM6IElNZXRhZGF0YVtdIHwgdW5kZWZpbmVkO1xuICBtZXRhZGF0YVRoZW1lSWQ6IHN0cmluZyA9ICcnO1xuICBmb3JtVmFsdWU/OiBQYXJ0aWFsPFByZXNlbnRhdGlvbkZvcm1WYWx1ZT47XG4gIGlzRm9ybVZhbGlkID0gZmFsc2U7XG4gIHByZXZpb3VzVHJ5ID0gbmV3IFN1YmplY3Q8c3RyaW5nIHwgbnVsbD4oKTtcblxuICBASW5wdXQoKSBzZXQgc2VsZWN0ZWRQcmVzZW50YXRpb24ocHJlc2VudGF0aW9uOiBNYW5pZmVzdERlc2NyaXB0aW9uIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChwcmVzZW50YXRpb24pO1xuICB9XG4gIEBJbnB1dCgpIGVkaXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdGhlbWVQcmVmaXg6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBlZGl0aW9uU3RhcnRVcmw6IHN0cmluZyA9ICcvJztcbiAgQElucHV0KCkgbW9kZTogJ3RoZW1lJyB8ICdtZXRhJyA9ICdtZXRhJztcblxuICBAT3V0cHV0KCkgZ29CYWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBtYW5pZmVzdFNlcnZpY2U6IE1hbmlmZXN0U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXJcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnN0YXRpY01hbmlmZXN0JCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zdGF0aWNNYW5pZmVzdCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLnN0YXRpY01hbmlmZXN0JC5zdWJzY3JpYmUoKG1hbmlmZXN0KSA9PiAodGhpcy5zdGF0aWNNYW5pZmVzdCA9IG1hbmlmZXN0KSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnN0YXRpY01hbmlmZXN0JCwgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdyaWRMYXlvdXQpXSkuc3Vic2NyaWJlKFxuICAgICAgICAoW3N0YXRpY01hbmlmZXN0LCBncmlkTGF5b3V0XSkgPT4ge1xuICAgICAgICAgIHRoaXMuY2hvc2VuTGF5b3V0ID1cbiAgICAgICAgICAgIHRoaXMuZWRpdGlvbiAmJiBzdGF0aWNNYW5pZmVzdC53aW5kb3dzWzBdPy5ncmlkPy5sYXlvdXQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA/IHN0YXRpY01hbmlmZXN0LndpbmRvd3NbMF0/LmdyaWQ/LmxheW91dFxuICAgICAgICAgICAgICA6IGdyaWRMYXlvdXQ7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChNZXRhZGF0YVNlbGVjdG9ycy5tZXRhZGF0YSkuc3Vic2NyaWJlKChtZXRhZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLm1ldGFkYXRhRGVmcyA9IG1ldGFkYXRhO1xuICAgICAgICBjb25zdCBtZXRhZGF0YVRoZW1lID0gbWV0YWRhdGE/LmZpbmQoKG1ldGEpID0+IG1ldGEubmFtZSA9PT0gJ190aGVtZScpO1xuICAgICAgICBpZiAobWV0YWRhdGFUaGVtZSkge1xuICAgICAgICAgIHRoaXMubWV0YWRhdGFUaGVtZUlkID0gbWV0YWRhdGFUaGVtZT8uaWQgPz8gJyc7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNhdmVPclVwZGF0ZURhc2hib2FyZCgpIHtcbiAgICBjb25zdCBwcmVzZW50YXRpb24gPSB7XG4gICAgICAuLi50aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC52YWx1ZSEsXG4gICAgICBpZDogdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWU/LmlkIHx8IHV1aWR2NCgpLFxuICAgICAgLi4udGhpcy5mb3JtVmFsdWUsXG4gICAgICBtZXRhZGF0YTogdGhpcy5tZXRhZGF0YSgpXG4gICAgfTtcbiAgICB0aGlzLm1hbmlmZXN0U2VydmljZVxuICAgICAgLnNhdmUoXG4gICAgICAgIHByZXNlbnRhdGlvbi5uYW1lLFxuICAgICAgICB0aGlzLmVkaXRpb24gPyAodGhpcy5zdGF0aWNNYW5pZmVzdCBhcyBHbG9iYWxNYW5pZmVzdCkgOiB0aGlzLmdldE5ld01hbmlmZXN0KCksXG4gICAgICAgIHByZXNlbnRhdGlvbi5pZCxcbiAgICAgICAgcHJlc2VudGF0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICBwcmVzZW50YXRpb24uaW1hZ2UsXG4gICAgICAgIHByZXNlbnRhdGlvbi5tZXRhZGF0YT8ubWFwKChtZXRhZGF0YTogTWV0YWRhdGFWYWx1ZSkgPT4gKHtcbiAgICAgICAgICBtZXRhZGF0YURlZklkOiBtZXRhZGF0YS5tZXRhZGF0YURlZi5pZCxcbiAgICAgICAgICB2YWx1ZTogbWV0YWRhdGEudmFsdWVcbiAgICAgICAgfSkpLFxuICAgICAgICBwcmVzZW50YXRpb24uYWNjZXNzUmlnaHRzQnlHcm91cCxcbiAgICAgICAgcHJlc2VudGF0aW9uLmFkZGl0aW9uYWxJbmZvcm1hdGlvblxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5wcmV2aW91c1RyeS5uZXh0KHByZXNlbnRhdGlvbi5uYW1lKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgcHJlc2VudGF0aW9uID0ge1xuICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLnZhbHVlISxcbiAgICAgICAgICAuLi50aGlzLmZvcm1WYWx1ZSxcbiAgICAgICAgICBtZXRhZGF0YTogdGhpcy5tZXRhZGF0YSgpXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKCF0aGlzLmVkaXRpb24pIHtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oe1xuICAgICAgICAgICAgICBwcmVzZW50YXRpb24sXG4gICAgICAgICAgICAgIHZpZXdNb2RlOiBWaWV3TW9kZS5DUkVBVElPTlxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmxvYWRQcmVzZW50YXRpb24oe1xuICAgICAgICAgICAgICBwcmVzZW50YXRpb24sXG4gICAgICAgICAgICAgIHZpZXdNb2RlOiBWaWV3TW9kZS5FRElUSU9OXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZXI/Lm5hdmlnYXRlQnlVcmwodGhpcy5lZGl0aW9uU3RhcnRVcmwpO1xuICAgICAgfSk7XG4gIH1cblxuICBzYXZlRGFzaGJvYXJkKCkge1xuICAgIGlmICh0aGlzLmlzRm9ybVZhbGlkKSB7XG4gICAgICB0aGlzLnNhdmVPclVwZGF0ZURhc2hib2FyZCgpO1xuICAgIH1cbiAgfVxuXG4gIGFkZE1ldGFkYXRhKG1ldGFkYXRhOiBNZXRhRXZlbnRUeXBlKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIERhc2hib2FyZEFjdGlvbnMuYWRkTWFuaWZlc3RNZXRhZGF0YSh7XG4gICAgICAgIHByZXNlbnRhdGlvbklkOiB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC52YWx1ZT8uaWQhLFxuICAgICAgICBtZXRhZGF0YUlkOiBtZXRhZGF0YS5tZXRhZGF0YUlkLFxuICAgICAgICB2YWx1ZTogbWV0YWRhdGEudmFsdWUgPz8gJydcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJlbW92ZU1ldGFkYXRhKG1ldGFkYXRhOiBNZXRhRXZlbnRUeXBlKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIERhc2hib2FyZEFjdGlvbnMuZGVsZXRlTWFuaWZlc3RNZXRhZGF0YSh7XG4gICAgICAgIHByZXNlbnRhdGlvbklkOiB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC52YWx1ZT8uaWQhLFxuICAgICAgICBtZXRhZGF0YUlkOiBtZXRhZGF0YS5tZXRhZGF0YUlkXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmdvQmFjay5lbWl0KCk7XG4gIH1cblxuICBtZXRhZGF0YSgpOiBNZXRhZGF0YVZhbHVlW10ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICd0aGVtZSdcbiAgICAgID8gIXRoaXMuZm9ybVZhbHVlPy50aGVtZSB8fCB0aGlzLmZvcm1WYWx1ZT8udGhlbWUgPT09ICcnXG4gICAgICAgID8gW11cbiAgICAgICAgOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1ldGFkYXRhRGVmOiB0aGlzLm1ldGFkYXRhRGVmcyEuZmluZCgobWV0YWRhdGEpID0+IG1ldGFkYXRhLmlkID09PSB0aGlzLm1ldGFkYXRhVGhlbWVJZCkhLFxuICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5mb3JtVmFsdWUudGhlbWUgPz8gJydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICA6IHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLnZhbHVlPy5tZXRhZGF0YSA/PyBbXTtcbiAgfVxuXG4gIGdldE5ld01hbmlmZXN0KCk6IEdsb2JhbE1hbmlmZXN0IHtcbiAgICByZXR1cm4ge1xuICAgICAgd2luZG93czogW1xuICAgICAgICB7XG4gICAgICAgICAgd2lkZ2V0czogW10sXG4gICAgICAgICAgZ3JpZDoge1xuICAgICAgICAgICAgbGF5b3V0OiB0aGlzLmNob3NlbkxheW91dCxcbiAgICAgICAgICAgIGNvbHVtbnM6IFdpZGdldFBsYWNlbWVudFV0aWxzLmdldExheW91dCh0aGlzLmNob3NlbkxheW91dCk/LmNvbHVtbnMsXG4gICAgICAgICAgICByb3dzOiBXaWRnZXRQbGFjZW1lbnRVdGlscy5nZXRMYXlvdXQodGhpcy5jaG9zZW5MYXlvdXQpPy5yb3dzXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0XCI+XG4gIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fdG9vbGJveCAtanVzdGlmeS1zcGFjZS1iZXR3ZWVuIC1hbGlnbi1jZW50ZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jbG9zZScgfCBpMThuIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlRGFzaGJvYXJkKClcIiBbZGlzYWJsZWRdPVwiIWlzRm9ybVZhbGlkXCI+XG4gICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNoZWNrJyB8IGkxOG4gfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fY29udGVudC0tcHJlc2VudGF0aW9uXCI+XG4gICAgPGgyIGNsYXNzPVwiYS1oMlwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5hZGQnICsgJy5wYWdlVGl0bGUnIHwgaTE4biB9fTwvaDI+XG4gICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uLWZvcm0td3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInUtZGlzcGxheS1mbGV4IC1jb2x1bW5cIj5cbiAgICAgICAgPHByeS1wcmVzZW50YXRpb24tZm9ybVxuICAgICAgICAgIG1vZGU9XCJ0aGVtZVwiXG4gICAgICAgICAgW3NlbGVjdGVkUHJlc2VudGF0aW9uXT1cIihzZWxlY3RlZFByZXNlbnRhdGlvbiQgfCBhc3luYykgPz8gdW5kZWZpbmVkXCJcbiAgICAgICAgICAoZm9ybVZhbHVlKT1cImZvcm1WYWx1ZSA9ICRldmVudFwiXG4gICAgICAgICAgKGlzRm9ybVZhbGlkKT1cImlzRm9ybVZhbGlkID0gJGV2ZW50XCJcbiAgICAgICAgICBbbW9kZV09XCJtb2RlXCJcbiAgICAgICAgICBbdGhlbWVQcmVmaXhdPVwidGhlbWVQcmVmaXhcIlxuICAgICAgICAgIFtwcmV2aW91c1RyeV09XCJwcmV2aW91c1RyeVwiXG4gICAgICAgID48L3ByeS1wcmVzZW50YXRpb24tZm9ybT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCAtd2lkdGgtZnVsbCBtLWZvcm0tbGFiZWwtZmllbGQtLWlubGluZVwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5ncmlkJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LnRvb2xib3gubGF5b3V0LicgKyB0aGlzLmNob3NlbkxheW91dCB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgQGlmICghZWRpdGlvbikge1xuICAgICAgICAgICAgPHByeS1zZWxlY3QtZ3JpZC1sYXlvdXQ+PC9wcnktc2VsZWN0LWdyaWQtbGF5b3V0PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIEBpZiAobW9kZSA9PT0gJ21ldGEnKSB7XG4gICAgICAgIEBpZiAoc2VsZWN0ZWRQcmVzZW50YXRpb24kIHwgYXN5bmM7IGFzIHNlbGVjdGVkUHJlc2VudGF0aW9uKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19tZXRhZGF0YS1lZGl0b3JcIj5cbiAgICAgICAgICAgIDxwcnktbWV0YWRhdGEtZWRpdG9yXG4gICAgICAgICAgICAgIFt0YXJnZXRJZF09XCJzZWxlY3RlZFByZXNlbnRhdGlvbi5pZFwiXG4gICAgICAgICAgICAgIFtpc01vZGlmaWNhdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW21ldGFkYXRhXT1cInNlbGVjdGVkUHJlc2VudGF0aW9uLm1ldGFkYXRhID8/IFtdXCJcbiAgICAgICAgICAgICAgKHJlbW92ZU1ldGEpPVwicmVtb3ZlTWV0YWRhdGEoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChhZGRNZXRhKT1cImFkZE1ldGFkYXRhKCRldmVudClcIlxuICAgICAgICAgICAgICBbdHlwZV09XCInbWV0YSdcIlxuICAgICAgICAgICAgPjwvcHJ5LW1ldGFkYXRhLWVkaXRvcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgICAgKGNsaWNrKT1cInNhdmVEYXNoYm9hcmQoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiIWlzRm9ybVZhbGlkXCJcbiAgICA+XG4gICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uY29uZmlndXJhdGlvbicgfCBpMThuIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWVkaXQtcHJlc2VudGF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3ByZXNlbnRhdGlvbi9jb21wb25lbnRzL2FkZC1lZGl0LXByZXNlbnRhdGlvbi9hZGQtZWRpdC1wcmVzZW50YXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvcHJlc2VudGF0aW9uL2NvbXBvbmVudHMvYWRkLWVkaXQtcHJlc2VudGF0aW9uL2FkZC1lZGl0LXByZXNlbnRhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFNbEIsd0JBQXdCLEVBQ3hCLFFBQVEsRUFDUixvQkFBb0IsRUFDckIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQWMsT0FBTyxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQWlCLE1BQU0sK0NBQStDLENBQUM7QUFDakcsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBT3BDLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSx3QkFBd0I7SUFXM0UsSUFBYSxvQkFBb0IsQ0FBQyxZQUE2QztRQUM3RSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFTRCxZQUNZLEtBQVksRUFDZCxlQUFnQyxF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RyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFDRSx5QkFBeUI7c0JBQWpDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIERhc2hib2FyZEFjdGlvbnMsXG4gIERhc2hib2FyZEdyaWRMYXlvdXQsXG4gIERhc2hib2FyZFNlbGVjdG9ycyxcbiAgR2xvYmFsTWFuaWZlc3QsXG4gIElNZXRhZGF0YSxcbiAgTWFuaWZlc3REZXNjcmlwdGlvbixcbiAgTWFuaWZlc3RTZXJ2aWNlLFxuICBNZXRhZGF0YVZhbHVlLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUsXG4gIFZpZXdNb2RlLFxuICBXaWRnZXRQbGFjZW1lbnRVdGlsc1xufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjYXRjaEVycm9yLCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1ldGFkYXRhU2VsZWN0b3JzLCBNZXRhRXZlbnRUeXBlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkL2NvbXBvbmVudHMvbWV0YWRhdGEtZWRpdG9yJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgUHJlc2VudGF0aW9uRm9ybVZhbHVlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktYWRkLWVkaXQtcHJlc2VudGF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1lZGl0LXByZXNlbnRhdGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUHJ5QWRkRWRpdFByZXNlbnRhdGlvbkNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB7XG4gIHN0YXRpY01hbmlmZXN0JDogT2JzZXJ2YWJsZTxHbG9iYWxNYW5pZmVzdD47XG4gIHN0YXRpY01hbmlmZXN0PzogR2xvYmFsTWFuaWZlc3Q7XG4gIHNlbGVjdGVkUHJlc2VudGF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFuaWZlc3REZXNjcmlwdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY2hvc2VuTGF5b3V0OiBzdHJpbmcgPSBEYXNoYm9hcmRHcmlkTGF5b3V0LkZVTEw7XG4gIG1ldGFkYXRhRGVmczogSU1ldGFkYXRhW10gfCB1bmRlZmluZWQ7XG4gIG1ldGFkYXRhVGhlbWVJZDogc3RyaW5nID0gJyc7XG4gIGZvcm1WYWx1ZT86IFBhcnRpYWw8UHJlc2VudGF0aW9uRm9ybVZhbHVlPjtcbiAgaXNGb3JtVmFsaWQgPSBmYWxzZTtcbiAgcHJldmlvdXNUcnkgPSBuZXcgU3ViamVjdDxzdHJpbmcgfCBudWxsPigpO1xuXG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZFByZXNlbnRhdGlvbihwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbik7XG4gIH1cbiAgQElucHV0KCkgZWRpdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSB0aGVtZVByZWZpeDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGVkaXRpb25TdGFydFVybDogc3RyaW5nID0gJy8nO1xuICBASW5wdXQoKSBtb2RlOiAndGhlbWUnIHwgJ21ldGEnID0gJ21ldGEnO1xuXG4gIEBPdXRwdXQoKSBnb0JhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBJbnB1dCgpIG9mZmljaWFsUHJlc2VudGF0aW9uTmFtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIG1hbmlmZXN0U2VydmljZTogTWFuaWZlc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlclxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3RhdGljTWFuaWZlc3QkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnN0YXRpY01hbmlmZXN0KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuc3RhdGljTWFuaWZlc3QkLnN1YnNjcmliZSgobWFuaWZlc3QpID0+ICh0aGlzLnN0YXRpY01hbmlmZXN0ID0gbWFuaWZlc3QpKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuc3RhdGljTWFuaWZlc3QkLCB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ3JpZExheW91dCldKS5zdWJzY3JpYmUoXG4gICAgICAgIChbc3RhdGljTWFuaWZlc3QsIGdyaWRMYXlvdXRdKSA9PiB7XG4gICAgICAgICAgdGhpcy5jaG9zZW5MYXlvdXQgPVxuICAgICAgICAgICAgdGhpcy5lZGl0aW9uICYmIHN0YXRpY01hbmlmZXN0LndpbmRvd3NbMF0/LmdyaWQ/LmxheW91dCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gc3RhdGljTWFuaWZlc3Qud2luZG93c1swXT8uZ3JpZD8ubGF5b3V0XG4gICAgICAgICAgICAgIDogZ3JpZExheW91dDtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KE1ldGFkYXRhU2VsZWN0b3JzLm1ldGFkYXRhKS5zdWJzY3JpYmUoKG1ldGFkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMubWV0YWRhdGFEZWZzID0gbWV0YWRhdGE7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhVGhlbWUgPSBtZXRhZGF0YT8uZmluZCgobWV0YSkgPT4gbWV0YS5uYW1lID09PSAnX3RoZW1lJyk7XG4gICAgICAgIGlmIChtZXRhZGF0YVRoZW1lKSB7XG4gICAgICAgICAgdGhpcy5tZXRhZGF0YVRoZW1lSWQgPSBtZXRhZGF0YVRoZW1lPy5pZCA/PyAnJztcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2F2ZU9yVXBkYXRlRGFzaGJvYXJkKCkge1xuICAgIGNvbnN0IHByZXNlbnRhdGlvbiA9IHtcbiAgICAgIC4uLnRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLnZhbHVlISxcbiAgICAgIGlkOiB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC52YWx1ZT8uaWQgfHwgdXVpZHY0KCksXG4gICAgICAuLi50aGlzLmZvcm1WYWx1ZSxcbiAgICAgIG1ldGFkYXRhOiB0aGlzLm1ldGFkYXRhKClcbiAgICB9O1xuICAgIGlmICghdGhpcy5vZmZpY2lhbFByZXNlbnRhdGlvbk5hbWVzLmluY2x1ZGVzKHByZXNlbnRhdGlvbi5uYW1lKSkge1xuICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2VcbiAgICAgICAgLnNhdmUoXG4gICAgICAgICAgcHJlc2VudGF0aW9uLm5hbWUsXG4gICAgICAgICAgdGhpcy5lZGl0aW9uID8gKHRoaXMuc3RhdGljTWFuaWZlc3QgYXMgR2xvYmFsTWFuaWZlc3QpIDogdGhpcy5nZXROZXdNYW5pZmVzdCgpLFxuICAgICAgICAgIHByZXNlbnRhdGlvbi5pZCxcbiAgICAgICAgICBwcmVzZW50YXRpb24uZGVzY3JpcHRpb24sXG4gICAgICAgICAgcHJlc2VudGF0aW9uLmltYWdlLFxuICAgICAgICAgIHByZXNlbnRhdGlvbi5tZXRhZGF0YT8ubWFwKChtZXRhZGF0YTogTWV0YWRhdGFWYWx1ZSkgPT4gKHtcbiAgICAgICAgICAgIG1ldGFkYXRhRGVmSWQ6IG1ldGFkYXRhLm1ldGFkYXRhRGVmLmlkLFxuICAgICAgICAgICAgdmFsdWU6IG1ldGFkYXRhLnZhbHVlXG4gICAgICAgICAgfSkpLFxuICAgICAgICAgIHByZXNlbnRhdGlvbi5hY2Nlc3NSaWdodHNCeUdyb3VwLFxuICAgICAgICAgIHByZXNlbnRhdGlvbi5hZGRpdGlvbmFsSW5mb3JtYXRpb25cbiAgICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c1RyeS5uZXh0KHByZXNlbnRhdGlvbi5uYW1lKTtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZXNlbnRhdGlvbiA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLnZhbHVlISxcbiAgICAgICAgICAgIC4uLnRoaXMuZm9ybVZhbHVlLFxuICAgICAgICAgICAgbWV0YWRhdGE6IHRoaXMubWV0YWRhdGEoKVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZiAoIXRoaXMuZWRpdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oe1xuICAgICAgICAgICAgICAgIHByZXNlbnRhdGlvbixcbiAgICAgICAgICAgICAgICB2aWV3TW9kZTogVmlld01vZGUuQ1JFQVRJT05cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMubG9hZFByZXNlbnRhdGlvbih7XG4gICAgICAgICAgICAgICAgcHJlc2VudGF0aW9uLFxuICAgICAgICAgICAgICAgIHZpZXdNb2RlOiBWaWV3TW9kZS5FRElUSU9OXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnJvdXRlcj8ubmF2aWdhdGVCeVVybCh0aGlzLmVkaXRpb25TdGFydFVybCk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvL3RoaXMuZXJyb3JEdXBsaWNhdGluZ1RleHQgPSAnQGNoaC5tZXNzYWdlLmZhaWx1cmUuYWxyZWFkeUV4aXN0aW5nJztcbiAgICAgIHRoaXMucHJldmlvdXNUcnkubmV4dChwcmVzZW50YXRpb24ubmFtZSk7XG4gICAgfVxuICB9XG5cbiAgc2F2ZURhc2hib2FyZCgpIHtcbiAgICBpZiAodGhpcy5pc0Zvcm1WYWxpZCkge1xuICAgICAgdGhpcy5zYXZlT3JVcGRhdGVEYXNoYm9hcmQoKTtcbiAgICB9XG4gIH1cblxuICBhZGRNZXRhZGF0YShtZXRhZGF0YTogTWV0YUV2ZW50VHlwZSkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBEYXNoYm9hcmRBY3Rpb25zLmFkZE1hbmlmZXN0TWV0YWRhdGEoe1xuICAgICAgICBwcmVzZW50YXRpb25JZDogdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWU/LmlkISxcbiAgICAgICAgbWV0YWRhdGFJZDogbWV0YWRhdGEubWV0YWRhdGFJZCxcbiAgICAgICAgdmFsdWU6IG1ldGFkYXRhLnZhbHVlID8/ICcnXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZW1vdmVNZXRhZGF0YShtZXRhZGF0YTogTWV0YUV2ZW50VHlwZSkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBEYXNoYm9hcmRBY3Rpb25zLmRlbGV0ZU1hbmlmZXN0TWV0YWRhdGEoe1xuICAgICAgICBwcmVzZW50YXRpb25JZDogdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWU/LmlkISxcbiAgICAgICAgbWV0YWRhdGFJZDogbWV0YWRhdGEubWV0YWRhdGFJZFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5nb0JhY2suZW1pdCgpO1xuICB9XG5cbiAgbWV0YWRhdGEoKTogTWV0YWRhdGFWYWx1ZVtdIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAndGhlbWUnXG4gICAgICA/ICF0aGlzLmZvcm1WYWx1ZT8udGhlbWUgfHwgdGhpcy5mb3JtVmFsdWU/LnRoZW1lID09PSAnJ1xuICAgICAgICA/IFtdXG4gICAgICAgIDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtZXRhZGF0YURlZjogdGhpcy5tZXRhZGF0YURlZnMhLmZpbmQoKG1ldGFkYXRhKSA9PiBtZXRhZGF0YS5pZCA9PT0gdGhpcy5tZXRhZGF0YVRoZW1lSWQpISxcbiAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuZm9ybVZhbHVlLnRoZW1lID8/ICcnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgOiB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC52YWx1ZT8ubWV0YWRhdGEgPz8gW107XG4gIH1cblxuICBnZXROZXdNYW5pZmVzdCgpOiBHbG9iYWxNYW5pZmVzdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpbmRvd3M6IFtcbiAgICAgICAge1xuICAgICAgICAgIHdpZGdldHM6IFtdLFxuICAgICAgICAgIGdyaWQ6IHtcbiAgICAgICAgICAgIGxheW91dDogdGhpcy5jaG9zZW5MYXlvdXQsXG4gICAgICAgICAgICBjb2x1bW5zOiBXaWRnZXRQbGFjZW1lbnRVdGlscy5nZXRMYXlvdXQodGhpcy5jaG9zZW5MYXlvdXQpPy5jb2x1bW5zLFxuICAgICAgICAgICAgcm93czogV2lkZ2V0UGxhY2VtZW50VXRpbHMuZ2V0TGF5b3V0KHRoaXMuY2hvc2VuTGF5b3V0KT8ucm93c1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dFwiPlxuICA8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX3Rvb2xib3ggLWp1c3RpZnktc3BhY2UtYmV0d2VlbiAtYWxpZ24tY2VudGVyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgIHt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QuY2xvc2UnIHwgaTE4biB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2F2ZURhc2hib2FyZCgpXCIgW2Rpc2FibGVkXT1cIiFpc0Zvcm1WYWxpZFwiPlxuICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jaGVjaycgfCBpMThuIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX2NvbnRlbnQtLXByZXNlbnRhdGlvblwiPlxuICAgIDxoMiBjbGFzcz1cImEtaDJcIj57eyAnQHByeS5wcmVzZW50YXRpb24uYWRkJyArICcucGFnZVRpdGxlJyB8IGkxOG4gfX08L2gyPlxuICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbi1mb3JtLXdyYXBwZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ1LWRpc3BsYXktZmxleCAtY29sdW1uXCI+XG4gICAgICAgIDxwcnktcHJlc2VudGF0aW9uLWZvcm1cbiAgICAgICAgICBtb2RlPVwidGhlbWVcIlxuICAgICAgICAgIFtzZWxlY3RlZFByZXNlbnRhdGlvbl09XCIoc2VsZWN0ZWRQcmVzZW50YXRpb24kIHwgYXN5bmMpID8/IHVuZGVmaW5lZFwiXG4gICAgICAgICAgKGZvcm1WYWx1ZSk9XCJmb3JtVmFsdWUgPSAkZXZlbnRcIlxuICAgICAgICAgIChpc0Zvcm1WYWxpZCk9XCJpc0Zvcm1WYWxpZCA9ICRldmVudFwiXG4gICAgICAgICAgW21vZGVdPVwibW9kZVwiXG4gICAgICAgICAgW3RoZW1lUHJlZml4XT1cInRoZW1lUHJlZml4XCJcbiAgICAgICAgICBbcHJldmlvdXNUcnldPVwicHJldmlvdXNUcnlcIlxuICAgICAgICA+PC9wcnktcHJlc2VudGF0aW9uLWZvcm0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLWZ1bGwgbS1mb3JtLWxhYmVsLWZpZWxkLS1pbmxpbmVcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0uZ3JpZCcgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS50b29sYm94LmxheW91dC4nICsgdGhpcy5jaG9zZW5MYXlvdXQgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIEBpZiAoIWVkaXRpb24pIHtcbiAgICAgICAgICAgIDxwcnktc2VsZWN0LWdyaWQtbGF5b3V0PjwvcHJ5LXNlbGVjdC1ncmlkLWxheW91dD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKG1vZGUgPT09ICdtZXRhJykge1xuICAgICAgICBAaWYgKHNlbGVjdGVkUHJlc2VudGF0aW9uJCB8IGFzeW5jOyBhcyBzZWxlY3RlZFByZXNlbnRhdGlvbikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9fbWV0YWRhdGEtZWRpdG9yXCI+XG4gICAgICAgICAgICA8cHJ5LW1ldGFkYXRhLWVkaXRvclxuICAgICAgICAgICAgICBbdGFyZ2V0SWRdPVwic2VsZWN0ZWRQcmVzZW50YXRpb24uaWRcIlxuICAgICAgICAgICAgICBbaXNNb2RpZmljYXRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFttZXRhZGF0YV09XCJzZWxlY3RlZFByZXNlbnRhdGlvbi5tZXRhZGF0YSA/PyBbXVwiXG4gICAgICAgICAgICAgIChyZW1vdmVNZXRhKT1cInJlbW92ZU1ldGFkYXRhKCRldmVudClcIlxuICAgICAgICAgICAgICAoYWRkTWV0YSk9XCJhZGRNZXRhZGF0YSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW3R5cGVdPVwiJ21ldGEnXCJcbiAgICAgICAgICAgID48L3ByeS1tZXRhZGF0YS1lZGl0b3I+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCJcbiAgICAgIChjbGljayk9XCJzYXZlRGFzaGJvYXJkKClcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFpc0Zvcm1WYWxpZFwiXG4gICAgPlxuICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLmNvbmZpZ3VyYXRpb24nIHwgaTE4biB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -42,6 +42,7 @@ export class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
42
42
|
this.hideToolbox = false;
|
|
43
43
|
this.showTheme = true;
|
|
44
44
|
this.listOfManifests$ = new BehaviorSubject(null);
|
|
45
|
+
this.officialPresentationNames = [];
|
|
45
46
|
this.inputSearch$ = new BehaviorSubject('');
|
|
46
47
|
this.subscriptions.add(this.activatedRoute.queryParams.subscribe((params) => {
|
|
47
48
|
if (params['create']) {
|
|
@@ -169,11 +170,11 @@ export class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
169
170
|
return !this.access ? of(false) : this.access.canModifyPresentation(presentation);
|
|
170
171
|
}
|
|
171
172
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryPresentationComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i3.Router }, { token: i4.PryTitleService }, { token: i3.ActivatedRoute }, { token: i0.NgZone }, { token: PRY_ACCESS_TOKEN, optional: true }, { token: i4.PryDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
172
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryPresentationComponent, selector: "pry-presentation", inputs: { editionStartUrl: "editionStartUrl", consultStartUrl: "consultStartUrl", meAsOwner: "meAsOwner", themePrefix: "themePrefix", mode: "mode", hideToolbox: "hideToolbox", showTheme: "showTheme", listOfManifests: "listOfManifests", search: "search" }, viewQueries: [{ propertyName: "templateModalActions", first: true, predicate: ["modalActions"], descendants: true, read: TemplateRef }, { propertyName: "openModal", first: true, predicate: ["openModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\">\n @switch (selectedMode) {\n @default {\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <div class=\"no-data-dashboard\">\n @if ((filteredPresentations$ | async)?.length === 0 || !(filteredPresentations$ | async)) {\n {{ '@pry.presentation.noData' | i18n }}\n }\n </div>\n <ul class=\"o-presentation\">\n @for (presentation of filteredPresentations$ | async; track presentation.id; let index = $index) {\n <li class=\"o-presentation__item\">\n <div class=\"o-presentation__item__header\">\n @if (isPrivate(presentation)) {\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n }\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img alt=\"\" class=\"is-full-width\" [src]=\"presentation.image | getSecuredImage | async\" />\n </div>\n </div>\n @if (this.canModify$(presentation) | async) {\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.presentation.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n }\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <p class=\"a-h3\">{{ presentation.name }}</p>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <div class=\"u-display-flex -justify-space-between -align-center\">\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n @if (presentation.theme !== undefined) {\n <span class=\"a-chip -theme -md u-self-end\" [class.-u-hidden]=\"!showTheme\">\n {{ (themePrefix ?? '') + presentation.theme | i18n: { warn: false } }}\n </span>\n }\n </div>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n }\n @case (ViewMode.CREATION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n @case (ViewMode.EDITION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n }\n</div>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <ul class=\"m-context-menu__list\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog presentation options\">\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editContent(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.editionContent' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i4.EllipsisDirective, selector: "[ellipsis]", inputs: ["textElementSelector"] }, { kind: "directive", type: i5.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: 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.PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: ["selectedPresentation", "edition", "themePrefix", "editionStartUrl", "mode"], outputs: ["goBack"] }, { kind: "component", type: i7.PryPresentationCssComponent, selector: "pry-presentation-css" }, { kind: "pipe", type: i4.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.SinceDatePipe, name: "sinceDate" }] }); }
|
|
173
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryPresentationComponent, selector: "pry-presentation", inputs: { editionStartUrl: "editionStartUrl", consultStartUrl: "consultStartUrl", meAsOwner: "meAsOwner", themePrefix: "themePrefix", mode: "mode", hideToolbox: "hideToolbox", showTheme: "showTheme", listOfManifests: "listOfManifests", officialPresentationNames: "officialPresentationNames", search: "search" }, viewQueries: [{ propertyName: "templateModalActions", first: true, predicate: ["modalActions"], descendants: true, read: TemplateRef }, { propertyName: "openModal", first: true, predicate: ["openModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\">\n @switch (selectedMode) {\n @default {\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <div class=\"no-data-dashboard\">\n @if ((filteredPresentations$ | async)?.length === 0 || !(filteredPresentations$ | async)) {\n {{ '@pry.presentation.noData' | i18n }}\n }\n </div>\n <ul class=\"o-presentation\">\n @for (presentation of filteredPresentations$ | async; track presentation.id; let index = $index) {\n <li class=\"o-presentation__item\">\n <div class=\"o-presentation__item__header\">\n @if (isPrivate(presentation)) {\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n }\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img alt=\"\" class=\"is-full-width\" [src]=\"presentation.image | getSecuredImage | async\" />\n </div>\n </div>\n @if (this.canModify$(presentation) | async) {\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.presentation.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n }\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <p class=\"a-h3\">{{ presentation.name }}</p>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <div class=\"u-display-flex -justify-space-between -align-center\">\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n @if (presentation.theme !== undefined) {\n <span class=\"a-chip -theme -md u-self-end\" [class.-u-hidden]=\"!showTheme\">\n {{ (themePrefix ?? '') + presentation.theme | i18n: { warn: false } }}\n </span>\n }\n </div>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n }\n @case (ViewMode.CREATION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n [officialPresentationNames] = \"officialPresentationNames\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n @case (ViewMode.EDITION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n [officialPresentationNames] = \"officialPresentationNames\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n }\n</div>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <ul class=\"m-context-menu__list\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog presentation options\">\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editContent(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.editionContent' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i4.EllipsisDirective, selector: "[ellipsis]", inputs: ["textElementSelector"] }, { kind: "directive", type: i5.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: 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.PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: ["selectedPresentation", "edition", "themePrefix", "editionStartUrl", "mode", "officialPresentationNames"], outputs: ["goBack"] }, { kind: "component", type: i7.PryPresentationCssComponent, selector: "pry-presentation-css" }, { kind: "pipe", type: i4.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.SinceDatePipe, name: "sinceDate" }] }); }
|
|
173
174
|
}
|
|
174
175
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryPresentationComponent, decorators: [{
|
|
175
176
|
type: Component,
|
|
176
|
-
args: [{ selector: 'pry-presentation', template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\">\n @switch (selectedMode) {\n @default {\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <div class=\"no-data-dashboard\">\n @if ((filteredPresentations$ | async)?.length === 0 || !(filteredPresentations$ | async)) {\n {{ '@pry.presentation.noData' | i18n }}\n }\n </div>\n <ul class=\"o-presentation\">\n @for (presentation of filteredPresentations$ | async; track presentation.id; let index = $index) {\n <li class=\"o-presentation__item\">\n <div class=\"o-presentation__item__header\">\n @if (isPrivate(presentation)) {\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n }\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img alt=\"\" class=\"is-full-width\" [src]=\"presentation.image | getSecuredImage | async\" />\n </div>\n </div>\n @if (this.canModify$(presentation) | async) {\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.presentation.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n }\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <p class=\"a-h3\">{{ presentation.name }}</p>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <div class=\"u-display-flex -justify-space-between -align-center\">\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n @if (presentation.theme !== undefined) {\n <span class=\"a-chip -theme -md u-self-end\" [class.-u-hidden]=\"!showTheme\">\n {{ (themePrefix ?? '') + presentation.theme | i18n: { warn: false } }}\n </span>\n }\n </div>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n }\n @case (ViewMode.CREATION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n @case (ViewMode.EDITION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n }\n</div>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <ul class=\"m-context-menu__list\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog presentation options\">\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editContent(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.editionContent' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n }\n </div>\n</ng-template>\n" }]
|
|
177
|
+
args: [{ selector: 'pry-presentation', template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\">\n @switch (selectedMode) {\n @default {\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <div class=\"no-data-dashboard\">\n @if ((filteredPresentations$ | async)?.length === 0 || !(filteredPresentations$ | async)) {\n {{ '@pry.presentation.noData' | i18n }}\n }\n </div>\n <ul class=\"o-presentation\">\n @for (presentation of filteredPresentations$ | async; track presentation.id; let index = $index) {\n <li class=\"o-presentation__item\">\n <div class=\"o-presentation__item__header\">\n @if (isPrivate(presentation)) {\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n }\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img alt=\"\" class=\"is-full-width\" [src]=\"presentation.image | getSecuredImage | async\" />\n </div>\n </div>\n @if (this.canModify$(presentation) | async) {\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.presentation.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n }\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <p class=\"a-h3\">{{ presentation.name }}</p>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <div class=\"u-display-flex -justify-space-between -align-center\">\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n @if (presentation.theme !== undefined) {\n <span class=\"a-chip -theme -md u-self-end\" [class.-u-hidden]=\"!showTheme\">\n {{ (themePrefix ?? '') + presentation.theme | i18n: { warn: false } }}\n </span>\n }\n </div>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n }\n @case (ViewMode.CREATION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n [officialPresentationNames] = \"officialPresentationNames\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n @case (ViewMode.EDITION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n [officialPresentationNames] = \"officialPresentationNames\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n }\n</div>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <ul class=\"m-context-menu__list\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog presentation options\">\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editContent(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.editionContent' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n }\n </div>\n</ng-template>\n" }]
|
|
177
178
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i3.Router }, { type: i4.PryTitleService }, { type: i3.ActivatedRoute }, { type: i0.NgZone }, { type: i4.PryBaseAccess, decorators: [{
|
|
178
179
|
type: Optional
|
|
179
180
|
}, {
|
|
@@ -201,7 +202,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
201
202
|
type: Input
|
|
202
203
|
}], listOfManifests: [{
|
|
203
204
|
type: Input
|
|
205
|
+
}], officialPresentationNames: [{
|
|
206
|
+
type: Input
|
|
204
207
|
}], search: [{
|
|
205
208
|
type: Input
|
|
206
209
|
}] } });
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3ByZXNlbnRhdGlvbi9jb21wb25lbnRzL3ByZXNlbnRhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9wcmVzZW50YXRpb24vY29tcG9uZW50cy9wcmVzZW50YXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsU0FBUyxFQUVULE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBRWxCLGdCQUFnQixFQUNoQixrQ0FBa0MsRUFJbEMsd0JBQXdCLEVBQ3hCLFFBQVEsRUFDVCxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFVMUIsTUFBTSxPQUFPLHdCQUF5QixTQUFRLHdCQUF3QjtJQXNCcEUsSUFBYSxlQUFlLENBQUMsU0FBdUM7UUFDbEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxD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LE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsVUFBVSxDQUFDLFlBQWlDO1FBQzFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDcEYsQ0FBQzs4R0EzTVUsd0JBQXdCLHVNQXVDYixnQkFBZ0I7a0dBdkMzQix3QkFBd0IseVpBU0EsV0FBVyw2SUNoRGhELHdtUUFzTEE7OzJGRC9JYSx3QkFBd0I7a0JBSnBDLFNBQVM7K0JBQ0Usa0JBQWtCOzswQkEwQ3pCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZ0JBQWdCO3dFQTlCWSxvQkFBb0I7c0JBQXJFLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDeEIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUdiLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHTyxlQUFlO3NCQUEzQixLQUFLO2dCQUtPLE1BQU07c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPcHRpb25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBEYXNoYm9hcmRBY3Rpb25zLFxuICBEYXNoYm9hcmRHcmlkTGF5b3V0LFxuICBEYXNoYm9hcmRTZWxlY3RvcnMsXG4gIE1hbmlmZXN0RGVzY3JpcHRpb24sXG4gIFBSWV9BQ0NFU1NfVE9LRU4sXG4gIFByeUFjY2Vzc1JpZ2h0c1NoYXJlTW9kYWxDb21wb25lbnQsXG4gIFByeUJhc2VBY2Nlc3MsXG4gIFByeURpYWxvZ1NlcnZpY2UsXG4gIFByeVRpdGxlU2VydmljZSxcbiAgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlLFxuICBWaWV3TW9kZVxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIG9mLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHY0IH0gZnJvbSAndXVpZCc7XG5cbmludGVyZmFjZSBNYW5pZmVzdERlc2NyaXB0aW9uV2l0aFRoZW1lIGV4dGVuZHMgTWFuaWZlc3REZXNjcmlwdGlvbiB7XG4gIHRoZW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1wcmVzZW50YXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJlc2VudGF0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcnlQcmVzZW50YXRpb25Db21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUge1xuICBtYW5pZmVzdHMkOiBPYnNlcnZhYmxlPE1hbmlmZXN0RGVzY3JpcHRpb25XaXRoVGhlbWVbXT47XG4gIHNlYXJjaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgZmlsdGVyZWRQcmVzZW50YXRpb25zJDogT2JzZXJ2YWJsZTxNYW5pZmVzdERlc2NyaXB0aW9uV2l0aFRoZW1lW10+O1xuXG4gIHNlbGVjdGVkUHJlc2VudGF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFuaWZlc3REZXNjcmlwdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgc2VsZWN0ZWRNb2RlOiBWaWV3TW9kZSA9IFZpZXdNb2RlLkNBVEFMT0c7XG4gIFZpZXdNb2RlID0gVmlld01vZGU7XG5cbiAgQFZpZXdDaGlsZCgnbW9kYWxBY3Rpb25zJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0ZW1wbGF0ZU1vZGFsQWN0aW9ucyE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ29wZW5Nb2RhbCcpIG9wZW5Nb2RhbCE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBvdmVybGF5UmVmPzogT3ZlcmxheVJlZjtcblxuICBASW5wdXQoKSBlZGl0aW9uU3RhcnRVcmw6IHN0cmluZyA9ICcvJztcbiAgQElucHV0KCkgY29uc3VsdFN0YXJ0VXJsOiBzdHJpbmcgPSAnLyc7XG4gIEBJbnB1dCgpIG1lQXNPd25lcj86IHN0cmluZztcbiAgQElucHV0KCkgdGhlbWVQcmVmaXg6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBtb2RlOiAndGhlbWUnIHwgJ21ldGEnID0gJ21ldGEnO1xuICBASW5wdXQoKSBoaWRlVG9vbGJveCA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93VGhlbWUgPSB0cnVlO1xuXG4gIGxpc3RPZk1hbmlmZXN0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hbmlmZXN0RGVzY3JpcHRpb25bXSB8IG51bGw+KG51bGwpO1xuICBASW5wdXQoKSBzZXQgbGlzdE9mTWFuaWZlc3RzKG1hbmlmZXN0czogTWFuaWZlc3REZXNjcmlwdGlvbltdIHwgbnVsbCkge1xuICAgIHRoaXMubGlzdE9mTWFuaWZlc3RzJC5uZXh0KEFycmF5LmlzQXJyYXkobWFuaWZlc3RzKSA/IG1hbmlmZXN0cyA6IG51bGwpO1xuICB9XG5cbiAgaW5wdXRTZWFyY2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gIEBJbnB1dCgpIHNldCBzZWFyY2gocXVlcnk6IHN0cmluZykge1xuICAgIHRoaXMuaW5wdXRTZWFyY2gkLm5leHQocXVlcnkpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHN0b3JlOiBTdG9yZTxhbnk+LFxuICAgIHByb3RlY3RlZCBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByb3RlY3RlZCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgdGl0bGVTZXJ2aWNlOiBQcnlUaXRsZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcm90ZWN0ZWQgbmdab25lOiBOZ1pvbmUsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChQUllfQUNDRVNTX1RPS0VOKSBwcml2YXRlIGFjY2VzczogUHJ5QmFzZUFjY2VzcyxcbiAgICBwcml2YXRlIGRpYWxvZzogUHJ5RGlhbG9nU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICAgIGlmIChwYXJhbXNbJ2NyZWF0ZSddKSB7XG4gICAgICAgICAgdGhpcy5jcmVhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmZldGNoTWFuaWZlc3RzTGlzdCgpKTtcbiAgICB0aGlzLm1hbmlmZXN0cyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc3RvcmVcbiAgICAgICAgLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMubWFuaWZlc3RzTGlzdClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChtYW5pZmVzdExpc3QpID0+XG4gICAgICAgICAgICBbLi4ubWFuaWZlc3RMaXN0XS5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICBhLm1vZGlmaWNhdGlvbkRhdGUgPyBiLm1vZGlmaWNhdGlvbkRhdGUubG9jYWxlQ29tcGFyZShhLm1vZGlmaWNhdGlvbkRhdGUpIDogMVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgIHRoaXMubGlzdE9mTWFuaWZlc3RzJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtkeW5hbWljcywgc3RhdGljc10pID0+IHN0YXRpY3MgPz8gZHluYW1pY3MpLFxuICAgICAgbWFwKChtYW5pZmVzdHMpID0+XG4gICAgICAgIG1hbmlmZXN0cy5tYXAoXG4gICAgICAgICAgKG1hbmlmZXN0KSA9PlxuICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICAgICAgICAgIHRoZW1lOiBtYW5pZmVzdC5tZXRhZGF0YT8uZmluZCgobWV0YSkgPT4gbWV0YS5tZXRhZGF0YURlZi5uYW1lID09PSAnX3RoZW1lJyk/LnZhbHVlXG4gICAgICAgICAgICB9KSBhcyBNYW5pZmVzdERlc2NyaXB0aW9uV2l0aFRoZW1lXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5maWx0ZXJlZFByZXNlbnRhdGlvbnMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLm1hbmlmZXN0cyQsXG4gICAgICB0aGlzLnNlYXJjaCQsXG4gICAgICB0aGlzLmlucHV0U2VhcmNoJC5waXBlKHN0YXJ0V2l0aCgnJykpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW3ByZXNlbnRhdGlvbnMsIHNlYXJjaCwgaW5wdXRTZWFyY2hdKSA9PlxuICAgICAgICBwcmVzZW50YXRpb25zLmZpbHRlcigocHJlc2VudGF0aW9ucykgPT4ge1xuICAgICAgICAgIGNvbnN0IFtuYW1lLCBkZXNjcmlwdGlvbl0gPSBbcHJlc2VudGF0aW9ucy5uYW1lLnRvTG93ZXJDYXNlKCksIHByZXNlbnRhdGlvbnMuZGVzY3JpcHRpb24/LnRvTG93ZXJDYXNlKCldO1xuICAgICAgICAgIGNvbnN0IFtzZWFyY2hRdWVyeSwgaW5wdXRTZWFyY2hRdWVyeV0gPSBbc2VhcmNoPy50b0xvd2VyQ2FzZSgpLCBpbnB1dFNlYXJjaD8udG9Mb3dlckNhc2UoKV07XG4gICAgICAgICAgcmV0dXJuICEhc2VhcmNoUXVlcnkgfHwgISFpbnB1dFNlYXJjaFF1ZXJ5XG4gICAgICAgICAgICA/ICghIXNlYXJjaFF1ZXJ5ICYmIChuYW1lLmluY2x1ZGVzKHNlYXJjaFF1ZXJ5KSB8fCBkZXNjcmlwdGlvbj8uaW5jbHVkZXMoc2VhcmNoUXVlcnkpKSkgfHxcbiAgICAgICAgICAgICAgICAoISFpbnB1dFNlYXJjaFF1ZXJ5ICYmIChuYW1lLmluY2x1ZGVzKGlucHV0U2VhcmNoUXVlcnkpIHx8IGRlc2NyaXB0aW9uPy5pbmNsdWRlcyhpbnB1dFNlYXJjaFF1ZXJ5KSkpXG4gICAgICAgICAgICA6IHRydWU7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnByZXNlbnRhdGlvbikuc3Vic2NyaWJlKChwcmVzZW50YXRpb24pID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1vZGUgPSBwcmVzZW50YXRpb24/LnZpZXdNb2RlID8/IHRoaXMuVmlld01vZGUuQ0FUQUxPRztcbiAgICAgICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChwcmVzZW50YXRpb24uY3VycmVudCk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy50aXRsZVNlcnZpY2UuY2hhbmdlVGl0bGUoJ0BwcnkucHJlc2VudGF0aW9uLnRpdGxlJyk7XG4gIH1cblxuICBjbG9zZVJlc3RpdHV0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkTW9kZSA9IFZpZXdNb2RlLkNBVEFMT0c7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbih7IHByZXNlbnRhdGlvbjogdW5kZWZpbmVkLCB2aWV3TW9kZTogVmlld01vZGUuQ0FUQUxPRyB9KSk7XG4gIH1cblxuICBmZXRjaChwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24pIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMubG9hZFByZXNlbnRhdGlvbih7IHByZXNlbnRhdGlvbiwgdmlld01vZGU6IFZpZXdNb2RlLkNPTlNVTFQgfSkpO1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLnJvdXRlcj8ubmF2aWdhdGVCeVVybCh0aGlzLmNvbnN1bHRTdGFydFVybCk7XG4gICAgfSk7XG4gIH1cblxuICBjcmVhdGlvbigpIHtcbiAgICB0aGlzLnNlbGVjdGVkTW9kZSA9IFZpZXdNb2RlLkNSRUFUSU9OO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCh7IG1hbmlmZXN0OiB7IHdpbmRvd3M6IFtdIH0sIHNlbGVjdGVkSWRzOiBbXSB9KSk7XG4gICAgY29uc3QgbmV3UHJlc2VudGF0aW9uID0ge1xuICAgICAgcHJlc2VudGF0aW9uOiB7XG4gICAgICAgIGlkOiB2NCgpLFxuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgYWNjZXNzUmlnaHRzQnlHcm91cDoge30gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9LFxuICAgICAgICBvd25lcjogdHJ1ZVxuICAgICAgfSBhcyBNYW5pZmVzdERlc2NyaXB0aW9uLFxuICAgICAgdmlld01vZGU6IFZpZXdNb2RlLkNSRUFUSU9OXG4gICAgfTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2VsZWN0UHJlc2VudGF0aW9uKG5ld1ByZXNlbnRhdGlvbikpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZXRHcmlkTGF5b3V0KHsgbGF5b3V0OiBEYXNoYm9hcmRHcmlkTGF5b3V0LkZVTEwgfSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEaXNwbGF5T3B0aW9ucyh7IG1vZGU6IFZpZXdNb2RlLkNSRUFUSU9OIH0pKTtcbiAgfVxuXG4gIGVkaXQocHJlc2VudGF0aW9uOiBNYW5pZmVzdERlc2NyaXB0aW9uKSB7XG4gICAgdGhpcy5zZWxlY3RlZE1vZGUgPSBWaWV3TW9kZS5FRElUSU9OO1xuICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQocHJlc2VudGF0aW9uKTtcbiAgICB0aGlzLnRpdGxlU2VydmljZS5jaGFuZ2VUaXRsZShwcmVzZW50YXRpb24ubmFtZSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbih7IHByZXNlbnRhdGlvbiwgdmlld01vZGU6IFZpZXdNb2RlLkVESVRJT04gfSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5mZXRjaFN0YXRpY01hbmlmZXN0KHsgaWQ6IHByZXNlbnRhdGlvbi5pZCB9KSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZURpc3BsYXlPcHRpb25zKHsgbW9kZTogVmlld01vZGUuRURJVElPTiB9KSk7XG4gICAgdGhpcy5vdmVybGF5UmVmPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5vdmVybGF5UmVmID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZGVsZXRlKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuY29uZmlybU1hbmlmZXN0RGVsZXRpb24oeyBpZCB9KSk7XG4gICAgdGhpcy50b2dnbGVNb2RhbEFjdGlvbnMoKTtcbiAgfVxuXG4gIHRvZ2dsZU1vZGFsQWN0aW9ucyhwcmVzZW50YXRpb24/OiBNYW5pZmVzdERlc2NyaXB0aW9uIHwgbnVsbCwgbW9yZUJ1dHRvbj86IEhUTUxCdXR0b25FbGVtZW50KSB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYgJiYgcHJlc2VudGF0aW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbik7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2VsZWN0UHJlc2VudGF0aW9uKHsgcHJlc2VudGF0aW9uLCB2aWV3TW9kZTogVmlld01vZGUuQ0FUQUxPRyB9KSk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMubG9hZE1hbmlmZXN0KHsgaWQ6IHByZXNlbnRhdGlvbi5pZCB9KSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKFxuICAgICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgICAgcGFuZWxDbGFzczogWydtLWNvbnRleHQtbWVudS13cmFwcGVyJ10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMudG9nZ2xlTW9kYWxBY3Rpb25zKHByZXNlbnRhdGlvbikpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy50ZW1wbGF0ZU1vZGFsQWN0aW9ucywgdGhpcy52aWV3Q29udGFpbmVyUmVmKSk7XG4gICAgICBjb25zdCBjb250ZXh0TWVudSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rpdi5tLWNvbnRleHQtbWVudScpIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgaWYgKCEhY29udGV4dE1lbnUgJiYgbW9yZUJ1dHRvbikge1xuICAgICAgICBjb25zdCByZWN0ID0gbW9yZUJ1dHRvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29udGV4dE1lbnUuc3R5bGUubWluV2lkdGggPSAnMTg1cHgnO1xuICAgICAgICBjb250ZXh0TWVudS5zdHlsZS5sZWZ0ID0gKHJlY3Q/LmxlZnQgPz8gMCkgLSAoY29udGV4dE1lbnU/LmNsaWVudFdpZHRoID8/IDApICsgMjMgKyAncHgnO1xuICAgICAgICBjb250ZXh0TWVudS5zdHlsZS50b3AgPSAocmVjdD8udG9wID8/IDApICsgMzAgKyAncHgnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVNb2RhbChwcmVzZW50YXRpb24/OiBNYW5pZmVzdERlc2NyaXB0aW9uIHwgbnVsbCkge1xuICAgIGlmIChwcmVzZW50YXRpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQocHJlc2VudGF0aW9uKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5DQVRBTE9HIH0pKTtcbiAgICAgIHRoaXMudG9nZ2xlTW9kYWxBY3Rpb25zKCk7XG4gICAgICB0aGlzLmRpYWxvZy5vcGVuKFByeUFjY2Vzc1JpZ2h0c1NoYXJlTW9kYWxDb21wb25lbnQsIHtcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgIHBhbmVsQ2xhc3M6IFsnby1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCcsXG4gICAgICAgIGRhdGE6IHsgbWFuaWZlc3Q6IHByZXNlbnRhdGlvbiB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBlZGl0Q29udGVudChzZWxlY3RlZFByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbikge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBEYXNoYm9hcmRBY3Rpb25zLmxvYWRQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb246IHNlbGVjdGVkUHJlc2VudGF0aW9uLCB2aWV3TW9kZTogVmlld01vZGUuRURJVElPTiB9KVxuICAgICk7XG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMucm91dGVyPy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY29uc3VsdFN0YXJ0VXJsKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlzUHJpdmF0ZShwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24pIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMocHJlc2VudGF0aW9uLmFjY2Vzc1JpZ2h0c0J5R3JvdXApLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIGNhbk1vZGlmeSQocHJlc2VudGF0aW9uOiBNYW5pZmVzdERlc2NyaXB0aW9uKSB7XG4gICAgcmV0dXJuICF0aGlzLmFjY2VzcyA/IG9mKGZhbHNlKSA6IHRoaXMuYWNjZXNzLmNhbk1vZGlmeVByZXNlbnRhdGlvbihwcmVzZW50YXRpb24pO1xuICB9XG59XG4iLCI8cHJ5LXByZXNlbnRhdGlvbi1jc3M+PC9wcnktcHJlc2VudGF0aW9uLWNzcz5cbjxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dFwiPlxuICBAc3dpdGNoIChzZWxlY3RlZE1vZGUpIHtcbiAgICBAZGVmYXVsdCB7XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX3Rvb2xib3hcIiBbY2xhc3MuLXUtaGlkZGVuXT1cImhpZGVUb29sYm94XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiY3JlYXRpb24oKVwiXG4gICAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnY3JlYXRlJyB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiYWRkXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uY3JlYXRlJyB8IGkxOG4gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0X190b29sYm94X19zZWFyY2hcIj5cbiAgICAgICAgICAgIDxsYWJlbCBpZD1cImNhdGFsb2ctc2VhcmNoLWxhYmVsXCIgZm9yPVwiY2F0YWxvZy1zZWFyY2hcIiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LnRvb2xib3guY2F0YWxvZy5maWx0ZXIubmFtZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBpZD1cImNhdGFsb2ctc2VhcmNoXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQHByeS5wcmVzZW50YXRpb24uc2VhcmNoJyB8IGkxOG5cIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJzZWFyY2gkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0aGlzLnNlYXJjaCQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cHJ5LWljb24gY2xhc3M9XCJzZWFyY2gtaWNvblwiIGljb25Tdmc9XCJzZWFyY2hcIiBbd2lkdGhdPVwiMTdcIiBbaGVpZ2h0XT1cIjE3XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fY29udGVudFwiPlxuICAgICAgICA8aDEgY2xhc3M9XCJhLWgxXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLnRpdGxlJyB8IGkxOG4gfX08L2gxPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb24td3JhcHBlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1kYXRhLWRhc2hib2FyZFwiPlxuICAgICAgICAgICAgQGlmICgoZmlsdGVyZWRQcmVzZW50YXRpb25zJCB8IGFzeW5jKT8ubGVuZ3RoID09PSAwIHx8ICEoZmlsdGVyZWRQcmVzZW50YXRpb25zJCB8IGFzeW5jKSkge1xuICAgICAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24ubm9EYXRhJyB8IGkxOG4gfX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJvLXByZXNlbnRhdGlvblwiPlxuICAgICAgICAgICAgQGZvciAocHJlc2VudGF0aW9uIG9mIGZpbHRlcmVkUHJlc2VudGF0aW9ucyQgfCBhc3luYzsgdHJhY2sgcHJlc2VudGF0aW9uLmlkOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgQGlmIChpc1ByaXZhdGUocHJlc2VudGF0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgICAgICAgICBpY29uU3ZnPVwicHJpdmF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpcy1wcml2YXRlIGEtdG9vbHRpcCAtdG9vbHRpcC1uby13cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0BwcnkucHJlc2VudGF0aW9uLnByaXZhdGUnIHwgaTE4blwiXG4gICAgICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCIxN1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3dpZHRoXT1cIjE3XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS10b29sdGlwIC10b29sdGlwLW5vLXdyYXBcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmV0Y2gocHJlc2VudGF0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5wcmVzZW50YXRpb24udmlldycgfCBpMThuXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX19pbWFnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgYWx0PVwiXCIgY2xhc3M9XCJpcy1mdWxsLXdpZHRoXCIgW3NyY109XCJwcmVzZW50YXRpb24uaW1hZ2UgfCBnZXRTZWN1cmVkSW1hZ2UgfCBhc3luY1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICBAaWYgKHRoaXMuY2FuTW9kaWZ5JChwcmVzZW50YXRpb24pIHwgYXN5bmMpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vcmUtYnV0dG9uXCIgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnc2hhcmUnIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLW1vcmUgYS10b29sdGlwIC10b29sdGlwLW5vLXdyYXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidtb3JlLWJ1dHRvbi0nICsgaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnByZXNlbnRhdGlvbi5tb3JlJyB8IGkxOG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlTW9kYWxBY3Rpb25zKHByZXNlbnRhdGlvbiwgYnV0dG9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIFtoZWlnaHRdPVwiMjVcIiBbd2lkdGhdPVwiMjVcIiBpY29uU3ZnPVwibW9yZV9ob3JpelwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9fdHh0XCIgKGNsaWNrKT1cImZldGNoKHByZXNlbnRhdGlvbilcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9fdGl0bGUtY29udGFpbmVyXCIgZWxsaXBzaXMgdGV4dEVsZW1lbnRTZWxlY3Rvcj1cIi5hLWgzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYS1oM1wiPnt7IHByZXNlbnRhdGlvbi5uYW1lIH19PC9wPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX2Rlc2NyaXB0aW9uLWNvbnRhaW5lclwiIGVsbGlwc2lzIHRleHRFbGVtZW50U2VsZWN0b3I9XCIuYS1wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9fZGVzY3JpcHRpb24gYS1wXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgcHJlc2VudGF0aW9uLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidS1kaXNwbGF5LWZsZXggLWp1c3RpZnktc3BhY2UtYmV0d2VlbiAtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYS1wIC1kYXRlXCI+e3sgcHJlc2VudGF0aW9uLm1vZGlmaWNhdGlvbkRhdGUgfCBzaW5jZURhdGUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAocHJlc2VudGF0aW9uLnRoZW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImEtY2hpcCAtdGhlbWUgLW1kIHUtc2VsZi1lbmRcIiBbY2xhc3MuLXUtaGlkZGVuXT1cIiFzaG93VGhlbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICh0aGVtZVByZWZpeCA/PyAnJykgKyBwcmVzZW50YXRpb24udGhlbWUgfCBpMThuOiB7IHdhcm46IGZhbHNlIH0gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX2Zvb3RlciBhLXRvb2x0aXAgLXRvb2x0aXAtbm8td3JhcFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmV0Y2gocHJlc2VudGF0aW9uKVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0BwcnkucHJlc2VudGF0aW9uLnZpZXcnIHwgaTE4blwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdAcHJ5LnByZXNlbnRhdGlvbi5jb25zdWx0JyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIFt3aWR0aF09XCIyMFwiIFtoZWlnaHRdPVwiMjBcIiBpY29uU3ZnPVwiYXJyb3dfcmlnaHRcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGNhc2UgKFZpZXdNb2RlLkNSRUFUSU9OKSB7XG4gICAgICA8cHJ5LWFkZC1lZGl0LXByZXNlbnRhdGlvblxuICAgICAgICBbc2VsZWN0ZWRQcmVzZW50YXRpb25dPVwiKHNlbGVjdGVkUHJlc2VudGF0aW9uJCB8IGFzeW5jKSA/PyB1bmRlZmluZWRcIlxuICAgICAgICAoZ29CYWNrKT1cImNsb3NlUmVzdGl0dXRpb24oKVwiXG4gICAgICAgIFtlZGl0aW9uU3RhcnRVcmxdPVwiZWRpdGlvblN0YXJ0VXJsXCJcbiAgICAgICAgW2VkaXRpb25dPVwiZmFsc2VcIlxuICAgICAgICBbbW9kZV09XCJtb2RlXCJcbiAgICAgICAgW3RoZW1lUHJlZml4XT1cInRoZW1lUHJlZml4XCJcbiAgICAgID48L3ByeS1hZGQtZWRpdC1wcmVzZW50YXRpb24+XG4gICAgfVxuICAgIEBjYXNlIChWaWV3TW9kZS5FRElUSU9OKSB7XG4gICAgICA8cHJ5LWFkZC1lZGl0LXByZXNlbnRhdGlvblxuICAgICAgICBbc2VsZWN0ZWRQcmVzZW50YXRpb25dPVwiKHNlbGVjdGVkUHJlc2VudGF0aW9uJCB8IGFzeW5jKSA/PyB1bmRlZmluZWRcIlxuICAgICAgICAoZ29CYWNrKT1cImNsb3NlUmVzdGl0dXRpb24oKVwiXG4gICAgICAgIFtlZGl0aW9uU3RhcnRVcmxdPVwiZWRpdGlvblN0YXJ0VXJsXCJcbiAgICAgICAgW2VkaXRpb25dPVwidHJ1ZVwiXG4gICAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgICAgICBbdGhlbWVQcmVmaXhdPVwidGhlbWVQcmVmaXhcIlxuICAgICAgPjwvcHJ5LWFkZC1lZGl0LXByZXNlbnRhdGlvbj5cbiAgICB9XG4gIH1cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNtb2RhbEFjdGlvbnM+XG4gIDxkaXYgY2xhc3M9XCJtLWNvbnRleHQtbWVudVwiPlxuICAgIEBpZiAoc2VsZWN0ZWRQcmVzZW50YXRpb24kIHwgYXN5bmM7IGFzIHNlbGVjdGVkUHJlc2VudGF0aW9uKSB7XG4gICAgICA8dWwgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdFwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLW1vZGFsPVwidHJ1ZVwiIGFyaWEtbGFiZWxsZWRieT1cImRpYWxvZyBwcmVzZW50YXRpb24gb3B0aW9uc1wiPlxuICAgICAgICA8bGkgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdF9faXRlbVwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gLWxpbmstbGlrZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZWRpdChzZWxlY3RlZFByZXNlbnRhdGlvbilcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEodGhpcy5jYW5Nb2RpZnkkKHNlbGVjdGVkUHJlc2VudGF0aW9uKSB8IGFzeW5jKVwiXG4gICAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnbWFuaWZlc3QnLCBhY3Rpb246ICdlZGl0JyB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uZWRpdGlvbicgfCBpMThuIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0X19pdGVtXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biAtbGluay1saWtlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJlZGl0Q29udGVudChzZWxlY3RlZFByZXNlbnRhdGlvbilcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEodGhpcy5jYW5Nb2RpZnkkKHNlbGVjdGVkUHJlc2VudGF0aW9uKSB8IGFzeW5jKVwiXG4gICAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnbWFuaWZlc3QnLCBhY3Rpb246ICdlZGl0JyB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uZWRpdGlvbkNvbnRlbnQnIHwgaTE4biB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdF9faXRlbVwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVNb2RhbChzZWxlY3RlZFByZXNlbnRhdGlvbilcIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biAtbGluay1saWtlXCJcbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEodGhpcy5jYW5Nb2RpZnkkKHNlbGVjdGVkUHJlc2VudGF0aW9uKSB8IGFzeW5jKVwiXG4gICAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnbWFuaWZlc3QnLCBhY3Rpb246ICdzaGFyZScgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLnNoYXJlJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RfX2l0ZW1cIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImEtYnRuIC1saW5rLWxpa2VcIlxuICAgICAgICAgICAgI29wZW5Nb2RhbFxuICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZShzZWxlY3RlZFByZXNlbnRhdGlvbi5pZClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEodGhpcy5jYW5Nb2RpZnkkKHNlbGVjdGVkUHJlc2VudGF0aW9uKSB8IGFzeW5jKVwiXG4gICAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnbWFuaWZlc3QnLCBhY3Rpb246ICdkZWxldGUnIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdAcHJ5LnByZXNlbnRhdGlvbi5kZWxldGUnIHwgaTE4biB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3ByZXNlbnRhdGlvbi9jb21wb25lbnRzL3ByZXNlbnRhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9wcmVzZW50YXRpb24vY29tcG9uZW50cy9wcmVzZW50YXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsU0FBUyxFQUVULE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBRWxCLGdCQUFnQixFQUNoQixrQ0FBa0MsRUFJbEMsd0JBQXdCLEVBQ3hCLFFBQVEsRUFDVCxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFVMUIsTUFBTSxPQUFPLHdCQUF5QixTQUFRLHdCQUF3QjtJQXNCcEUsSUFBYSxlQUFlLENBQUMsU0FBdUM7UUFDbEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxD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RCxTQUFTLENBQUMsWUFBaUM7UUFDekMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELFVBQVUsQ0FBQyxZQUFpQztRQUMxQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3BGLENBQUM7OEdBN01VLHdCQUF3Qix1TUF5Q2IsZ0JBQWdCO2tHQXpDM0Isd0JBQXdCLGlkQVNBLFdBQVcsNklDaERoRCxrdlFBd0xBOzsyRkRqSmEsd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNFLGtCQUFrQjs7MEJBNEN6QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQjt3RUFoQ1ksb0JBQW9CO3NCQUFyRSxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ3hCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFHYixlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR08sZUFBZTtzQkFBM0IsS0FBSztnQkFJRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBR08sTUFBTTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9wdGlvbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIERhc2hib2FyZEFjdGlvbnMsXG4gIERhc2hib2FyZEdyaWRMYXlvdXQsXG4gIERhc2hib2FyZFNlbGVjdG9ycyxcbiAgTWFuaWZlc3REZXNjcmlwdGlvbixcbiAgUFJZX0FDQ0VTU19UT0tFTixcbiAgUHJ5QWNjZXNzUmlnaHRzU2hhcmVNb2RhbENvbXBvbmVudCxcbiAgUHJ5QmFzZUFjY2VzcyxcbiAgUHJ5RGlhbG9nU2VydmljZSxcbiAgUHJ5VGl0bGVTZXJ2aWNlLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUsXG4gIFZpZXdNb2RlXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgfSBmcm9tICd1dWlkJztcblxuaW50ZXJmYWNlIE1hbmlmZXN0RGVzY3JpcHRpb25XaXRoVGhlbWUgZXh0ZW5kcyBNYW5pZmVzdERlc2NyaXB0aW9uIHtcbiAgdGhlbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXByZXNlbnRhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmVzZW50YXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeVByZXNlbnRhdGlvbkNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB7XG4gIG1hbmlmZXN0cyQ6IE9ic2VydmFibGU8TWFuaWZlc3REZXNjcmlwdGlvbldpdGhUaGVtZVtdPjtcbiAgc2VhcmNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICBmaWx0ZXJlZFByZXNlbnRhdGlvbnMkOiBPYnNlcnZhYmxlPE1hbmlmZXN0RGVzY3JpcHRpb25XaXRoVGhlbWVbXT47XG5cbiAgc2VsZWN0ZWRQcmVzZW50YXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYW5pZmVzdERlc2NyaXB0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBzZWxlY3RlZE1vZGU6IFZpZXdNb2RlID0gVmlld01vZGUuQ0FUQUxPRztcbiAgVmlld01vZGUgPSBWaWV3TW9kZTtcblxuICBAVmlld0NoaWxkKCdtb2RhbEFjdGlvbnMnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRlbXBsYXRlTW9kYWxBY3Rpb25zITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnb3Blbk1vZGFsJykgb3Blbk1vZGFsITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIG92ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuXG4gIEBJbnB1dCgpIGVkaXRpb25TdGFydFVybDogc3RyaW5nID0gJy8nO1xuICBASW5wdXQoKSBjb25zdWx0U3RhcnRVcmw6IHN0cmluZyA9ICcvJztcbiAgQElucHV0KCkgbWVBc093bmVyPzogc3RyaW5nO1xuICBASW5wdXQoKSB0aGVtZVByZWZpeDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIG1vZGU6ICd0aGVtZScgfCAnbWV0YScgPSAnbWV0YSc7XG4gIEBJbnB1dCgpIGhpZGVUb29sYm94ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dUaGVtZSA9IHRydWU7XG5cbiAgbGlzdE9mTWFuaWZlc3RzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFuaWZlc3REZXNjcmlwdGlvbltdIHwgbnVsbD4obnVsbCk7XG4gIEBJbnB1dCgpIHNldCBsaXN0T2ZNYW5pZmVzdHMobWFuaWZlc3RzOiBNYW5pZmVzdERlc2NyaXB0aW9uW10gfCBudWxsKSB7XG4gICAgdGhpcy5saXN0T2ZNYW5pZmVzdHMkLm5leHQoQXJyYXkuaXNBcnJheShtYW5pZmVzdHMpID8gbWFuaWZlc3RzIDogbnVsbCk7XG4gIH1cblxuICBASW5wdXQoKSBvZmZpY2lhbFByZXNlbnRhdGlvbk5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGlucHV0U2VhcmNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICBASW5wdXQoKSBzZXQgc2VhcmNoKHF1ZXJ5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmlucHV0U2VhcmNoJC5uZXh0KHF1ZXJ5KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcm90ZWN0ZWQgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcm90ZWN0ZWQgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIHRpdGxlU2VydmljZTogUHJ5VGl0bGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJvdGVjdGVkIG5nWm9uZTogTmdab25lLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUFJZX0FDQ0VTU19UT0tFTikgcHJpdmF0ZSBhY2Nlc3M6IFByeUJhc2VBY2Nlc3MsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IFByeURpYWxvZ1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xuICAgICAgICBpZiAocGFyYW1zWydjcmVhdGUnXSkge1xuICAgICAgICAgIHRoaXMuY3JlYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1hbmlmZXN0c0xpc3QoKSk7XG4gICAgdGhpcy5tYW5pZmVzdHMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnN0b3JlXG4gICAgICAgIC5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLm1hbmlmZXN0c0xpc3QpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgobWFuaWZlc3RMaXN0KSA9PlxuICAgICAgICAgICAgWy4uLm1hbmlmZXN0TGlzdF0uc29ydCgoYSwgYikgPT5cbiAgICAgICAgICAgICAgYS5tb2RpZmljYXRpb25EYXRlID8gYi5tb2RpZmljYXRpb25EYXRlLmxvY2FsZUNvbXBhcmUoYS5tb2RpZmljYXRpb25EYXRlKSA6IDFcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICB0aGlzLmxpc3RPZk1hbmlmZXN0cyRcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbZHluYW1pY3MsIHN0YXRpY3NdKSA9PiBzdGF0aWNzID8/IGR5bmFtaWNzKSxcbiAgICAgIG1hcCgobWFuaWZlc3RzKSA9PlxuICAgICAgICBtYW5pZmVzdHMubWFwKFxuICAgICAgICAgIChtYW5pZmVzdCkgPT5cbiAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgIC4uLm1hbmlmZXN0LFxuICAgICAgICAgICAgICB0aGVtZTogbWFuaWZlc3QubWV0YWRhdGE/LmZpbmQoKG1ldGEpID0+IG1ldGEubWV0YWRhdGFEZWYubmFtZSA9PT0gJ190aGVtZScpPy52YWx1ZVxuICAgICAgICAgICAgfSkgYXMgTWFuaWZlc3REZXNjcmlwdGlvbldpdGhUaGVtZVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuZmlsdGVyZWRQcmVzZW50YXRpb25zJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5tYW5pZmVzdHMkLFxuICAgICAgdGhpcy5zZWFyY2gkLFxuICAgICAgdGhpcy5pbnB1dFNlYXJjaCQucGlwZShzdGFydFdpdGgoJycpKVxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtwcmVzZW50YXRpb25zLCBzZWFyY2gsIGlucHV0U2VhcmNoXSkgPT5cbiAgICAgICAgcHJlc2VudGF0aW9ucy5maWx0ZXIoKHByZXNlbnRhdGlvbnMpID0+IHtcbiAgICAgICAgICBjb25zdCBbbmFtZSwgZGVzY3JpcHRpb25dID0gW3ByZXNlbnRhdGlvbnMubmFtZS50b0xvd2VyQ2FzZSgpLCBwcmVzZW50YXRpb25zLmRlc2NyaXB0aW9uPy50b0xvd2VyQ2FzZSgpXTtcbiAgICAgICAgICBjb25zdCBbc2VhcmNoUXVlcnksIGlucHV0U2VhcmNoUXVlcnldID0gW3NlYXJjaD8udG9Mb3dlckNhc2UoKSwgaW5wdXRTZWFyY2g/LnRvTG93ZXJDYXNlKCldO1xuICAgICAgICAgIHJldHVybiAhIXNlYXJjaFF1ZXJ5IHx8ICEhaW5wdXRTZWFyY2hRdWVyeVxuICAgICAgICAgICAgPyAoISFzZWFyY2hRdWVyeSAmJiAobmFtZS5pbmNsdWRlcyhzZWFyY2hRdWVyeSkgfHwgZGVzY3JpcHRpb24/LmluY2x1ZGVzKHNlYXJjaFF1ZXJ5KSkpIHx8XG4gICAgICAgICAgICAgICAgKCEhaW5wdXRTZWFyY2hRdWVyeSAmJiAobmFtZS5pbmNsdWRlcyhpbnB1dFNlYXJjaFF1ZXJ5KSB8fCBkZXNjcmlwdGlvbj8uaW5jbHVkZXMoaW5wdXRTZWFyY2hRdWVyeSkpKVxuICAgICAgICAgICAgOiB0cnVlO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5wcmVzZW50YXRpb24pLnN1YnNjcmliZSgocHJlc2VudGF0aW9uKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gcHJlc2VudGF0aW9uPy52aWV3TW9kZSA/PyB0aGlzLlZpZXdNb2RlLkNBVEFMT0c7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQocHJlc2VudGF0aW9uLmN1cnJlbnQpO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMudGl0bGVTZXJ2aWNlLmNoYW5nZVRpdGxlKCdAcHJ5LnByZXNlbnRhdGlvbi50aXRsZScpO1xuICB9XG5cbiAgY2xvc2VSZXN0aXR1dGlvbigpIHtcbiAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZE1vZGUgPSBWaWV3TW9kZS5DQVRBTE9HO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb246IHVuZGVmaW5lZCwgdmlld01vZGU6IFZpZXdNb2RlLkNBVEFMT0cgfSkpO1xuICB9XG5cbiAgZmV0Y2gocHJlc2VudGF0aW9uOiBNYW5pZmVzdERlc2NyaXB0aW9uKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmxvYWRQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5DT05TVUxUIH0pKTtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5yb3V0ZXI/Lm5hdmlnYXRlQnlVcmwodGhpcy5jb25zdWx0U3RhcnRVcmwpO1xuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRpb24oKSB7XG4gICAgdGhpcy5zZWxlY3RlZE1vZGUgPSBWaWV3TW9kZS5DUkVBVElPTjtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3QoeyBtYW5pZmVzdDogeyB3aW5kb3dzOiBbXSB9LCBzZWxlY3RlZElkczogW10gfSkpO1xuICAgIGNvbnN0IG5ld1ByZXNlbnRhdGlvbiA9IHtcbiAgICAgIHByZXNlbnRhdGlvbjoge1xuICAgICAgICBpZDogdjQoKSxcbiAgICAgICAgbmFtZTogJycsXG4gICAgICAgIGFjY2Vzc1JpZ2h0c0J5R3JvdXA6IHt9IGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSxcbiAgICAgICAgb3duZXI6IHRydWVcbiAgICAgIH0gYXMgTWFuaWZlc3REZXNjcmlwdGlvbixcbiAgICAgIHZpZXdNb2RlOiBWaWV3TW9kZS5DUkVBVElPTlxuICAgIH07XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbihuZXdQcmVzZW50YXRpb24pKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2V0R3JpZExheW91dCh7IGxheW91dDogRGFzaGJvYXJkR3JpZExheW91dC5GVUxMIH0pKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudXBkYXRlRGlzcGxheU9wdGlvbnMoeyBtb2RlOiBWaWV3TW9kZS5DUkVBVElPTiB9KSk7XG4gIH1cblxuICBlZGl0KHByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbikge1xuICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gVmlld01vZGUuRURJVElPTjtcbiAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbik7XG4gICAgdGhpcy50aXRsZVNlcnZpY2UuY2hhbmdlVGl0bGUocHJlc2VudGF0aW9uLm5hbWUpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5FRElUSU9OIH0pKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hTdGF0aWNNYW5pZmVzdCh7IGlkOiBwcmVzZW50YXRpb24uaWQgfSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEaXNwbGF5T3B0aW9ucyh7IG1vZGU6IFZpZXdNb2RlLkVESVRJT04gfSkpO1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGRlbGV0ZShpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmNvbmZpcm1NYW5pZmVzdERlbGV0aW9uKHsgaWQgfSkpO1xuICAgIHRoaXMudG9nZ2xlTW9kYWxBY3Rpb25zKCk7XG4gIH1cblxuICB0b2dnbGVNb2RhbEFjdGlvbnMocHJlc2VudGF0aW9uPzogTWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGwsIG1vcmVCdXR0b24/OiBIVE1MQnV0dG9uRWxlbWVudCkge1xuICAgIGlmICghdGhpcy5vdmVybGF5UmVmICYmIHByZXNlbnRhdGlvbikge1xuICAgICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChwcmVzZW50YXRpb24pO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbih7IHByZXNlbnRhdGlvbiwgdmlld01vZGU6IFZpZXdNb2RlLkNBVEFMT0cgfSkpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmxvYWRNYW5pZmVzdCh7IGlkOiBwcmVzZW50YXRpb24uaWQgfSkpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnbS1jb250ZXh0LW1lbnUtd3JhcHBlciddLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRvZ2dsZU1vZGFsQWN0aW9ucyhwcmVzZW50YXRpb24pKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudGVtcGxhdGVNb2RhbEFjdGlvbnMsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgICAgY29uc3QgY29udGV4dE1lbnUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXYubS1jb250ZXh0LW1lbnUnKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgIGlmICghIWNvbnRleHRNZW51ICYmIG1vcmVCdXR0b24pIHtcbiAgICAgICAgY29uc3QgcmVjdCA9IG1vcmVCdXR0b24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnRleHRNZW51LnN0eWxlLm1pbldpZHRoID0gJzE4NXB4JztcbiAgICAgICAgY29udGV4dE1lbnUuc3R5bGUubGVmdCA9IChyZWN0Py5sZWZ0ID8/IDApIC0gKGNvbnRleHRNZW51Py5jbGllbnRXaWR0aCA/PyAwKSArIDIzICsgJ3B4JztcbiAgICAgICAgY29udGV4dE1lbnUuc3R5bGUudG9wID0gKHJlY3Q/LnRvcCA/PyAwKSArIDMwICsgJ3B4JztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vdmVybGF5UmVmPy5kaXNwb3NlKCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlTW9kYWwocHJlc2VudGF0aW9uPzogTWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGwpIHtcbiAgICBpZiAocHJlc2VudGF0aW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbik7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2VsZWN0UHJlc2VudGF0aW9uKHsgcHJlc2VudGF0aW9uLCB2aWV3TW9kZTogVmlld01vZGUuQ0FUQUxPRyB9KSk7XG4gICAgICB0aGlzLnRvZ2dsZU1vZGFsQWN0aW9ucygpO1xuICAgICAgdGhpcy5kaWFsb2cub3BlbihQcnlBY2Nlc3NSaWdodHNTaGFyZU1vZGFsQ29tcG9uZW50LCB7XG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBwYW5lbENsYXNzOiBbJ28tbW9kYWwtd3JhcHBlciddLFxuICAgICAgICBiYWNrZHJvcENsYXNzOiAnYmFja2Ryb3AnLFxuICAgICAgICBkYXRhOiB7IG1hbmlmZXN0OiBwcmVzZW50YXRpb24gfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZWRpdENvbnRlbnQoc2VsZWN0ZWRQcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24pIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgRGFzaGJvYXJkQWN0aW9ucy5sb2FkUHJlc2VudGF0aW9uKHsgcHJlc2VudGF0aW9uOiBzZWxlY3RlZFByZXNlbnRhdGlvbiwgdmlld01vZGU6IFZpZXdNb2RlLkVESVRJT04gfSlcbiAgICApO1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLnJvdXRlcj8ubmF2aWdhdGVCeVVybCh0aGlzLmNvbnN1bHRTdGFydFVybCk7XG4gICAgfSk7XG4gIH1cblxuICBpc1ByaXZhdGUocHJlc2VudGF0aW9uOiBNYW5pZmVzdERlc2NyaXB0aW9uKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHByZXNlbnRhdGlvbi5hY2Nlc3NSaWdodHNCeUdyb3VwKS5sZW5ndGggPT09IDA7XG4gIH1cblxuICBjYW5Nb2RpZnkkKHByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbikge1xuICAgIHJldHVybiAhdGhpcy5hY2Nlc3MgPyBvZihmYWxzZSkgOiB0aGlzLmFjY2Vzcy5jYW5Nb2RpZnlQcmVzZW50YXRpb24ocHJlc2VudGF0aW9uKTtcbiAgfVxufVxuIiwiPHByeS1wcmVzZW50YXRpb24tY3NzPjwvcHJ5LXByZXNlbnRhdGlvbi1jc3M+XG48ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRcIj5cbiAgQHN3aXRjaCAoc2VsZWN0ZWRNb2RlKSB7XG4gICAgQGRlZmF1bHQge1xuICAgICAgPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0X190b29sYm94XCIgW2NsYXNzLi11LWhpZGRlbl09XCJoaWRlVG9vbGJveFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImNyZWF0aW9uKClcIlxuICAgICAgICAgICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICdtYW5pZmVzdCcsIGFjdGlvbjogJ2NyZWF0ZScgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImFkZFwiPjwvcHJ5LWljb24+XG4gICAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLmNyZWF0ZScgfCBpMThuIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fdG9vbGJveF9fc2VhcmNoXCI+XG4gICAgICAgICAgICA8bGFiZWwgaWQ9XCJjYXRhbG9nLXNlYXJjaC1sYWJlbFwiIGZvcj1cImNhdGFsb2ctc2VhcmNoXCIgY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eyAnQHByeS50b29sYm94LmNhdGFsb2cuZmlsdGVyLm5hbWUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgaWQ9XCJjYXRhbG9nLXNlYXJjaFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0BwcnkucHJlc2VudGF0aW9uLnNlYXJjaCcgfCBpMThuXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwic2VhcmNoJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidGhpcy5zZWFyY2gkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHByeS1pY29uIGNsYXNzPVwic2VhcmNoLWljb25cIiBpY29uU3ZnPVwic2VhcmNoXCIgW3dpZHRoXT1cIjE3XCIgW2hlaWdodF09XCIxN1wiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX2NvbnRlbnRcIj5cbiAgICAgICAgPGgxIGNsYXNzPVwiYS1oMVwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi50aXRsZScgfCBpMThuIH19PC9oMT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uLXdyYXBwZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm8tZGF0YS1kYXNoYm9hcmRcIj5cbiAgICAgICAgICAgIEBpZiAoKGZpbHRlcmVkUHJlc2VudGF0aW9ucyQgfCBhc3luYyk/Lmxlbmd0aCA9PT0gMCB8fCAhKGZpbHRlcmVkUHJlc2VudGF0aW9ucyQgfCBhc3luYykpIHtcbiAgICAgICAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLm5vRGF0YScgfCBpMThuIH19XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiby1wcmVzZW50YXRpb25cIj5cbiAgICAgICAgICAgIEBmb3IgKHByZXNlbnRhdGlvbiBvZiBmaWx0ZXJlZFByZXNlbnRhdGlvbnMkIHwgYXN5bmM7IHRyYWNrIHByZXNlbnRhdGlvbi5pZDsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoaXNQcml2YXRlKHByZXNlbnRhdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgaWNvblN2Zz1cInByaXZhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXMtcHJpdmF0ZSBhLXRvb2x0aXAgLXRvb2x0aXAtbm8td3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnByZXNlbnRhdGlvbi5wcml2YXRlJyB8IGkxOG5cIlxuICAgICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTdcIlxuICAgICAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxN1wiXG4gICAgICAgICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtdG9vbHRpcCAtdG9vbHRpcC1uby13cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZldGNoKHByZXNlbnRhdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0BwcnkucHJlc2VudGF0aW9uLnZpZXcnIHwgaTE4blwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9faW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIGFsdD1cIlwiIGNsYXNzPVwiaXMtZnVsbC13aWR0aFwiIFtzcmNdPVwicHJlc2VudGF0aW9uLmltYWdlIHwgZ2V0U2VjdXJlZEltYWdlIHwgYXN5bmNcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgQGlmICh0aGlzLmNhbk1vZGlmeSQocHJlc2VudGF0aW9uKSB8IGFzeW5jKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb3JlLWJ1dHRvblwiICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICdtYW5pZmVzdCcsIGFjdGlvbjogJ3NoYXJlJyB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1tb3JlIGEtdG9vbHRpcCAtdG9vbHRpcC1uby13cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInbW9yZS1idXR0b24tJyArIGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5wcmVzZW50YXRpb24ubW9yZScgfCBpMThuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZU1vZGFsQWN0aW9ucyhwcmVzZW50YXRpb24sIGJ1dHRvbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI2J1dHRvblxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjI1XCIgW3dpZHRoXT1cIjI1XCIgaWNvblN2Zz1cIm1vcmVfaG9yaXpcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX3R4dFwiIChjbGljayk9XCJmZXRjaChwcmVzZW50YXRpb24pXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX3RpdGxlLWNvbnRhaW5lclwiIGVsbGlwc2lzIHRleHRFbGVtZW50U2VsZWN0b3I9XCIuYS1oM1wiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImEtaDNcIj57eyBwcmVzZW50YXRpb24ubmFtZSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX19kZXNjcmlwdGlvbi1jb250YWluZXJcIiBlbGxpcHNpcyB0ZXh0RWxlbWVudFNlbGVjdG9yPVwiLmEtcFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX2Rlc2NyaXB0aW9uIGEtcFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IHByZXNlbnRhdGlvbi5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInUtZGlzcGxheS1mbGV4IC1qdXN0aWZ5LXNwYWNlLWJldHdlZW4gLWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImEtcCAtZGF0ZVwiPnt7IHByZXNlbnRhdGlvbi5tb2RpZmljYXRpb25EYXRlIHwgc2luY2VEYXRlIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHByZXNlbnRhdGlvbi50aGVtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhLWNoaXAgLXRoZW1lIC1tZCB1LXNlbGYtZW5kXCIgW2NsYXNzLi11LWhpZGRlbl09XCIhc2hvd1RoZW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAodGhlbWVQcmVmaXggPz8gJycpICsgcHJlc2VudGF0aW9uLnRoZW1lIHwgaTE4bjogeyB3YXJuOiBmYWxzZSB9IH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX19mb290ZXIgYS10b29sdGlwIC10b29sdGlwLW5vLXdyYXBcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZldGNoKHByZXNlbnRhdGlvbilcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnByZXNlbnRhdGlvbi52aWV3JyB8IGkxOG5cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0blwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uY29uc3VsdCcgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBbd2lkdGhdPVwiMjBcIiBbaGVpZ2h0XT1cIjIwXCIgaWNvblN2Zz1cImFycm93X3JpZ2h0XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBjYXNlIChWaWV3TW9kZS5DUkVBVElPTikge1xuICAgICAgPHByeS1hZGQtZWRpdC1wcmVzZW50YXRpb25cbiAgICAgICAgW3NlbGVjdGVkUHJlc2VudGF0aW9uXT1cIihzZWxlY3RlZFByZXNlbnRhdGlvbiQgfCBhc3luYykgPz8gdW5kZWZpbmVkXCJcbiAgICAgICAgW29mZmljaWFsUHJlc2VudGF0aW9uTmFtZXNdID0gXCJvZmZpY2lhbFByZXNlbnRhdGlvbk5hbWVzXCJcbiAgICAgICAgKGdvQmFjayk9XCJjbG9zZVJlc3RpdHV0aW9uKClcIlxuICAgICAgICBbZWRpdGlvblN0YXJ0VXJsXT1cImVkaXRpb25TdGFydFVybFwiXG4gICAgICAgIFtlZGl0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgW21vZGVdPVwibW9kZVwiXG4gICAgICAgIFt0aGVtZVByZWZpeF09XCJ0aGVtZVByZWZpeFwiXG4gICAgICA+PC9wcnktYWRkLWVkaXQtcHJlc2VudGF0aW9uPlxuICAgIH1cbiAgICBAY2FzZSAoVmlld01vZGUuRURJVElPTikge1xuICAgICAgPHByeS1hZGQtZWRpdC1wcmVzZW50YXRpb25cbiAgICAgICAgW3NlbGVjdGVkUHJlc2VudGF0aW9uXT1cIihzZWxlY3RlZFByZXNlbnRhdGlvbiQgfCBhc3luYykgPz8gdW5kZWZpbmVkXCJcbiAgICAgICAgW29mZmljaWFsUHJlc2VudGF0aW9uTmFtZXNdID0gXCJvZmZpY2lhbFByZXNlbnRhdGlvbk5hbWVzXCJcbiAgICAgICAgKGdvQmFjayk9XCJjbG9zZVJlc3RpdHV0aW9uKClcIlxuICAgICAgICBbZWRpdGlvblN0YXJ0VXJsXT1cImVkaXRpb25TdGFydFVybFwiXG4gICAgICAgIFtlZGl0aW9uXT1cInRydWVcIlxuICAgICAgICBbbW9kZV09XCJtb2RlXCJcbiAgICAgICAgW3RoZW1lUHJlZml4XT1cInRoZW1lUHJlZml4XCJcbiAgICAgID48L3ByeS1hZGQtZWRpdC1wcmVzZW50YXRpb24+XG4gICAgfVxuICB9XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjbW9kYWxBY3Rpb25zPlxuICA8ZGl2IGNsYXNzPVwibS1jb250ZXh0LW1lbnVcIj5cbiAgICBAaWYgKHNlbGVjdGVkUHJlc2VudGF0aW9uJCB8IGFzeW5jOyBhcyBzZWxlY3RlZFByZXNlbnRhdGlvbikge1xuICAgICAgPHVsIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1tb2RhbD1cInRydWVcIiBhcmlhLWxhYmVsbGVkYnk9XCJkaWFsb2cgcHJlc2VudGF0aW9uIG9wdGlvbnNcIj5cbiAgICAgICAgPGxpIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RfX2l0ZW1cIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImEtYnRuIC1saW5rLWxpa2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImVkaXQoc2VsZWN0ZWRQcmVzZW50YXRpb24pXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKHRoaXMuY2FuTW9kaWZ5JChzZWxlY3RlZFByZXNlbnRhdGlvbikgfCBhc3luYylcIlxuICAgICAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnZWRpdCcgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLmVkaXRpb24nIHwgaTE4biB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdF9faXRlbVwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gLWxpbmstbGlrZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZWRpdENvbnRlbnQoc2VsZWN0ZWRQcmVzZW50YXRpb24pXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKHRoaXMuY2FuTW9kaWZ5JChzZWxlY3RlZFByZXNlbnRhdGlvbikgfCBhc3luYylcIlxuICAgICAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnZWRpdCcgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLmVkaXRpb25Db250ZW50JyB8IGkxOG4gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RfX2l0ZW1cIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kYWwoc2VsZWN0ZWRQcmVzZW50YXRpb24pXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gLWxpbmstbGlrZVwiXG4gICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwiZGlhbG9nXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKHRoaXMuY2FuTW9kaWZ5JChzZWxlY3RlZFByZXNlbnRhdGlvbikgfCBhc3luYylcIlxuICAgICAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnc2hhcmUnIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdAcHJ5LnByZXNlbnRhdGlvbi5zaGFyZScgfCBpMThuIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0X19pdGVtXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biAtbGluay1saWtlXCJcbiAgICAgICAgICAgICNvcGVuTW9kYWxcbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGUoc2VsZWN0ZWRQcmVzZW50YXRpb24uaWQpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKHRoaXMuY2FuTW9kaWZ5JChzZWxlY3RlZFByZXNlbnRhdGlvbikgfCBhc3luYylcIlxuICAgICAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnZGVsZXRlJyB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uZGVsZXRlJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgfVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -40,6 +40,7 @@ class PryAddEditPresentationComponent extends SubscriptionnerDirective {
|
|
|
40
40
|
this.editionStartUrl = '/';
|
|
41
41
|
this.mode = 'meta';
|
|
42
42
|
this.goBack = new EventEmitter();
|
|
43
|
+
this.officialPresentationNames = [];
|
|
43
44
|
this.staticManifest$ = this.store.select(DashboardSelectors.staticManifest);
|
|
44
45
|
this.subscriptions.add(this.staticManifest$.subscribe((manifest) => (this.staticManifest = manifest)));
|
|
45
46
|
this.subscriptions.add(combineLatest([this.staticManifest$, this.store.select(DashboardSelectors.gridLayout)]).subscribe(([staticManifest, gridLayout]) => {
|
|
@@ -63,35 +64,41 @@ class PryAddEditPresentationComponent extends SubscriptionnerDirective {
|
|
|
63
64
|
...this.formValue,
|
|
64
65
|
metadata: this.metadata()
|
|
65
66
|
};
|
|
66
|
-
this.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
if (!this.officialPresentationNames.includes(presentation.name)) {
|
|
68
|
+
this.manifestService
|
|
69
|
+
.save(presentation.name, this.edition ? this.staticManifest : this.getNewManifest(), presentation.id, presentation.description, presentation.image, presentation.metadata?.map((metadata) => ({
|
|
70
|
+
metadataDefId: metadata.metadataDef.id,
|
|
71
|
+
value: metadata.value
|
|
72
|
+
})), presentation.accessRightsByGroup, presentation.additionalInformation)
|
|
73
|
+
.pipe(catchError((error) => {
|
|
74
|
+
this.previousTry.next(presentation.name);
|
|
75
|
+
return throwError(error);
|
|
76
|
+
}))
|
|
77
|
+
.subscribe(() => {
|
|
78
|
+
const presentation = {
|
|
79
|
+
...this.selectedPresentation$.value,
|
|
80
|
+
...this.formValue,
|
|
81
|
+
metadata: this.metadata()
|
|
82
|
+
};
|
|
83
|
+
if (!this.edition) {
|
|
84
|
+
this.store.dispatch(DashboardActions.selectPresentation({
|
|
85
|
+
presentation,
|
|
86
|
+
viewMode: ViewMode.CREATION
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
this.store.dispatch(DashboardActions.loadPresentation({
|
|
91
|
+
presentation,
|
|
92
|
+
viewMode: ViewMode.EDITION
|
|
93
|
+
}));
|
|
94
|
+
}
|
|
95
|
+
this.router?.navigateByUrl(this.editionStartUrl);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
//this.errorDuplicatingText = '@chh.message.failure.alreadyExisting';
|
|
72
100
|
this.previousTry.next(presentation.name);
|
|
73
|
-
|
|
74
|
-
}))
|
|
75
|
-
.subscribe(() => {
|
|
76
|
-
const presentation = {
|
|
77
|
-
...this.selectedPresentation$.value,
|
|
78
|
-
...this.formValue,
|
|
79
|
-
metadata: this.metadata()
|
|
80
|
-
};
|
|
81
|
-
if (!this.edition) {
|
|
82
|
-
this.store.dispatch(DashboardActions.selectPresentation({
|
|
83
|
-
presentation,
|
|
84
|
-
viewMode: ViewMode.CREATION
|
|
85
|
-
}));
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
this.store.dispatch(DashboardActions.loadPresentation({
|
|
89
|
-
presentation,
|
|
90
|
-
viewMode: ViewMode.EDITION
|
|
91
|
-
}));
|
|
92
|
-
}
|
|
93
|
-
this.router?.navigateByUrl(this.editionStartUrl);
|
|
94
|
-
});
|
|
101
|
+
}
|
|
95
102
|
}
|
|
96
103
|
saveDashboard() {
|
|
97
104
|
if (this.isFormValid) {
|
|
@@ -141,7 +148,7 @@ class PryAddEditPresentationComponent extends SubscriptionnerDirective {
|
|
|
141
148
|
};
|
|
142
149
|
}
|
|
143
150
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryAddEditPresentationComponent, deps: [{ token: i1.Store }, { token: i4.ManifestService }, { token: i3.Router, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
144
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: { selectedPresentation: "selectedPresentation", edition: "edition", themePrefix: "themePrefix", editionStartUrl: "editionStartUrl", mode: "mode" }, outputs: { goBack: "goBack" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-manifest-layout\">\n <div class=\"o-manifest-layout__toolbox -justify-space-between -align-center\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"close()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"button\" (click)=\"saveDashboard()\" [disabled]=\"!isFormValid\">\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content--presentation\">\n <h2 class=\"a-h2\">{{ '@pry.presentation.add' + '.pageTitle' | i18n }}</h2>\n <div class=\"o-presentation-form-wrapper\">\n <div class=\"u-display-flex -column\">\n <pry-presentation-form\n mode=\"theme\"\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (formValue)=\"formValue = $event\"\n (isFormValid)=\"isFormValid = $event\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n [previousTry]=\"previousTry\"\n ></pry-presentation-form>\n <div class=\"m-form-label-field -width-full m-form-label-field--inline\">\n <label class=\"a-label\">{{ '@pry.presentation.form.grid' | i18n }}</label>\n <span class=\"a-label\">{{ '@pry.toolbox.layout.' + this.chosenLayout | i18n }}</span>\n @if (!edition) {\n <pry-select-grid-layout></pry-select-grid-layout>\n }\n </div>\n </div>\n @if (mode === 'meta') {\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <div class=\"o-presentation__metadata-editor\">\n <pry-metadata-editor\n [targetId]=\"selectedPresentation.id\"\n [isModification]=\"true\"\n [metadata]=\"selectedPresentation.metadata ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </div>\n }\n }\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"saveDashboard()\"\n [disabled]=\"!isFormValid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i4$1.SelectGridLayoutComponent, selector: "pry-select-grid-layout" }, { kind: "component", type: i4$1.PresentationFormComponent, selector: "pry-presentation-form", inputs: ["previousTry", "mode", "themePrefix", "selectedPresentation"], outputs: ["formValue", "isFormValid"] }, { kind: "component", type: i5.PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: ["isModification", "targetId", "type", "metadata"], outputs: ["addMeta", "removeMeta"] }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] }); }
|
|
151
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: { selectedPresentation: "selectedPresentation", edition: "edition", themePrefix: "themePrefix", editionStartUrl: "editionStartUrl", mode: "mode", officialPresentationNames: "officialPresentationNames" }, outputs: { goBack: "goBack" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-manifest-layout\">\n <div class=\"o-manifest-layout__toolbox -justify-space-between -align-center\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"close()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"button\" (click)=\"saveDashboard()\" [disabled]=\"!isFormValid\">\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content--presentation\">\n <h2 class=\"a-h2\">{{ '@pry.presentation.add' + '.pageTitle' | i18n }}</h2>\n <div class=\"o-presentation-form-wrapper\">\n <div class=\"u-display-flex -column\">\n <pry-presentation-form\n mode=\"theme\"\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (formValue)=\"formValue = $event\"\n (isFormValid)=\"isFormValid = $event\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n [previousTry]=\"previousTry\"\n ></pry-presentation-form>\n <div class=\"m-form-label-field -width-full m-form-label-field--inline\">\n <label class=\"a-label\">{{ '@pry.presentation.form.grid' | i18n }}</label>\n <span class=\"a-label\">{{ '@pry.toolbox.layout.' + this.chosenLayout | i18n }}</span>\n @if (!edition) {\n <pry-select-grid-layout></pry-select-grid-layout>\n }\n </div>\n </div>\n @if (mode === 'meta') {\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <div class=\"o-presentation__metadata-editor\">\n <pry-metadata-editor\n [targetId]=\"selectedPresentation.id\"\n [isModification]=\"true\"\n [metadata]=\"selectedPresentation.metadata ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </div>\n }\n }\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"saveDashboard()\"\n [disabled]=\"!isFormValid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i4$1.SelectGridLayoutComponent, selector: "pry-select-grid-layout" }, { kind: "component", type: i4$1.PresentationFormComponent, selector: "pry-presentation-form", inputs: ["previousTry", "mode", "themePrefix", "selectedPresentation"], outputs: ["formValue", "isFormValid"] }, { kind: "component", type: i5.PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: ["isModification", "targetId", "type", "metadata"], outputs: ["addMeta", "removeMeta"] }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] }); }
|
|
145
152
|
}
|
|
146
153
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryAddEditPresentationComponent, decorators: [{
|
|
147
154
|
type: Component,
|
|
@@ -160,6 +167,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
160
167
|
type: Input
|
|
161
168
|
}], goBack: [{
|
|
162
169
|
type: Output
|
|
170
|
+
}], officialPresentationNames: [{
|
|
171
|
+
type: Input
|
|
163
172
|
}] } });
|
|
164
173
|
|
|
165
174
|
class PryTitlePresentationComponent {
|
|
@@ -213,6 +222,7 @@ class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
213
222
|
this.hideToolbox = false;
|
|
214
223
|
this.showTheme = true;
|
|
215
224
|
this.listOfManifests$ = new BehaviorSubject(null);
|
|
225
|
+
this.officialPresentationNames = [];
|
|
216
226
|
this.inputSearch$ = new BehaviorSubject('');
|
|
217
227
|
this.subscriptions.add(this.activatedRoute.queryParams.subscribe((params) => {
|
|
218
228
|
if (params['create']) {
|
|
@@ -340,11 +350,11 @@ class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
340
350
|
return !this.access ? of(false) : this.access.canModifyPresentation(presentation);
|
|
341
351
|
}
|
|
342
352
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryPresentationComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i3.Router }, { token: i4.PryTitleService }, { token: i3.ActivatedRoute }, { token: i0.NgZone }, { token: PRY_ACCESS_TOKEN, optional: true }, { token: i4.PryDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
343
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryPresentationComponent, selector: "pry-presentation", inputs: { editionStartUrl: "editionStartUrl", consultStartUrl: "consultStartUrl", meAsOwner: "meAsOwner", themePrefix: "themePrefix", mode: "mode", hideToolbox: "hideToolbox", showTheme: "showTheme", listOfManifests: "listOfManifests", search: "search" }, viewQueries: [{ propertyName: "templateModalActions", first: true, predicate: ["modalActions"], descendants: true, read: TemplateRef }, { propertyName: "openModal", first: true, predicate: ["openModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\">\n @switch (selectedMode) {\n @default {\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <div class=\"no-data-dashboard\">\n @if ((filteredPresentations$ | async)?.length === 0 || !(filteredPresentations$ | async)) {\n {{ '@pry.presentation.noData' | i18n }}\n }\n </div>\n <ul class=\"o-presentation\">\n @for (presentation of filteredPresentations$ | async; track presentation.id; let index = $index) {\n <li class=\"o-presentation__item\">\n <div class=\"o-presentation__item__header\">\n @if (isPrivate(presentation)) {\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n }\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img alt=\"\" class=\"is-full-width\" [src]=\"presentation.image | getSecuredImage | async\" />\n </div>\n </div>\n @if (this.canModify$(presentation) | async) {\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.presentation.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n }\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <p class=\"a-h3\">{{ presentation.name }}</p>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <div class=\"u-display-flex -justify-space-between -align-center\">\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n @if (presentation.theme !== undefined) {\n <span class=\"a-chip -theme -md u-self-end\" [class.-u-hidden]=\"!showTheme\">\n {{ (themePrefix ?? '') + presentation.theme | i18n: { warn: false } }}\n </span>\n }\n </div>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n }\n @case (ViewMode.CREATION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n @case (ViewMode.EDITION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n }\n</div>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <ul class=\"m-context-menu__list\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog presentation options\">\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editContent(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.editionContent' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i4.EllipsisDirective, selector: "[ellipsis]", inputs: ["textElementSelector"] }, { kind: "directive", type: i5$1.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: i5$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: ["selectedPresentation", "edition", "themePrefix", "editionStartUrl", "mode"], outputs: ["goBack"] }, { kind: "component", type: PryPresentationCssComponent, selector: "pry-presentation-css" }, { kind: "pipe", type: i4.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.SinceDatePipe, name: "sinceDate" }] }); }
|
|
353
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryPresentationComponent, selector: "pry-presentation", inputs: { editionStartUrl: "editionStartUrl", consultStartUrl: "consultStartUrl", meAsOwner: "meAsOwner", themePrefix: "themePrefix", mode: "mode", hideToolbox: "hideToolbox", showTheme: "showTheme", listOfManifests: "listOfManifests", officialPresentationNames: "officialPresentationNames", search: "search" }, viewQueries: [{ propertyName: "templateModalActions", first: true, predicate: ["modalActions"], descendants: true, read: TemplateRef }, { propertyName: "openModal", first: true, predicate: ["openModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\">\n @switch (selectedMode) {\n @default {\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <div class=\"no-data-dashboard\">\n @if ((filteredPresentations$ | async)?.length === 0 || !(filteredPresentations$ | async)) {\n {{ '@pry.presentation.noData' | i18n }}\n }\n </div>\n <ul class=\"o-presentation\">\n @for (presentation of filteredPresentations$ | async; track presentation.id; let index = $index) {\n <li class=\"o-presentation__item\">\n <div class=\"o-presentation__item__header\">\n @if (isPrivate(presentation)) {\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n }\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img alt=\"\" class=\"is-full-width\" [src]=\"presentation.image | getSecuredImage | async\" />\n </div>\n </div>\n @if (this.canModify$(presentation) | async) {\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.presentation.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n }\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <p class=\"a-h3\">{{ presentation.name }}</p>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <div class=\"u-display-flex -justify-space-between -align-center\">\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n @if (presentation.theme !== undefined) {\n <span class=\"a-chip -theme -md u-self-end\" [class.-u-hidden]=\"!showTheme\">\n {{ (themePrefix ?? '') + presentation.theme | i18n: { warn: false } }}\n </span>\n }\n </div>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n }\n @case (ViewMode.CREATION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n [officialPresentationNames] = \"officialPresentationNames\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n @case (ViewMode.EDITION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n [officialPresentationNames] = \"officialPresentationNames\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n }\n</div>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <ul class=\"m-context-menu__list\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog presentation options\">\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editContent(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.editionContent' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i4.EllipsisDirective, selector: "[ellipsis]", inputs: ["textElementSelector"] }, { kind: "directive", type: i5$1.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: i5$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: ["selectedPresentation", "edition", "themePrefix", "editionStartUrl", "mode", "officialPresentationNames"], outputs: ["goBack"] }, { kind: "component", type: PryPresentationCssComponent, selector: "pry-presentation-css" }, { kind: "pipe", type: i4.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.SinceDatePipe, name: "sinceDate" }] }); }
|
|
344
354
|
}
|
|
345
355
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryPresentationComponent, decorators: [{
|
|
346
356
|
type: Component,
|
|
347
|
-
args: [{ selector: 'pry-presentation', template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\">\n @switch (selectedMode) {\n @default {\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <div class=\"no-data-dashboard\">\n @if ((filteredPresentations$ | async)?.length === 0 || !(filteredPresentations$ | async)) {\n {{ '@pry.presentation.noData' | i18n }}\n }\n </div>\n <ul class=\"o-presentation\">\n @for (presentation of filteredPresentations$ | async; track presentation.id; let index = $index) {\n <li class=\"o-presentation__item\">\n <div class=\"o-presentation__item__header\">\n @if (isPrivate(presentation)) {\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n }\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img alt=\"\" class=\"is-full-width\" [src]=\"presentation.image | getSecuredImage | async\" />\n </div>\n </div>\n @if (this.canModify$(presentation) | async) {\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.presentation.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n }\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <p class=\"a-h3\">{{ presentation.name }}</p>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <div class=\"u-display-flex -justify-space-between -align-center\">\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n @if (presentation.theme !== undefined) {\n <span class=\"a-chip -theme -md u-self-end\" [class.-u-hidden]=\"!showTheme\">\n {{ (themePrefix ?? '') + presentation.theme | i18n: { warn: false } }}\n </span>\n }\n </div>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n }\n @case (ViewMode.CREATION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n @case (ViewMode.EDITION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n }\n</div>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <ul class=\"m-context-menu__list\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog presentation options\">\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editContent(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.editionContent' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n }\n </div>\n</ng-template>\n" }]
|
|
357
|
+
args: [{ selector: 'pry-presentation', template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\">\n @switch (selectedMode) {\n @default {\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <div class=\"no-data-dashboard\">\n @if ((filteredPresentations$ | async)?.length === 0 || !(filteredPresentations$ | async)) {\n {{ '@pry.presentation.noData' | i18n }}\n }\n </div>\n <ul class=\"o-presentation\">\n @for (presentation of filteredPresentations$ | async; track presentation.id; let index = $index) {\n <li class=\"o-presentation__item\">\n <div class=\"o-presentation__item__header\">\n @if (isPrivate(presentation)) {\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n }\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img alt=\"\" class=\"is-full-width\" [src]=\"presentation.image | getSecuredImage | async\" />\n </div>\n </div>\n @if (this.canModify$(presentation) | async) {\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.presentation.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n }\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <p class=\"a-h3\">{{ presentation.name }}</p>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <div class=\"u-display-flex -justify-space-between -align-center\">\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n @if (presentation.theme !== undefined) {\n <span class=\"a-chip -theme -md u-self-end\" [class.-u-hidden]=\"!showTheme\">\n {{ (themePrefix ?? '') + presentation.theme | i18n: { warn: false } }}\n </span>\n }\n </div>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n }\n @case (ViewMode.CREATION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n [officialPresentationNames] = \"officialPresentationNames\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n @case (ViewMode.EDITION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n [officialPresentationNames] = \"officialPresentationNames\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n }\n</div>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <ul class=\"m-context-menu__list\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog presentation options\">\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editContent(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.editionContent' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n }\n </div>\n</ng-template>\n" }]
|
|
348
358
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i3.Router }, { type: i4.PryTitleService }, { type: i3.ActivatedRoute }, { type: i0.NgZone }, { type: i4.PryBaseAccess, decorators: [{
|
|
349
359
|
type: Optional
|
|
350
360
|
}, {
|
|
@@ -372,6 +382,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
372
382
|
type: Input
|
|
373
383
|
}], listOfManifests: [{
|
|
374
384
|
type: Input
|
|
385
|
+
}], officialPresentationNames: [{
|
|
386
|
+
type: Input
|
|
375
387
|
}], search: [{
|
|
376
388
|
type: Input
|
|
377
389
|
}] } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provoly-dashboard-presentation.mjs","sources":["../../../../projects/provoly/dashboard/presentation/components/add-edit-presentation/add-edit-presentation.component.ts","../../../../projects/provoly/dashboard/presentation/components/add-edit-presentation/add-edit-presentation.component.html","../../../../projects/provoly/dashboard/presentation/components/title-presentation/title-presentation.component.ts","../../../../projects/provoly/dashboard/presentation/components/title-presentation/title-presentation.component.html","../../../../projects/provoly/dashboard/presentation/style/css.component.ts","../../../../projects/provoly/dashboard/presentation/components/presentation.component.ts","../../../../projects/provoly/dashboard/presentation/components/presentation.component.html","../../../../projects/provoly/dashboard/presentation/i18n/en.translations.ts","../../../../projects/provoly/dashboard/presentation/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/presentation/presentation.module.ts","../../../../projects/provoly/dashboard/presentation/provoly-dashboard-presentation.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Optional, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n DashboardActions,\n DashboardGridLayout,\n DashboardSelectors,\n GlobalManifest,\n IMetadata,\n ManifestDescription,\n ManifestService,\n MetadataValue,\n SubscriptionnerDirective,\n ViewMode,\n WidgetPlacementUtils\n} from '@provoly/dashboard';\nimport { BehaviorSubject, catchError, combineLatest, Observable, Subject, throwError} from 'rxjs';\nimport { MetadataSelectors, MetaEventType } from '@provoly/dashboard/components/metadata-editor';\nimport { v4 as uuidv4 } from 'uuid';\nimport { PresentationFormValue } from '@provoly/dashboard/toolbox';\n\n@Component({\n selector: 'pry-add-edit-presentation',\n templateUrl: './add-edit-presentation.component.html'\n})\nexport class PryAddEditPresentationComponent extends SubscriptionnerDirective {\n staticManifest$: Observable<GlobalManifest>;\n staticManifest?: GlobalManifest;\n selectedPresentation$ = new BehaviorSubject<ManifestDescription | undefined>(undefined);\n chosenLayout: string = DashboardGridLayout.FULL;\n metadataDefs: IMetadata[] | undefined;\n metadataThemeId: string = '';\n formValue?: Partial<PresentationFormValue>;\n isFormValid = false;\n previousTry = new Subject<string | null>();\n\n @Input() set selectedPresentation(presentation: ManifestDescription | undefined) {\n this.selectedPresentation$.next(presentation);\n }\n @Input() edition: boolean = false;\n @Input() themePrefix: string | null = null;\n @Input() editionStartUrl: string = '/';\n @Input() mode: 'theme' | 'meta' = 'meta';\n\n @Output() goBack = new EventEmitter<void>();\n\n constructor(\n protected store: Store,\n private manifestService: ManifestService,\n @Optional() protected router: Router\n ) {\n super();\n this.staticManifest$ = this.store.select(DashboardSelectors.staticManifest);\n this.subscriptions.add(this.staticManifest$.subscribe((manifest) => (this.staticManifest = manifest)));\n this.subscriptions.add(\n combineLatest([this.staticManifest$, this.store.select(DashboardSelectors.gridLayout)]).subscribe(\n ([staticManifest, gridLayout]) => {\n this.chosenLayout =\n this.edition && staticManifest.windows[0]?.grid?.layout !== undefined\n ? staticManifest.windows[0]?.grid?.layout\n : gridLayout;\n }\n )\n );\n this.subscriptions.add(\n this.store.select(MetadataSelectors.metadata).subscribe((metadata) => {\n this.metadataDefs = metadata;\n const metadataTheme = metadata?.find((meta) => meta.name === '_theme');\n if (metadataTheme) {\n this.metadataThemeId = metadataTheme?.id ?? '';\n }\n })\n );\n }\n\n saveOrUpdateDashboard() {\n const presentation = {\n ...this.selectedPresentation$.value!,\n id: this.selectedPresentation$.value?.id || uuidv4(),\n ...this.formValue,\n metadata: this.metadata()\n };\n this.manifestService\n .save(\n presentation.name,\n this.edition ? (this.staticManifest as GlobalManifest) : this.getNewManifest(),\n presentation.id,\n presentation.description,\n presentation.image,\n presentation.metadata?.map((metadata: MetadataValue) => ({\n metadataDefId: metadata.metadataDef.id,\n value: metadata.value\n })),\n presentation.accessRightsByGroup,\n presentation.additionalInformation\n )\n .pipe(\n catchError((error) => {\n this.previousTry.next(presentation.name);\n return throwError(error);\n })\n )\n .subscribe(() => {\n const presentation = {\n ...this.selectedPresentation$.value!,\n ...this.formValue,\n metadata: this.metadata()\n };\n\n if (!this.edition) {\n this.store.dispatch(\n DashboardActions.selectPresentation({\n presentation,\n viewMode: ViewMode.CREATION\n })\n );\n } else {\n this.store.dispatch(\n DashboardActions.loadPresentation({\n presentation,\n viewMode: ViewMode.EDITION\n })\n );\n }\n this.router?.navigateByUrl(this.editionStartUrl);\n });\n }\n\n saveDashboard() {\n if (this.isFormValid) {\n this.saveOrUpdateDashboard();\n }\n }\n\n addMetadata(metadata: MetaEventType) {\n this.store.dispatch(\n DashboardActions.addManifestMetadata({\n presentationId: this.selectedPresentation$.value?.id!,\n metadataId: metadata.metadataId,\n value: metadata.value ?? ''\n })\n );\n }\n\n removeMetadata(metadata: MetaEventType) {\n this.store.dispatch(\n DashboardActions.deleteManifestMetadata({\n presentationId: this.selectedPresentation$.value?.id!,\n metadataId: metadata.metadataId\n })\n );\n }\n\n close() {\n this.goBack.emit();\n }\n\n metadata(): MetadataValue[] {\n return this.mode === 'theme'\n ? !this.formValue?.theme || this.formValue?.theme === ''\n ? []\n : [\n {\n metadataDef: this.metadataDefs!.find((metadata) => metadata.id === this.metadataThemeId)!,\n value: this.formValue.theme ?? ''\n }\n ]\n : this.selectedPresentation$.value?.metadata ?? [];\n }\n\n getNewManifest(): GlobalManifest {\n return {\n windows: [\n {\n widgets: [],\n grid: {\n layout: this.chosenLayout,\n columns: WidgetPlacementUtils.getLayout(this.chosenLayout)?.columns,\n rows: WidgetPlacementUtils.getLayout(this.chosenLayout)?.rows\n }\n }\n ]\n };\n }\n}\n","<div class=\"o-manifest-layout\">\n <div class=\"o-manifest-layout__toolbox -justify-space-between -align-center\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"close()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"button\" (click)=\"saveDashboard()\" [disabled]=\"!isFormValid\">\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content--presentation\">\n <h2 class=\"a-h2\">{{ '@pry.presentation.add' + '.pageTitle' | i18n }}</h2>\n <div class=\"o-presentation-form-wrapper\">\n <div class=\"u-display-flex -column\">\n <pry-presentation-form\n mode=\"theme\"\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (formValue)=\"formValue = $event\"\n (isFormValid)=\"isFormValid = $event\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n [previousTry]=\"previousTry\"\n ></pry-presentation-form>\n <div class=\"m-form-label-field -width-full m-form-label-field--inline\">\n <label class=\"a-label\">{{ '@pry.presentation.form.grid' | i18n }}</label>\n <span class=\"a-label\">{{ '@pry.toolbox.layout.' + this.chosenLayout | i18n }}</span>\n @if (!edition) {\n <pry-select-grid-layout></pry-select-grid-layout>\n }\n </div>\n </div>\n @if (mode === 'meta') {\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <div class=\"o-presentation__metadata-editor\">\n <pry-metadata-editor\n [targetId]=\"selectedPresentation.id\"\n [isModification]=\"true\"\n [metadata]=\"selectedPresentation.metadata ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </div>\n }\n }\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"saveDashboard()\"\n [disabled]=\"!isFormValid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { DashboardSelectors, ManifestDescription } from '@provoly/dashboard';\n\n@Component({\n selector: 'pry-title-presentation',\n templateUrl: './title-presentation.component.html'\n})\nexport class PryTitlePresentationComponent {\n currentPresentation$: Observable<ManifestDescription | undefined>;\n\n constructor(private store: Store) {\n this.currentPresentation$ = this.store.select(DashboardSelectors.currentManifest);\n }\n}\n","@if (currentPresentation$ | async; as currentPresentation) {\n <div class=\"m-presentation-title u-display-flex -gap-10\">\n <h1 class=\"a-h2 m-presentation-title__text\">\n {{ currentPresentation.name || ('@pry.header.noCurrentPresentation' | i18n) }}\n </h1>\n @if (!!currentPresentation.description) {\n <div\n class=\"m-presentation-title__description m-info-icon a-tooltip -tooltip-width-lg align-center\"\n [attr.data-tooltip]=\"currentPresentation.description\"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n }\n </div>\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-presentation-css',\n template: '',\n styleUrls: ['./_o-pry-new-presentation.scss', './_o-pry-presentation.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryPresentationCssComponent {}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n Component,\n ElementRef,\n Inject,\n Input,\n NgZone,\n Optional,\n TemplateRef,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n DashboardActions,\n DashboardGridLayout,\n DashboardSelectors,\n ManifestDescription,\n PRY_ACCESS_TOKEN,\n PryAccessRightsShareModalComponent,\n PryBaseAccess,\n PryDialogService,\n PryTitleService,\n SubscriptionnerDirective,\n ViewMode\n} from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, map, Observable, of, startWith } from 'rxjs';\nimport { v4 } from 'uuid';\n\ninterface ManifestDescriptionWithTheme extends ManifestDescription {\n theme: string | undefined;\n}\n\n@Component({\n selector: 'pry-presentation',\n templateUrl: './presentation.component.html'\n})\nexport class PryPresentationComponent extends SubscriptionnerDirective {\n manifests$: Observable<ManifestDescriptionWithTheme[]>;\n search$ = new BehaviorSubject('');\n filteredPresentations$: Observable<ManifestDescriptionWithTheme[]>;\n\n selectedPresentation$ = new BehaviorSubject<ManifestDescription | undefined>(undefined);\n selectedMode: ViewMode = ViewMode.CATALOG;\n ViewMode = ViewMode;\n\n @ViewChild('modalActions', { read: TemplateRef }) templateModalActions!: TemplateRef<any>;\n @ViewChild('openModal') openModal!: ElementRef<HTMLButtonElement>;\n overlayRef?: OverlayRef;\n\n @Input() editionStartUrl: string = '/';\n @Input() consultStartUrl: string = '/';\n @Input() meAsOwner?: string;\n @Input() themePrefix: string | null = null;\n @Input() mode: 'theme' | 'meta' = 'meta';\n @Input() hideToolbox = false;\n @Input() showTheme = true;\n\n listOfManifests$ = new BehaviorSubject<ManifestDescription[] | null>(null);\n @Input() set listOfManifests(manifests: ManifestDescription[] | null) {\n this.listOfManifests$.next(Array.isArray(manifests) ? manifests : null);\n }\n\n inputSearch$ = new BehaviorSubject('');\n @Input() set search(query: string) {\n this.inputSearch$.next(query);\n }\n\n constructor(\n protected store: Store<any>,\n protected overlay: Overlay,\n protected viewContainerRef: ViewContainerRef,\n protected router: Router,\n protected titleService: PryTitleService,\n protected activatedRoute: ActivatedRoute,\n protected ngZone: NgZone,\n @Optional() @Inject(PRY_ACCESS_TOKEN) private access: PryBaseAccess,\n private dialog: PryDialogService\n ) {\n super();\n this.subscriptions.add(\n this.activatedRoute.queryParams.subscribe((params) => {\n if (params['create']) {\n this.creation();\n }\n })\n );\n this.store.dispatch(DashboardActions.fetchManifestsList());\n this.manifests$ = combineLatest([\n this.store\n .select(DashboardSelectors.manifestsList)\n .pipe(\n map((manifestList) =>\n [...manifestList].sort((a, b) =>\n a.modificationDate ? b.modificationDate.localeCompare(a.modificationDate) : 1\n )\n )\n ),\n this.listOfManifests$\n ]).pipe(\n map(([dynamics, statics]) => statics ?? dynamics),\n map((manifests) =>\n manifests.map(\n (manifest) =>\n ({\n ...manifest,\n theme: manifest.metadata?.find((meta) => meta.metadataDef.name === '_theme')?.value\n }) as ManifestDescriptionWithTheme\n )\n )\n );\n\n this.filteredPresentations$ = combineLatest([\n this.manifests$,\n this.search$,\n this.inputSearch$.pipe(startWith(''))\n ]).pipe(\n map(([presentations, search, inputSearch]) =>\n presentations.filter((presentations) => {\n const [name, description] = [presentations.name.toLowerCase(), presentations.description?.toLowerCase()];\n const [searchQuery, inputSearchQuery] = [search?.toLowerCase(), inputSearch?.toLowerCase()];\n return !!searchQuery || !!inputSearchQuery\n ? (!!searchQuery && (name.includes(searchQuery) || description?.includes(searchQuery))) ||\n (!!inputSearchQuery && (name.includes(inputSearchQuery) || description?.includes(inputSearchQuery)))\n : true;\n })\n )\n );\n this.subscriptions.add(\n this.store.select(DashboardSelectors.presentation).subscribe((presentation) => {\n this.selectedMode = presentation?.viewMode ?? this.ViewMode.CATALOG;\n this.selectedPresentation$.next(presentation.current);\n })\n );\n this.titleService.changeTitle('@pry.presentation.title');\n }\n\n closeRestitution() {\n this.selectedPresentation$.next(undefined);\n this.selectedMode = ViewMode.CATALOG;\n this.store.dispatch(DashboardActions.selectPresentation({ presentation: undefined, viewMode: ViewMode.CATALOG }));\n }\n\n fetch(presentation: ManifestDescription) {\n this.store.dispatch(DashboardActions.loadPresentation({ presentation, viewMode: ViewMode.CONSULT }));\n this.ngZone.run(() => {\n this.router?.navigateByUrl(this.consultStartUrl);\n });\n }\n\n creation() {\n this.selectedMode = ViewMode.CREATION;\n this.store.dispatch(DashboardActions.updateManifest({ manifest: { windows: [] }, selectedIds: [] }));\n const newPresentation = {\n presentation: {\n id: v4(),\n name: '',\n accessRightsByGroup: {} as { [key: string]: string[] },\n owner: true\n } as ManifestDescription,\n viewMode: ViewMode.CREATION\n };\n this.store.dispatch(DashboardActions.selectPresentation(newPresentation));\n this.store.dispatch(DashboardActions.setGridLayout({ layout: DashboardGridLayout.FULL }));\n this.store.dispatch(DashboardActions.updateDisplayOptions({ mode: ViewMode.CREATION }));\n }\n\n edit(presentation: ManifestDescription) {\n this.selectedMode = ViewMode.EDITION;\n this.selectedPresentation$.next(presentation);\n this.titleService.changeTitle(presentation.name);\n this.store.dispatch(DashboardActions.selectPresentation({ presentation, viewMode: ViewMode.EDITION }));\n this.store.dispatch(DashboardActions.fetchStaticManifest({ id: presentation.id }));\n this.store.dispatch(DashboardActions.updateDisplayOptions({ mode: ViewMode.EDITION }));\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n }\n\n delete(id: string) {\n this.store.dispatch(DashboardActions.confirmManifestDeletion({ id }));\n this.toggleModalActions();\n }\n\n toggleModalActions(presentation?: ManifestDescription | null, moreButton?: HTMLButtonElement) {\n if (!this.overlayRef && presentation) {\n this.selectedPresentation$.next(presentation);\n this.store.dispatch(DashboardActions.selectPresentation({ presentation, viewMode: ViewMode.CATALOG }));\n this.store.dispatch(DashboardActions.loadManifest({ id: presentation.id }));\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n panelClass: ['m-context-menu-wrapper'],\n backdropClass: 'backdrop'\n })\n );\n this.overlayRef.backdropClick().subscribe(() => this.toggleModalActions(presentation));\n this.overlayRef.attach(new TemplatePortal(this.templateModalActions, this.viewContainerRef));\n const contextMenu = document.querySelector('div.m-context-menu') as HTMLDivElement;\n if (!!contextMenu && moreButton) {\n const rect = moreButton.getBoundingClientRect();\n contextMenu.style.minWidth = '185px';\n contextMenu.style.left = (rect?.left ?? 0) - (contextMenu?.clientWidth ?? 0) + 23 + 'px';\n contextMenu.style.top = (rect?.top ?? 0) + 30 + 'px';\n }\n } else {\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n this.selectedPresentation$.next(undefined);\n }\n }\n\n toggleModal(presentation?: ManifestDescription | null) {\n if (presentation) {\n this.selectedPresentation$.next(presentation);\n this.store.dispatch(DashboardActions.selectPresentation({ presentation, viewMode: ViewMode.CATALOG }));\n this.toggleModalActions();\n this.dialog.open(PryAccessRightsShareModalComponent, {\n hasBackdrop: true,\n panelClass: ['o-modal-wrapper'],\n backdropClass: 'backdrop',\n data: { manifest: presentation }\n });\n }\n }\n\n editContent(selectedPresentation: ManifestDescription) {\n this.store.dispatch(\n DashboardActions.loadPresentation({ presentation: selectedPresentation, viewMode: ViewMode.EDITION })\n );\n this.ngZone.run(() => {\n this.router?.navigateByUrl(this.consultStartUrl);\n });\n }\n\n isPrivate(presentation: ManifestDescription) {\n return Object.keys(presentation.accessRightsByGroup).length === 0;\n }\n\n canModify$(presentation: ManifestDescription) {\n return !this.access ? of(false) : this.access.canModifyPresentation(presentation);\n }\n}\n","<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\">\n @switch (selectedMode) {\n @default {\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <div class=\"no-data-dashboard\">\n @if ((filteredPresentations$ | async)?.length === 0 || !(filteredPresentations$ | async)) {\n {{ '@pry.presentation.noData' | i18n }}\n }\n </div>\n <ul class=\"o-presentation\">\n @for (presentation of filteredPresentations$ | async; track presentation.id; let index = $index) {\n <li class=\"o-presentation__item\">\n <div class=\"o-presentation__item__header\">\n @if (isPrivate(presentation)) {\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n }\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img alt=\"\" class=\"is-full-width\" [src]=\"presentation.image | getSecuredImage | async\" />\n </div>\n </div>\n @if (this.canModify$(presentation) | async) {\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.presentation.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n }\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <p class=\"a-h3\">{{ presentation.name }}</p>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <div class=\"u-display-flex -justify-space-between -align-center\">\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n @if (presentation.theme !== undefined) {\n <span class=\"a-chip -theme -md u-self-end\" [class.-u-hidden]=\"!showTheme\">\n {{ (themePrefix ?? '') + presentation.theme | i18n: { warn: false } }}\n </span>\n }\n </div>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n }\n @case (ViewMode.CREATION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n @case (ViewMode.EDITION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n }\n</div>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <ul class=\"m-context-menu__list\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog presentation options\">\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editContent(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.editionContent' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n }\n </div>\n</ng-template>\n","export const enTranslations = {\n '@pry': {\n presentation: {\n add: {\n pageTitle: 'Add presentation description',\n submit: 'Save dashboard'\n },\n edit: {\n pageTitle: 'Change dashboard description',\n submit: 'Save dashboard'\n },\n form: {\n name: 'Title',\n description: 'Description',\n image: 'Image',\n dragDrop: 'Drag and drop',\n or: 'or',\n categories: 'Categories',\n categoryInput: 'Add categories',\n grid: 'Current grid: ',\n cover: 'Image will cover the whole presentation card',\n theme: 'Theme'\n },\n noData: 'No presentations',\n share: 'Share',\n options: 'Presentation options',\n consult: 'Consult',\n view: 'Consult the presentation',\n private: 'Private presentation',\n homeView: 'Show on homepage',\n erase: 'Delete presentation',\n change: 'Modify the presentation',\n create: 'Create presentation',\n configuration: 'Build presentation',\n required: 'This field is required',\n maxLength: 'Allowed length : {{len}}',\n edition: 'Edit',\n editionContent: 'Edit content',\n delete: 'Delete',\n backToCatalog: 'Back to catalog',\n search: 'Search',\n title: 'Presentation catalog',\n more: 'Options'\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n presentation: {\n add: {\n pageTitle: 'Renseigner la description du tableau de bord',\n info: 'Informations',\n submit: 'Enregistrer'\n },\n edit: {\n pageTitle: 'Changer la description du tableau de bord',\n submit: 'Sauvegarder le tableau de bord'\n },\n form: {\n name: 'Titre',\n description: 'Description',\n image: 'Image d’illustration',\n dragDrop: 'Glisser - Déposer',\n or: 'ou',\n categories: 'Catégories',\n categoryInput: 'Saisir la/les catégories',\n grid: 'Grille actuelle: ',\n theme: 'Thématique'\n },\n noData: 'Aucun tableau de bord',\n share: 'Partager',\n options: 'Options du tableau de bord',\n consult: 'Consulter',\n view: 'Consulter le tableau de bord',\n private: 'Présentation privée',\n homeView: \"Afficher en page d'accueil\",\n erase: 'Supprimer le tableau de bord',\n change: 'Modifier le tableau de bord',\n create: 'Créer un tableau de bord',\n configuration: 'Enregistrer',\n required: 'Ce champ est requis',\n maxLength: 'Nombre de caractères autorisés : {{len}}',\n edition: 'Modifier',\n editionContent: 'Modifier la composition',\n delete: 'Supprimer',\n backToCatalog: 'Revenir au catalogue',\n search: 'Rechercher',\n title: 'Catalogue de tableaux de bord',\n more: 'Options'\n }\n }\n};\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport {\n PryCoreModule,\n PryDashboardModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PryOverlayModule,\n PrySelectModule,\n PryShareModule, PrySinceDateModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { PryAddEditPresentationComponent } from './components/add-edit-presentation/add-edit-presentation.component';\nimport { PryTitlePresentationComponent } from './components/title-presentation/title-presentation.component';\nimport { PryPresentationComponent } from './components/presentation.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PryPresentationCssComponent } from './style/css.component';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { PryExpandPanelModule } from '@provoly/dashboard/components/metadata-editor';\nimport { PryTextEditorModule } from '@provoly/dashboard/components/text-editor';\nimport { PryToolboxModule } from '@provoly/dashboard/toolbox';\n\nconst COMPONENTS = [\n PryPresentationComponent,\n PryAddEditPresentationComponent,\n PryTitlePresentationComponent,\n PryPresentationCssComponent\n];\n\n@NgModule({\n providers: [],\n declarations: [...COMPONENTS],\n imports: [\n PryIconModule,\n PryCoreModule,\n PryDashboardModule,\n ReactiveFormsModule,\n PrySelectModule,\n PryShareModule,\n FormsModule,\n PryOverlayModule,\n PryI18nModule,\n PryToolboxModule,\n PryCheckboxModule,\n CommonModule,\n A11yModule,\n PryExpandPanelModule,\n PryTextEditorModule,\n PrySinceDateModule\n ],\n exports: [...COMPONENTS]\n})\nexport class PryPresentationModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'presentation', frTranslations);\n this.pryTranslateService.addLangObject('en', 'presentation', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4","i2","i4","i3","i5","i6.PryAddEditPresentationComponent","i7.PryPresentationCssComponent","i8","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provoly-dashboard-presentation.mjs","sources":["../../../../projects/provoly/dashboard/presentation/components/add-edit-presentation/add-edit-presentation.component.ts","../../../../projects/provoly/dashboard/presentation/components/add-edit-presentation/add-edit-presentation.component.html","../../../../projects/provoly/dashboard/presentation/components/title-presentation/title-presentation.component.ts","../../../../projects/provoly/dashboard/presentation/components/title-presentation/title-presentation.component.html","../../../../projects/provoly/dashboard/presentation/style/css.component.ts","../../../../projects/provoly/dashboard/presentation/components/presentation.component.ts","../../../../projects/provoly/dashboard/presentation/components/presentation.component.html","../../../../projects/provoly/dashboard/presentation/i18n/en.translations.ts","../../../../projects/provoly/dashboard/presentation/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/presentation/presentation.module.ts","../../../../projects/provoly/dashboard/presentation/provoly-dashboard-presentation.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Optional, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n DashboardActions,\n DashboardGridLayout,\n DashboardSelectors,\n GlobalManifest,\n IMetadata,\n ManifestDescription,\n ManifestService,\n MetadataValue,\n SubscriptionnerDirective,\n ViewMode,\n WidgetPlacementUtils\n} from '@provoly/dashboard';\nimport { BehaviorSubject, catchError, combineLatest, Observable, Subject, throwError} from 'rxjs';\nimport { MetadataSelectors, MetaEventType } from '@provoly/dashboard/components/metadata-editor';\nimport { v4 as uuidv4 } from 'uuid';\nimport { PresentationFormValue } from '@provoly/dashboard/toolbox';\n\n@Component({\n selector: 'pry-add-edit-presentation',\n templateUrl: './add-edit-presentation.component.html'\n})\nexport class PryAddEditPresentationComponent extends SubscriptionnerDirective {\n staticManifest$: Observable<GlobalManifest>;\n staticManifest?: GlobalManifest;\n selectedPresentation$ = new BehaviorSubject<ManifestDescription | undefined>(undefined);\n chosenLayout: string = DashboardGridLayout.FULL;\n metadataDefs: IMetadata[] | undefined;\n metadataThemeId: string = '';\n formValue?: Partial<PresentationFormValue>;\n isFormValid = false;\n previousTry = new Subject<string | null>();\n\n @Input() set selectedPresentation(presentation: ManifestDescription | undefined) {\n this.selectedPresentation$.next(presentation);\n }\n @Input() edition: boolean = false;\n @Input() themePrefix: string | null = null;\n @Input() editionStartUrl: string = '/';\n @Input() mode: 'theme' | 'meta' = 'meta';\n\n @Output() goBack = new EventEmitter<void>();\n @Input() officialPresentationNames: string[] = [];\n\n constructor(\n protected store: Store,\n private manifestService: ManifestService,\n @Optional() protected router: Router\n ) {\n super();\n this.staticManifest$ = this.store.select(DashboardSelectors.staticManifest);\n this.subscriptions.add(this.staticManifest$.subscribe((manifest) => (this.staticManifest = manifest)));\n this.subscriptions.add(\n combineLatest([this.staticManifest$, this.store.select(DashboardSelectors.gridLayout)]).subscribe(\n ([staticManifest, gridLayout]) => {\n this.chosenLayout =\n this.edition && staticManifest.windows[0]?.grid?.layout !== undefined\n ? staticManifest.windows[0]?.grid?.layout\n : gridLayout;\n }\n )\n );\n this.subscriptions.add(\n this.store.select(MetadataSelectors.metadata).subscribe((metadata) => {\n this.metadataDefs = metadata;\n const metadataTheme = metadata?.find((meta) => meta.name === '_theme');\n if (metadataTheme) {\n this.metadataThemeId = metadataTheme?.id ?? '';\n }\n })\n );\n }\n\n saveOrUpdateDashboard() {\n const presentation = {\n ...this.selectedPresentation$.value!,\n id: this.selectedPresentation$.value?.id || uuidv4(),\n ...this.formValue,\n metadata: this.metadata()\n };\n if (!this.officialPresentationNames.includes(presentation.name)) {\n this.manifestService\n .save(\n presentation.name,\n this.edition ? (this.staticManifest as GlobalManifest) : this.getNewManifest(),\n presentation.id,\n presentation.description,\n presentation.image,\n presentation.metadata?.map((metadata: MetadataValue) => ({\n metadataDefId: metadata.metadataDef.id,\n value: metadata.value\n })),\n presentation.accessRightsByGroup,\n presentation.additionalInformation\n )\n .pipe(\n catchError((error) => {\n this.previousTry.next(presentation.name);\n return throwError(error);\n })\n )\n .subscribe(() => {\n const presentation = {\n ...this.selectedPresentation$.value!,\n ...this.formValue,\n metadata: this.metadata()\n };\n\n if (!this.edition) {\n this.store.dispatch(\n DashboardActions.selectPresentation({\n presentation,\n viewMode: ViewMode.CREATION\n })\n );\n } else {\n this.store.dispatch(\n DashboardActions.loadPresentation({\n presentation,\n viewMode: ViewMode.EDITION\n })\n );\n }\n this.router?.navigateByUrl(this.editionStartUrl);\n });\n } else {\n //this.errorDuplicatingText = '@chh.message.failure.alreadyExisting';\n this.previousTry.next(presentation.name);\n }\n }\n\n saveDashboard() {\n if (this.isFormValid) {\n this.saveOrUpdateDashboard();\n }\n }\n\n addMetadata(metadata: MetaEventType) {\n this.store.dispatch(\n DashboardActions.addManifestMetadata({\n presentationId: this.selectedPresentation$.value?.id!,\n metadataId: metadata.metadataId,\n value: metadata.value ?? ''\n })\n );\n }\n\n removeMetadata(metadata: MetaEventType) {\n this.store.dispatch(\n DashboardActions.deleteManifestMetadata({\n presentationId: this.selectedPresentation$.value?.id!,\n metadataId: metadata.metadataId\n })\n );\n }\n\n close() {\n this.goBack.emit();\n }\n\n metadata(): MetadataValue[] {\n return this.mode === 'theme'\n ? !this.formValue?.theme || this.formValue?.theme === ''\n ? []\n : [\n {\n metadataDef: this.metadataDefs!.find((metadata) => metadata.id === this.metadataThemeId)!,\n value: this.formValue.theme ?? ''\n }\n ]\n : this.selectedPresentation$.value?.metadata ?? [];\n }\n\n getNewManifest(): GlobalManifest {\n return {\n windows: [\n {\n widgets: [],\n grid: {\n layout: this.chosenLayout,\n columns: WidgetPlacementUtils.getLayout(this.chosenLayout)?.columns,\n rows: WidgetPlacementUtils.getLayout(this.chosenLayout)?.rows\n }\n }\n ]\n };\n }\n}\n","<div class=\"o-manifest-layout\">\n <div class=\"o-manifest-layout__toolbox -justify-space-between -align-center\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"close()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"button\" (click)=\"saveDashboard()\" [disabled]=\"!isFormValid\">\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content--presentation\">\n <h2 class=\"a-h2\">{{ '@pry.presentation.add' + '.pageTitle' | i18n }}</h2>\n <div class=\"o-presentation-form-wrapper\">\n <div class=\"u-display-flex -column\">\n <pry-presentation-form\n mode=\"theme\"\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (formValue)=\"formValue = $event\"\n (isFormValid)=\"isFormValid = $event\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n [previousTry]=\"previousTry\"\n ></pry-presentation-form>\n <div class=\"m-form-label-field -width-full m-form-label-field--inline\">\n <label class=\"a-label\">{{ '@pry.presentation.form.grid' | i18n }}</label>\n <span class=\"a-label\">{{ '@pry.toolbox.layout.' + this.chosenLayout | i18n }}</span>\n @if (!edition) {\n <pry-select-grid-layout></pry-select-grid-layout>\n }\n </div>\n </div>\n @if (mode === 'meta') {\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <div class=\"o-presentation__metadata-editor\">\n <pry-metadata-editor\n [targetId]=\"selectedPresentation.id\"\n [isModification]=\"true\"\n [metadata]=\"selectedPresentation.metadata ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </div>\n }\n }\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"saveDashboard()\"\n [disabled]=\"!isFormValid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { DashboardSelectors, ManifestDescription } from '@provoly/dashboard';\n\n@Component({\n selector: 'pry-title-presentation',\n templateUrl: './title-presentation.component.html'\n})\nexport class PryTitlePresentationComponent {\n currentPresentation$: Observable<ManifestDescription | undefined>;\n\n constructor(private store: Store) {\n this.currentPresentation$ = this.store.select(DashboardSelectors.currentManifest);\n }\n}\n","@if (currentPresentation$ | async; as currentPresentation) {\n <div class=\"m-presentation-title u-display-flex -gap-10\">\n <h1 class=\"a-h2 m-presentation-title__text\">\n {{ currentPresentation.name || ('@pry.header.noCurrentPresentation' | i18n) }}\n </h1>\n @if (!!currentPresentation.description) {\n <div\n class=\"m-presentation-title__description m-info-icon a-tooltip -tooltip-width-lg align-center\"\n [attr.data-tooltip]=\"currentPresentation.description\"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n }\n </div>\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-presentation-css',\n template: '',\n styleUrls: ['./_o-pry-new-presentation.scss', './_o-pry-presentation.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryPresentationCssComponent {}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n Component,\n ElementRef,\n Inject,\n Input,\n NgZone,\n Optional,\n TemplateRef,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n DashboardActions,\n DashboardGridLayout,\n DashboardSelectors,\n ManifestDescription,\n PRY_ACCESS_TOKEN,\n PryAccessRightsShareModalComponent,\n PryBaseAccess,\n PryDialogService,\n PryTitleService,\n SubscriptionnerDirective,\n ViewMode\n} from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, map, Observable, of, startWith } from 'rxjs';\nimport { v4 } from 'uuid';\n\ninterface ManifestDescriptionWithTheme extends ManifestDescription {\n theme: string | undefined;\n}\n\n@Component({\n selector: 'pry-presentation',\n templateUrl: './presentation.component.html'\n})\nexport class PryPresentationComponent extends SubscriptionnerDirective {\n manifests$: Observable<ManifestDescriptionWithTheme[]>;\n search$ = new BehaviorSubject('');\n filteredPresentations$: Observable<ManifestDescriptionWithTheme[]>;\n\n selectedPresentation$ = new BehaviorSubject<ManifestDescription | undefined>(undefined);\n selectedMode: ViewMode = ViewMode.CATALOG;\n ViewMode = ViewMode;\n\n @ViewChild('modalActions', { read: TemplateRef }) templateModalActions!: TemplateRef<any>;\n @ViewChild('openModal') openModal!: ElementRef<HTMLButtonElement>;\n overlayRef?: OverlayRef;\n\n @Input() editionStartUrl: string = '/';\n @Input() consultStartUrl: string = '/';\n @Input() meAsOwner?: string;\n @Input() themePrefix: string | null = null;\n @Input() mode: 'theme' | 'meta' = 'meta';\n @Input() hideToolbox = false;\n @Input() showTheme = true;\n\n listOfManifests$ = new BehaviorSubject<ManifestDescription[] | null>(null);\n @Input() set listOfManifests(manifests: ManifestDescription[] | null) {\n this.listOfManifests$.next(Array.isArray(manifests) ? manifests : null);\n }\n\n @Input() officialPresentationNames: string[] = [];\n\n inputSearch$ = new BehaviorSubject('');\n @Input() set search(query: string) {\n this.inputSearch$.next(query);\n }\n\n constructor(\n protected store: Store<any>,\n protected overlay: Overlay,\n protected viewContainerRef: ViewContainerRef,\n protected router: Router,\n protected titleService: PryTitleService,\n protected activatedRoute: ActivatedRoute,\n protected ngZone: NgZone,\n @Optional() @Inject(PRY_ACCESS_TOKEN) private access: PryBaseAccess,\n private dialog: PryDialogService\n ) {\n super();\n this.subscriptions.add(\n this.activatedRoute.queryParams.subscribe((params) => {\n if (params['create']) {\n this.creation();\n }\n })\n );\n this.store.dispatch(DashboardActions.fetchManifestsList());\n this.manifests$ = combineLatest([\n this.store\n .select(DashboardSelectors.manifestsList)\n .pipe(\n map((manifestList) =>\n [...manifestList].sort((a, b) =>\n a.modificationDate ? b.modificationDate.localeCompare(a.modificationDate) : 1\n )\n )\n ),\n this.listOfManifests$\n ]).pipe(\n map(([dynamics, statics]) => statics ?? dynamics),\n map((manifests) =>\n manifests.map(\n (manifest) =>\n ({\n ...manifest,\n theme: manifest.metadata?.find((meta) => meta.metadataDef.name === '_theme')?.value\n }) as ManifestDescriptionWithTheme\n )\n )\n );\n\n this.filteredPresentations$ = combineLatest([\n this.manifests$,\n this.search$,\n this.inputSearch$.pipe(startWith(''))\n ]).pipe(\n map(([presentations, search, inputSearch]) =>\n presentations.filter((presentations) => {\n const [name, description] = [presentations.name.toLowerCase(), presentations.description?.toLowerCase()];\n const [searchQuery, inputSearchQuery] = [search?.toLowerCase(), inputSearch?.toLowerCase()];\n return !!searchQuery || !!inputSearchQuery\n ? (!!searchQuery && (name.includes(searchQuery) || description?.includes(searchQuery))) ||\n (!!inputSearchQuery && (name.includes(inputSearchQuery) || description?.includes(inputSearchQuery)))\n : true;\n })\n )\n );\n this.subscriptions.add(\n this.store.select(DashboardSelectors.presentation).subscribe((presentation) => {\n this.selectedMode = presentation?.viewMode ?? this.ViewMode.CATALOG;\n this.selectedPresentation$.next(presentation.current);\n })\n );\n this.titleService.changeTitle('@pry.presentation.title');\n }\n\n closeRestitution() {\n this.selectedPresentation$.next(undefined);\n this.selectedMode = ViewMode.CATALOG;\n this.store.dispatch(DashboardActions.selectPresentation({ presentation: undefined, viewMode: ViewMode.CATALOG }));\n }\n\n fetch(presentation: ManifestDescription) {\n this.store.dispatch(DashboardActions.loadPresentation({ presentation, viewMode: ViewMode.CONSULT }));\n this.ngZone.run(() => {\n this.router?.navigateByUrl(this.consultStartUrl);\n });\n }\n\n creation() {\n this.selectedMode = ViewMode.CREATION;\n this.store.dispatch(DashboardActions.updateManifest({ manifest: { windows: [] }, selectedIds: [] }));\n const newPresentation = {\n presentation: {\n id: v4(),\n name: '',\n accessRightsByGroup: {} as { [key: string]: string[] },\n owner: true\n } as ManifestDescription,\n viewMode: ViewMode.CREATION\n };\n this.store.dispatch(DashboardActions.selectPresentation(newPresentation));\n this.store.dispatch(DashboardActions.setGridLayout({ layout: DashboardGridLayout.FULL }));\n this.store.dispatch(DashboardActions.updateDisplayOptions({ mode: ViewMode.CREATION }));\n }\n\n edit(presentation: ManifestDescription) {\n this.selectedMode = ViewMode.EDITION;\n this.selectedPresentation$.next(presentation);\n this.titleService.changeTitle(presentation.name);\n this.store.dispatch(DashboardActions.selectPresentation({ presentation, viewMode: ViewMode.EDITION }));\n this.store.dispatch(DashboardActions.fetchStaticManifest({ id: presentation.id }));\n this.store.dispatch(DashboardActions.updateDisplayOptions({ mode: ViewMode.EDITION }));\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n }\n\n delete(id: string) {\n this.store.dispatch(DashboardActions.confirmManifestDeletion({ id }));\n this.toggleModalActions();\n }\n\n toggleModalActions(presentation?: ManifestDescription | null, moreButton?: HTMLButtonElement) {\n if (!this.overlayRef && presentation) {\n this.selectedPresentation$.next(presentation);\n this.store.dispatch(DashboardActions.selectPresentation({ presentation, viewMode: ViewMode.CATALOG }));\n this.store.dispatch(DashboardActions.loadManifest({ id: presentation.id }));\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n panelClass: ['m-context-menu-wrapper'],\n backdropClass: 'backdrop'\n })\n );\n this.overlayRef.backdropClick().subscribe(() => this.toggleModalActions(presentation));\n this.overlayRef.attach(new TemplatePortal(this.templateModalActions, this.viewContainerRef));\n const contextMenu = document.querySelector('div.m-context-menu') as HTMLDivElement;\n if (!!contextMenu && moreButton) {\n const rect = moreButton.getBoundingClientRect();\n contextMenu.style.minWidth = '185px';\n contextMenu.style.left = (rect?.left ?? 0) - (contextMenu?.clientWidth ?? 0) + 23 + 'px';\n contextMenu.style.top = (rect?.top ?? 0) + 30 + 'px';\n }\n } else {\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n this.selectedPresentation$.next(undefined);\n }\n }\n\n toggleModal(presentation?: ManifestDescription | null) {\n if (presentation) {\n this.selectedPresentation$.next(presentation);\n this.store.dispatch(DashboardActions.selectPresentation({ presentation, viewMode: ViewMode.CATALOG }));\n this.toggleModalActions();\n this.dialog.open(PryAccessRightsShareModalComponent, {\n hasBackdrop: true,\n panelClass: ['o-modal-wrapper'],\n backdropClass: 'backdrop',\n data: { manifest: presentation }\n });\n }\n }\n\n editContent(selectedPresentation: ManifestDescription) {\n this.store.dispatch(\n DashboardActions.loadPresentation({ presentation: selectedPresentation, viewMode: ViewMode.EDITION })\n );\n this.ngZone.run(() => {\n this.router?.navigateByUrl(this.consultStartUrl);\n });\n }\n\n isPrivate(presentation: ManifestDescription) {\n return Object.keys(presentation.accessRightsByGroup).length === 0;\n }\n\n canModify$(presentation: ManifestDescription) {\n return !this.access ? of(false) : this.access.canModifyPresentation(presentation);\n }\n}\n","<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\">\n @switch (selectedMode) {\n @default {\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <div class=\"no-data-dashboard\">\n @if ((filteredPresentations$ | async)?.length === 0 || !(filteredPresentations$ | async)) {\n {{ '@pry.presentation.noData' | i18n }}\n }\n </div>\n <ul class=\"o-presentation\">\n @for (presentation of filteredPresentations$ | async; track presentation.id; let index = $index) {\n <li class=\"o-presentation__item\">\n <div class=\"o-presentation__item__header\">\n @if (isPrivate(presentation)) {\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n }\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img alt=\"\" class=\"is-full-width\" [src]=\"presentation.image | getSecuredImage | async\" />\n </div>\n </div>\n @if (this.canModify$(presentation) | async) {\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.presentation.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n }\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <p class=\"a-h3\">{{ presentation.name }}</p>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <div class=\"u-display-flex -justify-space-between -align-center\">\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n @if (presentation.theme !== undefined) {\n <span class=\"a-chip -theme -md u-self-end\" [class.-u-hidden]=\"!showTheme\">\n {{ (themePrefix ?? '') + presentation.theme | i18n: { warn: false } }}\n </span>\n }\n </div>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n }\n @case (ViewMode.CREATION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n [officialPresentationNames] = \"officialPresentationNames\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n @case (ViewMode.EDITION) {\n <pry-add-edit-presentation\n [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n [officialPresentationNames] = \"officialPresentationNames\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n [themePrefix]=\"themePrefix\"\n ></pry-add-edit-presentation>\n }\n }\n</div>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n @if (selectedPresentation$ | async; as selectedPresentation) {\n <ul class=\"m-context-menu__list\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dialog presentation options\">\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editContent(selectedPresentation)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.editionContent' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!(this.canModify$(selectedPresentation) | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n }\n </div>\n</ng-template>\n","export const enTranslations = {\n '@pry': {\n presentation: {\n add: {\n pageTitle: 'Add presentation description',\n submit: 'Save dashboard'\n },\n edit: {\n pageTitle: 'Change dashboard description',\n submit: 'Save dashboard'\n },\n form: {\n name: 'Title',\n description: 'Description',\n image: 'Image',\n dragDrop: 'Drag and drop',\n or: 'or',\n categories: 'Categories',\n categoryInput: 'Add categories',\n grid: 'Current grid: ',\n cover: 'Image will cover the whole presentation card',\n theme: 'Theme'\n },\n noData: 'No presentations',\n share: 'Share',\n options: 'Presentation options',\n consult: 'Consult',\n view: 'Consult the presentation',\n private: 'Private presentation',\n homeView: 'Show on homepage',\n erase: 'Delete presentation',\n change: 'Modify the presentation',\n create: 'Create presentation',\n configuration: 'Build presentation',\n required: 'This field is required',\n maxLength: 'Allowed length : {{len}}',\n edition: 'Edit',\n editionContent: 'Edit content',\n delete: 'Delete',\n backToCatalog: 'Back to catalog',\n search: 'Search',\n title: 'Presentation catalog',\n more: 'Options'\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n presentation: {\n add: {\n pageTitle: 'Renseigner la description du tableau de bord',\n info: 'Informations',\n submit: 'Enregistrer'\n },\n edit: {\n pageTitle: 'Changer la description du tableau de bord',\n submit: 'Sauvegarder le tableau de bord'\n },\n form: {\n name: 'Titre',\n description: 'Description',\n image: 'Image d’illustration',\n dragDrop: 'Glisser - Déposer',\n or: 'ou',\n categories: 'Catégories',\n categoryInput: 'Saisir la/les catégories',\n grid: 'Grille actuelle: ',\n theme: 'Thématique'\n },\n noData: 'Aucun tableau de bord',\n share: 'Partager',\n options: 'Options du tableau de bord',\n consult: 'Consulter',\n view: 'Consulter le tableau de bord',\n private: 'Présentation privée',\n homeView: \"Afficher en page d'accueil\",\n erase: 'Supprimer le tableau de bord',\n change: 'Modifier le tableau de bord',\n create: 'Créer un tableau de bord',\n configuration: 'Enregistrer',\n required: 'Ce champ est requis',\n maxLength: 'Nombre de caractères autorisés : {{len}}',\n edition: 'Modifier',\n editionContent: 'Modifier la composition',\n delete: 'Supprimer',\n backToCatalog: 'Revenir au catalogue',\n search: 'Rechercher',\n title: 'Catalogue de tableaux de bord',\n more: 'Options'\n }\n }\n};\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport {\n PryCoreModule,\n PryDashboardModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PryOverlayModule,\n PrySelectModule,\n PryShareModule, PrySinceDateModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { PryAddEditPresentationComponent } from './components/add-edit-presentation/add-edit-presentation.component';\nimport { PryTitlePresentationComponent } from './components/title-presentation/title-presentation.component';\nimport { PryPresentationComponent } from './components/presentation.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PryPresentationCssComponent } from './style/css.component';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { PryExpandPanelModule } from '@provoly/dashboard/components/metadata-editor';\nimport { PryTextEditorModule } from '@provoly/dashboard/components/text-editor';\nimport { PryToolboxModule } from '@provoly/dashboard/toolbox';\n\nconst COMPONENTS = [\n PryPresentationComponent,\n PryAddEditPresentationComponent,\n PryTitlePresentationComponent,\n PryPresentationCssComponent\n];\n\n@NgModule({\n providers: [],\n declarations: [...COMPONENTS],\n imports: [\n PryIconModule,\n PryCoreModule,\n PryDashboardModule,\n ReactiveFormsModule,\n PrySelectModule,\n PryShareModule,\n FormsModule,\n PryOverlayModule,\n PryI18nModule,\n PryToolboxModule,\n PryCheckboxModule,\n CommonModule,\n A11yModule,\n PryExpandPanelModule,\n PryTextEditorModule,\n PrySinceDateModule\n ],\n exports: [...COMPONENTS]\n})\nexport class PryPresentationModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'presentation', frTranslations);\n this.pryTranslateService.addLangObject('en', 'presentation', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4","i2","i4","i3","i5","i6.PryAddEditPresentationComponent","i7.PryPresentationCssComponent","i8","i1"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@provoly/dashboard",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.60",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"homepage": "https://documentation.provoly.com/provoly-dashboard/main/index.html",
|
|
6
6
|
"repository": {
|
|
@@ -97,18 +97,18 @@
|
|
|
97
97
|
"esm": "./esm2022/dataset/provoly-dashboard-dataset.mjs",
|
|
98
98
|
"default": "./fesm2022/provoly-dashboard-dataset.mjs"
|
|
99
99
|
},
|
|
100
|
-
"./import": {
|
|
101
|
-
"types": "./import/index.d.ts",
|
|
102
|
-
"esm2022": "./esm2022/import/provoly-dashboard-import.mjs",
|
|
103
|
-
"esm": "./esm2022/import/provoly-dashboard-import.mjs",
|
|
104
|
-
"default": "./fesm2022/provoly-dashboard-import.mjs"
|
|
105
|
-
},
|
|
106
100
|
"./mock": {
|
|
107
101
|
"types": "./mock/index.d.ts",
|
|
108
102
|
"esm2022": "./esm2022/mock/provoly-dashboard-mock.mjs",
|
|
109
103
|
"esm": "./esm2022/mock/provoly-dashboard-mock.mjs",
|
|
110
104
|
"default": "./fesm2022/provoly-dashboard-mock.mjs"
|
|
111
105
|
},
|
|
106
|
+
"./import": {
|
|
107
|
+
"types": "./import/index.d.ts",
|
|
108
|
+
"esm2022": "./esm2022/import/provoly-dashboard-import.mjs",
|
|
109
|
+
"esm": "./esm2022/import/provoly-dashboard-import.mjs",
|
|
110
|
+
"default": "./fesm2022/provoly-dashboard-import.mjs"
|
|
111
|
+
},
|
|
112
112
|
"./notification": {
|
|
113
113
|
"types": "./notification/index.d.ts",
|
|
114
114
|
"esm2022": "./esm2022/notification/provoly-dashboard-notification.mjs",
|
|
@@ -349,17 +349,17 @@
|
|
|
349
349
|
"esm": "./esm2022/widgets/widget-template/provoly-dashboard-widgets-widget-template.mjs",
|
|
350
350
|
"default": "./fesm2022/provoly-dashboard-widgets-widget-template.mjs"
|
|
351
351
|
},
|
|
352
|
-
"./widgets/widget-vega": {
|
|
353
|
-
"types": "./widgets/widget-vega/index.d.ts",
|
|
354
|
-
"esm2022": "./esm2022/widgets/widget-vega/provoly-dashboard-widgets-widget-vega.mjs",
|
|
355
|
-
"esm": "./esm2022/widgets/widget-vega/provoly-dashboard-widgets-widget-vega.mjs",
|
|
356
|
-
"default": "./fesm2022/provoly-dashboard-widgets-widget-vega.mjs"
|
|
357
|
-
},
|
|
358
352
|
"./widgets/widget-tile": {
|
|
359
353
|
"types": "./widgets/widget-tile/index.d.ts",
|
|
360
354
|
"esm2022": "./esm2022/widgets/widget-tile/provoly-dashboard-widgets-widget-tile.mjs",
|
|
361
355
|
"esm": "./esm2022/widgets/widget-tile/provoly-dashboard-widgets-widget-tile.mjs",
|
|
362
356
|
"default": "./fesm2022/provoly-dashboard-widgets-widget-tile.mjs"
|
|
357
|
+
},
|
|
358
|
+
"./widgets/widget-vega": {
|
|
359
|
+
"types": "./widgets/widget-vega/index.d.ts",
|
|
360
|
+
"esm2022": "./esm2022/widgets/widget-vega/provoly-dashboard-widgets-widget-vega.mjs",
|
|
361
|
+
"esm": "./esm2022/widgets/widget-vega/provoly-dashboard-widgets-widget-vega.mjs",
|
|
362
|
+
"default": "./fesm2022/provoly-dashboard-widgets-widget-vega.mjs"
|
|
363
363
|
}
|
|
364
364
|
},
|
|
365
365
|
"schematics": "./schematics/collection.json",
|
|
@@ -25,6 +25,7 @@ export declare class PryAddEditPresentationComponent extends SubscriptionnerDire
|
|
|
25
25
|
editionStartUrl: string;
|
|
26
26
|
mode: 'theme' | 'meta';
|
|
27
27
|
goBack: EventEmitter<void>;
|
|
28
|
+
officialPresentationNames: string[];
|
|
28
29
|
constructor(store: Store, manifestService: ManifestService, router: Router);
|
|
29
30
|
saveOrUpdateDashboard(): void;
|
|
30
31
|
saveDashboard(): void;
|
|
@@ -34,5 +35,5 @@ export declare class PryAddEditPresentationComponent extends SubscriptionnerDire
|
|
|
34
35
|
metadata(): MetadataValue[];
|
|
35
36
|
getNewManifest(): GlobalManifest;
|
|
36
37
|
static ɵfac: i0.ɵɵFactoryDeclaration<PryAddEditPresentationComponent, [null, null, { optional: true; }]>;
|
|
37
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PryAddEditPresentationComponent, "pry-add-edit-presentation", never, { "selectedPresentation": { "alias": "selectedPresentation"; "required": false; }; "edition": { "alias": "edition"; "required": false; }; "themePrefix": { "alias": "themePrefix"; "required": false; }; "editionStartUrl": { "alias": "editionStartUrl"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; }, { "goBack": "goBack"; }, never, never, false, never>;
|
|
38
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PryAddEditPresentationComponent, "pry-add-edit-presentation", never, { "selectedPresentation": { "alias": "selectedPresentation"; "required": false; }; "edition": { "alias": "edition"; "required": false; }; "themePrefix": { "alias": "themePrefix"; "required": false; }; "editionStartUrl": { "alias": "editionStartUrl"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "officialPresentationNames": { "alias": "officialPresentationNames"; "required": false; }; }, { "goBack": "goBack"; }, never, never, false, never>;
|
|
38
39
|
}
|
|
@@ -36,6 +36,7 @@ export declare class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
36
36
|
showTheme: boolean;
|
|
37
37
|
listOfManifests$: BehaviorSubject<ManifestDescription[] | null>;
|
|
38
38
|
set listOfManifests(manifests: ManifestDescription[] | null);
|
|
39
|
+
officialPresentationNames: string[];
|
|
39
40
|
inputSearch$: BehaviorSubject<string>;
|
|
40
41
|
set search(query: string);
|
|
41
42
|
constructor(store: Store<any>, overlay: Overlay, viewContainerRef: ViewContainerRef, router: Router, titleService: PryTitleService, activatedRoute: ActivatedRoute, ngZone: NgZone, access: PryBaseAccess, dialog: PryDialogService);
|
|
@@ -50,6 +51,6 @@ export declare class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
50
51
|
isPrivate(presentation: ManifestDescription): boolean;
|
|
51
52
|
canModify$(presentation: ManifestDescription): Observable<boolean>;
|
|
52
53
|
static ɵfac: i0.ɵɵFactoryDeclaration<PryPresentationComponent, [null, null, null, null, null, null, null, { optional: true; }, null]>;
|
|
53
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PryPresentationComponent, "pry-presentation", never, { "editionStartUrl": { "alias": "editionStartUrl"; "required": false; }; "consultStartUrl": { "alias": "consultStartUrl"; "required": false; }; "meAsOwner": { "alias": "meAsOwner"; "required": false; }; "themePrefix": { "alias": "themePrefix"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "hideToolbox": { "alias": "hideToolbox"; "required": false; }; "showTheme": { "alias": "showTheme"; "required": false; }; "listOfManifests": { "alias": "listOfManifests"; "required": false; }; "search": { "alias": "search"; "required": false; }; }, {}, never, never, false, never>;
|
|
54
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PryPresentationComponent, "pry-presentation", never, { "editionStartUrl": { "alias": "editionStartUrl"; "required": false; }; "consultStartUrl": { "alias": "consultStartUrl"; "required": false; }; "meAsOwner": { "alias": "meAsOwner"; "required": false; }; "themePrefix": { "alias": "themePrefix"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "hideToolbox": { "alias": "hideToolbox"; "required": false; }; "showTheme": { "alias": "showTheme"; "required": false; }; "listOfManifests": { "alias": "listOfManifests"; "required": false; }; "officialPresentationNames": { "alias": "officialPresentationNames"; "required": false; }; "search": { "alias": "search"; "required": false; }; }, {}, never, never, false, never>;
|
|
54
55
|
}
|
|
55
56
|
export {};
|