@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.
- package/fesm2022/messaia-cdk-cms.mjs +81 -80
- package/fesm2022/messaia-cdk-cms.mjs.map +1 -1
- package/lib/comnponents/document-form-base/document-form-base.component.d.ts +1 -1
- package/package.json +4 -6
- package/esm2022/lib/cms-routing.module.mjs +0 -90
- package/esm2022/lib/cms.module.mjs +0 -159
- package/esm2022/lib/comnponents/content-form/content-form.component.mjs +0 -285
- package/esm2022/lib/comnponents/document-dialog/document-dialog.component.mjs +0 -57
- package/esm2022/lib/comnponents/document-form-base/document-form-base.component.mjs +0 -95
- package/esm2022/lib/comnponents/template-form/template-form.component.mjs +0 -169
- package/esm2022/lib/comnponents/template-preview-dialog/template-preview-dialog.component.mjs +0 -201
- package/esm2022/lib/enums/content-type.mjs +0 -6
- package/esm2022/lib/enums/faq-scope.mjs +0 -6
- package/esm2022/lib/enums/template-type.mjs +0 -6
- package/esm2022/lib/enums/wrap-tag.mjs +0 -9
- package/esm2022/lib/models/cms-settings.mjs +0 -37
- package/esm2022/lib/models/content-client.mjs +0 -39
- package/esm2022/lib/models/content-department.mjs +0 -39
- package/esm2022/lib/models/content-variable-client.mjs +0 -39
- package/esm2022/lib/models/content-variable-department.mjs +0 -39
- package/esm2022/lib/models/content-variable.mjs +0 -129
- package/esm2022/lib/models/content.mjs +0 -213
- package/esm2022/lib/models/document.mjs +0 -83
- package/esm2022/lib/models/faq-client.mjs +0 -39
- package/esm2022/lib/models/faq-department.mjs +0 -39
- package/esm2022/lib/models/faq.mjs +0 -164
- package/esm2022/lib/models/slider.mjs +0 -80
- package/esm2022/lib/models/template-client.mjs +0 -39
- package/esm2022/lib/models/template-department.mjs +0 -39
- package/esm2022/lib/models/template-preview.mjs +0 -46
- package/esm2022/lib/models/template.mjs +0 -208
- package/esm2022/lib/public-api.mjs +0 -35
- package/esm2022/lib/resolvers/document-list-projection.resolve.mjs +0 -49
- package/esm2022/lib/resolvers/excluded-columns.resolve.mjs +0 -22
- package/esm2022/lib/resolvers/excluded-fields.resolve.mjs +0 -22
- package/esm2022/lib/resolvers/form-includes.resolve.mjs +0 -49
- package/esm2022/lib/resolvers/form-validation.resolve.mjs +0 -22
- package/esm2022/lib/resolvers/list-projection.resolve.mjs +0 -49
- package/esm2022/lib/resolvers/settings.resolve.mjs +0 -24
- package/esm2022/lib/services/content-variable.service.mjs +0 -27
- package/esm2022/lib/services/content.service.mjs +0 -34
- package/esm2022/lib/services/document.generic-service.mjs +0 -11
- package/esm2022/lib/services/document.service`.mjs +0 -25
- package/esm2022/lib/services/faq.service.mjs +0 -18
- package/esm2022/lib/services/slider.service.mjs +0 -18
- package/esm2022/lib/services/template-preview.service.mjs +0 -18
- package/esm2022/lib/services/template.service.mjs +0 -18
- package/esm2022/lib/templates/document-form.template.mjs +0 -18
- package/esm2022/messaia-cdk-cms.mjs +0 -5
- package/esm2022/public_api.mjs +0 -5
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Component, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { MatDialog } from '@angular/material/dialog';
|
|
3
|
-
import { ActivatedRoute } from '@angular/router';
|
|
4
|
-
import { FileService, GenericReactiveFormComponent } from '@messaia/cdk';
|
|
5
|
-
import 'codemirror/addon/edit/closetag';
|
|
6
|
-
import 'codemirror/addon/edit/matchbrackets';
|
|
7
|
-
import 'codemirror/addon/selection/active-line';
|
|
8
|
-
import 'codemirror/mode/htmlmixed/htmlmixed';
|
|
9
|
-
import 'codemirror/mode/javascript/javascript';
|
|
10
|
-
import { saveAs } from 'file-saver';
|
|
11
|
-
import { TemplateType } from '../../enums/template-type';
|
|
12
|
-
import { CmsSettings } from '../../models/cms-settings';
|
|
13
|
-
import { Template } from '../../models/template';
|
|
14
|
-
import { TemplatePreview } from '../../models/template-preview';
|
|
15
|
-
import { TemplateService } from '../../services/template.service';
|
|
16
|
-
import { TemplatePreviewDialogComponent } from '../template-preview-dialog/template-preview-dialog.component';
|
|
17
|
-
import * as i0 from "@angular/core";
|
|
18
|
-
import * as i1 from "../../services/template.service";
|
|
19
|
-
import * as i2 from "@messaia/cdk";
|
|
20
|
-
import * as i3 from "@angular/material/dialog";
|
|
21
|
-
import * as i4 from "@angular/router";
|
|
22
|
-
import * as i5 from "@angular/common";
|
|
23
|
-
import * as i6 from "@ctrl/ngx-codemirror";
|
|
24
|
-
import * as i7 from "@angular/forms";
|
|
25
|
-
import * as i8 from "@angular/material/expansion";
|
|
26
|
-
import * as i9 from "@angular/material/button";
|
|
27
|
-
import * as i10 from "@messaia/cdk-base";
|
|
28
|
-
export class TemplateFormComponent extends GenericReactiveFormComponent {
|
|
29
|
-
service;
|
|
30
|
-
fileService;
|
|
31
|
-
dialog;
|
|
32
|
-
route;
|
|
33
|
-
changeDetectorRef;
|
|
34
|
-
/**
|
|
35
|
-
* Template type
|
|
36
|
-
*/
|
|
37
|
-
TemplateType = TemplateType;
|
|
38
|
-
/**
|
|
39
|
-
* settings: CmsSettings
|
|
40
|
-
*/
|
|
41
|
-
settings = new CmsSettings();
|
|
42
|
-
/**
|
|
43
|
-
* Gets the attachments control
|
|
44
|
-
*/
|
|
45
|
-
get attachmentsControl() { return this.form.controls.attachments; }
|
|
46
|
-
/**
|
|
47
|
-
* Editor options
|
|
48
|
-
*/
|
|
49
|
-
editorOptions = {
|
|
50
|
-
lineNumbers: true,
|
|
51
|
-
theme: 'material',
|
|
52
|
-
autoCloseTags: true,
|
|
53
|
-
styleActiveLine: true,
|
|
54
|
-
mode: 'text/html',
|
|
55
|
-
profile: 'xhtml'
|
|
56
|
-
};
|
|
57
|
-
/**
|
|
58
|
-
* Editor options
|
|
59
|
-
*/
|
|
60
|
-
jsonEditorOptions = {
|
|
61
|
-
lineNumbers: true,
|
|
62
|
-
theme: 'material',
|
|
63
|
-
autoCloseTags: true,
|
|
64
|
-
styleActiveLine: true,
|
|
65
|
-
mode: {
|
|
66
|
-
name: "javascript",
|
|
67
|
-
json: true,
|
|
68
|
-
statementIndent: 2
|
|
69
|
-
},
|
|
70
|
-
profile: 'xhtml',
|
|
71
|
-
lineWrapping: true,
|
|
72
|
-
indentWithTabs: false,
|
|
73
|
-
tabSize: 2
|
|
74
|
-
};
|
|
75
|
-
/**
|
|
76
|
-
* Constructor
|
|
77
|
-
*/
|
|
78
|
-
constructor(service, fileService, dialog, route, changeDetectorRef) {
|
|
79
|
-
super(Template, service, route, changeDetectorRef);
|
|
80
|
-
this.service = service;
|
|
81
|
-
this.fileService = fileService;
|
|
82
|
-
this.dialog = dialog;
|
|
83
|
-
this.route = route;
|
|
84
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
85
|
-
this.settings = this.getService(CmsSettings);
|
|
86
|
-
if (this.settings?.multitenantable || this.settings?.multiClients) {
|
|
87
|
-
this.include('ClientJoins', true);
|
|
88
|
-
}
|
|
89
|
-
if (this.settings?.multitenantable || this.settings?.multiDepartments) {
|
|
90
|
-
this.include('DepartmentJoins', true);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Removes a attachment
|
|
95
|
-
* @param attachment
|
|
96
|
-
*/
|
|
97
|
-
removeAttachment(attachment) {
|
|
98
|
-
if (Array.isArray(this.item?.attachments)) {
|
|
99
|
-
var index = this.attachmentsControl.value.indexOf(attachment, 0);
|
|
100
|
-
if (index > -1) {
|
|
101
|
-
this.dialogService.openConfirm({
|
|
102
|
-
message: 'Möchten Sie diesen Anhang wirklich löschen?',
|
|
103
|
-
title: 'Löschen bestätigen',
|
|
104
|
-
cancelButton: $localize `:@@cancel:Cancel`,
|
|
105
|
-
acceptButton: $localize `:@@yes:Yes`,
|
|
106
|
-
}).afterClosed().subscribe((accept) => {
|
|
107
|
-
if (accept) {
|
|
108
|
-
this.attachmentsControl.value.splice(index, 1);
|
|
109
|
-
this.attachmentsControl.updateValueAndValidity();
|
|
110
|
-
this.attachmentsControl.markAsDirty();
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Uploads a attachment file
|
|
118
|
-
* @param file
|
|
119
|
-
*/
|
|
120
|
-
uploadAttachment($event) {
|
|
121
|
-
let file = (($event?.target).files ?? [])[0];
|
|
122
|
-
if (file != null) {
|
|
123
|
-
// this.fileService.upload(file, `upload`, { clientId: this.item.clientId, path: `${this.item.clientId ? '' : 'common/'}docs` }).subscribe(event => {
|
|
124
|
-
// if (event.type === HttpEventType.UploadProgress) {
|
|
125
|
-
// /* Calculate the progress percentage */
|
|
126
|
-
// const percentDone = Math.round(100 * event.loaded / event.total);
|
|
127
|
-
// /* Pass the percentage into the progress-stream */
|
|
128
|
-
// console.info(percentDone);
|
|
129
|
-
// } else if (event instanceof HttpResponse) {
|
|
130
|
-
// /* Add our attachments */
|
|
131
|
-
// this.attachmentsControl.setValue([...this.attachmentsControl.value, <Attachment>event.body]);
|
|
132
|
-
// this.attachmentsControl.updateValueAndValidity();
|
|
133
|
-
// this.attachmentsControl.markAsDirty();
|
|
134
|
-
// }
|
|
135
|
-
// });
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Downloads a attachment
|
|
140
|
-
* @param attachment
|
|
141
|
-
*/
|
|
142
|
-
downloadAttachment(attachment) {
|
|
143
|
-
if (attachment.id) {
|
|
144
|
-
this.service.download(`downloadAttachment/${attachment.id}`).subscribe(x => {
|
|
145
|
-
saveAs(new Blob([x.data], { type: '' }), x.filename);
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Shows template preview
|
|
151
|
-
*/
|
|
152
|
-
showPreview() {
|
|
153
|
-
this.dialog.open(TemplatePreviewDialogComponent, {
|
|
154
|
-
width: this.item?.type == TemplateType.Pdf ? '1020px' : '920px',
|
|
155
|
-
data: new TemplatePreview({
|
|
156
|
-
templateId: this.item?.id,
|
|
157
|
-
type: this.item?.type
|
|
158
|
-
}),
|
|
159
|
-
panelClass: ['dialog-full-screen']
|
|
160
|
-
}).afterClosed().subscribe();
|
|
161
|
-
}
|
|
162
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TemplateFormComponent, deps: [{ token: i1.TemplateService }, { token: i2.FileService }, { token: i3.MatDialog }, { token: i4.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
163
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: TemplateFormComponent, selector: "app-template-form", usesInheritance: true, ngImport: i0, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Template\" i18n-toolbarTitle=\"@@template\" [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\" [fieldSets]=\"['details']\" [context]=\"this\"></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 (click)=\"apply()\" *ngIf=\"isEditMode\" [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 Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"content\">\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=\"@@content\">Content</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<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"content\" rows=\"160\" [options]=\"editorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\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 (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</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 Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"testData\">\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=\"@@testData\">Test Data</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<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"dummyData\" rows=\"120\" [options]=\"jsonEditorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\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 (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</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>", styles: ["codemirror{width:100%}.CodeMirror{height:500px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.CodemirrorComponent, selector: "ngx-codemirror", inputs: ["className", "name", "autoFocus", "options", "preserveScrollPosition"], outputs: ["cursorActivity", "focusChange", "scroll", "drop", "codeMirrorLoaded"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.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: i8.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i8.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: i8.MatExpansionPanelActionRow, selector: "mat-action-row" }, { kind: "component", type: i8.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i8.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i8.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { 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.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "component", type: i2.VdGenericFormComponent, selector: "vd-generic-form", inputs: ["formGroup", "classType", "formDefinition", "fieldGroups", "groupName", "fieldSets", "context", "debugValue", "readonly", "separatorKeysCodes"] }, { kind: "component", type: i10.VdAuditComponent, selector: "vd-audit", inputs: ["entity"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
164
|
-
}
|
|
165
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TemplateFormComponent, decorators: [{
|
|
166
|
-
type: Component,
|
|
167
|
-
args: [{ selector: 'app-template-form', encapsulation: ViewEncapsulation.None, template: "<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Template\" i18n-toolbarTitle=\"@@template\" [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\" [fieldSets]=\"['details']\" [context]=\"this\"></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 (click)=\"apply()\" *ngIf=\"isEditMode\" [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 Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"content\">\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=\"@@content\">Content</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<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"content\" rows=\"160\" [options]=\"editorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\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 (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</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 Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"testData\">\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=\"@@testData\">Test Data</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<div layout-margin>\r\n\t\t\t\t\t\t\t<ngx-codemirror formControlName=\"dummyData\" rows=\"120\" [options]=\"jsonEditorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t\t</div>\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 (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</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>", styles: ["codemirror{width:100%}.CodeMirror{height:500px}\n"] }]
|
|
168
|
-
}], ctorParameters: () => [{ type: i1.TemplateService }, { type: i2.FileService }, { type: i3.MatDialog }, { type: i4.ActivatedRoute }, { type: i0.ChangeDetectorRef }] });
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGstY21zL3NyYy9saWIvY29tbnBvbmVudHMvdGVtcGxhdGUtZm9ybS90ZW1wbGF0ZS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy90ZW1wbGF0ZS1mb3JtL3RlbXBsYXRlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekUsT0FBTyxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUs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QUFDLENBQUM7UUFDSixDQUFDO0lBQ0YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRTtZQUNoRCxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPO1lBQy9ELElBQUksRUFBRSxJQUFJLGVBQWUsQ0FBQztnQkFDekIsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSTthQUNyQixDQUFDO1lBQ0YsVUFBVSxFQUFFLENBQUMsb0JBQW9CLENBQUM7U0FDbEMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzlCLENBQUM7dUdBL0lXLHFCQUFxQjsyRkFBckIscUJBQXFCLGdGQ3hCbEMsNnRKQW9GZ0I7OzJGRDVESCxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0MsbUJBQW1CLGlCQUdkLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEZpbGVTZXJ2aWNlLCBHZW5lcmljUmVhY3RpdmVGb3JtQ29tcG9uZW50IH0gZnJvbSAnQG1lc3NhaWEvY2RrJztcclxuaW1wb3J0IHsgQXR0YWNobWVudCB9IGZyb20gJ0BtZXNzYWlhL2Nkay1iYXNlJztcclxuaW1wb3J0ICdjb2RlbWlycm9yL2FkZG9uL2VkaXQvY2xvc2V0YWcnO1xyXG5pbXBvcnQgJ2NvZGVtaXJyb3IvYWRkb24vZWRpdC9tYXRjaGJyYWNrZXRzJztcclxuaW1wb3J0ICdjb2RlbWlycm9yL2FkZG9uL3NlbGVjdGlvbi9hY3RpdmUtbGluZSc7XHJcbmltcG9ydCAnY29kZW1pcnJvci9tb2RlL2h0bWxtaXhlZC9odG1sbWl4ZWQnO1xyXG5pbXBvcnQgJ2NvZGVtaXJyb3IvbW9kZS9qYXZhc2NyaXB0L2phdmFzY3JpcHQnO1xyXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgVGVtcGxhdGVUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvdGVtcGxhdGUtdHlwZSc7XHJcbmltcG9ydCB7IENtc1NldHRpbmdzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Ntcy1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RlbXBsYXRlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVQcmV2aWV3IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RlbXBsYXRlLXByZXZpZXcnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90ZW1wbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVQcmV2aWV3RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vdGVtcGxhdGUtcHJldmlldy1kaWFsb2cvdGVtcGxhdGUtcHJldmlldy1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLXRlbXBsYXRlLWZvcm0nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi90ZW1wbGF0ZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi90ZW1wbGF0ZS1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0ZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVGb3JtQ29tcG9uZW50IGV4dGVuZHMgR2VuZXJpY1JlYWN0aXZlRm9ybUNvbXBvbmVudDxUZW1wbGF0ZSwgVGVtcGxhdGVTZXJ2aWNlPiB7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRlbXBsYXRlIHR5cGVcclxuXHQgKi9cclxuXHRwdWJsaWMgVGVtcGxhdGVUeXBlOiB0eXBlb2YgVGVtcGxhdGVUeXBlID0gVGVtcGxhdGVUeXBlO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZXR0aW5nczogQ21zU2V0dGluZ3NcclxuXHQgKi9cclxuXHRwdWJsaWMgc2V0dGluZ3M6IENtc1NldHRpbmdzID0gbmV3IENtc1NldHRpbmdzKCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgdGhlIGF0dGFjaG1lbnRzIGNvbnRyb2xcclxuXHQgKi9cclxuXHRnZXQgYXR0YWNobWVudHNDb250cm9sKCkgeyByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzLmF0dGFjaG1lbnRzOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEVkaXRvciBvcHRpb25zXHJcblx0ICovXHJcblx0cHVibGljIGVkaXRvck9wdGlvbnM6IGFueSA9IHtcclxuXHRcdGxpbmVOdW1iZXJzOiB0cnVlLFxyXG5cdFx0dGhlbWU6ICdtYXRlcmlhbCcsXHJcblx0XHRhdXRvQ2xvc2VUYWdzOiB0cnVlLFxyXG5cdFx0c3R5bGVBY3RpdmVMaW5lOiB0cnVlLFxyXG5cdFx0bW9kZTogJ3RleHQvaHRtbCcsXHJcblx0XHRwcm9maWxlOiAneGh0bWwnXHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogRWRpdG9yIG9wdGlvbnNcclxuXHQgKi9cclxuXHRwdWJsaWMganNvbkVkaXRvck9wdGlvbnM6IGFueSA9IHtcclxuXHRcdGxpbmVOdW1iZXJzOiB0cnVlLFxyXG5cdFx0dGhlbWU6ICdtYXRlcmlhbCcsXHJcblx0XHRhdXRvQ2xvc2VUYWdzOiB0cnVlLFxyXG5cdFx0c3R5bGVBY3RpdmVMaW5lOiB0cnVlLFxyXG5cdFx0bW9kZToge1xyXG5cdFx0XHRuYW1lOiBcImphdmFzY3JpcHRcIixcclxuXHRcdFx0anNvbjogdHJ1ZSxcclxuXHRcdFx0c3RhdGVtZW50SW5kZW50OiAyXHJcblx0XHR9LFxyXG5cdFx0cHJvZmlsZTogJ3hodG1sJyxcclxuXHRcdGxpbmVXcmFwcGluZzogdHJ1ZSxcclxuXHRcdGluZGVudFdpdGhUYWJzOiBmYWxzZSxcclxuXHRcdHRhYlNpemU6IDJcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnN0cnVjdG9yXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcm90ZWN0ZWQgc2VydmljZTogVGVtcGxhdGVTZXJ2aWNlLFxyXG5cdFx0cHJvdGVjdGVkIGZpbGVTZXJ2aWNlOiBGaWxlU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCBkaWFsb2c6IE1hdERpYWxvZyxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcblx0KSB7XHJcblx0XHRzdXBlcihUZW1wbGF0ZSwgc2VydmljZSwgcm91dGUsIGNoYW5nZURldGVjdG9yUmVmKVxyXG5cdFx0dGhpcy5zZXR0aW5ncyA9IHRoaXMuZ2V0U2VydmljZShDbXNTZXR0aW5ncyk7XHJcblxyXG5cdFx0aWYgKHRoaXMuc2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSB8fCB0aGlzLnNldHRpbmdzPy5tdWx0aUNsaWVudHMpIHtcclxuXHRcdFx0dGhpcy5pbmNsdWRlKCdDbGllbnRKb2lucycsIHRydWUpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGlzLnNldHRpbmdzPy5tdWx0aXRlbmFudGFibGUgfHwgdGhpcy5zZXR0aW5ncz8ubXVsdGlEZXBhcnRtZW50cykge1xyXG5cdFx0XHR0aGlzLmluY2x1ZGUoJ0RlcGFydG1lbnRKb2lucycsIHRydWUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVtb3ZlcyBhIGF0dGFjaG1lbnRcclxuXHQgKiBAcGFyYW0gYXR0YWNobWVudCBcclxuXHQgKi9cclxuXHRwdWJsaWMgcmVtb3ZlQXR0YWNobWVudChhdHRhY2htZW50OiBBdHRhY2htZW50KTogdm9pZCB7XHJcblx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzLml0ZW0/LmF0dGFjaG1lbnRzKSkge1xyXG5cdFx0XHR2YXIgaW5kZXggPSB0aGlzLmF0dGFjaG1lbnRzQ29udHJvbC52YWx1ZS5pbmRleE9mKGF0dGFjaG1lbnQsIDApO1xyXG5cdFx0XHRpZiAoaW5kZXggPiAtMSkge1xyXG5cdFx0XHRcdHRoaXMuZGlhbG9nU2VydmljZS5vcGVuQ29uZmlybSh7XHJcblx0XHRcdFx0XHRtZXNzYWdlOiAnTcO2Y2h0ZW4gU2llIGRpZXNlbiBBbmhhbmcgd2lya2xpY2ggbMO2c2NoZW4/JyxcclxuXHRcdFx0XHRcdHRpdGxlOiAnTMO2c2NoZW4gYmVzdMOkdGlnZW4nLFxyXG5cdFx0XHRcdFx0Y2FuY2VsQnV0dG9uOiAkbG9jYWxpemVgOkBAY2FuY2VsOkNhbmNlbGAsXHJcblx0XHRcdFx0XHRhY2NlcHRCdXR0b246ICRsb2NhbGl6ZWA6QEB5ZXM6WWVzYCxcclxuXHRcdFx0XHR9KS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoYWNjZXB0OiBib29sZWFuKSA9PiB7XHJcblx0XHRcdFx0XHRpZiAoYWNjZXB0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuYXR0YWNobWVudHNDb250cm9sLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuYXR0YWNobWVudHNDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5hdHRhY2htZW50c0NvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBsb2FkcyBhIGF0dGFjaG1lbnQgZmlsZVxyXG5cdCAqIEBwYXJhbSBmaWxlIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyB1cGxvYWRBdHRhY2htZW50KCRldmVudDogRXZlbnQpOiB2b2lkIHtcclxuXHRcdGxldCBmaWxlID0gKCgkZXZlbnQ/LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcyA/PyBbXSlbMF07XHJcblx0XHRpZiAoZmlsZSAhPSBudWxsKSB7XHJcblx0XHRcdC8vIHRoaXMuZmlsZVNlcnZpY2UudXBsb2FkKGZpbGUsIGB1cGxvYWRgLCB7IGNsaWVudElkOiB0aGlzLml0ZW0uY2xpZW50SWQsIHBhdGg6IGAke3RoaXMuaXRlbS5jbGllbnRJZCA/ICcnIDogJ2NvbW1vbi8nfWRvY3NgIH0pLnN1YnNjcmliZShldmVudCA9PiB7XHJcblx0XHRcdC8vIFx0aWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpIHtcclxuXHJcblx0XHRcdC8vIFx0XHQvKiBDYWxjdWxhdGUgdGhlIHByb2dyZXNzIHBlcmNlbnRhZ2UgKi9cclxuXHRcdFx0Ly8gXHRcdGNvbnN0IHBlcmNlbnREb25lID0gTWF0aC5yb3VuZCgxMDAgKiBldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCk7XHJcblxyXG5cdFx0XHQvLyBcdFx0LyogUGFzcyB0aGUgcGVyY2VudGFnZSBpbnRvIHRoZSBwcm9ncmVzcy1zdHJlYW0gKi9cclxuXHRcdFx0Ly8gXHRcdGNvbnNvbGUuaW5mbyhwZXJjZW50RG9uZSk7XHJcblx0XHRcdC8vIFx0fSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xyXG5cdFx0XHQvLyBcdFx0LyogQWRkIG91ciBhdHRhY2htZW50cyAqL1xyXG5cdFx0XHQvLyBcdFx0dGhpcy5hdHRhY2htZW50c0NvbnRyb2wuc2V0VmFsdWUoWy4uLnRoaXMuYXR0YWNobWVudHNDb250cm9sLnZhbHVlLCA8QXR0YWNobWVudD5ldmVudC5ib2R5XSk7XHJcblx0XHRcdC8vIFx0XHR0aGlzLmF0dGFjaG1lbnRzQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdC8vIFx0XHR0aGlzLmF0dGFjaG1lbnRzQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG5cdFx0XHQvLyBcdH1cclxuXHRcdFx0Ly8gfSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEb3dubG9hZHMgYSBhdHRhY2htZW50XHJcblx0ICogQHBhcmFtIGF0dGFjaG1lbnQgXHJcblx0ICovXHJcblx0cHVibGljIGRvd25sb2FkQXR0YWNobWVudChhdHRhY2htZW50OiBBdHRhY2htZW50KTogdm9pZCB7XHJcblx0XHRpZiAoYXR0YWNobWVudC5pZCkge1xyXG5cdFx0XHR0aGlzLnNlcnZpY2UuZG93bmxvYWQoYGRvd25sb2FkQXR0YWNobWVudC8ke2F0dGFjaG1lbnQuaWR9YCkuc3Vic2NyaWJlKHggPT4ge1xyXG5cdFx0XHRcdHNhdmVBcyhuZXcgQmxvYihbeC5kYXRhXSwgeyB0eXBlOiAnJyB9KSwgeC5maWxlbmFtZSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2hvd3MgdGVtcGxhdGUgcHJldmlld1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBzaG93UHJldmlldygpOiB2b2lkIHtcclxuXHRcdHRoaXMuZGlhbG9nLm9wZW4oVGVtcGxhdGVQcmV2aWV3RGlhbG9nQ29tcG9uZW50LCB7XHJcblx0XHRcdHdpZHRoOiB0aGlzLml0ZW0/LnR5cGUgPT0gVGVtcGxhdGVUeXBlLlBkZiA/ICcxMDIwcHgnIDogJzkyMHB4JyxcclxuXHRcdFx0ZGF0YTogbmV3IFRlbXBsYXRlUHJldmlldyh7XHJcblx0XHRcdFx0dGVtcGxhdGVJZDogdGhpcy5pdGVtPy5pZCxcclxuXHRcdFx0XHR0eXBlOiB0aGlzLml0ZW0/LnR5cGVcclxuXHRcdFx0fSksXHJcblx0XHRcdHBhbmVsQ2xhc3M6IFsnZGlhbG9nLWZ1bGwtc2NyZWVuJ11cclxuXHRcdH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCk7XHJcblx0fVxyXG59IiwiPHZkLWxheW91dC1uYXYgY29sb3I9XCJwcmltYXJ5XCIgW2JhY2tOYXZpZ2F0aW9uUm91dGVdPVwibGlzdFJvdXRlXCIgdG9vbGJhclRpdGxlPVwiVGVtcGxhdGVcIiBpMThuLXRvb2xiYXJUaXRsZT1cIkBAdGVtcGxhdGVcIiBbZWRpdE1vZGVdPVwiaXNFZGl0TW9kZVwiIFthY3Rpb25zXT1cInRvb2xiYXJBY3Rpb25zXCIgW2RhdGFdPVwiaXRlbVwiIFtjb250ZXh0XT1cInRoaXNcIj5cclxuXHQ8Zm9ybSAqbmdJZj1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBub3ZhbGlkYXRlIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cclxuXHRcdDx2ZC1sYXlvdXQtY2FyZC1vdmVyIGNsYXNzPVwiYWNjb3JkaW9uXCIgY2FyZFdpZHRoPVwiNzBcIiBjb2xvcj1cInByaW1hcnlcIiBmbGV4PlxyXG5cdFx0XHQ8bWF0LWFjY29yZGlvbiBbbXVsdGldPVwiIWlzRWRpdE1vZGVcIj5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gRGV0YWlscyAtLT5cclxuXHRcdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbCBleHBhbmRlZD1cInRydWVcIiBpZD1cImRldGFpbHNcIj5cclxuXHRcdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdFx0PG1hdC1wYW5lbC10aXRsZSBpMThuPVwiQEBkZXRhaWxzXCI+RGV0YWlsczwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBtYXRFeHBhbnNpb25QYW5lbENvbnRlbnQ+XHJcblx0XHRcdFx0XHRcdDx2ZC1nZW5lcmljLWZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgW2ZpZWxkR3JvdXBzXT1cImZpZWxkR3JvdXBzXCIgW2ZpZWxkU2V0c109XCJbJ2RldGFpbHMnXVwiIFtjb250ZXh0XT1cInRoaXNcIj48L3ZkLWdlbmVyaWMtZm9ybT5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8bWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBpMThuPVwiQEBzYXZlXCI+U2F2ZTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJhcHBseSgpXCIgKm5nSWY9XCJpc0VkaXRNb2RlXCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCIgaTE4bj1cIkBAYXBwbHlcIj5BcHBseTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJiYWNrKClcIiBpMThuPVwiQEBjYW5jZWxcIj5DYW5jZWw8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gZmxleD48L3NwYW4+XHJcblx0XHRcdFx0XHQ8L21hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuXHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdDwhLS0gI3JlZ2lvbiBDb250ZW50IC0tPlxyXG5cdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsIGlkPVwiY29udGVudFwiPlxyXG5cdFx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGkxOG49XCJAQGNvbnRlbnRcIj5Db250ZW50PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L21hdC1wYW5lbC10aXRsZT5cclxuXHRcdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgbWF0RXhwYW5zaW9uUGFuZWxDb250ZW50PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGxheW91dC1tYXJnaW4+XHJcblx0XHRcdFx0XHRcdFx0PG5neC1jb2RlbWlycm9yIGZvcm1Db250cm9sTmFtZT1cImNvbnRlbnRcIiByb3dzPVwiMTYwXCIgW29wdGlvbnNdPVwiZWRpdG9yT3B0aW9uc1wiPjwvbmd4LWNvZGVtaXJyb3I+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDxtYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIGkxOG49XCJAQHNhdmVcIj5TYXZlPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cImFwcGx5KClcIiAqbmdJZj1cImlzRWRpdE1vZGVcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBpMThuPVwiQEBhcHBseVwiPkFwcGx5PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cInNob3dQcmV2aWV3KClcIiAqbmdJZj1cImlzRWRpdE1vZGVcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmcgfHwgIWZvcm0ucHJpc3RpbmVcIiBpMThuPVwiQEBwcmV2aWV3XCI+UHJldmlldzwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJiYWNrKClcIiBpMThuPVwiQEBjYW5jZWxcIj5DYW5jZWw8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gZmxleD48L3NwYW4+XHJcblx0XHRcdFx0XHQ8L21hdC1hY3Rpb24tcm93PlxyXG5cdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuXHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdDwhLS0gI3JlZ2lvbiBDb250ZW50IC0tPlxyXG5cdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsIGlkPVwidGVzdERhdGFcIj5cclxuXHRcdFx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdFx0PG1hdC1wYW5lbC10aXRsZT5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBpMThuPVwiQEB0ZXN0RGF0YVwiPlRlc3QgRGF0YTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PC9tYXQtcGFuZWwtdGl0bGU+XHJcblx0XHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIG1hdEV4cGFuc2lvblBhbmVsQ29udGVudD5cclxuXHRcdFx0XHRcdFx0PGRpdiBsYXlvdXQtbWFyZ2luPlxyXG5cdFx0XHRcdFx0XHRcdDxuZ3gtY29kZW1pcnJvciBmb3JtQ29udHJvbE5hbWU9XCJkdW1teURhdGFcIiByb3dzPVwiMTIwXCIgW29wdGlvbnNdPVwianNvbkVkaXRvck9wdGlvbnNcIj48L25neC1jb2RlbWlycm9yPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8bWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBpMThuPVwiQEBzYXZlXCI+U2F2ZTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJhcHBseSgpXCIgKm5nSWY9XCJpc0VkaXRNb2RlXCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nXCIgaTE4bj1cIkBAYXBwbHlcIj5BcHBseTwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJzaG93UHJldmlldygpXCIgKm5nSWY9XCJpc0VkaXRNb2RlXCIgW2Rpc2FibGVkXT1cImlzU2F2aW5nIHx8ICFmb3JtLnByaXN0aW5lXCIgaTE4bj1cIkBAcHJldmlld1wiPlByZXZpZXc8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiYmFjaygpXCIgaTE4bj1cIkBAY2FuY2VsXCI+Q2FuY2VsPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGZsZXg+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9tYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHQ8IS0tICNyZWdpb24gQXVkaXQgLS0+XHJcblx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwgaWQ9XCJhdWRpdFwiICpuZ0lmPVwiaXNFZGl0TW9kZVwiPlxyXG5cdFx0XHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGkxOG49XCJAQGF1ZGl0XCI+QXVkaXQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvbWF0LXBhbmVsLXRpdGxlPlxyXG5cdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBtYXRFeHBhbnNpb25QYW5lbENvbnRlbnQ+XHJcblx0XHRcdFx0XHRcdDx2ZC1hdWRpdCBbZW50aXR5XT1cIml0ZW1cIj4gPC92ZC1hdWRpdD5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8bWF0LWFjdGlvbi1yb3c+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIChjbGljayk9XCJiYWNrKClcIiBpMThuPVwiQEBjbG9zZVwiPkNsb3NlPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGZsZXg+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9tYXQtYWN0aW9uLXJvdz5cclxuXHRcdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cdFx0XHQ8L21hdC1hY2NvcmRpb24+XHJcblx0XHQ8L3ZkLWxheW91dC1jYXJkLW92ZXI+XHJcblx0PC9mb3JtPlxyXG48L3ZkLWxheW91dC1uYXY+Il19
|
package/esm2022/lib/comnponents/template-preview-dialog/template-preview-dialog.component.mjs
DELETED
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Component, ElementRef, Inject, ViewChild } from '@angular/core';
|
|
2
|
-
import { NgModel } from '@angular/forms';
|
|
3
|
-
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
|
4
|
-
import { ActivatedRoute } from '@angular/router';
|
|
5
|
-
import { BaseComponent } from '@messaia/cdk';
|
|
6
|
-
import { saveAs } from 'file-saver';
|
|
7
|
-
import { TemplateType } from '../../enums/template-type';
|
|
8
|
-
import { TemplatePreview } from '../../models/template-preview';
|
|
9
|
-
import { TemplatePreviewService } from '../../services/template-preview.service';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "../../services/template-preview.service";
|
|
12
|
-
import * as i2 from "@angular/material/dialog";
|
|
13
|
-
import * as i3 from "@angular/router";
|
|
14
|
-
import * as i4 from "@angular/common";
|
|
15
|
-
import * as i5 from "@angular/forms";
|
|
16
|
-
import * as i6 from "@messaia/cdk";
|
|
17
|
-
import * as i7 from "@angular/material/card";
|
|
18
|
-
import * as i8 from "@angular/material/button";
|
|
19
|
-
import * as i9 from "@angular/material/icon";
|
|
20
|
-
import * as i10 from "@angular/material/form-field";
|
|
21
|
-
import * as i11 from "@angular/material/input";
|
|
22
|
-
import * as i12 from "@angular/material/progress-bar";
|
|
23
|
-
import * as i13 from "@angular/material/divider";
|
|
24
|
-
import * as i14 from "ng2-pdf-viewer";
|
|
25
|
-
import * as i15 from "../../models/template-preview";
|
|
26
|
-
export class TemplatePreviewDialogComponent extends BaseComponent {
|
|
27
|
-
service;
|
|
28
|
-
dialogRef;
|
|
29
|
-
data;
|
|
30
|
-
route;
|
|
31
|
-
changeDetectorRef;
|
|
32
|
-
/**
|
|
33
|
-
* TemplateType
|
|
34
|
-
*/
|
|
35
|
-
TemplateType = TemplateType;
|
|
36
|
-
/**
|
|
37
|
-
* Pdf blob
|
|
38
|
-
*/
|
|
39
|
-
pdfBlob;
|
|
40
|
-
/**
|
|
41
|
-
* PDF source
|
|
42
|
-
*/
|
|
43
|
-
pdfSrc;
|
|
44
|
-
/**
|
|
45
|
-
* Pdf zoom
|
|
46
|
-
*/
|
|
47
|
-
zoom = 0.98;
|
|
48
|
-
/**
|
|
49
|
-
* Pdf zoom scale
|
|
50
|
-
*/
|
|
51
|
-
zoomScale = 'page-width';
|
|
52
|
-
/**
|
|
53
|
-
* Track whether the dialog is maximized
|
|
54
|
-
*/
|
|
55
|
-
isMaximized = false;
|
|
56
|
-
/*
|
|
57
|
-
* Reference to the iframe element.
|
|
58
|
-
* This will be used to manipulate the iframe's content programmatically.
|
|
59
|
-
* 'static: false' indicates that the reference is resolved after view initialization.
|
|
60
|
-
*/
|
|
61
|
-
iframeRef;
|
|
62
|
-
/*
|
|
63
|
-
* Reference to the NgModel directive for the input element.
|
|
64
|
-
*/
|
|
65
|
-
emailModel;
|
|
66
|
-
/**
|
|
67
|
-
* Constructor
|
|
68
|
-
* @param dialogRef
|
|
69
|
-
* @param data
|
|
70
|
-
*/
|
|
71
|
-
constructor(service, dialogRef, data, route, changeDetectorRef) {
|
|
72
|
-
super(route, changeDetectorRef);
|
|
73
|
-
this.service = service;
|
|
74
|
-
this.dialogRef = dialogRef;
|
|
75
|
-
this.data = data;
|
|
76
|
-
this.route = route;
|
|
77
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
78
|
-
this.data.email = localStorage.getItem('templatePreviewEmail') ?? '';
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Lifecycle hook that is called after data-bound properties
|
|
82
|
-
* of a directive are initialized.
|
|
83
|
-
*/
|
|
84
|
-
ngOnInit() {
|
|
85
|
-
/* Set loading state to true */
|
|
86
|
-
this.isLoading = true;
|
|
87
|
-
if (this.data.type == TemplateType.Pdf) {
|
|
88
|
-
this.service.create(this.data, undefined, { responseType: 'arraybuffer' }).subscribe({
|
|
89
|
-
next: (x) => {
|
|
90
|
-
/* Set loading state to false */
|
|
91
|
-
this.isLoading = false;
|
|
92
|
-
/* Create a Blob from the response */
|
|
93
|
-
this.pdfBlob = new Blob([x], { type: 'application/pdf' });
|
|
94
|
-
/* Create a URL for the PDF Blob */
|
|
95
|
-
this.pdfSrc = URL.createObjectURL(this.pdfBlob);
|
|
96
|
-
},
|
|
97
|
-
error: () => {
|
|
98
|
-
/* Handle error and set loading state to false */
|
|
99
|
-
this.isLoading = false;
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
this.service.create(this.data).subscribe({
|
|
105
|
-
next: (x) => {
|
|
106
|
-
/* Set loading state to false */
|
|
107
|
-
this.isLoading = false;
|
|
108
|
-
/* Merge response data with existing data */
|
|
109
|
-
Object.assign(this.data, x);
|
|
110
|
-
/* Get the iframe element from the template reference variable */
|
|
111
|
-
const iframe = this.iframeRef?.nativeElement;
|
|
112
|
-
if (iframe) {
|
|
113
|
-
/* Access the document object of the iframe */
|
|
114
|
-
const doc = iframe.contentDocument || iframe.contentWindow.document;
|
|
115
|
-
/* Write the HTML content to the iframe */
|
|
116
|
-
doc.open();
|
|
117
|
-
doc.write(x?.content ?? '');
|
|
118
|
-
doc.close();
|
|
119
|
-
}
|
|
120
|
-
},
|
|
121
|
-
error: () => {
|
|
122
|
-
/* Handle error and set loading state to false */
|
|
123
|
-
this.isLoading = false;
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Sends a mail
|
|
130
|
-
*/
|
|
131
|
-
sendMail() {
|
|
132
|
-
/* Throw an exception if this.data.email is null */
|
|
133
|
-
if (this.data.email == null) {
|
|
134
|
-
throw new Error('Email is null. Cannot send mail.');
|
|
135
|
-
}
|
|
136
|
-
this.service.create(this.data, '/sendMail').subscribe({
|
|
137
|
-
next: (x) => {
|
|
138
|
-
this.isLoading = false;
|
|
139
|
-
localStorage.setItem('templatePreviewEmail', this.data.email);
|
|
140
|
-
this.snackBarService.open($localize `:@@snackbar.send.success:Data sent successfully.`, undefined, {
|
|
141
|
-
duration: 3000,
|
|
142
|
-
panelClass: ['primary']
|
|
143
|
-
});
|
|
144
|
-
},
|
|
145
|
-
error: () => this.isLoading = false
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Downloads the pdf
|
|
150
|
-
*/
|
|
151
|
-
download() {
|
|
152
|
-
saveAs(this.pdfBlob, "Pdf.pdf");
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Zooms in the pdf
|
|
156
|
-
*/
|
|
157
|
-
zoomIn() {
|
|
158
|
-
this.zoom += 0.1;
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Zooms out the pdf
|
|
162
|
-
*/
|
|
163
|
-
zoomOut() {
|
|
164
|
-
this.zoom += -0.1;
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Closes the dialog
|
|
168
|
-
*/
|
|
169
|
-
cancel() {
|
|
170
|
-
this.dialogRef.close();
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Toggle the dialog between maximized and normal size
|
|
174
|
-
*/
|
|
175
|
-
toggleMaximize() {
|
|
176
|
-
this.isMaximized = !this.isMaximized;
|
|
177
|
-
/* Apply or remove the full-screen class based on the isMaximized flag */
|
|
178
|
-
if (this.isMaximized) {
|
|
179
|
-
this.dialogRef.addPanelClass('full-screen');
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
this.dialogRef.removePanelClass('full-screen');
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TemplatePreviewDialogComponent, deps: [{ token: i1.TemplatePreviewService }, { token: i2.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i3.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
186
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: TemplatePreviewDialogComponent, selector: "app-template-preview", viewQueries: [{ propertyName: "iframeRef", first: true, predicate: ["iframeRef"], descendants: true }, { propertyName: "emailModel", first: true, predicate: ["email"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div mat-dialog-title>\r\n <span i18n=\"@@templatePreview\">Template preview</span>\r\n <span flex></span>\r\n <div *ngIf=\"data.type == TemplateType.Pdf && pdfSrc ||true\">\r\n <a mat-icon-button (click)=\"download()\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">download</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomIn()\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">zoom_in</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomOut()\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">zoom_out</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"toggleMaximize()\" class=\"maximize-button\">\r\n <mat-icon>{{ isMaximized ? 'fullscreen_exit' : 'fullscreen' }}</mat-icon>\r\n </a>\r\n </div>\r\n</div>\r\n<form #form=\"ngForm\" novalidate layout=\"column\" flex>\r\n <!-- #region Entity -->\r\n <div layout=\"row\" flex *ngIf=\"data.endpoint\">\r\n <mat-form-field flex layout-margin>\r\n <mat-label>{{data.entityName}}</mat-label>\r\n <vd-chips [(ngModel)]=\"data.entityId\" [endpoint]=\"data.endpoint\" [params]=\"{sortBy: 'id'}\" text=\"displayName\" name=\"entityId\" #entityId=\"ngModel\" [placeholder]=\"data.entityName??''\" required flex>\r\n <ng-template vd-chip let-entity=\"chip\">\r\n <span>{{entity[data.displayName??'']}}</span>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-entity=\"option\">\r\n <span>{{entity[data.displayName??'']}}</span>\r\n </ng-template>\r\n </vd-chips>\r\n <mat-error *ngIf=\"entityId.errors?.required\"><span>{{data.entityName}}</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <div layout=\"column\" layout-gt-sm=\"row\" class=\"push-bottom\" flex *ngIf=\"isLoading\">\r\n <div flex layout-margin>\r\n <div class=\"push-bottom-sm\" i18n=\"@@pleaseWait\">Please Wait...</div>\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n </div>\r\n\r\n <!-- #region PDF Content -->\r\n <mat-card *ngIf=\"data.type == TemplateType.Pdf\" flex>\r\n <pdf-viewer [src]=\"pdfSrc\" *ngIf=\"data.type == TemplateType.Pdf && pdfSrc\" [render-text]=\"true\" [zoom]=\"zoom\" [zoom-scale]=\"zoomScale\" [show-borders]=\"true\" [original-size]=\"false\" [autoresize]=\"true\"></pdf-viewer>\r\n </mat-card>\r\n <!-- #region Content -->\r\n\r\n <div *ngIf=\"data.type != TemplateType.Pdf\" layout=\"column\" class=\"pad-top-none\" layout-padding margin-layout flex>\r\n <!-- #region Content -->\r\n <div class=\"pad-top-none\" layout-padding margin-layout flex>\r\n <iframe #iframeRef frameborder=\"0\"></iframe>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Email-->\r\n <div layout-gt-sm=\"row\" layout=\"column\" class=\"pad-top\">\r\n <mat-form-field flex layout-margin>\r\n <mat-label i18n=\"@@email\">Email</mat-label>\r\n <input matInput type=\"email\" name=\"email\" [(ngModel)]=\"data.email\" #email=\"ngModel\" email placeholder=\"Email\" i18n-placeholder=\"@@email\">\r\n <mat-error *ngIf=\"email.errors?.required\"><span i18n=\"@@email\">Email</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n <mat-error *ngIf=\"!email.errors?.required && email.errors?.email\"><span i18n=\"@@email\">Email</span><span i18n=\"@@isInvalid\"> is invalid</span></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- #endregion -->\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div mat-dialog-actions class=\"pad-left\">\r\n <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"cancel()\" [autofocus]=\"true\" i18n=\"@@close\">Close</button>\r\n <button type=\"button\" mat-flat-button (click)=\"sendMail()\" [disabled]=\"data.email == undefined || !emailModel?.valid\" i18n=\"@@sendMail\">Send mail</button>\r\n </div>\r\n</form>", styles: [".content{overflow:scroll;min-height:200px;max-height:500px;border:1px solid #e5e5e5;border-radius:4px;padding:8px}iframe{width:100%;height:100%;min-height:200px;border:1px solid #e5e5e5;border-radius:4px}pdf-viewer{display:block;margin-left:-16px;width:calc(100% + 32px);height:calc(100vh - 170px);background:#dbdbdb}.mat-mdc-dialog-title{display:flex;padding:8px 12px;align-items:center}.dialog-content{width:100%;height:100%;box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.AsyncValidationDirective, selector: "[ngModel],[formControlName],[formControl]", inputs: ["async"] }, { kind: "directive", type: i6.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.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { 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: i8.MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "directive", type: i10.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]" }, { kind: "directive", type: i6.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { kind: "directive", type: i6.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "component", type: i6.VdChipsComponent, selector: "vd-chips", inputs: ["classType", "chips", "endpoint", "params", "projection", "paginated", "customValue", "context", "key", "searchField", "searchFields", "filters", "removable", "selectFirst", "debounce", "autocompleteCssClass", "suffixButtons"], outputs: ["initSelect", "selected", "cleared", "launch", "chipFocus"] }, { kind: "directive", type: i6.VdAutocompleteOptionDirective, selector: "[vd-autocomplete-option]ng-template" }, { kind: "directive", type: i6.VdChipDirective, selector: "[vd-chip]ng-template" }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i13.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i14.PdfViewerComponent, selector: "pdf-viewer", inputs: ["src", "c-maps-url", "page", "render-text", "render-text-mode", "original-size", "show-all", "stick-to-page", "zoom", "zoom-scale", "rotation", "external-link-target", "autoresize", "fit-to-page", "show-borders"], outputs: ["after-load-complete", "page-rendered", "pages-initialized", "text-layer-rendered", "error", "on-progress", "pageChange"] }] });
|
|
187
|
-
}
|
|
188
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TemplatePreviewDialogComponent, decorators: [{
|
|
189
|
-
type: Component,
|
|
190
|
-
args: [{ selector: 'app-template-preview', template: "<div mat-dialog-title>\r\n <span i18n=\"@@templatePreview\">Template preview</span>\r\n <span flex></span>\r\n <div *ngIf=\"data.type == TemplateType.Pdf && pdfSrc ||true\">\r\n <a mat-icon-button (click)=\"download()\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">download</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomIn()\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">zoom_in</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomOut()\">\r\n <mat-icon fontSet=\"material-symbols-outlined\">zoom_out</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"toggleMaximize()\" class=\"maximize-button\">\r\n <mat-icon>{{ isMaximized ? 'fullscreen_exit' : 'fullscreen' }}</mat-icon>\r\n </a>\r\n </div>\r\n</div>\r\n<form #form=\"ngForm\" novalidate layout=\"column\" flex>\r\n <!-- #region Entity -->\r\n <div layout=\"row\" flex *ngIf=\"data.endpoint\">\r\n <mat-form-field flex layout-margin>\r\n <mat-label>{{data.entityName}}</mat-label>\r\n <vd-chips [(ngModel)]=\"data.entityId\" [endpoint]=\"data.endpoint\" [params]=\"{sortBy: 'id'}\" text=\"displayName\" name=\"entityId\" #entityId=\"ngModel\" [placeholder]=\"data.entityName??''\" required flex>\r\n <ng-template vd-chip let-entity=\"chip\">\r\n <span>{{entity[data.displayName??'']}}</span>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-entity=\"option\">\r\n <span>{{entity[data.displayName??'']}}</span>\r\n </ng-template>\r\n </vd-chips>\r\n <mat-error *ngIf=\"entityId.errors?.required\"><span>{{data.entityName}}</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <div layout=\"column\" layout-gt-sm=\"row\" class=\"push-bottom\" flex *ngIf=\"isLoading\">\r\n <div flex layout-margin>\r\n <div class=\"push-bottom-sm\" i18n=\"@@pleaseWait\">Please Wait...</div>\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n </div>\r\n\r\n <!-- #region PDF Content -->\r\n <mat-card *ngIf=\"data.type == TemplateType.Pdf\" flex>\r\n <pdf-viewer [src]=\"pdfSrc\" *ngIf=\"data.type == TemplateType.Pdf && pdfSrc\" [render-text]=\"true\" [zoom]=\"zoom\" [zoom-scale]=\"zoomScale\" [show-borders]=\"true\" [original-size]=\"false\" [autoresize]=\"true\"></pdf-viewer>\r\n </mat-card>\r\n <!-- #region Content -->\r\n\r\n <div *ngIf=\"data.type != TemplateType.Pdf\" layout=\"column\" class=\"pad-top-none\" layout-padding margin-layout flex>\r\n <!-- #region Content -->\r\n <div class=\"pad-top-none\" layout-padding margin-layout flex>\r\n <iframe #iframeRef frameborder=\"0\"></iframe>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Email-->\r\n <div layout-gt-sm=\"row\" layout=\"column\" class=\"pad-top\">\r\n <mat-form-field flex layout-margin>\r\n <mat-label i18n=\"@@email\">Email</mat-label>\r\n <input matInput type=\"email\" name=\"email\" [(ngModel)]=\"data.email\" #email=\"ngModel\" email placeholder=\"Email\" i18n-placeholder=\"@@email\">\r\n <mat-error *ngIf=\"email.errors?.required\"><span i18n=\"@@email\">Email</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n <mat-error *ngIf=\"!email.errors?.required && email.errors?.email\"><span i18n=\"@@email\">Email</span><span i18n=\"@@isInvalid\"> is invalid</span></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- #endregion -->\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div mat-dialog-actions class=\"pad-left\">\r\n <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"cancel()\" [autofocus]=\"true\" i18n=\"@@close\">Close</button>\r\n <button type=\"button\" mat-flat-button (click)=\"sendMail()\" [disabled]=\"data.email == undefined || !emailModel?.valid\" i18n=\"@@sendMail\">Send mail</button>\r\n </div>\r\n</form>", styles: [".content{overflow:scroll;min-height:200px;max-height:500px;border:1px solid #e5e5e5;border-radius:4px;padding:8px}iframe{width:100%;height:100%;min-height:200px;border:1px solid #e5e5e5;border-radius:4px}pdf-viewer{display:block;margin-left:-16px;width:calc(100% + 32px);height:calc(100vh - 170px);background:#dbdbdb}.mat-mdc-dialog-title{display:flex;padding:8px 12px;align-items:center}.dialog-content{width:100%;height:100%;box-sizing:border-box}\n"] }]
|
|
191
|
-
}], ctorParameters: () => [{ type: i1.TemplatePreviewService }, { type: i2.MatDialogRef }, { type: i15.TemplatePreview, decorators: [{
|
|
192
|
-
type: Inject,
|
|
193
|
-
args: [MAT_DIALOG_DATA]
|
|
194
|
-
}] }, { type: i3.ActivatedRoute }, { type: i0.ChangeDetectorRef }], propDecorators: { iframeRef: [{
|
|
195
|
-
type: ViewChild,
|
|
196
|
-
args: ['iframeRef', { static: false }]
|
|
197
|
-
}], emailModel: [{
|
|
198
|
-
type: ViewChild,
|
|
199
|
-
args: ['email']
|
|
200
|
-
}] } });
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtcHJldmlldy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrLWNtcy9zcmMvbGliL2NvbW5wb25lbnRzL3RlbXBsYXRlLXByZXZpZXctZGlhbG9nL3RlbXBsYXRlLXByZXZpZXctZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9jb21ucG9uZW50cy90ZW1wbGF0ZS1wcmV2aWV3LWRpYWxvZy90ZW1wbGF0ZS1wcmV2aWV3LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPakYsTUFBTSxPQUFPLDhCQUErQixTQUFRLGFBQWE7SUFvRC9DO0lBQ0g7SUFDeUI7SUFDdEI7SUFDQTtJQXREZDs7T0FFRztJQUNJLFlBQVksR0FBd0IsWUFBWSxDQUFDO0lB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SUFDSSxPQUFPO1FBQ1YsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxjQUFjO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3JDLHlFQUF5RTtRQUN6RSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNMLENBQUM7dUdBakxRLDhCQUE4QixvRkFzRDNCLGVBQWU7MkZBdERsQiw4QkFBOEIsaVJDaEIzQyxncklBd0VPOzsyRkR4RE0sOEJBQThCO2tCQUwxQyxTQUFTOytCQUNJLHNCQUFzQjs7MEJBMEQzQixNQUFNOzJCQUFDLGVBQWU7c0dBaEJwQixTQUFTO3NCQURmLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFPbEMsVUFBVTtzQkFEaEIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdNb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdAbWVzc2FpYS9jZGsnO1xyXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgUERGU291cmNlIH0gZnJvbSAnbmcyLXBkZi12aWV3ZXInO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy90ZW1wbGF0ZS10eXBlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVQcmV2aWV3IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RlbXBsYXRlLXByZXZpZXcnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVByZXZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGVtcGxhdGUtcHJldmlldy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtdGVtcGxhdGUtcHJldmlldycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJ3RlbXBsYXRlLXByZXZpZXctZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWyd0ZW1wbGF0ZS1wcmV2aWV3LWRpYWxvZy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZVByZXZpZXdEaWFsb2dDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlVHlwZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgVGVtcGxhdGVUeXBlOiB0eXBlb2YgVGVtcGxhdGVUeXBlID0gVGVtcGxhdGVUeXBlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGRmIGJsb2JcclxuICAgICAqL1xyXG4gICAgcHVibGljIHBkZkJsb2I/OiBCbG9iO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUERGIHNvdXJjZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcGRmU3JjPzogc3RyaW5nIHwgVWludDhBcnJheSB8IFBERlNvdXJjZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBkZiB6b29tXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB6b29tID0gMC45ODtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBkZiB6b29tIHNjYWxlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB6b29tU2NhbGU6ICdwYWdlLWhlaWdodCcgfCAncGFnZS1maXQnIHwgJ3BhZ2Utd2lkdGgnID0gJ3BhZ2Utd2lkdGgnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJhY2sgd2hldGhlciB0aGUgZGlhbG9nIGlzIG1heGltaXplZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaXNNYXhpbWl6ZWQgPSBmYWxzZTtcclxuXHJcbiAgICAvKiBcclxuICAgICAqIFJlZmVyZW5jZSB0byB0aGUgaWZyYW1lIGVsZW1lbnQuIFxyXG4gICAgICogVGhpcyB3aWxsIGJlIHVzZWQgdG8gbWFuaXB1bGF0ZSB0aGUgaWZyYW1lJ3MgY29udGVudCBwcm9ncmFtbWF0aWNhbGx5LlxyXG4gICAgICogJ3N0YXRpYzogZmFsc2UnIGluZGljYXRlcyB0aGF0IHRoZSByZWZlcmVuY2UgaXMgcmVzb2x2ZWQgYWZ0ZXIgdmlldyBpbml0aWFsaXphdGlvbi5cclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZCgnaWZyYW1lUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgICBwdWJsaWMgaWZyYW1lUmVmPzogRWxlbWVudFJlZjtcclxuXHJcbiAgICAvKiBcclxuICAgICAqIFJlZmVyZW5jZSB0byB0aGUgTmdNb2RlbCBkaXJlY3RpdmUgZm9yIHRoZSBpbnB1dCBlbGVtZW50LlxyXG4gICAgICovXHJcbiAgICBAVmlld0NoaWxkKCdlbWFpbCcpXHJcbiAgICBwdWJsaWMgZW1haWxNb2RlbD86IE5nTW9kZWw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RvclxyXG4gICAgICogQHBhcmFtIGRpYWxvZ1JlZiBcclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgc2VydmljZTogVGVtcGxhdGVQcmV2aWV3U2VydmljZSxcclxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVQcmV2aWV3RGlhbG9nQ29tcG9uZW50PixcclxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IFRlbXBsYXRlUHJldmlldyxcclxuICAgICAgICBwcm90ZWN0ZWQgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKHJvdXRlLCBjaGFuZ2VEZXRlY3RvclJlZilcclxuICAgICAgICB0aGlzLmRhdGEuZW1haWwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGVtcGxhdGVQcmV2aWV3RW1haWwnKSA/PyAnJztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGRhdGEtYm91bmQgcHJvcGVydGllc1xyXG4gICAgICogb2YgYSBkaXJlY3RpdmUgYXJlIGluaXRpYWxpemVkLlxyXG4gICAgICovXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICAvKiBTZXQgbG9hZGluZyBzdGF0ZSB0byB0cnVlICovXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5kYXRhLnR5cGUgPT0gVGVtcGxhdGVUeXBlLlBkZikge1xyXG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuY3JlYXRlKHRoaXMuZGF0YSwgdW5kZWZpbmVkLCB7IHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvKiBTZXQgbG9hZGluZyBzdGF0ZSB0byBmYWxzZSAqL1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8qIENyZWF0ZSBhIEJsb2IgZnJvbSB0aGUgcmVzcG9uc2UgKi9cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBkZkJsb2IgPSBuZXcgQmxvYihbPGFueT54XSwgeyB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLyogQ3JlYXRlIGEgVVJMIGZvciB0aGUgUERGIEJsb2IgKi9cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBkZlNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwodGhpcy5wZGZCbG9iKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qIEhhbmRsZSBlcnJvciBhbmQgc2V0IGxvYWRpbmcgc3RhdGUgdG8gZmFsc2UgKi9cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuY3JlYXRlKHRoaXMuZGF0YSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6ICh4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvKiBTZXQgbG9hZGluZyBzdGF0ZSB0byBmYWxzZSAqL1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8qIE1lcmdlIHJlc3BvbnNlIGRhdGEgd2l0aCBleGlzdGluZyBkYXRhICovXHJcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmRhdGEsIHgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvKiBHZXQgdGhlIGlmcmFtZSBlbGVtZW50IGZyb20gdGhlIHRlbXBsYXRlIHJlZmVyZW5jZSB2YXJpYWJsZSAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlmcmFtZSA9IHRoaXMuaWZyYW1lUmVmPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpZnJhbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogQWNjZXNzIHRoZSBkb2N1bWVudCBvYmplY3Qgb2YgdGhlIGlmcmFtZSAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb2MgPSBpZnJhbWUuY29udGVudERvY3VtZW50IHx8IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLyogV3JpdGUgdGhlIEhUTUwgY29udGVudCB0byB0aGUgaWZyYW1lICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvYy5vcGVuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvYy53cml0ZSh4Py5jb250ZW50ID8/ICcnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLyogSGFuZGxlIGVycm9yIGFuZCBzZXQgbG9hZGluZyBzdGF0ZSB0byBmYWxzZSAqL1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlbmRzIGEgbWFpbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2VuZE1haWwoKSB7XHJcbiAgICAgICAgLyogVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHRoaXMuZGF0YS5lbWFpbCBpcyBudWxsICovXHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YS5lbWFpbCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRW1haWwgaXMgbnVsbC4gQ2Fubm90IHNlbmQgbWFpbC4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2VydmljZS5jcmVhdGUodGhpcy5kYXRhLCAnL3NlbmRNYWlsJykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKHgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGVtcGxhdGVQcmV2aWV3RW1haWwnLCB0aGlzLmRhdGEuZW1haWwhKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlLm9wZW4oJGxvY2FsaXplYDpAQHNuYWNrYmFyLnNlbmQuc3VjY2VzczpEYXRhIHNlbnQgc3VjY2Vzc2Z1bGx5LmAsIHVuZGVmaW5lZCwge1xyXG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsncHJpbWFyeSddXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6ICgpID0+IHRoaXMuaXNMb2FkaW5nID0gZmFsc2VcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERvd25sb2FkcyB0aGUgcGRmXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkb3dubG9hZCgpOiB2b2lkIHtcclxuICAgICAgICBzYXZlQXModGhpcy5wZGZCbG9iISwgXCJQZGYucGRmXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogWm9vbXMgaW4gdGhlIHBkZlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgem9vbUluKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuem9vbSArPSAwLjE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBab29tcyBvdXQgdGhlIHBkZlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgem9vbU91dCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnpvb20gKz0gLTAuMTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENsb3NlcyB0aGUgZGlhbG9nXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRvZ2dsZSB0aGUgZGlhbG9nIGJldHdlZW4gbWF4aW1pemVkIGFuZCBub3JtYWwgc2l6ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdG9nZ2xlTWF4aW1pemUoKSB7XHJcbiAgICAgICAgdGhpcy5pc01heGltaXplZCA9ICF0aGlzLmlzTWF4aW1pemVkO1xyXG4gICAgICAgIC8qIEFwcGx5IG9yIHJlbW92ZSB0aGUgZnVsbC1zY3JlZW4gY2xhc3MgYmFzZWQgb24gdGhlIGlzTWF4aW1pemVkIGZsYWcgKi9cclxuICAgICAgICBpZiAodGhpcy5pc01heGltaXplZCkge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5hZGRQYW5lbENsYXNzKCdmdWxsLXNjcmVlbicpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLnJlbW92ZVBhbmVsQ2xhc3MoJ2Z1bGwtc2NyZWVuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiPGRpdiBtYXQtZGlhbG9nLXRpdGxlPlxyXG4gICAgPHNwYW4gaTE4bj1cIkBAdGVtcGxhdGVQcmV2aWV3XCI+VGVtcGxhdGUgcHJldmlldzwvc3Bhbj5cclxuICAgIDxzcGFuIGZsZXg+PC9zcGFuPlxyXG4gICAgPGRpdiAqbmdJZj1cImRhdGEudHlwZSA9PSBUZW1wbGF0ZVR5cGUuUGRmICYmIHBkZlNyYyB8fHRydWVcIj5cclxuICAgICAgICA8YSBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRvd25sb2FkKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRTZXQ9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+ZG93bmxvYWQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICA8YSBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInpvb21JbigpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBmb250U2V0PVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPnpvb21faW48L21hdC1pY29uPlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICA8YSBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInpvb21PdXQoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gZm9udFNldD1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj56b29tX291dDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICAgIDxhIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlTWF4aW1pemUoKVwiIGNsYXNzPVwibWF4aW1pemUtYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj57eyBpc01heGltaXplZCA/ICdmdWxsc2NyZWVuX2V4aXQnIDogJ2Z1bGxzY3JlZW4nIH19PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2E+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxmb3JtICNmb3JtPVwibmdGb3JtXCIgbm92YWxpZGF0ZSBsYXlvdXQ9XCJjb2x1bW5cIiBmbGV4PlxyXG4gICAgPCEtLSAjcmVnaW9uIEVudGl0eSAtLT5cclxuICAgIDxkaXYgbGF5b3V0PVwicm93XCIgZmxleCAqbmdJZj1cImRhdGEuZW5kcG9pbnRcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgZmxleCBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZGF0YS5lbnRpdHlOYW1lfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPHZkLWNoaXBzIFsobmdNb2RlbCldPVwiZGF0YS5lbnRpdHlJZFwiIFtlbmRwb2ludF09XCJkYXRhLmVuZHBvaW50XCIgW3BhcmFtc109XCJ7c29ydEJ5OiAnaWQnfVwiIHRleHQ9XCJkaXNwbGF5TmFtZVwiIG5hbWU9XCJlbnRpdHlJZFwiICNlbnRpdHlJZD1cIm5nTW9kZWxcIiBbcGxhY2Vob2xkZXJdPVwiZGF0YS5lbnRpdHlOYW1lPz8nJ1wiIHJlcXVpcmVkIGZsZXg+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtY2hpcCBsZXQtZW50aXR5PVwiY2hpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ZW50aXR5W2RhdGEuZGlzcGxheU5hbWU/PycnXX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1hdXRvY29tcGxldGUtb3B0aW9uIGxldC1lbnRpdHk9XCJvcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2VudGl0eVtkYXRhLmRpc3BsYXlOYW1lPz8nJ119fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvdmQtY2hpcHM+XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJlbnRpdHlJZC5lcnJvcnM/LnJlcXVpcmVkXCI+PHNwYW4+e3tkYXRhLmVudGl0eU5hbWV9fTwvc3Bhbj48c3BhbiBpMThuPVwiQEBpc1JlcXVpcmVkXCI+IGlzIHJlcXVpcmVkPC9zcGFuPjwvbWF0LWVycm9yPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICA8ZGl2IGxheW91dD1cImNvbHVtblwiIGxheW91dC1ndC1zbT1cInJvd1wiIGNsYXNzPVwicHVzaC1ib3R0b21cIiBmbGV4ICpuZ0lmPVwiaXNMb2FkaW5nXCI+XHJcbiAgICAgICAgPGRpdiBmbGV4IGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdXNoLWJvdHRvbS1zbVwiIGkxOG49XCJAQHBsZWFzZVdhaXRcIj5QbGVhc2UgV2FpdC4uLjwvZGl2PlxyXG4gICAgICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gI3JlZ2lvbiBQREYgQ29udGVudCAtLT5cclxuICAgIDxtYXQtY2FyZCAqbmdJZj1cImRhdGEudHlwZSA9PSBUZW1wbGF0ZVR5cGUuUGRmXCIgZmxleD5cclxuICAgICAgICA8cGRmLXZpZXdlciBbc3JjXT1cInBkZlNyY1wiICpuZ0lmPVwiZGF0YS50eXBlID09IFRlbXBsYXRlVHlwZS5QZGYgJiYgcGRmU3JjXCIgW3JlbmRlci10ZXh0XT1cInRydWVcIiBbem9vbV09XCJ6b29tXCIgW3pvb20tc2NhbGVdPVwiem9vbVNjYWxlXCIgW3Nob3ctYm9yZGVyc109XCJ0cnVlXCIgW29yaWdpbmFsLXNpemVdPVwiZmFsc2VcIiBbYXV0b3Jlc2l6ZV09XCJ0cnVlXCI+PC9wZGYtdmlld2VyPlxyXG4gICAgPC9tYXQtY2FyZD5cclxuICAgIDwhLS0gI3JlZ2lvbiBDb250ZW50IC0tPlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJkYXRhLnR5cGUgIT0gVGVtcGxhdGVUeXBlLlBkZlwiIGxheW91dD1cImNvbHVtblwiIGNsYXNzPVwicGFkLXRvcC1ub25lXCIgbGF5b3V0LXBhZGRpbmcgbWFyZ2luLWxheW91dCBmbGV4PlxyXG4gICAgICAgIDwhLS0gI3JlZ2lvbiBDb250ZW50IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYWQtdG9wLW5vbmVcIiBsYXlvdXQtcGFkZGluZyBtYXJnaW4tbGF5b3V0IGZsZXg+XHJcbiAgICAgICAgICAgIDxpZnJhbWUgI2lmcmFtZVJlZiBmcmFtZWJvcmRlcj1cIjBcIj48L2lmcmFtZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgIDwhLS0gI3JlZ2lvbiBFbWFpbC0tPlxyXG4gICAgICAgIDxkaXYgbGF5b3V0LWd0LXNtPVwicm93XCIgbGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJwYWQtdG9wXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBmbGV4IGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGkxOG49XCJAQGVtYWlsXCI+RW1haWw8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwiZW1haWxcIiBuYW1lPVwiZW1haWxcIiBbKG5nTW9kZWwpXT1cImRhdGEuZW1haWxcIiAjZW1haWw9XCJuZ01vZGVsXCIgZW1haWwgcGxhY2Vob2xkZXI9XCJFbWFpbFwiIGkxOG4tcGxhY2Vob2xkZXI9XCJAQGVtYWlsXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZW1haWwuZXJyb3JzPy5yZXF1aXJlZFwiPjxzcGFuIGkxOG49XCJAQGVtYWlsXCI+RW1haWw8L3NwYW4+PHNwYW4gaTE4bj1cIkBAaXNSZXF1aXJlZFwiPiBpcyByZXF1aXJlZDwvc3Bhbj48L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCIhZW1haWwuZXJyb3JzPy5yZXF1aXJlZCAmJiBlbWFpbC5lcnJvcnM/LmVtYWlsXCI+PHNwYW4gaTE4bj1cIkBAZW1haWxcIj5FbWFpbDwvc3Bhbj48c3BhbiBpMThuPVwiQEBpc0ludmFsaWRcIj4gaXMgaW52YWxpZDwvc3Bhbj48L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnMgY2xhc3M9XCJwYWQtbGVmdFwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiY2FuY2VsKClcIiBbYXV0b2ZvY3VzXT1cInRydWVcIiBpMThuPVwiQEBjbG9zZVwiPkNsb3NlPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWZsYXQtYnV0dG9uIChjbGljayk9XCJzZW5kTWFpbCgpXCIgW2Rpc2FibGVkXT1cImRhdGEuZW1haWwgPT0gdW5kZWZpbmVkIHx8ICFlbWFpbE1vZGVsPy52YWxpZFwiIGkxOG49XCJAQHNlbmRNYWlsXCI+U2VuZCBtYWlsPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuPC9mb3JtPiJdfQ==
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export var ContentType;
|
|
2
|
-
(function (ContentType) {
|
|
3
|
-
ContentType[ContentType["Page"] = 1] = "Page";
|
|
4
|
-
ContentType[ContentType["Block"] = 2] = "Block";
|
|
5
|
-
})(ContentType || (ContentType = {}));
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrLWNtcy9zcmMvbGliL2VudW1zL2NvbnRlbnQtdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ25CLDZDQUFRLENBQUE7SUFDUiwrQ0FBSyxDQUFBO0FBQ1QsQ0FBQyxFQUhXLFdBQVcsS0FBWCxXQUFXLFFBR3RCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQ29udGVudFR5cGUge1xyXG4gICAgUGFnZSA9IDEsXHJcbiAgICBCbG9ja1xyXG59Il19
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export var FaqScope;
|
|
2
|
-
(function (FaqScope) {
|
|
3
|
-
FaqScope[FaqScope["CustomerPortal"] = 0] = "CustomerPortal";
|
|
4
|
-
FaqScope[FaqScope["Admin"] = 1] = "Admin";
|
|
5
|
-
})(FaqScope || (FaqScope = {}));
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFxLXNjb3BlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrLWNtcy9zcmMvbGliL2VudW1zL2ZhcS1zY29wZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxRQUdYO0FBSEQsV0FBWSxRQUFRO0lBQ25CLDJEQUFjLENBQUE7SUFDZCx5Q0FBSyxDQUFBO0FBQ04sQ0FBQyxFQUhXLFFBQVEsS0FBUixRQUFRLFFBR25CIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gRmFxU2NvcGUge1xyXG5cdEN1c3RvbWVyUG9ydGFsLFxyXG5cdEFkbWluXHJcbn0iXX0=
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export var TemplateType;
|
|
2
|
-
(function (TemplateType) {
|
|
3
|
-
TemplateType[TemplateType["Email"] = 0] = "Email";
|
|
4
|
-
TemplateType[TemplateType["Pdf"] = 1] = "Pdf";
|
|
5
|
-
})(TemplateType || (TemplateType = {}));
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay1jbXMvc3JjL2xpYi9lbnVtcy90ZW1wbGF0ZS10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFlBR1g7QUFIRCxXQUFZLFlBQVk7SUFDcEIsaURBQUssQ0FBQTtJQUNMLDZDQUFHLENBQUE7QUFDUCxDQUFDLEVBSFcsWUFBWSxLQUFaLFlBQVksUUFHdkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBUZW1wbGF0ZVR5cGUge1xyXG4gICAgRW1haWwsXHJcbiAgICBQZGZcclxufSJdfQ==
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export var WrapTag;
|
|
2
|
-
(function (WrapTag) {
|
|
3
|
-
WrapTag["None"] = "";
|
|
4
|
-
WrapTag["Section"] = "section";
|
|
5
|
-
WrapTag["Div"] = "div";
|
|
6
|
-
WrapTag["Address"] = "address";
|
|
7
|
-
WrapTag["Article"] = "article";
|
|
8
|
-
})(WrapTag || (WrapTag = {}));
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcC10YWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGstY21zL3NyYy9saWIvZW51bXMvd3JhcC10YWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksT0FNWDtBQU5ELFdBQVksT0FBTztJQUNmLG9CQUFTLENBQUE7SUFDVCw4QkFBbUIsQ0FBQTtJQUNuQixzQkFBVyxDQUFBO0lBQ1gsOEJBQW1CLENBQUE7SUFDbkIsOEJBQW1CLENBQUE7QUFDdkIsQ0FBQyxFQU5XLE9BQU8sS0FBUCxPQUFPLFFBTWxCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gV3JhcFRhZyB7XHJcbiAgICBOb25lID0gJycsXHJcbiAgICBTZWN0aW9uID0gJ3NlY3Rpb24nLFxyXG4gICAgRGl2ID0gJ2RpdicsXHJcbiAgICBBZGRyZXNzID0gJ2FkZHJlc3MnLFxyXG4gICAgQXJ0aWNsZSA9ICdhcnRpY2xlJ1xyXG59Il19
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class CmsSettings {
|
|
4
|
-
/**
|
|
5
|
-
* @property
|
|
6
|
-
*/
|
|
7
|
-
multiClients = false;
|
|
8
|
-
/**
|
|
9
|
-
* @property
|
|
10
|
-
*/
|
|
11
|
-
multiDepartments = false;
|
|
12
|
-
/**
|
|
13
|
-
* @property
|
|
14
|
-
*/
|
|
15
|
-
multitenantable = false;
|
|
16
|
-
/**
|
|
17
|
-
* @property
|
|
18
|
-
*/
|
|
19
|
-
styleUrlEndpoint;
|
|
20
|
-
/**
|
|
21
|
-
* @property
|
|
22
|
-
*/
|
|
23
|
-
editorHeight = '700px';
|
|
24
|
-
/**
|
|
25
|
-
* constructor
|
|
26
|
-
* @param init
|
|
27
|
-
*/
|
|
28
|
-
constructor(init) {
|
|
29
|
-
Object.assign(this, init);
|
|
30
|
-
}
|
|
31
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CmsSettings, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
|
|
32
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CmsSettings });
|
|
33
|
-
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CmsSettings, decorators: [{
|
|
35
|
-
type: Injectable
|
|
36
|
-
}], ctorParameters: () => [{ type: undefined }] });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLXNldHRpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrLWNtcy9zcmMvbGliL21vZGVscy9jbXMtc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLFdBQVc7SUFDcEI7O09BRUc7SUFDSSxZQUFZLEdBQWEsS0FBSyxDQUFDO0lBRXRDOztPQUVHO0lBQ0ksZ0JBQWdCLEdBQWEsS0FBSyxDQUFDO0lBRTFDOztPQUVHO0lBQ0ksZUFBZSxHQUFhLEtBQUssQ0FBQztJQUV6Qzs7T0FFRztJQUNJLGdCQUFnQixDQUFZO0lBRW5DOztPQUVHO0lBQ0ksWUFBWSxHQUFZLE9BQU8sQ0FBQztJQUV2Qzs7O09BR0c7SUFDSCxZQUFtQixJQUEyQjtRQUMxQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO3VHQWhDUSxXQUFXOzJHQUFYLFdBQVc7OzJGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENtc1NldHRpbmdzIHtcclxuICAgIC8qKlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtdWx0aUNsaWVudHM/OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIG11bHRpRGVwYXJ0bWVudHM/OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIG11bHRpdGVuYW50YWJsZT86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3R5bGVVcmxFbmRwb2ludD86IEZ1bmN0aW9uO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBlZGl0b3JIZWlnaHQ/OiBzdHJpbmcgPSAnNzAwcHgnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogY29uc3RydWN0b3JcclxuICAgICAqIEBwYXJhbSBpbml0IFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaW5pdD86IFBhcnRpYWw8Q21zU2V0dGluZ3M+KSB7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBpbml0KTtcclxuICAgIH1cclxufSJdfQ==
|