croco-html 2.20.0 → 2.21.0

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.
@@ -1,18 +1,21 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
2
  import { VisualEditorComponent } from '../visual-editor/visual-editor.component';
3
- import { ToPreviewPipe } from '../../../pipes/to-preview.pipe';
4
3
  import { XmlTagViewComponent } from '../../xml-tags/xml-tag-view/xml-tag-view.component';
5
- import { MatCard, MatCardContent } from '@angular/material/card';
4
+ import { MatCardModule } from '@angular/material/card';
6
5
  import { MatButton } from '@angular/material/button';
7
6
  import { FormsModule } from '@angular/forms';
8
7
  import { CdkTextareaAutosize } from '@angular/cdk/text-field';
9
8
  import { MatInput } from '@angular/material/input';
10
9
  import { MatFormField, MatLabel } from '@angular/material/form-field';
11
- import { MatTabGroup, MatTab } from '@angular/material/tabs';
10
+ import { MatTabsModule } from '@angular/material/tabs';
11
+ import { HtmlViewComponent } from "../../html-view/html-view.component";
12
+ import { HtmlViewController } from '../../../services/HtmlViewController';
12
13
  import * as i0 from "@angular/core";
13
14
  import * as i1 from "ngx-clipboard";
14
15
  import * as i2 from "@angular/material/snack-bar";
15
- import * as i3 from "@angular/forms";
16
+ import * as i3 from "@angular/material/tabs";
17
+ import * as i4 from "@angular/forms";
18
+ import * as i5 from "@angular/material/card";
16
19
  export class MainEditorComponent {
17
20
  constructor(_clipboardService, _snackBar, _cdref) {
18
21
  this._clipboardService = _clipboardService;
@@ -21,6 +24,7 @@ export class MainEditorComponent {
21
24
  this.visualEditorRendered = false;
22
25
  this.showMarkUp = true;
23
26
  this.useHtmlRaw = false;
27
+ this.controller = new HtmlViewController();
24
28
  this.html = "";
25
29
  this.onHtmlChanged = new EventEmitter();
26
30
  }
@@ -54,11 +58,23 @@ export class MainEditorComponent {
54
58
  this.visualEditor.recalculateBodyTags();
55
59
  }
56
60
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: MainEditorComponent, deps: [{ token: i1.ClipboardService }, { token: i2.MatSnackBar }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
57
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: MainEditorComponent, isStandalone: true, selector: "croco-html-main-editor", inputs: { showMarkUp: "showMarkUp", useHtmlRaw: "useHtmlRaw", html: "html" }, outputs: { html: "html", onHtmlChanged: "onHtmlChanged" }, viewQueries: [{ propertyName: "visualEditor", first: true, predicate: ["visualEditor"], descendants: true, static: true }], ngImport: i0, template: "<mat-tab-group>\n <mat-tab label=\"\u0412\u0438\u0437\u0443\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\">\n\n <div style=\"height: 20px;\"></div>\n\n <croco-visual-editor #visualEditor\n [useHtmlRaw]=\"useHtmlRaw\"\n [html]=\"html\"\n (onHtmlChanged)=\"onHtmlChangedHandler($event)\"\n (rendered)=\"visualEditorRenderedHandler()\">\n </croco-visual-editor>\n\n <div style=\"height: 20px;\"></div>\n\n </mat-tab>\n\n <mat-tab label=\"\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430\">\n <div style=\"height: 10px;\"></div>\n @if (visualEditorRendered) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434</mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434\" [(ngModel)]=\"html\"\n (ngModelChange)=\"textAreaModelChangedHandler()\"></textarea>\n </mat-form-field>\n </div>\n }\n\n <button (click)=\"copyMarkUp()\"\n mat-raised-button color=\"primary\">\n \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0443\n </button>\n </mat-tab>\n <mat-tab label=\"\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\">\n <mat-card style=\"padding: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <croco-html-xml-tag-view [data]=\"html | topreview\">\n </croco-html-xml-tag-view>\n </mat-card-content>\n </mat-card>\n </mat-tab>\n</mat-tab-group>\n", styles: [".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)}\n"], dependencies: [{ kind: "component", type: MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: VisualEditorComponent, selector: "croco-visual-editor", inputs: ["showMarkUp", "useHtmlRaw", "html"], outputs: ["html", "onHtmlChanged", "rendered"] }, { 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: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: XmlTagViewComponent, selector: "croco-html-xml-tag-view", inputs: ["data", "controller"] }, { kind: "pipe", type: ToPreviewPipe, name: "topreview" }] }); }
61
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: MainEditorComponent, isStandalone: true, selector: "croco-html-main-editor", inputs: { showMarkUp: "showMarkUp", useHtmlRaw: "useHtmlRaw", controller: "controller", html: "html" }, outputs: { html: "html", onHtmlChanged: "onHtmlChanged" }, viewQueries: [{ propertyName: "visualEditor", first: true, predicate: ["visualEditor"], descendants: true, static: true }], ngImport: i0, template: "<mat-tab-group>\n <mat-tab label=\"\u0412\u0438\u0437\u0443\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\">\n\n <div style=\"height: 20px;\"></div>\n\n <croco-visual-editor #visualEditor\n [useHtmlRaw]=\"useHtmlRaw\"\n [html]=\"html\"\n (onHtmlChanged)=\"onHtmlChangedHandler($event)\"\n (rendered)=\"visualEditorRenderedHandler()\">\n </croco-visual-editor>\n\n <div style=\"height: 20px;\"></div>\n\n </mat-tab>\n\n <mat-tab label=\"\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430\">\n <div style=\"height: 10px;\"></div>\n @if (visualEditorRendered) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434</mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434\" [(ngModel)]=\"html\"\n (ngModelChange)=\"textAreaModelChangedHandler()\"></textarea>\n </mat-form-field>\n </div>\n }\n\n <button (click)=\"copyMarkUp()\"\n mat-raised-button color=\"primary\">\n \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0443\n </button>\n </mat-tab>\n <mat-tab label=\"\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\">\n <mat-card style=\"padding: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <croco-html-view [controller]=\"controller\" [html]=\"html\">\n </croco-html-view>\n </mat-card-content>\n </mat-card>\n </mat-tab>\n</mat-tab-group>\n", styles: [".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)}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: VisualEditorComponent, selector: "croco-visual-editor", inputs: ["showMarkUp", "useHtmlRaw", "html"], outputs: ["html", "onHtmlChanged", "rendered"] }, { 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: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: HtmlViewComponent, selector: "croco-html-view", inputs: ["html", "controller"] }] }); }
58
62
  }
59
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: MainEditorComponent, decorators: [{
60
64
  type: Component,
61
- args: [{ selector: 'croco-html-main-editor', standalone: true, imports: [MatTabGroup, MatTab, VisualEditorComponent, MatFormField, MatLabel, MatInput, CdkTextareaAutosize, FormsModule, MatButton, MatCard, MatCardContent, XmlTagViewComponent, ToPreviewPipe], template: "<mat-tab-group>\n <mat-tab label=\"\u0412\u0438\u0437\u0443\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\">\n\n <div style=\"height: 20px;\"></div>\n\n <croco-visual-editor #visualEditor\n [useHtmlRaw]=\"useHtmlRaw\"\n [html]=\"html\"\n (onHtmlChanged)=\"onHtmlChangedHandler($event)\"\n (rendered)=\"visualEditorRenderedHandler()\">\n </croco-visual-editor>\n\n <div style=\"height: 20px;\"></div>\n\n </mat-tab>\n\n <mat-tab label=\"\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430\">\n <div style=\"height: 10px;\"></div>\n @if (visualEditorRendered) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434</mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434\" [(ngModel)]=\"html\"\n (ngModelChange)=\"textAreaModelChangedHandler()\"></textarea>\n </mat-form-field>\n </div>\n }\n\n <button (click)=\"copyMarkUp()\"\n mat-raised-button color=\"primary\">\n \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0443\n </button>\n </mat-tab>\n <mat-tab label=\"\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\">\n <mat-card style=\"padding: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <croco-html-xml-tag-view [data]=\"html | topreview\">\n </croco-html-xml-tag-view>\n </mat-card-content>\n </mat-card>\n </mat-tab>\n</mat-tab-group>\n", styles: [".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)}\n"] }]
65
+ args: [{ selector: 'croco-html-main-editor', standalone: true, imports: [
66
+ MatTabsModule,
67
+ VisualEditorComponent,
68
+ MatFormField,
69
+ MatLabel,
70
+ MatInput,
71
+ CdkTextareaAutosize,
72
+ FormsModule,
73
+ MatButton,
74
+ MatCardModule,
75
+ XmlTagViewComponent,
76
+ HtmlViewComponent
77
+ ], template: "<mat-tab-group>\n <mat-tab label=\"\u0412\u0438\u0437\u0443\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\">\n\n <div style=\"height: 20px;\"></div>\n\n <croco-visual-editor #visualEditor\n [useHtmlRaw]=\"useHtmlRaw\"\n [html]=\"html\"\n (onHtmlChanged)=\"onHtmlChangedHandler($event)\"\n (rendered)=\"visualEditorRenderedHandler()\">\n </croco-visual-editor>\n\n <div style=\"height: 20px;\"></div>\n\n </mat-tab>\n\n <mat-tab label=\"\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430\">\n <div style=\"height: 10px;\"></div>\n @if (visualEditorRendered) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434</mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434\" [(ngModel)]=\"html\"\n (ngModelChange)=\"textAreaModelChangedHandler()\"></textarea>\n </mat-form-field>\n </div>\n }\n\n <button (click)=\"copyMarkUp()\"\n mat-raised-button color=\"primary\">\n \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0443\n </button>\n </mat-tab>\n <mat-tab label=\"\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\">\n <mat-card style=\"padding: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <croco-html-view [controller]=\"controller\" [html]=\"html\">\n </croco-html-view>\n </mat-card-content>\n </mat-card>\n </mat-tab>\n</mat-tab-group>\n", styles: [".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)}\n"] }]
62
78
  }], ctorParameters: () => [{ type: i1.ClipboardService }, { type: i2.MatSnackBar }, { type: i0.ChangeDetectorRef }], propDecorators: { visualEditor: [{
63
79
  type: ViewChild,
64
80
  args: ["visualEditor", { static: true }]
@@ -66,6 +82,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
66
82
  type: Input
67
83
  }], useHtmlRaw: [{
68
84
  type: Input
85
+ }], controller: [{
86
+ type: Input
69
87
  }], html: [{
70
88
  type: Input
71
89
  }, {
@@ -73,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
73
91
  }], onHtmlChanged: [{
74
92
  type: Output
75
93
  }] } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMvZWRpdG9yL21haW4tZWRpdG9yL21haW4tZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci9tYWluLWVkaXRvci9tYWluLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXlELFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakosT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQVM3RCxNQUFNLE9BQU8sbUJBQW1CO0lBb0I5QixZQUFvQixpQkFBbUMsRUFDN0MsU0FBc0IsRUFDdEIsTUFBeUI7UUFGZixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQzdDLGNBQVMsR0FBVCxTQUFTLENBQWE7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFwQm5DLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQU03QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBR2xCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFJbkIsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUdsQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFJSixDQUFDO0lBRXhDLGVBQWU7UUFDYixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxJQUFZO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCwyQkFBMkI7UUFDekIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMscUNBQXFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDMUMsQ0FBQzs4R0EzRFUsbUJBQW1CO2tHQUFuQixtQkFBbUIsdVZDckJoQyw4ckRBNENBLDR6QkR6QmMsV0FBVyxpWkFBRSxNQUFNLHFLQUFFLHFCQUFxQiw4SkFBRSxZQUFZLDRMQUFFLFFBQVEsc0RBQUUsUUFBUSxpVUFBRSxtQkFBbUIsd01BQUUsV0FBVywrbUJBQUUsU0FBUyxpTEFBRSxPQUFPLG9HQUFFLGNBQWMsNkRBQUUsbUJBQW1CLCtGQUFFLGFBQWE7OzJGQUV2TCxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0ksd0JBQXdCLGNBR3RCLElBQUksV0FDUCxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLGFBQWEsQ0FBQzsrSUFPbk0sWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSTNDLFVBQVU7c0JBRFQsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBS04sSUFBSTtzQkFGSCxLQUFLOztzQkFDTCxNQUFNO2dCQUlQLGFBQWE7c0JBRFosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudENoZWNrZWQsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IENsaXBib2FyZFNlcnZpY2UgfSBmcm9tICduZ3gtY2xpcGJvYXJkJztcbmltcG9ydCB7IFZpc3VhbEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uL3Zpc3VhbC1lZGl0b3IvdmlzdWFsLWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9QcmV2aWV3UGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL3RvLXByZXZpZXcucGlwZSc7XG5pbXBvcnQgeyBYbWxUYWdWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4veG1sLXRhZ3MveG1sLXRhZy12aWV3L3htbC10YWctdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0Q2FyZCwgTWF0Q2FyZENvbnRlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENka1RleHRhcmVhQXV0b3NpemUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGV4dC1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCwgTWF0TGFiZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdFRhYkdyb3VwLCBNYXRUYWIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjcm9jby1odG1sLW1haW4tZWRpdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWFpbi1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL21haW4tZWRpdG9yLmNvbXBvbmVudC5jc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtNYXRUYWJHcm91cCwgTWF0VGFiLCBWaXN1YWxFZGl0b3JDb21wb25lbnQsIE1hdEZvcm1GaWVsZCwgTWF0TGFiZWwsIE1hdElucHV0LCBDZGtUZXh0YXJlYUF1dG9zaXplLCBGb3Jtc01vZHVsZSwgTWF0QnV0dG9uLCBNYXRDYXJkLCBNYXRDYXJkQ29udGVudCwgWG1sVGFnVmlld0NvbXBvbmVudCwgVG9QcmV2aWV3UGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgTWFpbkVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgdmlzdWFsRWRpdG9yUmVuZGVyZWQgPSBmYWxzZTtcbiAgXG4gIEBWaWV3Q2hpbGQoXCJ2aXN1YWxFZGl0b3JcIiwgeyBzdGF0aWM6IHRydWUgfSlcbiAgdmlzdWFsRWRpdG9yOiBWaXN1YWxFZGl0b3JDb21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgc2hvd01hcmtVcCA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgdXNlSHRtbFJhdyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIEBPdXRwdXQoKVxuICBodG1sOiBzdHJpbmcgPSBcIlwiO1xuXG4gIEBPdXRwdXQoKVxuICBvbkh0bWxDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2xpcGJvYXJkU2VydmljZTogQ2xpcGJvYXJkU2VydmljZSxcbiAgICBwcml2YXRlIF9zbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHJpdmF0ZSBfY2RyZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cbiAgXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY2FsY3VsYXRlQm9keVRhZ3MoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jZHJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB2aXN1YWxFZGl0b3JSZW5kZXJlZEhhbmRsZXIoKXtcbiAgICB0aGlzLnZpc3VhbEVkaXRvclJlbmRlcmVkID0gdHJ1ZTtcbiAgICB0aGlzLnJlY2FsY3VsYXRlQm9keVRhZ3MoKTtcbiAgfVxuXG4gIG9uSHRtbENoYW5nZWRIYW5kbGVyKGh0bWw6IHN0cmluZykge1xuICAgIHRoaXMuaHRtbCA9IGh0bWw7XG4gICAgdGhpcy5vbkh0bWxDaGFuZ2VkLmVtaXQoaHRtbCk7XG4gIH1cblxuICB0ZXh0QXJlYU1vZGVsQ2hhbmdlZEhhbmRsZXIoKXtcbiAgICB0aGlzLnJlY2FsY3VsYXRlQm9keVRhZ3MoKTtcbiAgICB0aGlzLm9uSHRtbENoYW5nZWRIYW5kbGVyKHRoaXMuaHRtbCk7XG4gIH1cblxuICByZWNhbGN1bGF0ZUJvZHlUYWdzKCkge1xuICAgIHRoaXMudmlzdWFsRWRpdG9yLmh0bWwgPSB0aGlzLmh0bWw7XG4gICAgdGhpcy52aXN1YWxFZGl0b3IucmVjYWxjdWxhdGVCb2R5VGFncygpO1xuICB9XG5cbiAgY29weU1hcmtVcCgpIHtcbiAgICB0aGlzLl9zbmFja0Jhci5vcGVuKFwi0KDQsNC30LzQtdGC0LrQsCDRgdC60L7Qv9C40YDQvtCy0LDQvdCwINCyINCx0YPRhNC10YAg0L7QsdC80LXQvdCwXCIsIFwi0JfQsNC60YDRi9GC0YxcIiwgeyBkdXJhdGlvbjogMTUwMCB9KTtcbiAgICB0aGlzLl9jbGlwYm9hcmRTZXJ2aWNlLmNvcHkodGhpcy5odG1sKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudmlzdWFsRWRpdG9yLnJlY2FsY3VsYXRlQm9keVRhZ3MoKTtcbiAgfVxufVxuIiwiPG1hdC10YWItZ3JvdXA+XG4gIDxtYXQtdGFiIGxhYmVsPVwi0JLQuNC30YPQsNC70YzQvdGL0Lkg0YDQtdC00LDQutGC0L7RgFwiPlxuXG4gICAgPGRpdiBzdHlsZT1cImhlaWdodDogMjBweDtcIj48L2Rpdj5cblxuICAgIDxjcm9jby12aXN1YWwtZWRpdG9yICN2aXN1YWxFZGl0b3JcbiAgICAgIFt1c2VIdG1sUmF3XT1cInVzZUh0bWxSYXdcIlxuICAgICAgW2h0bWxdPVwiaHRtbFwiXG4gICAgICAob25IdG1sQ2hhbmdlZCk9XCJvbkh0bWxDaGFuZ2VkSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgIChyZW5kZXJlZCk9XCJ2aXN1YWxFZGl0b3JSZW5kZXJlZEhhbmRsZXIoKVwiPlxuICAgIDwvY3JvY28tdmlzdWFsLWVkaXRvcj5cblxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDIwcHg7XCI+PC9kaXY+XG5cbiAgPC9tYXQtdGFiPlxuXG4gIDxtYXQtdGFiIGxhYmVsPVwi0KDQsNC30LzQtdGC0LrQsFwiPlxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwcHg7XCI+PC9kaXY+XG4gICAgQGlmICh2aXN1YWxFZGl0b3JSZW5kZXJlZCkge1xuICAgICAgPGRpdj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPtCY0YHRhdC+0LTQvdGL0Lkg0LrQvtC0PC9tYXQtbGFiZWw+XG4gICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IGNka1RleHRhcmVhQXV0b3NpemUgI2F1dG9zaXplPVwiY2RrVGV4dGFyZWFBdXRvc2l6ZVwiXG4gICAgICAgICAgICBjZGtBdXRvc2l6ZU1pblJvd3M9XCIxXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi0JjRgdGF0L7QtNC90YvQuSDQutC+0LRcIiBbKG5nTW9kZWwpXT1cImh0bWxcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRleHRBcmVhTW9kZWxDaGFuZ2VkSGFuZGxlcigpXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDxidXR0b24gKGNsaWNrKT1cImNvcHlNYXJrVXAoKVwiXG4gICAgICBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgINCa0L7Qv9C40YDQvtCy0LDRgtGMINGA0LDQt9C80LXRgtC60YNcbiAgICA8L2J1dHRvbj5cbiAgPC9tYXQtdGFiPlxuICA8bWF0LXRhYiBsYWJlbD1cItCg0LXQt9GD0LvRjNGC0LDRglwiPlxuICAgIDxtYXQtY2FyZCBzdHlsZT1cInBhZGRpbmc6IDJweDtcIiBjbGFzcz1cIm1hdC1jYXJkXCI+XG4gICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgPGNyb2NvLWh0bWwteG1sLXRhZy12aWV3IFtkYXRhXT1cImh0bWwgfCB0b3ByZXZpZXdcIj5cbiAgICAgICAgPC9jcm9jby1odG1sLXhtbC10YWctdmlldz5cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8L21hdC1jYXJkPlxuICA8L21hdC10YWI+XG48L21hdC10YWItZ3JvdXA+XG4iXX0=
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMvZWRpdG9yL21haW4tZWRpdG9yL21haW4tZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci9tYWluLWVkaXRvci9tYWluLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXlELFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakosT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDekYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7O0FBcUIxRSxNQUFNLE9BQU8sbUJBQW1CO0lBdUI5QixZQUFvQixpQkFBbUMsRUFDN0MsU0FBc0IsRUFDdEIsTUFBeUI7UUFGZixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQzdDLGNBQVMsR0FBVCxTQUFTLENBQWE7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUF2Qm5DLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQU03QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBR2xCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFHbkIsZUFBVSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUl0QyxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBR2xCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUlKLENBQUM7SUFFeEMsZUFBZTtRQUNiLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsMkJBQTJCO1FBQ3pCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQVk7UUFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMxQyxDQUFDOzhHQTlEVSxtQkFBbUI7a0dBQW5CLG1CQUFtQixpWENsQ2hDLDhyREE0Q0EsMnpCRHZCTSxhQUFhLDRtQkFDYixxQkFBcUIsOEpBQ3JCLFlBQVksNExBQ1osUUFBUSxzREFDUixRQUFRLGlVQUNSLG1CQUFtQix3TUFDbkIsV0FBVywrbUJBQ1gsU0FBUyxnTEFDVCxhQUFhLDJOQUViLGlCQUFpQjs7MkZBR1YsbUJBQW1CO2tCQW5CL0IsU0FBUzsrQkFDSSx3QkFBd0IsY0FHdEIsSUFBSSxXQUNQO3dCQUNQLGFBQWE7d0JBQ2IscUJBQXFCO3dCQUNyQixZQUFZO3dCQUNaLFFBQVE7d0JBQ1IsUUFBUTt3QkFDUixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3FCQUNsQjsrSUFPSCxZQUFZO3NCQURYLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJM0MsVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBS04sSUFBSTtzQkFGSCxLQUFLOztzQkFDTCxNQUFNO2dCQUlQLGFBQWE7c0JBRFosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudENoZWNrZWQsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IENsaXBib2FyZFNlcnZpY2UgfSBmcm9tICduZ3gtY2xpcGJvYXJkJztcbmltcG9ydCB7IFZpc3VhbEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uL3Zpc3VhbC1lZGl0b3IvdmlzdWFsLWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgWG1sVGFnVmlld0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3htbC10YWdzL3htbC10YWctdmlldy94bWwtdGFnLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENka1RleHRhcmVhQXV0b3NpemUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGV4dC1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCwgTWF0TGFiZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IEh0bWxWaWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2h0bWwtdmlldy9odG1sLXZpZXcuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBIdG1sVmlld0NvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9IdG1sVmlld0NvbnRyb2xsZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2Nyb2NvLWh0bWwtbWFpbi1lZGl0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tYWluLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbWFpbi1lZGl0b3IuY29tcG9uZW50LmNzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgTWF0VGFic01vZHVsZSxcbiAgICAgIFZpc3VhbEVkaXRvckNvbXBvbmVudCwgXG4gICAgICBNYXRGb3JtRmllbGQsIFxuICAgICAgTWF0TGFiZWwsIFxuICAgICAgTWF0SW5wdXQsIFxuICAgICAgQ2RrVGV4dGFyZWFBdXRvc2l6ZSwgXG4gICAgICBGb3Jtc01vZHVsZSwgXG4gICAgICBNYXRCdXR0b24sIFxuICAgICAgTWF0Q2FyZE1vZHVsZSwgXG4gICAgICBYbWxUYWdWaWV3Q29tcG9uZW50LCAgXG4gICAgICBIdG1sVmlld0NvbXBvbmVudFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFpbkVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgdmlzdWFsRWRpdG9yUmVuZGVyZWQgPSBmYWxzZTtcbiAgXG4gIEBWaWV3Q2hpbGQoXCJ2aXN1YWxFZGl0b3JcIiwgeyBzdGF0aWM6IHRydWUgfSlcbiAgdmlzdWFsRWRpdG9yOiBWaXN1YWxFZGl0b3JDb21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgc2hvd01hcmtVcCA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgdXNlSHRtbFJhdyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGNvbnRyb2xsZXIgPSBuZXcgSHRtbFZpZXdDb250cm9sbGVyKCk7XG5cbiAgQElucHV0KClcbiAgQE91dHB1dCgpXG4gIGh0bWw6IHN0cmluZyA9IFwiXCI7XG5cbiAgQE91dHB1dCgpXG4gIG9uSHRtbENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jbGlwYm9hcmRTZXJ2aWNlOiBDbGlwYm9hcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwcml2YXRlIF9jZHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxuICBcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVjYWxjdWxhdGVCb2R5VGFncygpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuX2NkcmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHZpc3VhbEVkaXRvclJlbmRlcmVkSGFuZGxlcigpe1xuICAgIHRoaXMudmlzdWFsRWRpdG9yUmVuZGVyZWQgPSB0cnVlO1xuICAgIHRoaXMucmVjYWxjdWxhdGVCb2R5VGFncygpO1xuICB9XG5cbiAgb25IdG1sQ2hhbmdlZEhhbmRsZXIoaHRtbDogc3RyaW5nKSB7XG4gICAgdGhpcy5odG1sID0gaHRtbDtcbiAgICB0aGlzLm9uSHRtbENoYW5nZWQuZW1pdChodG1sKTtcbiAgfVxuXG4gIHRleHRBcmVhTW9kZWxDaGFuZ2VkSGFuZGxlcigpe1xuICAgIHRoaXMucmVjYWxjdWxhdGVCb2R5VGFncygpO1xuICAgIHRoaXMub25IdG1sQ2hhbmdlZEhhbmRsZXIodGhpcy5odG1sKTtcbiAgfVxuXG4gIHJlY2FsY3VsYXRlQm9keVRhZ3MoKSB7XG4gICAgdGhpcy52aXN1YWxFZGl0b3IuaHRtbCA9IHRoaXMuaHRtbDtcbiAgICB0aGlzLnZpc3VhbEVkaXRvci5yZWNhbGN1bGF0ZUJvZHlUYWdzKCk7XG4gIH1cblxuICBjb3B5TWFya1VwKCkge1xuICAgIHRoaXMuX3NuYWNrQmFyLm9wZW4oXCLQoNCw0LfQvNC10YLQutCwINGB0LrQvtC/0LjRgNC+0LLQsNC90LAg0LIg0LHRg9GE0LXRgCDQvtCx0LzQtdC90LBcIiwgXCLQl9Cw0LrRgNGL0YLRjFwiLCB7IGR1cmF0aW9uOiAxNTAwIH0pO1xuICAgIHRoaXMuX2NsaXBib2FyZFNlcnZpY2UuY29weSh0aGlzLmh0bWwpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy52aXN1YWxFZGl0b3IucmVjYWxjdWxhdGVCb2R5VGFncygpO1xuICB9XG59XG4iLCI8bWF0LXRhYi1ncm91cD5cbiAgPG1hdC10YWIgbGFiZWw9XCLQktC40LfRg9Cw0LvRjNC90YvQuSDRgNC10LTQsNC60YLQvtGAXCI+XG5cbiAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAyMHB4O1wiPjwvZGl2PlxuXG4gICAgPGNyb2NvLXZpc3VhbC1lZGl0b3IgI3Zpc3VhbEVkaXRvclxuICAgICAgW3VzZUh0bWxSYXddPVwidXNlSHRtbFJhd1wiXG4gICAgICBbaHRtbF09XCJodG1sXCJcbiAgICAgIChvbkh0bWxDaGFuZ2VkKT1cIm9uSHRtbENoYW5nZWRIYW5kbGVyKCRldmVudClcIlxuICAgICAgKHJlbmRlcmVkKT1cInZpc3VhbEVkaXRvclJlbmRlcmVkSGFuZGxlcigpXCI+XG4gICAgPC9jcm9jby12aXN1YWwtZWRpdG9yPlxuXG4gICAgPGRpdiBzdHlsZT1cImhlaWdodDogMjBweDtcIj48L2Rpdj5cblxuICA8L21hdC10YWI+XG5cbiAgPG1hdC10YWIgbGFiZWw9XCLQoNCw0LfQvNC10YLQutCwXCI+XG4gICAgPGRpdiBzdHlsZT1cImhlaWdodDogMTBweDtcIj48L2Rpdj5cbiAgICBAaWYgKHZpc3VhbEVkaXRvclJlbmRlcmVkKSB7XG4gICAgICA8ZGl2PlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+0JjRgdGF0L7QtNC90YvQuSDQutC+0LQ8L21hdC1sYWJlbD5cbiAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgY2RrVGV4dGFyZWFBdXRvc2l6ZSAjYXV0b3NpemU9XCJjZGtUZXh0YXJlYUF1dG9zaXplXCJcbiAgICAgICAgICAgIGNka0F1dG9zaXplTWluUm93cz1cIjFcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLQmNGB0YXQvtC00L3Ri9C5INC60L7QtFwiIFsobmdNb2RlbCldPVwiaHRtbFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidGV4dEFyZWFNb2RlbENoYW5nZWRIYW5kbGVyKClcIj48L3RleHRhcmVhPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiY29weU1hcmtVcCgpXCJcbiAgICAgIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAg0JrQvtC/0LjRgNC+0LLQsNGC0Ywg0YDQsNC30LzQtdGC0LrRg1xuICAgIDwvYnV0dG9uPlxuICA8L21hdC10YWI+XG4gIDxtYXQtdGFiIGxhYmVsPVwi0KDQtdC30YPQu9GM0YLQsNGCXCI+XG4gICAgPG1hdC1jYXJkIHN0eWxlPVwicGFkZGluZzogMnB4O1wiIGNsYXNzPVwibWF0LWNhcmRcIj5cbiAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICA8Y3JvY28taHRtbC12aWV3IFtjb250cm9sbGVyXT1cImNvbnRyb2xsZXJcIiBbaHRtbF09XCJodG1sXCI+XG4gICAgICAgIDwvY3JvY28taHRtbC12aWV3PlxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDwvbWF0LWNhcmQ+XG4gIDwvbWF0LXRhYj5cbjwvbWF0LXRhYi1ncm91cD5cbiJdfQ==
@@ -33,8 +33,8 @@ import * as i11 from '@angular/material/select';
33
33
  import { MatSelect, MatSelectModule } from '@angular/material/select';
34
34
  import * as i7 from '@angular/material/progress-spinner';
35
35
  import { MatProgressSpinner, MatProgressSpinnerModule } from '@angular/material/progress-spinner';
36
- import * as i8 from '@angular/material/tabs';
37
- import { MatTabGroup, MatTab, MatTabsModule } from '@angular/material/tabs';
36
+ import * as i3 from '@angular/material/tabs';
37
+ import { MatTabsModule } from '@angular/material/tabs';
38
38
  import * as i1$5 from 'ngx-clipboard';
39
39
  import * as i2$3 from '@angular/material/snack-bar';
40
40
  import { MatSnackBarModule } from '@angular/material/snack-bar';
@@ -50,7 +50,7 @@ import * as i20 from '@angular/material/datepicker';
50
50
  import { MatDatepickerModule } from '@angular/material/datepicker';
51
51
  import * as i18 from '@angular/material/dialog';
52
52
  import { MatDialogModule } from '@angular/material/dialog';
53
- import * as i3 from '@angular/material/expansion';
53
+ import * as i3$1 from '@angular/material/expansion';
54
54
  import { MatExpansionModule } from '@angular/material/expansion';
55
55
  import * as i21 from '@angular/material/grid-list';
56
56
  import { MatGridListModule } from '@angular/material/grid-list';
@@ -1985,6 +1985,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
1985
1985
  args: [CrocoHtmlOptionsToken]
1986
1986
  }] }] });
1987
1987
 
1988
+ class HtmlViewComponent {
1989
+ constructor() {
1990
+ this.html = "<body></body>";
1991
+ this.controller = new HtmlViewController();
1992
+ }
1993
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: HtmlViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1994
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: HtmlViewComponent, isStandalone: true, selector: "croco-html-view", inputs: { html: "html", controller: "controller" }, ngImport: i0, template: "<croco-html-xml-tag-view [controller]=\"controller\" [data]=\"html | topreview\"></croco-html-xml-tag-view>", styles: [""], dependencies: [{ kind: "component", type: XmlTagViewComponent, selector: "croco-html-xml-tag-view", inputs: ["data", "controller"] }, { kind: "pipe", type: ToPreviewPipe, name: "topreview" }] }); }
1995
+ }
1996
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: HtmlViewComponent, decorators: [{
1997
+ type: Component,
1998
+ args: [{ selector: 'croco-html-view', standalone: true, imports: [XmlTagViewComponent, ToPreviewPipe], template: "<croco-html-xml-tag-view [controller]=\"controller\" [data]=\"html | topreview\"></croco-html-xml-tag-view>" }]
1999
+ }], propDecorators: { html: [{
2000
+ type: Input
2001
+ }], controller: [{
2002
+ type: Input
2003
+ }] } });
2004
+
1988
2005
  class MainEditorComponent {
1989
2006
  constructor(_clipboardService, _snackBar, _cdref) {
1990
2007
  this._clipboardService = _clipboardService;
@@ -1993,6 +2010,7 @@ class MainEditorComponent {
1993
2010
  this.visualEditorRendered = false;
1994
2011
  this.showMarkUp = true;
1995
2012
  this.useHtmlRaw = false;
2013
+ this.controller = new HtmlViewController();
1996
2014
  this.html = "";
1997
2015
  this.onHtmlChanged = new EventEmitter();
1998
2016
  }
@@ -2026,11 +2044,23 @@ class MainEditorComponent {
2026
2044
  this.visualEditor.recalculateBodyTags();
2027
2045
  }
2028
2046
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: MainEditorComponent, deps: [{ token: i1$5.ClipboardService }, { token: i2$3.MatSnackBar }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2029
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: MainEditorComponent, isStandalone: true, selector: "croco-html-main-editor", inputs: { showMarkUp: "showMarkUp", useHtmlRaw: "useHtmlRaw", html: "html" }, outputs: { html: "html", onHtmlChanged: "onHtmlChanged" }, viewQueries: [{ propertyName: "visualEditor", first: true, predicate: ["visualEditor"], descendants: true, static: true }], ngImport: i0, template: "<mat-tab-group>\n <mat-tab label=\"\u0412\u0438\u0437\u0443\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\">\n\n <div style=\"height: 20px;\"></div>\n\n <croco-visual-editor #visualEditor\n [useHtmlRaw]=\"useHtmlRaw\"\n [html]=\"html\"\n (onHtmlChanged)=\"onHtmlChangedHandler($event)\"\n (rendered)=\"visualEditorRenderedHandler()\">\n </croco-visual-editor>\n\n <div style=\"height: 20px;\"></div>\n\n </mat-tab>\n\n <mat-tab label=\"\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430\">\n <div style=\"height: 10px;\"></div>\n @if (visualEditorRendered) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434</mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434\" [(ngModel)]=\"html\"\n (ngModelChange)=\"textAreaModelChangedHandler()\"></textarea>\n </mat-form-field>\n </div>\n }\n\n <button (click)=\"copyMarkUp()\"\n mat-raised-button color=\"primary\">\n \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0443\n </button>\n </mat-tab>\n <mat-tab label=\"\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\">\n <mat-card style=\"padding: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <croco-html-xml-tag-view [data]=\"html | topreview\">\n </croco-html-xml-tag-view>\n </mat-card-content>\n </mat-card>\n </mat-tab>\n</mat-tab-group>\n", styles: [".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)}\n"], dependencies: [{ kind: "component", type: MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: VisualEditorComponent, selector: "croco-visual-editor", inputs: ["showMarkUp", "useHtmlRaw", "html"], outputs: ["html", "onHtmlChanged", "rendered"] }, { 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$3.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$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: XmlTagViewComponent, selector: "croco-html-xml-tag-view", inputs: ["data", "controller"] }, { kind: "pipe", type: ToPreviewPipe, name: "topreview" }] }); }
2047
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: MainEditorComponent, isStandalone: true, selector: "croco-html-main-editor", inputs: { showMarkUp: "showMarkUp", useHtmlRaw: "useHtmlRaw", controller: "controller", html: "html" }, outputs: { html: "html", onHtmlChanged: "onHtmlChanged" }, viewQueries: [{ propertyName: "visualEditor", first: true, predicate: ["visualEditor"], descendants: true, static: true }], ngImport: i0, template: "<mat-tab-group>\n <mat-tab label=\"\u0412\u0438\u0437\u0443\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\">\n\n <div style=\"height: 20px;\"></div>\n\n <croco-visual-editor #visualEditor\n [useHtmlRaw]=\"useHtmlRaw\"\n [html]=\"html\"\n (onHtmlChanged)=\"onHtmlChangedHandler($event)\"\n (rendered)=\"visualEditorRenderedHandler()\">\n </croco-visual-editor>\n\n <div style=\"height: 20px;\"></div>\n\n </mat-tab>\n\n <mat-tab label=\"\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430\">\n <div style=\"height: 10px;\"></div>\n @if (visualEditorRendered) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434</mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434\" [(ngModel)]=\"html\"\n (ngModelChange)=\"textAreaModelChangedHandler()\"></textarea>\n </mat-form-field>\n </div>\n }\n\n <button (click)=\"copyMarkUp()\"\n mat-raised-button color=\"primary\">\n \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0443\n </button>\n </mat-tab>\n <mat-tab label=\"\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\">\n <mat-card style=\"padding: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <croco-html-view [controller]=\"controller\" [html]=\"html\">\n </croco-html-view>\n </mat-card-content>\n </mat-card>\n </mat-tab>\n</mat-tab-group>\n", styles: [".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)}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: VisualEditorComponent, selector: "croco-visual-editor", inputs: ["showMarkUp", "useHtmlRaw", "html"], outputs: ["html", "onHtmlChanged", "rendered"] }, { 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$3.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$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i1$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i1$2.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: HtmlViewComponent, selector: "croco-html-view", inputs: ["html", "controller"] }] }); }
2030
2048
  }
2031
2049
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: MainEditorComponent, decorators: [{
2032
2050
  type: Component,
2033
- args: [{ selector: 'croco-html-main-editor', standalone: true, imports: [MatTabGroup, MatTab, VisualEditorComponent, MatFormField, MatLabel, MatInput, CdkTextareaAutosize, FormsModule, MatButton, MatCard, MatCardContent, XmlTagViewComponent, ToPreviewPipe], template: "<mat-tab-group>\n <mat-tab label=\"\u0412\u0438\u0437\u0443\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\">\n\n <div style=\"height: 20px;\"></div>\n\n <croco-visual-editor #visualEditor\n [useHtmlRaw]=\"useHtmlRaw\"\n [html]=\"html\"\n (onHtmlChanged)=\"onHtmlChangedHandler($event)\"\n (rendered)=\"visualEditorRenderedHandler()\">\n </croco-visual-editor>\n\n <div style=\"height: 20px;\"></div>\n\n </mat-tab>\n\n <mat-tab label=\"\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430\">\n <div style=\"height: 10px;\"></div>\n @if (visualEditorRendered) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434</mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434\" [(ngModel)]=\"html\"\n (ngModelChange)=\"textAreaModelChangedHandler()\"></textarea>\n </mat-form-field>\n </div>\n }\n\n <button (click)=\"copyMarkUp()\"\n mat-raised-button color=\"primary\">\n \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0443\n </button>\n </mat-tab>\n <mat-tab label=\"\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\">\n <mat-card style=\"padding: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <croco-html-xml-tag-view [data]=\"html | topreview\">\n </croco-html-xml-tag-view>\n </mat-card-content>\n </mat-card>\n </mat-tab>\n</mat-tab-group>\n", styles: [".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)}\n"] }]
2051
+ args: [{ selector: 'croco-html-main-editor', standalone: true, imports: [
2052
+ MatTabsModule,
2053
+ VisualEditorComponent,
2054
+ MatFormField,
2055
+ MatLabel,
2056
+ MatInput,
2057
+ CdkTextareaAutosize,
2058
+ FormsModule,
2059
+ MatButton,
2060
+ MatCardModule,
2061
+ XmlTagViewComponent,
2062
+ HtmlViewComponent
2063
+ ], template: "<mat-tab-group>\n <mat-tab label=\"\u0412\u0438\u0437\u0443\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\">\n\n <div style=\"height: 20px;\"></div>\n\n <croco-visual-editor #visualEditor\n [useHtmlRaw]=\"useHtmlRaw\"\n [html]=\"html\"\n (onHtmlChanged)=\"onHtmlChangedHandler($event)\"\n (rendered)=\"visualEditorRenderedHandler()\">\n </croco-visual-editor>\n\n <div style=\"height: 20px;\"></div>\n\n </mat-tab>\n\n <mat-tab label=\"\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430\">\n <div style=\"height: 10px;\"></div>\n @if (visualEditorRendered) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434</mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434\" [(ngModel)]=\"html\"\n (ngModelChange)=\"textAreaModelChangedHandler()\"></textarea>\n </mat-form-field>\n </div>\n }\n\n <button (click)=\"copyMarkUp()\"\n mat-raised-button color=\"primary\">\n \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0443\n </button>\n </mat-tab>\n <mat-tab label=\"\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\">\n <mat-card style=\"padding: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <croco-html-view [controller]=\"controller\" [html]=\"html\">\n </croco-html-view>\n </mat-card-content>\n </mat-card>\n </mat-tab>\n</mat-tab-group>\n", styles: [".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)}\n"] }]
2034
2064
  }], ctorParameters: () => [{ type: i1$5.ClipboardService }, { type: i2$3.MatSnackBar }, { type: i0.ChangeDetectorRef }], propDecorators: { visualEditor: [{
2035
2065
  type: ViewChild,
2036
2066
  args: ["visualEditor", { static: true }]
@@ -2038,6 +2068,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
2038
2068
  type: Input
2039
2069
  }], useHtmlRaw: [{
2040
2070
  type: Input
2071
+ }], controller: [{
2072
+ type: Input
2041
2073
  }], html: [{
2042
2074
  type: Input
2043
2075
  }, {
@@ -2046,23 +2078,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
2046
2078
  type: Output
2047
2079
  }] } });
2048
2080
 
2049
- class HtmlViewComponent {
2050
- constructor() {
2051
- this.html = "<body></body>";
2052
- this.controller = new HtmlViewController();
2053
- }
2054
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: HtmlViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2055
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: HtmlViewComponent, isStandalone: true, selector: "croco-html-view", inputs: { html: "html", controller: "controller" }, ngImport: i0, template: "<croco-html-xml-tag-view [controller]=\"controller\" [data]=\"html | topreview\"></croco-html-xml-tag-view>", styles: [""], dependencies: [{ kind: "component", type: XmlTagViewComponent, selector: "croco-html-xml-tag-view", inputs: ["data", "controller"] }, { kind: "pipe", type: ToPreviewPipe, name: "topreview" }] }); }
2056
- }
2057
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: HtmlViewComponent, decorators: [{
2058
- type: Component,
2059
- args: [{ selector: 'croco-html-view', standalone: true, imports: [XmlTagViewComponent, ToPreviewPipe], template: "<croco-html-xml-tag-view [controller]=\"controller\" [data]=\"html | topreview\"></croco-html-xml-tag-view>" }]
2060
- }], propDecorators: { html: [{
2061
- type: Input
2062
- }], controller: [{
2063
- type: Input
2064
- }] } });
2065
-
2066
2081
  class TagToSpanPipe {
2067
2082
  transform(value) {
2068
2083
  return value.map(x => (`<b>${x}</b>`)).join(' | ');
@@ -2194,7 +2209,7 @@ class CrocoHtmlModule {
2194
2209
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.4", ngImport: i0, type: CrocoHtmlModule, imports: [CommonModule,
2195
2210
  FormsModule,
2196
2211
  ReactiveFormsModule,
2197
- NgSelectModule, i1$6.MatBadgeModule, i2$4.MatTableModule, i3.MatExpansionModule, i1$4.MatFormFieldModule, i2$3.MatSnackBarModule, i6.MatProgressBarModule, i7.MatProgressSpinnerModule, i8.MatTabsModule, i9.MatMenuModule, i1$2.MatCardModule, i11.MatSelectModule, i12.MatTooltipModule, i13.MatCheckboxModule, i14.MatChipsModule, i15.MatListModule, i2.MatButtonModule, i2$1.MatInputModule, i18.MatDialogModule, i19.MatPaginatorModule, i20.MatDatepickerModule, i21.MatGridListModule, i22.MatSlideToggleModule, i23.MatTreeModule, i24.MatNativeDateModule, i25.MatAutocompleteModule, i26.MatSidenavModule, i27.MatIconModule, i28.DragDropModule, i29.MatButtonToggleModule, ErrorBannerComponent,
2212
+ NgSelectModule, i1$6.MatBadgeModule, i2$4.MatTableModule, i3$1.MatExpansionModule, i1$4.MatFormFieldModule, i2$3.MatSnackBarModule, i6.MatProgressBarModule, i7.MatProgressSpinnerModule, i3.MatTabsModule, i9.MatMenuModule, i1$2.MatCardModule, i11.MatSelectModule, i12.MatTooltipModule, i13.MatCheckboxModule, i14.MatChipsModule, i15.MatListModule, i2.MatButtonModule, i2$1.MatInputModule, i18.MatDialogModule, i19.MatPaginatorModule, i20.MatDatepickerModule, i21.MatGridListModule, i22.MatSlideToggleModule, i23.MatTreeModule, i24.MatNativeDateModule, i25.MatAutocompleteModule, i26.MatSidenavModule, i27.MatIconModule, i28.DragDropModule, i29.MatButtonToggleModule, ErrorBannerComponent,
2198
2213
  VkVideoPlayerComponent,
2199
2214
  YoutubeVideoPlayerComponent,
2200
2215
  DownloadFileButtonEditorComponent,