croco-html 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/bundles/croco-html.umd.js +2091 -0
- package/bundles/croco-html.umd.js.map +1 -0
- package/croco-html.d.ts +5 -0
- package/esm2015/croco-html.js +5 -0
- package/esm2015/lib/components/add-files-btn/add-files-btn.component.js +57 -0
- package/esm2015/lib/components/editor/external-video-block/external-video-block.component.js +49 -0
- package/esm2015/lib/components/editor/html-raw-editor/html-raw-editor.component.js +29 -0
- package/esm2015/lib/components/editor/image-editor/image-editor.component.js +54 -0
- package/esm2015/lib/components/editor/index.js +8 -0
- package/esm2015/lib/components/editor/main-editor/main-editor.component.js +80 -0
- package/esm2015/lib/components/editor/main-editor-block/main-editor-block.component.js +45 -0
- package/esm2015/lib/components/editor/text-editor/text-editor.component.js +38 -0
- package/esm2015/lib/components/editor/visual-editor/visual-editor.component.js +165 -0
- package/esm2015/lib/components/file-id-select/file-id-select.component.js +66 -0
- package/esm2015/lib/components/index.js +6 -0
- package/esm2015/lib/components/upload-files-btn/upload-files-btn.component.js +58 -0
- package/esm2015/lib/components/xml-tags/index.js +9 -0
- package/esm2015/lib/components/xml-tags/xml-tag-external-video/xml-tag-external-video.component.js +47 -0
- package/esm2015/lib/components/xml-tags/xml-tag-header-inner-text-view/xml-tag-header-inner-text-view.component.js +21 -0
- package/esm2015/lib/components/xml-tags/xml-tag-header-text-view/xml-tag-header-text-view.component.js +22 -0
- package/esm2015/lib/components/xml-tags/xml-tag-html-view/xml-tag-html-view.component.js +20 -0
- package/esm2015/lib/components/xml-tags/xml-tag-rich-text-view/xml-tag-rich-text-view.component.js +24 -0
- package/esm2015/lib/components/xml-tags/xml-tag-table-view/xml-tag-table-view.component.js +24 -0
- package/esm2015/lib/components/xml-tags/xml-tag-text-view/xml-tag-text-view.component.js +21 -0
- package/esm2015/lib/components/xml-tags/xml-tag-view/xml-tag-view.component.js +26 -0
- package/esm2015/lib/croco-html.module.js +90 -0
- package/esm2015/lib/extensions/AngularMaterialTableMethods.js +64 -0
- package/esm2015/lib/extensions/BodyTagsExtensions.js +120 -0
- package/esm2015/lib/extensions/BootstrapTableMethods.js +67 -0
- package/esm2015/lib/extensions/HtmlExtractionMethods.js +63 -0
- package/esm2015/lib/extensions/HtmlRawTagDataConsts.js +4 -0
- package/esm2015/lib/extensions/ImageMethods.js +24 -0
- package/esm2015/lib/extensions/InterfaceBlock.js +2 -0
- package/esm2015/lib/extensions/TableBuilder.js +35 -0
- package/esm2015/lib/extensions/TableMethods.js +100 -0
- package/esm2015/lib/extensions/TextMethods.js +29 -0
- package/esm2015/lib/extensions/TextSimpleMethods.js +78 -0
- package/esm2015/lib/extensions/VideoMethods.js +20 -0
- package/esm2015/lib/extensions/XmlExtensions.js +26 -0
- package/esm2015/lib/extensions/index.js +13 -0
- package/esm2015/lib/index.js +113 -0
- package/esm2015/lib/models/models.js +2 -0
- package/esm2015/lib/pipes/RichTextToHtmlPipe.js +26 -0
- package/esm2015/lib/pipes/TagToSpanPipe.js +16 -0
- package/esm2015/lib/pipes/ToHtmlBodyTagsPipe.js +17 -0
- package/esm2015/lib/pipes/index.js +5 -0
- package/esm2015/lib/pipes/to-preview.pipe.js +17 -0
- package/esm2015/lib/services/file-upload.service.js +40 -0
- package/esm2015/lib/services/files-query.service.js +27 -0
- package/esm2015/public-api.js +8 -0
- package/fesm2015/croco-html.js +1634 -0
- package/fesm2015/croco-html.js.map +1 -0
- package/lib/components/add-files-btn/add-files-btn.component.d.ts +18 -0
- package/lib/components/editor/external-video-block/external-video-block.component.d.ts +19 -0
- package/lib/components/editor/html-raw-editor/html-raw-editor.component.d.ts +11 -0
- package/lib/components/editor/image-editor/image-editor.component.d.ts +20 -0
- package/lib/components/editor/index.d.ts +7 -0
- package/lib/components/editor/main-editor/main-editor.component.d.ts +28 -0
- package/lib/components/editor/main-editor-block/main-editor-block.component.d.ts +16 -0
- package/lib/components/editor/text-editor/text-editor.component.d.ts +14 -0
- package/lib/components/editor/visual-editor/visual-editor.component.d.ts +43 -0
- package/lib/components/file-id-select/file-id-select.component.d.ts +30 -0
- package/lib/components/index.d.ts +5 -0
- package/lib/components/upload-files-btn/upload-files-btn.component.d.ts +24 -0
- package/lib/components/xml-tags/index.d.ts +8 -0
- package/lib/components/xml-tags/xml-tag-external-video/xml-tag-external-video.component.d.ts +17 -0
- package/lib/components/xml-tags/xml-tag-header-inner-text-view/xml-tag-header-inner-text-view.component.d.ts +10 -0
- package/lib/components/xml-tags/xml-tag-header-text-view/xml-tag-header-text-view.component.d.ts +10 -0
- package/lib/components/xml-tags/xml-tag-html-view/xml-tag-html-view.component.d.ts +7 -0
- package/lib/components/xml-tags/xml-tag-rich-text-view/xml-tag-rich-text-view.component.d.ts +10 -0
- package/lib/components/xml-tags/xml-tag-table-view/xml-tag-table-view.component.d.ts +7 -0
- package/lib/components/xml-tags/xml-tag-text-view/xml-tag-text-view.component.d.ts +10 -0
- package/lib/components/xml-tags/xml-tag-view/xml-tag-view.component.d.ts +8 -0
- package/lib/croco-html.module.d.ts +60 -0
- package/lib/extensions/AngularMaterialTableMethods.d.ts +10 -0
- package/lib/extensions/BodyTagsExtensions.d.ts +10 -0
- package/lib/extensions/BootstrapTableMethods.d.ts +9 -0
- package/lib/extensions/HtmlExtractionMethods.d.ts +69 -0
- package/lib/extensions/HtmlRawTagDataConsts.d.ts +3 -0
- package/lib/extensions/ImageMethods.d.ts +17 -0
- package/lib/extensions/InterfaceBlock.d.ts +4 -0
- package/lib/extensions/TableBuilder.d.ts +5 -0
- package/lib/extensions/TableMethods.d.ts +58 -0
- package/lib/extensions/TextMethods.d.ts +19 -0
- package/lib/extensions/TextSimpleMethods.d.ts +23 -0
- package/lib/extensions/VideoMethods.d.ts +19 -0
- package/lib/extensions/XmlExtensions.d.ts +5 -0
- package/lib/extensions/index.d.ts +10 -0
- package/lib/index.d.ts +20 -0
- package/lib/models/models.d.ts +10 -0
- package/lib/pipes/RichTextToHtmlPipe.d.ts +8 -0
- package/lib/pipes/TagToSpanPipe.d.ts +7 -0
- package/lib/pipes/ToHtmlBodyTagsPipe.d.ts +8 -0
- package/lib/pipes/index.d.ts +4 -0
- package/lib/pipes/to-preview.pipe.d.ts +8 -0
- package/lib/services/file-upload.service.d.ts +23 -0
- package/lib/services/files-query.service.d.ts +42 -0
- package/package.json +23 -0
- package/public-api.d.ts +4 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
|
+
import { ExternalVideoSupportedTypes } from '../../../extensions/VideoMethods';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../xml-tags/xml-tag-external-video/xml-tag-external-video.component";
|
|
6
|
+
import * as i2 from "@angular/material/form-field";
|
|
7
|
+
import * as i3 from "@angular/common";
|
|
8
|
+
import * as i4 from "@angular/forms";
|
|
9
|
+
import * as i5 from "@angular/material/input";
|
|
10
|
+
export class ExternalVideoBlockComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.onTagUpdated = new EventEmitter();
|
|
13
|
+
this.myForm = new FormGroup({
|
|
14
|
+
youtubeLink: new FormControl()
|
|
15
|
+
});
|
|
16
|
+
this.defaultLink = "https://youtu.be/jzBneaWSswY";
|
|
17
|
+
this.data = {
|
|
18
|
+
youtubeLink: this.defaultLink
|
|
19
|
+
};
|
|
20
|
+
this.tagData = {
|
|
21
|
+
link: this.defaultLink,
|
|
22
|
+
type: ExternalVideoSupportedTypes.Youtube
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
linkChanged() {
|
|
26
|
+
this.tagData.link = this.data.youtubeLink;
|
|
27
|
+
this.tag.attributes = this.tagData;
|
|
28
|
+
}
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
this.linkChanged();
|
|
31
|
+
this.tagData = this.tag.attributes;
|
|
32
|
+
this.data.youtubeLink = this.tagData.link;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
ExternalVideoBlockComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: ExternalVideoBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
36
|
+
ExternalVideoBlockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: ExternalVideoBlockComponent, selector: "croco-html-external-video-block", inputs: { tag: "tag" }, outputs: { onTagUpdated: "onTagUpdated" }, ngImport: i0, template: "<div *ngIf=\"tag.presentOrEdit\">\n \n <div>\n \u0421\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 YouTube: {{data.youtubeLink}}\n </div>\n\n <div style=\"height: 10px;\"></div>\n\n <croco-html-xml-tag-external-video [tagData]=\"tagData\">\n </croco-html-xml-tag-external-video>\n</div>\n\n<div *ngIf=\"!tag.presentOrEdit\">\n <div>\n <form [formGroup]=\"myForm\">\n <mat-form-field class=\"w-100\">\n <input matInput placeholder=\"\u0421\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 YouTube\"\n new-autocomplete=\"off\"\n autocomplete=\"off\"\n formControlName=\"youtubeLink\"\n [(ngModel)]=\"data.youtubeLink\"\n (ngModelChange)=\"linkChanged()\">\n </mat-form-field>\n </form>\n </div>\n</div>\n\n", styles: [""], components: [{ type: i1.XmlTagExternalVideoComponent, selector: "croco-html-xml-tag-external-video", inputs: ["data", "tagData"] }, { type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { 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]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: ExternalVideoBlockComponent, decorators: [{
|
|
38
|
+
type: Component,
|
|
39
|
+
args: [{
|
|
40
|
+
selector: 'croco-html-external-video-block',
|
|
41
|
+
templateUrl: './external-video-block.component.html',
|
|
42
|
+
styleUrls: ['./external-video-block.component.css']
|
|
43
|
+
}]
|
|
44
|
+
}], propDecorators: { tag: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], onTagUpdated: [{
|
|
47
|
+
type: Output
|
|
48
|
+
}] } });
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtdmlkZW8tYmxvY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMvZWRpdG9yL2V4dGVybmFsLXZpZGVvLWJsb2NrL2V4dGVybmFsLXZpZGVvLWJsb2NrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci9leHRlcm5hbC12aWRlby1ibG9jay9leHRlcm5hbC12aWRlby1ibG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUF3QiwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7O0FBUXJHLE1BQU0sT0FBTywyQkFBMkI7SUFMeEM7UUFXRSxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFFL0MsV0FBTSxHQUFHLElBQUksU0FBUyxDQUFDO1lBQ3JCLFdBQVcsRUFBRSxJQUFJLFdBQVcsRUFBRTtTQUMvQixDQUFDLENBQUM7UUFFSCxnQkFBVyxHQUFHLDhCQUE4QixDQUFDO1FBRTdDLFNBQUksR0FBRztZQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztTQUM5QixDQUFBO1FBRUQsWUFBTyxHQUF5QjtZQUM5QixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDdEIsSUFBSSxFQUFFLDJCQUEyQixDQUFDLE9BQU87U0FDMUMsQ0FBQztLQWFIO0lBWEMsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDckMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQWtDLENBQUM7UUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDNUMsQ0FBQzs7d0hBakNVLDJCQUEyQjs0R0FBM0IsMkJBQTJCLDBJQ1Z4QywyMkJBMkJBOzJGRGpCYSwyQkFBMkI7a0JBTHZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlDQUFpQztvQkFDM0MsV0FBVyxFQUFFLHVDQUF1QztvQkFDcEQsU0FBUyxFQUFFLENBQUMsc0NBQXNDLENBQUM7aUJBQ3BEOzhCQUlDLEdBQUc7c0JBREYsS0FBSztnQkFJTixZQUFZO3NCQURYLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRXh0ZXJuYWxWaWRlb1RhZ0RhdGEsIEV4dGVybmFsVmlkZW9TdXBwb3J0ZWRUeXBlcyB9IGZyb20gJy4uLy4uLy4uL2V4dGVuc2lvbnMvVmlkZW9NZXRob2RzJztcbmltcG9ydCB7IEh0bWxCb2R5VGFnIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nyb2NvLWh0bWwtZXh0ZXJuYWwtdmlkZW8tYmxvY2snLFxuICB0ZW1wbGF0ZVVybDogJy4vZXh0ZXJuYWwtdmlkZW8tYmxvY2suY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9leHRlcm5hbC12aWRlby1ibG9jay5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRXh0ZXJuYWxWaWRlb0Jsb2NrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKVxuICB0YWc6IEh0bWxCb2R5VGFnO1xuXG4gIEBPdXRwdXQoKVxuICBvblRhZ1VwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEh0bWxCb2R5VGFnPigpO1xuXG4gIG15Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHlvdXR1YmVMaW5rOiBuZXcgRm9ybUNvbnRyb2woKVxuICB9KTtcblxuICBkZWZhdWx0TGluayA9IFwiaHR0cHM6Ly95b3V0dS5iZS9qekJuZWFXU3N3WVwiO1xuXG4gIGRhdGEgPSB7XG4gICAgeW91dHViZUxpbms6IHRoaXMuZGVmYXVsdExpbmtcbiAgfVxuXG4gIHRhZ0RhdGE6IEV4dGVybmFsVmlkZW9UYWdEYXRhID0ge1xuICAgIGxpbms6IHRoaXMuZGVmYXVsdExpbmssXG4gICAgdHlwZTogRXh0ZXJuYWxWaWRlb1N1cHBvcnRlZFR5cGVzLllvdXR1YmVcbiAgfTtcblxuICBsaW5rQ2hhbmdlZCgpe1xuICAgIHRoaXMudGFnRGF0YS5saW5rID0gdGhpcy5kYXRhLnlvdXR1YmVMaW5rO1xuICAgIHRoaXMudGFnLmF0dHJpYnV0ZXMgPSB0aGlzLnRhZ0RhdGE7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxpbmtDaGFuZ2VkKCk7XG5cbiAgICB0aGlzLnRhZ0RhdGEgPSB0aGlzLnRhZy5hdHRyaWJ1dGVzIGFzIEV4dGVybmFsVmlkZW9UYWdEYXRhO1xuICAgIHRoaXMuZGF0YS55b3V0dWJlTGluayA9IHRoaXMudGFnRGF0YS5saW5rO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwidGFnLnByZXNlbnRPckVkaXRcIj5cbiAgICBcbiAgICA8ZGl2PlxuICAgICAgICDQodGB0YvQu9C60LAg0L3QsCBZb3VUdWJlOiB7e2RhdGEueW91dHViZUxpbmt9fVxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBzdHlsZT1cImhlaWdodDogMTBweDtcIj48L2Rpdj5cblxuICAgIDxjcm9jby1odG1sLXhtbC10YWctZXh0ZXJuYWwtdmlkZW8gW3RhZ0RhdGFdPVwidGFnRGF0YVwiPlxuICAgIDwvY3JvY28taHRtbC14bWwtdGFnLWV4dGVybmFsLXZpZGVvPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhdGFnLnByZXNlbnRPckVkaXRcIj5cbiAgICA8ZGl2PlxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIm15Rm9ybVwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCLQodGB0YvQu9C60LAg0L3QsCBZb3VUdWJlXCJcbiAgICAgICAgICAgICAgICAgICAgbmV3LWF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInlvdXR1YmVMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXRhLnlvdXR1YmVMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibGlua0NoYW5nZWQoKVwiPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/material/form-field";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "@angular/material/input";
|
|
6
|
+
import * as i4 from "@angular/cdk/text-field";
|
|
7
|
+
import * as i5 from "@angular/forms";
|
|
8
|
+
export class HtmlRawEditorComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.onTagUpdated = new EventEmitter();
|
|
11
|
+
}
|
|
12
|
+
ngOnInit() {
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
HtmlRawEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: HtmlRawEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16
|
+
HtmlRawEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: HtmlRawEditorComponent, selector: "croco-html-html-raw-editor", inputs: { tag: "tag" }, outputs: { onTagUpdated: "onTagUpdated" }, ngImport: i0, template: "<div *ngIf=\"tag.presentOrEdit\">\n <div [innerHTML]=\"tag.innerHtml\"></div>\n</div>\n\n<div *ngIf=\"!tag.presentOrEdit\">\n <div style=\"height: 10px;\">\n </div>\n <div>\n <mat-form-field class=\"w-100\">\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u0433\u0430\"\n [(ngModel)]=\"tag.innerHtml\"></textarea>\n </mat-form-field>\n </div>\n</div>\n\n", styles: [""], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i4.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: HtmlRawEditorComponent, decorators: [{
|
|
18
|
+
type: Component,
|
|
19
|
+
args: [{
|
|
20
|
+
selector: 'croco-html-html-raw-editor',
|
|
21
|
+
templateUrl: './html-raw-editor.component.html',
|
|
22
|
+
styleUrls: ['./html-raw-editor.component.css']
|
|
23
|
+
}]
|
|
24
|
+
}], ctorParameters: function () { return []; }, propDecorators: { tag: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}], onTagUpdated: [{
|
|
27
|
+
type: Output
|
|
28
|
+
}] } });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1yYXctZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci9odG1sLXJhdy1lZGl0b3IvaHRtbC1yYXctZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci9odG1sLXJhdy1lZGl0b3IvaHRtbC1yYXctZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFRL0UsTUFBTSxPQUFPLHNCQUFzQjtJQVFqQztRQUZBLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztJQUUvQixDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDOzttSEFYVSxzQkFBc0I7dUdBQXRCLHNCQUFzQixxSUNSbkMsMG5CQWlCQTsyRkRUYSxzQkFBc0I7a0JBTGxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsV0FBVyxFQUFFLGtDQUFrQztvQkFDL0MsU0FBUyxFQUFFLENBQUMsaUNBQWlDLENBQUM7aUJBQy9DOzBFQUlDLEdBQUc7c0JBREYsS0FBSztnQkFJTixZQUFZO3NCQURYLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdG1sQm9keVRhZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcm9jby1odG1sLWh0bWwtcmF3LWVkaXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9odG1sLXJhdy1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9odG1sLXJhdy1lZGl0b3IuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEh0bWxSYXdFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpXG4gIHRhZzogSHRtbEJvZHlUYWc7XG5cbiAgQE91dHB1dCgpXG4gIG9uVGFnVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SHRtbEJvZHlUYWc+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG59XG4iLCI8ZGl2ICpuZ0lmPVwidGFnLnByZXNlbnRPckVkaXRcIj5cbiAgICA8ZGl2IFtpbm5lckhUTUxdPVwidGFnLmlubmVySHRtbFwiPjwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhdGFnLnByZXNlbnRPckVkaXRcIj5cbiAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMHB4O1wiPlxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgY2RrVGV4dGFyZWFBdXRvc2l6ZSAjYXV0b3NpemU9XCJjZGtUZXh0YXJlYUF1dG9zaXplXCJcbiAgICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1pblJvd3M9XCIxXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cItCS0L3Rg9GC0YDQtdC90L3Rj9GPINGA0LDQt9C80LXRgtC60LAg0YLQtdCz0LBcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFnLmlubmVySHRtbFwiPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuIl19
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
|
+
import { ImageMethods, FileImageTagDataConsts } from '../../../extensions/ImageMethods';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/button-toggle";
|
|
6
|
+
import * as i2 from "@angular/material/icon";
|
|
7
|
+
import * as i3 from "../../file-id-select/file-id-select.component";
|
|
8
|
+
import * as i4 from "@angular/material/form-field";
|
|
9
|
+
import * as i5 from "@angular/common";
|
|
10
|
+
import * as i6 from "@angular/forms";
|
|
11
|
+
import * as i7 from "@angular/material/input";
|
|
12
|
+
export class ImageEditorComponent {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.hasImageError = false;
|
|
15
|
+
this.searchOrEdit = "search";
|
|
16
|
+
this.myForm = new FormGroup({
|
|
17
|
+
fileId: new FormControl()
|
|
18
|
+
});
|
|
19
|
+
this.onTagUpdated = new EventEmitter();
|
|
20
|
+
}
|
|
21
|
+
onErrorHandler() {
|
|
22
|
+
this.hasImageError = true;
|
|
23
|
+
}
|
|
24
|
+
getSrc() {
|
|
25
|
+
return ImageMethods.buildUrl(this.tag.attributes[FileImageTagDataConsts.FileIdAttrName]);
|
|
26
|
+
}
|
|
27
|
+
hasFileId() {
|
|
28
|
+
return this.tag.attributes.hasOwnProperty(FileImageTagDataConsts.FileIdAttrName) && !isNaN(this.tag.attributes[FileImageTagDataConsts.FileIdAttrName]);
|
|
29
|
+
}
|
|
30
|
+
onFileIdChanged(fileId) {
|
|
31
|
+
this.tag.attributes[FileImageTagDataConsts.FileIdAttrName] = fileId;
|
|
32
|
+
this.removeImageError();
|
|
33
|
+
}
|
|
34
|
+
removeImageError() {
|
|
35
|
+
this.hasImageError = false;
|
|
36
|
+
}
|
|
37
|
+
ngOnInit() {
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
ImageEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: ImageEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
41
|
+
ImageEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: ImageEditorComponent, selector: "croco-html-image-editor", inputs: { tag: "tag" }, outputs: { onTagUpdated: "onTagUpdated" }, ngImport: i0, template: "<div>\n <div style=\"height: 10px;\">\n </div>\n \n <div *ngIf=\"hasImageError\" class=\"error-block\">\n \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u043E\u043C\u0443 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440\u0443, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0444\u0430\u0439\u043B \u043D\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043B\u0438 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043D\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435.\n </div>\n\n <div *ngIf=\"hasFileId() && !hasImageError\">\n <img class=\"mx-auto d-block img-fluid\" [src]=\"getSrc()\" (error)=\"onErrorHandler()\"/>\n </div>\n\n <div *ngIf=\"!hasFileId()\">\n <h5>[\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043E]</h5>\n </div>\n</div>\n\n<div *ngIf=\"!tag.presentOrEdit\">\n <div style=\"height: 10px;\"></div>\n\n <div style=\"overflow-x:auto;\">\n <mat-button-toggle-group [(ngModel)]=\"searchOrEdit\">\n <mat-button-toggle value=\"search\">\n \u0418\u0441\u043A\u0430\u0442\u044C \u0444\u0430\u0439\u043B <mat-icon>search</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"edit\">\n \u0423\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u043E \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440\u0443 <mat-icon>settings</mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n \n\n <div style=\"height: 10px;\"></div>\n\n <div [hidden]=\"searchOrEdit !== 'search'\">\n <croco-html-file-id-select\n [labelText]=\"'\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0444\u0430\u0439\u043B'\"\n [(fileId)]=\"tag.attributes['file-id']\"\n (onFileIdChanged)=\"onFileIdChanged($event)\">\n </croco-html-file-id-select>\n </div>\n\n <div [hidden]=\"searchOrEdit !== 'edit'\">\n <form [formGroup]=\"myForm\">\n <mat-form-field class=\"w-100\">\n <input matInput placeholder=\"\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0444\u0430\u0439\u043B\u0430\" new-autocomplete=\"off\" autocomplete=\"off\"\n formControlName=\"fileId\" \n type=\"number\"\n [(ngModel)]=\"tag.attributes['file-id']\"\n (ngModelChange)=\"removeImageError()\">\n </mat-form-field>\n </form>\n </div>\n</div>", styles: [".error-block{background-color:#f32323;color:#fff;text-align:center;border-radius:10px;padding:10px}\n"], components: [{ type: i1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-labelledby", "tabIndex", "appearance", "checked", "disabled", "id", "name", "aria-label", "value"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.FileIdSelectComponent, selector: "croco-html-file-id-select", inputs: ["labelText", "fileId"], outputs: ["fileId", "onFileIdChanged"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i6.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: ImageEditorComponent, decorators: [{
|
|
43
|
+
type: Component,
|
|
44
|
+
args: [{
|
|
45
|
+
selector: 'croco-html-image-editor',
|
|
46
|
+
templateUrl: './image-editor.component.html',
|
|
47
|
+
styleUrls: ['./image-editor.component.css']
|
|
48
|
+
}]
|
|
49
|
+
}], ctorParameters: function () { return []; }, propDecorators: { tag: [{
|
|
50
|
+
type: Input
|
|
51
|
+
}], onTagUpdated: [{
|
|
52
|
+
type: Output
|
|
53
|
+
}] } });
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci9pbWFnZS1lZGl0b3IvaW1hZ2UtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci9pbWFnZS1lZGl0b3IvaW1hZ2UtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7OztBQVF4RixNQUFNLE9BQU8sb0JBQW9CO0lBbUIvQjtRQWpCQSxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixpQkFBWSxHQUFHLFFBQVEsQ0FBQztRQUt4QixXQUFNLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDckIsTUFBTSxFQUFDLElBQUksV0FBVyxFQUFFO1NBQ3pCLENBQUMsQ0FBQztRQU9ILGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztJQUUvQixDQUFDO0lBUGpCLGNBQWM7UUFDWixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0lBT0QsTUFBTTtRQUNKLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUN6SixDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQWE7UUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQ3BFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRUQsUUFBUTtJQUNSLENBQUM7O2lIQXZDVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixrSUNWakMseXRGQXFETTsyRkQzQ08sb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFdBQVcsRUFBRSwrQkFBK0I7b0JBQzVDLFNBQVMsRUFBRSxDQUFDLDhCQUE4QixDQUFDO2lCQUM1QzswRUFPQyxHQUFHO3NCQURGLEtBQUs7Z0JBWU4sWUFBWTtzQkFEWCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEltYWdlTWV0aG9kcywgRmlsZUltYWdlVGFnRGF0YUNvbnN0cyB9IGZyb20gJy4uLy4uLy4uL2V4dGVuc2lvbnMvSW1hZ2VNZXRob2RzJztcbmltcG9ydCB7IEh0bWxCb2R5VGFnIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nyb2NvLWh0bWwtaW1hZ2UtZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltYWdlLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ltYWdlLWVkaXRvci5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW1hZ2VFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGhhc0ltYWdlRXJyb3IgPSBmYWxzZTtcbiAgc2VhcmNoT3JFZGl0ID0gXCJzZWFyY2hcIjtcblxuICBASW5wdXQoKVxuICB0YWc6IEh0bWxCb2R5VGFnO1xuXG4gIG15Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIGZpbGVJZDpuZXcgRm9ybUNvbnRyb2woKVxuICB9KTtcblxuICBvbkVycm9ySGFuZGxlcigpe1xuICAgIHRoaXMuaGFzSW1hZ2VFcnJvciA9IHRydWU7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgb25UYWdVcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxIdG1sQm9keVRhZz4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIGdldFNyYygpe1xuICAgIHJldHVybiBJbWFnZU1ldGhvZHMuYnVpbGRVcmwodGhpcy50YWcuYXR0cmlidXRlc1tGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzLkZpbGVJZEF0dHJOYW1lXSk7XG4gIH1cblxuICBoYXNGaWxlSWQoKXtcbiAgICByZXR1cm4gdGhpcy50YWcuYXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzLkZpbGVJZEF0dHJOYW1lKSAmJiAhaXNOYU4odGhpcy50YWcuYXR0cmlidXRlc1tGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzLkZpbGVJZEF0dHJOYW1lXSk7XG4gIH1cblxuICBvbkZpbGVJZENoYW5nZWQoZmlsZUlkOm51bWJlcil7XG4gICAgdGhpcy50YWcuYXR0cmlidXRlc1tGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzLkZpbGVJZEF0dHJOYW1lXSA9IGZpbGVJZDtcbiAgICB0aGlzLnJlbW92ZUltYWdlRXJyb3IoKTtcbiAgfVxuXG4gIHJlbW92ZUltYWdlRXJyb3IoKXtcbiAgICB0aGlzLmhhc0ltYWdlRXJyb3IgPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbn1cbiIsIjxkaXY+XG4gICAgPGRpdiBzdHlsZT1cImhlaWdodDogMTBweDtcIj5cbiAgICA8L2Rpdj5cbiAgICBcbiAgICA8ZGl2ICpuZ0lmPVwiaGFzSW1hZ2VFcnJvclwiIGNsYXNzPVwiZXJyb3ItYmxvY2tcIj5cbiAgICAgICAg0JjQt9C+0LHRgNCw0LbQtdC90LjQtSDQvdC1INC90LDQudC00LXQvdC+INC/0L4g0YPQutCw0LfQsNC90L3QvtC80YMg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDRgywg0LLQvtC30LzQvtC20L3QviDRhNCw0LnQuyDQvdC1INGB0YPRidC10YHRgtCy0YPQtdGCINC40LvQuCDQvtGC0YHRg9GC0YHRgtCy0YPQtdGCINC90LAg0YHQtdGA0LLQtdGA0LUuXG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiaGFzRmlsZUlkKCkgJiYgIWhhc0ltYWdlRXJyb3JcIj5cbiAgICAgICAgPGltZyBjbGFzcz1cIm14LWF1dG8gZC1ibG9jayBpbWctZmx1aWRcIiBbc3JjXT1cImdldFNyYygpXCIgKGVycm9yKT1cIm9uRXJyb3JIYW5kbGVyKClcIi8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWhhc0ZpbGVJZCgpXCI+XG4gICAgICAgIDxoNT5b0JjQt9C+0LHRgNCw0LbQtdC90LjQtSDQvdC1INCy0YvQsdGA0LDQvdC+XTwvaDU+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cIiF0YWcucHJlc2VudE9yRWRpdFwiPlxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwcHg7XCI+PC9kaXY+XG5cbiAgICA8ZGl2IHN0eWxlPVwib3ZlcmZsb3cteDphdXRvO1wiPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgWyhuZ01vZGVsKV09XCJzZWFyY2hPckVkaXRcIj5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cInNlYXJjaFwiPlxuICAgICAgICAgICAgICAgINCY0YHQutCw0YLRjCDRhNCw0LnQuyA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJlZGl0XCI+XG4gICAgICAgICAgICAgICAg0KPQutCw0LfQsNGC0Ywg0L/QviDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNGDIDxtYXQtaWNvbj5zZXR0aW5nczwvbWF0LWljb24+XG4gICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgIDwvZGl2PlxuICAgIFxuXG4gICAgPGRpdiBzdHlsZT1cImhlaWdodDogMTBweDtcIj48L2Rpdj5cblxuICAgIDxkaXYgW2hpZGRlbl09XCJzZWFyY2hPckVkaXQgIT09ICdzZWFyY2gnXCI+XG4gICAgICAgIDxjcm9jby1odG1sLWZpbGUtaWQtc2VsZWN0XG4gICAgICAgICBbbGFiZWxUZXh0XT1cIifQktGL0LHRgNCw0YLRjCDRhNCw0LnQuydcIlxuICAgICAgICAgWyhmaWxlSWQpXT1cInRhZy5hdHRyaWJ1dGVzWydmaWxlLWlkJ11cIlxuICAgICAgICAgKG9uRmlsZUlkQ2hhbmdlZCk9XCJvbkZpbGVJZENoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgICA8L2Nyb2NvLWh0bWwtZmlsZS1pZC1zZWxlY3Q+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IFtoaWRkZW5dPVwic2VhcmNoT3JFZGl0ICE9PSAnZWRpdCdcIj5cbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJteUZvcm1cIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwi0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YTQsNC50LvQsFwiIG5ldy1hdXRvY29tcGxldGU9XCJvZmZcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmaWxlSWRcIiBcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFnLmF0dHJpYnV0ZXNbJ2ZpbGUtaWQnXVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInJlbW92ZUltYWdlRXJyb3IoKVwiPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './external-video-block/external-video-block.component';
|
|
2
|
+
export * from './html-raw-editor/html-raw-editor.component';
|
|
3
|
+
export * from './image-editor/image-editor.component';
|
|
4
|
+
export * from './main-editor/main-editor.component';
|
|
5
|
+
export * from './main-editor-block/main-editor-block.component';
|
|
6
|
+
export * from './text-editor/text-editor.component';
|
|
7
|
+
export * from './visual-editor/visual-editor.component';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcm9jby1odG1sL3NyYy9saWIvY29tcG9uZW50cy9lZGl0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1REFBdUQsQ0FBQTtBQUNyRSxjQUFjLDZDQUE2QyxDQUFBO0FBQzNELGNBQWMsdUNBQXVDLENBQUE7QUFDckQsY0FBYyxxQ0FBcUMsQ0FBQTtBQUNuRCxjQUFjLGlEQUFpRCxDQUFBO0FBQy9ELGNBQWMscUNBQXFDLENBQUE7QUFDbkQsY0FBYyx5Q0FBeUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZXh0ZXJuYWwtdmlkZW8tYmxvY2svZXh0ZXJuYWwtdmlkZW8tYmxvY2suY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9odG1sLXJhdy1lZGl0b3IvaHRtbC1yYXctZWRpdG9yLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2UtZWRpdG9yL2ltYWdlLWVkaXRvci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL21haW4tZWRpdG9yL21haW4tZWRpdG9yLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbWFpbi1lZGl0b3ItYmxvY2svbWFpbi1lZGl0b3ItYmxvY2suY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL3Zpc3VhbC1lZGl0b3IvdmlzdWFsLWVkaXRvci5jb21wb25lbnQnXG4iXX0=
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "ngx-clipboard";
|
|
5
|
+
import * as i2 from "@angular/material/snack-bar";
|
|
6
|
+
import * as i3 from "@angular/material/tabs";
|
|
7
|
+
import * as i4 from "../visual-editor/visual-editor.component";
|
|
8
|
+
import * as i5 from "@angular/material/form-field";
|
|
9
|
+
import * as i6 from "@angular/material/button";
|
|
10
|
+
import * as i7 from "@angular/material/card";
|
|
11
|
+
import * as i8 from "../../xml-tags/xml-tag-view/xml-tag-view.component";
|
|
12
|
+
import * as i9 from "@angular/common";
|
|
13
|
+
import * as i10 from "@angular/forms";
|
|
14
|
+
import * as i11 from "@angular/material/input";
|
|
15
|
+
import * as i12 from "@angular/cdk/text-field";
|
|
16
|
+
import * as i13 from "../../../pipes/to-preview.pipe";
|
|
17
|
+
export class MainEditorComponent {
|
|
18
|
+
constructor(_clipboardService, _snackBar, _cdref) {
|
|
19
|
+
this._clipboardService = _clipboardService;
|
|
20
|
+
this._snackBar = _snackBar;
|
|
21
|
+
this._cdref = _cdref;
|
|
22
|
+
this.visualEditorRendered = false;
|
|
23
|
+
this.showMarkUp = true;
|
|
24
|
+
this.useHtmlRaw = false;
|
|
25
|
+
this.myForm = new FormGroup({
|
|
26
|
+
"html": new FormControl(),
|
|
27
|
+
});
|
|
28
|
+
this.html = "";
|
|
29
|
+
this.onHtmlChanged = new EventEmitter();
|
|
30
|
+
}
|
|
31
|
+
ngAfterContentChecked() {
|
|
32
|
+
this._cdref.detectChanges();
|
|
33
|
+
}
|
|
34
|
+
visualEditorRenderedHandler() {
|
|
35
|
+
this.visualEditorRendered = true;
|
|
36
|
+
this.recalculateBodyTags();
|
|
37
|
+
}
|
|
38
|
+
onHtmlChangedHandler(html) {
|
|
39
|
+
this.html = html;
|
|
40
|
+
this.onHtmlChanged.emit(html);
|
|
41
|
+
}
|
|
42
|
+
textAreaModelChangedHandler() {
|
|
43
|
+
this.recalculateBodyTags();
|
|
44
|
+
this.onHtmlChangedHandler(this.html);
|
|
45
|
+
}
|
|
46
|
+
recalculateBodyTags() {
|
|
47
|
+
this.visualEditor.html = this.html;
|
|
48
|
+
this.visualEditor.recalculateBodyTags();
|
|
49
|
+
}
|
|
50
|
+
copyMarkUp() {
|
|
51
|
+
this._snackBar.open("Разметка таблицы скопирована в буфер обмена", "Закрыть", { duration: 1500 });
|
|
52
|
+
this._clipboardService.copy(this.html);
|
|
53
|
+
}
|
|
54
|
+
ngOnInit() {
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
MainEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: MainEditorComponent, deps: [{ token: i1.ClipboardService }, { token: i2.MatSnackBar }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
58
|
+
MainEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: MainEditorComponent, 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 }], 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 <form *ngIf=\"visualEditorRendered\" [formGroup]=\"myForm\">\n <mat-form-field class=\"w-100\">\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434\" formControlName=\"html\" [(ngModel)]=\"html\"\n (ngModelChange)=\"textAreaModelChangedHandler()\"></textarea>\n </mat-form-field>\n </form>\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>\n <croco-html-xml-tag-view [data]=\"html | topreview\">\n </croco-html-xml-tag-view>\n </mat-card>\n </mat-tab>\n</mat-tab-group>", styles: [".example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:white;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:white;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"], components: [{ type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby"], exportAs: ["matTab"] }, { type: i4.VisualEditorComponent, selector: "croco-visual-editor", inputs: ["showMarkUp", "useHtmlRaw", "html"], outputs: ["html", "onHtmlChanged", "rendered"] }, { type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i8.XmlTagViewComponent, selector: "croco-html-xml-tag-view", inputs: ["data"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i12.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "topreview": i13.ToPreviewPipe } });
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: MainEditorComponent, decorators: [{
|
|
60
|
+
type: Component,
|
|
61
|
+
args: [{
|
|
62
|
+
selector: 'croco-html-main-editor',
|
|
63
|
+
templateUrl: './main-editor.component.html',
|
|
64
|
+
styleUrls: ['./main-editor.component.css']
|
|
65
|
+
}]
|
|
66
|
+
}], ctorParameters: function () { return [{ type: i1.ClipboardService }, { type: i2.MatSnackBar }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { visualEditor: [{
|
|
67
|
+
type: ViewChild,
|
|
68
|
+
args: ["visualEditor"]
|
|
69
|
+
}], showMarkUp: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], useHtmlRaw: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], html: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}, {
|
|
76
|
+
type: Output
|
|
77
|
+
}], onHtmlChanged: [{
|
|
78
|
+
type: Output
|
|
79
|
+
}] } });
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMvZWRpdG9yL21haW4tZWRpdG9yL21haW4tZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci9tYWluLWVkaXRvci9tYWluLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTBDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBVXhELE1BQU0sT0FBTyxtQkFBbUI7SUF1QjlCLFlBQW9CLGlCQUFtQyxFQUM3QyxTQUFzQixFQUN0QixNQUF5QjtRQUZmLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDN0MsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQXZCbkMseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBSzdCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFHbEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixXQUFNLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDckIsTUFBTSxFQUFFLElBQUksV0FBVyxFQUFFO1NBQzFCLENBQUMsQ0FBQztRQUlILFNBQUksR0FBVyxFQUFFLENBQUM7UUFHbEIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBSUosQ0FBQztJQUV4QyxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsMkJBQTJCO1FBQ3pCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQVk7UUFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyw2Q0FBNkMsRUFBRSxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUTtJQUNSLENBQUM7O2dIQXpEVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixxVENYaEMsNmdEQXNDZ0I7MkZEM0JILG1CQUFtQjtrQkFML0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxXQUFXLEVBQUUsOEJBQThCO29CQUMzQyxTQUFTLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztpQkFDM0M7aUtBS0MsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGNBQWM7Z0JBSXpCLFVBQVU7c0JBRFQsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBU04sSUFBSTtzQkFGSCxLQUFLOztzQkFDTCxNQUFNO2dCQUlQLGFBQWE7c0JBRFosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudENoZWNrZWQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBDbGlwYm9hcmRTZXJ2aWNlIH0gZnJvbSAnbmd4LWNsaXBib2FyZCc7XG5pbXBvcnQgeyBWaXN1YWxFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi92aXN1YWwtZWRpdG9yL3Zpc3VhbC1lZGl0b3IuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3JvY28taHRtbC1tYWluLWVkaXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYWluLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21haW4tZWRpdG9yLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBNYWluRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRDaGVja2VkIHtcblxuICB2aXN1YWxFZGl0b3JSZW5kZXJlZCA9IGZhbHNlO1xuICBAVmlld0NoaWxkKFwidmlzdWFsRWRpdG9yXCIpXG4gIHZpc3VhbEVkaXRvciE6IFZpc3VhbEVkaXRvckNvbXBvbmVudDtcblxuICBASW5wdXQoKVxuICBzaG93TWFya1VwID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICB1c2VIdG1sUmF3ID0gZmFsc2U7XG5cbiAgbXlGb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgXCJodG1sXCI6IG5ldyBGb3JtQ29udHJvbCgpLFxuICB9KTtcblxuICBASW5wdXQoKVxuICBAT3V0cHV0KClcbiAgaHRtbDogc3RyaW5nID0gXCJcIjtcblxuICBAT3V0cHV0KClcbiAgb25IdG1sQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NsaXBib2FyZFNlcnZpY2U6IENsaXBib2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgX2NkcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuX2NkcmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHZpc3VhbEVkaXRvclJlbmRlcmVkSGFuZGxlcigpe1xuICAgIHRoaXMudmlzdWFsRWRpdG9yUmVuZGVyZWQgPSB0cnVlO1xuICAgIHRoaXMucmVjYWxjdWxhdGVCb2R5VGFncygpO1xuICB9XG5cbiAgb25IdG1sQ2hhbmdlZEhhbmRsZXIoaHRtbDogc3RyaW5nKSB7XG4gICAgdGhpcy5odG1sID0gaHRtbDtcbiAgICB0aGlzLm9uSHRtbENoYW5nZWQuZW1pdChodG1sKTtcbiAgfVxuXG4gIHRleHRBcmVhTW9kZWxDaGFuZ2VkSGFuZGxlcigpe1xuICAgIHRoaXMucmVjYWxjdWxhdGVCb2R5VGFncygpO1xuICAgIHRoaXMub25IdG1sQ2hhbmdlZEhhbmRsZXIodGhpcy5odG1sKTtcbiAgfVxuXG4gIHJlY2FsY3VsYXRlQm9keVRhZ3MoKSB7XG4gICAgdGhpcy52aXN1YWxFZGl0b3IuaHRtbCA9IHRoaXMuaHRtbDtcbiAgICB0aGlzLnZpc3VhbEVkaXRvci5yZWNhbGN1bGF0ZUJvZHlUYWdzKCk7XG4gIH1cblxuICBjb3B5TWFya1VwKCkge1xuICAgIHRoaXMuX3NuYWNrQmFyLm9wZW4oXCLQoNCw0LfQvNC10YLQutCwINGC0LDQsdC70LjRhtGLINGB0LrQvtC/0LjRgNC+0LLQsNC90LAg0LIg0LHRg9GE0LXRgCDQvtCx0LzQtdC90LBcIiwgXCLQl9Cw0LrRgNGL0YLRjFwiLCB7IGR1cmF0aW9uOiAxNTAwIH0pO1xuICAgIHRoaXMuX2NsaXBib2FyZFNlcnZpY2UuY29weSh0aGlzLmh0bWwpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxufVxuIiwiPG1hdC10YWItZ3JvdXA+XG4gIDxtYXQtdGFiIGxhYmVsPVwi0JLQuNC30YPQsNC70YzQvdGL0Lkg0YDQtdC00LDQutGC0L7RgFwiPlxuXG4gICAgPGRpdiBzdHlsZT1cImhlaWdodDogMjBweDtcIj48L2Rpdj5cblxuICAgIDxjcm9jby12aXN1YWwtZWRpdG9yICN2aXN1YWxFZGl0b3JcbiAgICAgIFt1c2VIdG1sUmF3XT1cInVzZUh0bWxSYXdcIlxuICAgICAgW2h0bWxdPVwiaHRtbFwiXG4gICAgICAob25IdG1sQ2hhbmdlZCk9XCJvbkh0bWxDaGFuZ2VkSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgIChyZW5kZXJlZCk9XCJ2aXN1YWxFZGl0b3JSZW5kZXJlZEhhbmRsZXIoKVwiPlxuICAgIDwvY3JvY28tdmlzdWFsLWVkaXRvcj5cblxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDIwcHg7XCI+PC9kaXY+XG5cbiAgPC9tYXQtdGFiPlxuXG4gIDxtYXQtdGFiIGxhYmVsPVwi0KDQsNC30LzQtdGC0LrQsFwiPlxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwcHg7XCI+PC9kaXY+XG4gICAgPGZvcm0gKm5nSWY9XCJ2aXN1YWxFZGl0b3JSZW5kZXJlZFwiIFtmb3JtR3JvdXBdPVwibXlGb3JtXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgY2RrVGV4dGFyZWFBdXRvc2l6ZSAjYXV0b3NpemU9XCJjZGtUZXh0YXJlYUF1dG9zaXplXCJcbiAgICAgICAgICBjZGtBdXRvc2l6ZU1pblJvd3M9XCIxXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cItCY0YHRhdC+0LTQvdGL0Lkg0LrQvtC0XCIgZm9ybUNvbnRyb2xOYW1lPVwiaHRtbFwiIFsobmdNb2RlbCldPVwiaHRtbFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidGV4dEFyZWFNb2RlbENoYW5nZWRIYW5kbGVyKClcIj48L3RleHRhcmVhPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Zvcm0+XG5cbiAgICA8YnV0dG9uIChjbGljayk9XCJjb3B5TWFya1VwKClcIiBcbiAgICAgIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAg0JrQvtC/0LjRgNC+0LLQsNGC0Ywg0YDQsNC30LzQtdGC0LrRg1xuICAgIDwvYnV0dG9uPlxuICA8L21hdC10YWI+XG4gIDxtYXQtdGFiIGxhYmVsPVwi0KDQtdC30YPQu9GM0YLQsNGCXCI+XG4gICAgPG1hdC1jYXJkPlxuICAgICAgPGNyb2NvLWh0bWwteG1sLXRhZy12aWV3IFtkYXRhXT1cImh0bWwgfCB0b3ByZXZpZXdcIj5cbiAgICAgIDwvY3JvY28taHRtbC14bWwtdGFnLXZpZXc+XG4gICAgPC9tYXQtY2FyZD5cbiAgPC9tYXQtdGFiPlxuPC9tYXQtdGFiLWdyb3VwPiJdfQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { TextMethods } from '../../../extensions/TextMethods';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../text-editor/text-editor.component";
|
|
5
|
+
import * as i2 from "../image-editor/image-editor.component";
|
|
6
|
+
import * as i3 from "../external-video-block/external-video-block.component";
|
|
7
|
+
import * as i4 from "../html-raw-editor/html-raw-editor.component";
|
|
8
|
+
import * as i5 from "@angular/material/button";
|
|
9
|
+
import * as i6 from "@angular/material/icon";
|
|
10
|
+
import * as i7 from "@angular/common";
|
|
11
|
+
export class MainEditorBlockComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.textTags = TextMethods.textTags;
|
|
14
|
+
this.onTagSaved = new EventEmitter();
|
|
15
|
+
this.onTagRemoved = new EventEmitter();
|
|
16
|
+
}
|
|
17
|
+
tagUpdatedHandler(tag) {
|
|
18
|
+
}
|
|
19
|
+
save() {
|
|
20
|
+
this.tag.presentOrEdit = true;
|
|
21
|
+
this.onTagSaved.emit(this.tag);
|
|
22
|
+
}
|
|
23
|
+
deleteItem() {
|
|
24
|
+
this.onTagRemoved.emit(this.tag);
|
|
25
|
+
}
|
|
26
|
+
ngOnInit() {
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
MainEditorBlockComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: MainEditorBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
30
|
+
MainEditorBlockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: MainEditorBlockComponent, selector: "croco-html-main-editor-block", inputs: { tag: "tag" }, outputs: { onTagSaved: "onTagSaved", onTagRemoved: "onTagRemoved" }, ngImport: i0, template: "<div>\n <div>\n <div *ngIf=\"textTags.includes(tag.tagDescription.tag)\">\n <croco-html-text-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-text-editor>\n </div>\n\n <div *ngIf=\"tag.tagDescription.tag === 'file-image'\"> \n <croco-html-image-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-image-editor>\n </div>\n\n <div *ngIf=\"tag.tagDescription.tag === 'external-video'\">\n <croco-html-external-video-block (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-external-video-block>\n </div>\n\n <div *ngIf=\"tag.tagDescription.tag === 'html-raw'\">\n <croco-html-html-raw-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-html-raw-editor>\n </div>\n\n </div>\n\n <div class=\"d-flex justify-content-between\">\n <div class=\"d-flex justify-content-end align-self-center\">\n <div>\n <button *ngIf=\"tag.presentOrEdit\" (click)=\"tag.presentOrEdit = false\" mat-icon-button>\n <mat-icon>edit</mat-icon>\n </button>\n <button *ngIf=\"!tag.presentOrEdit\" (click)=\"save()\" mat-icon-button>\n <mat-icon>save</mat-icon>\n </button>\n <button (click)=\"deleteItem()\" mat-icon-button color=\"warn\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n </div>\n\n </div>\n</div>", styles: [""], components: [{ type: i1.TextEditorComponent, selector: "croco-html-text-editor", inputs: ["tag"], outputs: ["onTagUpdated"] }, { type: i2.ImageEditorComponent, selector: "croco-html-image-editor", inputs: ["tag"], outputs: ["onTagUpdated"] }, { type: i3.ExternalVideoBlockComponent, selector: "croco-html-external-video-block", inputs: ["tag"], outputs: ["onTagUpdated"] }, { type: i4.HtmlRawEditorComponent, selector: "croco-html-html-raw-editor", inputs: ["tag"], outputs: ["onTagUpdated"] }, { type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: MainEditorBlockComponent, decorators: [{
|
|
32
|
+
type: Component,
|
|
33
|
+
args: [{
|
|
34
|
+
selector: 'croco-html-main-editor-block',
|
|
35
|
+
templateUrl: './main-editor-block.component.html',
|
|
36
|
+
styleUrls: ['./main-editor-block.component.css']
|
|
37
|
+
}]
|
|
38
|
+
}], ctorParameters: function () { return []; }, propDecorators: { tag: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], onTagSaved: [{
|
|
41
|
+
type: Output
|
|
42
|
+
}], onTagRemoved: [{
|
|
43
|
+
type: Output
|
|
44
|
+
}] } });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1lZGl0b3ItYmxvY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMvZWRpdG9yL21haW4tZWRpdG9yLWJsb2NrL21haW4tZWRpdG9yLWJsb2NrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci9tYWluLWVkaXRvci1ibG9jay9tYWluLWVkaXRvci1ibG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7O0FBUTlELE1BQU0sT0FBTyx3QkFBd0I7SUFhbkM7UUFYQSxhQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQU1oQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUc3QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7SUFFL0IsQ0FBQztJQUVqQixpQkFBaUIsQ0FBQyxHQUFlO0lBQ2pDLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsUUFBUTtJQUNSLENBQUM7O3FIQTVCVSx3QkFBd0I7eUdBQXhCLHdCQUF3QixpS0NUckMsazdDQXdDTTsyRkQvQk8sd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw4QkFBOEI7b0JBQ3hDLFdBQVcsRUFBRSxvQ0FBb0M7b0JBQ2pELFNBQVMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDO2lCQUNqRDswRUFNQyxHQUFHO3NCQURGLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxNQUFNO2dCQUlQLFlBQVk7c0JBRFgsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRleHRNZXRob2RzIH0gZnJvbSAnLi4vLi4vLi4vZXh0ZW5zaW9ucy9UZXh0TWV0aG9kcyc7XG5pbXBvcnQgeyBIdG1sQm9keVRhZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcm9jby1odG1sLW1haW4tZWRpdG9yLWJsb2NrJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21haW4tZWRpdG9yLWJsb2NrLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFpbi1lZGl0b3ItYmxvY2suY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIE1haW5FZGl0b3JCbG9ja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgdGV4dFRhZ3MgPSBUZXh0TWV0aG9kcy50ZXh0VGFncztcblxuICBASW5wdXQoKVxuICB0YWc6SHRtbEJvZHlUYWc7XG5cbiAgQE91dHB1dCgpXG4gIG9uVGFnU2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEh0bWxCb2R5VGFnPigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblRhZ1JlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEh0bWxCb2R5VGFnPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgdGFnVXBkYXRlZEhhbmRsZXIodGFnOkh0bWxCb2R5VGFnKTp2b2lke1xuICB9XG5cbiAgc2F2ZSgpe1xuICAgIHRoaXMudGFnLnByZXNlbnRPckVkaXQgPSB0cnVlO1xuICAgIHRoaXMub25UYWdTYXZlZC5lbWl0KHRoaXMudGFnKTtcbiAgfVxuXG4gIGRlbGV0ZUl0ZW0oKXtcbiAgICB0aGlzLm9uVGFnUmVtb3ZlZC5lbWl0KHRoaXMudGFnKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG59XG4iLCI8ZGl2PlxuICA8ZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJ0ZXh0VGFncy5pbmNsdWRlcyh0YWcudGFnRGVzY3JpcHRpb24udGFnKVwiPlxuICAgICAgPGNyb2NvLWh0bWwtdGV4dC1lZGl0b3IgKG9uVGFnVXBkYXRlZCk9XCJ0YWdVcGRhdGVkSGFuZGxlcigkZXZlbnQpXCIgW3RhZ109XCJ0YWdcIj5cbiAgICAgIDwvY3JvY28taHRtbC10ZXh0LWVkaXRvcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJ0YWcudGFnRGVzY3JpcHRpb24udGFnID09PSAnZmlsZS1pbWFnZSdcIj4gXG4gICAgICA8Y3JvY28taHRtbC1pbWFnZS1lZGl0b3IgKG9uVGFnVXBkYXRlZCk9XCJ0YWdVcGRhdGVkSGFuZGxlcigkZXZlbnQpXCIgW3RhZ109XCJ0YWdcIj5cbiAgICAgIDwvY3JvY28taHRtbC1pbWFnZS1lZGl0b3I+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwidGFnLnRhZ0Rlc2NyaXB0aW9uLnRhZyA9PT0gJ2V4dGVybmFsLXZpZGVvJ1wiPlxuICAgICAgPGNyb2NvLWh0bWwtZXh0ZXJuYWwtdmlkZW8tYmxvY2sgKG9uVGFnVXBkYXRlZCk9XCJ0YWdVcGRhdGVkSGFuZGxlcigkZXZlbnQpXCIgW3RhZ109XCJ0YWdcIj5cbiAgICAgIDwvY3JvY28taHRtbC1leHRlcm5hbC12aWRlby1ibG9jaz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJ0YWcudGFnRGVzY3JpcHRpb24udGFnID09PSAnaHRtbC1yYXcnXCI+XG4gICAgICA8Y3JvY28taHRtbC1odG1sLXJhdy1lZGl0b3IgKG9uVGFnVXBkYXRlZCk9XCJ0YWdVcGRhdGVkSGFuZGxlcigkZXZlbnQpXCIgW3RhZ109XCJ0YWdcIj5cbiAgICAgIDwvY3JvY28taHRtbC1odG1sLXJhdy1lZGl0b3I+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1zZWxmLWNlbnRlclwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInRhZy5wcmVzZW50T3JFZGl0XCIgKGNsaWNrKT1cInRhZy5wcmVzZW50T3JFZGl0ID0gZmFsc2VcIiBtYXQtaWNvbi1idXR0b24+XG4gICAgICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiF0YWcucHJlc2VudE9yRWRpdFwiIChjbGljayk9XCJzYXZlKClcIiBtYXQtaWNvbi1idXR0b24+XG4gICAgICAgICAgPG1hdC1pY29uPnNhdmU8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlSXRlbSgpXCIgbWF0LWljb24tYnV0dG9uIGNvbG9yPVwid2FyblwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/material/button-toggle";
|
|
5
|
+
import * as i2 from "@angular/material/icon";
|
|
6
|
+
import * as i3 from "@angular/material/form-field";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
import * as i5 from "@angular/forms";
|
|
9
|
+
import * as i6 from "@angular/material/input";
|
|
10
|
+
import * as i7 from "@angular/cdk/text-field";
|
|
11
|
+
export class TextEditorComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.myForm = new FormGroup({
|
|
14
|
+
"innerHtml": new FormControl()
|
|
15
|
+
});
|
|
16
|
+
this.onTagUpdated = new EventEmitter();
|
|
17
|
+
}
|
|
18
|
+
ngOnInit() {
|
|
19
|
+
}
|
|
20
|
+
getInnerHtml() {
|
|
21
|
+
return `<${this.tag.tagDescription.tag}>${this.tag.innerHtml}<${this.tag.tagDescription.tag}/>`;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
TextEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: TextEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
+
TextEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: TextEditorComponent, selector: "croco-html-text-editor", inputs: { tag: "tag" }, outputs: { onTagUpdated: "onTagUpdated" }, ngImport: i0, template: "<div *ngIf=\"tag.presentOrEdit\">\n <div style=\"height: 10px;\">\n </div>\n\n <div style=\"text-align: left;\" *ngIf=\"tag.attributes['h-align'] === 'left'\" [innerHtml]=\"getInnerHtml()\">\n </div>\n <div style=\"text-align: right;\" *ngIf=\"tag.attributes['h-align'] === 'right'\" [innerHtml]=\"getInnerHtml()\">\n </div>\n <div style=\"text-align: center;\" *ngIf=\"tag.attributes['h-align'] === 'center'\" [innerHtml]=\"getInnerHtml()\">\n </div>\n</div>\n\n<div *ngIf=\"!tag.presentOrEdit\">\n <div style=\"overflow-x: auto;\">\n <mat-button-toggle-group [(ngModel)]=\"tag.attributes['h-align']\">\n <mat-button-toggle value=\"center\">\n \u041F\u043E \u0446\u0435\u043D\u0442\u0440\u0443 <mat-icon>format_align_center</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"left\">\n \u0421\u043B\u0435\u0432\u0430 <mat-icon>format_align_left</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"right\">\n \u0421\u043F\u0440\u0430\u0432\u0430 <mat-icon> format_align_right</mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n\n <div style=\"height: 10px;\">\n </div>\n <form [formGroup]=\"myForm\">\n <mat-form-field class=\"w-100\">\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0433\u043E \u0442\u0435\u0433\u0430\"\n formControlName=\"innerHtml\"\n [(ngModel)]=\"tag.innerHtml\"></textarea>\n </mat-form-field>\n </form>\n</div>", styles: [""], components: [{ type: i1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-labelledby", "tabIndex", "appearance", "checked", "disabled", "id", "name", "aria-label", "value"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i7.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: TextEditorComponent, decorators: [{
|
|
27
|
+
type: Component,
|
|
28
|
+
args: [{
|
|
29
|
+
selector: 'croco-html-text-editor',
|
|
30
|
+
templateUrl: './text-editor.component.html',
|
|
31
|
+
styleUrls: ['./text-editor.component.css']
|
|
32
|
+
}]
|
|
33
|
+
}], ctorParameters: function () { return []; }, propDecorators: { tag: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}], onTagUpdated: [{
|
|
36
|
+
type: Output
|
|
37
|
+
}] } });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMvZWRpdG9yL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQVF4RCxNQUFNLE9BQU8sbUJBQW1CO0lBWTlCO1FBVkEsV0FBTSxHQUFHLElBQUksU0FBUyxDQUFDO1lBQ3JCLFdBQVcsRUFBRSxJQUFJLFdBQVcsRUFBRTtTQUMvQixDQUFDLENBQUM7UUFNSCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7SUFFL0IsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2xHLENBQUM7O2dIQW5CVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixpSUNUaEMsdTBEQXNDTTsyRkQ3Qk8sbUJBQW1CO2tCQUwvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFdBQVcsRUFBRSw4QkFBOEI7b0JBQzNDLFNBQVMsRUFBRSxDQUFDLDZCQUE2QixDQUFDO2lCQUMzQzswRUFRQyxHQUFHO3NCQURGLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEh0bWxCb2R5VGFnIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nyb2NvLWh0bWwtdGV4dC1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0LWVkaXRvci5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVGV4dEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgbXlGb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgXCJpbm5lckh0bWxcIjogbmV3IEZvcm1Db250cm9sKClcbiAgfSk7XG5cbiAgQElucHV0KClcbiAgdGFnOiBIdG1sQm9keVRhZztcblxuICBAT3V0cHV0KClcbiAgb25UYWdVcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxIdG1sQm9keVRhZz4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgZ2V0SW5uZXJIdG1sKCl7XG4gICAgcmV0dXJuIGA8JHt0aGlzLnRhZy50YWdEZXNjcmlwdGlvbi50YWd9PiR7dGhpcy50YWcuaW5uZXJIdG1sfTwke3RoaXMudGFnLnRhZ0Rlc2NyaXB0aW9uLnRhZ30vPmA7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJ0YWcucHJlc2VudE9yRWRpdFwiPlxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwcHg7XCI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDtcIiAqbmdJZj1cInRhZy5hdHRyaWJ1dGVzWydoLWFsaWduJ10gPT09ICdsZWZ0J1wiIFtpbm5lckh0bWxdPVwiZ2V0SW5uZXJIdG1sKClcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7XCIgKm5nSWY9XCJ0YWcuYXR0cmlidXRlc1snaC1hbGlnbiddID09PSAncmlnaHQnXCIgW2lubmVySHRtbF09XCJnZXRJbm5lckh0bWwoKVwiPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCIgKm5nSWY9XCJ0YWcuYXR0cmlidXRlc1snaC1hbGlnbiddID09PSAnY2VudGVyJ1wiIFtpbm5lckh0bWxdPVwiZ2V0SW5uZXJIdG1sKClcIj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiIXRhZy5wcmVzZW50T3JFZGl0XCI+XG4gICAgPGRpdiBzdHlsZT1cIm92ZXJmbG93LXg6IGF1dG87XCI+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBbKG5nTW9kZWwpXT1cInRhZy5hdHRyaWJ1dGVzWydoLWFsaWduJ11cIj5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cImNlbnRlclwiPlxuICAgICAgICAgICAgICAgINCf0L4g0YbQtdC90YLRgNGDIDxtYXQtaWNvbj5mb3JtYXRfYWxpZ25fY2VudGVyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAg0KHQu9C10LLQsCA8bWF0LWljb24+Zm9ybWF0X2FsaWduX2xlZnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAg0KHQv9GA0LDQstCwIDxtYXQtaWNvbj4gZm9ybWF0X2FsaWduX3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMHB4O1wiPlxuICAgIDwvZGl2PlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwibXlGb3JtXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgY2RrVGV4dGFyZWFBdXRvc2l6ZSAjYXV0b3NpemU9XCJjZGtUZXh0YXJlYUF1dG9zaXplXCJcbiAgICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1pblJvd3M9XCIxXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cItCS0L3Rg9GC0YDQtdC90L3Rj9GPINGA0LDQt9C80LXRgtC60LAg0YLQtdC60YHRgtC+0LLQvtCz0L4g0YLQtdCz0LBcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImlubmVySHRtbFwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YWcuaW5uZXJIdG1sXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Zvcm0+XG48L2Rpdj4iXX0=
|