@provoly/dashboard 1.2.6 → 1.2.8

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.
@@ -78,11 +78,11 @@ export class PresentationFormComponent extends SubscriptionnerDirective {
78
78
  };
79
79
  }
80
80
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PresentationFormComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
81
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: PresentationFormComponent, selector: "pry-presentation-form", inputs: { mode: "mode", themePrefix: "themePrefix", selectedPresentation: "selectedPresentation" }, outputs: { formValue: "formValue", isFormValid: "isFormValid" }, usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n @if (name.touched && name.errors?.['required']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.required' | i18n }}\n </label>\n }\n @if (name.touched && name.errors?.['maxlength']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '50' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{ '@pry.presentation.form.description' | i18n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n @if (description.touched && description.errors?.['maxlength']) {\n <label for=\"presentation_description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '200' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\" *ngIf=\"mode === 'theme'\">\n <label class=\"a-label\" for=\"presentation_theme\">{{ '@pry.presentation.form.theme' | i18n }}</label>\n <pry-select\n id=\"presentation_theme\"\n [items]=\"possibleThemes\"\n formControlName=\"theme\"\n [clearable]=\"true\"\n [i18nPrefix]=\"themePrefix\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <pry-text-editor formControlName=\"additionalInformation\"></pry-text-editor>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "component", type: i4.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i5.PryTextEditorComponent, selector: "pry-text-editor", inputs: ["tabView"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
81
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: PresentationFormComponent, selector: "pry-presentation-form", inputs: { mode: "mode", themePrefix: "themePrefix", selectedPresentation: "selectedPresentation" }, outputs: { formValue: "formValue", isFormValid: "isFormValid" }, usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n @if (name.touched && name.errors?.['required']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.required' | i18n }}\n </label>\n }\n @if (name.touched && name.errors?.['maxlength']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '50' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{ '@pry.presentation.form.description' | i18n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n @if (description.touched && description.errors?.['maxlength']) {\n <label for=\"presentation_description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '200' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\" *ngIf=\"mode === 'theme'\">\n <label class=\"a-label\" for=\"presentation_theme\">{{ '@pry.presentation.form.theme' | i18n }}</label>\n <pry-select\n id=\"presentation_theme\"\n [items]=\"possibleThemes\"\n formControlName=\"theme\"\n [clearable]=\"true\"\n [i18nPrefix]=\"themePrefix\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.toolbox.about' | i18n }}</label>\n <pry-text-editor formControlName=\"additionalInformation\"></pry-text-editor>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "component", type: i4.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i5.PryTextEditorComponent, selector: "pry-text-editor", inputs: ["tabView"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
82
82
  }
83
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PresentationFormComponent, decorators: [{
84
84
  type: Component,
85
- args: [{ selector: 'pry-presentation-form', template: "<form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n @if (name.touched && name.errors?.['required']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.required' | i18n }}\n </label>\n }\n @if (name.touched && name.errors?.['maxlength']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '50' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{ '@pry.presentation.form.description' | i18n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n @if (description.touched && description.errors?.['maxlength']) {\n <label for=\"presentation_description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '200' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\" *ngIf=\"mode === 'theme'\">\n <label class=\"a-label\" for=\"presentation_theme\">{{ '@pry.presentation.form.theme' | i18n }}</label>\n <pry-select\n id=\"presentation_theme\"\n [items]=\"possibleThemes\"\n formControlName=\"theme\"\n [clearable]=\"true\"\n [i18nPrefix]=\"themePrefix\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <pry-text-editor formControlName=\"additionalInformation\"></pry-text-editor>\n </div>\n</form>\n" }]
85
+ args: [{ selector: 'pry-presentation-form', template: "<form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n @if (name.touched && name.errors?.['required']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.required' | i18n }}\n </label>\n }\n @if (name.touched && name.errors?.['maxlength']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '50' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{ '@pry.presentation.form.description' | i18n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n @if (description.touched && description.errors?.['maxlength']) {\n <label for=\"presentation_description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '200' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\" *ngIf=\"mode === 'theme'\">\n <label class=\"a-label\" for=\"presentation_theme\">{{ '@pry.presentation.form.theme' | i18n }}</label>\n <pry-select\n id=\"presentation_theme\"\n [items]=\"possibleThemes\"\n formControlName=\"theme\"\n [clearable]=\"true\"\n [i18nPrefix]=\"themePrefix\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.toolbox.about' | i18n }}</label>\n <pry-text-editor formControlName=\"additionalInformation\"></pry-text-editor>\n </div>\n</form>\n" }]
86
86
  }], ctorParameters: () => [{ type: i1.Store }], propDecorators: { mode: [{
87
87
  type: Input
88
88
  }], themePrefix: [{
@@ -94,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
94
94
  }], isFormValid: [{
95
95
  type: Output
96
96
  }] } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvdG9vbGJveC9zaGFyZWQvcHJlc2VudGF0aW9uLWZvcm0vcHJlc2VudGF0aW9uLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvdG9vbGJveC9zaGFyZWQvcHJlc2VudGF0aW9uLWZvcm0vcHJlc2VudGF0aW9uLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsWUFBWSxFQUVaLHdCQUF3QixFQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBaUIsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7Ozs7Ozs7QUFzQm5HLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx3QkFBd0I7SUFtQnJFLElBQWEsb0JBQW9CLENBQUMsWUFBNkM7UUFDN0UsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBS0QsWUFBc0IsS0FBWTtRQUNoQyxLQUFLLEVBQUUsQ0FBQztRQURZLFVBQUssR0FBTCxLQUFLLENBQU87UUF6QmxDLFNBQUksR0FBRyxJQUFJLFNBQVMsQ0FBbUI7WUFDckMsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLFNBQVMsRUFBRTtnQkFD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Z0JBR08sb0JBQW9CO3NCQUFoQyxLQUFLO2dCQUlJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIERFRkFVTFRfREFTSEJPQVJEX0lDT05fVVJMLFxuICBMaWJyYXJ5VHlwZXMsXG4gIE1hbmlmZXN0RGVzY3JpcHRpb24sXG4gIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZVxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWV0YWRhdGFBY3Rpb25zLCBNZXRhZGF0YVNlbGVjdG9ycyB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL21ldGFkYXRhLWVkaXRvcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25Gb3JtIHtcbiAgbmFtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbiAgZGVzY3JpcHRpb246IEZvcm1Db250cm9sPHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+O1xuICB0aGVtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD47XG4gIGFkZGl0aW9uYWxJbmZvcm1hdGlvbjogRm9ybUNvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uRm9ybVZhbHVlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdGhlbWU/OiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxJbmZvcm1hdGlvbj86IHN0cmluZztcbiAgaW1hZ2U6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXByZXNlbnRhdGlvbi1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXNlbnRhdGlvbi1mb3JtLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcmVzZW50YXRpb25Gb3JtQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXA8UHJlc2VudGF0aW9uRm9ybT4oe1xuICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbCh1bmRlZmluZWQsIHtcbiAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldLFxuICAgICAgbm9uTnVsbGFibGU6IHRydWVcbiAgICB9KSxcbiAgICBkZXNjcmlwdGlvbjogbmV3IEZvcm1Db250cm9sKHVuZGVmaW5lZCwgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwMCldKSxcbiAgICB0aGVtZTogbmV3IEZvcm1Db250cm9sKHVuZGVmaW5lZCksXG4gICAgYWRkaXRpb25hbEluZm9ybWF0aW9uOiBuZXcgRm9ybUNvbnRyb2wodW5kZWZpbmVkKVxuICB9KTtcblxuICBpbWFnZTogc3RyaW5nID0gREVGQVVMVF9EQVNIQk9BUkRfSUNPTl9VUkw7XG4gIHR5cGU6IExpYnJhcnlUeXBlcyA9IExpYnJhcnlUeXBlcy5JTExVU1RSQVRJT047XG4gIHBvc3NpYmxlVGhlbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIG1vZGU6ICd0aGVtZScgfCAnbWV0YScgPSAnbWV0YSc7XG4gIEBJbnB1dCgpIHRoZW1lUHJlZml4OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBzZWxlY3RlZFByZXNlbnRhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hbmlmZXN0RGVzY3JpcHRpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZFByZXNlbnRhdGlvbihwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbik7XG4gIH1cblxuICBAT3V0cHV0KCkgZm9ybVZhbHVlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYXJ0aWFsPFByZXNlbnRhdGlvbkZvcm1WYWx1ZT4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIEBPdXRwdXQoKSBpc0Zvcm1WYWxpZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzdG9yZTogU3RvcmUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTWV0YWRhdGFBY3Rpb25zLmxvYWRNZXRhZGF0YSgpKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChNZXRhZGF0YVNlbGVjdG9ycy5tZXRhZGF0YSkuc3Vic2NyaWJlKChtZXRhZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLnBvc3NpYmxlVGhlbWVzID0gbWV0YWRhdGE/LmZpbmQoKG1ldGEpID0+IG1ldGEubmFtZSA9PT0gJ190aGVtZScpPy5hbGxvd2VkVmFsdWVzID8/IFtdO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0Zvcm1WYWxpZC5uZXh0KHRoaXMuZm9ybS52YWxpZCk7XG4gICAgICAgIHRoaXMuZm9ybVZhbHVlLm5leHQodGhpcy5nZXRGb3JtVmFsdWUoKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmltYWdlID0gdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWU/LmltYWdlID8/IERFRkFVTFRfREFTSEJPQVJEX0lDT05fVVJMO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5zdWJzY3JpYmUoKHByZXNlbnRhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB0aGVtZSA9IHByZXNlbnRhdGlvbj8ubWV0YWRhdGE/LmZpbmQoKG1ldGFkYXRhKSA9PiBtZXRhZGF0YS5tZXRhZGF0YURlZi5uYW1lID09PSAnX3RoZW1lJyk/LnZhbHVlO1xuICAgICAgICBpZiAoISF0aGVtZSkgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyB0aGVtZSB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC52YWx1ZSkgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogQWJzdHJhY3RDb250cm9sPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbJ25hbWUnXTtcbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvbigpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbJ2Rlc2NyaXB0aW9uJ107XG4gIH1cblxuICBnZXQgdGhlbWUoKTogQWJzdHJhY3RDb250cm9sPHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzWyd0aGVtZSddO1xuICB9XG5cbiAgZ2V0IGFkZGl0aW9uYWxJbmZvcm1hdGlvbigpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbJ2FkZGl0aW9uYWxJbmZvcm1hdGlvbiddO1xuICB9XG5cbiAgZ2V0Rm9ybVZhbHVlKCk6IFBhcnRpYWw8UHJlc2VudGF0aW9uRm9ybVZhbHVlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZS52YWx1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLnZhbHVlID09PSBudWxsID8gdW5kZWZpbmVkIDogdGhpcy5kZXNjcmlwdGlvbi52YWx1ZSxcbiAgICAgIHRoZW1lOiB0aGlzLnRoZW1lLnZhbHVlID09PSBudWxsID8gdW5kZWZpbmVkIDogdGhpcy50aGVtZS52YWx1ZSxcbiAgICAgIGFkZGl0aW9uYWxJbmZvcm1hdGlvbjogdGhpcy5hZGRpdGlvbmFsSW5mb3JtYXRpb24udmFsdWUgPT09IG51bGwgPyB1bmRlZmluZWQgOiB0aGlzLmFkZGl0aW9uYWxJbmZvcm1hdGlvbi52YWx1ZSxcbiAgICAgIGltYWdlOiB0aGlzLmltYWdlXG4gICAgfTtcbiAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJvLXByZXNlbnRhdGlvbi1mb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLWZ1bGxcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIj57eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5uYW1lJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgaWQ9XCJwcmVzZW50YXRpb25fbmFtZVwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0ubmFtZScgfCBpMThuIH19XCJcbiAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgIG1heGxlbmd0aD1cIjUwXCJcbiAgICAgIHJlcXVpcmVkXG4gICAgLz5cbiAgICBAaWYgKG5hbWUudG91Y2hlZCAmJiBuYW1lLmVycm9ycz8uWydyZXF1aXJlZCddKSB7XG4gICAgICA8bGFiZWwgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIiBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIj5cbiAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLnJlcXVpcmVkJyB8IGkxOG4gfX1cbiAgICAgIDwvbGFiZWw+XG4gICAgfVxuICAgIEBpZiAobmFtZS50b3VjaGVkICYmIG5hbWUuZXJyb3JzPy5bJ21heGxlbmd0aCddKSB7XG4gICAgICA8bGFiZWwgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIiBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIj5cbiAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLm1heExlbmd0aCcgfCBpMThuOiB7IGxlbjogJzUwJyB9IH19XG4gICAgICA8L2xhYmVsPlxuICAgIH1cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLWZ1bGxcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwicHJlc2VudGF0aW9uX2Rlc2NyaXB0aW9uXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0uZGVzY3JpcHRpb24nIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgPHRleHRhcmVhXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICBpZD1cInByZXNlbnRhdGlvbl9kZXNjcmlwdGlvblwiXG4gICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgY29scz1cIjMwXCJcbiAgICAgIHJvd3M9XCI1XCJcbiAgICAgIG1heGxlbmd0aD1cIjIwMFwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLmRlc2NyaXB0aW9uJyB8IGkxOG4gfX1cIlxuICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgID48L3RleHRhcmVhPlxuICAgIEBpZiAoZGVzY3JpcHRpb24udG91Y2hlZCAmJiBkZXNjcmlwdGlvbi5lcnJvcnM/LlsnbWF4bGVuZ3RoJ10pIHtcbiAgICAgIDxsYWJlbCBmb3I9XCJwcmVzZW50YXRpb25fZGVzY3JpcHRpb25cIiBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIj5cbiAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLm1heExlbmd0aCcgfCBpMThuOiB7IGxlbjogJzIwMCcgfSB9fVxuICAgICAgPC9sYWJlbD5cbiAgICB9XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1mdWxsXCIgKm5nSWY9XCJtb2RlID09PSAndGhlbWUnXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cInByZXNlbnRhdGlvbl90aGVtZVwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLnRoZW1lJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgIDxwcnktc2VsZWN0XG4gICAgICBpZD1cInByZXNlbnRhdGlvbl90aGVtZVwiXG4gICAgICBbaXRlbXNdPVwicG9zc2libGVUaGVtZXNcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGhlbWVcIlxuICAgICAgW2NsZWFyYWJsZV09XCJ0cnVlXCJcbiAgICAgIFtpMThuUHJlZml4XT1cInRoZW1lUHJlZml4XCJcbiAgICA+PC9wcnktc2VsZWN0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCAtd2lkdGgtZnVsbFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJwcmVzZW50YXRpb25faW1hZ2VcIj57eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5pbWFnZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiby1maWxlLWlucHV0XCI+XG4gICAgICA8cHJ5LXNlbGVjdC1pbWFnZVxuICAgICAgICBpZD1cInByZXNlbnRhdGlvbl9pbWFnZVwiXG4gICAgICAgIChjaGFuZ2VkKT1cImltYWdlID0gJGV2ZW50XCJcbiAgICAgICAgW2ljb25VcmxdPVwiaW1hZ2VcIlxuICAgICAgICBbbW9kZV09XCJ0eXBlXCJcbiAgICAgID48L3ByeS1zZWxlY3QtaW1hZ2U+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1mdWxsXCI+XG4gICAgPHByeS10ZXh0LWVkaXRvciBmb3JtQ29udHJvbE5hbWU9XCJhZGRpdGlvbmFsSW5mb3JtYXRpb25cIj48L3ByeS10ZXh0LWVkaXRvcj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvdG9vbGJveC9zaGFyZWQvcHJlc2VudGF0aW9uLWZvcm0vcHJlc2VudGF0aW9uLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvdG9vbGJveC9zaGFyZWQvcHJlc2VudGF0aW9uLWZvcm0vcHJlc2VudGF0aW9uLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsWUFBWSxFQUVaLHdCQUF3QixFQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBaUIsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7Ozs7Ozs7QUFzQm5HLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx3QkFBd0I7SUFtQnJFLElBQWEsb0JBQW9CLENBQUMsWUFBNkM7UUFDN0UsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBS0QsWUFBc0IsS0FBWTtRQUNoQyxLQUFLLEVBQUUsQ0FBQztRQURZLFVBQUssR0FBTCxLQUFLLENBQU87UUF6QmxDLFNBQUksR0FBRyxJQUFJLFNBQVMsQ0FBbUI7WUFDckMsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLFNBQVMsRUFBRTtnQkFD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Z0JBR08sb0JBQW9CO3NCQUFoQyxLQUFLO2dCQUlJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIERFRkFVTFRfREFTSEJPQVJEX0lDT05fVVJMLFxuICBMaWJyYXJ5VHlwZXMsXG4gIE1hbmlmZXN0RGVzY3JpcHRpb24sXG4gIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZVxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWV0YWRhdGFBY3Rpb25zLCBNZXRhZGF0YVNlbGVjdG9ycyB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL21ldGFkYXRhLWVkaXRvcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25Gb3JtIHtcbiAgbmFtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbiAgZGVzY3JpcHRpb246IEZvcm1Db250cm9sPHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+O1xuICB0aGVtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD47XG4gIGFkZGl0aW9uYWxJbmZvcm1hdGlvbjogRm9ybUNvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uRm9ybVZhbHVlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdGhlbWU/OiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxJbmZvcm1hdGlvbj86IHN0cmluZztcbiAgaW1hZ2U6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXByZXNlbnRhdGlvbi1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXNlbnRhdGlvbi1mb3JtLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcmVzZW50YXRpb25Gb3JtQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXA8UHJlc2VudGF0aW9uRm9ybT4oe1xuICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbCh1bmRlZmluZWQsIHtcbiAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldLFxuICAgICAgbm9uTnVsbGFibGU6IHRydWVcbiAgICB9KSxcbiAgICBkZXNjcmlwdGlvbjogbmV3IEZvcm1Db250cm9sKHVuZGVmaW5lZCwgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwMCldKSxcbiAgICB0aGVtZTogbmV3IEZvcm1Db250cm9sKHVuZGVmaW5lZCksXG4gICAgYWRkaXRpb25hbEluZm9ybWF0aW9uOiBuZXcgRm9ybUNvbnRyb2wodW5kZWZpbmVkKVxuICB9KTtcblxuICBpbWFnZTogc3RyaW5nID0gREVGQVVMVF9EQVNIQk9BUkRfSUNPTl9VUkw7XG4gIHR5cGU6IExpYnJhcnlUeXBlcyA9IExpYnJhcnlUeXBlcy5JTExVU1RSQVRJT047XG4gIHBvc3NpYmxlVGhlbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIG1vZGU6ICd0aGVtZScgfCAnbWV0YScgPSAnbWV0YSc7XG4gIEBJbnB1dCgpIHRoZW1lUHJlZml4OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBzZWxlY3RlZFByZXNlbnRhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hbmlmZXN0RGVzY3JpcHRpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZFByZXNlbnRhdGlvbihwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbik7XG4gIH1cblxuICBAT3V0cHV0KCkgZm9ybVZhbHVlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYXJ0aWFsPFByZXNlbnRhdGlvbkZvcm1WYWx1ZT4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIEBPdXRwdXQoKSBpc0Zvcm1WYWxpZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzdG9yZTogU3RvcmUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTWV0YWRhdGFBY3Rpb25zLmxvYWRNZXRhZGF0YSgpKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChNZXRhZGF0YVNlbGVjdG9ycy5tZXRhZGF0YSkuc3Vic2NyaWJlKChtZXRhZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLnBvc3NpYmxlVGhlbWVzID0gbWV0YWRhdGE/LmZpbmQoKG1ldGEpID0+IG1ldGEubmFtZSA9PT0gJ190aGVtZScpPy5hbGxvd2VkVmFsdWVzID8/IFtdO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0Zvcm1WYWxpZC5uZXh0KHRoaXMuZm9ybS52YWxpZCk7XG4gICAgICAgIHRoaXMuZm9ybVZhbHVlLm5leHQodGhpcy5nZXRGb3JtVmFsdWUoKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmltYWdlID0gdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWU/LmltYWdlID8/IERFRkFVTFRfREFTSEJPQVJEX0lDT05fVVJMO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5zdWJzY3JpYmUoKHByZXNlbnRhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB0aGVtZSA9IHByZXNlbnRhdGlvbj8ubWV0YWRhdGE/LmZpbmQoKG1ldGFkYXRhKSA9PiBtZXRhZGF0YS5tZXRhZGF0YURlZi5uYW1lID09PSAnX3RoZW1lJyk/LnZhbHVlO1xuICAgICAgICBpZiAoISF0aGVtZSkgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyB0aGVtZSB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC52YWx1ZSkgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogQWJzdHJhY3RDb250cm9sPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbJ25hbWUnXTtcbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvbigpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbJ2Rlc2NyaXB0aW9uJ107XG4gIH1cblxuICBnZXQgdGhlbWUoKTogQWJzdHJhY3RDb250cm9sPHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzWyd0aGVtZSddO1xuICB9XG5cbiAgZ2V0IGFkZGl0aW9uYWxJbmZvcm1hdGlvbigpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbJ2FkZGl0aW9uYWxJbmZvcm1hdGlvbiddO1xuICB9XG5cbiAgZ2V0Rm9ybVZhbHVlKCk6IFBhcnRpYWw8UHJlc2VudGF0aW9uRm9ybVZhbHVlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZS52YWx1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLnZhbHVlID09PSBudWxsID8gdW5kZWZpbmVkIDogdGhpcy5kZXNjcmlwdGlvbi52YWx1ZSxcbiAgICAgIHRoZW1lOiB0aGlzLnRoZW1lLnZhbHVlID09PSBudWxsID8gdW5kZWZpbmVkIDogdGhpcy50aGVtZS52YWx1ZSxcbiAgICAgIGFkZGl0aW9uYWxJbmZvcm1hdGlvbjogdGhpcy5hZGRpdGlvbmFsSW5mb3JtYXRpb24udmFsdWUgPT09IG51bGwgPyB1bmRlZmluZWQgOiB0aGlzLmFkZGl0aW9uYWxJbmZvcm1hdGlvbi52YWx1ZSxcbiAgICAgIGltYWdlOiB0aGlzLmltYWdlXG4gICAgfTtcbiAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJvLXByZXNlbnRhdGlvbi1mb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLWZ1bGxcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIj57eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5uYW1lJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgaWQ9XCJwcmVzZW50YXRpb25fbmFtZVwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0ubmFtZScgfCBpMThuIH19XCJcbiAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgIG1heGxlbmd0aD1cIjUwXCJcbiAgICAgIHJlcXVpcmVkXG4gICAgLz5cbiAgICBAaWYgKG5hbWUudG91Y2hlZCAmJiBuYW1lLmVycm9ycz8uWydyZXF1aXJlZCddKSB7XG4gICAgICA8bGFiZWwgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIiBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIj5cbiAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLnJlcXVpcmVkJyB8IGkxOG4gfX1cbiAgICAgIDwvbGFiZWw+XG4gICAgfVxuICAgIEBpZiAobmFtZS50b3VjaGVkICYmIG5hbWUuZXJyb3JzPy5bJ21heGxlbmd0aCddKSB7XG4gICAgICA8bGFiZWwgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIiBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIj5cbiAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLm1heExlbmd0aCcgfCBpMThuOiB7IGxlbjogJzUwJyB9IH19XG4gICAgICA8L2xhYmVsPlxuICAgIH1cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLWZ1bGxcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwicHJlc2VudGF0aW9uX2Rlc2NyaXB0aW9uXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0uZGVzY3JpcHRpb24nIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgPHRleHRhcmVhXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICBpZD1cInByZXNlbnRhdGlvbl9kZXNjcmlwdGlvblwiXG4gICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgY29scz1cIjMwXCJcbiAgICAgIHJvd3M9XCI1XCJcbiAgICAgIG1heGxlbmd0aD1cIjIwMFwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLmRlc2NyaXB0aW9uJyB8IGkxOG4gfX1cIlxuICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgID48L3RleHRhcmVhPlxuICAgIEBpZiAoZGVzY3JpcHRpb24udG91Y2hlZCAmJiBkZXNjcmlwdGlvbi5lcnJvcnM/LlsnbWF4bGVuZ3RoJ10pIHtcbiAgICAgIDxsYWJlbCBmb3I9XCJwcmVzZW50YXRpb25fZGVzY3JpcHRpb25cIiBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIj5cbiAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLm1heExlbmd0aCcgfCBpMThuOiB7IGxlbjogJzIwMCcgfSB9fVxuICAgICAgPC9sYWJlbD5cbiAgICB9XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1mdWxsXCIgKm5nSWY9XCJtb2RlID09PSAndGhlbWUnXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cInByZXNlbnRhdGlvbl90aGVtZVwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLnRoZW1lJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgIDxwcnktc2VsZWN0XG4gICAgICBpZD1cInByZXNlbnRhdGlvbl90aGVtZVwiXG4gICAgICBbaXRlbXNdPVwicG9zc2libGVUaGVtZXNcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGhlbWVcIlxuICAgICAgW2NsZWFyYWJsZV09XCJ0cnVlXCJcbiAgICAgIFtpMThuUHJlZml4XT1cInRoZW1lUHJlZml4XCJcbiAgICA+PC9wcnktc2VsZWN0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCAtd2lkdGgtZnVsbFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJwcmVzZW50YXRpb25faW1hZ2VcIj57eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5pbWFnZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiby1maWxlLWlucHV0XCI+XG4gICAgICA8cHJ5LXNlbGVjdC1pbWFnZVxuICAgICAgICBpZD1cInByZXNlbnRhdGlvbl9pbWFnZVwiXG4gICAgICAgIChjaGFuZ2VkKT1cImltYWdlID0gJGV2ZW50XCJcbiAgICAgICAgW2ljb25VcmxdPVwiaW1hZ2VcIlxuICAgICAgICBbbW9kZV09XCJ0eXBlXCJcbiAgICAgID48L3ByeS1zZWxlY3QtaW1hZ2U+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1mdWxsXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cInByZXNlbnRhdGlvbl9pbWFnZVwiPnt7ICdAcHJ5LnRvb2xib3guYWJvdXQnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgPHByeS10ZXh0LWVkaXRvciBmb3JtQ29udHJvbE5hbWU9XCJhZGRpdGlvbmFsSW5mb3JtYXRpb25cIj48L3ByeS10ZXh0LWVkaXRvcj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
@@ -2,10 +2,10 @@ import { Component, ViewEncapsulation } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class PryWidgetAnalyticCssComponent {
4
4
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryWidgetAnalyticCssComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryWidgetAnalyticCssComponent, selector: "pry-widget-analytic-css", ngImport: i0, template: '', isInline: true, styles: [".o-widget__analytic__table,.o-widget__analytic__table table{width:100%}.o-widget__analytic__table table th,.o-widget__analytic__table table td{text-align:center}.o-widget__analytic__table table th:first-child,.o-widget__analytic__table table td:first-child{text-align:left}.o-widget__analytic__table table .primary-header th:not(:first-child){background-color:#d7e7f7}.o-widget__analytic__table table .secondary-header th:not(:first-child){background-color:#f3f8fc}.o-widget__analytic__table table .partial-total th,.o-widget__analytic__table table .partial-total td{background-color:#f0f0f0}.o-widget__analytic__table table .grand-total th,.o-widget__analytic__table table .grand-total td{background-color:#bdb9da}.o-widget__analytic__color-picker-container{margin-top:.625rem;gap:.9375rem;flex-wrap:wrap}.o-widget__analytic__color-picker{position:relative}.o-widget__analytic__color-picker-remove{position:absolute;right:-20px;top:-10px;z-index:2;color:#263340;padding:0}.o-widget__analytic__color-picker-add{padding:.75rem;border:1px solid #263340;border-radius:50%;width:20px}.cdk-drop-list-dragging .cdk-drag,.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drop-list-dragging .o-widget__analytic__color-picker:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drag-preview{box-sizing:border-box;border-radius:50%;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}\n"], encapsulation: i0.ViewEncapsulation.None }); }
5
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryWidgetAnalyticCssComponent, selector: "pry-widget-analytic-css", ngImport: i0, template: '', isInline: true, styles: [".o-widget__analytic{font-size:.75rem}.o-widget__analytic__table,.o-widget__analytic__table table{width:100%}.o-widget__analytic__table table th,.o-widget__analytic__table table td{text-align:center}.o-widget__analytic__table table th:first-child,.o-widget__analytic__table table td:first-child{text-align:left}.o-widget__analytic__table table .primary-header th:not(:first-child){background-color:#d7e7f7}.o-widget__analytic__table table .secondary-header th:not(:first-child){background-color:#f3f8fc}.o-widget__analytic__table table .partial-total th,.o-widget__analytic__table table .partial-total td{background-color:#f0f0f0}.o-widget__analytic__table table .grand-total th,.o-widget__analytic__table table .grand-total td{background-color:#bdb9da}.o-widget__analytic__color-picker-container{margin-top:.625rem;gap:.9375rem;flex-wrap:wrap}.o-widget__analytic__color-picker{position:relative}.o-widget__analytic__color-picker-remove{position:absolute;right:-20px;top:-10px;z-index:2;color:#263340;padding:0}.o-widget__analytic__color-picker-add{padding:.75rem;border:1px solid #263340;border-radius:50%;width:20px}.cdk-drop-list-dragging .cdk-drag,.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drop-list-dragging .o-widget__analytic__color-picker:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drag-preview{box-sizing:border-box;border-radius:50%;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}\n"], encapsulation: i0.ViewEncapsulation.None }); }
6
6
  }
7
7
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryWidgetAnalyticCssComponent, decorators: [{
8
8
  type: Component,
9
- args: [{ selector: 'pry-widget-analytic-css', template: '', encapsulation: ViewEncapsulation.None, styles: [".o-widget__analytic__table,.o-widget__analytic__table table{width:100%}.o-widget__analytic__table table th,.o-widget__analytic__table table td{text-align:center}.o-widget__analytic__table table th:first-child,.o-widget__analytic__table table td:first-child{text-align:left}.o-widget__analytic__table table .primary-header th:not(:first-child){background-color:#d7e7f7}.o-widget__analytic__table table .secondary-header th:not(:first-child){background-color:#f3f8fc}.o-widget__analytic__table table .partial-total th,.o-widget__analytic__table table .partial-total td{background-color:#f0f0f0}.o-widget__analytic__table table .grand-total th,.o-widget__analytic__table table .grand-total td{background-color:#bdb9da}.o-widget__analytic__color-picker-container{margin-top:.625rem;gap:.9375rem;flex-wrap:wrap}.o-widget__analytic__color-picker{position:relative}.o-widget__analytic__color-picker-remove{position:absolute;right:-20px;top:-10px;z-index:2;color:#263340;padding:0}.o-widget__analytic__color-picker-add{padding:.75rem;border:1px solid #263340;border-radius:50%;width:20px}.cdk-drop-list-dragging .cdk-drag,.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drop-list-dragging .o-widget__analytic__color-picker:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drag-preview{box-sizing:border-box;border-radius:50%;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}\n"] }]
9
+ args: [{ selector: 'pry-widget-analytic-css', template: '', encapsulation: ViewEncapsulation.None, styles: [".o-widget__analytic{font-size:.75rem}.o-widget__analytic__table,.o-widget__analytic__table table{width:100%}.o-widget__analytic__table table th,.o-widget__analytic__table table td{text-align:center}.o-widget__analytic__table table th:first-child,.o-widget__analytic__table table td:first-child{text-align:left}.o-widget__analytic__table table .primary-header th:not(:first-child){background-color:#d7e7f7}.o-widget__analytic__table table .secondary-header th:not(:first-child){background-color:#f3f8fc}.o-widget__analytic__table table .partial-total th,.o-widget__analytic__table table .partial-total td{background-color:#f0f0f0}.o-widget__analytic__table table .grand-total th,.o-widget__analytic__table table .grand-total td{background-color:#bdb9da}.o-widget__analytic__color-picker-container{margin-top:.625rem;gap:.9375rem;flex-wrap:wrap}.o-widget__analytic__color-picker{position:relative}.o-widget__analytic__color-picker-remove{position:absolute;right:-20px;top:-10px;z-index:2;color:#263340;padding:0}.o-widget__analytic__color-picker-add{padding:.75rem;border:1px solid #263340;border-radius:50%;width:20px}.cdk-drop-list-dragging .cdk-drag,.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drop-list-dragging .o-widget__analytic__color-picker:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drag-preview{box-sizing:border-box;border-radius:50%;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}\n"] }]
10
10
  }] });
11
11
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LWFuYWx5dGljL3N0eWxlL2Nzcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRN0QsTUFBTSxPQUFPLDZCQUE2Qjs4R0FBN0IsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsK0RBSjlCLEVBQUU7OzJGQUlELDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDRSx5QkFBeUIsWUFDekIsRUFBRSxpQkFFRyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktd2lkZ2V0LWFuYWx5dGljLWNzcycsXG4gIHRlbXBsYXRlOiAnJyxcbiAgc3R5bGVVcmxzOiBbJy4vX28td2lkZ2V0LWFuYWx5dGljLnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBQcnlXaWRnZXRBbmFseXRpY0Nzc0NvbXBvbmVudCB7fVxuIl19
@@ -155,11 +155,11 @@ class PryAddEditPresentationComponent extends SubscriptionnerDirective {
155
155
  : this.selectedPresentation$.value?.metadata ?? [];
156
156
  }
157
157
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryAddEditPresentationComponent, deps: [{ token: i1.Store }, { token: i3.Router, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
158
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", 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)=\"save()\" [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 [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (formValue)=\"formValue = $event\"\n (isFormValid)=\"isFormValid = $event\"\n [themePrefix]=\"themePrefix\"\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 <pry-select-grid-layout *ngIf=\"!edition\"></pry-select-grid-layout>\n </div>\n </div>\n <ng-container *ngIf=\"mode === 'meta'\">\n <div class=\"o-presentation__metadata-editor\" *ngIf=\"selectedPresentation$ | async as selectedPresentation\">\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 </ng-container>\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"configureDashboard(selectedPresentation$.value!)\"\n [disabled]=\"!isFormValid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i3$1.SelectGridLayoutComponent, selector: "pry-select-grid-layout" }, { kind: "component", type: i3$1.PresentationFormComponent, selector: "pry-presentation-form", inputs: ["mode", "themePrefix", "selectedPresentation"], outputs: ["formValue", "isFormValid"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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" }] }); }
158
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", 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)=\"save()\" [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 [themePrefix]=\"themePrefix\"\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 <pry-select-grid-layout *ngIf=\"!edition\"></pry-select-grid-layout>\n </div>\n </div>\n <ng-container *ngIf=\"mode === 'meta'\">\n <div class=\"o-presentation__metadata-editor\" *ngIf=\"selectedPresentation$ | async as selectedPresentation\">\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 </ng-container>\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"configureDashboard(selectedPresentation$.value!)\"\n [disabled]=\"!isFormValid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i3$1.SelectGridLayoutComponent, selector: "pry-select-grid-layout" }, { kind: "component", type: i3$1.PresentationFormComponent, selector: "pry-presentation-form", inputs: ["mode", "themePrefix", "selectedPresentation"], outputs: ["formValue", "isFormValid"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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" }] }); }
159
159
  }
160
160
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryAddEditPresentationComponent, decorators: [{
161
161
  type: Component,
162
- args: [{ selector: 'pry-add-edit-presentation', 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)=\"save()\" [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 [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (formValue)=\"formValue = $event\"\n (isFormValid)=\"isFormValid = $event\"\n [themePrefix]=\"themePrefix\"\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 <pry-select-grid-layout *ngIf=\"!edition\"></pry-select-grid-layout>\n </div>\n </div>\n <ng-container *ngIf=\"mode === 'meta'\">\n <div class=\"o-presentation__metadata-editor\" *ngIf=\"selectedPresentation$ | async as selectedPresentation\">\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 </ng-container>\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"configureDashboard(selectedPresentation$.value!)\"\n [disabled]=\"!isFormValid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n" }]
162
+ args: [{ selector: 'pry-add-edit-presentation', 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)=\"save()\" [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 [themePrefix]=\"themePrefix\"\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 <pry-select-grid-layout *ngIf=\"!edition\"></pry-select-grid-layout>\n </div>\n </div>\n <ng-container *ngIf=\"mode === 'meta'\">\n <div class=\"o-presentation__metadata-editor\" *ngIf=\"selectedPresentation$ | async as selectedPresentation\">\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 </ng-container>\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"configureDashboard(selectedPresentation$.value!)\"\n [disabled]=\"!isFormValid\"\n >\n {{ '@pry.presentation.configuration' | i18n }}\n </button>\n </div>\n</div>\n" }]
163
163
  }], ctorParameters: () => [{ type: i1.Store }, { type: i3.Router, decorators: [{
164
164
  type: Optional
165
165
  }] }], propDecorators: { selectedPresentation: [{
@@ -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, MetadataValue,\n SubscriptionnerDirective,\n ViewMode,\n WidgetPlacementUtils\n} from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, Observable, take } 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 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\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 @Optional() protected router: Router\n ) {\n super();\n this.staticManifest$ = this.store.select(DashboardSelectors.staticManifest);\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 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 save() {\n if (!this.edition) {\n this.store.dispatch(DashboardActions.updateStaticManifest({ staticManifest: { windows: [] } }));\n }\n const presentation = this.dispatchSave();\n this.store.dispatch(\n DashboardActions.selectPresentation({\n presentation,\n viewMode: ViewMode.EDITION\n })\n );\n }\n\n dispatchSave(): ManifestDescription {\n const presentation = {\n ...this.selectedPresentation$.value!,\n id: this.selectedPresentation$.value?.id || uuidv4(),\n ...this.formValue,\n metadata: this.metadata()\n };\n\n this.subscriptions.add(\n this.staticManifest$.pipe(take(1)).subscribe((staticManifest) => {\n this.store.dispatch(\n DashboardActions.saveManifest({\n ...presentation,\n metadata: presentation.metadata?.map((metadata: MetadataValue) => ({\n metadataDefId: metadata.metadataDef.id,\n value: metadata.value\n })),\n manifest: staticManifest\n })\n );\n })\n );\n return presentation;\n }\n\n configureDashboard(selectedPresentation: ManifestDescription) {\n if (this.isFormValid) {\n this.dispatchSave();\n }\n\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.updateManifest({\n manifest: {\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 selectedIds: [],\n manifestId: selectedPresentation.id\n })\n );\n this.store.dispatch(\n DashboardActions.setInitialPresentation({\n initial: { windows: [{ widgets: [], grid: { layout: this.chosenLayout as DashboardGridLayout } }] }\n })\n );\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 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","<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)=\"save()\" [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 [selectedPresentation]=\"(selectedPresentation$ | async) ?? undefined\"\n (formValue)=\"formValue = $event\"\n (isFormValid)=\"isFormValid = $event\"\n [themePrefix]=\"themePrefix\"\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 <pry-select-grid-layout *ngIf=\"!edition\"></pry-select-grid-layout>\n </div>\n </div>\n <ng-container *ngIf=\"mode === 'meta'\">\n <div class=\"o-presentation__metadata-editor\" *ngIf=\"selectedPresentation$ | async as selectedPresentation\">\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 </ng-container>\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"configureDashboard(selectedPresentation$.value!)\"\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","<div class=\"m-presentation-title u-display-flex -gap-10\" *ngIf=\"currentPresentation$ | async as currentPresentation\">\n <h2 class=\"a-h2 m-presentation-title__text\">\n {{ currentPresentation.name || ('@pry.header.noCurrentPresentation' | i18n) }}\n </h2>\n <div\n *ngIf=\"!!currentPresentation.description\"\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</div>\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 DashboardManifest,\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\n@Component({\n selector: 'pry-presentation',\n templateUrl: './presentation.component.html'\n})\nexport class PryPresentationComponent extends SubscriptionnerDirective {\n manifests$: Observable<ManifestDescription[]>;\n selectedPresentation$ = new BehaviorSubject<ManifestDescription | undefined>(undefined);\n staticManifest$?: Observable<DashboardManifest>;\n selectedMode: ViewMode = ViewMode.CATALOG;\n @ViewChild('modalActions', { read: TemplateRef }) templateModalActions!: TemplateRef<any>;\n @ViewChild('openModal') openModal!: ElementRef<HTMLButtonElement>;\n overlayRef?: OverlayRef;\n accessRightsByGroup: { [key: string]: string[] } = {};\n\n ViewMode = ViewMode;\n search$ = new BehaviorSubject('');\n filteredPresentations$: Observable<ManifestDescription[]>;\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\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(map(([dynamics, statics]) => statics ?? dynamics));\n\n this.staticManifest$ = this.store\n .select(DashboardSelectors.staticManifest)\n .pipe(map((staticM) => staticM.windows[0]));\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\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchDefault>\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 <ul class=\"o-presentation\">\n <li\n class=\"o-presentation__item\"\n *ngFor=\"let presentation of filteredPresentations$ | async; let index = index\"\n >\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"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 </ng-container>\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 <ng-container *ngIf=\"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.restitution.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 </ng-container>\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 <h3 class=\"a-h3\">{{ presentation.name }}</h3>\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 <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\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 </ul>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"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 </ng-container>\n <ng-container *ngSwitchCase=\"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 </ng-container>\n</div>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n <ul\n class=\"m-context-menu__list\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog presentation options\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\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 </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 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 }\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 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: 'Construire le tableau de bord',\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 }\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\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { PrySinceDateModule } from '@provoly/dashboard/components/sinceDate';\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 PrySinceDateModule,\n PryShareModule,\n FormsModule,\n PryOverlayModule,\n PryI18nModule,\n PryToolboxModule,\n PryCheckboxModule,\n CommonModule,\n A11yModule,\n PryExpandPanelModule,\n PryTextEditorModule\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","i3","i4","i6","i5","i7.PryAddEditPresentationComponent","i8.PryPresentationCssComponent","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, MetadataValue,\n SubscriptionnerDirective,\n ViewMode,\n WidgetPlacementUtils\n} from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, Observable, take } 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 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\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 @Optional() protected router: Router\n ) {\n super();\n this.staticManifest$ = this.store.select(DashboardSelectors.staticManifest);\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 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 save() {\n if (!this.edition) {\n this.store.dispatch(DashboardActions.updateStaticManifest({ staticManifest: { windows: [] } }));\n }\n const presentation = this.dispatchSave();\n this.store.dispatch(\n DashboardActions.selectPresentation({\n presentation,\n viewMode: ViewMode.EDITION\n })\n );\n }\n\n dispatchSave(): ManifestDescription {\n const presentation = {\n ...this.selectedPresentation$.value!,\n id: this.selectedPresentation$.value?.id || uuidv4(),\n ...this.formValue,\n metadata: this.metadata()\n };\n\n this.subscriptions.add(\n this.staticManifest$.pipe(take(1)).subscribe((staticManifest) => {\n this.store.dispatch(\n DashboardActions.saveManifest({\n ...presentation,\n metadata: presentation.metadata?.map((metadata: MetadataValue) => ({\n metadataDefId: metadata.metadataDef.id,\n value: metadata.value\n })),\n manifest: staticManifest\n })\n );\n })\n );\n return presentation;\n }\n\n configureDashboard(selectedPresentation: ManifestDescription) {\n if (this.isFormValid) {\n this.dispatchSave();\n }\n\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.updateManifest({\n manifest: {\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 selectedIds: [],\n manifestId: selectedPresentation.id\n })\n );\n this.store.dispatch(\n DashboardActions.setInitialPresentation({\n initial: { windows: [{ widgets: [], grid: { layout: this.chosenLayout as DashboardGridLayout } }] }\n })\n );\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 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","<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)=\"save()\" [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 [themePrefix]=\"themePrefix\"\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 <pry-select-grid-layout *ngIf=\"!edition\"></pry-select-grid-layout>\n </div>\n </div>\n <ng-container *ngIf=\"mode === 'meta'\">\n <div class=\"o-presentation__metadata-editor\" *ngIf=\"selectedPresentation$ | async as selectedPresentation\">\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 </ng-container>\n </div>\n <button\n class=\"a-btn a-btn--primary\"\n (click)=\"configureDashboard(selectedPresentation$.value!)\"\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","<div class=\"m-presentation-title u-display-flex -gap-10\" *ngIf=\"currentPresentation$ | async as currentPresentation\">\n <h2 class=\"a-h2 m-presentation-title__text\">\n {{ currentPresentation.name || ('@pry.header.noCurrentPresentation' | i18n) }}\n </h2>\n <div\n *ngIf=\"!!currentPresentation.description\"\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</div>\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 DashboardManifest,\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\n@Component({\n selector: 'pry-presentation',\n templateUrl: './presentation.component.html'\n})\nexport class PryPresentationComponent extends SubscriptionnerDirective {\n manifests$: Observable<ManifestDescription[]>;\n selectedPresentation$ = new BehaviorSubject<ManifestDescription | undefined>(undefined);\n staticManifest$?: Observable<DashboardManifest>;\n selectedMode: ViewMode = ViewMode.CATALOG;\n @ViewChild('modalActions', { read: TemplateRef }) templateModalActions!: TemplateRef<any>;\n @ViewChild('openModal') openModal!: ElementRef<HTMLButtonElement>;\n overlayRef?: OverlayRef;\n accessRightsByGroup: { [key: string]: string[] } = {};\n\n ViewMode = ViewMode;\n search$ = new BehaviorSubject('');\n filteredPresentations$: Observable<ManifestDescription[]>;\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\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(map(([dynamics, statics]) => statics ?? dynamics));\n\n this.staticManifest$ = this.store\n .select(DashboardSelectors.staticManifest)\n .pipe(map((staticM) => staticM.windows[0]));\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\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchDefault>\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 <ul class=\"o-presentation\">\n <li\n class=\"o-presentation__item\"\n *ngFor=\"let presentation of filteredPresentations$ | async; let index = index\"\n >\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"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 </ng-container>\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 <ng-container *ngIf=\"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.restitution.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 </ng-container>\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 <h3 class=\"a-h3\">{{ presentation.name }}</h3>\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 <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\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 </ul>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"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 </ng-container>\n <ng-container *ngSwitchCase=\"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 </ng-container>\n</div>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n <ul\n class=\"m-context-menu__list\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog presentation options\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\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 </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 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 }\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 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: 'Construire le tableau de bord',\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 }\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\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { PrySinceDateModule } from '@provoly/dashboard/components/sinceDate';\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 PrySinceDateModule,\n PryShareModule,\n FormsModule,\n PryOverlayModule,\n PryI18nModule,\n PryToolboxModule,\n PryCheckboxModule,\n CommonModule,\n A11yModule,\n PryExpandPanelModule,\n PryTextEditorModule\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","i3","i4","i6","i5","i7.PryAddEditPresentationComponent","i8.PryPresentationCssComponent","i1"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAuBM,MAAO,+BAAgC,SAAQ,wBAAwB,CAAA;IAS3E,IAAa,oBAAoB,CAAC,YAA6C,EAAA;AAC7E,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC/C;IAQD,WACY,CAAA,KAAY,EACA,MAAc,EAAA;AAEpC,QAAA,KAAK,EAAE,CAAC;QAHE,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QACA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAnBtC,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,eAAe,CAAkC,SAAS,CAAC,CAAC;AACxF,QAAA,IAAA,CAAA,YAAY,GAAW,mBAAmB,CAAC,IAAI,CAAC;QAEhD,IAAe,CAAA,eAAA,GAAW,EAAE,CAAC;QAE7B,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAKX,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;QACzB,IAAW,CAAA,WAAA,GAAkB,IAAI,CAAC;QAClC,IAAe,CAAA,eAAA,GAAW,GAAG,CAAC;QAC9B,IAAI,CAAA,IAAA,GAAqB,MAAM,CAAC;AAE/B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ,CAAC;AAO1C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;AAC5E,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAC/F,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,KAAI;AAC/B,YAAA,IAAI,CAAC,YAAY;AACf,gBAAA,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,KAAK,SAAS;sBACjE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM;sBACvC,UAAU,CAAC;AACnB,SAAC,CACF,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACnE,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;AAC7B,YAAA,MAAM,aAAa,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YACvE,IAAI,aAAa,EAAE;gBACjB,IAAI,CAAC,eAAe,GAAG,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC;aAChD;SACF,CAAC,CACH,CAAC;KACH;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;SACjG;AACD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,kBAAkB,CAAC;YAClC,YAAY;YACZ,QAAQ,EAAE,QAAQ,CAAC,OAAO;AAC3B,SAAA,CAAC,CACH,CAAC;KACH;IAED,YAAY,GAAA;AACV,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAM;YACpC,EAAE,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,EAAE,IAAIA,EAAM,EAAE;YACpD,GAAG,IAAI,CAAC,SAAS;AACjB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;SAC1B,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,cAAc,KAAI;YAC9D,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,YAAY,CAAC;AAC5B,gBAAA,GAAG,YAAY;AACf,gBAAA,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,QAAuB,MAAM;AACjE,oBAAA,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE;oBACtC,KAAK,EAAE,QAAQ,CAAC,KAAK;AACtB,iBAAA,CAAC,CAAC;AACH,gBAAA,QAAQ,EAAE,cAAc;AACzB,aAAA,CAAC,CACH,CAAC;SACH,CAAC,CACH,CAAC;AACF,QAAA,OAAO,YAAY,CAAC;KACrB;AAED,IAAA,kBAAkB,CAAC,oBAAyC,EAAA;AAC1D,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;AAED,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAM;YACpC,GAAG,IAAI,CAAC,SAAS;AACjB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;SAC1B,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,cAAc,CAAC;AAC9B,gBAAA,QAAQ,EAAE;AACR,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,OAAO,EAAE,EAAE;AACX,4BAAA,IAAI,EAAE;gCACJ,MAAM,EAAE,IAAI,CAAC,YAAY;gCACzB,OAAO,EAAE,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO;gCACnE,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI;AAC9D,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA,WAAW,EAAE,EAAE;gBACf,UAAU,EAAE,oBAAoB,CAAC,EAAE;AACpC,aAAA,CAAC,CACH,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,sBAAsB,CAAC;gBACtC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,YAAmC,EAAE,EAAE,CAAC,EAAE;AACpG,aAAA,CAAC,CACH,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,kBAAkB,CAAC;gBAClC,YAAY;gBACZ,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AAC5B,aAAA,CAAC,CACH,CAAC;SACH;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,gBAAgB,CAAC;gBAChC,YAAY;gBACZ,QAAQ,EAAE,QAAQ,CAAC,OAAO;AAC3B,aAAA,CAAC,CACH,CAAC;SACH;QACD,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAClD;AAED,IAAA,WAAW,CAAC,QAAuB,EAAA;QACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,mBAAmB,CAAC;AACnC,YAAA,cAAc,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,EAAG;YACrD,UAAU,EAAE,QAAQ,CAAC,UAAU;AAC/B,YAAA,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE;AAC5B,SAAA,CAAC,CACH,CAAC;KACH;AAED,IAAA,cAAc,CAAC,QAAuB,EAAA;QACpC,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,sBAAsB,CAAC;AACtC,YAAA,cAAc,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,EAAG;YACrD,UAAU,EAAE,QAAQ,CAAC,UAAU;AAChC,SAAA,CAAC,CACH,CAAC;KACH;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KACpB;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;AAC1B,cAAE,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,KAAK,EAAE;AACtD,kBAAE,EAAE;AACJ,kBAAE;AACE,oBAAA;AACE,wBAAA,WAAW,EAAE,IAAI,CAAC,YAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe,CAAE;AACzF,wBAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;AAClC,qBAAA;AACF,iBAAA;cACH,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;KACtD;8GAxKU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,mRCvB5C,upEAgDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDzBa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAJ3C,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,upEAAA,EAAA,CAAA;;0BAwBlC,QAAQ;yCAZE,oBAAoB,EAAA,CAAA;sBAAhC,KAAK;gBAGG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEI,MAAM,EAAA,CAAA;sBAAf,MAAM;;;ME/BI,6BAA6B,CAAA;AAGxC,IAAA,WAAA,CAAoB,KAAY,EAAA;QAAZ,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;AAC9B,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;KACnF;8GALU,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,8DCT1C,wjBAaA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDJa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,wjBAAA,EAAA,CAAA;;;MEEvB,2BAA2B,CAAA;8GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,4DAJ5B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0nCAAA,EAAA,4lFAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAID,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EACtB,QAAA,EAAA,EAAE,EAEG,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,0nCAAA,EAAA,4lFAAA,CAAA,EAAA,CAAA;;;AC8BjC,MAAO,wBAAyB,SAAQ,wBAAwB,CAAA;IAsBpE,IAAa,eAAe,CAAC,SAAuC,EAAA;QAClE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;KACzE;IAGD,IAAa,MAAM,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;AAED,IAAA,WAAA,CACY,KAAiB,EACjB,OAAgB,EAChB,gBAAkC,EAClC,MAAc,EACd,YAA6B,EAC7B,cAA8B,EAC9B,MAAc,EACsB,MAAqB,EAC3D,MAAwB,EAAA;AAEhC,QAAA,KAAK,EAAE,CAAC;QAVE,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAChB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAiB;QAC7B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACsB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QAC3D,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;AAtClC,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,eAAe,CAAkC,SAAS,CAAC,CAAC;AAExF,QAAA,IAAA,CAAA,YAAY,GAAa,QAAQ,CAAC,OAAO,CAAC;QAI1C,IAAmB,CAAA,mBAAA,GAAgC,EAAE,CAAC;QAEtD,IAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC;AACpB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;QAGzB,IAAe,CAAA,eAAA,GAAW,GAAG,CAAC;QAC9B,IAAe,CAAA,eAAA,GAAW,GAAG,CAAC;QAE9B,IAAW,CAAA,WAAA,GAAkB,IAAI,CAAC;QAClC,IAAI,CAAA,IAAA,GAAqB,MAAM,CAAC;QAChC,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAE7B,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAA+B,IAAI,CAAC,CAAC;AAK3E,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;AAiBrC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACnD,YAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE;gBACpB,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;SACF,CAAC,CACH,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;AAC9B,YAAA,IAAI,CAAC,KAAK;AACP,iBAAA,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC;iBACxC,IAAI,CACH,GAAG,CAAC,CAAC,YAAY,KACf,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAC1B,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAC9E,CACF,CACF;AACH,YAAA,IAAI,CAAC,gBAAgB;AACtB,SAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC;AAE3D,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK;AAC9B,aAAA,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC;AACzC,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,sBAAsB,GAAG,aAAa,CAAC;AAC1C,YAAA,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;SACtC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,KACvC,aAAa,CAAC,MAAM,CAAC,CAAC,aAAa,KAAI;YACrC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;AACzG,YAAA,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;AAC5F,YAAA,OAAO,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,gBAAgB;kBACtC,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;AAClF,qBAAC,CAAC,CAAC,gBAAgB,KAAK,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,WAAW,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;kBACtG,IAAI,CAAC;SACV,CAAC,CACH,CACF,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,KAAI;AAC5E,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YACpE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;SACvD,CAAC,CACH,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;KAC1D;IAED,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;KACnH;AAED,IAAA,KAAK,CAAC,YAAiC,EAAA;QACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACrG,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;YACnB,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACnD,SAAC,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACrG,QAAA,MAAM,eAAe,GAAG;AACtB,YAAA,YAAY,EAAE;gBACZ,EAAE,EAAE,EAAE,EAAE;AACR,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,mBAAmB,EAAE,EAAiC;AACtD,gBAAA,KAAK,EAAE,IAAI;AACW,aAAA;YACxB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1F,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;KACzF;AAED,IAAA,IAAI,CAAC,YAAiC,EAAA;AACpC,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC;AACrC,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACvG,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACvF,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;KAC7B;AAED,IAAA,MAAM,CAAC,EAAU,EAAA;AACf,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;IAED,kBAAkB,CAAC,YAAyC,EAAE,UAA8B,EAAA;AAC1F,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,YAAY,EAAE;AACpC,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACvG,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACnC,IAAI,aAAa,CAAC;AAChB,gBAAA,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,CAAC,wBAAwB,CAAC;AACtC,gBAAA,aAAa,EAAE,UAAU;AAC1B,aAAA,CAAC,CACH,CAAC;AACF,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;AACvF,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC7F,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAmB,CAAC;AACnF,YAAA,IAAI,CAAC,CAAC,WAAW,IAAI,UAAU,EAAE;AAC/B,gBAAA,MAAM,IAAI,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC;AAChD,gBAAA,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACrC,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,WAAW,EAAE,WAAW,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACzF,gBAAA,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;aACtD;SACF;aAAM;AACL,YAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC5C;KACF;AAED,IAAA,WAAW,CAAC,YAAyC,EAAA;QACnD,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACvG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE;AACnD,gBAAA,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,CAAC,iBAAiB,CAAC;AAC/B,gBAAA,aAAa,EAAE,UAAU;AACzB,gBAAA,IAAI,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE;AACjC,aAAA,CAAC,CAAC;SACJ;KACF;AAED,IAAA,WAAW,CAAC,oBAAyC,EAAA;QACnD,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CACtG,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;YACnB,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACnD,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,SAAS,CAAC,YAAiC,EAAA;AACzC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;KACnE;AAED,IAAA,UAAU,CAAC,YAAiC,EAAA;QAC1C,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;KACnF;AAnMU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,uMAuCb,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAvC3B,wBAAwB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAKA,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzChD,8tOA6KA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDzIa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,8tOAAA,EAAA,CAAA;;0BA0CzB,QAAQ;;0BAAI,MAAM;2BAAC,gBAAgB,CAAA;wEAlCY,oBAAoB,EAAA,CAAA;sBAArE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBACxB,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW,CAAA;gBAQb,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAGO,eAAe,EAAA,CAAA;sBAA3B,KAAK;gBAKO,MAAM,EAAA,CAAA;sBAAlB,KAAK;;;AE/DD,MAAM,cAAc,GAAG;AAC5B,IAAA,MAAM,EAAE;AACN,QAAA,YAAY,EAAE;AACZ,YAAA,GAAG,EAAE;AACH,gBAAA,SAAS,EAAE,8BAA8B;AACzC,gBAAA,MAAM,EAAE,gBAAgB;AACzB,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,SAAS,EAAE,8BAA8B;AACzC,gBAAA,MAAM,EAAE,gBAAgB;AACzB,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,QAAQ,EAAE,eAAe;AACzB,gBAAA,EAAE,EAAE,IAAI;AACR,gBAAA,UAAU,EAAE,YAAY;AACxB,gBAAA,aAAa,EAAE,gBAAgB;AAC/B,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,KAAK,EAAE,8CAA8C;AACrD,gBAAA,KAAK,EAAE,OAAO;AACf,aAAA;AACD,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,OAAO,EAAE,sBAAsB;AAC/B,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,IAAI,EAAE,0BAA0B;AAChC,YAAA,OAAO,EAAE,sBAAsB;AAC/B,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,KAAK,EAAE,qBAAqB;AAC5B,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,MAAM,EAAE,qBAAqB;AAC7B,YAAA,aAAa,EAAE,oBAAoB;AACnC,YAAA,QAAQ,EAAE,wBAAwB;AAClC,YAAA,SAAS,EAAE,0BAA0B;AACrC,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,cAAc,EAAE,cAAc;AAC9B,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,aAAa,EAAE,iBAAiB;AAChC,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,KAAK,EAAE,sBAAsB;AAC9B,SAAA;AACF,KAAA;CACF;;AC3CM,MAAM,cAAc,GAAG;AAC5B,IAAA,MAAM,EAAE;AACN,QAAA,YAAY,EAAE;AACZ,YAAA,GAAG,EAAE;AACH,gBAAA,SAAS,EAAE,8CAA8C;AACzD,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,MAAM,EAAE,aAAa;AACtB,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,SAAS,EAAE,2CAA2C;AACtD,gBAAA,MAAM,EAAE,gCAAgC;AACzC,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,KAAK,EAAE,sBAAsB;AAC7B,gBAAA,QAAQ,EAAE,mBAAmB;AAC7B,gBAAA,EAAE,EAAE,IAAI;AACR,gBAAA,UAAU,EAAE,YAAY;AACxB,gBAAA,aAAa,EAAE,0BAA0B;AACzC,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,KAAK,EAAE,YAAY;AACpB,aAAA;AACD,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,OAAO,EAAE,4BAA4B;AACrC,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,IAAI,EAAE,8BAA8B;AACpC,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,QAAQ,EAAE,4BAA4B;AACtC,YAAA,KAAK,EAAE,8BAA8B;AACrC,YAAA,MAAM,EAAE,6BAA6B;AACrC,YAAA,MAAM,EAAE,0BAA0B;AAClC,YAAA,aAAa,EAAE,+BAA+B;AAC9C,YAAA,QAAQ,EAAE,qBAAqB;AAC/B,YAAA,SAAS,EAAE,0CAA0C;AACrD,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,cAAc,EAAE,yBAAyB;AACzC,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,aAAa,EAAE,sBAAsB;AACrC,YAAA,MAAM,EAAE,YAAY;AACpB,YAAA,KAAK,EAAE,+BAA+B;AACvC,SAAA;AACF,KAAA;CACF;;ACjBD,MAAM,UAAU,GAAG;IACjB,wBAAwB;IACxB,+BAA+B;IAC/B,6BAA6B;IAC7B,2BAA2B;CAC5B,CAAC;MAyBW,qBAAqB,CAAA;AAChC,IAAA,WAAA,CAAoB,mBAAmC,EAAA;QAAnC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAgB;QACrD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;QAC7E,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;KAC9E;8GAJU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBA7BhC,wBAAwB;YACxB,+BAA+B;YAC/B,6BAA6B;AAC7B,YAAA,2BAA2B,aAOzB,aAAa;YACb,aAAa;YACb,kBAAkB;YAClB,mBAAmB;YACnB,eAAe;YACf,kBAAkB;YAClB,cAAc;YACd,WAAW;YACX,gBAAgB;YAChB,aAAa;YACb,gBAAgB;YAChB,iBAAiB;YACjB,YAAY;YACZ,UAAU;YACV,oBAAoB;AACpB,YAAA,mBAAmB,aAzBrB,wBAAwB;YACxB,+BAA+B;YAC/B,6BAA6B;YAC7B,2BAA2B,CAAA,EAAA,CAAA,CAAA,EAAA;AA0BhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAnB9B,aAAa;YACb,aAAa;YACb,kBAAkB;YAClB,mBAAmB;YACnB,eAAe;YACf,kBAAkB;YAClB,cAAc;YACd,WAAW;YACX,gBAAgB;YAChB,aAAa;YACb,gBAAgB;YAChB,iBAAiB;YACjB,YAAY;YACZ,UAAU;YACV,oBAAoB;YACpB,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAIV,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAvBjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE,EAAE;AACb,oBAAA,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC;AAC7B,oBAAA,OAAO,EAAE;wBACP,aAAa;wBACb,aAAa;wBACb,kBAAkB;wBAClB,mBAAmB;wBACnB,eAAe;wBACf,kBAAkB;wBAClB,cAAc;wBACd,WAAW;wBACX,gBAAgB;wBAChB,aAAa;wBACb,gBAAgB;wBAChB,iBAAiB;wBACjB,YAAY;wBACZ,UAAU;wBACV,oBAAoB;wBACpB,mBAAmB;AACpB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;AACzB,iBAAA,CAAA;;;ACvDD;;AAEG;;;;"}
@@ -527,11 +527,11 @@ class PresentationFormComponent extends SubscriptionnerDirective {
527
527
  };
528
528
  }
529
529
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PresentationFormComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
530
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: PresentationFormComponent, selector: "pry-presentation-form", inputs: { mode: "mode", themePrefix: "themePrefix", selectedPresentation: "selectedPresentation" }, outputs: { formValue: "formValue", isFormValid: "isFormValid" }, usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n @if (name.touched && name.errors?.['required']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.required' | i18n }}\n </label>\n }\n @if (name.touched && name.errors?.['maxlength']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '50' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{ '@pry.presentation.form.description' | i18n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n @if (description.touched && description.errors?.['maxlength']) {\n <label for=\"presentation_description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '200' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\" *ngIf=\"mode === 'theme'\">\n <label class=\"a-label\" for=\"presentation_theme\">{{ '@pry.presentation.form.theme' | i18n }}</label>\n <pry-select\n id=\"presentation_theme\"\n [items]=\"possibleThemes\"\n formControlName=\"theme\"\n [clearable]=\"true\"\n [i18nPrefix]=\"themePrefix\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <pry-text-editor formControlName=\"additionalInformation\"></pry-text-editor>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$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: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "component", type: i3.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i5$1.PryTextEditorComponent, selector: "pry-text-editor", inputs: ["tabView"] }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
530
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: PresentationFormComponent, selector: "pry-presentation-form", inputs: { mode: "mode", themePrefix: "themePrefix", selectedPresentation: "selectedPresentation" }, outputs: { formValue: "formValue", isFormValid: "isFormValid" }, usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n @if (name.touched && name.errors?.['required']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.required' | i18n }}\n </label>\n }\n @if (name.touched && name.errors?.['maxlength']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '50' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{ '@pry.presentation.form.description' | i18n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n @if (description.touched && description.errors?.['maxlength']) {\n <label for=\"presentation_description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '200' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\" *ngIf=\"mode === 'theme'\">\n <label class=\"a-label\" for=\"presentation_theme\">{{ '@pry.presentation.form.theme' | i18n }}</label>\n <pry-select\n id=\"presentation_theme\"\n [items]=\"possibleThemes\"\n formControlName=\"theme\"\n [clearable]=\"true\"\n [i18nPrefix]=\"themePrefix\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.toolbox.about' | i18n }}</label>\n <pry-text-editor formControlName=\"additionalInformation\"></pry-text-editor>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$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: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "component", type: i3.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i5$1.PryTextEditorComponent, selector: "pry-text-editor", inputs: ["tabView"] }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
531
531
  }
532
532
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PresentationFormComponent, decorators: [{
533
533
  type: Component,
534
- args: [{ selector: 'pry-presentation-form', template: "<form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n @if (name.touched && name.errors?.['required']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.required' | i18n }}\n </label>\n }\n @if (name.touched && name.errors?.['maxlength']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '50' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{ '@pry.presentation.form.description' | i18n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n @if (description.touched && description.errors?.['maxlength']) {\n <label for=\"presentation_description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '200' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\" *ngIf=\"mode === 'theme'\">\n <label class=\"a-label\" for=\"presentation_theme\">{{ '@pry.presentation.form.theme' | i18n }}</label>\n <pry-select\n id=\"presentation_theme\"\n [items]=\"possibleThemes\"\n formControlName=\"theme\"\n [clearable]=\"true\"\n [i18nPrefix]=\"themePrefix\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <pry-text-editor formControlName=\"additionalInformation\"></pry-text-editor>\n </div>\n</form>\n" }]
534
+ args: [{ selector: 'pry-presentation-form', template: "<form [formGroup]=\"form\" class=\"o-presentation-form\">\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_name\">{{ '@pry.presentation.form.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"presentation_name\"\n formControlName=\"name\"\n placeholder=\"{{ '@pry.presentation.form.name' | i18n }}\"\n class=\"a-form-field\"\n maxlength=\"50\"\n required\n />\n @if (name.touched && name.errors?.['required']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.required' | i18n }}\n </label>\n }\n @if (name.touched && name.errors?.['maxlength']) {\n <label for=\"presentation_name\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '50' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_description\">{{ '@pry.presentation.form.description' | i18n }}</label>\n <textarea\n formControlName=\"description\"\n id=\"presentation_description\"\n name=\"description\"\n cols=\"30\"\n rows=\"5\"\n maxlength=\"200\"\n placeholder=\"{{ '@pry.presentation.form.description' | i18n }}\"\n class=\"a-form-field\"\n ></textarea>\n @if (description.touched && description.errors?.['maxlength']) {\n <label for=\"presentation_description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '200' } }}\n </label>\n }\n </div>\n <div class=\"m-form-label-field -width-full\" *ngIf=\"mode === 'theme'\">\n <label class=\"a-label\" for=\"presentation_theme\">{{ '@pry.presentation.form.theme' | i18n }}</label>\n <pry-select\n id=\"presentation_theme\"\n [items]=\"possibleThemes\"\n formControlName=\"theme\"\n [clearable]=\"true\"\n [i18nPrefix]=\"themePrefix\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"image = $event\"\n [iconUrl]=\"image\"\n [mode]=\"type\"\n ></pry-select-image>\n </div>\n </div>\n <div class=\"m-form-label-field -width-full\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.toolbox.about' | i18n }}</label>\n <pry-text-editor formControlName=\"additionalInformation\"></pry-text-editor>\n </div>\n</form>\n" }]
535
535
  }], ctorParameters: () => [{ type: i1.Store }], propDecorators: { mode: [{
536
536
  type: Input
537
537
  }], themePrefix: [{
@@ -606,6 +606,12 @@ class SaveViewComponent extends ToolboxActionComponent {
606
606
  presentation.accessRightsByGroup = this.currentManifest.accessRightsByGroup;
607
607
  }
608
608
  }
609
+ else {
610
+ presentation = {
611
+ ...presentation,
612
+ ...this.formValue
613
+ };
614
+ }
609
615
  this.store.dispatch(DashboardActions.saveManifest(presentation));
610
616
  this.store.dispatch(DashboardActions.selectPresentation({
611
617
  presentation: presentation