croco-html 3.3.1 → 3.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/add-files-btn/add-files-btn.component.mjs +1 -3
- package/esm2022/lib/components/editor/external-video-editor/youtube-video-player/youtube-video-player.component.mjs +1 -1
- package/esm2022/lib/components/editor/main-editor/main-editor.component.mjs +1 -1
- package/esm2022/lib/components/editor/main-editor-block/main-editor-block.component.mjs +1 -5
- package/esm2022/lib/components/editor/visual-editor/visual-editor.component.mjs +12 -9
- package/esm2022/lib/components/file-id-select/file-id-select.component.mjs +3 -3
- package/esm2022/lib/components/upload-files-btn/upload-files-btn.component.mjs +1 -1
- package/esm2022/lib/components/xml-tags/file-image-tag-view/file-image-tag-view.component.mjs +2 -2
- package/esm2022/lib/components/xml-tags/html-raw-view/html-raw-view.component.mjs +1 -1
- package/esm2022/lib/components/xml-tags/xml-tag-custom-button/xml-tag-button.component.mjs +1 -3
- package/esm2022/lib/components/xml-tags/xml-tag-custom-widget/xml-tag-custom-widget.component.mjs +1 -1
- package/esm2022/lib/components/xml-tags/xml-tag-download-file-button/xml-tag-download-file-button.component.mjs +1 -5
- package/esm2022/lib/components/xml-tags/xml-tag-html-view/xml-tag-html-view.component.mjs +2 -2
- package/esm2022/lib/components/xml-tags/xml-tag-rich-text-view/xml-tag-rich-text-view.component.mjs +2 -2
- package/esm2022/lib/services/blob-create.service.mjs +1 -1
- package/fesm2022/croco-html.mjs +16 -21
- package/fesm2022/croco-html.mjs.map +1 -1
- package/lib/components/add-files-btn/add-files-btn.component.d.ts +2 -3
- package/lib/components/editor/main-editor-block/main-editor-block.component.d.ts +2 -3
- package/lib/components/editor/visual-editor/visual-editor.component.d.ts +1 -2
- package/lib/index.d.ts +2 -2
- package/package.json +1 -1
|
@@ -79,14 +79,14 @@ export class VisualEditorComponent {
|
|
|
79
79
|
addTagClickHandler() {
|
|
80
80
|
let tagDescription = this.tags
|
|
81
81
|
.find(x => x.tag === this.selectedValue);
|
|
82
|
-
let attrs = {};
|
|
83
|
-
let innerHtml = "";
|
|
84
82
|
if (TextTags.allTextTags.includes(tagDescription.tag)) {
|
|
85
83
|
this.addTextTags();
|
|
86
84
|
this.startAddingText();
|
|
87
85
|
return;
|
|
88
86
|
}
|
|
89
|
-
|
|
87
|
+
let attrs = {};
|
|
88
|
+
let innerHtml = "";
|
|
89
|
+
if (tagDescription.tag == ExternalVideoTagDataConsts.TagName) {
|
|
90
90
|
attrs[ExternalVideoTagDataConsts.VideoTypeAttrName] = this.selectedVideoPlayer;
|
|
91
91
|
attrs[ExternalVideoTagDataConsts.UseResponsiveWrapperAttrName] = false;
|
|
92
92
|
attrs[ExternalVideoTagDataConsts.LinkAttrName] = this.selectedVideoPlayer === ExternalVideoSupportedTypes.Code ? '' :
|
|
@@ -148,10 +148,11 @@ export class VisualEditorComponent {
|
|
|
148
148
|
this.bodyTags = [...this.saveBodyTags];
|
|
149
149
|
let tagDescription = this.textTagOptions?.find(x => x.tag === this.textTag);
|
|
150
150
|
for (let i = 0; i < lines.length; i++) {
|
|
151
|
-
|
|
151
|
+
const line = lines[i];
|
|
152
|
+
if (line.length > 0) {
|
|
152
153
|
this.bodyTags.push({
|
|
153
154
|
tagDescription,
|
|
154
|
-
innerHtml:
|
|
155
|
+
innerHtml: line,
|
|
155
156
|
attributes: {
|
|
156
157
|
"h-align": `${this.alignment}`
|
|
157
158
|
},
|
|
@@ -161,7 +162,7 @@ export class VisualEditorComponent {
|
|
|
161
162
|
}
|
|
162
163
|
}
|
|
163
164
|
}
|
|
164
|
-
postFilesStartedEventHandler(
|
|
165
|
+
postFilesStartedEventHandler() {
|
|
165
166
|
this.loadingText = "Файлы загружаются на сервер";
|
|
166
167
|
this.isLoading = true;
|
|
167
168
|
}
|
|
@@ -185,6 +186,7 @@ export class VisualEditorComponent {
|
|
|
185
186
|
}
|
|
186
187
|
onTagRemovedHandler(index) {
|
|
187
188
|
this.bodyTags.splice(index, 1);
|
|
189
|
+
this.saveBodyTags = [...this.bodyTags];
|
|
188
190
|
this.recalculateHtml();
|
|
189
191
|
}
|
|
190
192
|
recalculateHtml() {
|
|
@@ -194,6 +196,7 @@ export class VisualEditorComponent {
|
|
|
194
196
|
}
|
|
195
197
|
recalculateBodyTags() {
|
|
196
198
|
this.bodyTags = BodyTagsExtensions.getBodyTags(this.html, this._options);
|
|
199
|
+
this.saveBodyTags = [...this.bodyTags];
|
|
197
200
|
}
|
|
198
201
|
selectTag(data) {
|
|
199
202
|
this.htmlRaw = '';
|
|
@@ -216,7 +219,7 @@ export class VisualEditorComponent {
|
|
|
216
219
|
return `align-${type}`;
|
|
217
220
|
}
|
|
218
221
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: VisualEditorComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: CrocoHtmlOptionsToken }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
219
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: VisualEditorComponent, isStandalone: true, selector: "croco-visual-editor", inputs: { showMarkUp: "showMarkUp", useHtmlRaw: "useHtmlRaw", html: "html" }, outputs: { html: "html", onHtmlChanged: "onHtmlChanged", rendered: "rendered" }, viewQueries: [{ propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }], ngImport: i0, template: "@if (isLoading) {\n <div>\n <div>\n <mat-spinner style=\"margin:0 auto;\"></mat-spinner>\n <div style=\"text-align: center;\">{{loadingText}}</div>\n </div>\n <div style=\"height: 10px;\"></div>\n </div>\n}\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <div class=\"w-100\" style=\"margin-bottom: 22px\">\n <div class=\"tags\">\n @for (tag of tags; track tag) {\n <span class=\"tag-item\" (click)=\"selectTag(tag)\" [class.active]=\"selectedValue === tag.tag\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: tag.tag}\">\n </ng-container>\n </span>\n {{tag.displayValue}}\n </span>\n }\n\n @if (useCustomWidgetsButton) {\n <span class=\"tag-item\" (click)=\"customWidgetsClickHandler()\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: 'custom-widget'}\">\n </ng-container>\n </span>\n \u0414\u0440\u0443\u0433\u0438\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044B\n </span>\n }\n \n </div>\n </div>\n </div>\n @if (selectedValue === ExternalVideoTagDataConsts.TagName) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0438\u0434\u0435\u043E\u043F\u043B\u0435\u0435\u0440</mat-label>\n <mat-select [(ngModel)]=\"selectedVideoPlayer\">\n @for (videoPlayer of videoPlayers; track videoPlayer.type) {\n <mat-option [value]=\"videoPlayer.type\">\n {{videoPlayer.displayValue}}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n @if (selectedVideoPlayer === ExternalVideoSupportedTypes.Code) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430</mat-label>\n <input\n matInput\n placeholder=\"\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430\"\n [(ngModel)]=\"htmlRaw\"\n >\n </mat-form-field>\n </div>\n }\n }\n @if (selectedValue === HtmlRawTagDataConsts.TagName) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\">\n <mat-label>\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430</mat-label>\n <textarea\n #autosize=\"cdkTextareaAutosize\"\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n placeholder=\"\u0422\u0435\u043A\u0441\u0442\"\n #textArea\n [(ngModel)]=\"htmlRaw\"\n ></textarea>\n </mat-form-field>\n </div>\n }\n @if (selectedValue === 'text') {\n <div style=\"display: flex; justify-content: space-between; flex-wrap: wrap\">\n <div style=\"margin-bottom: 22px; overflow-x: auto;\">\n <mat-button-toggle-group\n [(ngModel)]=\"textTag\"\n [hideSingleSelectionIndicator]=\"true\"\n >\n @for (option of textTagOptions; track option) {\n <mat-button-toggle value=\"{{ option.tag }}\">\n {{ option.displayValue }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n\n <div style=\"margin-bottom: 22px\">\n <mat-button-toggle-group\n [(ngModel)]=\"alignment\"\n [hideSingleSelectionIndicator]=\"true\"\n >\n @for (option of alignmentOptions; track option) {\n <mat-button-toggle value=\"{{ option.value }}\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"textAlignToggleIcons\"\n [ngTemplateOutletContext]=\"{icon: option.value}\">\n </ng-container>\n </span>\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0422\u0435\u043A\u0441\u0442</mat-label>\n <textarea\n #autosize=\"cdkTextareaAutosize\"\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n placeholder=\"\u0422\u0435\u043A\u0441\u0442\"\n #textArea\n [(ngModel)]=\"text\"\n ></textarea>\n </mat-form-field>\n }\n\n <div class=\"col-12\">\n <button (click)=\"addTagClickHandler()\" class=\"w-100\" mat-stroked-button>\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0442\u0435\u0433\n </button>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <croco-html-add-files-btn (filesTagsReady)=\"filesTagsReadyHandler($event)\"\n (postFilesStarted)=\"postFilesStartedEventHandler($event)\" class=\"w-100\">\n </croco-html-add-files-btn>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\">\n @for (tag of bodyTags; track tag; let i = $index) {\n <div cdkDrag>\n <mat-card style=\"margin: 2px;\" class=\"mat-card special\">\n <mat-card-content>\n <div class=\"d-flex justify-content-between\">\n <div class=\"example-handle\" cdkDragHandle>\n <svg width=\"24\" height=\"24\" class=\"move-icon\">\n <use [attr.xlink:href]=\"'move-icon' | spriteIconPath\"></use>\n </svg>\n </div>\n <div>\n <div class=\"badge\" [matTooltip]=\"tag.tagDescription.tag\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: tag.tagDescription.tag}\">\n </ng-container>\n </span>\n </div>\n </div>\n </div>\n <div style=\"height: 15px;\"></div>\n <croco-html-main-editor-block [tag]=\"tag\" (onTagSaved)=\"onTagSavedHandler($event)\"\n (onTagRemoved)=\"onTagRemovedHandler(i)\">\n </croco-html-main-editor-block>\n </mat-card-content>\n </mat-card>\n </div>\n }\n </div>\n</div>\n\n<ng-template #textAlignToggleIcons let-icon=\"icon\">\n <svg width=\"20\" height=\"20\">\n <use [attr.xlink:href]=\"setAlignButton(icon) | spriteIconPath\"></use>\n </svg>\n</ng-template>\n\n<ng-template #tagButtonIcons let-icon=\"icon\">\n @if (icon.indexOf('h') === 0 && icon.length === 2) {\n {{icon.toUpperCase()}}\n }\n @else {\n <svg width=\"20\" height=\"20\">\n <use [attr.xlink:href]=\"setTagButton(icon) | spriteIconPath\"></use>\n </svg>\n }\n</ng-template>", styles: [":host{--mat-standard-button-toggle-selected-state-background-color: #323E8B;--mat-standard-button-toggle-text-color: #323E8B;--mat-standard-button-toggle-selected-state-text-color: white;--mat-standard-button-toggle-height: 36px;--mat-standard-button-toggle-divider-color: #323E8B;--mdc-outlined-button-label-text-weight: 400;--mdc-outlined-button-label-text-color: #333333 !important;--mdc-outlined-button-container-shape: 30px;--mdc-outlined-button-outline-width: 2px;--mdc-outlined-button-container-height: 44px}:host ::ng-deep .mat-button-toggle-appearance-standard span.mat-button-toggle-label-content{padding:0 8px;min-width:36px}.text-align-icon,.mat-button-toggle .text-align-icon{color:#323e8b}.mat-button-toggle:hover,.mat-button-toggle:hover .text-align-icon{color:#747ebf}.mat-button-toggle-checked .text-align-icon{color:#fff}.example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:#fff;border-radius:4px;overflow:hidden}.example-box{padding:20px 10px;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;cursor:move;background:#fff;font-size:14px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.badge{width:44px;height:44px;border-radius:50%;border:1px solid #323E8B;display:flex;align-items:center;justify-content:center;color:#323e8b}.mat-card.special{border:1px solid #747EBF;border-radius:8px;box-shadow:none;margin:2px 2px 10px}.tags{display:flex;gap:10px;flex-wrap:wrap}.tag-item{display:flex;align-items:center;gap:5px;cursor:pointer;padding:10px 20px;border:1px solid #323E8B;border-radius:30px;background-color:#fff;color:#23262a;transition:.2s ease-in-out}.text-align-icon{color:#323e8b}.tag-item.active{background-color:#323e8b;color:#fff}.tag-item.active svg{color:#fff}.tag-item:hover{color:#747ebf;box-shadow:0 0 4px #747ebf}.tag-item:hover svg{color:#747ebf}@media (max-width: 760px){.tag-item:hover{color:inherit;box-shadow:none}.tag-item:hover svg{color:inherit}.tag-item:active{color:#747ebf;box-shadow:0 0 4px #747ebf}.tag-item:active svg{color:#747ebf}}.move-icon:hover{cursor:pointer;opacity:.7}.cdk-drag.cdk-drag-placeholder,.cdk-drag-preview{opacity:.5;transition:opacity .2s}.example-handle{color:#323e8b}\n"], dependencies: [{ kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { 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"] }, { kind: "directive", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: FormsModule }, { 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: AddFilesBtnComponent, selector: "croco-html-add-files-btn", outputs: ["postFilesStarted", "filesTagsReady"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: MainEditorBlockComponent, selector: "croco-html-main-editor-block", inputs: ["tag"], outputs: ["onTagSaved", "onTagRemoved"] }, { kind: "directive", type: MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: SpriteIconPathPipe, name: "spriteIconPath" }] }); }
|
|
222
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: VisualEditorComponent, isStandalone: true, selector: "croco-visual-editor", inputs: { showMarkUp: "showMarkUp", useHtmlRaw: "useHtmlRaw", html: "html" }, outputs: { html: "html", onHtmlChanged: "onHtmlChanged", rendered: "rendered" }, viewQueries: [{ propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }], ngImport: i0, template: "@if (isLoading) {\n <div>\n <div>\n <mat-spinner style=\"margin:0 auto;\"></mat-spinner>\n <div style=\"text-align: center;\">{{loadingText}}</div>\n </div>\n <div style=\"height: 10px;\"></div>\n </div>\n}\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <div class=\"w-100\" style=\"margin-bottom: 22px\">\n <div class=\"tags\">\n @for (tag of tags; track tag) {\n <span class=\"tag-item\" (click)=\"selectTag(tag)\" [class.active]=\"selectedValue === tag.tag\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: tag.tag}\">\n </ng-container>\n </span>\n {{tag.displayValue}}\n </span>\n }\n\n @if (useCustomWidgetsButton) {\n <span class=\"tag-item\" (click)=\"customWidgetsClickHandler()\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: 'custom-widget'}\">\n </ng-container>\n </span>\n \u0414\u0440\u0443\u0433\u0438\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044B\n </span>\n }\n \n </div>\n </div>\n </div>\n @if (selectedValue === ExternalVideoTagDataConsts.TagName) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0438\u0434\u0435\u043E\u043F\u043B\u0435\u0435\u0440</mat-label>\n <mat-select [(ngModel)]=\"selectedVideoPlayer\">\n @for (videoPlayer of videoPlayers; track videoPlayer.type) {\n <mat-option [value]=\"videoPlayer.type\">\n {{videoPlayer.displayValue}}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n @if (selectedVideoPlayer === ExternalVideoSupportedTypes.Code) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430</mat-label>\n <input\n matInput\n placeholder=\"\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430\"\n [(ngModel)]=\"htmlRaw\"\n >\n </mat-form-field>\n </div>\n }\n }\n @if (selectedValue === HtmlRawTagDataConsts.TagName) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\">\n <mat-label>\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430</mat-label>\n <textarea\n #autosize=\"cdkTextareaAutosize\"\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n placeholder=\"\u0422\u0435\u043A\u0441\u0442\"\n #textArea\n [(ngModel)]=\"htmlRaw\"\n ></textarea>\n </mat-form-field>\n </div>\n }\n @if (selectedValue === 'text') {\n <div style=\"display: flex; justify-content: space-between; flex-wrap: wrap\">\n <div style=\"margin-bottom: 22px; overflow-x: auto;\">\n <mat-button-toggle-group\n [(ngModel)]=\"textTag\"\n [hideSingleSelectionIndicator]=\"true\"\n >\n @for (option of textTagOptions; track option) {\n <mat-button-toggle value=\"{{ option.tag }}\">\n {{ option.displayValue }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n\n <div style=\"margin-bottom: 22px\">\n <mat-button-toggle-group\n [(ngModel)]=\"alignment\"\n [hideSingleSelectionIndicator]=\"true\"\n >\n @for (option of alignmentOptions; track option) {\n <mat-button-toggle value=\"{{ option.value }}\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"textAlignToggleIcons\"\n [ngTemplateOutletContext]=\"{icon: option.value}\">\n </ng-container>\n </span>\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0422\u0435\u043A\u0441\u0442</mat-label>\n <textarea\n #autosize=\"cdkTextareaAutosize\"\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n placeholder=\"\u0422\u0435\u043A\u0441\u0442\"\n #textArea\n [(ngModel)]=\"text\"\n ></textarea>\n </mat-form-field>\n }\n\n <div class=\"col-12\">\n <button (click)=\"addTagClickHandler()\" class=\"w-100\" mat-stroked-button>\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0442\u0435\u0433\n </button>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <croco-html-add-files-btn (filesTagsReady)=\"filesTagsReadyHandler($event)\"\n (postFilesStarted)=\"postFilesStartedEventHandler()\" class=\"w-100\">\n </croco-html-add-files-btn>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\">\n @for (tag of bodyTags; track tag; let i = $index) {\n <div cdkDrag>\n <mat-card style=\"margin: 2px;\" class=\"mat-card special\">\n <mat-card-content>\n <div class=\"d-flex justify-content-between\">\n <div class=\"example-handle\" cdkDragHandle>\n <svg width=\"24\" height=\"24\" class=\"move-icon\">\n <use [attr.xlink:href]=\"'move-icon' | spriteIconPath\"></use>\n </svg>\n </div>\n <div>\n <div class=\"badge\" [matTooltip]=\"tag.tagDescription.tag\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: tag.tagDescription.tag}\">\n </ng-container>\n </span>\n </div>\n </div>\n </div>\n <div style=\"height: 15px;\"></div>\n <croco-html-main-editor-block [tag]=\"tag\" (onTagSaved)=\"onTagSavedHandler($event)\"\n (onTagRemoved)=\"onTagRemovedHandler(i)\">\n </croco-html-main-editor-block>\n </mat-card-content>\n </mat-card>\n </div>\n }\n </div>\n</div>\n\n<ng-template #textAlignToggleIcons let-icon=\"icon\">\n <svg width=\"20\" height=\"20\">\n <use [attr.xlink:href]=\"setAlignButton(icon) | spriteIconPath\"></use>\n </svg>\n</ng-template>\n\n<ng-template #tagButtonIcons let-icon=\"icon\">\n @if (icon.indexOf('h') === 0 && icon.length === 2) {\n {{icon.toUpperCase()}}\n }\n @else {\n <svg width=\"20\" height=\"20\">\n <use [attr.xlink:href]=\"setTagButton(icon) | spriteIconPath\"></use>\n </svg>\n }\n</ng-template>", styles: [":host{--mat-standard-button-toggle-selected-state-background-color: #323E8B;--mat-standard-button-toggle-text-color: #323E8B;--mat-standard-button-toggle-selected-state-text-color: white;--mat-standard-button-toggle-height: 36px;--mat-standard-button-toggle-divider-color: #323E8B;--mdc-outlined-button-label-text-weight: 400;--mdc-outlined-button-label-text-color: #333333 !important;--mdc-outlined-button-container-shape: 30px;--mdc-outlined-button-outline-width: 2px;--mdc-outlined-button-container-height: 44px}:host ::ng-deep .mat-button-toggle-appearance-standard span.mat-button-toggle-label-content{padding:0 8px;min-width:36px}.text-align-icon,.mat-button-toggle .text-align-icon{color:#323e8b}.mat-button-toggle:hover,.mat-button-toggle:hover .text-align-icon{color:#747ebf}.mat-button-toggle-checked .text-align-icon{color:#fff}.example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:#fff;border-radius:4px;overflow:hidden}.example-box{padding:20px 10px;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;cursor:move;background:#fff;font-size:14px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.badge{width:44px;height:44px;border-radius:50%;border:1px solid #323E8B;display:flex;align-items:center;justify-content:center;color:#323e8b}.mat-card.special{border:1px solid #747EBF;border-radius:8px;box-shadow:none;margin:2px 2px 10px}.tags{display:flex;gap:10px;flex-wrap:wrap}.tag-item{display:flex;align-items:center;gap:5px;cursor:pointer;padding:10px 20px;border:1px solid #323E8B;border-radius:30px;background-color:#fff;color:#23262a;transition:.2s ease-in-out}.text-align-icon{color:#323e8b}.tag-item.active{background-color:#323e8b;color:#fff}.tag-item.active svg{color:#fff}.tag-item:hover{color:#747ebf;box-shadow:0 0 4px #747ebf}.tag-item:hover svg{color:#747ebf}@media (max-width: 760px){.tag-item:hover{color:inherit;box-shadow:none}.tag-item:hover svg{color:inherit}.tag-item:active{color:#747ebf;box-shadow:0 0 4px #747ebf}.tag-item:active svg{color:#747ebf}}.move-icon:hover{cursor:pointer;opacity:.7}.cdk-drag.cdk-drag-placeholder,.cdk-drag-preview{opacity:.5;transition:opacity .2s}.example-handle{color:#323e8b}\n"], dependencies: [{ kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { 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"] }, { kind: "directive", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: FormsModule }, { 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: AddFilesBtnComponent, selector: "croco-html-add-files-btn", outputs: ["postFilesStarted", "filesTagsReady"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: MainEditorBlockComponent, selector: "croco-html-main-editor-block", inputs: ["tag"], outputs: ["onTagSaved", "onTagRemoved"] }, { kind: "directive", type: MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: SpriteIconPathPipe, name: "spriteIconPath" }] }); }
|
|
220
223
|
}
|
|
221
224
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: VisualEditorComponent, decorators: [{
|
|
222
225
|
type: Component,
|
|
@@ -242,7 +245,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
242
245
|
NgTemplateOutlet,
|
|
243
246
|
MatTooltip,
|
|
244
247
|
SpriteIconPathPipe,
|
|
245
|
-
], template: "@if (isLoading) {\n <div>\n <div>\n <mat-spinner style=\"margin:0 auto;\"></mat-spinner>\n <div style=\"text-align: center;\">{{loadingText}}</div>\n </div>\n <div style=\"height: 10px;\"></div>\n </div>\n}\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <div class=\"w-100\" style=\"margin-bottom: 22px\">\n <div class=\"tags\">\n @for (tag of tags; track tag) {\n <span class=\"tag-item\" (click)=\"selectTag(tag)\" [class.active]=\"selectedValue === tag.tag\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: tag.tag}\">\n </ng-container>\n </span>\n {{tag.displayValue}}\n </span>\n }\n\n @if (useCustomWidgetsButton) {\n <span class=\"tag-item\" (click)=\"customWidgetsClickHandler()\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: 'custom-widget'}\">\n </ng-container>\n </span>\n \u0414\u0440\u0443\u0433\u0438\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044B\n </span>\n }\n \n </div>\n </div>\n </div>\n @if (selectedValue === ExternalVideoTagDataConsts.TagName) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0438\u0434\u0435\u043E\u043F\u043B\u0435\u0435\u0440</mat-label>\n <mat-select [(ngModel)]=\"selectedVideoPlayer\">\n @for (videoPlayer of videoPlayers; track videoPlayer.type) {\n <mat-option [value]=\"videoPlayer.type\">\n {{videoPlayer.displayValue}}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n @if (selectedVideoPlayer === ExternalVideoSupportedTypes.Code) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430</mat-label>\n <input\n matInput\n placeholder=\"\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430\"\n [(ngModel)]=\"htmlRaw\"\n >\n </mat-form-field>\n </div>\n }\n }\n @if (selectedValue === HtmlRawTagDataConsts.TagName) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\">\n <mat-label>\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430</mat-label>\n <textarea\n #autosize=\"cdkTextareaAutosize\"\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n placeholder=\"\u0422\u0435\u043A\u0441\u0442\"\n #textArea\n [(ngModel)]=\"htmlRaw\"\n ></textarea>\n </mat-form-field>\n </div>\n }\n @if (selectedValue === 'text') {\n <div style=\"display: flex; justify-content: space-between; flex-wrap: wrap\">\n <div style=\"margin-bottom: 22px; overflow-x: auto;\">\n <mat-button-toggle-group\n [(ngModel)]=\"textTag\"\n [hideSingleSelectionIndicator]=\"true\"\n >\n @for (option of textTagOptions; track option) {\n <mat-button-toggle value=\"{{ option.tag }}\">\n {{ option.displayValue }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n\n <div style=\"margin-bottom: 22px\">\n <mat-button-toggle-group\n [(ngModel)]=\"alignment\"\n [hideSingleSelectionIndicator]=\"true\"\n >\n @for (option of alignmentOptions; track option) {\n <mat-button-toggle value=\"{{ option.value }}\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"textAlignToggleIcons\"\n [ngTemplateOutletContext]=\"{icon: option.value}\">\n </ng-container>\n </span>\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0422\u0435\u043A\u0441\u0442</mat-label>\n <textarea\n #autosize=\"cdkTextareaAutosize\"\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n placeholder=\"\u0422\u0435\u043A\u0441\u0442\"\n #textArea\n [(ngModel)]=\"text\"\n ></textarea>\n </mat-form-field>\n }\n\n <div class=\"col-12\">\n <button (click)=\"addTagClickHandler()\" class=\"w-100\" mat-stroked-button>\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0442\u0435\u0433\n </button>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <croco-html-add-files-btn (filesTagsReady)=\"filesTagsReadyHandler($event)\"\n (postFilesStarted)=\"postFilesStartedEventHandler($event)\" class=\"w-100\">\n </croco-html-add-files-btn>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\">\n @for (tag of bodyTags; track tag; let i = $index) {\n <div cdkDrag>\n <mat-card style=\"margin: 2px;\" class=\"mat-card special\">\n <mat-card-content>\n <div class=\"d-flex justify-content-between\">\n <div class=\"example-handle\" cdkDragHandle>\n <svg width=\"24\" height=\"24\" class=\"move-icon\">\n <use [attr.xlink:href]=\"'move-icon' | spriteIconPath\"></use>\n </svg>\n </div>\n <div>\n <div class=\"badge\" [matTooltip]=\"tag.tagDescription.tag\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: tag.tagDescription.tag}\">\n </ng-container>\n </span>\n </div>\n </div>\n </div>\n <div style=\"height: 15px;\"></div>\n <croco-html-main-editor-block [tag]=\"tag\" (onTagSaved)=\"onTagSavedHandler($event)\"\n (onTagRemoved)=\"onTagRemovedHandler(i)\">\n </croco-html-main-editor-block>\n </mat-card-content>\n </mat-card>\n </div>\n }\n </div>\n</div>\n\n<ng-template #textAlignToggleIcons let-icon=\"icon\">\n <svg width=\"20\" height=\"20\">\n <use [attr.xlink:href]=\"setAlignButton(icon) | spriteIconPath\"></use>\n </svg>\n</ng-template>\n\n<ng-template #tagButtonIcons let-icon=\"icon\">\n @if (icon.indexOf('h') === 0 && icon.length === 2) {\n {{icon.toUpperCase()}}\n }\n @else {\n <svg width=\"20\" height=\"20\">\n <use [attr.xlink:href]=\"setTagButton(icon) | spriteIconPath\"></use>\n </svg>\n }\n</ng-template>", styles: [":host{--mat-standard-button-toggle-selected-state-background-color: #323E8B;--mat-standard-button-toggle-text-color: #323E8B;--mat-standard-button-toggle-selected-state-text-color: white;--mat-standard-button-toggle-height: 36px;--mat-standard-button-toggle-divider-color: #323E8B;--mdc-outlined-button-label-text-weight: 400;--mdc-outlined-button-label-text-color: #333333 !important;--mdc-outlined-button-container-shape: 30px;--mdc-outlined-button-outline-width: 2px;--mdc-outlined-button-container-height: 44px}:host ::ng-deep .mat-button-toggle-appearance-standard span.mat-button-toggle-label-content{padding:0 8px;min-width:36px}.text-align-icon,.mat-button-toggle .text-align-icon{color:#323e8b}.mat-button-toggle:hover,.mat-button-toggle:hover .text-align-icon{color:#747ebf}.mat-button-toggle-checked .text-align-icon{color:#fff}.example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:#fff;border-radius:4px;overflow:hidden}.example-box{padding:20px 10px;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;cursor:move;background:#fff;font-size:14px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.badge{width:44px;height:44px;border-radius:50%;border:1px solid #323E8B;display:flex;align-items:center;justify-content:center;color:#323e8b}.mat-card.special{border:1px solid #747EBF;border-radius:8px;box-shadow:none;margin:2px 2px 10px}.tags{display:flex;gap:10px;flex-wrap:wrap}.tag-item{display:flex;align-items:center;gap:5px;cursor:pointer;padding:10px 20px;border:1px solid #323E8B;border-radius:30px;background-color:#fff;color:#23262a;transition:.2s ease-in-out}.text-align-icon{color:#323e8b}.tag-item.active{background-color:#323e8b;color:#fff}.tag-item.active svg{color:#fff}.tag-item:hover{color:#747ebf;box-shadow:0 0 4px #747ebf}.tag-item:hover svg{color:#747ebf}@media (max-width: 760px){.tag-item:hover{color:inherit;box-shadow:none}.tag-item:hover svg{color:inherit}.tag-item:active{color:#747ebf;box-shadow:0 0 4px #747ebf}.tag-item:active svg{color:#747ebf}}.move-icon:hover{cursor:pointer;opacity:.7}.cdk-drag.cdk-drag-placeholder,.cdk-drag-preview{opacity:.5;transition:opacity .2s}.example-handle{color:#323e8b}\n"] }]
|
|
248
|
+
], template: "@if (isLoading) {\n <div>\n <div>\n <mat-spinner style=\"margin:0 auto;\"></mat-spinner>\n <div style=\"text-align: center;\">{{loadingText}}</div>\n </div>\n <div style=\"height: 10px;\"></div>\n </div>\n}\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <div class=\"w-100\" style=\"margin-bottom: 22px\">\n <div class=\"tags\">\n @for (tag of tags; track tag) {\n <span class=\"tag-item\" (click)=\"selectTag(tag)\" [class.active]=\"selectedValue === tag.tag\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: tag.tag}\">\n </ng-container>\n </span>\n {{tag.displayValue}}\n </span>\n }\n\n @if (useCustomWidgetsButton) {\n <span class=\"tag-item\" (click)=\"customWidgetsClickHandler()\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: 'custom-widget'}\">\n </ng-container>\n </span>\n \u0414\u0440\u0443\u0433\u0438\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044B\n </span>\n }\n \n </div>\n </div>\n </div>\n @if (selectedValue === ExternalVideoTagDataConsts.TagName) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0438\u0434\u0435\u043E\u043F\u043B\u0435\u0435\u0440</mat-label>\n <mat-select [(ngModel)]=\"selectedVideoPlayer\">\n @for (videoPlayer of videoPlayers; track videoPlayer.type) {\n <mat-option [value]=\"videoPlayer.type\">\n {{videoPlayer.displayValue}}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n @if (selectedVideoPlayer === ExternalVideoSupportedTypes.Code) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430</mat-label>\n <input\n matInput\n placeholder=\"\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430\"\n [(ngModel)]=\"htmlRaw\"\n >\n </mat-form-field>\n </div>\n }\n }\n @if (selectedValue === HtmlRawTagDataConsts.TagName) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\">\n <mat-label>\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430</mat-label>\n <textarea\n #autosize=\"cdkTextareaAutosize\"\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n placeholder=\"\u0422\u0435\u043A\u0441\u0442\"\n #textArea\n [(ngModel)]=\"htmlRaw\"\n ></textarea>\n </mat-form-field>\n </div>\n }\n @if (selectedValue === 'text') {\n <div style=\"display: flex; justify-content: space-between; flex-wrap: wrap\">\n <div style=\"margin-bottom: 22px; overflow-x: auto;\">\n <mat-button-toggle-group\n [(ngModel)]=\"textTag\"\n [hideSingleSelectionIndicator]=\"true\"\n >\n @for (option of textTagOptions; track option) {\n <mat-button-toggle value=\"{{ option.tag }}\">\n {{ option.displayValue }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n\n <div style=\"margin-bottom: 22px\">\n <mat-button-toggle-group\n [(ngModel)]=\"alignment\"\n [hideSingleSelectionIndicator]=\"true\"\n >\n @for (option of alignmentOptions; track option) {\n <mat-button-toggle value=\"{{ option.value }}\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"textAlignToggleIcons\"\n [ngTemplateOutletContext]=\"{icon: option.value}\">\n </ng-container>\n </span>\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0422\u0435\u043A\u0441\u0442</mat-label>\n <textarea\n #autosize=\"cdkTextareaAutosize\"\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n placeholder=\"\u0422\u0435\u043A\u0441\u0442\"\n #textArea\n [(ngModel)]=\"text\"\n ></textarea>\n </mat-form-field>\n }\n\n <div class=\"col-12\">\n <button (click)=\"addTagClickHandler()\" class=\"w-100\" mat-stroked-button>\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0442\u0435\u0433\n </button>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <croco-html-add-files-btn (filesTagsReady)=\"filesTagsReadyHandler($event)\"\n (postFilesStarted)=\"postFilesStartedEventHandler()\" class=\"w-100\">\n </croco-html-add-files-btn>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\">\n @for (tag of bodyTags; track tag; let i = $index) {\n <div cdkDrag>\n <mat-card style=\"margin: 2px;\" class=\"mat-card special\">\n <mat-card-content>\n <div class=\"d-flex justify-content-between\">\n <div class=\"example-handle\" cdkDragHandle>\n <svg width=\"24\" height=\"24\" class=\"move-icon\">\n <use [attr.xlink:href]=\"'move-icon' | spriteIconPath\"></use>\n </svg>\n </div>\n <div>\n <div class=\"badge\" [matTooltip]=\"tag.tagDescription.tag\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: tag.tagDescription.tag}\">\n </ng-container>\n </span>\n </div>\n </div>\n </div>\n <div style=\"height: 15px;\"></div>\n <croco-html-main-editor-block [tag]=\"tag\" (onTagSaved)=\"onTagSavedHandler($event)\"\n (onTagRemoved)=\"onTagRemovedHandler(i)\">\n </croco-html-main-editor-block>\n </mat-card-content>\n </mat-card>\n </div>\n }\n </div>\n</div>\n\n<ng-template #textAlignToggleIcons let-icon=\"icon\">\n <svg width=\"20\" height=\"20\">\n <use [attr.xlink:href]=\"setAlignButton(icon) | spriteIconPath\"></use>\n </svg>\n</ng-template>\n\n<ng-template #tagButtonIcons let-icon=\"icon\">\n @if (icon.indexOf('h') === 0 && icon.length === 2) {\n {{icon.toUpperCase()}}\n }\n @else {\n <svg width=\"20\" height=\"20\">\n <use [attr.xlink:href]=\"setTagButton(icon) | spriteIconPath\"></use>\n </svg>\n }\n</ng-template>", styles: [":host{--mat-standard-button-toggle-selected-state-background-color: #323E8B;--mat-standard-button-toggle-text-color: #323E8B;--mat-standard-button-toggle-selected-state-text-color: white;--mat-standard-button-toggle-height: 36px;--mat-standard-button-toggle-divider-color: #323E8B;--mdc-outlined-button-label-text-weight: 400;--mdc-outlined-button-label-text-color: #333333 !important;--mdc-outlined-button-container-shape: 30px;--mdc-outlined-button-outline-width: 2px;--mdc-outlined-button-container-height: 44px}:host ::ng-deep .mat-button-toggle-appearance-standard span.mat-button-toggle-label-content{padding:0 8px;min-width:36px}.text-align-icon,.mat-button-toggle .text-align-icon{color:#323e8b}.mat-button-toggle:hover,.mat-button-toggle:hover .text-align-icon{color:#747ebf}.mat-button-toggle-checked .text-align-icon{color:#fff}.example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:#fff;border-radius:4px;overflow:hidden}.example-box{padding:20px 10px;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;cursor:move;background:#fff;font-size:14px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.badge{width:44px;height:44px;border-radius:50%;border:1px solid #323E8B;display:flex;align-items:center;justify-content:center;color:#323e8b}.mat-card.special{border:1px solid #747EBF;border-radius:8px;box-shadow:none;margin:2px 2px 10px}.tags{display:flex;gap:10px;flex-wrap:wrap}.tag-item{display:flex;align-items:center;gap:5px;cursor:pointer;padding:10px 20px;border:1px solid #323E8B;border-radius:30px;background-color:#fff;color:#23262a;transition:.2s ease-in-out}.text-align-icon{color:#323e8b}.tag-item.active{background-color:#323e8b;color:#fff}.tag-item.active svg{color:#fff}.tag-item:hover{color:#747ebf;box-shadow:0 0 4px #747ebf}.tag-item:hover svg{color:#747ebf}@media (max-width: 760px){.tag-item:hover{color:inherit;box-shadow:none}.tag-item:hover svg{color:inherit}.tag-item:active{color:#747ebf;box-shadow:0 0 4px #747ebf}.tag-item:active svg{color:#747ebf}}.move-icon:hover{cursor:pointer;opacity:.7}.cdk-drag.cdk-drag-placeholder,.cdk-drag-preview{opacity:.5;transition:opacity .2s}.example-handle{color:#323e8b}\n"] }]
|
|
246
249
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
247
250
|
type: Inject,
|
|
248
251
|
args: [CrocoHtmlOptionsToken]
|
|
@@ -262,4 +265,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
262
265
|
}], rendered: [{
|
|
263
266
|
type: Output
|
|
264
267
|
}] } });
|
|
265
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcm9jby1odG1sL3NyYy9saWIvY29tcG9uZW50cy9lZGl0b3IvdmlzdWFsLWVkaXRvci92aXN1YWwtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci92aXN1YWwtZWRpdG9yL3Zpc3VhbC1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGVBQWUsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNHLE9BQU8sRUFHTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQ3hDLDJCQUEyQixFQUMzQixRQUFRLEVBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsMEJBQTBCLEdBQzNCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN4RixPQUFPLEVBQUUs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VCxZQUFZLDRMQUNaLFFBQVEsc0RBQ1IsUUFBUSxpVUFDUixtQkFBbUIsd01BQ25CLFdBQVcsK21CQUNYLFNBQVMsd2VBQ1QsU0FBUyxxSkFDVCxvQkFBb0Isc0hBQ3BCLFdBQVcsK2RBQ1gsT0FBTyx3YkFDUCxhQUFhLCtGQUNiLHdCQUF3QixtSUFDeEIsb0JBQW9CLDJSQUNwQixlQUFlLHNQQUNmLGdCQUFnQixvSkFDaEIsVUFBVSw0UUFDVixrQkFBa0I7OzJGQUdULHFCQUFxQjtrQkE3QmpDLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CLElBQUksV0FDUDt3QkFDUCxrQkFBa0I7d0JBQ2xCLE9BQU87d0JBQ1AsY0FBYzt3QkFDZCxTQUFTO3dCQUNULFlBQVk7d0JBQ1osUUFBUTt3QkFDUixRQUFRO3dCQUNSLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxTQUFTO3dCQUNULFNBQVM7d0JBQ1Qsb0JBQW9CO3dCQUNwQixXQUFXO3dCQUNYLE9BQU87d0JBQ1AsYUFBYTt3QkFDYix3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLFVBQVU7d0JBQ1Ysa0JBQWtCO3FCQUNuQjs7MEJBNkRFLE1BQU07MkJBQUMscUJBQXFCO3lDQTFEUixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBYXJCLFVBQVU7c0JBRFQsS0FBSztnQkFhTixVQUFVO3NCQURULEtBQUs7Z0JBS04sSUFBSTtzQkFGSCxLQUFLOztzQkFDTCxNQUFNO2dCQWtCUCxhQUFhO3NCQURaLE1BQU07Z0JBSVAsUUFBUTtzQkFEUCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSwgQ2RrRHJvcExpc3QsIENka0RyYWcsIENka0RyYWdIYW5kbGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJvZHlUYWdzRXh0ZW5zaW9ucywgRXh0ZXJuYWxWaWRlb1BsYXllcnMsXG4gIEV4dGVybmFsVmlkZW9TdXBwb3J0ZWRUeXBlcyxcbiAgVGV4dFRhZ3Ncbn0gZnJvbSAnLi4vLi4vLi4vZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzIH0gZnJvbSAnLi4vLi4vLi4vZXh0ZW5zaW9ucyc7XG5pbXBvcnQge1xuICBFeHRlcm5hbFZpZGVvVGFnRGF0YUNvbnN0cyxcbn0gZnJvbSAnLi4vLi4vLi4vZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBYbWxFeHRlbnNpb25zIH0gZnJvbSAnLi4vLi4vLi4vZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBUYWdJdGVtLCBIdG1sQm9keVRhZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9tb2RlbHMnO1xuaW1wb3J0IHsgRmlsZVBvc3RpbmdTdGFydGVkIH0gZnJvbSAnLi4vLi4vdXBsb2FkLWZpbGVzLWJ0bi91cGxvYWQtZmlsZXMtYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWZhdWx0VGFncyB9IGZyb20gJy4vRGVmYXVsdFRhZ3MnO1xuaW1wb3J0IHsgQWxpZ25tZW50c0RhdGEsIEVBbGlnbm1lbnRzIH0gZnJvbSBcIi4vRGVmYXVsdEFsaWdtZW50c1wiO1xuaW1wb3J0IHsgQ3JvY29IdG1sT3B0aW9uc1Rva2VuIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RzJztcbmltcG9ydCB7IERvd25sb2FkQnV0dG9uVGFnRGF0YUNvbnN0cyB9IGZyb20gXCIuLi8uLi8uLi9leHRlbnNpb25zL0Rvd25sb2FkQnV0dG9uTWV0aG9kc1wiO1xuaW1wb3J0IHsgTWFpbkVkaXRvckJsb2NrQ29tcG9uZW50IH0gZnJvbSAnLi4vbWFpbi1lZGl0b3ItYmxvY2svbWFpbi1lZGl0b3ItYmxvY2suY29tcG9uZW50JztcbmltcG9ydCB7IEFkZEZpbGVzQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWRkLWZpbGVzLWJ0bi9hZGQtZmlsZXMtYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdFNlbGVjdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENka1RleHRhcmVhQXV0b3NpemUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGV4dC1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCwgTWF0TGFiZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDYXJkLCBNYXRDYXJkQ29udGVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBCdXR0b25UYWdEYXRhQ29uc3RzIH0gZnJvbSBcIi4uLy4uLy4uL2V4dGVuc2lvbnMvQnV0dG9uTWV0aG9kc1wiO1xuaW1wb3J0IHsgQ3JvY29IdG1sT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL29wdGlvbnMnO1xuaW1wb3J0IHsgQ3VzdG9tV2lkZ2V0VGFnRGF0YUNvbnN0cyB9IGZyb20gXCIuLi8uLi8uLi9leHRlbnNpb25zL0N1c3RvbVdpZGdldE1ldGhvZHNcIjtcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZSwgTWF0QnV0dG9uVG9nZ2xlR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZVwiO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IEh0bWxSYXdUYWdEYXRhQ29uc3RzIH0gZnJvbSBcIi4uLy4uLy4uL2V4dGVuc2lvbnMvSHRtbFJhd1RhZ0RhdGFDb25zdHNcIjtcbmltcG9ydCB7IE1hdFRvb2x0aXAgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcFwiO1xuaW1wb3J0IHsgU3ByaXRlSWNvblBhdGhQaXBlIH0gZnJvbSBcIi4uLy4uLy4uL3BpcGVzL3Nwcml0ZS1pY29uLXBhdGgucGlwZVwiO1xuaW1wb3J0IHsgU3ByaXRlSWRzVHlwZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9zcHJpdGVzLWlkcy50eXBlXCI7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0TGlua1lvdVR1YmUgPSBcImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLzRDdFNBbkpEZnNJP3NpPXNjeUJOSmEwSHMydDVhTEVcIjtcbmV4cG9ydCBjb25zdCBkZWZhdWx0TGlua1ZrID0gXCJodHRwczovL3ZrLmNvbS92aWRlb19leHQucGhwP29pZD0tMjI4MjIzMDUmaWQ9NDU2MjQxODY0JmhkPTJcIjtcbmV4cG9ydCBjb25zdCBkZWZhdWx0TGlua0ZvckRvd25sb2FkID0gXCJodHRwczovL3N0b3JhZ2UueWFuZGV4Y2xvdWQubmV0L21lZ2EtYWNhZGVteS9wcmVzZW50YXRpb24ucGRmXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nyb2NvLXZpc3VhbC1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlzdWFsLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Zpc3VhbC1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdFByb2dyZXNzU3Bpbm5lcixcbiAgICBNYXRDYXJkLFxuICAgIE1hdENhcmRDb250ZW50LFxuICAgIE1hdEJ1dHRvbixcbiAgICBNYXRGb3JtRmllbGQsXG4gICAgTWF0TGFiZWwsXG4gICAgTWF0SW5wdXQsXG4gICAgQ2RrVGV4dGFyZWFBdXRvc2l6ZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRTZWxlY3QsXG4gICAgTWF0T3B0aW9uLFxuICAgIEFkZEZpbGVzQnRuQ29tcG9uZW50LFxuICAgIENka0Ryb3BMaXN0LFxuICAgIENka0RyYWcsXG4gICAgQ2RrRHJhZ0hhbmRsZSxcbiAgICBNYWluRWRpdG9yQmxvY2tDb21wb25lbnQsXG4gICAgTWF0QnV0dG9uVG9nZ2xlR3JvdXAsXG4gICAgTWF0QnV0dG9uVG9nZ2xlLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgTWF0VG9vbHRpcCxcbiAgICBTcHJpdGVJY29uUGF0aFBpcGUsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVmlzdWFsRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgndGV4dEFyZWEnKSB0ZXh0QXJlYTogRWxlbWVudFJlZjtcblxuICBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgbG9hZGluZ1RleHQgPSBcItCY0LTRkdGCINC30LDQs9GA0YPQt9C60LBcIjtcbiAgdGV4dCA9ICcnO1xuICBodG1sUmF3ID0gJyc7XG5cbiAgYWxpZ25tZW50ID0gRUFsaWdubWVudHMuTGVmdDtcbiAgdGV4dFRhZyA9IERlZmF1bHRUYWdzLnRleHRUYWdzWzBdLnRhZztcbiAgdGV4dFRhZ09wdGlvbnMgPSBEZWZhdWx0VGFncy50ZXh0VGFnc1xuICBhbGlnbm1lbnRPcHRpb25zID0gQWxpZ25tZW50c0RhdGFcblxuICBASW5wdXQoKVxuICBzaG93TWFya1VwID0gdHJ1ZTtcblxuICB0YWdzOiBUYWdJdGVtW10gPSBbXTtcbiAgdmlkZW9QbGF5ZXJzID0gRXh0ZXJuYWxWaWRlb1BsYXllcnNcbiAgc2VsZWN0ZWRWYWx1ZTogc3RyaW5nID0gbnVsbDtcbiAgc2VsZWN0ZWRWaWRlb1BsYXllcjogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBFeHRlcm5hbFZpZGVvVGFnRGF0YUNvbnN0cyA9IEV4dGVybmFsVmlkZW9UYWdEYXRhQ29uc3RzO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgSHRtbFJhd1RhZ0RhdGFDb25zdHMgPSBIdG1sUmF3VGFnRGF0YUNvbnN0cztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEV4dGVybmFsVmlkZW9TdXBwb3J0ZWRUeXBlcyA9IEV4dGVybmFsVmlkZW9TdXBwb3J0ZWRUeXBlcztcblxuICBASW5wdXQoKVxuICB1c2VIdG1sUmF3ID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBAT3V0cHV0KClcbiAgaHRtbDogc3RyaW5nID0gXCJcIjtcblxuICBpc0h0bWxTZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHRtbC5zdGFydHNXaXRoKFwiPGJvZHk+XCIpO1xuICB9XG5cbiAgY2xlYXJIdG1sKCkge1xuICAgIHRoaXMuaHRtbCA9IFwiXCI7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZUJvZHlUYWdzKCk7XG4gIH1cblxuICBnZXRIdG1sKCkge1xuICAgIHRoaXMucmVjYWxjdWxhdGVIdG1sKCk7XG4gICAgcmV0dXJuIHRoaXMuaHRtbDtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBvbkh0bWxDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJlbmRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGJvZHlUYWdzOiBIdG1sQm9keVRhZ1tdID0gW107XG4gIHNhdmVCb2R5VGFnczogSHRtbEJvZHlUYWdbXSA9IFtdO1xuXG4gIHVzZUN1c3RvbVdpZGdldHNCdXR0b24gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChDcm9jb0h0bWxPcHRpb25zVG9rZW4pIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnM6IENyb2NvSHRtbE9wdGlvbnMpIHsgXG5cbiAgICB0aGlzLnVzZUN1c3RvbVdpZGdldHNCdXR0b24gPSB0aGlzLl9vcHRpb25zLnVzZUN1c3RvbVdpZGdldHNCdXR0b247XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlZC5lbWl0KHRydWUpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuX2NkcmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGFkZFRhZ0NsaWNrSGFuZGxlcigpOiB2b2lkIHtcbiAgICBsZXQgdGFnRGVzY3JpcHRpb24gPSB0aGlzLnRhZ3NcbiAgICAgIC5maW5kKHggPT4geC50YWcgPT09IHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG5cbiAgICBsZXQgYXR0cnMgPSB7fTtcbiAgICBsZXQgaW5uZXJIdG1sID0gXCJcIjtcblxuICAgIGlmIChUZXh0VGFncy5hbGxUZXh0VGFncy5pbmNsdWRlcyh0YWdEZXNjcmlwdGlvbi50YWcpKSB7XG4gICAgICB0aGlzLmFkZFRleHRUYWdzKCk7XG4gICAgICB0aGlzLnN0YXJ0QWRkaW5nVGV4dCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbHNlIGlmICh0YWdEZXNjcmlwdGlvbi50YWcgPT0gRXh0ZXJuYWxWaWRlb1RhZ0RhdGFDb25zdHMuVGFnTmFtZSkge1xuICAgICAgYXR0cnNbRXh0ZXJuYWxWaWRlb1RhZ0RhdGFDb25zdHMuVmlkZW9UeXBlQXR0ck5hbWVdID0gdGhpcy5zZWxlY3RlZFZpZGVvUGxheWVyO1xuICAgICAgYXR0cnNbRXh0ZXJuYWxWaWRlb1RhZ0RhdGFDb25zdHMuVXNlUmVzcG9uc2l2ZVdyYXBwZXJBdHRyTmFtZV0gPSBmYWxzZTtcbiAgICAgIGF0dHJzW0V4dGVybmFsVmlkZW9UYWdEYXRhQ29uc3RzLkxpbmtBdHRyTmFtZV0gPSB0aGlzLnNlbGVjdGVkVmlkZW9QbGF5ZXIgPT09IEV4dGVybmFsVmlkZW9TdXBwb3J0ZWRUeXBlcy5Db2RlID8gJycgOlxuICAgICAgICB0aGlzLnNlbGVjdGVkVmlkZW9QbGF5ZXIgPT09IEV4dGVybmFsVmlkZW9TdXBwb3J0ZWRUeXBlcy5Wa1ZpZGVvXG4gICAgICAgICAgPyBkZWZhdWx0TGlua1ZrXG4gICAgICAgICAgOiBkZWZhdWx0TGlua1lvdVR1YmU7XG5cbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmlkZW9QbGF5ZXIgPT09IEV4dGVybmFsVmlkZW9TdXBwb3J0ZWRUeXBlcy5Db2RlKSB7XG4gICAgICAgIGlubmVySHRtbCA9IHRoaXMuaHRtbFJhd1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh0YWdEZXNjcmlwdGlvbi50YWcgPT0gRmlsZUltYWdlVGFnRGF0YUNvbnN0cy5UYWdOYW1lKSB7XG4gICAgICBhdHRyc1tGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzLlNjcmVlbk1lZGlhUmVxdWVzdF0gPSBGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzLkRlZmF1bHRWYWx1ZUZvckZpbGVJbWFnZTtcbiAgICB9XG4gICAgZWxzZSBpZiAodGFnRGVzY3JpcHRpb24udGFnID09IERvd25sb2FkQnV0dG9uVGFnRGF0YUNvbnN0cy5UYWdOYW1lKSB7XG4gICAgICBhdHRyc1tEb3dubG9hZEJ1dHRvblRhZ0RhdGFDb25zdHMuTGlua0F0dHJOYW1lXSA9IGRlZmF1bHRMaW5rRm9yRG93bmxvYWRcbiAgICAgIGF0dHJzW0Rvd25sb2FkQnV0dG9uVGFnRGF0YUNvbnN0cy5UaXRsZUF0dHJOYW1lXSA9ICfQodC60LDRh9Cw0YLRjCdcbiAgICB9XG4gICAgZWxzZSBpZiAodGFnRGVzY3JpcHRpb24udGFnID09IEJ1dHRvblRhZ0RhdGFDb25zdHMuVGFnTmFtZSkge1xuICAgICAgYXR0cnNbQnV0dG9uVGFnRGF0YUNvbnN0cy5DbGlja0F0dHJOYW1lXSA9ICcnXG4gICAgICBhdHRyc1tCdXR0b25UYWdEYXRhQ29uc3RzLlR5cGVBdHRyTmFtZV0gPSAnYnV0dG9uJ1xuICAgICAgYXR0cnNbQnV0dG9uVGFnRGF0YUNvbnN0cy5UZXh0QXR0ck5hbWVdID0gJ9Ca0L3QvtC/0LrQsCdcbiAgICB9XG4gICAgZWxzZSBpZiAodGFnRGVzY3JpcHRpb24udGFnID09PSBIdG1sUmF3VGFnRGF0YUNvbnN0cy5UYWdOYW1lKSB7XG4gICAgICBpbm5lckh0bWwgPSB0aGlzLmh0bWxSYXc7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRhZ0Rlc2NyaXB0aW9uLnRhZyA9PSBDdXN0b21XaWRnZXRUYWdEYXRhQ29uc3RzLlRhZ05hbWUpIHtcbiAgICAgIGF0dHJzW0N1c3RvbVdpZGdldFRhZ0RhdGFDb25zdHMuVHlwZUF0dHJOYW1lXSA9ICdleGFtcGxlLXR5cGUnXG4gICAgICBhdHRyc1tDdXN0b21XaWRnZXRUYWdEYXRhQ29uc3RzLkRhdGFJZEF0dHJOYW1lXSA9ICdleGFtcGxlLWRhdGEtaWQnXG4gICAgICBhdHRyc1tDdXN0b21XaWRnZXRUYWdEYXRhQ29uc3RzLldpZGdldElkQXR0ck5hbWVdID0gJ2V4YW1wbGUtd2lkZ2V0LWlkJ1xuICAgIH1cbiAgICBlbHNlIGlmICh0YWdEZXNjcmlwdGlvbi50YWcgPT09IEZpbGVJbWFnZVRhZ0RhdGFDb25zdHMuVGFnTmFtZSkge1xuICAgICAgYXR0cnNbRmlsZUltYWdlVGFnRGF0YUNvbnN0cy5GaWxlSWRBdHRyTmFtZV0gPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuYm9keVRhZ3MucHVzaCh7XG4gICAgICB0YWdEZXNjcmlwdGlvbixcbiAgICAgIGlubmVySHRtbCxcbiAgICAgIGF0dHJpYnV0ZXM6IGF0dHJzLFxuICAgICAgcHJlc2VudE9yRWRpdDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgdGhpcy5odG1sUmF3ID0gJyc7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZUh0bWwoKTtcbiAgfVxuXG4gIHN0YXJ0QWRkaW5nVGV4dCh0YWcgPSAnJyk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZUJvZHlUYWdzID0gWy4uLnRoaXMuYm9keVRhZ3NdO1xuICAgIGlmICh0YWcgPT09ICd0ZXh0Jykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudGV4dEFyZWEubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfSlcbiAgICB9XG4gICAgdGhpcy5yZXNldFRleHRTdHlsZSgpO1xuICB9XG5cbiAgcmVzZXRUZXh0U3R5bGUoKTogdm9pZCB7XG4gICAgdGhpcy50ZXh0ID0gJyc7XG4gICAgdGhpcy5hbGlnbm1lbnQgPSBFQWxpZ25tZW50cy5MZWZ0O1xuICAgIHRoaXMudGV4dFRhZyA9IERlZmF1bHRUYWdzLnRleHRUYWdzWzBdLnRhZztcbiAgfVxuXG4gIGFkZFRleHRUYWdzKCkge1xuICAgIGxldCBsaW5lcyA9IHRoaXMudGV4dC5zcGxpdCgnXFxuJyk7XG4gICAgdGhpcy5ib2R5VGFncyA9IFsuLi50aGlzLnNhdmVCb2R5VGFnc107XG4gICAgbGV0IHRhZ0Rlc2NyaXB0aW9uID0gdGhpcy50ZXh0VGFnT3B0aW9ucz8uZmluZCh4ID0+IHgudGFnID09PSB0aGlzLnRleHRUYWcpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGxpbmVzW2ldLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5ib2R5VGFncy5wdXNoKHtcbiAgICAgICAgICB0YWdEZXNjcmlwdGlvbixcbiAgICAgICAgICBpbm5lckh0bWw6IGxpbmVzW2ldLFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIFwiaC1hbGlnblwiOiBgJHt0aGlzLmFsaWdubWVudH1gXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcmVzZW50T3JFZGl0OiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlY2FsY3VsYXRlSHRtbCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBvc3RGaWxlc1N0YXJ0ZWRFdmVudEhhbmRsZXIobW9kZWw6IEZpbGVQb3N0aW5nU3RhcnRlZCkge1xuICAgIHRoaXMubG9hZGluZ1RleHQgPSBcItCk0LDQudC70Ysg0LfQsNCz0YDRg9C20LDRjtGC0YHRjyDQvdCwINGB0LXRgNCy0LXRgFwiO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgfVxuXG4gIGFkZFRhZyh0YWc6IEh0bWxCb2R5VGFnKSB7XG4gICAgdGhpcy5ib2R5VGFncy5wdXNoKHRhZyk7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZUh0bWwoKTtcbiAgfVxuXG4gIGZpbGVzVGFnc1JlYWR5SGFuZGxlcih0YWdzOiBIdG1sQm9keVRhZ1tdKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmJvZHlUYWdzLnB1c2godGFnc1tpXSk7XG4gICAgfVxuICAgIHRoaXMucmVjYWxjdWxhdGVIdG1sKCk7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPG9iamVjdFtdPikge1xuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmJvZHlUYWdzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIHRoaXMucmVjYWxjdWxhdGVIdG1sKCk7XG4gIH1cblxuICBvblRhZ1NhdmVkSGFuZGxlcih0YWc6IEh0bWxCb2R5VGFnKSB7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZUh0bWwoKTtcbiAgfVxuXG4gIG9uVGFnUmVtb3ZlZEhhbmRsZXIoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuYm9keVRhZ3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLnJlY2FsY3VsYXRlSHRtbCgpO1xuICB9XG5cbiAgcmVjYWxjdWxhdGVIdG1sKCkge1xuICAgIGxldCByZXN1bHQgPSBCb2R5VGFnc0V4dGVuc2lvbnMudG9IdG1sKHRoaXMuYm9keVRhZ3MpO1xuICAgIHRoaXMuaHRtbCA9IFhtbEV4dGVuc2lvbnMuZm9ybWF0WG1sKFwiPGJvZHk+XCIgKyByZXN1bHQgKyBcIjwvYm9keT5cIik7XG4gICAgdGhpcy5vbkh0bWxDaGFuZ2VkLmVtaXQodGhpcy5odG1sKTtcbiAgfVxuXG4gIHJlY2FsY3VsYXRlQm9keVRhZ3MoKSB7XG4gICAgdGhpcy5ib2R5VGFncyA9IEJvZHlUYWdzRXh0ZW5zaW9ucy5nZXRCb2R5VGFncyh0aGlzLmh0bWwsIHRoaXMuX29wdGlvbnMpO1xuICB9XG5cbiAgc2VsZWN0VGFnKGRhdGE6IFRhZ0l0ZW0pIHtcbiAgICB0aGlzLmh0bWxSYXcgPSAnJztcblxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IGRhdGEudGFnO1xuICAgIHRoaXMuc3RhcnRBZGRpbmdUZXh0KGRhdGEudGFnKTtcbiAgfVxuXG4gIGN1c3RvbVdpZGdldHNDbGlja0hhbmRsZXIoKSB7XG4gICAgdGhpcy5fb3B0aW9ucy5jdXN0b21XaWRnZXRDbGlja0hhbmRsZXIodGhpcyk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY2FsY3VsYXRlQm9keVRhZ3MoKTtcblxuICAgIHRoaXMudGFncyA9IERlZmF1bHRUYWdzLmdldFRhZ3MoKTtcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB0aGlzLnRhZ3NbMF0udGFnO1xuICAgIHRoaXMuc2VsZWN0ZWRWaWRlb1BsYXllciA9IHRoaXMudmlkZW9QbGF5ZXJzWzBdLnR5cGU7XG4gIH1cblxuICBzZXRUYWdCdXR0b24odHlwZTogc3RyaW5nKTogU3ByaXRlSWRzVHlwZSB7XG4gICAgcmV0dXJuIGB0YWctYnV0dG9uLSR7dHlwZX1gIGFzIFNwcml0ZUlkc1R5cGVcbiAgfVxuXG4gIHNldEFsaWduQnV0dG9uKHR5cGU6IHN0cmluZyk6IFNwcml0ZUlkc1R5cGUge1xuICAgIHJldHVybiBgYWxpZ24tJHt0eXBlfWAgYXMgU3ByaXRlSWRzVHlwZVxuICB9XG59XG4iLCJAaWYgKGlzTG9hZGluZykge1xuICA8ZGl2PlxuICAgIDxkaXY+XG4gICAgICA8bWF0LXNwaW5uZXIgc3R5bGU9XCJtYXJnaW46MCBhdXRvO1wiPjwvbWF0LXNwaW5uZXI+XG4gICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPnt7bG9hZGluZ1RleHR9fTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwcHg7XCI+PC9kaXY+XG4gIDwvZGl2PlxufVxuPGRpdiBbaGlkZGVuXT1cImlzTG9hZGluZ1wiPlxuICA8bWF0LWNhcmQgc3R5bGU9XCJtYXJnaW46IDJweDtcIiBjbGFzcz1cIm1hdC1jYXJkXCI+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMjJweFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ3NcIj5cbiAgICAgICAgICAgICAgQGZvciAodGFnIG9mIHRhZ3M7IHRyYWNrIHRhZykge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFnLWl0ZW1cIiAoY2xpY2spPVwic2VsZWN0VGFnKHRhZylcIiBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkVmFsdWUgPT09IHRhZy50YWdcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1hbGlnbi1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFnQnV0dG9uSWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aWNvbjogdGFnLnRhZ31cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB7e3RhZy5kaXNwbGF5VmFsdWV9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIEBpZiAodXNlQ3VzdG9tV2lkZ2V0c0J1dHRvbikge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFnLWl0ZW1cIiAoY2xpY2spPVwiY3VzdG9tV2lkZ2V0c0NsaWNrSGFuZGxlcigpXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtYWxpZ24taWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhZ0J1dHRvbkljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2ljb246ICdjdXN0b20td2lkZ2V0J31cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICDQlNGA0YPQs9C40LUg0LLQuNC00LbQtdGC0YtcbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZiAoc2VsZWN0ZWRWYWx1ZSA9PT0gRXh0ZXJuYWxWaWRlb1RhZ0RhdGFDb25zdHMuVGFnTmFtZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD7QktGL0LHQtdGA0LjRgtC1INCy0LjQtNC10L7Qv9C70LXQtdGAPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwic2VsZWN0ZWRWaWRlb1BsYXllclwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHZpZGVvUGxheWVyIG9mIHZpZGVvUGxheWVyczsgdHJhY2sgdmlkZW9QbGF5ZXIudHlwZSkge1xuICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInZpZGVvUGxheWVyLnR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3t2aWRlb1BsYXllci5kaXNwbGF5VmFsdWV9fVxuICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBAaWYgKHNlbGVjdGVkVmlkZW9QbGF5ZXIgPT09IEV4dGVybmFsVmlkZW9TdXBwb3J0ZWRUeXBlcy5Db2RlKSB7XG4gICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD7QoNCw0LfQvNC10YLQutCwPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLQoNCw0LfQvNC10YLQutCwXCJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaHRtbFJhd1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpZiAoc2VsZWN0ZWRWYWx1ZSA9PT0gSHRtbFJhd1RhZ0RhdGFDb25zdHMuVGFnTmFtZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPtCg0LDQt9C80LXRgtC60LA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgICNhdXRvc2l6ZT1cImNka1RleHRhcmVhQXV0b3NpemVcIlxuICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgIGNka1RleHRhcmVhQXV0b3NpemVcbiAgICAgICAgICAgICAgICAgIGNka0F1dG9zaXplTWluUm93cz1cIjFcIlxuICAgICAgICAgICAgICAgICAgY2RrQXV0b3NpemVNYXhSb3dzPVwiNVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cItCi0LXQutGB0YJcIlxuICAgICAgICAgICAgICAgICAgI3RleHRBcmVhXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImh0bWxSYXdcIlxuICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHNlbGVjdGVkVmFsdWUgPT09ICd0ZXh0Jykge1xuICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGZsZXgtd3JhcDogd3JhcFwiPlxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDIycHg7IG92ZXJmbG93LXg6IGF1dG87XCI+XG4gICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGV4dFRhZ1wiXG4gICAgICAgICAgICAgICAgW2hpZGVTaW5nbGVTZWxlY3Rpb25JbmRpY2F0b3JdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAZm9yIChvcHRpb24gb2YgdGV4dFRhZ09wdGlvbnM7IHRyYWNrIG9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwie3sgb3B0aW9uLnRhZyB9fVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24uZGlzcGxheVZhbHVlIH19XG4gICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMjJweFwiPlxuICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImFsaWdubWVudFwiXG4gICAgICAgICAgICAgICAgW2hpZGVTaW5nbGVTZWxlY3Rpb25JbmRpY2F0b3JdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAZm9yIChvcHRpb24gb2YgYWxpZ25tZW50T3B0aW9uczsgdHJhY2sgb3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJ7eyBvcHRpb24udmFsdWUgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWFsaWduLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRleHRBbGlnblRvZ2dsZUljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aWNvbjogb3B0aW9uLnZhbHVlfVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPtCi0LXQutGB0YI8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAjYXV0b3NpemU9XCJjZGtUZXh0YXJlYUF1dG9zaXplXCJcbiAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgY2RrVGV4dGFyZWFBdXRvc2l6ZVxuICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1pblJvd3M9XCIxXCJcbiAgICAgICAgICAgICAgY2RrQXV0b3NpemVNYXhSb3dzPVwiNVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi0KLQtdC60YHRglwiXG4gICAgICAgICAgICAgICN0ZXh0QXJlYVxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRleHRcIlxuICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhZGRUYWdDbGlja0hhbmRsZXIoKVwiIGNsYXNzPVwidy0xMDBcIiBtYXQtc3Ryb2tlZC1idXR0b24+XG4gICAgICAgICAgICDQlNC+0LHQsNCy0LjRgtGMINGC0LXQs1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgPC9tYXQtY2FyZD5cblxuICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMHB4O1wiPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBbaGlkZGVuXT1cImlzTG9hZGluZ1wiPlxuICA8bWF0LWNhcmQgc3R5bGU9XCJtYXJnaW46IDJweDtcIiBjbGFzcz1cIm1hdC1jYXJkXCI+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgIDxjcm9jby1odG1sLWFkZC1maWxlcy1idG4gKGZpbGVzVGFnc1JlYWR5KT1cImZpbGVzVGFnc1JlYWR5SGFuZGxlcigkZXZlbnQpXCJcbiAgICAgICAgICAgIChwb3N0RmlsZXNTdGFydGVkKT1cInBvc3RGaWxlc1N0YXJ0ZWRFdmVudEhhbmRsZXIoJGV2ZW50KVwiIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICA8L2Nyb2NvLWh0bWwtYWRkLWZpbGVzLWJ0bj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gIDwvbWF0LWNhcmQ+XG5cbiAgPGRpdiBzdHlsZT1cImhlaWdodDogMTBweDtcIj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgW2hpZGRlbl09XCJpc0xvYWRpbmdcIj5cbiAgPGRpdiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxuICAgIEBmb3IgKHRhZyBvZiBib2R5VGFnczsgdHJhY2sgdGFnOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgPGRpdiBjZGtEcmFnPlxuICAgICAgICA8bWF0LWNhcmQgc3R5bGU9XCJtYXJnaW46IDJweDtcIiBjbGFzcz1cIm1hdC1jYXJkIHNwZWNpYWxcIj5cbiAgICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtaGFuZGxlXCIgY2RrRHJhZ0hhbmRsZT5cbiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGNsYXNzPVwibW92ZS1pY29uXCI+XG4gICAgICAgICAgICAgICAgICA8dXNlIFthdHRyLnhsaW5rOmhyZWZdPVwiJ21vdmUtaWNvbicgfCBzcHJpdGVJY29uUGF0aFwiPjwvdXNlPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIiBbbWF0VG9vbHRpcF09XCJ0YWcudGFnRGVzY3JpcHRpb24udGFnXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtYWxpZ24taWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhZ0J1dHRvbkljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2ljb246IHRhZy50YWdEZXNjcmlwdGlvbi50YWd9XCI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDE1cHg7XCI+PC9kaXY+XG4gICAgICAgICAgICA8Y3JvY28taHRtbC1tYWluLWVkaXRvci1ibG9jayBbdGFnXT1cInRhZ1wiIChvblRhZ1NhdmVkKT1cIm9uVGFnU2F2ZWRIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgICAob25UYWdSZW1vdmVkKT1cIm9uVGFnUmVtb3ZlZEhhbmRsZXIoaSlcIj5cbiAgICAgICAgICAgIDwvY3JvY28taHRtbC1tYWluLWVkaXRvci1ibG9jaz5cbiAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGV4dEFsaWduVG9nZ2xlSWNvbnMgbGV0LWljb249XCJpY29uXCI+XG4gIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCI+XG4gICAgPHVzZSBbYXR0ci54bGluazpocmVmXT1cInNldEFsaWduQnV0dG9uKGljb24pIHwgc3ByaXRlSWNvblBhdGhcIj48L3VzZT5cbiAgPC9zdmc+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RhZ0J1dHRvbkljb25zIGxldC1pY29uPVwiaWNvblwiPlxuICBAaWYgKGljb24uaW5kZXhPZignaCcpID09PSAwICYmIGljb24ubGVuZ3RoID09PSAyKSB7XG4gICAge3tpY29uLnRvVXBwZXJDYXNlKCl9fVxuICB9XG4gIEBlbHNlIHtcbiAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiPlxuICAgICAgPHVzZSBbYXR0ci54bGluazpocmVmXT1cInNldFRhZ0J1dHRvbihpY29uKSB8IHNwcml0ZUljb25QYXRoXCI+PC91c2U+XG4gICAgPC9zdmc+XG4gIH1cbjwvbmctdGVtcGxhdGU+Il19
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcm9jby1odG1sL3NyYy9saWIvY29tcG9uZW50cy9lZGl0b3IvdmlzdWFsLWVkaXRvci92aXN1YWwtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci92aXN1YWwtZWRpdG9yL3Zpc3VhbC1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGVBQWUsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNHLE9BQU8sRUFHTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQ3hDLDJCQUEyQixFQUMzQixRQUFRLEVBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsMEJBQTBCLEdBQzNCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN4RixPQUFPLEVBQUUs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a0RyYWcsIENka0RyYWdIYW5kbGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJvZHlUYWdzRXh0ZW5zaW9ucywgRXh0ZXJuYWxWaWRlb1BsYXllcnMsXG4gIEV4dGVybmFsVmlkZW9TdXBwb3J0ZWRUeXBlcyxcbiAgVGV4dFRhZ3Ncbn0gZnJvbSAnLi4vLi4vLi4vZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzIH0gZnJvbSAnLi4vLi4vLi4vZXh0ZW5zaW9ucyc7XG5pbXBvcnQge1xuICBFeHRlcm5hbFZpZGVvVGFnRGF0YUNvbnN0cyxcbn0gZnJvbSAnLi4vLi4vLi4vZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBYbWxFeHRlbnNpb25zIH0gZnJvbSAnLi4vLi4vLi4vZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBUYWdJdGVtLCBIdG1sQm9keVRhZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9tb2RlbHMnO1xuaW1wb3J0IHsgRmlsZVBvc3RpbmdTdGFydGVkIH0gZnJvbSAnLi4vLi4vdXBsb2FkLWZpbGVzLWJ0bi91cGxvYWQtZmlsZXMtYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWZhdWx0VGFncyB9IGZyb20gJy4vRGVmYXVsdFRhZ3MnO1xuaW1wb3J0IHsgQWxpZ25tZW50c0RhdGEsIEVBbGlnbm1lbnRzIH0gZnJvbSBcIi4vRGVmYXVsdEFsaWdtZW50c1wiO1xuaW1wb3J0IHsgQ3JvY29IdG1sT3B0aW9uc1Rva2VuIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RzJztcbmltcG9ydCB7IERvd25sb2FkQnV0dG9uVGFnRGF0YUNvbnN0cyB9IGZyb20gXCIuLi8uLi8uLi9leHRlbnNpb25zL0Rvd25sb2FkQnV0dG9uTWV0aG9kc1wiO1xuaW1wb3J0IHsgTWFpbkVkaXRvckJsb2NrQ29tcG9uZW50IH0gZnJvbSAnLi4vbWFpbi1lZGl0b3ItYmxvY2svbWFpbi1lZGl0b3ItYmxvY2suY29tcG9uZW50JztcbmltcG9ydCB7IEFkZEZpbGVzQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWRkLWZpbGVzLWJ0bi9hZGQtZmlsZXMtYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdFNlbGVjdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENka1RleHRhcmVhQXV0b3NpemUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGV4dC1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCwgTWF0TGFiZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDYXJkLCBNYXRDYXJkQ29udGVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBCdXR0b25UYWdEYXRhQ29uc3RzIH0gZnJvbSBcIi4uLy4uLy4uL2V4dGVuc2lvbnMvQnV0dG9uTWV0aG9kc1wiO1xuaW1wb3J0IHsgQ3JvY29IdG1sT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL29wdGlvbnMnO1xuaW1wb3J0IHsgQ3VzdG9tV2lkZ2V0VGFnRGF0YUNvbnN0cyB9IGZyb20gXCIuLi8uLi8uLi9leHRlbnNpb25zL0N1c3RvbVdpZGdldE1ldGhvZHNcIjtcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZSwgTWF0QnV0dG9uVG9nZ2xlR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZVwiO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IEh0bWxSYXdUYWdEYXRhQ29uc3RzIH0gZnJvbSBcIi4uLy4uLy4uL2V4dGVuc2lvbnMvSHRtbFJhd1RhZ0RhdGFDb25zdHNcIjtcbmltcG9ydCB7IE1hdFRvb2x0aXAgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcFwiO1xuaW1wb3J0IHsgU3ByaXRlSWNvblBhdGhQaXBlIH0gZnJvbSBcIi4uLy4uLy4uL3BpcGVzL3Nwcml0ZS1pY29uLXBhdGgucGlwZVwiO1xuaW1wb3J0IHsgU3ByaXRlSWRzVHlwZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9zcHJpdGVzLWlkcy50eXBlXCI7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0TGlua1lvdVR1YmUgPSBcImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLzRDdFNBbkpEZnNJP3NpPXNjeUJOSmEwSHMydDVhTEVcIjtcbmV4cG9ydCBjb25zdCBkZWZhdWx0TGlua1ZrID0gXCJodHRwczovL3ZrLmNvbS92aWRlb19leHQucGhwP29pZD0tMjI4MjIzMDUmaWQ9NDU2MjQxODY0JmhkPTJcIjtcbmV4cG9ydCBjb25zdCBkZWZhdWx0TGlua0ZvckRvd25sb2FkID0gXCJodHRwczovL3N0b3JhZ2UueWFuZGV4Y2xvdWQubmV0L21lZ2EtYWNhZGVteS9wcmVzZW50YXRpb24ucGRmXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nyb2NvLXZpc3VhbC1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlzdWFsLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Zpc3VhbC1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdFByb2dyZXNzU3Bpbm5lcixcbiAgICBNYXRDYXJkLFxuICAgIE1hdENhcmRDb250ZW50LFxuICAgIE1hdEJ1dHRvbixcbiAgICBNYXRGb3JtRmllbGQsXG4gICAgTWF0TGFiZWwsXG4gICAgTWF0SW5wdXQsXG4gICAgQ2RrVGV4dGFyZWFBdXRvc2l6ZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRTZWxlY3QsXG4gICAgTWF0T3B0aW9uLFxuICAgIEFkZEZpbGVzQnRuQ29tcG9uZW50LFxuICAgIENka0Ryb3BMaXN0LFxuICAgIENka0RyYWcsXG4gICAgQ2RrRHJhZ0hhbmRsZSxcbiAgICBNYWluRWRpdG9yQmxvY2tDb21wb25lbnQsXG4gICAgTWF0QnV0dG9uVG9nZ2xlR3JvdXAsXG4gICAgTWF0QnV0dG9uVG9nZ2xlLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgTWF0VG9vbHRpcCxcbiAgICBTcHJpdGVJY29uUGF0aFBpcGUsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVmlzdWFsRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgndGV4dEFyZWEnKSB0ZXh0QXJlYTogRWxlbWVudFJlZjtcblxuICBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgbG9hZGluZ1RleHQgPSBcItCY0LTRkdGCINC30LDQs9GA0YPQt9C60LBcIjtcbiAgdGV4dCA9ICcnO1xuICBodG1sUmF3ID0gJyc7XG5cbiAgYWxpZ25tZW50ID0gRUFsaWdubWVudHMuTGVmdDtcbiAgdGV4dFRhZyA9IERlZmF1bHRUYWdzLnRleHRUYWdzWzBdLnRhZztcbiAgdGV4dFRhZ09wdGlvbnMgPSBEZWZhdWx0VGFncy50ZXh0VGFnc1xuICBhbGlnbm1lbnRPcHRpb25zID0gQWxpZ25tZW50c0RhdGFcblxuICBASW5wdXQoKVxuICBzaG93TWFya1VwID0gdHJ1ZTtcblxuICB0YWdzOiBUYWdJdGVtW10gPSBbXTtcbiAgdmlkZW9QbGF5ZXJzID0gRXh0ZXJuYWxWaWRlb1BsYXllcnNcbiAgc2VsZWN0ZWRWYWx1ZTogc3RyaW5nID0gbnVsbDtcbiAgc2VsZWN0ZWRWaWRlb1BsYXllcjogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBFeHRlcm5hbFZpZGVvVGFnRGF0YUNvbnN0cyA9IEV4dGVybmFsVmlkZW9UYWdEYXRhQ29uc3RzO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgSHRtbFJhd1RhZ0RhdGFDb25zdHMgPSBIdG1sUmF3VGFnRGF0YUNvbnN0cztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEV4dGVybmFsVmlkZW9TdXBwb3J0ZWRUeXBlcyA9IEV4dGVybmFsVmlkZW9TdXBwb3J0ZWRUeXBlcztcblxuICBASW5wdXQoKVxuICB1c2VIdG1sUmF3ID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBAT3V0cHV0KClcbiAgaHRtbDogc3RyaW5nID0gXCJcIjtcblxuICBpc0h0bWxTZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHRtbC5zdGFydHNXaXRoKFwiPGJvZHk+XCIpO1xuICB9XG5cbiAgY2xlYXJIdG1sKCkge1xuICAgIHRoaXMuaHRtbCA9IFwiXCI7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZUJvZHlUYWdzKCk7XG4gIH1cblxuICBnZXRIdG1sKCkge1xuICAgIHRoaXMucmVjYWxjdWxhdGVIdG1sKCk7XG4gICAgcmV0dXJuIHRoaXMuaHRtbDtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBvbkh0bWxDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJlbmRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGJvZHlUYWdzOiBIdG1sQm9keVRhZ1tdID0gW107XG4gIHNhdmVCb2R5VGFnczogSHRtbEJvZHlUYWdbXSA9IFtdO1xuXG4gIHVzZUN1c3RvbVdpZGdldHNCdXR0b24gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChDcm9jb0h0bWxPcHRpb25zVG9rZW4pIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnM6IENyb2NvSHRtbE9wdGlvbnMpIHsgXG5cbiAgICB0aGlzLnVzZUN1c3RvbVdpZGdldHNCdXR0b24gPSB0aGlzLl9vcHRpb25zLnVzZUN1c3RvbVdpZGdldHNCdXR0b247XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlZC5lbWl0KHRydWUpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuX2NkcmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGFkZFRhZ0NsaWNrSGFuZGxlcigpOiB2b2lkIHtcbiAgICBsZXQgdGFnRGVzY3JpcHRpb24gPSB0aGlzLnRhZ3NcbiAgICAgIC5maW5kKHggPT4geC50YWcgPT09IHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG4gXG4gICAgaWYgKFRleHRUYWdzLmFsbFRleHRUYWdzLmluY2x1ZGVzKHRhZ0Rlc2NyaXB0aW9uLnRhZykpIHtcbiAgICAgIHRoaXMuYWRkVGV4dFRhZ3MoKTtcbiAgICAgIHRoaXMuc3RhcnRBZGRpbmdUZXh0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGF0dHJzID0ge307XG4gICAgbGV0IGlubmVySHRtbCA9IFwiXCI7XG5cbiAgICBpZiAodGFnRGVzY3JpcHRpb24udGFnID09IEV4dGVybmFsVmlkZW9UYWdEYXRhQ29uc3RzLlRhZ05hbWUpIHtcbiAgICAgIGF0dHJzW0V4dGVybmFsVmlkZW9UYWdEYXRhQ29uc3RzLlZpZGVvVHlwZUF0dHJOYW1lXSA9IHRoaXMuc2VsZWN0ZWRWaWRlb1BsYXllcjtcbiAgICAgIGF0dHJzW0V4dGVybmFsVmlkZW9UYWdEYXRhQ29uc3RzLlVzZVJlc3BvbnNpdmVXcmFwcGVyQXR0ck5hbWVdID0gZmFsc2U7XG4gICAgICBhdHRyc1tFeHRlcm5hbFZpZGVvVGFnRGF0YUNvbnN0cy5MaW5rQXR0ck5hbWVdID0gdGhpcy5zZWxlY3RlZFZpZGVvUGxheWVyID09PSBFeHRlcm5hbFZpZGVvU3VwcG9ydGVkVHlwZXMuQ29kZSA/ICcnIDpcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZpZGVvUGxheWVyID09PSBFeHRlcm5hbFZpZGVvU3VwcG9ydGVkVHlwZXMuVmtWaWRlb1xuICAgICAgICAgID8gZGVmYXVsdExpbmtWa1xuICAgICAgICAgIDogZGVmYXVsdExpbmtZb3VUdWJlO1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFZpZGVvUGxheWVyID09PSBFeHRlcm5hbFZpZGVvU3VwcG9ydGVkVHlwZXMuQ29kZSkge1xuICAgICAgICBpbm5lckh0bWwgPSB0aGlzLmh0bWxSYXdcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodGFnRGVzY3JpcHRpb24udGFnID09IEZpbGVJbWFnZVRhZ0RhdGFDb25zdHMuVGFnTmFtZSkge1xuICAgICAgYXR0cnNbRmlsZUltYWdlVGFnRGF0YUNvbnN0cy5TY3JlZW5NZWRpYVJlcXVlc3RdID0gRmlsZUltYWdlVGFnRGF0YUNvbnN0cy5EZWZhdWx0VmFsdWVGb3JGaWxlSW1hZ2U7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRhZ0Rlc2NyaXB0aW9uLnRhZyA9PSBEb3dubG9hZEJ1dHRvblRhZ0RhdGFDb25zdHMuVGFnTmFtZSkge1xuICAgICAgYXR0cnNbRG93bmxvYWRCdXR0b25UYWdEYXRhQ29uc3RzLkxpbmtBdHRyTmFtZV0gPSBkZWZhdWx0TGlua0ZvckRvd25sb2FkXG4gICAgICBhdHRyc1tEb3dubG9hZEJ1dHRvblRhZ0RhdGFDb25zdHMuVGl0bGVBdHRyTmFtZV0gPSAn0KHQutCw0YfQsNGC0YwnXG4gICAgfVxuICAgIGVsc2UgaWYgKHRhZ0Rlc2NyaXB0aW9uLnRhZyA9PSBCdXR0b25UYWdEYXRhQ29uc3RzLlRhZ05hbWUpIHtcbiAgICAgIGF0dHJzW0J1dHRvblRhZ0RhdGFDb25zdHMuQ2xpY2tBdHRyTmFtZV0gPSAnJ1xuICAgICAgYXR0cnNbQnV0dG9uVGFnRGF0YUNvbnN0cy5UeXBlQXR0ck5hbWVdID0gJ2J1dHRvbidcbiAgICAgIGF0dHJzW0J1dHRvblRhZ0RhdGFDb25zdHMuVGV4dEF0dHJOYW1lXSA9ICfQmtC90L7Qv9C60LAnXG4gICAgfVxuICAgIGVsc2UgaWYgKHRhZ0Rlc2NyaXB0aW9uLnRhZyA9PT0gSHRtbFJhd1RhZ0RhdGFDb25zdHMuVGFnTmFtZSkge1xuICAgICAgaW5uZXJIdG1sID0gdGhpcy5odG1sUmF3O1xuICAgIH1cbiAgICBlbHNlIGlmICh0YWdEZXNjcmlwdGlvbi50YWcgPT0gQ3VzdG9tV2lkZ2V0VGFnRGF0YUNvbnN0cy5UYWdOYW1lKSB7XG4gICAgICBhdHRyc1tDdXN0b21XaWRnZXRUYWdEYXRhQ29uc3RzLlR5cGVBdHRyTmFtZV0gPSAnZXhhbXBsZS10eXBlJ1xuICAgICAgYXR0cnNbQ3VzdG9tV2lkZ2V0VGFnRGF0YUNvbnN0cy5EYXRhSWRBdHRyTmFtZV0gPSAnZXhhbXBsZS1kYXRhLWlkJ1xuICAgICAgYXR0cnNbQ3VzdG9tV2lkZ2V0VGFnRGF0YUNvbnN0cy5XaWRnZXRJZEF0dHJOYW1lXSA9ICdleGFtcGxlLXdpZGdldC1pZCdcbiAgICB9XG4gICAgZWxzZSBpZiAodGFnRGVzY3JpcHRpb24udGFnID09PSBGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzLlRhZ05hbWUpIHtcbiAgICAgIGF0dHJzW0ZpbGVJbWFnZVRhZ0RhdGFDb25zdHMuRmlsZUlkQXR0ck5hbWVdID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmJvZHlUYWdzLnB1c2goe1xuICAgICAgdGFnRGVzY3JpcHRpb24sXG4gICAgICBpbm5lckh0bWwsXG4gICAgICBhdHRyaWJ1dGVzOiBhdHRycyxcbiAgICAgIHByZXNlbnRPckVkaXQ6IHRydWVcbiAgICB9KTtcblxuICAgIHRoaXMuaHRtbFJhdyA9ICcnO1xuICAgIHRoaXMucmVjYWxjdWxhdGVIdG1sKCk7XG4gIH1cblxuICBzdGFydEFkZGluZ1RleHQodGFnID0gJycpOiB2b2lkIHtcbiAgICB0aGlzLnNhdmVCb2R5VGFncyA9IFsuLi50aGlzLmJvZHlUYWdzXTtcbiAgICBpZiAodGFnID09PSAndGV4dCcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnRleHRBcmVhLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH0pXG4gICAgfVxuICAgIHRoaXMucmVzZXRUZXh0U3R5bGUoKTtcbiAgfVxuXG4gIHJlc2V0VGV4dFN0eWxlKCk6IHZvaWQge1xuICAgIHRoaXMudGV4dCA9ICcnO1xuICAgIHRoaXMuYWxpZ25tZW50ID0gRUFsaWdubWVudHMuTGVmdDtcbiAgICB0aGlzLnRleHRUYWcgPSBEZWZhdWx0VGFncy50ZXh0VGFnc1swXS50YWc7XG4gIH1cblxuICBhZGRUZXh0VGFncygpIHtcbiAgICBsZXQgbGluZXMgPSB0aGlzLnRleHQuc3BsaXQoJ1xcbicpO1xuICAgIHRoaXMuYm9keVRhZ3MgPSBbLi4udGhpcy5zYXZlQm9keVRhZ3NdO1xuICAgIGxldCB0YWdEZXNjcmlwdGlvbiA9IHRoaXMudGV4dFRhZ09wdGlvbnM/LmZpbmQoeCA9PiB4LnRhZyA9PT0gdGhpcy50ZXh0VGFnKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgY29uc3QgbGluZSA9IGxpbmVzW2ldO1xuXG4gICAgICBpZiAobGluZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuYm9keVRhZ3MucHVzaCh7XG4gICAgICAgICAgdGFnRGVzY3JpcHRpb24sXG4gICAgICAgICAgaW5uZXJIdG1sOiBsaW5lLFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIFwiaC1hbGlnblwiOiBgJHt0aGlzLmFsaWdubWVudH1gXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcmVzZW50T3JFZGl0OiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlY2FsY3VsYXRlSHRtbCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBvc3RGaWxlc1N0YXJ0ZWRFdmVudEhhbmRsZXIoKSB7XG4gICAgdGhpcy5sb2FkaW5nVGV4dCA9IFwi0KTQsNC50LvRiyDQt9Cw0LPRgNGD0LbQsNGO0YLRgdGPINC90LAg0YHQtdGA0LLQtdGAXCI7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICB9XG5cbiAgYWRkVGFnKHRhZzogSHRtbEJvZHlUYWcpIHtcbiAgICB0aGlzLmJvZHlUYWdzLnB1c2godGFnKTtcbiAgICB0aGlzLnJlY2FsY3VsYXRlSHRtbCgpO1xuICB9XG5cbiAgZmlsZXNUYWdzUmVhZHlIYW5kbGVyKHRhZ3M6IEh0bWxCb2R5VGFnW10pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuYm9keVRhZ3MucHVzaCh0YWdzW2ldKTtcbiAgICB9XG4gICAgdGhpcy5yZWNhbGN1bGF0ZUh0bWwoKTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8b2JqZWN0W10+KSB7XG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuYm9keVRhZ3MsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZUh0bWwoKTtcbiAgfVxuXG4gIG9uVGFnU2F2ZWRIYW5kbGVyKHRhZzogSHRtbEJvZHlUYWcpIHtcbiAgICB0aGlzLnJlY2FsY3VsYXRlSHRtbCgpO1xuICB9XG5cbiAgb25UYWdSZW1vdmVkSGFuZGxlcihpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5ib2R5VGFncy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuc2F2ZUJvZHlUYWdzID0gWy4uLnRoaXMuYm9keVRhZ3NdO1xuICAgIHRoaXMucmVjYWxjdWxhdGVIdG1sKCk7XG4gIH1cblxuICByZWNhbGN1bGF0ZUh0bWwoKSB7XG4gICAgbGV0IHJlc3VsdCA9IEJvZHlUYWdzRXh0ZW5zaW9ucy50b0h0bWwodGhpcy5ib2R5VGFncyk7XG4gICAgdGhpcy5odG1sID0gWG1sRXh0ZW5zaW9ucy5mb3JtYXRYbWwoXCI8Ym9keT5cIiArIHJlc3VsdCArIFwiPC9ib2R5PlwiKTtcbiAgICB0aGlzLm9uSHRtbENoYW5nZWQuZW1pdCh0aGlzLmh0bWwpO1xuICB9XG5cbiAgcmVjYWxjdWxhdGVCb2R5VGFncygpIHtcbiAgICB0aGlzLmJvZHlUYWdzID0gQm9keVRhZ3NFeHRlbnNpb25zLmdldEJvZHlUYWdzKHRoaXMuaHRtbCwgdGhpcy5fb3B0aW9ucyk7XG4gICAgdGhpcy5zYXZlQm9keVRhZ3MgPSBbLi4udGhpcy5ib2R5VGFnc107XG4gIH1cblxuICBzZWxlY3RUYWcoZGF0YTogVGFnSXRlbSkge1xuICAgIHRoaXMuaHRtbFJhdyA9ICcnO1xuXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gZGF0YS50YWc7XG4gICAgdGhpcy5zdGFydEFkZGluZ1RleHQoZGF0YS50YWcpO1xuICB9XG5cbiAgY3VzdG9tV2lkZ2V0c0NsaWNrSGFuZGxlcigpIHtcbiAgICB0aGlzLl9vcHRpb25zLmN1c3RvbVdpZGdldENsaWNrSGFuZGxlcih0aGlzKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVjYWxjdWxhdGVCb2R5VGFncygpO1xuXG4gICAgdGhpcy50YWdzID0gRGVmYXVsdFRhZ3MuZ2V0VGFncygpO1xuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHRoaXMudGFnc1swXS50YWc7XG4gICAgdGhpcy5zZWxlY3RlZFZpZGVvUGxheWVyID0gdGhpcy52aWRlb1BsYXllcnNbMF0udHlwZTtcbiAgfVxuXG4gIHNldFRhZ0J1dHRvbih0eXBlOiBzdHJpbmcpOiBTcHJpdGVJZHNUeXBlIHtcbiAgICByZXR1cm4gYHRhZy1idXR0b24tJHt0eXBlfWAgYXMgU3ByaXRlSWRzVHlwZVxuICB9XG5cbiAgc2V0QWxpZ25CdXR0b24odHlwZTogc3RyaW5nKTogU3ByaXRlSWRzVHlwZSB7XG4gICAgcmV0dXJuIGBhbGlnbi0ke3R5cGV9YCBhcyBTcHJpdGVJZHNUeXBlXG4gIH1cbn1cbiIsIkBpZiAoaXNMb2FkaW5nKSB7XG4gIDxkaXY+XG4gICAgPGRpdj5cbiAgICAgIDxtYXQtc3Bpbm5lciBzdHlsZT1cIm1hcmdpbjowIGF1dG87XCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+e3tsb2FkaW5nVGV4dH19PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBzdHlsZT1cImhlaWdodDogMTBweDtcIj48L2Rpdj5cbiAgPC9kaXY+XG59XG48ZGl2IFtoaWRkZW5dPVwiaXNMb2FkaW5nXCI+XG4gIDxtYXQtY2FyZCBzdHlsZT1cIm1hcmdpbjogMnB4O1wiIGNsYXNzPVwibWF0LWNhcmRcIj5cbiAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAyMnB4XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFnc1wiPlxuICAgICAgICAgICAgICBAZm9yICh0YWcgb2YgdGFnczsgdHJhY2sgdGFnKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWctaXRlbVwiIChjbGljayk9XCJzZWxlY3RUYWcodGFnKVwiIFtjbGFzcy5hY3RpdmVdPVwic2VsZWN0ZWRWYWx1ZSA9PT0gdGFnLnRhZ1wiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWFsaWduLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWdCdXR0b25JY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpY29uOiB0YWcudGFnfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIHt7dGFnLmRpc3BsYXlWYWx1ZX19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgQGlmICh1c2VDdXN0b21XaWRnZXRzQnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWctaXRlbVwiIChjbGljayk9XCJjdXN0b21XaWRnZXRzQ2xpY2tIYW5kbGVyKClcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1hbGlnbi1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFnQnV0dG9uSWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aWNvbjogJ2N1c3RvbS13aWRnZXQnfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgINCU0YDRg9Cz0LjQtSDQstC40LTQttC10YLRi1xuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChzZWxlY3RlZFZhbHVlID09PSBFeHRlcm5hbFZpZGVvVGFnRGF0YUNvbnN0cy5UYWdOYW1lKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPtCS0YvQsdC10YDQuNGC0LUg0LLQuNC00LXQvtC/0LvQtdC10YA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFZpZGVvUGxheWVyXCI+XG4gICAgICAgICAgICAgICAgQGZvciAodmlkZW9QbGF5ZXIgb2YgdmlkZW9QbGF5ZXJzOyB0cmFjayB2aWRlb1BsYXllci50eXBlKSB7XG4gICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwidmlkZW9QbGF5ZXIudHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICB7e3ZpZGVvUGxheWVyLmRpc3BsYXlWYWx1ZX19XG4gICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIEBpZiAoc2VsZWN0ZWRWaWRlb1BsYXllciA9PT0gRXh0ZXJuYWxWaWRlb1N1cHBvcnRlZFR5cGVzLkNvZGUpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+0KDQsNC30LzQtdGC0LrQsDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi0KDQsNC30LzQtdGC0LrQsFwiXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImh0bWxSYXdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHNlbGVjdGVkVmFsdWUgPT09IEh0bWxSYXdUYWdEYXRhQ29uc3RzLlRhZ05hbWUpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD7QoNCw0LfQvNC10YLQutCwPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICAjYXV0b3NpemU9XCJjZGtUZXh0YXJlYUF1dG9zaXplXCJcbiAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICBjZGtUZXh0YXJlYUF1dG9zaXplXG4gICAgICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1pblJvd3M9XCIxXCJcbiAgICAgICAgICAgICAgICAgIGNka0F1dG9zaXplTWF4Um93cz1cIjVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLQotC10LrRgdGCXCJcbiAgICAgICAgICAgICAgICAgICN0ZXh0QXJlYVxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJodG1sUmF3XCJcbiAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChzZWxlY3RlZFZhbHVlID09PSAndGV4dCcpIHtcbiAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBmbGV4LXdyYXA6IHdyYXBcIj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAyMnB4OyBvdmVyZmxvdy14OiBhdXRvO1wiPlxuICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRleHRUYWdcIlxuICAgICAgICAgICAgICAgIFtoaWRlU2luZ2xlU2VsZWN0aW9uSW5kaWNhdG9yXT1cInRydWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIHRleHRUYWdPcHRpb25zOyB0cmFjayBvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cInt7IG9wdGlvbi50YWcgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLmRpc3BsYXlWYWx1ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDIycHhcIj5cbiAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhbGlnbm1lbnRcIlxuICAgICAgICAgICAgICAgIFtoaWRlU2luZ2xlU2VsZWN0aW9uSW5kaWNhdG9yXT1cInRydWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIGFsaWdubWVudE9wdGlvbnM7IHRyYWNrIG9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwie3sgb3B0aW9uLnZhbHVlIH19XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1hbGlnbi1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZXh0QWxpZ25Ub2dnbGVJY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2ljb246IG9wdGlvbi52YWx1ZX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD7QotC10LrRgdGCPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgI2F1dG9zaXplPVwiY2RrVGV4dGFyZWFBdXRvc2l6ZVwiXG4gICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgIGNka1RleHRhcmVhQXV0b3NpemVcbiAgICAgICAgICAgICAgY2RrQXV0b3NpemVNaW5Sb3dzPVwiMVwiXG4gICAgICAgICAgICAgIGNka0F1dG9zaXplTWF4Um93cz1cIjVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cItCi0LXQutGB0YJcIlxuICAgICAgICAgICAgICAjdGV4dEFyZWFcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0ZXh0XCJcbiAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkVGFnQ2xpY2tIYW5kbGVyKClcIiBjbGFzcz1cInctMTAwXCIgbWF0LXN0cm9rZWQtYnV0dG9uPlxuICAgICAgICAgICAg0JTQvtCx0LDQstC40YLRjCDRgtC10LNcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gIDwvbWF0LWNhcmQ+XG5cbiAgPGRpdiBzdHlsZT1cImhlaWdodDogMTBweDtcIj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgW2hpZGRlbl09XCJpc0xvYWRpbmdcIj5cbiAgPG1hdC1jYXJkIHN0eWxlPVwibWFyZ2luOiAycHg7XCIgY2xhc3M9XCJtYXQtY2FyZFwiPlxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICA8Y3JvY28taHRtbC1hZGQtZmlsZXMtYnRuIChmaWxlc1RhZ3NSZWFkeSk9XCJmaWxlc1RhZ3NSZWFkeUhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAocG9zdEZpbGVzU3RhcnRlZCk9XCJwb3N0RmlsZXNTdGFydGVkRXZlbnRIYW5kbGVyKClcIiBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgPC9jcm9jby1odG1sLWFkZC1maWxlcy1idG4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICA8L21hdC1jYXJkPlxuXG4gIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwcHg7XCI+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IFtoaWRkZW5dPVwiaXNMb2FkaW5nXCI+XG4gIDxkaXYgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cbiAgICBAZm9yICh0YWcgb2YgYm9keVRhZ3M7IHRyYWNrIHRhZzsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgIDxkaXYgY2RrRHJhZz5cbiAgICAgICAgPG1hdC1jYXJkIHN0eWxlPVwibWFyZ2luOiAycHg7XCIgY2xhc3M9XCJtYXQtY2FyZCBzcGVjaWFsXCI+XG4gICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWhhbmRsZVwiIGNka0RyYWdIYW5kbGU+XG4gICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBjbGFzcz1cIm1vdmUtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgPHVzZSBbYXR0ci54bGluazpocmVmXT1cIidtb3ZlLWljb24nIHwgc3ByaXRlSWNvblBhdGhcIj48L3VzZT5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW21hdFRvb2x0aXBdPVwidGFnLnRhZ0Rlc2NyaXB0aW9uLnRhZ1wiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWFsaWduLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWdCdXR0b25JY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpY29uOiB0YWcudGFnRGVzY3JpcHRpb24udGFnfVwiPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxNXB4O1wiPjwvZGl2PlxuICAgICAgICAgICAgPGNyb2NvLWh0bWwtbWFpbi1lZGl0b3ItYmxvY2sgW3RhZ109XCJ0YWdcIiAob25UYWdTYXZlZCk9XCJvblRhZ1NhdmVkSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKG9uVGFnUmVtb3ZlZCk9XCJvblRhZ1JlbW92ZWRIYW5kbGVyKGkpXCI+XG4gICAgICAgICAgICA8L2Nyb2NvLWh0bWwtbWFpbi1lZGl0b3ItYmxvY2s+XG4gICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgICA8L21hdC1jYXJkPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RleHRBbGlnblRvZ2dsZUljb25zIGxldC1pY29uPVwiaWNvblwiPlxuICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiPlxuICAgIDx1c2UgW2F0dHIueGxpbms6aHJlZl09XCJzZXRBbGlnbkJ1dHRvbihpY29uKSB8IHNwcml0ZUljb25QYXRoXCI+PC91c2U+XG4gIDwvc3ZnPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YWdCdXR0b25JY29ucyBsZXQtaWNvbj1cImljb25cIj5cbiAgQGlmIChpY29uLmluZGV4T2YoJ2gnKSA9PT0gMCAmJiBpY29uLmxlbmd0aCA9PT0gMikge1xuICAgIHt7aWNvbi50b1VwcGVyQ2FzZSgpfX1cbiAgfVxuICBAZWxzZSB7XG4gICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIj5cbiAgICAgIDx1c2UgW2F0dHIueGxpbms6aHJlZl09XCJzZXRUYWdCdXR0b24oaWNvbikgfCBzcHJpdGVJY29uUGF0aFwiPjwvdXNlPlxuICAgIDwvc3ZnPlxuICB9XG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
@@ -67,11 +67,11 @@ export class FileIdSelectComponent {
|
|
|
67
67
|
this.loadFiles();
|
|
68
68
|
}
|
|
69
69
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: FileIdSelectComponent, deps: [{ token: i1.PublicFilesQueryService }, { token: i2.PrivateFilesQueryService }, { token: i3.CrocoHtmlFileOptionsService }, { token: CrocoHtmlOptionsToken }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
70
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: FileIdSelectComponent, isStandalone: true, selector: "croco-html-file-id-select", inputs: { labelText: "labelText", fileId: "fileId" }, outputs: { fileId: "fileId", onFileIdChanged: "onFileIdChanged" }, usesOnChanges: true, ngImport: i0, template: "<div>\n <div class=\"form-group\">\n <label for=\"fileName\">{{labelText}}</label>\n <ng-select [(ngModel)]=\"fileId\" (ngModelChange)=\"onModelChanged($event)\" [items]=\"files\" #select\n bindLabel=\"fileName\" (search)=\"onSearchChanged($event)\" [loading]=\"loading\" [loadingText]=\"'\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u044E \u0444\u0430\u0439\u043B\u044B'\"\n dropdownPosition=\"auto\" [bindValue]=\"'fileId'\" labelForId=\"fileName\" placeholder=\"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0444\u0430\u0439\u043B\"\n
|
|
70
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: FileIdSelectComponent, isStandalone: true, selector: "croco-html-file-id-select", inputs: { labelText: "labelText", fileId: "fileId" }, outputs: { fileId: "fileId", onFileIdChanged: "onFileIdChanged" }, usesOnChanges: true, ngImport: i0, template: "<div>\n <div class=\"form-group\">\n <label for=\"fileName\">{{labelText}}</label>\n <ng-select [(ngModel)]=\"fileId\" (ngModelChange)=\"onModelChanged($event)\" [items]=\"files\" #select\n bindLabel=\"fileName\" (search)=\"onSearchChanged($event)\" [loading]=\"loading\" [loadingText]=\"'\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u044E \u0444\u0430\u0439\u043B\u044B'\"\n dropdownPosition=\"auto\" [bindValue]=\"'fileId'\" labelForId=\"fileName\" placeholder=\"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0444\u0430\u0439\u043B\"\n [virtualScroll]=\"true\">\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\n <div>\n <img class=\"mx-auto d-block img-fluid\" [src]=\"getSrc(item.fileId)\" />\n </div>\n <div>\n <span class=\"h5\">\u0424\u0430\u0439\u043B: </span>\n <span class=\"h5\" [ngOptionHighlight]=\"search\"><b>{{item.fileName}}</b></span>\n </div>\n <div>\n <small>\n <span>\n \u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0444\u0430\u0439\u043B\u0430: <b>{{item.fileId }}</b>\n </span>\n </small>\n </div>\n </ng-template>\n </ng-select>\n </div>\n</div>\n\n<div>\n \u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0444\u0430\u0439\u043B\u0430: {{fileId}}\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i4.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
71
71
|
}
|
|
72
72
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: FileIdSelectComponent, decorators: [{
|
|
73
73
|
type: Component,
|
|
74
|
-
args: [{ selector: 'croco-html-file-id-select', standalone: true, imports: [NgSelectModule, FormsModule], template: "<div>\n <div class=\"form-group\">\n <label for=\"fileName\">{{labelText}}</label>\n <ng-select [(ngModel)]=\"fileId\" (ngModelChange)=\"onModelChanged($event)\" [items]=\"files\" #select\n bindLabel=\"fileName\" (search)=\"onSearchChanged($event)\" [loading]=\"loading\" [loadingText]=\"'\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u044E \u0444\u0430\u0439\u043B\u044B'\"\n dropdownPosition=\"auto\" [bindValue]=\"'fileId'\" labelForId=\"fileName\" placeholder=\"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0444\u0430\u0439\u043B\"\n
|
|
74
|
+
args: [{ selector: 'croco-html-file-id-select', standalone: true, imports: [NgSelectModule, FormsModule], template: "<div>\n <div class=\"form-group\">\n <label for=\"fileName\">{{labelText}}</label>\n <ng-select [(ngModel)]=\"fileId\" (ngModelChange)=\"onModelChanged($event)\" [items]=\"files\" #select\n bindLabel=\"fileName\" (search)=\"onSearchChanged($event)\" [loading]=\"loading\" [loadingText]=\"'\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u044E \u0444\u0430\u0439\u043B\u044B'\"\n dropdownPosition=\"auto\" [bindValue]=\"'fileId'\" labelForId=\"fileName\" placeholder=\"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0444\u0430\u0439\u043B\"\n [virtualScroll]=\"true\">\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\n <div>\n <img class=\"mx-auto d-block img-fluid\" [src]=\"getSrc(item.fileId)\" />\n </div>\n <div>\n <span class=\"h5\">\u0424\u0430\u0439\u043B: </span>\n <span class=\"h5\" [ngOptionHighlight]=\"search\"><b>{{item.fileName}}</b></span>\n </div>\n <div>\n <small>\n <span>\n \u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0444\u0430\u0439\u043B\u0430: <b>{{item.fileId }}</b>\n </span>\n </small>\n </div>\n </ng-template>\n </ng-select>\n </div>\n</div>\n\n<div>\n \u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0444\u0430\u0439\u043B\u0430: {{fileId}}\n</div>\n" }]
|
|
75
75
|
}], ctorParameters: () => [{ type: i1.PublicFilesQueryService }, { type: i2.PrivateFilesQueryService }, { type: i3.CrocoHtmlFileOptionsService }, { type: undefined, decorators: [{
|
|
76
76
|
type: Inject,
|
|
77
77
|
args: [CrocoHtmlOptionsToken]
|
|
@@ -84,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
84
84
|
}], onFileIdChanged: [{
|
|
85
85
|
type: Output
|
|
86
86
|
}] } });
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pZC1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1pZC1zZWxlY3QvZmlsZS1pZC1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1pZC1zZWxlY3QvZmlsZS1pZC1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBMkIsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7OztBQXFCdEQsTUFBTSxPQUFPLHFCQUFxQjtJQWtCaEMsSUFBSSwwQkFBMEI7UUFDNUIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELFlBQ21CLGtCQUEyQyxFQUMzQyxtQkFBNkMsRUFDdEQsb0JBQWlELEVBQ1QsUUFBMEI7UUFIekQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF5QjtRQUMzQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTBCO1FBQ3RELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBNkI7UUFDVCxhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQXJCNUUsY0FB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ZTtzQkFEZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEltYWdlTWV0aG9kcyB9IGZyb20gJy4uLy4uL2V4dGVuc2lvbnMvSW1hZ2VNZXRob2RzJztcbmltcG9ydCB7IEZpbGVUeXBlLCBQdWJsaWNGaWxlc1F1ZXJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL1B1YmxpY0ZpbGVzUXVlcnlTZXJ2aWNlJztcbmltcG9ydCB7IENyb2NvSHRtbE9wdGlvbnNUb2tlbiB9IGZyb20gJy4uLy4uL2NvbnN0cyc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nU2VsZWN0TW9kdWxlIH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xuaW1wb3J0IHsgQ3JvY29IdG1sRWRpdG9yRmlsZU9wdGlvbnMsIENyb2NvSHRtbE9wdGlvbnMgfSBmcm9tICcuLi8uLi9vcHRpb25zJztcbmltcG9ydCB7IFByaXZhdGVGaWxlc1F1ZXJ5U2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9Qcml2YXRlRmlsZXNRdWVyeVNlcnZpY2VcIjtcbmltcG9ydCB7IENyb2NvSHRtbEZpbGVPcHRpb25zU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9Dcm9jb0h0bWxGaWxlT3B0aW9uc1NlcnZpY2VcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hRdWVzdGlvbnNGb3JtRGF0YSB7XG4gIHE6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlVW5pZmllZE1vZGVsIHtcbiAgZmlsZUlkOiBzdHJpbmc7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nyb2NvLWh0bWwtZmlsZS1pZC1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1pZC1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLWlkLXNlbGVjdC5jb21wb25lbnQuY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ1NlbGVjdE1vZHVsZSwgRm9ybXNNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVJZFNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICBxOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgbGFiZWxUZXh0ID0gXCLQn9C+0LjRgdC6INGE0LDQudC70L7QslwiXG5cbiAgQElucHV0KClcbiAgQE91dHB1dCgpXG4gIGZpbGVJZDogc3RyaW5nO1xuXG4gIGxvYWRpbmcgPSBmYWxzZTtcblxuICBmaWxlczogRmlsZVVuaWZpZWRNb2RlbFtdID0gW107XG5cbiAgQE91dHB1dCgpXG4gIG9uRmlsZUlkQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGdldCBjcm9jb0h0bWxFZGl0b3JGaWxlT3B0aW9ucygpOiBDcm9jb0h0bWxFZGl0b3JGaWxlT3B0aW9ucyB7XG4gICAgcmV0dXJuIHRoaXMuX2h0bWxTZXR0aW5nc1NlcnZpY2UuZ2V0KCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wdWJsaWNGaWxlU2VydmljZTogUHVibGljRmlsZXNRdWVyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcHJpdmF0ZUZpbGVTZXJ2aWNlOiBQcml2YXRlRmlsZXNRdWVyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfaHRtbFNldHRpbmdzU2VydmljZTogQ3JvY29IdG1sRmlsZU9wdGlvbnNTZXJ2aWNlLFxuICAgIEBJbmplY3QoQ3JvY29IdG1sT3B0aW9uc1Rva2VuKSBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zOiBDcm9jb0h0bWxPcHRpb25zXG4gICkge1xuICB9XG5cbiAgb25Nb2RlbENoYW5nZWQoZmlsZUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uRmlsZUlkQ2hhbmdlZC5lbWl0KGZpbGVJZCk7XG4gIH1cblxuICBnZXRTcmMoZmlsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gSW1hZ2VNZXRob2RzLmJ1aWxkU21hbGxVcmwoZmlsZUlkLCB0aGlzLl9vcHRpb25zKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZEZpbGVzKCk7XG4gIH1cblxuICBwdWJsaWMgbG9hZEZpbGVzKCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgaXNQcml2YXRlID0gdGhpcy5jcm9jb0h0bWxFZGl0b3JGaWxlT3B0aW9ucy51c2VQcml2YXRlRmlsZXM7XG5cbiAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSB7XG4gICAgICBjb3VudDogMTAsXG4gICAgICBvZmZTZXQ6IDAsXG4gICAgICBmaWxlTmFtZTogbnVsbCxcbiAgICAgIGZpbGVUeXBlczogW0ZpbGVUeXBlLkltYWdlXSxcbiAgICAgIGFwcGxpY2F0aW9uSWQ6IGlzUHJpdmF0ZSA/IHRoaXMuY3JvY29IdG1sRWRpdG9yRmlsZU9wdGlvbnMuYXBwbGljYXRpb25JZCA6IG51bGwsXG4gICAgICBxOiB0aGlzLnFcbiAgICB9O1xuXG4gICAgaWYgKGlzUHJpdmF0ZSkge1xuICAgICAgdGhpcy5fcHJpdmF0ZUZpbGVTZXJ2aWNlLnNlYXJjaChzZWFyY2hQYXJhbXMpXG4gICAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgdGhpcy5maWxlcyA9IGRhdGEubGlzdC5tYXAoZWwgPT4gKHsgZmlsZUlkOiBlbC5pZCwgZmlsZU5hbWU6IGVsLmZpbGVOYW1lIH0pKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3B1YmxpY0ZpbGVTZXJ2aWNlLnNlYXJjaChzZWFyY2hQYXJhbXMpXG4gICAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgdGhpcy5maWxlcyA9IGRhdGEubGlzdC5tYXAoZWwgPT4gKHsgZmlsZUlkOiBlbC5maWxlSWQudG9TdHJpbmcoKSwgZmlsZU5hbWU6IGVsLmZpbGVOYW1lIH0pKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaENoYW5nZWQocTogeyB0ZXJtOiBzdHJpbmcsIGl0ZW1zOiBvYmplY3RbXSB9KSB7XG4gICAgdGhpcy5xID0gcS50ZXJtO1xuICAgIHRoaXMubG9hZEZpbGVzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy5sb2FkRmlsZXMoKTtcbiAgfVxufVxuIiwiPGRpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwiZmlsZU5hbWVcIj57e2xhYmVsVGV4dH19PC9sYWJlbD5cbiAgICAgICAgPG5nLXNlbGVjdCBbKG5nTW9kZWwpXT1cImZpbGVJZFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uTW9kZWxDaGFuZ2VkKCRldmVudClcIiBbaXRlbXNdPVwiZmlsZXNcIiAjc2VsZWN0XG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJmaWxlTmFtZVwiIChzZWFyY2gpPVwib25TZWFyY2hDaGFuZ2VkKCRldmVudClcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2xvYWRpbmdUZXh0XT1cIifQl9Cw0LPRgNGD0LbQsNGOINGE0LDQudC70YsnXCJcbiAgICAgICAgICAgIGRyb3Bkb3duUG9zaXRpb249XCJhdXRvXCIgW2JpbmRWYWx1ZV09XCInZmlsZUlkJ1wiIGxhYmVsRm9ySWQ9XCJmaWxlTmFtZVwiIHBsYWNlaG9sZGVyPVwi0JLRi9Cx0YDQsNGC0Ywg0YTQsNC50LtcIlxuICAgICAgICAgICAgW3ZpcnR1YWxTY3JvbGxdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWluZGV4PVwiaW5kZXhcIiBsZXQtc2VhcmNoPVwic2VhcmNoVGVybVwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJteC1hdXRvIGQtYmxvY2sgaW1nLWZsdWlkXCIgW3NyY109XCJnZXRTcmMoaXRlbS5maWxlSWQpXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImg1XCI+0KTQsNC50Ls6IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoNVwiIFtuZ09wdGlvbkhpZ2hsaWdodF09XCJzZWFyY2hcIj48Yj57e2l0ZW0uZmlsZU5hbWV9fTwvYj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YTQsNC50LvQsDogPGI+e3tpdGVtLmZpbGVJZCB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctc2VsZWN0PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXY+XG4gICAg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YTQsNC50LvQsDoge3tmaWxlSWR9fVxuPC9kaXY+XG4iXX0=
|
|
@@ -63,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
63
63
|
}], onPrivateFilesUploaded: [{
|
|
64
64
|
type: Output
|
|
65
65
|
}] } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWZpbGVzLWJ0bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcm9jby1odG1sL3NyYy9saWIvY29tcG9uZW50cy91cGxvYWQtZmlsZXMtYnRuL3VwbG9hZC1maWxlcy1idG4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMvdXBsb2FkLWZpbGVzLWJ0bi91cGxvYWQtZmlsZXMtYnRuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFlckQsTUFBTSxPQUFPLHVCQUF1QjtJQTBCbEMsWUFDVSx3QkFBaUQsRUFDakQseUJBQW1ELEVBQ25ELG9CQUFpRDtRQUZqRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXlCO1FBQ2pELDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMEI7UUFDbkQseUJBQW9CLEdBQXBCLG9CQUFvQixDQUE2QjtRQXZCM0QsZUFBVSxHQUFXLEtBQUssQ0FBQztRQUczQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBR2xCLFlBQU8sR0FBVyxpQkFBaUIsQ0FBQztRQUdwQyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBR2YscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFHMUQsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7UUFHdEUsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7SUFNbkUsQ0FBQztJQUVMLGVBQWUsQ0FBQyxLQUFlO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7WUFDekIsVUFBVSxFQUFFLEtBQUssQ0FBQyxNQUFNO1NBQ3pCLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyx5QkFBeUI7aUJBQzNCLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztpQkFDL0QsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNoQixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxDQUFBO1FBQ04sQ0FBQzthQUNJLENBQUM7WUFDSixJQUFJLENBQUMsd0JBQXdCO2lCQUMxQixTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztpQkFDdEIsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNoQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxDQUFBO1FBQ04sQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkMsQ0FBQzs4R0F2RFUsdUJBQXVCO2tHQUF2Qix1QkFBdUIsMGJDakJwQyxnUkFDK0ksMEREY25JLFNBQVM7OzJGQUVSLHVCQUF1QjtrQkFQbkMsU0FBUzsrQkFDRSw0QkFBNEIsY0FHMUIsSUFBSSxXQUNQLENBQUMsU0FBUyxDQUFDOzZLQUtaLFNBQVM7c0JBRGhCLFNBQVM7dUJBQUMsWUFBWTtnQkFJdkIsVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixNQUFNO2dCQUlQLHFCQUFxQjtzQkFEcEIsTUFBTTtnQkFJUCxzQkFBc0I7c0JBRHJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQdWJsaWNGaWxlc1VwbG9hZFJlc3BvbnNlLCBQdWJsaWNGaWxlVXBsb2FkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL1B1YmxpY0ZpbGVVcGxvYWRTZXJ2aWNlJztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBQcml2YXRlRmlsZXNDcmVhdGVkUmVzdWx0LCBQcml2YXRlRmlsZVVwbG9hZFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvUHJpdmF0ZUZpbGVVcGxvYWRTZXJ2aWNlXCI7XG5pbXBvcnQgeyBDcm9jb0h0bWxGaWxlT3B0aW9uc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvQ3JvY29IdG1sRmlsZU9wdGlvbnNTZXJ2aWNlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVBvc3RpbmdTdGFydGVkIHtcbiAgZmlsZXNDb3VudDogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcm9jby1hcHAtdXBsb2FkLWZpbGVzLWJ0bicsXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtZmlsZXMtYnRuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLWZpbGVzLWJ0bi5jb21wb25lbnQuY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNYXRCdXR0b25dXG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZEZpbGVzQnRuQ29tcG9uZW50IHtcblxuICBAVmlld0NoaWxkKCdmaWxlc0lucHV0JylcbiAgcHJpdmF0ZSBmaWxlSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpXG4gIGV4dEFjY2VwdHM6IHN0cmluZyA9IFwiKi8qXCI7XG5cbiAgQElucHV0KClcbiAgaXNNdWx0aXBsZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgYnRuVGV4dDogc3RyaW5nID0gXCLQl9Cw0LPRgNGD0LfQuNGC0Ywg0YTQsNC50LvRi1wiO1xuXG4gIEBJbnB1dCgpXG4gIGhpZGRlbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBwb3N0RmlsZXNTdGFydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlUG9zdGluZ1N0YXJ0ZWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uUHVibGljRmlsZXNVcGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UHVibGljRmlsZXNVcGxvYWRSZXNwb25zZT4oKTtcblxuICBAT3V0cHV0KClcbiAgb25Qcml2YXRlRmlsZXNVcGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UHJpdmF0ZUZpbGVzQ3JlYXRlZFJlc3VsdD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9wdWJsaWNGaWxlVXBsb2FkU2VydmljZTogUHVibGljRmlsZVVwbG9hZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfcHJpdmF0ZUZpbGVVcGxvYWRTZXJ2aWNlOiBQcml2YXRlRmlsZVVwbG9hZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfaHRtbFNldHRpbmdzU2VydmljZTogQ3JvY29IdG1sRmlsZU9wdGlvbnNTZXJ2aWNlLFxuICApIHsgfVxuXG4gIGhhbmRsZUZpbGVJbnB1dChmaWxlczogRmlsZUxpc3QpIHtcbiAgICB0aGlzLnBvc3RGaWxlc1N0YXJ0ZWQuZW1pdCh7XG4gICAgICBmaWxlc0NvdW50OiBmaWxlcy5sZW5ndGhcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLl9odG1sU2V0dGluZ3NTZXJ2aWNlLmdldCgpLnVzZVByaXZhdGVGaWxlcykge1xuICAgICAgdGhpcy5fcHJpdmF0ZUZpbGVVcGxvYWRTZXJ2aWNlXG4gICAgICAgIC5wb3N0RmlsZXMoZmlsZXMsIHRoaXMuX2h0bWxTZXR0aW5nc1NlcnZpY2UuZ2V0KCkuYXBwbGljYXRpb25JZClcbiAgICAgICAgLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICB0aGlzLm9uUHJpdmF0ZUZpbGVzVXBsb2FkZWQuZW1pdChkYXRhKTtcbiAgICAgICAgfSlcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLl9wdWJsaWNGaWxlVXBsb2FkU2VydmljZVxuICAgICAgICAucG9zdEZpbGVzKGZpbGVzLCBudWxsKVxuICAgICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgIHRoaXMub25QdWJsaWNGaWxlc1VwbG9hZGVkLmVtaXQoZGF0YSk7XG4gICAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgY2xpY2tGaWxlSW5wdXQoKSB7XG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG59XG4iLCI8YnV0dG9uIFtoaWRkZW5dPVwiaGlkZGVuXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImZpbGVzSW5wdXQuY2xpY2soKVwiPnt7YnRuVGV4dH19PC9idXR0b24+XG48aW5wdXQgW2hpZGRlbl09XCJ0cnVlXCIgW2FjY2VwdF09XCJleHRBY2NlcHRzXCIgW211bHRpcGxlXT1cImlzTXVsdGlwbGVcIiB0eXBlPVwiZmlsZVwiICNmaWxlc0lucHV0IChjaGFuZ2UpPVwiaGFuZGxlRmlsZUlucHV0KCRldmVudC50YXJnZXQuZmlsZXMpXCIgLz4iXX0=
|
package/esm2022/lib/components/xml-tags/file-image-tag-view/file-image-tag-view.component.mjs
CHANGED
|
@@ -41,7 +41,7 @@ export class FileImageTagViewComponent {
|
|
|
41
41
|
this.unsubscribe.complete();
|
|
42
42
|
}
|
|
43
43
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: FileImageTagViewComponent, deps: [{ token: i1.ScreenWidthService }, { token: CrocoHtmlOptionsToken }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: FileImageTagViewComponent, isStandalone: true, selector: "croco-html-file-image-tag-view", inputs: { item: "item" }, ngImport: i0, template: "<img\n [ngStyle]=\"{ 'max-height': imageMaxHeight ? imageMaxHeight + 'px' : '100%', 'max-width': imageMaxWidth ? imageMaxWidth + 'px' : '100%', }\"\n class=\"mx-auto d-block img-fluid\"\n [src]=\"imageSrc\"\n alt=\"\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043D\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043D\u043E\"\n/>\n",
|
|
44
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: FileImageTagViewComponent, isStandalone: true, selector: "croco-html-file-image-tag-view", inputs: { item: "item" }, ngImport: i0, template: "<img\n [ngStyle]=\"{ 'max-height': imageMaxHeight ? imageMaxHeight + 'px' : '100%', 'max-width': imageMaxWidth ? imageMaxWidth + 'px' : '100%', }\"\n class=\"mx-auto d-block img-fluid\"\n [src]=\"imageSrc\"\n alt=\"\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043D\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043D\u043E\"\n/>\n", dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
45
45
|
}
|
|
46
46
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: FileImageTagViewComponent, decorators: [{
|
|
47
47
|
type: Component,
|
|
@@ -54,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
54
54
|
}] }], propDecorators: { item: [{
|
|
55
55
|
type: Input
|
|
56
56
|
}] } });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbWFnZS10YWctdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcm9jby1odG1sL3NyYy9saWIvY29tcG9uZW50cy94bWwtdGFncy9maWxlLWltYWdlLXRhZy12aWV3L2ZpbGUtaW1hZ2UtdGFnLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMveG1sLXRhZ3MvZmlsZS1pbWFnZS10YWctdmlldy9maWxlLWltYWdlLXRhZy12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUxQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBV3hELE1BQU0sT0FBTyx5QkFBeUI7SUFFcEMsSUFBYSxJQUFJLENBQUMsSUFBb0I7UUFDcEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQXdCLENBQUM7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFTRCxZQUE2QixrQkFBc0MsRUFDakIsUUFBMEI7UUFEL0MsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQVI1RSxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsYUFBUSxHQUFvQixFQUFFLENBQUE7UUFFdEIsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ25DLG1CQUFjLEdBQVcsSUFBSSxDQUFDO1FBQzlCLGtCQUFhLEdBQVcsSUFBSSxDQUFDO0lBSWhDLENBQUM7SUFFTCxnQkFBZ0IsQ0FBQyxrQkFBMEI7UUFDekMsSUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDLCtCQUErQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFOUUsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUM7UUFDakQsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsRUFBRTthQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNqQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDdkIsSUFBSSxZQUFZLEdBQUcsWUFBWSxDQUFDLGdDQUFnQyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFN0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO1lBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7OEdBM0NVLHlCQUF5QixvREFnQjFCLHFCQUFxQjtrR0FoQnBCLHlCQUF5QixvSENsQnRDLDJXQU1BLDRDRFFJLE9BQU87OzJGQUlFLHlCQUF5QjtrQkFSckMsU0FBUzsrQkFDRSxnQ0FBZ0MsV0FFakM7d0JBQ1AsT0FBTztxQkFDUixjQUNXLElBQUk7OzBCQWtCYixNQUFNOzJCQUFDLHFCQUFxQjt5Q0FkbEIsSUFBSTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEludGVyZmFjZUJsb2NrIH0gZnJvbSAnLi4vLi4vLi4vZXh0ZW5zaW9ucy9JbnRlcmZhY2VCbG9jayc7XG5pbXBvcnQgeyBJbWFnZU1ldGhvZHMgfSBmcm9tICcuLi8uLi8uLi9leHRlbnNpb25zJztcbmltcG9ydCB7IFNjcmVlbldpZHRoU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9zY3JlZW4td2lkdGguc2VydmljZVwiO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IE5nU3R5bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDcm9jb0h0bWxPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vb3B0aW9ucyc7XG5pbXBvcnQgeyBDcm9jb0h0bWxPcHRpb25zVG9rZW4gfSBmcm9tICcuLi8uLi8uLi9jb25zdHMnO1xuaW1wb3J0IHsgRmlsZUltYWdlVGFnRGF0YSwgSU1lZGlhUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nyb2NvLWh0bWwtZmlsZS1pbWFnZS10YWctdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLWltYWdlLXRhZy12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW1xuICAgIE5nU3R5bGVcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlSW1hZ2VUYWdWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHNldCBpdGVtKGl0ZW06IEludGVyZmFjZUJsb2NrKSB7XG4gICAgbGV0IGRhdGEgPSBpdGVtLmRhdGEgYXMgRmlsZUltYWdlVGFnRGF0YTtcbiAgICB0aGlzLmltYWdlU3JjID0gZGF0YS5zcmM7XG4gICAgdGhpcy5yZXF1ZXN0cyA9IHRoaXMuZ2V0TWVkaWFSZXF1ZXN0cyhkYXRhLnNjcmVlbk1lZGlhUmVxdWVzdCk7XG4gIH1cblxuICBpbWFnZVNyYyA9IFwiXCI7XG4gIHJlcXVlc3RzOiBJTWVkaWFSZXF1ZXN0W10gPSBbXVxuXG4gIHByaXZhdGUgdW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgaW1hZ2VNYXhIZWlnaHQ6IG51bWJlciA9IG51bGw7XG4gIHB1YmxpYyBpbWFnZU1heFdpZHRoOiBudW1iZXIgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2NyZWVuV2lkdGhTZXJ2aWNlOiBTY3JlZW5XaWR0aFNlcnZpY2UsXG4gICAgQEluamVjdChDcm9jb0h0bWxPcHRpb25zVG9rZW4pIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnM6IENyb2NvSHRtbE9wdGlvbnNcbiAgKSB7IH1cblxuICBnZXRNZWRpYVJlcXVlc3RzKHNjcmVlbk1lZGlhUmVxdWVzdDogc3RyaW5nKSA6IElNZWRpYVJlcXVlc3RbXSB7XG4gICAgbGV0IHJlc3VsdCA9IEltYWdlTWV0aG9kcy5tZWRpYVJlcXVlc3RTdHJpbmdUb0FycmF5UGFyc2VyKHNjcmVlbk1lZGlhUmVxdWVzdCk7XG5cbiAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMuZ2xvYmFsTWVkaWFSZXF1ZXN0cyA/PyBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zY3JlZW5XaWR0aFNlcnZpY2UuZ2V0U2NyZWVuV2lkdGgoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZShzY3JlZW5XaWR0aCA9PiB7XG4gICAgICAgIGxldCByZXN0cmljdGlvbnMgPSBJbWFnZU1ldGhvZHMuZ2V0SW1hZ2VSZXN0cmljdGlvbnNCeVNjcmVlblNpemUoc2NyZWVuV2lkdGgsIHRoaXMucmVxdWVzdHMpO1xuICAgICAgICBcbiAgICAgICAgdGhpcy5pbWFnZU1heEhlaWdodCA9IHJlc3RyaWN0aW9ucy5tYXhIZWlnaHQ7XG4gICAgICAgIHRoaXMuaW1hZ2VNYXhXaWR0aCA9IHJlc3RyaWN0aW9ucy5tYXhXaWR0aDtcbiAgICAgIH0pXG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxpbWdcbiAgW25nU3R5bGVdPVwieyAnbWF4LWhlaWdodCc6IGltYWdlTWF4SGVpZ2h0ID8gaW1hZ2VNYXhIZWlnaHQgKyAncHgnIDogJzEwMCUnLCAnbWF4LXdpZHRoJzogaW1hZ2VNYXhXaWR0aCA/IGltYWdlTWF4V2lkdGggKyAncHgnIDogJzEwMCUnLCB9XCJcbiAgY2xhc3M9XCJteC1hdXRvIGQtYmxvY2sgaW1nLWZsdWlkXCJcbiAgW3NyY109XCJpbWFnZVNyY1wiXG4gIGFsdD1cItCY0LfQvtCx0YDQsNC20LXQvdC40LUg0L3QtSDQt9Cw0LPRgNGD0LbQtdC90L5cIlxuLz5cbiJdfQ==
|
|
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
21
21
|
}], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { rawHtml: [{
|
|
22
22
|
type: Input
|
|
23
23
|
}] } });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1yYXctdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcm9jby1odG1sL3NyYy9saWIvY29tcG9uZW50cy94bWwtdGFncy9odG1sLXJhdy12aWV3L2h0bWwtcmF3LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMveG1sLXRhZ3MvaHRtbC1yYXctdmlldy9odG1sLXJhdy12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQzs7O0FBQ1IsQ0FBQztBQU9wRSxNQUFNLE9BQU8sb0JBQW9CO0lBTS9CLFlBQTZCLFVBQXdCO1FBQXhCLGVBQVUsR0FBVixVQUFVLENBQWM7UUFKNUMsWUFBTyxHQUFHLEVBQUUsQ0FBQztJQUltQyxDQUFDO0lBRTFELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hFLENBQUM7SUFDSCxDQUFDOzhHQVpVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLG9JQ1JqQyw4REFHQTs7MkZES2Esb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLHFCQUFxQixjQUVuQixJQUFJO2lGQUlQLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInOztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3JvY28taHRtbC1yYXctdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9odG1sLXJhdy12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBIdG1sUmF3Vmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KCkgcmF3SHRtbCA9IFwiXCI7XG5cbiAgc2FmZUh0bWw6IFNhZmVIdG1sO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX3Nhbml0aXplcjogRG9tU2FuaXRpemVyKSB7IH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3Jhd0h0bWwnXSAmJiBjaGFuZ2VzWydyYXdIdG1sJ10uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzWydyYXdIdG1sJ10ucHJldmlvdXNWYWx1ZSkge1xuICAgICAgdGhpcy5zYWZlSHRtbCA9IHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh0aGlzLnJhd0h0bWwpO1xuICAgIH1cbiAgfVxufVxuIiwiQGlmIChyYXdIdG1sKSB7XG4gIDxkaXYgW2lubmVySFRNTF09XCJzYWZlSHRtbFwiPjwvZGl2PlxufVxuIl19
|