@cleavelandprice/ngx-lib 4.4.2 → 4.4.3
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/README.md +5 -5
- package/active-directory/material/components/user-chooser/user-chooser.component.d.ts +18 -18
- package/esm2022/active-directory/active-directory.api.mjs +11 -0
- package/esm2022/active-directory/active-directory.module.mjs +40 -0
- package/esm2022/active-directory/cleavelandprice-ngx-lib-active-directory.mjs +5 -0
- package/esm2022/active-directory/material/cleavelandprice-ngx-lib-active-directory-material.mjs +5 -0
- package/esm2022/active-directory/material/components/user-chooser/user-chooser.component.mjs +437 -0
- package/esm2022/active-directory/material/components/user-form-field/user-form-field.component.mjs +159 -0
- package/esm2022/active-directory/material/mat-active-directory.api.mjs +11 -0
- package/esm2022/active-directory/material/mat-active-directory.module.mjs +100 -0
- package/esm2022/active-directory/material/model/default-user-chooser-data.mjs +15 -0
- package/esm2022/active-directory/material/model/default-user-chooser-filter-options.mjs +8 -0
- package/esm2022/active-directory/material/model/selectable-group.mjs +2 -0
- package/esm2022/active-directory/material/model/selectable-user.mjs +2 -0
- package/esm2022/active-directory/material/model/user-chooser-data.mjs +2 -0
- package/esm2022/active-directory/material/model/user-chooser-filter-options.mjs +3 -0
- package/esm2022/active-directory/material/model/user-chooser-mode.mjs +6 -0
- package/esm2022/active-directory/material/model/user-chooser-pre-processing-group.mjs +3 -0
- package/esm2022/active-directory/model/active-directory-service-options-token.mjs +3 -0
- package/esm2022/active-directory/model/active-directory-service-options.mjs +2 -0
- package/esm2022/active-directory/model/ad-object-with-children.mjs +2 -0
- package/esm2022/active-directory/model/ad-object.mjs +2 -0
- package/esm2022/active-directory/model/cache-object.mjs +3 -0
- package/esm2022/active-directory/model/cleaveland-price-user.mjs +2 -0
- package/esm2022/active-directory/model/group.mjs +2 -0
- package/esm2022/active-directory/model/user-or-group.mjs +2 -0
- package/esm2022/active-directory/model/user.mjs +2 -0
- package/esm2022/active-directory/services/active-directory.service.mjs +125 -0
- package/esm2022/authentication/authentication.api.mjs +7 -0
- package/esm2022/authentication/authentication.base.module.mjs +40 -0
- package/esm2022/authentication/cleavelandprice-ngx-lib-authentication.mjs +5 -0
- package/esm2022/authentication/material/cleavelandprice-ngx-lib-authentication-material.mjs +5 -0
- package/esm2022/authentication/material/components/login/login.component.mjs +49 -0
- package/esm2022/authentication/material/components/login-form/login-form.component.mjs +82 -0
- package/esm2022/authentication/material/mat-authentication.api.mjs +8 -0
- package/esm2022/authentication/material/mat-authentication.module.mjs +84 -0
- package/esm2022/authentication/material/model/login-form-data.mjs +2 -0
- package/esm2022/authentication/material/model/mat-authentication-service-options-token.mjs +3 -0
- package/esm2022/authentication/material/model/mat-authentication-service-options.mjs +2 -0
- package/esm2022/authentication/material/services/mat-authentication.service.mjs +67 -0
- package/esm2022/authentication/model/abstract-authentication-service.mjs +2 -0
- package/esm2022/authentication/model/authenticated-user.mjs +2 -0
- package/esm2022/authentication/model/authentication-request.mjs +2 -0
- package/esm2022/authentication/model/authentication-service-options-token.mjs +3 -0
- package/esm2022/authentication/model/authentication-service-options.mjs +2 -0
- package/esm2022/authentication/object/authentication-object.api.mjs +6 -0
- package/esm2022/authentication/object/authentication-object.module.mjs +40 -0
- package/esm2022/authentication/object/cleavelandprice-ngx-lib-authentication-object.mjs +5 -0
- package/esm2022/authentication/object/services/authentication-object.service.mjs +129 -0
- package/esm2022/authentication/token/authentication-token.api.mjs +6 -0
- package/esm2022/authentication/token/authetiction-token.module.mjs +40 -0
- package/esm2022/authentication/token/cleavelandprice-ngx-lib-authentication-token.mjs +5 -0
- package/esm2022/authentication/token/model/authentication-token-service-options-token.mjs +3 -0
- package/esm2022/authentication/token/model/authentication-token-service-options.mjs +2 -0
- package/esm2022/authentication/token/model/authentication-token.mjs +2 -0
- package/esm2022/authentication/token/services/authentication-token.service.mjs +138 -0
- package/esm2022/cleavelandprice-ngx-lib.mjs +5 -0
- package/esm2022/dialog/cleavelandprice-ngx-lib-dialog.mjs +5 -0
- package/esm2022/dialog/components/base/base.component.mjs +102 -0
- package/esm2022/dialog/components/choice/choice.component.mjs +21 -0
- package/esm2022/dialog/components/confirmation/confirmation.component.mjs +21 -0
- package/esm2022/dialog/components/input/input.component.mjs +21 -0
- package/esm2022/dialog/components/message/message.component.mjs +21 -0
- package/esm2022/dialog/dialog.api.mjs +20 -0
- package/esm2022/dialog/dialog.module.mjs +73 -0
- package/esm2022/dialog/model/confirmation-dialog-mode.mjs +8 -0
- package/esm2022/dialog/model/dialog-base-data.mjs +2 -0
- package/esm2022/dialog/model/dialog-choice-data.mjs +2 -0
- package/esm2022/dialog/model/dialog-type.mjs +8 -0
- package/esm2022/lib/model/app-path-config.mjs +2 -0
- package/esm2022/lib/model/app-type.mjs +2 -0
- package/esm2022/lib/model/app.mjs +2 -0
- package/esm2022/lib/model/caching-config.mjs +2 -0
- package/esm2022/lib/model/credentials.mjs +2 -0
- package/esm2022/lib/model/logging-config.mjs +2 -0
- package/esm2022/lib/model/service-options-token.mjs +3 -0
- package/esm2022/lib/model/service-options.mjs +2 -0
- package/esm2022/lib/ngx-lib.module.mjs +37 -0
- package/esm2022/lib/services/app-path-config.service.mjs +50 -0
- package/esm2022/lib/services/service-base.mjs +26 -0
- package/esm2022/msgraph/cleavelandprice-ngx-lib-msgraph.mjs +5 -0
- package/esm2022/msgraph/model/address.mjs +2 -0
- package/esm2022/msgraph/model/attendee.mjs +2 -0
- package/esm2022/msgraph/model/bulk-calendar-events.mjs +2 -0
- package/esm2022/msgraph/model/bulk-calendar-request.mjs +2 -0
- package/esm2022/msgraph/model/calendar-event.mjs +2 -0
- package/esm2022/msgraph/model/coordinates.mjs +2 -0
- package/esm2022/msgraph/model/email-address.mjs +2 -0
- package/esm2022/msgraph/model/location.mjs +2 -0
- package/esm2022/msgraph/model/online-meeting-info.mjs +2 -0
- package/esm2022/msgraph/model/patterned-recurrence.mjs +2 -0
- package/esm2022/msgraph/model/phone.mjs +2 -0
- package/esm2022/msgraph/model/recipient.mjs +2 -0
- package/esm2022/msgraph/model/recurrence-pattern.mjs +2 -0
- package/esm2022/msgraph/model/recurrence-range.mjs +2 -0
- package/esm2022/msgraph/model/response-status.mjs +2 -0
- package/esm2022/msgraph/model/room.mjs +6 -0
- package/esm2022/msgraph/model/user.mjs +132 -0
- package/esm2022/msgraph/msgraph.api.mjs +19 -0
- package/esm2022/msgraph/msgraph.module.mjs +27 -0
- package/esm2022/public_api.mjs +15 -0
- package/esm2022/quill/cleavelandprice-ngx-lib-quill.mjs +5 -0
- package/esm2022/quill/components/editor/editor.component.mjs +282 -0
- package/esm2022/quill/components/raw/raw.component.mjs +30 -0
- package/esm2022/quill/mention/cleavelandprice-ngx-lib-quill-mention.mjs +5 -0
- package/esm2022/quill/mention/components/editor/editor.component.mjs +151 -0
- package/esm2022/quill/mention/model/dialog-data.mjs +2 -0
- package/esm2022/quill/mention/quill-mention.api.mjs +9 -0
- package/esm2022/quill/mention/quill-mention.module.mjs +65 -0
- package/esm2022/quill/model/buttons.mjs +3 -0
- package/esm2022/quill/model/config.mjs +3 -0
- package/esm2022/quill/model/default-buttons.mjs +50 -0
- package/esm2022/quill/model/default-config.mjs +28 -0
- package/esm2022/quill/model/default-icons.mjs +7 -0
- package/esm2022/quill/model/default-tooltips.mjs +53 -0
- package/esm2022/quill/model/dialog-data.mjs +2 -0
- package/esm2022/quill/model/icons.mjs +3 -0
- package/esm2022/quill/model/tooltips.mjs +3 -0
- package/esm2022/quill/quill.api.mjs +13 -0
- package/esm2022/quill/quill.module.mjs +75 -0
- package/esm2022/sharepoint/cleavelandprice-ngx-lib-sharepoint.mjs +5 -0
- package/esm2022/sharepoint/components/user-photo/user-photo.component.mjs +40 -0
- package/esm2022/sharepoint/default-credentials.mjs +6 -0
- package/esm2022/sharepoint/model/base-item.mjs +2 -0
- package/esm2022/sharepoint/model/base-request-credential.mjs +2 -0
- package/esm2022/sharepoint/model/base-request.mjs +2 -0
- package/esm2022/sharepoint/model/cache-object.mjs +3 -0
- package/esm2022/sharepoint/model/file-request.mjs +2 -0
- package/esm2022/sharepoint/model/folder-request.mjs +2 -0
- package/esm2022/sharepoint/model/list-item.mjs +2 -0
- package/esm2022/sharepoint/model/list-items-request.mjs +2 -0
- package/esm2022/sharepoint/model/photo-item.mjs +2 -0
- package/esm2022/sharepoint/model/sharepoint-service-options.mjs +3 -0
- package/esm2022/sharepoint/model/uri-request.mjs +2 -0
- package/esm2022/sharepoint/model/user-request.mjs +2 -0
- package/esm2022/sharepoint/model/user.mjs +2 -0
- package/esm2022/sharepoint/pipes/user-photo-url.pipe.mjs +37 -0
- package/esm2022/sharepoint/services/sharepoint.service.mjs +155 -0
- package/esm2022/sharepoint/sharepoint.api.mjs +17 -0
- package/esm2022/sharepoint/sharepoint.module.mjs +50 -0
- package/esm2022/table/cleavelandprice-ngx-lib-table.mjs +5 -0
- package/esm2022/table/components/table/table.component.mjs +120 -0
- package/esm2022/table/model/table-column.mjs +2 -0
- package/esm2022/table/pipes/decimalPoints.mjs +14 -0
- package/esm2022/table/pipes/roundNumber.mjs +14 -0
- package/esm2022/table/table.api.mjs +6 -0
- package/esm2022/table/table.module.mjs +78 -0
- package/esm2022/upload/cleavelandprice-ngx-lib-upload.mjs +5 -0
- package/esm2022/upload/components/upload/upload.component.mjs +32 -0
- package/esm2022/upload/components/upload-dialog/upload-dialog.component.mjs +98 -0
- package/esm2022/upload/model/database-file-info.mjs +2 -0
- package/esm2022/upload/model/file-upload-request.mjs +2 -0
- package/esm2022/upload/model/filesystem-file-info.mjs +2 -0
- package/esm2022/upload/model/msg-file-content.mjs +5 -0
- package/esm2022/upload/model/upload-service-options-token.mjs +3 -0
- package/esm2022/upload/model/upload-service-options.mjs +3 -0
- package/esm2022/upload/model/upload-status.mjs +2 -0
- package/esm2022/upload/services/upload.service.mjs +106 -0
- package/esm2022/upload/upload.api.mjs +11 -0
- package/esm2022/upload/upload.module.mjs +68 -0
- package/esm2022/url-utilities/cleavelandprice-ngx-lib-url-utilities.mjs +5 -0
- package/esm2022/url-utilities/pipes/safe-resource-url.pipe.mjs +19 -0
- package/esm2022/url-utilities/pipes/safe-url.pipe.mjs +19 -0
- package/esm2022/url-utilities/pipes/uri-scheme.pipe.mjs +106 -0
- package/esm2022/url-utilities/url-utilities.api.mjs +13 -0
- package/esm2022/url-utilities/url-utilities.module.mjs +34 -0
- package/fesm2022/cleavelandprice-ngx-lib-active-directory-material.mjs +12 -12
- package/fesm2022/cleavelandprice-ngx-lib-active-directory-material.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-active-directory.mjs +7 -7
- package/fesm2022/cleavelandprice-ngx-lib-active-directory.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-authentication-material.mjs +15 -15
- package/fesm2022/cleavelandprice-ngx-lib-authentication-material.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-authentication-object.mjs +7 -7
- package/fesm2022/cleavelandprice-ngx-lib-authentication-object.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-authentication-token.mjs +7 -7
- package/fesm2022/cleavelandprice-ngx-lib-authentication-token.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-authentication.mjs +4 -4
- package/fesm2022/cleavelandprice-ngx-lib-authentication.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-dialog.mjs +24 -24
- package/fesm2022/cleavelandprice-ngx-lib-dialog.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-msgraph.mjs +4 -4
- package/fesm2022/cleavelandprice-ngx-lib-msgraph.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-quill-mention.mjs +10 -10
- package/fesm2022/cleavelandprice-ngx-lib-quill-mention.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-quill.mjs +14 -14
- package/fesm2022/cleavelandprice-ngx-lib-quill.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-sharepoint.mjs +14 -14
- package/fesm2022/cleavelandprice-ngx-lib-sharepoint.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-table.mjs +14 -14
- package/fesm2022/cleavelandprice-ngx-lib-table.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-upload.mjs +15 -14
- package/fesm2022/cleavelandprice-ngx-lib-upload.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-url-utilities.mjs +13 -13
- package/fesm2022/cleavelandprice-ngx-lib-url-utilities.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib.mjs +7 -7
- package/fesm2022/cleavelandprice-ngx-lib.mjs.map +1 -1
- package/package.json +35 -5
- package/table/model/table-column.d.ts +4 -1
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
2
|
+
import { Component, forwardRef, inject, model, output, viewChild } from '@angular/core';
|
|
3
|
+
import { FormsModule, NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
4
|
+
import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
5
|
+
import { MatIcon } from '@angular/material/icon';
|
|
6
|
+
import { MatTooltip } from '@angular/material/tooltip';
|
|
7
|
+
import { QuillEditorComponent } from 'ngx-quill';
|
|
8
|
+
import { DefaultButtons } from '../../model/default-buttons';
|
|
9
|
+
import { DefaultConfig } from '../../model/default-config';
|
|
10
|
+
import { DefaultIcons } from '../../model/default-icons';
|
|
11
|
+
import { DefaultTooltips } from '../../model/default-tooltips';
|
|
12
|
+
import { RawComponent } from '../raw/raw.component';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
import * as i1 from "@angular/forms";
|
|
15
|
+
export class EditorComponent {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.#data = inject(MAT_DIALOG_DATA, { optional: true });
|
|
18
|
+
this.#dialogRef = inject((MatDialogRef), { optional: true });
|
|
19
|
+
this.#dialog = inject(MatDialog);
|
|
20
|
+
this.editor = viewChild(QuillEditorComponent);
|
|
21
|
+
this.onChange = (_) => { }; // Invoked when the model has been changed
|
|
22
|
+
this.onTouched = () => { }; // Invoked when the model has been touched
|
|
23
|
+
//#endregion
|
|
24
|
+
this.config = model(DefaultConfig);
|
|
25
|
+
this.placeholder = model();
|
|
26
|
+
//#region These can be passed in as @Input(), or use values from config
|
|
27
|
+
this.format = model();
|
|
28
|
+
this.height = model();
|
|
29
|
+
this.width = model();
|
|
30
|
+
this.fullscreenHeight = model();
|
|
31
|
+
this.fullscreenWidth = model();
|
|
32
|
+
this.fullscreenMode = model();
|
|
33
|
+
this.enableTooltips = model();
|
|
34
|
+
this.fullscreen = model();
|
|
35
|
+
this.readonly = model();
|
|
36
|
+
this.applyReadonlyStyle = model();
|
|
37
|
+
this.showToolbar = model();
|
|
38
|
+
this.showBorder = model();
|
|
39
|
+
//#region Optional Quill modules
|
|
40
|
+
this.imageResizeModule = model();
|
|
41
|
+
this.imageDropModule = model();
|
|
42
|
+
this.syntaxModule = model();
|
|
43
|
+
//#endregion
|
|
44
|
+
//#endregion
|
|
45
|
+
this.fullscreenChanged = output();
|
|
46
|
+
//#region Passthrough events
|
|
47
|
+
this.onBlur = output();
|
|
48
|
+
this.onContentChanged = output();
|
|
49
|
+
this.onEditorChanged = output();
|
|
50
|
+
this.onEditorCreated = output();
|
|
51
|
+
this.onFocus = output();
|
|
52
|
+
this.onSelectionChanged = output();
|
|
53
|
+
}
|
|
54
|
+
get showBlockStyle() { return (this.config()?.buttons?.blockquote || this.config()?.buttons?.codeblock) ?? false; }
|
|
55
|
+
;
|
|
56
|
+
get showFontStyle() { return (this.config()?.buttons?.bold || this.config()?.buttons?.italic || this.config()?.buttons?.strike || this.config()?.buttons?.underline) ?? false; }
|
|
57
|
+
;
|
|
58
|
+
get showQuickHeadingStyle() { return (this.config()?.buttons?.h1 || this.config()?.buttons?.h2) ?? false; }
|
|
59
|
+
;
|
|
60
|
+
get showIndentStyle() { return (this.config()?.buttons?.decreaseIndent || this.config()?.buttons?.increaseIndent) ?? false; }
|
|
61
|
+
;
|
|
62
|
+
get showListStyle() { return (this.config()?.buttons?.bulleted || this.config()?.buttons?.ordered) ?? false; }
|
|
63
|
+
;
|
|
64
|
+
get showMedia() { return (this.config()?.buttons?.link || this.config()?.buttons?.image || this.config()?.buttons?.video) ?? false; }
|
|
65
|
+
;
|
|
66
|
+
get showScriptStyle() { return (this.config()?.buttons?.subScript || this.config()?.buttons?.superScript) ?? false; }
|
|
67
|
+
;
|
|
68
|
+
#data;
|
|
69
|
+
#dialogRef;
|
|
70
|
+
#dialog;
|
|
71
|
+
//#endregion
|
|
72
|
+
ngOnInit() {
|
|
73
|
+
this.initialize();
|
|
74
|
+
/*if (!this.users) {
|
|
75
|
+
this.activeDirectoryService.getUsers().subscribe(users =>
|
|
76
|
+
this.users = users
|
|
77
|
+
);
|
|
78
|
+
}*/
|
|
79
|
+
}
|
|
80
|
+
initialize() {
|
|
81
|
+
this.config.set({
|
|
82
|
+
...DefaultConfig,
|
|
83
|
+
...this.config(),
|
|
84
|
+
...this.#data?.config,
|
|
85
|
+
buttons: this.config()?.buttons ?? DefaultButtons,
|
|
86
|
+
icons: {
|
|
87
|
+
...DefaultIcons,
|
|
88
|
+
...this.config()?.icons
|
|
89
|
+
},
|
|
90
|
+
tooltips: {
|
|
91
|
+
...DefaultTooltips,
|
|
92
|
+
...this.config()?.tooltips
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
this.value = this.value ?? this.#data?.value;
|
|
96
|
+
// Moved to client responsibility
|
|
97
|
+
/*if (this.imageDropModule) {
|
|
98
|
+
Quill.register('modules/imageDrop', ImageDrop);
|
|
99
|
+
}*/
|
|
100
|
+
this.placeholder.set(this.placeholder() ?? this.#data?.placeholder);
|
|
101
|
+
this.imageDropModule.set(this.imageDropModule() ?? this.#data?.imageDropModule ?? this.config().imageDropModule);
|
|
102
|
+
this.imageResizeModule.set(this.imageResizeModule() ?? this.#data?.imageResizeModule ?? this.config().imageResizeModule);
|
|
103
|
+
this.syntaxModule.set(this.syntaxModule() ?? this.#data?.syntaxModule ?? this.config().syntaxModule);
|
|
104
|
+
this.format.set(this.format() ?? this.#data?.format ?? this.config().format);
|
|
105
|
+
this.height.set(this.height() ?? this.#data?.height ?? this.config().height);
|
|
106
|
+
this.width.set(this.width() ?? this.#data?.width ?? this.config().width);
|
|
107
|
+
this.fullscreenHeight.set(this.fullscreenHeight() ?? this.#data?.maxHeight ?? this.config().fullscreenHeight);
|
|
108
|
+
this.fullscreenWidth.set(this.fullscreenWidth() ?? this.#data?.maxWidth ?? this.config().fullscreenWidth);
|
|
109
|
+
this.fullscreenMode.set(this.fullscreenMode() ?? this.#data?.fullscreenMode ?? this.config().fullscreenMode);
|
|
110
|
+
this.enableTooltips.set(this.enableTooltips() !== undefined ?
|
|
111
|
+
this.enableTooltips() :
|
|
112
|
+
this.#data?.enableTooltips ?? this.config().enableTooltips);
|
|
113
|
+
this.fullscreen.set(this.fullscreen() !== undefined ?
|
|
114
|
+
this.fullscreen() :
|
|
115
|
+
this.#data?.fullscreen ?? this.config().fullscreen);
|
|
116
|
+
this.readonly.set(this.readonly() !== undefined ?
|
|
117
|
+
this.readonly() :
|
|
118
|
+
this.#data?.readonly ?? this.config().readonly);
|
|
119
|
+
this.applyReadonlyStyle.set(this.applyReadonlyStyle() !== undefined ?
|
|
120
|
+
this.applyReadonlyStyle() :
|
|
121
|
+
this.#data?.applyReadonlyStyle ?? this.config().applyReadonlyStyle);
|
|
122
|
+
this.showToolbar.set(this.showToolbar() !== undefined ?
|
|
123
|
+
this.showToolbar() :
|
|
124
|
+
this.#data?.showToolbar ?? this.config().showToolbar);
|
|
125
|
+
this.showBorder.set(this.showBorder() !== undefined ?
|
|
126
|
+
this.showBorder() :
|
|
127
|
+
this.#data?.showBorder ?? this.config().showBorder);
|
|
128
|
+
}
|
|
129
|
+
toggleFullscreen() {
|
|
130
|
+
if (this.fullscreenMode() === 'expand') {
|
|
131
|
+
this.fullscreen.set(!this.fullscreen());
|
|
132
|
+
this.fullscreenChanged.emit(this.fullscreen());
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
if (this.fullscreen()) {
|
|
136
|
+
this.#dialogRef?.close(this.value);
|
|
137
|
+
this.fullscreenChanged.emit(false);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
const data = {
|
|
141
|
+
value: this.value,
|
|
142
|
+
config: this.config(),
|
|
143
|
+
placeholder: this.placeholder(),
|
|
144
|
+
format: this.format(),
|
|
145
|
+
height: this.fullscreenHeight(),
|
|
146
|
+
width: '100%',
|
|
147
|
+
maxHeight: this.fullscreenHeight(),
|
|
148
|
+
maxWidth: '100%',
|
|
149
|
+
enableTooltips: this.enableTooltips(),
|
|
150
|
+
fullscreen: true,
|
|
151
|
+
fullscreenMode: this.fullscreenMode(),
|
|
152
|
+
readonly: this.readonly(),
|
|
153
|
+
applyReadonlyStyle: this.applyReadonlyStyle(),
|
|
154
|
+
showToolbar: this.showToolbar(),
|
|
155
|
+
showBorder: this.showBorder(),
|
|
156
|
+
imageResizeModule: this.imageResizeModule(),
|
|
157
|
+
imageDropModule: this.imageDropModule(),
|
|
158
|
+
syntaxModule: this.syntaxModule()
|
|
159
|
+
//users: this.users
|
|
160
|
+
};
|
|
161
|
+
this.#dialog.open(EditorComponent, {
|
|
162
|
+
disableClose: true,
|
|
163
|
+
width: this.fullscreenWidth(),
|
|
164
|
+
height: this.fullscreenHeight(),
|
|
165
|
+
data
|
|
166
|
+
})
|
|
167
|
+
.afterClosed()
|
|
168
|
+
.subscribe(value => {
|
|
169
|
+
this.value = value;
|
|
170
|
+
this.updateChanges();
|
|
171
|
+
});
|
|
172
|
+
this.fullscreenChanged.emit(true);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
rawEdit() {
|
|
177
|
+
this.#dialog.open(RawComponent, {
|
|
178
|
+
data: this.value,
|
|
179
|
+
disableClose: true,
|
|
180
|
+
height: '90%',
|
|
181
|
+
width: '100%'
|
|
182
|
+
})
|
|
183
|
+
.afterClosed()
|
|
184
|
+
.subscribe(value => {
|
|
185
|
+
if (value === '__DO!!NOT!!UPDATE__') {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
this.value = value;
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
tooltip(val) {
|
|
192
|
+
return this.enableTooltips() ? val : '';
|
|
193
|
+
}
|
|
194
|
+
get modules() {
|
|
195
|
+
//if (!this.users) { return undefined; }
|
|
196
|
+
const modules = {};
|
|
197
|
+
if (!this.showToolbar()) {
|
|
198
|
+
modules['toolbar'] = [];
|
|
199
|
+
}
|
|
200
|
+
if (this.imageResizeModule()) {
|
|
201
|
+
modules['imageResize'] = {};
|
|
202
|
+
}
|
|
203
|
+
if (this.imageDropModule()) {
|
|
204
|
+
modules['imageDrop'] = true;
|
|
205
|
+
}
|
|
206
|
+
if (this.syntaxModule()) {
|
|
207
|
+
modules['syntax'] = true;
|
|
208
|
+
}
|
|
209
|
+
/*if (this.mentionModule) {
|
|
210
|
+
modules['mention'] = {
|
|
211
|
+
allowedChars: /^[A-Za-z\sÅÄÖåäö]*$/,
|
|
212
|
+
|
|
213
|
+
onSelect: (item: DOMStringMap, insertItem: any) => {
|
|
214
|
+
const editor = this.editor!.quillEditor
|
|
215
|
+
insertItem(item)
|
|
216
|
+
// necessary because quill-mention triggers changes as 'api' instead of 'user'
|
|
217
|
+
editor.insertText(editor.getLength() - 1, '', 'user')
|
|
218
|
+
},
|
|
219
|
+
|
|
220
|
+
source: (searchTerm: string, renderList: any) => {
|
|
221
|
+
if (searchTerm.length === 0) {
|
|
222
|
+
renderList(this.users?.map(u => ({ value: `${u.displayName} (${u.sAMAccountName.toLowerCase()})` })), searchTerm)
|
|
223
|
+
} else {
|
|
224
|
+
const matches: any[] = []
|
|
225
|
+
|
|
226
|
+
this.users!.forEach((entry) => {
|
|
227
|
+
if (
|
|
228
|
+
entry.displayName.toLowerCase().indexOf(searchTerm.toLowerCase()) !== -1 ||
|
|
229
|
+
entry.sAMAccountName.toLowerCase().indexOf(searchTerm.toLowerCase()) !== -1
|
|
230
|
+
) {
|
|
231
|
+
matches.push({ value: `${entry.displayName} (${entry.sAMAccountName.toLowerCase()})` })
|
|
232
|
+
}
|
|
233
|
+
})
|
|
234
|
+
|
|
235
|
+
renderList(matches, searchTerm)
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
}*/
|
|
240
|
+
return modules;
|
|
241
|
+
}
|
|
242
|
+
//#region ControlValueAccessor methods
|
|
243
|
+
// Method that is invoked on an update of a model.
|
|
244
|
+
updateChanges() {
|
|
245
|
+
this.onChange(this.value);
|
|
246
|
+
}
|
|
247
|
+
//#region ControlValueAccessor Overrides
|
|
248
|
+
// Writes a new item to the element.
|
|
249
|
+
writeValue(value) {
|
|
250
|
+
this.value = value;
|
|
251
|
+
this.updateChanges();
|
|
252
|
+
}
|
|
253
|
+
// Registers a callback function that should be called when the control's value changes in the UI.
|
|
254
|
+
registerOnChange(fn) {
|
|
255
|
+
this.onChange = fn;
|
|
256
|
+
}
|
|
257
|
+
// Registers a callback function that should be called when the control receives a blur event.
|
|
258
|
+
registerOnTouched(fn) {
|
|
259
|
+
this.onTouched = fn;
|
|
260
|
+
}
|
|
261
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: EditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
262
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: EditorComponent, isStandalone: true, selector: "cpquill-editor", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, fullscreenHeight: { classPropertyName: "fullscreenHeight", publicName: "fullscreenHeight", isSignal: true, isRequired: false, transformFunction: null }, fullscreenWidth: { classPropertyName: "fullscreenWidth", publicName: "fullscreenWidth", isSignal: true, isRequired: false, transformFunction: null }, fullscreenMode: { classPropertyName: "fullscreenMode", publicName: "fullscreenMode", isSignal: true, isRequired: false, transformFunction: null }, enableTooltips: { classPropertyName: "enableTooltips", publicName: "enableTooltips", isSignal: true, isRequired: false, transformFunction: null }, fullscreen: { classPropertyName: "fullscreen", publicName: "fullscreen", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, applyReadonlyStyle: { classPropertyName: "applyReadonlyStyle", publicName: "applyReadonlyStyle", isSignal: true, isRequired: false, transformFunction: null }, showToolbar: { classPropertyName: "showToolbar", publicName: "showToolbar", isSignal: true, isRequired: false, transformFunction: null }, showBorder: { classPropertyName: "showBorder", publicName: "showBorder", isSignal: true, isRequired: false, transformFunction: null }, imageResizeModule: { classPropertyName: "imageResizeModule", publicName: "imageResizeModule", isSignal: true, isRequired: false, transformFunction: null }, imageDropModule: { classPropertyName: "imageDropModule", publicName: "imageDropModule", isSignal: true, isRequired: false, transformFunction: null }, syntaxModule: { classPropertyName: "syntaxModule", publicName: "syntaxModule", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange", placeholder: "placeholderChange", format: "formatChange", height: "heightChange", width: "widthChange", fullscreenHeight: "fullscreenHeightChange", fullscreenWidth: "fullscreenWidthChange", fullscreenMode: "fullscreenModeChange", enableTooltips: "enableTooltipsChange", fullscreen: "fullscreenChange", readonly: "readonlyChange", applyReadonlyStyle: "applyReadonlyStyleChange", showToolbar: "showToolbarChange", showBorder: "showBorderChange", imageResizeModule: "imageResizeModuleChange", imageDropModule: "imageDropModuleChange", syntaxModule: "syntaxModuleChange", fullscreenChanged: "fullscreenChanged", onBlur: "onBlur", onContentChanged: "onContentChanged", onEditorChanged: "onEditorChanged", onEditorCreated: "onEditorCreated", onFocus: "onFocus", onSelectionChanged: "onSelectionChanged" }, providers: [{
|
|
263
|
+
provide: NG_VALUE_ACCESSOR,
|
|
264
|
+
useExisting: forwardRef(() => EditorComponent),
|
|
265
|
+
multi: true
|
|
266
|
+
}], viewQueries: [{ propertyName: "editor", first: true, predicate: QuillEditorComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container>\r\n <form>\r\n <quill-editor name=\"editor\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"updateChanges()\"\r\n [placeholder]=\"placeholder() ?? ''\"\r\n [format]=\"format()\"\r\n [style.height]=\"fullscreen() ? fullscreenHeight() : height()\"\r\n [style.width]=\"fullscreen() ? fullscreenWidth() : width()\"\r\n [readOnly]=\"readonly() ?? false\"\r\n [class.readonly]=\"readonly() && applyReadonlyStyle()\"\r\n [class.no-toolbar]=\"!showToolbar()\"\r\n [class.no-border]=\"!showBorder()\"\r\n [modules]=\"modules\"\r\n\r\n (onBlur)=\"onBlur.emit($event)\"\r\n (onContentChanged)=\"onContentChanged.emit($event)\"\r\n (onEditorChanged)=\"onEditorChanged.emit($event)\"\r\n (onEditorCreated)=\"onEditorCreated.emit()\"\r\n (onFocus)=\"onFocus.emit($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged.emit($event)\">\r\n\r\n @if (showToolbar()) {\r\n <div quill-editor-toolbar>\r\n <ng-container [ngTemplateOutlet]=\"toolbar\"/>\r\n <ng-container [ngTemplateOutlet]=\"editorSize\"/>\r\n </div>\r\n }\r\n </quill-editor>\r\n </form>\r\n</ng-container>\r\n\r\n<ng-template #toolbar>\r\n <div>\r\n <ng-container [ngTemplateOutlet]=\"fontStyle\"/>\r\n <ng-container [ngTemplateOutlet]=\"blockStyle\"/>\r\n <ng-container [ngTemplateOutlet]=\"headingStyle\"/>\r\n <ng-container [ngTemplateOutlet]=\"listStyle\"/>\r\n <ng-container [ngTemplateOutlet]=\"scriptStyle\"/>\r\n <ng-container [ngTemplateOutlet]=\"indentStyle\"/>\r\n <ng-container [ngTemplateOutlet]=\"rtl\"/>\r\n <ng-container [ngTemplateOutlet]=\"fontSize\"/>\r\n <ng-container [ngTemplateOutlet]=\"heading\"/>\r\n <ng-container [ngTemplateOutlet]=\"color\"/>\r\n <ng-container [ngTemplateOutlet]=\"font\"/>\r\n <ng-container [ngTemplateOutlet]=\"align\"/>\r\n <ng-container [ngTemplateOutlet]=\"clean\"/>\r\n <ng-container [ngTemplateOutlet]=\"formula\"/>\r\n <ng-container [ngTemplateOutlet]=\"media\"/>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #fontStyle>\r\n @if (showFontStyle) {\r\n <span class=\"ql-formats\">\r\n @if (config()!.buttons!.bold) {\r\n <button class=\"ql-bold\" [matTooltip]=\"tooltip(config()!.tooltips!.bold!)\"></button>\r\n }\r\n @if (config()!.buttons!.italic) {\r\n <button class=\"ql-italic\" [matTooltip]=\"tooltip(config()!.tooltips!.italic!)\"></button>\r\n }\r\n @if (config()!.buttons!.underline) {\r\n <button class=\"ql-underline\" [matTooltip]=\"tooltip(config()!.tooltips!.underline!)\"></button>\r\n }\r\n @if (config()!.buttons!.strike) {\r\n <button class=\"ql-strike\" [matTooltip]=\"tooltip(config()!.tooltips!.strike!)\"></button>\r\n }\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #blockStyle>\r\n @if (showBlockStyle) {\r\n <span class=\"ql-formats\">\r\n @if (config()!.buttons!.blockquote) {\r\n <button class=\"ql-blockquote\" [matTooltip]=\"tooltip(config()!.tooltips!.blockquote!)\"></button>\r\n }\r\n @if (config()!.buttons!.codeblock) {\r\n <button class=\"ql-code-block\" [matTooltip]=\"tooltip(config()!.tooltips!.codeblock!)\"></button>\r\n }\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #headingStyle>\r\n @if (showQuickHeadingStyle) {\r\n <span class=\"ql-formats\">\r\n @if (config()!.buttons!.h1) {\r\n <button class=\"ql-header\" value=\"1\" [matTooltip]=\"tooltip(config()!.tooltips!.h1!)\"></button>\r\n }\r\n @if (config()!.buttons!.h2) {\r\n <button class=\"ql-header\" value=\"2\" [matTooltip]=\"tooltip(config()!.tooltips!.h2!)\"></button>\r\n }\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #listStyle>\r\n @if (showListStyle) {\r\n <span class=\"ql-formats\">\r\n @if (config()!.buttons!.ordered) {\r\n <button class=\"ql-list\" value=\"ordered\" [matTooltip]=\"tooltip(config()!.tooltips!.ordered!)\"></button>\r\n }\r\n @if (config()!.buttons!.bulleted) {\r\n <button class=\"ql-list\" value=\"bullet\" [matTooltip]=\"tooltip(config()!.tooltips!.bulleted!)\"></button>\r\n }\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #scriptStyle>\r\n @if (showScriptStyle) {\r\n <span class=\"ql-formats\">\r\n @if (config()!.buttons!.subScript) {\r\n <button class=\"ql-script\" value=\"sub\" [matTooltip]=\"tooltip(config()!.tooltips!.subScript!)\"></button>\r\n }\r\n @if (config()!.buttons!.superScript) {\r\n <button class=\"ql-script\" value=\"super\" [matTooltip]=\"tooltip(config()!.tooltips!.superScript!)\"></button>\r\n }\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #indentStyle>\r\n @if (showIndentStyle) {\r\n <span class=\"ql-formats\">\r\n @if (config()!.buttons!.decreaseIndent) {\r\n <button class=\"ql-indent\" value=\"-1\" [matTooltip]=\"tooltip(config()!.tooltips!.decreaseIndent!)\"></button>\r\n }\r\n @if (config()!.buttons!.increaseIndent) {\r\n <button class=\"ql-indent\" value=\"+1\" [matTooltip]=\"tooltip(config()!.tooltips!.increaseIndent!)\"></button>\r\n }\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #rtl>\r\n @if (config()!.buttons!.rtl) {\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-direction\" value=\"rtl\" [matTooltip]=\"tooltip(config()!.tooltips!.rtl!)\"></button>\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #fontSize>\r\n @if (config()!.buttons!.fontSize) {\r\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.fontSize!)\">\r\n <select class=\"ql-size\">\r\n <option value=\"small\"></option>\r\n <option selected></option>\r\n <option value=\"large\"></option>\r\n <option value=\"huge\"></option>\r\n </select>\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #heading>\r\n @if (config()!.buttons!.headingStyle) {\r\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.headingStyle!)\">\r\n <select class=\"ql-header\">\r\n <option value=\"1\"></option>\r\n <option value=\"2\"></option>\r\n <option value=\"3\"></option>\r\n <option value=\"4\"></option>\r\n <option value=\"5\"></option>\r\n <option value=\"6\"></option>\r\n <option selected=\"selected\"></option>\r\n </select>\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #color>\r\n @if (config()!.buttons!.color) {\r\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.color!)\">\r\n <select class=\"ql-color\"></select>\r\n <select class=\"ql-background\"></select>\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #font>\r\n @if (config()!.buttons!.font) {\r\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.font!)\">\r\n <select class=\"ql-font\">\r\n <option selected></option>\r\n <option value=\"serif\"></option>\r\n <option value=\"monospace\"></option>\r\n </select>\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #align>\r\n @if (config()!.buttons!.align) {\r\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.align!)\">\r\n <select class=\"ql-align\">\r\n <option selected></option>\r\n <option value=\"center\"></option>\r\n <option value=\"right\"></option>\r\n <option value=\"justify\"></option>\r\n </select>\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #clean>\r\n @if (config()!.buttons!.clean) {\r\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.clean!)\">\r\n <button class=\"ql-clean\"></button>\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #media>\r\n @if (showMedia) {\r\n <span class=\"ql-formats\">\r\n @if (config()!.buttons!.link) {\r\n <button class=\"ql-link\" [matTooltip]=\"tooltip(config()!.tooltips!.link!)\"></button>\r\n }\r\n @if (config()!.buttons!.image) {\r\n <button class=\"ql-image\" [matTooltip]=\"tooltip(config()!.tooltips!.image!)\"></button>\r\n }\r\n @if (config()!.buttons!.video) {\r\n <button class=\"ql-video\" [matTooltip]=\"tooltip(config()!.tooltips!.video!)\"></button>\r\n }\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #editorSize>\r\n <div>\r\n @if (config()!.buttons!.rawEditor) {\r\n <span class=\"ql-formats\">\r\n <button id=\"rawdog\"\r\n [matTooltip]=\"tooltip(config()!.tooltips!.rawEditor!)\">\r\n <mat-icon (click)=\"rawEdit()\">\r\n code\r\n </mat-icon>\r\n </button>\r\n </span>\r\n }\r\n\r\n @if (config()!.buttons!.editorSize) {\r\n <span class=\"ql-formats\">\r\n <button id=\"fullscreen\"\r\n [matTooltip]=\"tooltip(fullscreen() ?\r\n (fullscreenMode() === 'expand' ? config()!.tooltips!.minimize! : config()!.tooltips!.popin!) :\r\n (fullscreenMode() === 'expand' ? config()!.tooltips!.maximize! : config()!.tooltips!.popout!))\">\r\n <mat-icon (click)=\"toggleFullscreen()\">\r\n {{ fullscreen() ?\r\n (fullscreenMode() === 'expand' ? config()!.icons!.minimize : config()!.icons!.popin) :\r\n (fullscreenMode() === 'expand' ? config()!.icons!.maximize : config()!.icons!.popout)\r\n }}\r\n </mat-icon>\r\n </button>\r\n </span>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #formula>\r\n @if (config()!.buttons!.formula) {\r\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.formula!)\">\r\n <button class=\"ql-formula\"></button>\r\n </span>\r\n }\r\n</ng-template>", styles: [".ql-toolbar{display:grid;grid-template-columns:1fr auto}mat-icon{color:#ff4500}quill-editor.readonly .ql-toolbar{opacity:.5}::ng-deep quill-editor.no-toolbar .ql-toolbar{height:0;padding:0;visibility:hidden}::ng-deep quill-editor.no-border .ql-container{border:none}::ng-deep quill-editor.readonly .ql-container{background-color:#f5f5f5!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: QuillEditorComponent, selector: "quill-editor" }] }); }
|
|
267
|
+
}
|
|
268
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: EditorComponent, decorators: [{
|
|
269
|
+
type: Component,
|
|
270
|
+
args: [{ selector: 'cpquill-editor', imports: [
|
|
271
|
+
FormsModule,
|
|
272
|
+
MatIcon,
|
|
273
|
+
MatTooltip,
|
|
274
|
+
NgTemplateOutlet,
|
|
275
|
+
QuillEditorComponent,
|
|
276
|
+
], standalone: true, providers: [{
|
|
277
|
+
provide: NG_VALUE_ACCESSOR,
|
|
278
|
+
useExisting: forwardRef(() => EditorComponent),
|
|
279
|
+
multi: true
|
|
280
|
+
}], template: "<ng-container>\r\n <form>\r\n <quill-editor name=\"editor\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"updateChanges()\"\r\n [placeholder]=\"placeholder() ?? ''\"\r\n [format]=\"format()\"\r\n [style.height]=\"fullscreen() ? fullscreenHeight() : height()\"\r\n [style.width]=\"fullscreen() ? fullscreenWidth() : width()\"\r\n [readOnly]=\"readonly() ?? false\"\r\n [class.readonly]=\"readonly() && applyReadonlyStyle()\"\r\n [class.no-toolbar]=\"!showToolbar()\"\r\n [class.no-border]=\"!showBorder()\"\r\n [modules]=\"modules\"\r\n\r\n (onBlur)=\"onBlur.emit($event)\"\r\n (onContentChanged)=\"onContentChanged.emit($event)\"\r\n (onEditorChanged)=\"onEditorChanged.emit($event)\"\r\n (onEditorCreated)=\"onEditorCreated.emit()\"\r\n (onFocus)=\"onFocus.emit($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged.emit($event)\">\r\n\r\n @if (showToolbar()) {\r\n <div quill-editor-toolbar>\r\n <ng-container [ngTemplateOutlet]=\"toolbar\"/>\r\n <ng-container [ngTemplateOutlet]=\"editorSize\"/>\r\n </div>\r\n }\r\n </quill-editor>\r\n </form>\r\n</ng-container>\r\n\r\n<ng-template #toolbar>\r\n <div>\r\n <ng-container [ngTemplateOutlet]=\"fontStyle\"/>\r\n <ng-container [ngTemplateOutlet]=\"blockStyle\"/>\r\n <ng-container [ngTemplateOutlet]=\"headingStyle\"/>\r\n <ng-container [ngTemplateOutlet]=\"listStyle\"/>\r\n <ng-container [ngTemplateOutlet]=\"scriptStyle\"/>\r\n <ng-container [ngTemplateOutlet]=\"indentStyle\"/>\r\n <ng-container [ngTemplateOutlet]=\"rtl\"/>\r\n <ng-container [ngTemplateOutlet]=\"fontSize\"/>\r\n <ng-container [ngTemplateOutlet]=\"heading\"/>\r\n <ng-container [ngTemplateOutlet]=\"color\"/>\r\n <ng-container [ngTemplateOutlet]=\"font\"/>\r\n <ng-container [ngTemplateOutlet]=\"align\"/>\r\n <ng-container [ngTemplateOutlet]=\"clean\"/>\r\n <ng-container [ngTemplateOutlet]=\"formula\"/>\r\n <ng-container [ngTemplateOutlet]=\"media\"/>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #fontStyle>\r\n @if (showFontStyle) {\r\n <span class=\"ql-formats\">\r\n @if (config()!.buttons!.bold) {\r\n <button class=\"ql-bold\" [matTooltip]=\"tooltip(config()!.tooltips!.bold!)\"></button>\r\n }\r\n @if (config()!.buttons!.italic) {\r\n <button class=\"ql-italic\" [matTooltip]=\"tooltip(config()!.tooltips!.italic!)\"></button>\r\n }\r\n @if (config()!.buttons!.underline) {\r\n <button class=\"ql-underline\" [matTooltip]=\"tooltip(config()!.tooltips!.underline!)\"></button>\r\n }\r\n @if (config()!.buttons!.strike) {\r\n <button class=\"ql-strike\" [matTooltip]=\"tooltip(config()!.tooltips!.strike!)\"></button>\r\n }\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #blockStyle>\r\n @if (showBlockStyle) {\r\n <span class=\"ql-formats\">\r\n @if (config()!.buttons!.blockquote) {\r\n <button class=\"ql-blockquote\" [matTooltip]=\"tooltip(config()!.tooltips!.blockquote!)\"></button>\r\n }\r\n @if (config()!.buttons!.codeblock) {\r\n <button class=\"ql-code-block\" [matTooltip]=\"tooltip(config()!.tooltips!.codeblock!)\"></button>\r\n }\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #headingStyle>\r\n @if (showQuickHeadingStyle) {\r\n <span class=\"ql-formats\">\r\n @if (config()!.buttons!.h1) {\r\n <button class=\"ql-header\" value=\"1\" [matTooltip]=\"tooltip(config()!.tooltips!.h1!)\"></button>\r\n }\r\n @if (config()!.buttons!.h2) {\r\n <button class=\"ql-header\" value=\"2\" [matTooltip]=\"tooltip(config()!.tooltips!.h2!)\"></button>\r\n }\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #listStyle>\r\n @if (showListStyle) {\r\n <span class=\"ql-formats\">\r\n @if (config()!.buttons!.ordered) {\r\n <button class=\"ql-list\" value=\"ordered\" [matTooltip]=\"tooltip(config()!.tooltips!.ordered!)\"></button>\r\n }\r\n @if (config()!.buttons!.bulleted) {\r\n <button class=\"ql-list\" value=\"bullet\" [matTooltip]=\"tooltip(config()!.tooltips!.bulleted!)\"></button>\r\n }\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #scriptStyle>\r\n @if (showScriptStyle) {\r\n <span class=\"ql-formats\">\r\n @if (config()!.buttons!.subScript) {\r\n <button class=\"ql-script\" value=\"sub\" [matTooltip]=\"tooltip(config()!.tooltips!.subScript!)\"></button>\r\n }\r\n @if (config()!.buttons!.superScript) {\r\n <button class=\"ql-script\" value=\"super\" [matTooltip]=\"tooltip(config()!.tooltips!.superScript!)\"></button>\r\n }\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #indentStyle>\r\n @if (showIndentStyle) {\r\n <span class=\"ql-formats\">\r\n @if (config()!.buttons!.decreaseIndent) {\r\n <button class=\"ql-indent\" value=\"-1\" [matTooltip]=\"tooltip(config()!.tooltips!.decreaseIndent!)\"></button>\r\n }\r\n @if (config()!.buttons!.increaseIndent) {\r\n <button class=\"ql-indent\" value=\"+1\" [matTooltip]=\"tooltip(config()!.tooltips!.increaseIndent!)\"></button>\r\n }\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #rtl>\r\n @if (config()!.buttons!.rtl) {\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-direction\" value=\"rtl\" [matTooltip]=\"tooltip(config()!.tooltips!.rtl!)\"></button>\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #fontSize>\r\n @if (config()!.buttons!.fontSize) {\r\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.fontSize!)\">\r\n <select class=\"ql-size\">\r\n <option value=\"small\"></option>\r\n <option selected></option>\r\n <option value=\"large\"></option>\r\n <option value=\"huge\"></option>\r\n </select>\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #heading>\r\n @if (config()!.buttons!.headingStyle) {\r\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.headingStyle!)\">\r\n <select class=\"ql-header\">\r\n <option value=\"1\"></option>\r\n <option value=\"2\"></option>\r\n <option value=\"3\"></option>\r\n <option value=\"4\"></option>\r\n <option value=\"5\"></option>\r\n <option value=\"6\"></option>\r\n <option selected=\"selected\"></option>\r\n </select>\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #color>\r\n @if (config()!.buttons!.color) {\r\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.color!)\">\r\n <select class=\"ql-color\"></select>\r\n <select class=\"ql-background\"></select>\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #font>\r\n @if (config()!.buttons!.font) {\r\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.font!)\">\r\n <select class=\"ql-font\">\r\n <option selected></option>\r\n <option value=\"serif\"></option>\r\n <option value=\"monospace\"></option>\r\n </select>\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #align>\r\n @if (config()!.buttons!.align) {\r\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.align!)\">\r\n <select class=\"ql-align\">\r\n <option selected></option>\r\n <option value=\"center\"></option>\r\n <option value=\"right\"></option>\r\n <option value=\"justify\"></option>\r\n </select>\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #clean>\r\n @if (config()!.buttons!.clean) {\r\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.clean!)\">\r\n <button class=\"ql-clean\"></button>\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #media>\r\n @if (showMedia) {\r\n <span class=\"ql-formats\">\r\n @if (config()!.buttons!.link) {\r\n <button class=\"ql-link\" [matTooltip]=\"tooltip(config()!.tooltips!.link!)\"></button>\r\n }\r\n @if (config()!.buttons!.image) {\r\n <button class=\"ql-image\" [matTooltip]=\"tooltip(config()!.tooltips!.image!)\"></button>\r\n }\r\n @if (config()!.buttons!.video) {\r\n <button class=\"ql-video\" [matTooltip]=\"tooltip(config()!.tooltips!.video!)\"></button>\r\n }\r\n </span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #editorSize>\r\n <div>\r\n @if (config()!.buttons!.rawEditor) {\r\n <span class=\"ql-formats\">\r\n <button id=\"rawdog\"\r\n [matTooltip]=\"tooltip(config()!.tooltips!.rawEditor!)\">\r\n <mat-icon (click)=\"rawEdit()\">\r\n code\r\n </mat-icon>\r\n </button>\r\n </span>\r\n }\r\n\r\n @if (config()!.buttons!.editorSize) {\r\n <span class=\"ql-formats\">\r\n <button id=\"fullscreen\"\r\n [matTooltip]=\"tooltip(fullscreen() ?\r\n (fullscreenMode() === 'expand' ? config()!.tooltips!.minimize! : config()!.tooltips!.popin!) :\r\n (fullscreenMode() === 'expand' ? config()!.tooltips!.maximize! : config()!.tooltips!.popout!))\">\r\n <mat-icon (click)=\"toggleFullscreen()\">\r\n {{ fullscreen() ?\r\n (fullscreenMode() === 'expand' ? config()!.icons!.minimize : config()!.icons!.popin) :\r\n (fullscreenMode() === 'expand' ? config()!.icons!.maximize : config()!.icons!.popout)\r\n }}\r\n </mat-icon>\r\n </button>\r\n </span>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #formula>\r\n @if (config()!.buttons!.formula) {\r\n <span class=\"ql-formats\" [matTooltip]=\"tooltip(config()!.tooltips!.formula!)\">\r\n <button class=\"ql-formula\"></button>\r\n </span>\r\n }\r\n</ng-template>", styles: [".ql-toolbar{display:grid;grid-template-columns:1fr auto}mat-icon{color:#ff4500}quill-editor.readonly .ql-toolbar{opacity:.5}::ng-deep quill-editor.no-toolbar .ql-toolbar{height:0;padding:0;visibility:hidden}::ng-deep quill-editor.no-border .ql-container{border:none}::ng-deep quill-editor.readonly .ql-container{background-color:#f5f5f5!important}\n"] }]
|
|
281
|
+
}] });
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3F1aWxsL3NyYy9jb21wb25lbnRzL2VkaXRvci9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvcXVpbGwvc3JjL2NvbXBvbmVudHMvZWRpdG9yL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBMEUsb0JBQW9CLEVBQW1CLE1BQU0sV0FBVyxDQUFDO0FBRTFJLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENB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QU0sRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMvRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLGNBQWMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFOUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsY0FBYyxJQUFJLElBQUksQ0FB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RSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxrR0FBa0c7SUFDbEcsZ0JBQWdCLENBQUMsRUFBTztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsOEZBQThGO0lBQzlGLGlCQUFpQixDQUFDLEVBQU87UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs4R0F0UlUsZUFBZTtrR0FBZixlQUFlLDJzR0FOYixDQUFDO2dCQUNKLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDO2dCQUM5QyxLQUFLLEVBQUUsSUFBSTthQUNkLENBQUMsa0VBZWEsb0JBQW9CLGdFQzlDM0MsMHNUQTRRYyxzWkR4UE4sV0FBVyxxK0JBQ1gsT0FBTywySUFDUCxVQUFVLGlSQUNWLGdCQUFnQixvSkFDaEIsb0JBQW9COzsyRkFTZixlQUFlO2tCQWxCM0IsU0FBUzsrQkFDSSxnQkFBZ0IsV0FHakI7d0JBQ0wsV0FBVzt3QkFDWCxPQUFPO3dCQUNQLFVBQVU7d0JBQ1YsZ0JBQWdCO3dCQUNoQixvQkFBb0I7cUJBQ3ZCLGNBQ1csSUFBSSxhQUNMLENBQUM7NEJBQ0osT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7NEJBQzlDLEtBQUssRUFBRSxJQUFJO3lCQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBpbmplY3QsIG1vZGVsLCBPbkluaXQsIG91dHB1dCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBCbHVyLCBDb250ZW50Q2hhbmdlLCBFZGl0b3JDaGFuZ2VDb250ZW50LCBFZGl0b3JDaGFuZ2VTZWxlY3Rpb24sIEZvY3VzLCBRdWlsbEVkaXRvckNvbXBvbmVudCwgU2VsZWN0aW9uQ2hhbmdlIH0gZnJvbSAnbmd4LXF1aWxsJztcclxuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvY29uZmlnJztcclxuaW1wb3J0IHsgRGVmYXVsdEJ1dHRvbnMgfSBmcm9tICcuLi8uLi9tb2RlbC9kZWZhdWx0LWJ1dHRvbnMnO1xyXG5pbXBvcnQgeyBEZWZhdWx0Q29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGVmYXVsdC1jb25maWcnO1xyXG5pbXBvcnQgeyBEZWZhdWx0SWNvbnMgfSBmcm9tICcuLi8uLi9tb2RlbC9kZWZhdWx0LWljb25zJztcclxuaW1wb3J0IHsgRGVmYXVsdFRvb2x0aXBzIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGVmYXVsdC10b29sdGlwcyc7XHJcbmltcG9ydCB7IERpYWxvZ0RhdGEgfSBmcm9tICcuLi8uLi9tb2RlbC9kaWFsb2ctZGF0YSc7XHJcbmltcG9ydCB7IFJhd0NvbXBvbmVudCB9IGZyb20gJy4uL3Jhdy9yYXcuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjcHF1aWxsLWVkaXRvcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsOiAnLi9lZGl0b3IuY29tcG9uZW50LnNjc3MnLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgICAgIE1hdEljb24sXHJcbiAgICAgICAgTWF0VG9vbHRpcCxcclxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxyXG4gICAgICAgIFF1aWxsRWRpdG9yQ29tcG9uZW50LFxyXG4gICAgXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBwcm92aWRlcnM6IFt7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFZGl0b3JDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgICAgIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBnZXQgc2hvd0Jsb2NrU3R5bGUoKTogYm9vbGVhbiB7IHJldHVybiAodGhpcy5jb25maWcoKT8uYnV0dG9ucz8uYmxvY2txdW90ZSB8fCB0aGlzLmNvbmZpZygpPy5idXR0b25zPy5jb2RlYmxvY2spID8/IGZhbHNlOyB9O1xyXG4gIGdldCBzaG93Rm9udFN0eWxlKCk6IGJvb2xlYW4geyByZXR1cm4gKHRoaXMuY29uZmlnKCk/LmJ1dHRvbnM/LmJvbGQgfHwgdGhpcy5jb25maWcoKT8uYnV0dG9ucz8uaXRhbGljIHx8IHRoaXMuY29uZmlnKCk/LmJ1dHRvbnM/LnN0cmlrZSB8fCB0aGlzLmNvbmZpZygpPy5idXR0b25zPy51bmRlcmxpbmUpID8/IGZhbHNlOyB9O1xyXG4gIGdldCBzaG93UXVpY2tIZWFkaW5nU3R5bGUoKTogYm9vbGVhbiB7IHJldHVybiAodGhpcy5jb25maWcoKT8uYnV0dG9ucz8uaDEgfHwgdGhpcy5jb25maWcoKT8uYnV0dG9ucz8uaDIpID8/IGZhbHNlOyB9O1xyXG4gIGdldCBzaG93SW5kZW50U3R5bGUoKTogYm9vbGVhbiB7IHJldHVybiAodGhpcy5jb25maWcoKT8uYnV0dG9ucz8uZGVjcmVhc2VJbmRlbnQgfHwgdGhpcy5jb25maWcoKT8uYnV0dG9ucz8uaW5jcmVhc2VJbmRlbnQpID8/IGZhbHNlOyB9O1xyXG4gIGdldCBzaG93TGlzdFN0eWxlKCk6IGJvb2xlYW4geyByZXR1cm4gKHRoaXMuY29uZmlnKCk/LmJ1dHRvbnM/LmJ1bGxldGVkIHx8IHRoaXMuY29uZmlnKCk/LmJ1dHRvbnM/Lm9yZGVyZWQpID8/IGZhbHNlIH07XHJcbiAgZ2V0IHNob3dNZWRpYSgpOiBib29sZWFuICB7IHJldHVybiAodGhpcy5jb25maWcoKT8uYnV0dG9ucz8ubGluayB8fCB0aGlzLmNvbmZpZygpPy5idXR0b25zPy5pbWFnZSB8fCB0aGlzLmNvbmZpZygpPy5idXR0b25zPy52aWRlbykgPz8gZmFsc2UgfTtcclxuICBnZXQgc2hvd1NjcmlwdFN0eWxlKCk6IGJvb2xlYW4geyByZXR1cm4gKHRoaXMuY29uZmlnKCk/LmJ1dHRvbnM/LnN1YlNjcmlwdCB8fCB0aGlzLmNvbmZpZygpPy5idXR0b25zPy5zdXBlclNjcmlwdCkgPz8gZmFsc2UgfTtcclxuXHJcbiAgI2RhdGEgPSBpbmplY3Q8RGlhbG9nRGF0YT4oTUFUX0RJQUxPR19EQVRBLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xyXG4gICNkaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmPEVkaXRvckNvbXBvbmVudD4sIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgI2RpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xyXG5cclxuICAgIGVkaXRvciA9IHZpZXdDaGlsZChRdWlsbEVkaXRvckNvbXBvbmVudCk7XHJcblxyXG4gIC8vI3JlZ2lvbiBDb250cm9sVmFsdWVBY2Nlc3NvciBzdHVmZlxyXG4gIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzUwNjE4MDUwL2hvdy10by1jcmVhdGUtY3VzdG9tLWlucHV0LWNvbXBvbmVudC13aXRoLW5nbW9kZWwtd29ya2luZy1pbi1hbmd1bGFyLTZcclxuICB2YWx1ZTogYW55OyAvLyBzdHJpbmdcclxuICBvbkNoYW5nZTogKF86IGFueSkgPT4gdm9pZCA9IChfOiBhbnkpID0+IHt9OyAvLyBJbnZva2VkIHdoZW4gdGhlIG1vZGVsIGhhcyBiZWVuIGNoYW5nZWRcclxuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTsgLy8gSW52b2tlZCB3aGVuIHRoZSBtb2RlbCBoYXMgYmVlbiB0b3VjaGVkXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGNvbmZpZyA9IG1vZGVsPENvbmZpZz4oRGVmYXVsdENvbmZpZyk7XHJcbiAgcGxhY2Vob2xkZXIgPSBtb2RlbDxzdHJpbmc+KCk7XHJcblxyXG4gIC8vI3JlZ2lvbiBUaGVzZSBjYW4gYmUgcGFzc2VkIGluIGFzIEBJbnB1dCgpLCBvciB1c2UgdmFsdWVzIGZyb20gY29uZmlnXHJcbiAgZm9ybWF0ID0gbW9kZWw8J29iamVjdCcgfCAnaHRtbCcgfCAndGV4dCcgfCAnanNvbic+KCk7XHJcbiAgaGVpZ2h0ID0gbW9kZWw8c3RyaW5nPigpO1xyXG4gIHdpZHRoID0gbW9kZWw8c3RyaW5nPigpO1xyXG4gIGZ1bGxzY3JlZW5IZWlnaHQgPSBtb2RlbDxzdHJpbmc+KCk7XHJcbiAgZnVsbHNjcmVlbldpZHRoID0gbW9kZWw8c3RyaW5nPigpO1xyXG4gIGZ1bGxzY3JlZW5Nb2RlID0gbW9kZWw8J2V4cGFuZCcgfCAncG9wb3V0Jz4oKTtcclxuXHJcbiAgZW5hYmxlVG9vbHRpcHMgPSBtb2RlbDxib29sZWFuPigpO1xyXG4gIGZ1bGxzY3JlZW4gPSBtb2RlbDxib29sZWFuPigpO1xyXG4gIHJlYWRvbmx5ID0gbW9kZWw8Ym9vbGVhbj4oKTtcclxuICBhcHBseVJlYWRvbmx5U3R5bGUgPSBtb2RlbDxib29sZWFuPigpO1xyXG4gIHNob3dUb29sYmFyID0gbW9kZWw8Ym9vbGVhbj4oKTtcclxuICBzaG93Qm9yZGVyID0gbW9kZWw8Ym9vbGVhbj4oKTtcclxuXHJcbiAgLy8jcmVnaW9uIE9wdGlvbmFsIFF1aWxsIG1vZHVsZXNcclxuICBpbWFnZVJlc2l6ZU1vZHVsZSA9IG1vZGVsPGJvb2xlYW4+KCk7XHJcbiAgaW1hZ2VEcm9wTW9kdWxlID0gbW9kZWw8Ym9vbGVhbj4oKTtcclxuICBzeW50YXhNb2R1bGUgPSBtb2RlbDxib29sZWFuPigpO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBmdWxsc2NyZWVuQ2hhbmdlZCA9IG91dHB1dDxib29sZWFuPigpO1xyXG5cclxuICAvLyNyZWdpb24gUGFzc3Rocm91Z2ggZXZlbnRzXHJcbiAgb25CbHVyID0gb3V0cHV0PEJsdXI+KCk7XHJcbiAgb25Db250ZW50Q2hhbmdlZCA9IG91dHB1dDxDb250ZW50Q2hhbmdlPigpO1xyXG4gIG9uRWRpdG9yQ2hhbmdlZCA9IG91dHB1dDxFZGl0b3JDaGFuZ2VDb250ZW50IHwgRWRpdG9yQ2hhbmdlU2VsZWN0aW9uPigpO1xyXG4gIG9uRWRpdG9yQ3JlYXRlZCA9IG91dHB1dCgpO1xyXG4gIG9uRm9jdXMgPSBvdXRwdXQ8Rm9jdXM+KCk7XHJcbiAgb25TZWxlY3Rpb25DaGFuZ2VkID0gb3V0cHV0PFNlbGVjdGlvbkNoYW5nZT4oKTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcclxuXHJcbiAgICAvKmlmICghdGhpcy51c2Vycykge1xyXG4gICAgICB0aGlzLmFjdGl2ZURpcmVjdG9yeVNlcnZpY2UuZ2V0VXNlcnMoKS5zdWJzY3JpYmUodXNlcnMgPT5cclxuICAgICAgICB0aGlzLnVzZXJzID0gdXNlcnNcclxuICAgICAgKTtcclxuICAgIH0qL1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlnLnNldCh7XHJcbiAgICAgIC4uLkRlZmF1bHRDb25maWcsXHJcbiAgICAgIC4uLnRoaXMuY29uZmlnKCksXHJcbiAgICAgIC4uLnRoaXMuI2RhdGE/LmNvbmZpZyxcclxuICAgICAgYnV0dG9uczogdGhpcy5jb25maWcoKT8uYnV0dG9ucyA/PyBEZWZhdWx0QnV0dG9ucyxcclxuICAgICAgaWNvbnM6IHtcclxuICAgICAgICAuLi5EZWZhdWx0SWNvbnMsXHJcbiAgICAgICAgLi4udGhpcy5jb25maWcoKT8uaWNvbnNcclxuICAgICAgfSxcclxuICAgICAgdG9vbHRpcHM6IHtcclxuICAgICAgICAuLi5EZWZhdWx0VG9vbHRpcHMsXHJcbiAgICAgICAgLi4udGhpcy5jb25maWcoKT8udG9vbHRpcHNcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgPz8gdGhpcy4jZGF0YT8udmFsdWU7XHJcblxyXG4gICAgLy8gTW92ZWQgdG8gY2xpZW50IHJlc3BvbnNpYmlsaXR5XHJcbiAgICAvKmlmICh0aGlzLmltYWdlRHJvcE1vZHVsZSkge1xyXG4gICAgICBRdWlsbC5yZWdpc3RlcignbW9kdWxlcy9pbWFnZURyb3AnLCBJbWFnZURyb3ApO1xyXG4gICAgfSovXHJcblxyXG4gICAgdGhpcy5wbGFjZWhvbGRlci5zZXQodGhpcy5wbGFjZWhvbGRlcigpID8/IHRoaXMuI2RhdGE/LnBsYWNlaG9sZGVyKTtcclxuXHJcbiAgICB0aGlzLmltYWdlRHJvcE1vZHVsZS5zZXQodGhpcy5pbWFnZURyb3BNb2R1bGUoKSA/PyB0aGlzLiNkYXRhPy5pbWFnZURyb3BNb2R1bGUgPz8gdGhpcy5jb25maWcoKSEuaW1hZ2VEcm9wTW9kdWxlKTtcclxuICAgIHRoaXMuaW1hZ2VSZXNpemVNb2R1bGUuc2V0KHRoaXMuaW1hZ2VSZXNpemVNb2R1bGUoKSA/PyB0aGlzLiNkYXRhPy5pbWFnZVJlc2l6ZU1vZHVsZSA/PyB0aGlzLmNvbmZpZygpIS5pbWFnZVJlc2l6ZU1vZHVsZSk7XHJcbiAgICB0aGlzLnN5bnRheE1vZHVsZS5zZXQodGhpcy5zeW50YXhNb2R1bGUoKSA/PyB0aGlzLiNkYXRhPy5zeW50YXhNb2R1bGUgPz8gdGhpcy5jb25maWcoKSEuc3ludGF4TW9kdWxlKTtcclxuXHJcbiAgICB0aGlzLmZvcm1hdC5zZXQodGhpcy5mb3JtYXQoKSA/PyB0aGlzLiNkYXRhPy5mb3JtYXQgPz8gdGhpcy5jb25maWcoKSEuZm9ybWF0KTtcclxuICAgIHRoaXMuaGVpZ2h0LnNldCh0aGlzLmhlaWdodCgpID8/IHRoaXMuI2RhdGE/LmhlaWdodCA/PyB0aGlzLmNvbmZpZygpIS5oZWlnaHQpO1xyXG4gICAgdGhpcy53aWR0aC5zZXQodGhpcy53aWR0aCgpID8/IHRoaXMuI2RhdGE/LndpZHRoID8/IHRoaXMuY29uZmlnKCkhLndpZHRoKTtcclxuICAgIHRoaXMuZnVsbHNjcmVlbkhlaWdodC5zZXQodGhpcy5mdWxsc2NyZWVuSGVpZ2h0KCkgPz8gdGhpcy4jZGF0YT8ubWF4SGVpZ2h0ID8/IHRoaXMuY29uZmlnKCkhLmZ1bGxzY3JlZW5IZWlnaHQpO1xyXG4gICAgdGhpcy5mdWxsc2NyZWVuV2lkdGguc2V0KHRoaXMuZnVsbHNjcmVlbldpZHRoKCkgPz8gdGhpcy4jZGF0YT8ubWF4V2lkdGggPz8gdGhpcy5jb25maWcoKSEuZnVsbHNjcmVlbldpZHRoKTtcclxuICAgIHRoaXMuZnVsbHNjcmVlbk1vZGUuc2V0KHRoaXMuZnVsbHNjcmVlbk1vZGUoKSA/PyB0aGlzLiNkYXRhPy5mdWxsc2NyZWVuTW9kZSA/PyB0aGlzLmNvbmZpZygpIS5mdWxsc2NyZWVuTW9kZSk7XHJcblxyXG4gICAgdGhpcy5lbmFibGVUb29sdGlwcy5zZXQodGhpcy5lbmFibGVUb29sdGlwcygpICE9PSB1bmRlZmluZWQgP1xyXG4gICAgICB0aGlzLmVuYWJsZVRvb2x0aXBzKCkgOlxyXG4gICAgICB0aGlzLiNkYXRhPy5lbmFibGVUb29sdGlwcyA/PyB0aGlzLmNvbmZpZygpIS5lbmFibGVUb29sdGlwcyk7XHJcblxyXG4gICAgdGhpcy5mdWxsc2NyZWVuLnNldCh0aGlzLmZ1bGxzY3JlZW4oKSAhPT0gdW5kZWZpbmVkID9cclxuICAgICAgdGhpcy5mdWxsc2NyZWVuKCkgOlxyXG4gICAgICB0aGlzLiNkYXRhPy5mdWxsc2NyZWVuID8/IHRoaXMuY29uZmlnKCkhLmZ1bGxzY3JlZW4pO1xyXG5cclxuICAgIHRoaXMucmVhZG9ubHkuc2V0KHRoaXMucmVhZG9ubHkoKSAhPT0gdW5kZWZpbmVkID9cclxuICAgICAgdGhpcy5yZWFkb25seSgpIDpcclxuICAgICAgdGhpcy4jZGF0YT8ucmVhZG9ubHkgPz8gdGhpcy5jb25maWcoKSEucmVhZG9ubHkpO1xyXG5cclxuICAgIHRoaXMuYXBwbHlSZWFkb25seVN0eWxlLnNldCh0aGlzLmFwcGx5UmVhZG9ubHlTdHlsZSgpICE9PSB1bmRlZmluZWQgP1xyXG4gICAgICB0aGlzLmFwcGx5UmVhZG9ubHlTdHlsZSgpIDpcclxuICAgICAgdGhpcy4jZGF0YT8uYXBwbHlSZWFkb25seVN0eWxlID8/IHRoaXMuY29uZmlnKCkhLmFwcGx5UmVhZG9ubHlTdHlsZSk7XHJcblxyXG4gICAgdGhpcy5zaG93VG9vbGJhci5zZXQodGhpcy5zaG93VG9vbGJhcigpICE9PSB1bmRlZmluZWQgP1xyXG4gICAgICB0aGlzLnNob3dUb29sYmFyKCkgOlxyXG4gICAgICB0aGlzLiNkYXRhPy5zaG93VG9vbGJhciA/PyB0aGlzLmNvbmZpZygpIS5zaG93VG9vbGJhcik7XHJcblxyXG4gICAgdGhpcy5zaG93Qm9yZGVyLnNldCh0aGlzLnNob3dCb3JkZXIoKSAhPT0gdW5kZWZpbmVkID9cclxuICAgICAgdGhpcy5zaG93Qm9yZGVyKCkgOlxyXG4gICAgICB0aGlzLiNkYXRhPy5zaG93Qm9yZGVyID8/IHRoaXMuY29uZmlnKCkhLnNob3dCb3JkZXIpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRnVsbHNjcmVlbigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZ1bGxzY3JlZW5Nb2RlKCkgPT09ICdleHBhbmQnKSB7XHJcbiAgICAgICAgdGhpcy5mdWxsc2NyZWVuLnNldCghdGhpcy5mdWxsc2NyZWVuKCkpO1xyXG4gICAgICAgIHRoaXMuZnVsbHNjcmVlbkNoYW5nZWQuZW1pdCh0aGlzLmZ1bGxzY3JlZW4oKSEpO1xyXG4gICAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZnVsbHNjcmVlbigpKSB7XHJcbiAgICAgICAgdGhpcy4jZGlhbG9nUmVmPy5jbG9zZSh0aGlzLnZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuZnVsbHNjcmVlbkNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZGF0YTogRGlhbG9nRGF0YSA9IHtcclxuXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcclxuICAgICAgICAgIGNvbmZpZzogdGhpcy5jb25maWcoKSxcclxuICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnBsYWNlaG9sZGVyKCksXHJcbiAgICAgICAgICBmb3JtYXQ6IHRoaXMuZm9ybWF0KCkhLFxyXG4gICAgICAgICAgaGVpZ2h0OiB0aGlzLmZ1bGxzY3JlZW5IZWlnaHQoKSEsXHJcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICAgICAgbWF4SGVpZ2h0OiB0aGlzLmZ1bGxzY3JlZW5IZWlnaHQoKSEsXHJcbiAgICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxyXG4gICAgICAgICAgZW5hYmxlVG9vbHRpcHM6IHRoaXMuZW5hYmxlVG9vbHRpcHMoKSEsXHJcbiAgICAgICAgICBmdWxsc2NyZWVuOiB0cnVlLFxyXG4gICAgICAgICAgZnVsbHNjcmVlbk1vZGU6IHRoaXMuZnVsbHNjcmVlbk1vZGUoKSEsXHJcbiAgICAgICAgICByZWFkb25seTogdGhpcy5yZWFkb25seSgpISxcclxuICAgICAgICAgIGFwcGx5UmVhZG9ubHlTdHlsZTogdGhpcy5hcHBseVJlYWRvbmx5U3R5bGUoKSEsXHJcbiAgICAgICAgICBzaG93VG9vbGJhcjogdGhpcy5zaG93VG9vbGJhcigpISxcclxuICAgICAgICAgIHNob3dCb3JkZXI6IHRoaXMuc2hvd0JvcmRlcigpISxcclxuICAgICAgICAgIGltYWdlUmVzaXplTW9kdWxlOiB0aGlzLmltYWdlUmVzaXplTW9kdWxlKCkhLFxyXG4gICAgICAgICAgaW1hZ2VEcm9wTW9kdWxlOiB0aGlzLmltYWdlRHJvcE1vZHVsZSgpISxcclxuICAgICAgICAgIHN5bnRheE1vZHVsZTogdGhpcy5zeW50YXhNb2R1bGUoKSFcclxuICAgICAgICAgIC8vdXNlcnM6IHRoaXMudXNlcnNcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLiNkaWFsb2cub3BlbihFZGl0b3JDb21wb25lbnQsIHtcclxuICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICAgIHdpZHRoOiB0aGlzLmZ1bGxzY3JlZW5XaWR0aCgpLFxyXG4gICAgICAgICAgaGVpZ2h0OiB0aGlzLmZ1bGxzY3JlZW5IZWlnaHQoKSxcclxuICAgICAgICAgIGRhdGFcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5mdWxsc2NyZWVuQ2hhbmdlZC5lbWl0KHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByYXdFZGl0KCk6IHZvaWQge1xyXG4gICAgdGhpcy4jZGlhbG9nLm9wZW4oUmF3Q29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHRoaXMudmFsdWUsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGVpZ2h0OiAnOTAlJyxcclxuICAgICAgd2lkdGg6ICcxMDAlJ1xyXG4gICAgfSlcclxuICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgaWYgKHZhbHVlID09PSAnX19ETyEhTk9UISFVUERBVEVfXycpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdG9vbHRpcCh2YWw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5lbmFibGVUb29sdGlwcygpID8gdmFsIDogJyc7XHJcbiAgfVxyXG5cclxuICBnZXQgbW9kdWxlcygpIHtcclxuICAgIC8vaWYgKCF0aGlzLnVzZXJzKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cclxuXHJcbiAgICBjb25zdCBtb2R1bGVzID0geyB9O1xyXG5cclxuICAgIGlmICghdGhpcy5zaG93VG9vbGJhcigpKSB7XHJcbiAgICAgIG1vZHVsZXNbJ3Rvb2xiYXInXSA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmltYWdlUmVzaXplTW9kdWxlKCkpIHtcclxuICAgICAgbW9kdWxlc1snaW1hZ2VSZXNpemUnXSA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmltYWdlRHJvcE1vZHVsZSgpKSB7XHJcbiAgICAgIG1vZHVsZXNbJ2ltYWdlRHJvcCddID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zeW50YXhNb2R1bGUoKSkge1xyXG4gICAgICBtb2R1bGVzWydzeW50YXgnXSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyppZiAodGhpcy5tZW50aW9uTW9kdWxlKSB7XHJcbiAgICAgIG1vZHVsZXNbJ21lbnRpb24nXSA9IHtcclxuICAgICAgICBhbGxvd2VkQ2hhcnM6IC9eW0EtWmEtelxcc8OFw4TDlsOlw6TDtl0qJC8sXHJcblxyXG4gICAgICAgIG9uU2VsZWN0OiAoaXRlbTogRE9NU3RyaW5nTWFwLCBpbnNlcnRJdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yIS5xdWlsbEVkaXRvclxyXG4gICAgICAgICAgaW5zZXJ0SXRlbShpdGVtKVxyXG4gICAgICAgICAgLy8gbmVjZXNzYXJ5IGJlY2F1c2UgcXVpbGwtbWVudGlvbiB0cmlnZ2VycyBjaGFuZ2VzIGFzICdhcGknIGluc3RlYWQgb2YgJ3VzZXInXHJcbiAgICAgICAgICBlZGl0b3IuaW5zZXJ0VGV4dChlZGl0b3IuZ2V0TGVuZ3RoKCkgLSAxLCAnJywgJ3VzZXInKVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHNvdXJjZTogKHNlYXJjaFRlcm06IHN0cmluZywgcmVuZGVyTGlzdDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoc2VhcmNoVGVybS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmVuZGVyTGlzdCh0aGlzLnVzZXJzPy5tYXAodSA9PiAoeyB2YWx1ZTogYCR7dS5kaXNwbGF5TmFtZX0gKCR7dS5zQU1BY2NvdW50TmFtZS50b0xvd2VyQ2FzZSgpfSlgIH0pKSwgc2VhcmNoVGVybSlcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXM6IGFueVtdID0gW11cclxuXHJcbiAgICAgICAgICAgIHRoaXMudXNlcnMhLmZvckVhY2goKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgZW50cnkuZGlzcGxheU5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSkgIT09IC0xIHx8XHJcbiAgICAgICAgICAgICAgICBlbnRyeS5zQU1BY2NvdW50TmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKSAhPT0gLTFcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKHsgdmFsdWU6IGAke2VudHJ5LmRpc3BsYXlOYW1lfSAoJHtlbnRyeS5zQU1BY2NvdW50TmFtZS50b0xvd2VyQ2FzZSgpfSlgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgcmVuZGVyTGlzdChtYXRjaGVzLCBzZWFyY2hUZXJtKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH0qL1xyXG5cclxuICAgIHJldHVybiBtb2R1bGVzO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIENvbnRyb2xWYWx1ZUFjY2Vzc29yIG1ldGhvZHNcclxuICAvLyBNZXRob2QgdGhhdCBpcyBpbnZva2VkIG9uIGFuIHVwZGF0ZSBvZiBhIG1vZGVsLlxyXG4gIHVwZGF0ZUNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIENvbnRyb2xWYWx1ZUFjY2Vzc29yIE92ZXJyaWRlc1xyXG5cclxuICAvLyBXcml0ZXMgYSBuZXcgaXRlbSB0byB0aGUgZWxlbWVudC5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICB0aGlzLnVwZGF0ZUNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8vIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBjb250cm9sJ3MgdmFsdWUgY2hhbmdlcyBpbiB0aGUgVUkuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIC8vIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBjb250cm9sIHJlY2VpdmVzIGEgYmx1ciBldmVudC5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lcj5cclxuICA8Zm9ybT5cclxuICAgIDxxdWlsbC1lZGl0b3IgbmFtZT1cImVkaXRvclwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVDaGFuZ2VzKClcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKSA/PyAnJ1wiXHJcbiAgICAgIFtmb3JtYXRdPVwiZm9ybWF0KClcIlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0XT1cImZ1bGxzY3JlZW4oKSA/IGZ1bGxzY3JlZW5IZWlnaHQoKSA6IGhlaWdodCgpXCJcclxuICAgICAgW3N0eWxlLndpZHRoXT1cImZ1bGxzY3JlZW4oKSA/IGZ1bGxzY3JlZW5XaWR0aCgpIDogd2lkdGgoKVwiXHJcbiAgICAgIFtyZWFkT25seV09XCJyZWFkb25seSgpID8/IGZhbHNlXCJcclxuICAgICAgW2NsYXNzLnJlYWRvbmx5XT1cInJlYWRvbmx5KCkgJiYgYXBwbHlSZWFkb25seVN0eWxlKClcIlxyXG4gICAgICBbY2xhc3Mubm8tdG9vbGJhcl09XCIhc2hvd1Rvb2xiYXIoKVwiXHJcbiAgICAgIFtjbGFzcy5uby1ib3JkZXJdPVwiIXNob3dCb3JkZXIoKVwiXHJcbiAgICAgIFttb2R1bGVzXT1cIm1vZHVsZXNcIlxyXG5cclxuICAgICAgKG9uQmx1cik9XCJvbkJsdXIuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgKG9uQ29udGVudENoYW5nZWQpPVwib25Db250ZW50Q2hhbmdlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAob25FZGl0b3JDaGFuZ2VkKT1cIm9uRWRpdG9yQ2hhbmdlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAob25FZGl0b3JDcmVhdGVkKT1cIm9uRWRpdG9yQ3JlYXRlZC5lbWl0KClcIlxyXG4gICAgICAob25Gb2N1cyk9XCJvbkZvY3VzLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgIChvblNlbGVjdGlvbkNoYW5nZWQpPVwib25TZWxlY3Rpb25DaGFuZ2VkLmVtaXQoJGV2ZW50KVwiPlxyXG5cclxuICAgICAgQGlmIChzaG93VG9vbGJhcigpKSB7XHJcbiAgICAgICAgPGRpdiBxdWlsbC1lZGl0b3ItdG9vbGJhcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidG9vbGJhclwiLz5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZWRpdG9yU2l6ZVwiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgPC9xdWlsbC1lZGl0b3I+XHJcbiAgPC9mb3JtPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdG9vbGJhcj5cclxuICA8ZGl2PlxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmb250U3R5bGVcIi8+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJsb2NrU3R5bGVcIi8+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRpbmdTdHlsZVwiLz5cclxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdFN0eWxlXCIvPlxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzY3JpcHRTdHlsZVwiLz5cclxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW5kZW50U3R5bGVcIi8+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJ0bFwiLz5cclxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9udFNpemVcIi8+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRpbmdcIi8+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbG9yXCIvPlxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmb250XCIvPlxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJhbGlnblwiLz5cclxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2xlYW5cIi8+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvcm11bGFcIi8+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1lZGlhXCIvPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmb250U3R5bGU+XHJcbiAgQGlmIChzaG93Rm9udFN0eWxlKSB7XHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cclxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuYm9sZCkge1xyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1ib2xkXCIgICAgICAgICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5ib2xkISlcIj48L2J1dHRvbj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5pdGFsaWMpIHtcclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaXRhbGljXCIgICAgICAgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLml0YWxpYyEpXCI+PC9idXR0b24+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEudW5kZXJsaW5lKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXVuZGVybGluZVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS51bmRlcmxpbmUhKVwiPjwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLnN0cmlrZSkge1xyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1zdHJpa2VcIiAgICAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuc3RyaWtlISlcIj48L2J1dHRvbj5cclxuICAgICAgfVxyXG4gICAgPC9zcGFuPlxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYmxvY2tTdHlsZT5cclxuICBAaWYgKHNob3dCbG9ja1N0eWxlKSB7XHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cclxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuYmxvY2txdW90ZSkge1xyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1ibG9ja3F1b3RlXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLmJsb2NrcXVvdGUhKVwiPjwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmNvZGVibG9jaykge1xyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1jb2RlLWJsb2NrXCIgIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5jb2RlYmxvY2shKVwiPjwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICA8L3NwYW4+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNoZWFkaW5nU3R5bGU+XHJcbiAgQGlmIChzaG93UXVpY2tIZWFkaW5nU3R5bGUpIHtcclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxyXG4gICAgICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5oMSkge1xyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1oZWFkZXJcIiB2YWx1ZT1cIjFcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuaDEhKVwiPjwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmgyKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWhlYWRlclwiIHZhbHVlPVwiMlwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5oMiEpXCI+PC9idXR0b24+XHJcbiAgICAgIH1cclxuICAgIDwvc3Bhbj5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xpc3RTdHlsZT5cclxuICBAaWYgKHNob3dMaXN0U3R5bGUpIHtcclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxyXG4gICAgICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5vcmRlcmVkKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWxpc3RcIiB2YWx1ZT1cIm9yZGVyZWRcIiAgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLm9yZGVyZWQhKVwiPjwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmJ1bGxldGVkKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWxpc3RcIiB2YWx1ZT1cImJ1bGxldFwiICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuYnVsbGV0ZWQhKVwiPjwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICA8L3NwYW4+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzY3JpcHRTdHlsZT5cclxuICBAaWYgKHNob3dTY3JpcHRTdHlsZSkge1xyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCI+XHJcbiAgICAgIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLnN1YlNjcmlwdCkge1xyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1zY3JpcHRcIiB2YWx1ZT1cInN1YlwiICAgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLnN1YlNjcmlwdCEpXCI+PC9idXR0b24+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuc3VwZXJTY3JpcHQpIHtcclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtc2NyaXB0XCIgdmFsdWU9XCJzdXBlclwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5zdXBlclNjcmlwdCEpXCI+PC9idXR0b24+XHJcbiAgICAgIH1cclxuICAgIDwvc3Bhbj5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2luZGVudFN0eWxlPlxyXG4gIEBpZiAoc2hvd0luZGVudFN0eWxlKSB7XHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cclxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuZGVjcmVhc2VJbmRlbnQpIHtcclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaW5kZW50XCIgdmFsdWU9XCItMVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5kZWNyZWFzZUluZGVudCEpXCI+PC9idXR0b24+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuaW5jcmVhc2VJbmRlbnQpIHtcclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaW5kZW50XCIgdmFsdWU9XCIrMVwiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5pbmNyZWFzZUluZGVudCEpXCI+PC9idXR0b24+XHJcbiAgICAgIH1cclxuICAgIDwvc3Bhbj5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3J0bD5cclxuICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5ydGwpIHtcclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtZGlyZWN0aW9uXCIgdmFsdWU9XCJydGxcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEucnRsISlcIj48L2J1dHRvbj5cclxuICAgIDwvc3Bhbj5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2ZvbnRTaXplPlxyXG4gIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmZvbnRTaXplKSB7XHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuZm9udFNpemUhKVwiPlxyXG4gICAgICA8c2VsZWN0IGNsYXNzPVwicWwtc2l6ZVwiPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJzbWFsbFwiPjwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+PC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImxhcmdlXCI+PC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImh1Z2VcIj48L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcbiAgICA8L3NwYW4+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNoZWFkaW5nPlxyXG4gIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmhlYWRpbmdTdHlsZSkge1xyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLmhlYWRpbmdTdHlsZSEpXCI+XHJcbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJxbC1oZWFkZXJcIj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMVwiPjwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCIyXCI+PC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjNcIj48L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiNFwiPjwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCI1XCI+PC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjZcIj48L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHNlbGVjdGVkPVwic2VsZWN0ZWRcIj48L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcbiAgICA8L3NwYW4+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb2xvcj5cclxuICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5jb2xvcikge1xyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLmNvbG9yISlcIj5cclxuICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWNvbG9yXCI+PC9zZWxlY3Q+XHJcbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJxbC1iYWNrZ3JvdW5kXCI+PC9zZWxlY3Q+XHJcbiAgICA8L3NwYW4+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmb250PlxyXG4gIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmZvbnQpIHtcclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiIFttYXRUb29sdGlwXT1cInRvb2x0aXAoY29uZmlnKCkhLnRvb2x0aXBzIS5mb250ISlcIj5cclxuICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWZvbnRcIj5cclxuICAgICAgICA8b3B0aW9uIHNlbGVjdGVkPjwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJzZXJpZlwiPjwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJtb25vc3BhY2VcIj48L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcbiAgICA8L3NwYW4+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNhbGlnbj5cclxuICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5hbGlnbikge1xyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLmFsaWduISlcIj5cclxuICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWFsaWduXCI+XHJcbiAgICAgICAgPG9wdGlvbiBzZWxlY3RlZD48L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY2VudGVyXCI+PC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInJpZ2h0XCI+PC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImp1c3RpZnlcIj48L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcbiAgICA8L3NwYW4+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjbGVhbj5cclxuICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5jbGVhbikge1xyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLmNsZWFuISlcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWNsZWFuXCI+PC9idXR0b24+XHJcbiAgICA8L3NwYW4+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNtZWRpYT5cclxuICBAaWYgKHNob3dNZWRpYSkge1xyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCI+XHJcbiAgICAgIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLmxpbmspIHtcclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtbGlua1wiICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEubGluayEpXCI+PC9idXR0b24+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuaW1hZ2UpIHtcclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaW1hZ2VcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuaW1hZ2UhKVwiPjwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoY29uZmlnKCkhLmJ1dHRvbnMhLnZpZGVvKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXZpZGVvXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLnZpZGVvISlcIj48L2J1dHRvbj5cclxuICAgICAgfVxyXG4gICAgPC9zcGFuPlxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZWRpdG9yU2l6ZT5cclxuICA8ZGl2PlxyXG4gICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEucmF3RWRpdG9yKSB7XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxyXG4gICAgICAgIDxidXR0b24gaWQ9XCJyYXdkb2dcIlxyXG4gICAgICAgICAgW21hdFRvb2x0aXBdPVwidG9vbHRpcChjb25maWcoKSEudG9vbHRpcHMhLnJhd0VkaXRvciEpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cInJhd0VkaXQoKVwiPlxyXG4gICAgICAgICAgICBjb2RlXHJcbiAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICB9XHJcblxyXG4gICAgQGlmIChjb25maWcoKSEuYnV0dG9ucyEuZWRpdG9yU2l6ZSkge1xyXG4gICAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cclxuICAgICAgICA8YnV0dG9uIGlkPVwiZnVsbHNjcmVlblwiXHJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGZ1bGxzY3JlZW4oKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgKGZ1bGxzY3JlZW5Nb2RlKCkgPT09ICdleHBhbmQnID8gY29uZmlnKCkhLnRvb2x0aXBzIS5taW5pbWl6ZSEgOiBjb25maWcoKSEudG9vbHRpcHMhLnBvcGluISkgOlxyXG4gICAgICAgICAgICAgICAgICAgIChmdWxsc2NyZWVuTW9kZSgpID09PSAnZXhwYW5kJyA/IGNvbmZpZygpIS50b29sdGlwcyEubWF4aW1pemUhIDogY29uZmlnKCkhLnRvb2x0aXBzIS5wb3BvdXQhKSlcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwidG9nZ2xlRnVsbHNjcmVlbigpXCI+XHJcbiAgICAgICAgICAgIHt7IGZ1bGxzY3JlZW4oKSA/XHJcbiAgICAgICAgICAgIChmdWxsc2NyZWVuTW9kZSgpID09PSAnZXhwYW5kJyA/IGNvbmZpZygpIS5pY29ucyEubWluaW1pemUgOiBjb25maWcoKSEuaWNvbnMhLnBvcGluKSA6XHJcbiAgICAgICAgICAgIChmdWxsc2NyZWVuTW9kZSgpID09PSAnZXhwYW5kJyA/IGNvbmZpZygpIS5pY29ucyEubWF4aW1pemUgOiBjb25maWcoKSEuaWNvbnMhLnBvcG91dClcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZm9ybXVsYT5cclxuICBAaWYgKGNvbmZpZygpIS5idXR0b25zIS5mb3JtdWxhKSB7XHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwKGNvbmZpZygpIS50b29sdGlwcyEuZm9ybXVsYSEpXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1mb3JtdWxhXCI+PC9idXR0b24+XHJcbiAgICA8L3NwYW4+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Component, inject } from '@angular/core';
|
|
2
|
+
import { FormsModule } from '@angular/forms';
|
|
3
|
+
import { MatButton } from '@angular/material/button';
|
|
4
|
+
import { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent } from '@angular/material/dialog';
|
|
5
|
+
import { MatFormField } from '@angular/material/form-field';
|
|
6
|
+
import { MatIcon } from '@angular/material/icon';
|
|
7
|
+
import { MatInput } from '@angular/material/input';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/forms";
|
|
10
|
+
export class RawComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.data = inject(MAT_DIALOG_DATA);
|
|
13
|
+
}
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: RawComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: RawComponent, isStandalone: true, selector: "cpquill-raw", ngImport: i0, template: "<mat-dialog-content>\r\n <form>\r\n <mat-form-field appearance=\"outline\">\r\n <textarea matInput [(ngModel)]=\"data\" name=\"data\"></textarea>\r\n </mat-form-field>\r\n </form>\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n <button mat-raised-button color=\"warn\" mat-dialog-close=\"__DO!!NOT!!UPDATE__\">\r\n <mat-icon>cancel</mat-icon>\r\n <span>Cancel</span>\r\n </button>\r\n\r\n <button mat-raised-button color=\"primary\" [mat-dialog-close]=\"data\">\r\n <mat-icon>done</mat-icon>\r\n <span>Accept</span>\r\n </button>\r\n</mat-dialog-actions>", styles: ["mat-dialog-content{height:95%;max-height:initial!important}form{width:100%}mat-form-field{width:100%}textarea{height:70vh}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: 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"] }] }); }
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: RawComponent, decorators: [{
|
|
18
|
+
type: Component,
|
|
19
|
+
args: [{ selector: 'cpquill-raw', imports: [
|
|
20
|
+
FormsModule,
|
|
21
|
+
MatButton,
|
|
22
|
+
MatDialogActions,
|
|
23
|
+
MatDialogClose,
|
|
24
|
+
MatDialogContent,
|
|
25
|
+
MatFormField,
|
|
26
|
+
MatIcon,
|
|
27
|
+
MatInput
|
|
28
|
+
], standalone: true, template: "<mat-dialog-content>\r\n <form>\r\n <mat-form-field appearance=\"outline\">\r\n <textarea matInput [(ngModel)]=\"data\" name=\"data\"></textarea>\r\n </mat-form-field>\r\n </form>\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n <button mat-raised-button color=\"warn\" mat-dialog-close=\"__DO!!NOT!!UPDATE__\">\r\n <mat-icon>cancel</mat-icon>\r\n <span>Cancel</span>\r\n </button>\r\n\r\n <button mat-raised-button color=\"primary\" [mat-dialog-close]=\"data\">\r\n <mat-icon>done</mat-icon>\r\n <span>Accept</span>\r\n </button>\r\n</mat-dialog-actions>", styles: ["mat-dialog-content{height:95%;max-height:initial!important}form{width:100%}mat-form-field{width:100%}textarea{height:70vh}\n"] }]
|
|
29
|
+
}] });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3F1aWxsL3NyYy9jb21wb25lbnRzL3Jhdy9yYXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvcXVpbGwvc3JjL2NvbXBvbmVudHMvcmF3L3Jhdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0csT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQWtCbkQsTUFBTSxPQUFPLFlBQVk7SUFoQnpCO1FBaUJFLFNBQUksR0FBRyxNQUFNLENBQVMsZUFBZSxDQUFDLENBQUM7S0FDeEM7OEdBRlksWUFBWTtrR0FBWixZQUFZLHVFQ3hCekIsNG5CQWtCcUIscUxEUGIsV0FBVyx3aUNBQ1gsU0FBUyxpTEFDVCxnQkFBZ0IsNEhBQ2hCLGNBQWMscUxBQ2QsZ0JBQWdCLHlHQUNoQixZQUFZLDRMQUNaLE9BQU8sMklBQ1AsUUFBUTs7MkZBTUgsWUFBWTtrQkFoQnhCLFNBQVM7K0JBQ0ksYUFBYSxXQUNkO3dCQUNMLFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLE9BQU87d0JBQ1AsUUFBUTtxQkFDWCxjQUNXLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dBY3Rpb25zLCBNYXREaWFsb2dDbG9zZSwgTWF0RGlhbG9nQ29udGVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NwcXVpbGwtcmF3JyxcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBGb3Jtc01vZHVsZSxcclxuICAgICAgICBNYXRCdXR0b24sXHJcbiAgICAgICAgTWF0RGlhbG9nQWN0aW9ucyxcclxuICAgICAgICBNYXREaWFsb2dDbG9zZSxcclxuICAgICAgICBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgICAgIE1hdEZvcm1GaWVsZCxcclxuICAgICAgICBNYXRJY29uLFxyXG4gICAgICAgIE1hdElucHV0XHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9yYXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL3Jhdy5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFJhd0NvbXBvbmVudCB7XHJcbiAgZGF0YSA9IGluamVjdDxzdHJpbmc+KE1BVF9ESUFMT0dfREFUQSk7XHJcbn1cclxuIiwiPG1hdC1kaWFsb2ctY29udGVudD5cclxuICAgIDxmb3JtPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJkYXRhXCIgbmFtZT1cImRhdGFcIj48L3RleHRhcmVhPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Zvcm0+XHJcbjwvbWF0LWRpYWxvZy1jb250ZW50PlxyXG5cclxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJ3YXJuXCIgbWF0LWRpYWxvZy1jbG9zZT1cIl9fRE8hIU5PVCEhVVBEQVRFX19cIj5cclxuICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgICAgICA8c3Bhbj5DYW5jZWw8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFttYXQtZGlhbG9nLWNsb3NlXT1cImRhdGFcIj5cclxuICAgICAgICA8bWF0LWljb24+ZG9uZTwvbWF0LWljb24+XHJcbiAgICAgICAgPHNwYW4+QWNjZXB0PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbjwvbWF0LWRpYWxvZy1hY3Rpb25zPiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './quill-mention.api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXZlbGFuZHByaWNlLW5neC1saWItcXVpbGwtbWVudGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3F1aWxsL21lbnRpb24vc3JjL2NsZWF2ZWxhbmRwcmljZS1uZ3gtbGliLXF1aWxsLW1lbnRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3F1aWxsLW1lbnRpb24uYXBpJztcbiJdfQ==
|