@messaia/cdk-cms 18.2.3 → 19.0.0-rc01

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.
Files changed (50) hide show
  1. package/fesm2022/messaia-cdk-cms.mjs +81 -80
  2. package/fesm2022/messaia-cdk-cms.mjs.map +1 -1
  3. package/lib/comnponents/document-form-base/document-form-base.component.d.ts +1 -1
  4. package/package.json +4 -6
  5. package/esm2022/lib/cms-routing.module.mjs +0 -90
  6. package/esm2022/lib/cms.module.mjs +0 -159
  7. package/esm2022/lib/comnponents/content-form/content-form.component.mjs +0 -285
  8. package/esm2022/lib/comnponents/document-dialog/document-dialog.component.mjs +0 -57
  9. package/esm2022/lib/comnponents/document-form-base/document-form-base.component.mjs +0 -95
  10. package/esm2022/lib/comnponents/template-form/template-form.component.mjs +0 -169
  11. package/esm2022/lib/comnponents/template-preview-dialog/template-preview-dialog.component.mjs +0 -201
  12. package/esm2022/lib/enums/content-type.mjs +0 -6
  13. package/esm2022/lib/enums/faq-scope.mjs +0 -6
  14. package/esm2022/lib/enums/template-type.mjs +0 -6
  15. package/esm2022/lib/enums/wrap-tag.mjs +0 -9
  16. package/esm2022/lib/models/cms-settings.mjs +0 -37
  17. package/esm2022/lib/models/content-client.mjs +0 -39
  18. package/esm2022/lib/models/content-department.mjs +0 -39
  19. package/esm2022/lib/models/content-variable-client.mjs +0 -39
  20. package/esm2022/lib/models/content-variable-department.mjs +0 -39
  21. package/esm2022/lib/models/content-variable.mjs +0 -129
  22. package/esm2022/lib/models/content.mjs +0 -213
  23. package/esm2022/lib/models/document.mjs +0 -83
  24. package/esm2022/lib/models/faq-client.mjs +0 -39
  25. package/esm2022/lib/models/faq-department.mjs +0 -39
  26. package/esm2022/lib/models/faq.mjs +0 -164
  27. package/esm2022/lib/models/slider.mjs +0 -80
  28. package/esm2022/lib/models/template-client.mjs +0 -39
  29. package/esm2022/lib/models/template-department.mjs +0 -39
  30. package/esm2022/lib/models/template-preview.mjs +0 -46
  31. package/esm2022/lib/models/template.mjs +0 -208
  32. package/esm2022/lib/public-api.mjs +0 -35
  33. package/esm2022/lib/resolvers/document-list-projection.resolve.mjs +0 -49
  34. package/esm2022/lib/resolvers/excluded-columns.resolve.mjs +0 -22
  35. package/esm2022/lib/resolvers/excluded-fields.resolve.mjs +0 -22
  36. package/esm2022/lib/resolvers/form-includes.resolve.mjs +0 -49
  37. package/esm2022/lib/resolvers/form-validation.resolve.mjs +0 -22
  38. package/esm2022/lib/resolvers/list-projection.resolve.mjs +0 -49
  39. package/esm2022/lib/resolvers/settings.resolve.mjs +0 -24
  40. package/esm2022/lib/services/content-variable.service.mjs +0 -27
  41. package/esm2022/lib/services/content.service.mjs +0 -34
  42. package/esm2022/lib/services/document.generic-service.mjs +0 -11
  43. package/esm2022/lib/services/document.service`.mjs +0 -25
  44. package/esm2022/lib/services/faq.service.mjs +0 -18
  45. package/esm2022/lib/services/slider.service.mjs +0 -18
  46. package/esm2022/lib/services/template-preview.service.mjs +0 -18
  47. package/esm2022/lib/services/template.service.mjs +0 -18
  48. package/esm2022/lib/templates/document-form.template.mjs +0 -18
  49. package/esm2022/messaia-cdk-cms.mjs +0 -5
  50. package/esm2022/public_api.mjs +0 -5
@@ -1,285 +0,0 @@
1
- import { COMMA, ENTER } from '@angular/cdk/keycodes';
2
- import { HttpClient, HttpEventType, HttpResponse } from '@angular/common/http';
3
- import { ChangeDetectorRef, Component, ViewChild } from '@angular/core';
4
- import { ActivatedRoute } from '@angular/router';
5
- import { EnumService, FileService, GenericReactiveFormComponent } from '@messaia/cdk';
6
- import { EditorComponent } from '@tinymce/tinymce-angular';
7
- import { of } from 'rxjs';
8
- import { ContentType } from '../../enums/content-type';
9
- import { WrapTag } from '../../enums/wrap-tag';
10
- import { CmsSettings } from '../../models/cms-settings';
11
- import { Content } from '../../models/content';
12
- import { ContentClient, ContentDepartment } from '../../public-api';
13
- import { ContentService } from '../../services/content.service';
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "../../services/content.service";
16
- import * as i2 from "@messaia/cdk";
17
- import * as i3 from "@angular/common/http";
18
- import * as i4 from "@angular/router";
19
- import * as i5 from "@angular/common";
20
- import * as i6 from "@angular/forms";
21
- import * as i7 from "@angular/material/expansion";
22
- import * as i8 from "@angular/material/button";
23
- import * as i9 from "@angular/material/form-field";
24
- import * as i10 from "@tinymce/tinymce-angular";
25
- import * as i11 from "@messaia/cdk-base";
26
- export class ContentFormComponent extends GenericReactiveFormComponent {
27
- service;
28
- fileService;
29
- httpClient;
30
- route;
31
- changeDetectorRef;
32
- /**
33
- * Router Subscription
34
- */
35
- routeSubscription;
36
- /**
37
- * The status of the issue
38
- */
39
- type;
40
- /**
41
- * Content status
42
- */
43
- ContentType = ContentType;
44
- /**
45
- * Wrap tag enum
46
- */
47
- wrapTags = EnumService.toArray(WrapTag);
48
- /**
49
- * Separator keys codes
50
- */
51
- separatorKeysCodes = [ENTER, COMMA];
52
- /**
53
- * settings: CmsSettings
54
- */
55
- settings = new CmsSettings();
56
- /**
57
- * Gets the aliases control
58
- */
59
- get aliasesControl() { return this.form.controls.aliases; }
60
- /**
61
- * A ref to form html element
62
- */
63
- formElement;
64
- /**
65
- * A ref to tinymce editor
66
- */
67
- editorComponent;
68
- /**
69
- * Constructor
70
- */
71
- constructor(service, fileService, httpClient, route, changeDetectorRef) {
72
- super(Content, service, route, changeDetectorRef);
73
- this.service = service;
74
- this.fileService = fileService;
75
- this.httpClient = httpClient;
76
- this.route = route;
77
- this.changeDetectorRef = changeDetectorRef;
78
- this.settings = this.getService(CmsSettings);
79
- if (this.settings?.multitenantable || this.settings?.multiClients) {
80
- this.include('ClientJoins', true);
81
- }
82
- if (this.settings?.multitenantable || this.settings?.multiDepartments) {
83
- this.include('DepartmentJoins', true);
84
- }
85
- }
86
- /**
87
- * Lifecycle hook that is called after data-bound properties
88
- * of a directive are initialized.
89
- */
90
- ngOnInit() {
91
- /* Filter by status, if any */
92
- this.routeSubscription = this.route.params.subscribe((params) => {
93
- this.type = EnumService.parse(ContentType, params.type);
94
- });
95
- /* Get some props from route snapshot */
96
- this.route.data.subscribe((data) => {
97
- this.formValidation = data.formValidation;
98
- });
99
- console.log('ngOnInit');
100
- super.ngOnInit();
101
- }
102
- /**
103
- * Shows client joins in the form
104
- * @returns
105
- */
106
- showClientJoins() {
107
- return (!this.canCreate || (!this.settings?.multitenantable && !this.settings?.multiClients)) || this.isClientAdmin;
108
- }
109
- /**
110
- * Checks if the specified alias is available.
111
- */
112
- isAliasAvailable() {
113
- this.service.isAliasAvailable(this.item).subscribe((x) => {
114
- this.formElement?.form.controls['alias'].setErrors(x ? null : { 'inUse': true });
115
- });
116
- }
117
- /**
118
- * Set client
119
- */
120
- setClient() {
121
- this.isEditorInitialized = false;
122
- this.configEditor();
123
- this.editorComponent?.editor?.setContent(this.item?.body);
124
- }
125
- /**
126
- * Add a aliases to the current field
127
- * @param event
128
- */
129
- addAliases(event) {
130
- /* Add our aliass */
131
- if ((event.value || '').trim()) {
132
- this.aliasesControl.setValue([...this.aliasesControl.value, event.value.trim()]);
133
- this.aliasesControl.updateValueAndValidity();
134
- this.aliasesControl.markAsDirty();
135
- }
136
- /* Reset the input value */
137
- if (event.input) {
138
- event.input.value = '';
139
- }
140
- }
141
- /**
142
- * Removes a aliases
143
- * @param aliass
144
- */
145
- removeAliases(aliass) {
146
- const index = this.aliasesControl.value.indexOf(aliass);
147
- if (index >= 0) {
148
- this.aliasesControl.value.splice(index, 1);
149
- this.aliasesControl.updateValueAndValidity();
150
- this.aliasesControl.markAsDirty();
151
- }
152
- }
153
- /**
154
- * Creates a new instance of the Template
155
- */
156
- newInstance() {
157
- let item = Object.assign(new Content(), {
158
- type: this.type,
159
- wrapTag: this.type == ContentType.Block ? '' : WrapTag.Section,
160
- showTitle: this.type == ContentType.Block ? false : true
161
- });
162
- /* Get clientId */
163
- if (!this.isEditMode) {
164
- if (this.isClientAdmin || this.isDepartmentAdmin) {
165
- item.clientJoins = [new ContentClient({ clientId: this.currentUser.clientId })];
166
- }
167
- if (this.isDepartmentAdmin) {
168
- item.departmentJoins = [new ContentDepartment({ departmentId: this.currentUser.departmentId })];
169
- }
170
- }
171
- /* Init the tinymce editor */
172
- this.isEditorInitialized = false;
173
- return item;
174
- }
175
- /**
176
- * Event emitted when the form has built.
177
- */
178
- onAfterFormBuild() {
179
- super.onAfterFormBuild();
180
- this.configEditor();
181
- }
182
- /**
183
- * Configures the tinymce editor
184
- */
185
- configEditor() {
186
- if (this.settings?.multitenantable && this.formValue?.clientId && this.settings?.styleUrlEndpoint) {
187
- this.httpClient.get(this.settings.styleUrlEndpoint(this.formValue.clientId)).subscribe({
188
- next: (x) => super.initEditor(Object.assign(this.getEditorConfig(), { content_css: x.value })),
189
- error: () => super.initEditor(Object.assign(this.getEditorConfig()))
190
- });
191
- }
192
- else {
193
- super.initEditor(this.getEditorConfig());
194
- }
195
- }
196
- /**
197
- * Creates config for the editor
198
- * @returns
199
- */
200
- getEditorConfig() {
201
- return {
202
- promotion: false,
203
- toolbar: `${this.editorToolbar} snippetsButton`,
204
- forced_root_blocks: false,
205
- height: this.settings?.editorHeight || '700px',
206
- file_picker_types: 'file image media',
207
- image_advtab: true,
208
- allow_html_in_named_anchor: true,
209
- valid_children: '+a[div|span|img|h1|h2|h3|h4|h5|h6|br|hr|video],+span[i]',
210
- valid_elements: '*[*]',
211
- images_upload_handler: (blobInfo, progress) => new Promise((resolve, reject) => {
212
- var clientIds = this.formValue?.clientJoins?.map((x) => x.clientId) ?? [];
213
- this.fileService.upload(blobInfo.blob(), `upload`, {
214
- clientId: clientIds.length == 1 ? clientIds[0] : null,
215
- path: clientIds.length == 1 ? 'images' : 'common/images',
216
- isPublic: true
217
- }).subscribe({
218
- next: (event) => {
219
- if (event.type === HttpEventType.UploadProgress) {
220
- /* Calculate the progress percentage */
221
- const percentDone = Math.round(100 * event.loaded / event.total);
222
- /* Pass the percentage into the progress-stream */
223
- console.info(percentDone);
224
- }
225
- else if (event instanceof HttpResponse) {
226
- console.log('Upload finished!');
227
- resolve(event.body.publicLink);
228
- }
229
- },
230
- error: (error) => {
231
- reject('Image upload failed due to a XHR Transport error:' + error);
232
- console.log('Image upload failed due to a XHR Transport error:' + error);
233
- }
234
- });
235
- return of({});
236
- }),
237
- setup: function (editor) {
238
- /* Add snippets button to the toolbar */
239
- editor.ui.registry.addMenuButton('snippetsButton', {
240
- text: 'Snippets',
241
- fetch: function (callback) {
242
- callback([
243
- {
244
- type: 'menuitem',
245
- text: 'Variable',
246
- onAction: () => editor.insertContent('{{var name}}')
247
- },
248
- {
249
- type: 'menuitem',
250
- text: 'Block',
251
- onAction: () => editor.insertContent('{{block name="..."}}')
252
- },
253
- {
254
- type: 'menuitem',
255
- text: 'View Component',
256
- onAction: () => editor.insertContent('{{vc name="..."}}')
257
- },
258
- ]);
259
- }
260
- });
261
- }
262
- };
263
- }
264
- /**
265
- * Cleanup subscriptions when this component is destroyed.
266
- */
267
- ngOnDestroy() {
268
- if (this.routeSubscription) {
269
- this.routeSubscription.unsubscribe();
270
- }
271
- }
272
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ContentFormComponent, deps: [{ token: i1.ContentService }, { token: i2.FileService }, { token: i3.HttpClient }, { token: i4.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
273
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: ContentFormComponent, selector: "app-content-form", viewQueries: [{ propertyName: "formElement", first: true, predicate: ["form"], descendants: true }, { propertyName: "editorComponent", first: true, predicate: ["editor"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n\t\t\t\t\t\t\t<ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n\t\t\t\t\t\t\t\t<mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\" flex>\r\n\t\t\t\t\t\t\t\t\t<mat-label>{{field.label}}</mat-label>\r\n\t\t\t\t\t\t\t\t\t<editor [formControlName]=\"field.name\" [init]=\"editorConfig\" tinyMatFormControl flex></editor>\r\n\t\t\t\t\t\t\t\t\t<mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n\t\t\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of formGroup.controls[field.name]['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button *ngIf=\"isEditMode || true\" (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [entity]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { kind: "directive", type: i2.RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: ["formGroup", "rxwebForm"] }, { kind: "directive", type: i2.RxFormControlDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["rxalpha", "rxalphaNumeric", "rxascii", "rxcompare", "rxcompose", "rxcontains", "rxcreditCard", "rxdataUri", "rxdifferent", "rxdigit", "rxemail", "rxendsWith", "rxeven", "rxextension", "rxfactor", "rxfileSize", "rxgreaterThanEqualTo", "rxgreaterThan", "rxhexColor", "rxjson", "rxlatitude", "rxlatLong", "rxleapYear", "rxlessThan", "rxlessThanEqualTo", "rxlongitude", "rxlowerCase", "rxmac", "rxmaxDate", "rxmaxLength", "rxmaxNumber", "rxminDate", "rxminLength", "rxminNumber", "rxnumeric", "rxodd", "rxpassword", "rxport", "rxprimeNumber", "rxrequired", "rxrange", "rxrule", "rxstartsWith", "rxtime", "rxupperCase", "rxurl", "rxunique", "rxnotEmpty", "rxcusip", "rxgrid", "rxdate"] }, { kind: "directive", type: i7.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i7.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i7.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i7.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i9.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i10.EditorComponent, selector: "editor", inputs: ["cloudChannel", "apiKey", "licenseKey", "init", "id", "initialValue", "outputFormat", "inline", "tagName", "plugins", "toolbar", "modelEvents", "allowedEvents", "ignoreEvents", "disabled"] }, { kind: "component", type: i2.VdLayoutNavComponent, selector: "vd-layout-nav", inputs: ["toolbarTitle", "editMode", "actions", "data", "context", "icon", "logo", "color", "hideToggle", "backNavigationRoute", "navigationRoute"], outputs: ["reload"] }, { kind: "component", type: i2.VdLayoutCardOverComponent, selector: "vd-layout-card-over", inputs: ["cardTitle", "cardSubtitle", "cardWidth", "color"] }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "directive", type: i2.MatFormFieldEditorDirective, selector: "[tinyMatFormControl]", inputs: ["disabled", "id", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["editorChange"] }, { kind: "directive", type: i2.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: i2.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.VdEditorDirective, selector: "[vd-editor]ng-template" }, { kind: "component", type: i2.VdGenericFormComponent, selector: "vd-generic-form", inputs: ["formGroup", "classType", "formDefinition", "fieldGroups", "groupName", "fieldSets", "context", "debugValue", "readonly", "separatorKeysCodes"] }, { kind: "component", type: i11.VdAuditComponent, selector: "vd-audit", inputs: ["entity"] }] });
274
- }
275
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ContentFormComponent, decorators: [{
276
- type: Component,
277
- args: [{ selector: 'app-content-form', template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [actions]=\"toolbarActions\" [data]=\"item\" [context]=\"this\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\r\n\t\t\t\t\t\t\t<ng-template vd-editor let-field=\"field\" let-formGroup=\"formGroup\">\r\n\t\t\t\t\t\t\t\t<mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\" flex>\r\n\t\t\t\t\t\t\t\t\t<mat-label>{{field.label}}</mat-label>\r\n\t\t\t\t\t\t\t\t\t<editor [formControlName]=\"field.name\" [init]=\"editorConfig\" tinyMatFormControl flex></editor>\r\n\t\t\t\t\t\t\t\t\t<mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n\t\t\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of formGroup.controls[field.name]['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</vd-generic-form>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button *ngIf=\"isEditMode || true\" (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<ng-template matExpansionPanelContent>\r\n\t\t\t\t\t\t<vd-audit [entity]=\"item\"> </vd-audit>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>" }]
278
- }], ctorParameters: () => [{ type: i1.ContentService }, { type: i2.FileService }, { type: i3.HttpClient }, { type: i4.ActivatedRoute }, { type: i0.ChangeDetectorRef }], propDecorators: { formElement: [{
279
- type: ViewChild,
280
- args: ['form', { static: false }]
281
- }], editorComponent: [{
282
- type: ViewChild,
283
- args: ['editor', { static: false }]
284
- }] } });
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9jb250ZW50LWZvcm0vY29udGVudC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9jb250ZW50LWZvcm0vY29udGVudC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQWdCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BFLE9BQU8s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Q2IsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUM7NkJBQzVEOzRCQUNEO2dDQUNDLElBQUksRUFBRSxVQUFVO2dDQUNoQixJQUFJLEVBQUUsZ0JBQWdCO2dDQUN0QixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQzs2QkFDekQ7eUJBQ0QsQ0FBQyxDQUFDO29CQUNKLENBQUM7aUJBQ0QsQ0FBQyxDQUFDO1lBQ0osQ0FBQztTQUNELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1YsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEMsQ0FBQztJQUNGLENBQUM7dUdBaFJXLG9CQUFvQjsyRkFBcEIsb0JBQW9CLGdSQ25CakMsaTRGQWlEZ0I7OzJGRDlCSCxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Msa0JBQWtCO21NQTRDckIsV0FBVztzQkFEakIsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU83QixlQUFlO3NCQURyQixTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT01NQSwgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXZlbnRUeXBlLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRDaGlwSW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBFbnVtU2VydmljZSwgRmlsZVNlcnZpY2UsIEdlbmVyaWNSZWFjdGl2ZUZvcm1Db21wb25lbnQgfSBmcm9tICdAbWVzc2FpYS9jZGsnO1xyXG5pbXBvcnQgeyBFZGl0b3JDb21wb25lbnQgfSBmcm9tICdAdGlueW1jZS90aW55bWNlLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvY29udGVudC10eXBlJztcclxuaW1wb3J0IHsgV3JhcFRhZyB9IGZyb20gJy4uLy4uL2VudW1zL3dyYXAtdGFnJztcclxuaW1wb3J0IHsgQ21zU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvY21zLXNldHRpbmdzJztcclxuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gJy4uLy4uL21vZGVscy9jb250ZW50JztcclxuaW1wb3J0IHsgQ29udGVudENsaWVudCwgQ29udGVudERlcGFydG1lbnQgfSBmcm9tICcuLi8uLi9wdWJsaWMtYXBpJztcclxuaW1wb3J0IHsgQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb250ZW50LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtY29udGVudC1mb3JtJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vY29udGVudC1mb3JtLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udGVudEZvcm1Db21wb25lbnQgZXh0ZW5kcyBHZW5lcmljUmVhY3RpdmVGb3JtQ29tcG9uZW50PENvbnRlbnQsIENvbnRlbnRTZXJ2aWNlPiB7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJvdXRlciBTdWJzY3JpcHRpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgcm91dGVTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBzdGF0dXMgb2YgdGhlIGlzc3VlXHJcblx0ICovXHJcblx0cHVibGljIHR5cGU/OiBDb250ZW50VHlwZTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29udGVudCBzdGF0dXNcclxuXHQgKi9cclxuXHRwdWJsaWMgQ29udGVudFR5cGU6IHR5cGVvZiBDb250ZW50VHlwZSA9IENvbnRlbnRUeXBlO1xyXG5cclxuXHQvKipcclxuXHQgKiBXcmFwIHRhZyBlbnVtXHJcblx0ICovXHJcblx0cHVibGljIHdyYXBUYWdzOiBhbnlbXSA9IEVudW1TZXJ2aWNlLnRvQXJyYXkoV3JhcFRhZyk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNlcGFyYXRvciBrZXlzIGNvZGVzXHJcblx0ICovXHJcblx0cHVibGljIHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW10gPSBbRU5URVIsIENPTU1BXTtcclxuXHJcblx0LyoqXHJcblx0ICogc2V0dGluZ3M6IENtc1NldHRpbmdzXHJcblx0ICovXHJcblx0cHVibGljIHNldHRpbmdzOiBDbXNTZXR0aW5ncyA9IG5ldyBDbXNTZXR0aW5ncygpO1xyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIHRoZSBhbGlhc2VzIGNvbnRyb2xcclxuXHQgKi9cclxuXHRnZXQgYWxpYXNlc0NvbnRyb2woKSB7IHJldHVybiB0aGlzLmZvcm0uY29udHJvbHMuYWxpYXNlczsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZiB0byBmb3JtIGh0bWwgZWxlbWVudFxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoJ2Zvcm0nLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuXHRwdWJsaWMgZm9ybUVsZW1lbnQ/OiBIVE1MRm9ybUVsZW1lbnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmIHRvIHRpbnltY2UgZWRpdG9yXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZCgnZWRpdG9yJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGVkaXRvckNvbXBvbmVudD86IEVkaXRvckNvbXBvbmVudDtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByb3RlY3RlZCBzZXJ2aWNlOiBDb250ZW50U2VydmljZSxcclxuXHRcdHByb3RlY3RlZCBmaWxlU2VydmljZTogRmlsZVNlcnZpY2UsXHJcblx0XHRwcm90ZWN0ZWQgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcblx0KSB7XHJcblx0XHRzdXBlcihDb250ZW50LCBzZXJ2aWNlLCByb3V0ZSwgY2hhbmdlRGV0ZWN0b3JSZWYpXHJcblx0XHR0aGlzLnNldHRpbmdzID0gdGhpcy5nZXRTZXJ2aWNlKENtc1NldHRpbmdzKTtcclxuXHJcblx0XHRpZiAodGhpcy5zZXR0aW5ncz8ubXVsdGl0ZW5hbnRhYmxlIHx8IHRoaXMuc2V0dGluZ3M/Lm11bHRpQ2xpZW50cykge1xyXG5cdFx0XHR0aGlzLmluY2x1ZGUoJ0NsaWVudEpvaW5zJywgdHJ1ZSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuc2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSB8fCB0aGlzLnNldHRpbmdzPy5tdWx0aURlcGFydG1lbnRzKSB7XHJcblx0XHRcdHRoaXMuaW5jbHVkZSgnRGVwYXJ0bWVudEpvaW5zJywgdHJ1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBkYXRhLWJvdW5kIHByb3BlcnRpZXMgXHJcblx0ICogb2YgYSBkaXJlY3RpdmUgYXJlIGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0LyogRmlsdGVyIGJ5IHN0YXR1cywgaWYgYW55ICovXHJcblx0XHR0aGlzLnJvdXRlU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXM6IGFueSkgPT4ge1xyXG5cdFx0XHR0aGlzLnR5cGUgPSBFbnVtU2VydmljZS5wYXJzZShDb250ZW50VHlwZSwgcGFyYW1zLnR5cGUpO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0LyogR2V0IHNvbWUgcHJvcHMgZnJvbSByb3V0ZSBzbmFwc2hvdCAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdHRoaXMuZm9ybVZhbGlkYXRpb24gPSBkYXRhLmZvcm1WYWxpZGF0aW9uO1xyXG5cdFx0fSk7XHJcblx0XHRjb25zb2xlLmxvZygnbmdPbkluaXQnKTtcclxuXHRcdHN1cGVyLm5nT25Jbml0KCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyBjbGllbnQgam9pbnMgaW4gdGhlIGZvcm1cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgc2hvd0NsaWVudEpvaW5zKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuICghdGhpcy5jYW5DcmVhdGUgfHwgKCF0aGlzLnNldHRpbmdzPy5tdWx0aXRlbmFudGFibGUgJiYgIXRoaXMuc2V0dGluZ3M/Lm11bHRpQ2xpZW50cykpIHx8IHRoaXMuaXNDbGllbnRBZG1pbjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIGFsaWFzIGlzIGF2YWlsYWJsZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgaXNBbGlhc0F2YWlsYWJsZSgpIHtcclxuXHRcdHRoaXMuc2VydmljZS5pc0FsaWFzQXZhaWxhYmxlKHRoaXMuaXRlbSEpLnN1YnNjcmliZSgoeDogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHR0aGlzLmZvcm1FbGVtZW50Py5mb3JtLmNvbnRyb2xzWydhbGlhcyddLnNldEVycm9ycyh4ID8gbnVsbCA6IHsgJ2luVXNlJzogdHJ1ZSB9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0IGNsaWVudFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXRDbGllbnQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmlzRWRpdG9ySW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHRcdHRoaXMuY29uZmlnRWRpdG9yKCk7XHJcblx0XHR0aGlzLmVkaXRvckNvbXBvbmVudD8uZWRpdG9yPy5zZXRDb250ZW50KHRoaXMuaXRlbT8uYm9keSEpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkIGEgYWxpYXNlcyB0byB0aGUgY3VycmVudCBmaWVsZFxyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKi9cclxuXHRwdWJsaWMgYWRkQWxpYXNlcyhldmVudDogTWF0Q2hpcElucHV0RXZlbnQpOiB2b2lkIHtcclxuXHRcdC8qIEFkZCBvdXIgYWxpYXNzICovXHJcblx0XHRpZiAoKGV2ZW50LnZhbHVlIHx8ICcnKS50cmltKCkpIHtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC5zZXRWYWx1ZShbLi4udGhpcy5hbGlhc2VzQ29udHJvbC52YWx1ZSwgZXZlbnQudmFsdWUudHJpbSgpXSk7XHJcblx0XHRcdHRoaXMuYWxpYXNlc0NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHR0aGlzLmFsaWFzZXNDb250cm9sLm1hcmtBc0RpcnR5KCk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogUmVzZXQgdGhlIGlucHV0IHZhbHVlICovXHJcblx0XHRpZiAoZXZlbnQuaW5wdXQpIHtcclxuXHRcdFx0ZXZlbnQuaW5wdXQudmFsdWUgPSAnJztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlbW92ZXMgYSBhbGlhc2VzXHJcblx0ICogQHBhcmFtIGFsaWFzcyBcclxuXHQgKi9cclxuXHRwdWJsaWMgcmVtb3ZlQWxpYXNlcyhhbGlhc3M6IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0Y29uc3QgaW5kZXggPSB0aGlzLmFsaWFzZXNDb250cm9sLnZhbHVlLmluZGV4T2YoYWxpYXNzKTtcclxuXHRcdGlmIChpbmRleCA+PSAwKSB7XHJcblx0XHRcdHRoaXMuYWxpYXNlc0NvbnRyb2wudmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcclxuXHRcdFx0dGhpcy5hbGlhc2VzQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdHRoaXMuYWxpYXNlc0NvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFRlbXBsYXRlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG5ld0luc3RhbmNlKCk6IENvbnRlbnQge1xyXG5cdFx0bGV0IGl0ZW0gPSBPYmplY3QuYXNzaWduKG5ldyBDb250ZW50KCksIDxDb250ZW50PntcclxuXHRcdFx0dHlwZTogdGhpcy50eXBlLFxyXG5cdFx0XHR3cmFwVGFnOiB0aGlzLnR5cGUgPT0gQ29udGVudFR5cGUuQmxvY2sgPyAnJyA6IFdyYXBUYWcuU2VjdGlvbixcclxuXHRcdFx0c2hvd1RpdGxlOiB0aGlzLnR5cGUgPT0gQ29udGVudFR5cGUuQmxvY2sgPyBmYWxzZSA6IHRydWVcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8qIEdldCBjbGllbnRJZCAqL1xyXG5cdFx0aWYgKCF0aGlzLmlzRWRpdE1vZGUpIHtcclxuXHRcdFx0aWYgKHRoaXMuaXNDbGllbnRBZG1pbiB8fCB0aGlzLmlzRGVwYXJ0bWVudEFkbWluKSB7XHJcblx0XHRcdFx0aXRlbS5jbGllbnRKb2lucyA9IFtuZXcgQ29udGVudENsaWVudCh7IGNsaWVudElkOiB0aGlzLmN1cnJlbnRVc2VyLmNsaWVudElkIH0pXTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKHRoaXMuaXNEZXBhcnRtZW50QWRtaW4pIHtcclxuXHRcdFx0XHRpdGVtLmRlcGFydG1lbnRKb2lucyA9IFtuZXcgQ29udGVudERlcGFydG1lbnQoeyBkZXBhcnRtZW50SWQ6IHRoaXMuY3VycmVudFVzZXIuZGVwYXJ0bWVudElkIH0pXTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEluaXQgdGhlIHRpbnltY2UgZWRpdG9yICovXHJcblx0XHR0aGlzLmlzRWRpdG9ySW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHRcdHJldHVybiBpdGVtO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBmb3JtIGhhcyBidWlsdC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgb25BZnRlckZvcm1CdWlsZCgpOiB2b2lkIHtcclxuXHRcdHN1cGVyLm9uQWZ0ZXJGb3JtQnVpbGQoKTtcclxuXHRcdHRoaXMuY29uZmlnRWRpdG9yKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb25maWd1cmVzIHRoZSB0aW55bWNlIGVkaXRvclxyXG5cdCAqL1xyXG5cdHByaXZhdGUgY29uZmlnRWRpdG9yKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuc2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSAmJiB0aGlzLmZvcm1WYWx1ZT8uY2xpZW50SWQgJiYgdGhpcy5zZXR0aW5ncz8uc3R5bGVVcmxFbmRwb2ludCkge1xyXG5cdFx0XHR0aGlzLmh0dHBDbGllbnQuZ2V0KHRoaXMuc2V0dGluZ3Muc3R5bGVVcmxFbmRwb2ludCh0aGlzLmZvcm1WYWx1ZS5jbGllbnRJZCkpLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogKHg6IGFueSkgPT4gc3VwZXIuaW5pdEVkaXRvcihPYmplY3QuYXNzaWduKHRoaXMuZ2V0RWRpdG9yQ29uZmlnKCksIHsgY29udGVudF9jc3M6IHgudmFsdWUgfSkpLFxyXG5cdFx0XHRcdGVycm9yOiAoKSA9PiBzdXBlci5pbml0RWRpdG9yKE9iamVjdC5hc3NpZ24odGhpcy5nZXRFZGl0b3JDb25maWcoKSkpXHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0c3VwZXIuaW5pdEVkaXRvcih0aGlzLmdldEVkaXRvckNvbmZpZygpKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENyZWF0ZXMgY29uZmlnIGZvciB0aGUgZWRpdG9yXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBnZXRFZGl0b3JDb25maWcoKTogYW55IHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdHByb21vdGlvbjogZmFsc2UsXHJcblx0XHRcdHRvb2xiYXI6IGAke3RoaXMuZWRpdG9yVG9vbGJhcn0gc25pcHBldHNCdXR0b25gLFxyXG5cdFx0XHRmb3JjZWRfcm9vdF9ibG9ja3M6IGZhbHNlLFxyXG5cdFx0XHRoZWlnaHQ6IHRoaXMuc2V0dGluZ3M/LmVkaXRvckhlaWdodCB8fCAnNzAwcHgnLFxyXG5cdFx0XHRmaWxlX3BpY2tlcl90eXBlczogJ2ZpbGUgaW1hZ2UgbWVkaWEnLFxyXG5cdFx0XHRpbWFnZV9hZHZ0YWI6IHRydWUsXHJcblx0XHRcdGFsbG93X2h0bWxfaW5fbmFtZWRfYW5jaG9yOiB0cnVlLFxyXG5cdFx0XHR2YWxpZF9jaGlsZHJlbjogJythW2RpdnxzcGFufGltZ3xoMXxoMnxoM3xoNHxoNXxoNnxicnxocnx2aWRlb10sK3NwYW5baV0nLFxyXG5cdFx0XHR2YWxpZF9lbGVtZW50czogJypbKl0nLFxyXG5cdFx0XHRpbWFnZXNfdXBsb2FkX2hhbmRsZXI6IChibG9iSW5mbzogYW55LCBwcm9ncmVzczogRnVuY3Rpb24pID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHR2YXIgY2xpZW50SWRzOiBudW1iZXJbXSA9IHRoaXMuZm9ybVZhbHVlPy5jbGllbnRKb2lucz8ubWFwKCh4OiBDb250ZW50Q2xpZW50KSA9PiB4LmNsaWVudElkKSA/PyBbXTtcclxuXHRcdFx0XHR0aGlzLmZpbGVTZXJ2aWNlLnVwbG9hZChibG9iSW5mby5ibG9iKCksIGB1cGxvYWRgLCB7XHJcblx0XHRcdFx0XHRjbGllbnRJZDogY2xpZW50SWRzLmxlbmd0aCA9PSAxID8gY2xpZW50SWRzWzBdIDogbnVsbCxcclxuXHRcdFx0XHRcdHBhdGg6IGNsaWVudElkcy5sZW5ndGggPT0gMSA/ICdpbWFnZXMnIDogJ2NvbW1vbi9pbWFnZXMnLFxyXG5cdFx0XHRcdFx0aXNQdWJsaWM6IHRydWVcclxuXHRcdFx0XHR9KS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdFx0bmV4dDogKGV2ZW50OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpIHtcclxuXHJcblx0XHRcdFx0XHRcdFx0LyogQ2FsY3VsYXRlIHRoZSBwcm9ncmVzcyBwZXJjZW50YWdlICovXHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKTtcclxuXHJcblx0XHRcdFx0XHRcdFx0LyogUGFzcyB0aGUgcGVyY2VudGFnZSBpbnRvIHRoZSBwcm9ncmVzcy1zdHJlYW0gKi9cclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmluZm8ocGVyY2VudERvbmUpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ1VwbG9hZCBmaW5pc2hlZCEnKTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKGV2ZW50LmJvZHkucHVibGljTGluayk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KCdJbWFnZSB1cGxvYWQgZmFpbGVkIGR1ZSB0byBhIFhIUiBUcmFuc3BvcnQgZXJyb3I6JyArIGVycm9yKTtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0ltYWdlIHVwbG9hZCBmYWlsZWQgZHVlIHRvIGEgWEhSIFRyYW5zcG9ydCBlcnJvcjonICsgZXJyb3IpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHRyZXR1cm4gb2Yoe30pO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0c2V0dXA6IGZ1bmN0aW9uIChlZGl0b3I6IGFueSkge1xyXG5cdFx0XHRcdC8qIEFkZCBzbmlwcGV0cyBidXR0b24gdG8gdGhlIHRvb2xiYXIgKi9cclxuXHRcdFx0XHRlZGl0b3IudWkucmVnaXN0cnkuYWRkTWVudUJ1dHRvbignc25pcHBldHNCdXR0b24nLCB7XHJcblx0XHRcdFx0XHR0ZXh0OiAnU25pcHBldHMnLFxyXG5cdFx0XHRcdFx0ZmV0Y2g6IGZ1bmN0aW9uIChjYWxsYmFjazogYW55KSB7XHJcblx0XHRcdFx0XHRcdGNhbGxiYWNrKFtcclxuXHRcdFx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnbWVudWl0ZW0nLFxyXG5cdFx0XHRcdFx0XHRcdFx0dGV4dDogJ1ZhcmlhYmxlJyxcclxuXHRcdFx0XHRcdFx0XHRcdG9uQWN0aW9uOiAoKSA9PiBlZGl0b3IuaW5zZXJ0Q29udGVudCgne3t2YXIgbmFtZX19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdtZW51aXRlbScsXHJcblx0XHRcdFx0XHRcdFx0XHR0ZXh0OiAnQmxvY2snLFxyXG5cdFx0XHRcdFx0XHRcdFx0b25BY3Rpb246ICgpID0+IGVkaXRvci5pbnNlcnRDb250ZW50KCd7e2Jsb2NrIG5hbWU9XCIuLi5cIn19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdtZW51aXRlbScsXHJcblx0XHRcdFx0XHRcdFx0XHR0ZXh0OiAnVmlldyBDb21wb25lbnQnLFxyXG5cdFx0XHRcdFx0XHRcdFx0b25BY3Rpb246ICgpID0+IGVkaXRvci5pbnNlcnRDb250ZW50KCd7e3ZjIG5hbWU9XCIuLi5cIn19JylcclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRdKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsZWFudXAgc3Vic2NyaXB0aW9ucyB3aGVuIHRoaXMgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cclxuXHQgKi9cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnJvdXRlU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcbn0iLCI8dmQtbGF5b3V0LW5hdiBjb2xvcj1cInByaW1hcnlcIiBbYmFja05hdmlnYXRpb25Sb3V0ZV09XCJsaXN0Um91dGVcIiB0b29sYmFyVGl0bGU9XCJDb250ZW50XCIgaTE4bi10b29sYmFyVGl0bGU9XCJAQGNvbnRlbnRcIiBbZWRpdE1vZGVdPVwiaXNFZGl0TW9kZVwiIFthY3Rpb25zXT1cInRvb2xiYXJBY3Rpb25zXCIgW2RhdGFdPVwiaXRlbVwiIFtjb250ZXh0XT1cInRoaXNcIj5cclxuXHQ8Zm9ybSAqbmdJZj1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBub3ZhbGlkYXRlIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cclxuXHRcdDx2ZC1sYXlvdXQtY2FyZC1vdmVyIGNsYXNzPVwiYWNjb3JkaW9uXCIgY2FyZFdpZHRoPVwiNzBcIiBjb2xvcj1cInByaW1hcnlcIiBmbGV4PlxyXG5cdFx0XHQ8bWF0LWFjY29yZGlvbiBbbXVsdGldPVwiIWlzRWRpdE1vZGVcIj5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gRGV0YWlscyAtLT5cclxuXHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbCBleHBhbmRlZD1cInRydWVcIiBpZD1cImRldGFpbHNcIj5cclxuXHRcdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdFx0PG1hdC1wYW5lbC10aXRsZSBpMThuPVwiQEBkZXRhaWxzXCI+RGV0YWlsczwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBtYXRFeHBhbnNpb25QYW5lbENvbnRlbnQ+XHJcblx0XHRcdFx0XHRcdDx2ZC1nZW5lcmljLWZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgW2ZpZWxkR3JvdXBzXT1cImZpZWxkR3JvdXBzXCIgW2NvbnRleHRdPVwidGhpc1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSB2ZC1lZGl0b3IgbGV0LWZpZWxkPVwiZmllbGRcIiBsZXQtZm9ybUdyb3VwPVwiZm9ybUdyb3VwXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgbGF5b3V0LW1hcmdpbiBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGZsZXg+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxlZGl0b3IgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW2luaXRdPVwiZWRpdG9yQ29uZmlnXCIgdGlueU1hdEZvcm1Db250cm9sIGZsZXg+PC9lZGl0b3I+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZV1bJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0XHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdFx0PC92ZC1nZW5lcmljLWZvcm0+XHJcblx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PG1hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCIgaTE4bj1cIkBAc2F2ZVwiPlNhdmU8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAqbmdJZj1cImlzRWRpdE1vZGUgfHwgdHJ1ZVwiIChjbGljayk9XCJhcHBseSgpXCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCIgaTE4bj1cIkBAYXBwbHlcIj5BcHBseTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJiYWNrKClcIiBpMThuPVwiQEBjYW5jZWxcIj5DYW5jZWw8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gZmxleD48L3NwYW4+XHJcblx0XHRcdFx0XHQ8L21hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuXHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdDwhLS0gI3JlZ2lvbiBBdWRpdCAtLT5cclxuXHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbCBpZD1cImF1ZGl0XCIgKm5nSWY9XCJpc0VkaXRNb2RlXCI+XHJcblx0XHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblx0XHRcdFx0XHRcdDxtYXQtcGFuZWwtdGl0bGU+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gaTE4bj1cIkBAYXVkaXRcIj5BdWRpdDwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PC9tYXQtcGFuZWwtdGl0bGU+XHJcblx0XHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIG1hdEV4cGFuc2lvblBhbmVsQ29udGVudD5cclxuXHRcdFx0XHRcdFx0PHZkLWF1ZGl0IFtlbnRpdHldPVwiaXRlbVwiPiA8L3ZkLWF1ZGl0PlxyXG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDxtYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgKGNsaWNrKT1cImJhY2soKVwiIGkxOG49XCJAQGNsb3NlXCI+Q2xvc2U8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gZmxleD48L3NwYW4+XHJcblx0XHRcdFx0XHQ8L21hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuXHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblx0XHRcdDwvbWF0LWFjY29yZGlvbj5cclxuXHRcdDwvdmQtbGF5b3V0LWNhcmQtb3Zlcj5cclxuXHQ8L2Zvcm0+XHJcbjwvdmQtbGF5b3V0LW5hdj4iXX0=
@@ -1,57 +0,0 @@
1
- import { ChangeDetectorRef, Component, Inject } from '@angular/core';
2
- import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
3
- import { ActivatedRoute } from '@angular/router';
4
- import { FileService } from '@messaia/cdk';
5
- import { Document } from '../../models/document';
6
- import { DocumentService } from '../../services/document.service`';
7
- import DocumentFormTemplate from '../../templates/document-form.template';
8
- import { DocumentFormBaseComponent } from '../document-form-base/document-form-base.component';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "../../services/document.service`";
11
- import * as i2 from "@messaia/cdk";
12
- import * as i3 from "@angular/router";
13
- import * as i4 from "@angular/material/dialog";
14
- import * as i5 from "@angular/common";
15
- import * as i6 from "@angular/forms";
16
- import * as i7 from "@angular/material/button";
17
- import * as i8 from "@angular/material/form-field";
18
- import * as i9 from "../../models/document";
19
- export class DocumentDialogComponent extends DocumentFormBaseComponent {
20
- documentService;
21
- fileService;
22
- route;
23
- changeDetectorRef;
24
- dialogRef;
25
- data;
26
- /**
27
- * Constructor
28
- */
29
- constructor(documentService, fileService, route, changeDetectorRef, dialogRef, data = new Document()) {
30
- super(Document, documentService, fileService, dialogRef, route, changeDetectorRef, data);
31
- this.documentService = documentService;
32
- this.fileService = fileService;
33
- this.route = route;
34
- this.changeDetectorRef = changeDetectorRef;
35
- this.dialogRef = dialogRef;
36
- this.data = data;
37
- }
38
- /**
39
- * Event emitted before the form has built.
40
- */
41
- onBeforeFormBuild() {
42
- this.item.isPublic = true;
43
- }
44
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DocumentDialogComponent, deps: [{ token: i1.DocumentService }, { token: i2.FileService }, { token: i3.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i4.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
45
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: DocumentDialogComponent, selector: "document-dialog", usesInheritance: true, ngImport: i0, template: "\n <div mat-dialog-title class=\"mat-headline-6\" i18n=\"@@newDocument\">New document</div>\n <form *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\n <vd-generic-form [formGroup]=\"form\" [fieldGroups]=\"fieldGroups\" [context]=\"this\">\n <ng-template vd-file let-field=\"field\" let-formGroup=\"formGroup\">\n <mat-form-field [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\n <mat-label>{{field.header}}</mat-label>\n <div vd-file-input [formControlName]=\"field.name\" (select)=\"upload($event)\" [accept]=\"field.fileExtensions\"></div>\n </mat-form-field>\n </ng-template>\n </vd-generic-form>\n <div mat-dialog-actions class=\"pad-top\">\n <button type=\"submit\" mat-flat-button [disabled]=\"isSaving\" color=\"primary\" i18n=\"@@save\">Save</button>\n <button type=\"button\" mat-button (click)=\"cancel()\" i18n=\"@@cancel\">Cancel</button>\n </div>\n </form>", isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { kind: "directive", type: i2.RxwebFormDirective, selector: "[formGroup],[rxwebForm]", inputs: ["formGroup", "rxwebForm"] }, { kind: "directive", type: i2.RxFormControlDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["rxalpha", "rxalphaNumeric", "rxascii", "rxcompare", "rxcompose", "rxcontains", "rxcreditCard", "rxdataUri", "rxdifferent", "rxdigit", "rxemail", "rxendsWith", "rxeven", "rxextension", "rxfactor", "rxfileSize", "rxgreaterThanEqualTo", "rxgreaterThan", "rxhexColor", "rxjson", "rxlatitude", "rxlatLong", "rxleapYear", "rxlessThan", "rxlessThanEqualTo", "rxlongitude", "rxlowerCase", "rxmac", "rxmaxDate", "rxmaxLength", "rxmaxNumber", "rxminDate", "rxminLength", "rxminNumber", "rxnumeric", "rxodd", "rxpassword", "rxport", "rxprimeNumber", "rxrequired", "rxrange", "rxrule", "rxstartsWith", "rxtime", "rxupperCase", "rxurl", "rxunique", "rxnotEmpty", "rxcusip", "rxgrid", "rxdate"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "directive", type: i2.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: i2.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.VdFileDirective, selector: "[vd-file]ng-template" }, { kind: "component", type: i2.VdGenericFormComponent, selector: "vd-generic-form", inputs: ["formGroup", "classType", "formDefinition", "fieldGroups", "groupName", "fieldSets", "context", "debugValue", "readonly", "separatorKeysCodes"] }, { kind: "component", type: i2.VdFileInputComponent, selector: "[vd-file-input]", inputs: ["accept", "placeholder", "required", "multiple", "disabled", "errorState"], outputs: ["select", "clear"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }] });
46
- }
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DocumentDialogComponent, decorators: [{
48
- type: Component,
49
- args: [{
50
- selector: 'document-dialog',
51
- template: DocumentFormTemplate
52
- }]
53
- }], ctorParameters: () => [{ type: i1.DocumentService }, { type: i2.FileService }, { type: i3.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i4.MatDialogRef }, { type: i9.Document, decorators: [{
54
- type: Inject,
55
- args: [MAT_DIALOG_DATA]
56
- }] }] });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9kb2N1bWVudC1kaWFsb2cvZG9jdW1lbnQtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxvQkFBb0IsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7Ozs7QUFNL0YsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHlCQUFvRDtJQU1yRjtJQUNBO0lBQ0E7SUFDQTtJQUNIO0lBQ3lCO0lBVGpDOztPQUVHO0lBQ0gsWUFDVyxlQUFnQyxFQUNoQyxXQUF3QixFQUN4QixLQUFxQixFQUNyQixpQkFBb0MsRUFDdkMsU0FBZ0QsRUFDdkIsT0FBaUIsSUFBSSxRQUFRLEVBQUU7UUFFL0QsS0FBSyxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFQOUUsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDdkMsY0FBUyxHQUFULFNBQVMsQ0FBdUM7UUFDdkIsU0FBSSxHQUFKLElBQUksQ0FBMkI7SUFHaEUsQ0FBQztJQUVEOztPQUVHO0lBQ08saUJBQWlCO1FBQzFCLElBQUksQ0FBQyxJQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO3VHQXJCVyx1QkFBdUIsdUtBVzFCLGVBQWU7MkZBWFosdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQUpuQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRSxvQkFBb0I7aUJBQzlCOzswQkFZRSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEZpbGVTZXJ2aWNlIH0gZnJvbSAnQG1lc3NhaWEvY2RrJztcclxuaW1wb3J0IHsgRG9jdW1lbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZG9jdW1lbnQnO1xyXG5pbXBvcnQgeyBEb2N1bWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kb2N1bWVudC5zZXJ2aWNlYCc7XHJcbmltcG9ydCBEb2N1bWVudEZvcm1UZW1wbGF0ZSBmcm9tICcuLi8uLi90ZW1wbGF0ZXMvZG9jdW1lbnQtZm9ybS50ZW1wbGF0ZSc7XHJcbmltcG9ydCB7IERvY3VtZW50Rm9ybUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9kb2N1bWVudC1mb3JtLWJhc2UvZG9jdW1lbnQtZm9ybS1iYXNlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2RvY3VtZW50LWRpYWxvZycsXHJcblx0dGVtcGxhdGU6IERvY3VtZW50Rm9ybVRlbXBsYXRlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEb2N1bWVudERpYWxvZ0NvbXBvbmVudCBleHRlbmRzIERvY3VtZW50Rm9ybUJhc2VDb21wb25lbnQ8RG9jdW1lbnQsIERvY3VtZW50U2VydmljZT4ge1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJvdGVjdGVkIGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxyXG5cdFx0cHJvdGVjdGVkIGZpbGVTZXJ2aWNlOiBGaWxlU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdFx0cHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERvY3VtZW50RGlhbG9nQ29tcG9uZW50PixcclxuXHRcdEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogRG9jdW1lbnQgPSBuZXcgRG9jdW1lbnQoKVxyXG5cdCkge1xyXG5cdFx0c3VwZXIoRG9jdW1lbnQsIGRvY3VtZW50U2VydmljZSwgZmlsZVNlcnZpY2UsIGRpYWxvZ1JlZiwgcm91dGUsIGNoYW5nZURldGVjdG9yUmVmLCBkYXRhKVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCBiZWZvcmUgdGhlIGZvcm0gaGFzIGJ1aWx0LlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkJlZm9yZUZvcm1CdWlsZCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuaXRlbSEuaXNQdWJsaWMgPSB0cnVlO1xyXG5cdH1cclxufSJdfQ==
@@ -1,95 +0,0 @@
1
- import { HttpEventType, HttpResponse } from '@angular/common/http';
2
- import { ChangeDetectorRef, Directive, Type } from '@angular/core';
3
- import { MatDialogRef } from '@angular/material/dialog';
4
- import { ActivatedRoute } from '@angular/router';
5
- import { FileService, GenericReactiveFormComponent, SaveAction } from '@messaia/cdk';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@messaia/cdk";
8
- import * as i2 from "@angular/material/dialog";
9
- import * as i3 from "@angular/router";
10
- export class DocumentFormBaseComponent extends GenericReactiveFormComponent {
11
- entityType;
12
- documentService;
13
- fileService;
14
- dialogRef;
15
- route;
16
- changeDetectorRef;
17
- data;
18
- /**
19
- * Upload status
20
- */
21
- isUploading = false;
22
- /**
23
- * Upload progress
24
- */
25
- uploadProgress = 0;
26
- /**
27
- * Constructor
28
- */
29
- constructor(entityType, documentService, fileService, dialogRef, route, changeDetectorRef, data) {
30
- super(entityType, documentService, route, changeDetectorRef);
31
- this.entityType = entityType;
32
- this.documentService = documentService;
33
- this.fileService = fileService;
34
- this.dialogRef = dialogRef;
35
- this.route = route;
36
- this.changeDetectorRef = changeDetectorRef;
37
- this.data = data;
38
- this.item = data;
39
- }
40
- /**
41
- * Uploads a new document
42
- */
43
- upload(file) {
44
- if (file != null) {
45
- this.fileService
46
- .upload(file, `upload`, new this.entityType(Object.assign(this.data || {}, this.formValue)))
47
- .subscribe({
48
- next: (event) => {
49
- if (event.type === HttpEventType.UploadProgress) {
50
- /* Calculate the progress percentage */
51
- const percentDone = Math.round(100 * event.loaded / event.total);
52
- /* Pass the percentage into the progress-stream */
53
- this.uploadProgress = percentDone;
54
- }
55
- else if (event instanceof HttpResponse) {
56
- this.form.patchValue(event.body);
57
- }
58
- },
59
- complete: () => this.isUploading = false,
60
- error: () => this.isUploading = false
61
- });
62
- }
63
- }
64
- /**
65
- * Event emitted after data submition
66
- * @param action
67
- * @param response
68
- */
69
- onAfterSubmit(_1 = SaveAction.SaveAndClose, _2 = null) {
70
- this.isSaving = false;
71
- this.cancel();
72
- }
73
- /**
74
- * Closes the dialog
75
- */
76
- cancel() {
77
- this.dialogRef.close();
78
- this.reloadPage();
79
- }
80
- /**
81
- * Creates a new instance of the TEntity
82
- */
83
- newInstance() {
84
- return super.newInstance(Object.assign(new this.entityType({
85
- clientId: this.currentUser?.clientId,
86
- departmentId: this.currentUser?.departmentId
87
- }), this.data || {}));
88
- }
89
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DocumentFormBaseComponent, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
90
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: DocumentFormBaseComponent, usesInheritance: true, ngImport: i0 });
91
- }
92
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DocumentFormBaseComponent, decorators: [{
93
- type: Directive
94
- }], ctorParameters: () => [{ type: i0.Type }, { type: undefined }, { type: i1.FileService }, { type: i2.MatDialogRef }, { type: i3.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: undefined }] });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZm9ybS1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy9kb2N1bWVudC1mb3JtLWJhc2UvZG9jdW1lbnQtZm9ybS1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSw0QkFBNEIsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7O0FBS3JGLE1BQU0sT0FBZ0IseUJBQXNILFNBQVEsNEJBQXlEO0lBZTNMO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBcEJkOztPQUVHO0lBQ0ksV0FBVyxHQUFZLEtBQUssQ0FBQztJQUVwQzs7T0FFRztJQUNJLGNBQWMsR0FBVyxDQUFDLENBQUM7SUFFbEM7O09BRUc7SUFDSCxZQUNjLFVBQTJCLEVBQzNCLGVBQWlDLEVBQ2pDLFdBQXdCLEVBQ3hCLFNBQStFLEVBQy9FLEtBQXFCLEVBQ3JCLGlCQUFvQyxFQUNwQyxJQUFlO1FBRXpCLEtBQUssQ0FBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO1FBUmxELGVBQVUsR0FBVixVQUFVLENBQWlCO1FBQzNCLG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFzRTtRQUMvRSxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFNBQUksR0FBSixJQUFJLENBQVc7UUFHekIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLElBQXFCO1FBQy9CLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFdBQVc7aUJBQ1gsTUFBTSxDQUFDLElBQVksRUFBRSxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7aUJBQ25HLFNBQVMsQ0FBQztnQkFDUCxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDWixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO3dCQUU5Qyx1Q0FBdUM7d0JBQ3ZDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUVqRSxrREFBa0Q7d0JBQ2xELElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO29CQUN0QyxDQUFDO3lCQUFNLElBQUksS0FBSyxZQUFZLFlBQVksRUFBRSxDQUFDO3dCQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBVyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQy9DLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLO2dCQUN4QyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLO2FBQ3hDLENBQUMsQ0FBQztRQUNYLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGFBQWEsQ0FBQyxLQUFpQixVQUFVLENBQUMsWUFBWSxFQUFFLEtBQVUsSUFBSTtRQUM1RSxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTTtRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNPLFdBQVc7UUFDakIsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ3ZELFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVE7WUFDcEMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWTtTQUMvQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7dUdBL0VpQix5QkFBeUI7MkZBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEOUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFdmVudFR5cGUsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEZpbGVTZXJ2aWNlLCBHZW5lcmljUmVhY3RpdmVGb3JtQ29tcG9uZW50LCBTYXZlQWN0aW9uIH0gZnJvbSAnQG1lc3NhaWEvY2RrJztcclxuaW1wb3J0IHsgRG9jdW1lbnRCYXNlIH0gZnJvbSBcIkBtZXNzYWlhL2Nkay1iYXNlXCI7XHJcbmltcG9ydCB7IERvY3VtZW50R2VuZXJpY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kb2N1bWVudC5nZW5lcmljLXNlcnZpY2UnO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEb2N1bWVudEZvcm1CYXNlQ29tcG9uZW50PFREb2N1bWVudCBleHRlbmRzIERvY3VtZW50QmFzZSwgVERvY3VtZW50U2VydmljZSBleHRlbmRzIERvY3VtZW50R2VuZXJpY1NlcnZpY2U8VERvY3VtZW50Pj4gZXh0ZW5kcyBHZW5lcmljUmVhY3RpdmVGb3JtQ29tcG9uZW50PFREb2N1bWVudCwgVERvY3VtZW50U2VydmljZT4ge1xyXG4gICAgLyoqXHJcbiAgICAgKiBVcGxvYWQgc3RhdHVzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc1VwbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBsb2FkIHByb2dyZXNzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB1cGxvYWRQcm9ncmVzczogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdG9yXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBlbnRpdHlUeXBlOiBUeXBlPFREb2N1bWVudD4sXHJcbiAgICAgICAgcHJvdGVjdGVkIGRvY3VtZW50U2VydmljZTogVERvY3VtZW50U2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgZmlsZVNlcnZpY2U6IEZpbGVTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEb2N1bWVudEZvcm1CYXNlQ29tcG9uZW50PFREb2N1bWVudCwgVERvY3VtZW50U2VydmljZT4+LFxyXG4gICAgICAgIHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcm90ZWN0ZWQgZGF0YTogVERvY3VtZW50XHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihlbnRpdHlUeXBlLCBkb2N1bWVudFNlcnZpY2UsIHJvdXRlLCBjaGFuZ2VEZXRlY3RvclJlZilcclxuICAgICAgICB0aGlzLml0ZW0gPSBkYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBsb2FkcyBhIG5ldyBkb2N1bWVudFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBsb2FkKGZpbGU6IEZpbGUgfCBGaWxlTGlzdCk6IHZvaWQge1xyXG4gICAgICAgIGlmIChmaWxlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5maWxlU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLnVwbG9hZChmaWxlIGFzIEZpbGUsIGB1cGxvYWRgLCBuZXcgdGhpcy5lbnRpdHlUeXBlKE9iamVjdC5hc3NpZ24odGhpcy5kYXRhIHx8IHt9LCB0aGlzLmZvcm1WYWx1ZSkpKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dDogKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2FsY3VsYXRlIHRoZSBwcm9ncmVzcyBwZXJjZW50YWdlICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwZXJjZW50RG9uZSA9IE1hdGgucm91bmQoMTAwICogZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBhc3MgdGhlIHBlcmNlbnRhZ2UgaW50byB0aGUgcHJvZ3Jlc3Mtc3RyZWFtICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFByb2dyZXNzID0gcGVyY2VudERvbmU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKDxEb2N1bWVudD5ldmVudC5ib2R5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHRoaXMuaXNVcGxvYWRpbmcgPSBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4gdGhpcy5pc1VwbG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCBlbWl0dGVkIGFmdGVyIGRhdGEgc3VibWl0aW9uXHJcbiAgICAgKiBAcGFyYW0gYWN0aW9uIFxyXG4gICAgICogQHBhcmFtIHJlc3BvbnNlIFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgb25BZnRlclN1Ym1pdChfMTogU2F2ZUFjdGlvbiA9IFNhdmVBY3Rpb24uU2F2ZUFuZENsb3NlLCBfMjogYW55ID0gbnVsbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhbmNlbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2xvc2VzIHRoZSBkaWFsb2dcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMucmVsb2FkUGFnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgVEVudGl0eVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgbmV3SW5zdGFuY2UoKTogVERvY3VtZW50IHtcclxuICAgICAgICByZXR1cm4gc3VwZXIubmV3SW5zdGFuY2UoT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5lbnRpdHlUeXBlKHtcclxuICAgICAgICAgICAgY2xpZW50SWQ6IHRoaXMuY3VycmVudFVzZXI/LmNsaWVudElkLFxyXG4gICAgICAgICAgICBkZXBhcnRtZW50SWQ6IHRoaXMuY3VycmVudFVzZXI/LmRlcGFydG1lbnRJZFxyXG4gICAgICAgIH0pLCB0aGlzLmRhdGEgfHwge30pKTtcclxuICAgIH1cclxufSJdfQ==