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 @@
|
|
|
1
|
+
{"version":3,"file":"croco-html.umd.js","sources":["../../../projects/croco-html/src/lib/extensions/ImageMethods.ts","../../../projects/croco-html/src/lib/services/file-upload.service.ts","../../../projects/croco-html/src/lib/components/upload-files-btn/upload-files-btn.component.ts","../../../projects/croco-html/src/lib/components/upload-files-btn/upload-files-btn.component.html","../../../projects/croco-html/src/lib/components/add-files-btn/add-files-btn.component.ts","../../../projects/croco-html/src/lib/components/add-files-btn/add-files-btn.component.html","../../../projects/croco-html/src/lib/extensions/VideoMethods.ts","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-external-video/xml-tag-external-video.component.ts","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-external-video/xml-tag-external-video.component.html","../../../projects/croco-html/src/lib/components/editor/external-video-block/external-video-block.component.ts","../../../projects/croco-html/src/lib/components/editor/external-video-block/external-video-block.component.html","../../../projects/croco-html/src/lib/components/editor/html-raw-editor/html-raw-editor.component.ts","../../../projects/croco-html/src/lib/components/editor/html-raw-editor/html-raw-editor.component.html","../../../node_modules/tslib/tslib.es6.js","../../../projects/croco-html/src/lib/services/files-query.service.ts","../../../projects/croco-html/src/lib/components/file-id-select/file-id-select.component.ts","../../../projects/croco-html/src/lib/components/file-id-select/file-id-select.component.html","../../../projects/croco-html/src/lib/components/editor/image-editor/image-editor.component.ts","../../../projects/croco-html/src/lib/components/editor/image-editor/image-editor.component.html","../../../projects/croco-html/src/lib/extensions/AngularMaterialTableMethods.ts","../../../projects/croco-html/src/lib/extensions/TextSimpleMethods.ts","../../../projects/croco-html/src/lib/extensions/BootstrapTableMethods.ts","../../../projects/croco-html/src/lib/extensions/TableMethods.ts","../../../projects/croco-html/src/lib/extensions/TextMethods.ts","../../../projects/croco-html/src/lib/extensions/HtmlExtractionMethods.ts","../../../projects/croco-html/src/lib/extensions/HtmlRawTagDataConsts.ts","../../../projects/croco-html/src/lib/extensions/BodyTagsExtensions.ts","../../../projects/croco-html/src/lib/extensions/XmlExtensions.ts","../../../projects/croco-html/src/lib/components/editor/text-editor/text-editor.component.ts","../../../projects/croco-html/src/lib/components/editor/text-editor/text-editor.component.html","../../../projects/croco-html/src/lib/components/editor/main-editor-block/main-editor-block.component.ts","../../../projects/croco-html/src/lib/components/editor/main-editor-block/main-editor-block.component.html","../../../projects/croco-html/src/lib/components/editor/visual-editor/visual-editor.component.ts","../../../projects/croco-html/src/lib/components/editor/visual-editor/visual-editor.component.html","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-text-view/xml-tag-text-view.component.ts","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-text-view/xml-tag-text-view.component.html","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-header-inner-text-view/xml-tag-header-inner-text-view.component.ts","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-header-inner-text-view/xml-tag-header-inner-text-view.component.html","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-header-text-view/xml-tag-header-text-view.component.ts","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-header-text-view/xml-tag-header-text-view.component.html","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-html-view/xml-tag-html-view.component.ts","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-html-view/xml-tag-html-view.component.html","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-view/xml-tag-view.component.ts","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-view/xml-tag-view.component.html","../../../projects/croco-html/src/lib/pipes/to-preview.pipe.ts","../../../projects/croco-html/src/lib/components/editor/main-editor/main-editor.component.ts","../../../projects/croco-html/src/lib/components/editor/main-editor/main-editor.component.html","../../../projects/croco-html/src/lib/pipes/RichTextToHtmlPipe.ts","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-rich-text-view/xml-tag-rich-text-view.component.ts","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-rich-text-view/xml-tag-rich-text-view.component.html","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-table-view/xml-tag-table-view.component.ts","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-table-view/xml-tag-table-view.component.html","../../../projects/croco-html/src/lib/pipes/TagToSpanPipe.ts","../../../projects/croco-html/src/lib/pipes/ToHtmlBodyTagsPipe.ts","../../../projects/croco-html/src/lib/extensions/TableBuilder.ts","../../../projects/croco-html/src/lib/index.ts","../../../projects/croco-html/src/lib/croco-html.module.ts","../../../projects/croco-html/src/public-api.ts","../../../projects/croco-html/src/croco-html.ts"],"sourcesContent":["export class FileImageTagDataConsts {\n static TagName = \"file-image\";\n static FileIdAttrName = \"file-id\";\n}\n\nexport interface FileImageTag{\n type: string;\n data: FileImageTagData;\n}\n\nexport interface FileImageTagData{\n src: string;\n fileId: number;\n}\n\nexport class ImageMethods {\n\n public static buildUrl(fileId: number):string{\n return `/FileCopies/Images/Medium/${fileId}.jpg`;\n }\n\n public static buildSmallUrl(fileId: number):string{\n return `/FileCopies/Images/Small/${fileId}.jpg`;\n }\n\n public static ExtractImage(elem: HTMLElement): FileImageTag {\n let fileId = +elem.getAttribute(FileImageTagDataConsts.FileIdAttrName);\n let src = ImageMethods.buildUrl(fileId);\n return {\n type: FileImageTagDataConsts.TagName,\n data: {\n src,\n fileId: fileId,\n }\n };\n }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\nexport interface BaseApiResponse {\n isSucceeded: boolean;\n message: string;\n}\n\nexport interface GenericBaseApiResponse<T> extends BaseApiResponse {\n responseObject: T;\n}\n\nexport interface BaseApiResponseWithFilesIds extends BaseApiResponse{\n responseObject: number[];\n}\n\n@Injectable({providedIn: 'root'})\nexport class FileUploadService {\n\n constructor(private _httpClient: HttpClient,\n @Inject('BASE_URL') private baseUrl: string) {\n }\n\n postFile(file: File, createLocalCopiesNow = false):Observable<BaseApiResponseWithFilesIds>{\n const formData: FormData = new FormData();\n\n formData.append(`fileKey1`, file, file.name);\n\n return this.postFilesInner(formData, createLocalCopiesNow);\n }\n\n postFiles(files: FileList, createLocalCopiesNow = false): Observable<BaseApiResponseWithFilesIds> {\n\n const formData: FormData = new FormData();\n\n for(let i = 0; i < files.length; i++){\n var fileToUpload = files.item(i);\n formData.append(`fileKey${i}`, fileToUpload as Blob, fileToUpload?.name);\n }\n\n return this.postFilesInner(formData, createLocalCopiesNow);\n }\n\n postFilesInner(formData: FormData, createLocalCopiesNow = false): Observable<BaseApiResponseWithFilesIds> {\n\n let endpoint = this.baseUrl + 'Api/Files/UploadFiles';\n\n if(createLocalCopiesNow){\n endpoint += '/Now';\n }\n\n return this._httpClient\n .post<BaseApiResponseWithFilesIds>(endpoint, formData);\n }\n}\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { BaseApiResponseWithFilesIds, FileUploadService } from '../../services/file-upload.service';\n\nexport interface FilePostingStarted {\n filesCount: number;\n createLocalCopiesNow:boolean;\n}\n\n@Component({\n selector: 'app-upload-files-btn',\n templateUrl: './upload-files-btn.component.html',\n styleUrls: ['./upload-files-btn.component.css']\n})\nexport class UploadFilesBtnComponent implements OnInit {\n\n constructor(private _fileUploadService: FileUploadService) { }\n @ViewChild('filesInput') private fileInput!: ElementRef<HTMLInputElement>;\n\n @Input()\n extAccepts: string = \"*/*\";\n\n @Input()\n isMultiple: boolean = true;\n\n @Input()\n btnText: string = \"Загрузить файлы\";\n\n @Input()\n createLocalCopiesNow = false;\n\n @Input()\n hidden: boolean = false;\n\n @Output()\n postFilesStarted = new EventEmitter<FilePostingStarted>();\n\n @Output()\n onFilesUploaded = new EventEmitter<BaseApiResponseWithFilesIds>();\n\n handleFileInput(files: FileList) {\n this.postFilesStarted.emit({\n filesCount:files.length,\n createLocalCopiesNow: this.createLocalCopiesNow\n });\n\n this._fileUploadService.postFiles(files, this.createLocalCopiesNow).subscribe(data => {\n this.onFilesUploaded.emit(data);\n })\n }\n\n clickFileInput(){\n this.fileInput.nativeElement.click();\n }\n\n ngOnInit() {\n }\n}\n","<button [hidden]=\"hidden\" mat-raised-button color=\"primary\" (click)=\"filesInput.click()\">{{btnText}}</button>\n<input [hidden]=\"true\" [accept]=\"extAccepts\" [multiple]=\"isMultiple\" type=\"file\" #filesInput (change)=\"handleFileInput($event.target.files)\" />","import { Component, EventEmitter, OnInit, Output, ViewChild } from '@angular/core';\nimport { FileImageTagDataConsts } from '../../extensions/ImageMethods';\nimport { HtmlBodyTag } from '../../models/models';\nimport { BaseApiResponseWithFilesIds } from '../../services/file-upload.service';\nimport { FilePostingStarted, UploadFilesBtnComponent } from '../upload-files-btn/upload-files-btn.component';\n\n@Component({\n selector: 'croco-add-files-btn',\n templateUrl: './add-files-btn.component.html',\n styleUrls: ['./add-files-btn.component.css']\n})\nexport class AddFilesBtnComponent implements OnInit {\n\n @Output()\n postFilesStarted = new EventEmitter<FilePostingStarted>();\n\n @ViewChild(\"fakeBtn\")\n fakeBtn!: UploadFilesBtnComponent;\n\n fileIds:number[] = [];\n\n constructor() { }\n\n @Output()\n filesTagsReady = new EventEmitter<HtmlBodyTag[]>();\n\n postFilesStartedEventHandler(data: FilePostingStarted){\n this.postFilesStarted.emit(data);\n }\n\n filesUploadedHandler(data: BaseApiResponseWithFilesIds){\n this.fileIds = data.responseObject;\n\n let fileTags:HtmlBodyTag[] = [];\n\n for(let i=0; i < this.fileIds.length; i++){\n let fileTag: HtmlBodyTag = {\n presentOrEdit: true,\n tagDescription: {\n tag: FileImageTagDataConsts.TagName,\n displayValue: \"Изображение\"\n },\n attributes: {\n [FileImageTagDataConsts.FileIdAttrName]: this.fileIds[i]\n },\n innerHtml: \"\"\n };\n\n fileTags.push(fileTag);\n }\n\n this.filesTagsReady.emit(fileTags);\n }\n\n handleClick(){\n this.fakeBtn.clickFileInput();\n }\n\n ngOnInit(): void {\n }\n}\n","<div [hidden]=\"true\">\n <app-upload-files-btn #fakeBtn \n (onFilesUploaded)=\"filesUploadedHandler($event)\" \n [btnText]=\"'Добавить изображения'\"\n [createLocalCopiesNow]=\"true\"\n (postFilesStarted)=\"postFilesStartedEventHandler($event)\" \n [extAccepts]=\"'image/*'\"></app-upload-files-btn>\n</div>\n\n<div>\n <button class=\"w-100\" \n (click)=\"handleClick()\"\n mat-stroked-button>Добавить изображения</button>\n</div>","export class ExternalVideoTagDataConsts {\n static TagName = \"external-video\";\n static VideoTypeAttrName = \"type\";\n static LinkAttrName = \"link\";\n}\n\nexport class ExternalVideoSupportedTypes{\n static Youtube = \"youtube\"\n}\n\nexport interface ExternalVideoTag{\n type: string;\n data: ExternalVideoTagData;\n}\n\nexport interface ExternalVideoTagData{\n type: string;\n link: string;\n}\n\nexport class VideoMethods {\n static ExtractExternalVideoTag(elem: HTMLElement): ExternalVideoTag{\n return {\n type: ExternalVideoTagDataConsts.TagName,\n data:{\n type: elem.getAttribute(ExternalVideoTagDataConsts.VideoTypeAttrName),\n link: elem.getAttribute(ExternalVideoTagDataConsts.LinkAttrName)\n }\n };\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { InterfaceBlock } from \"../../../extensions/InterfaceBlock\";\nimport { ExternalVideoTagData } from '../../../extensions/VideoMethods';\n\n@Component({\n selector: 'croco-html-xml-tag-external-video',\n templateUrl: './xml-tag-external-video.component.html',\n styleUrls: ['./xml-tag-external-video.component.css']\n})\nexport class XmlTagExternalVideoComponent implements OnInit {\n\n @Input()\n data: InterfaceBlock;\n\n @Input()\n tagData: ExternalVideoTagData;\n\n widgetUrl: SafeResourceUrl;\n\n getYouTubeId(youtubeLink:string){\n\n //https://www.youtube.com/watch?v=l3KfbfkxJOU\n if(youtubeLink.includes(\"watch?v=\")){\n var url = new URL(youtubeLink);\n return url.searchParams.get(\"v\");\n }\n\n //https://youtu.be/jzBneaWSswY\n let bits = youtubeLink.split('/')\n return bits[bits.length - 1];\n }\n\n getWidgetLink(youtubeLink:string){\n\n let id = this.getYouTubeId(youtubeLink);\n\n let result = `https://www.youtube.com/embed/${id}?controls=0`;\n\n this.widgetUrl = this._domSanitizer.bypassSecurityTrustResourceUrl(result);\n return result;\n }\n\n\n\n constructor(private _domSanitizer: DomSanitizer) { }\n\n ngOnInit(): void {\n if(this.data != null){\n this.tagData = this.data.data as ExternalVideoTagData;\n }\n\n let youtubeWidgetLink = this.getWidgetLink(this.tagData.link);\n this.widgetUrl = this._domSanitizer.bypassSecurityTrustResourceUrl(youtubeWidgetLink);\n }\n\n\n\n}\n","<div class=\"d-flex justify-content-center\">\n <div *ngIf=\"widgetUrl\" class=\"y-video\">\n <iframe width=\"100%\" height=\"100%\" [src]=\"widgetUrl\"\n title=\"YouTube video player\" frameborder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen></iframe>\n </div>\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { ExternalVideoTagData, ExternalVideoSupportedTypes } from '../../../extensions/VideoMethods';\nimport { HtmlBodyTag } from '../../../models/models';\n\n@Component({\n selector: 'croco-html-external-video-block',\n templateUrl: './external-video-block.component.html',\n styleUrls: ['./external-video-block.component.css']\n})\nexport class ExternalVideoBlockComponent implements OnInit {\n\n @Input()\n tag: HtmlBodyTag;\n\n @Output()\n onTagUpdated = new EventEmitter<HtmlBodyTag>();\n\n myForm = new FormGroup({\n youtubeLink: new FormControl()\n });\n\n defaultLink = \"https://youtu.be/jzBneaWSswY\";\n\n data = {\n youtubeLink: this.defaultLink\n }\n\n tagData: ExternalVideoTagData = {\n link: this.defaultLink,\n type: ExternalVideoSupportedTypes.Youtube\n };\n\n linkChanged(){\n this.tagData.link = this.data.youtubeLink;\n this.tag.attributes = this.tagData;\n }\n\n ngOnInit(): void {\n this.linkChanged();\n\n this.tagData = this.tag.attributes as ExternalVideoTagData;\n this.data.youtubeLink = this.tagData.link;\n }\n}\n","<div *ngIf=\"tag.presentOrEdit\">\n \n <div>\n Ссылка на 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=\"Ссылка на 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","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { HtmlBodyTag } from '../../../models/models';\n\n@Component({\n selector: 'croco-html-html-raw-editor',\n templateUrl: './html-raw-editor.component.html',\n styleUrls: ['./html-raw-editor.component.css']\n})\nexport class HtmlRawEditorComponent implements OnInit {\n\n @Input()\n tag: HtmlBodyTag;\n\n @Output()\n onTagUpdated = new EventEmitter<HtmlBodyTag>();\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<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=\"Внутренняя разметка тега\"\n [(ngModel)]=\"tag.innerHtml\"></textarea>\n </mat-form-field>\n </div>\n</div>\n\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\nexport interface GetListResult<T>{\n\n /*\n Сколько всего записей\n */\n totalCount:number;\n\n /*\n Текущий список\n */\n list:Array<T>;\n}\n\nexport interface DbFileNoDataWithRelations {\n id: number;\n fileName: string;\n relations: Array<FileRelationModel>;\n}\n\nexport interface FileRelationModel {\n entityTypeFullName: string;\n entityKey: string;\n relationName: string;\n relationValue: string;\n relationCustomData: string;\n}\n\nexport interface SearchFiles {\n fileName: string;\n q: string;\n count: number | null;\n offSet: number;\n}\n\nexport interface GetListSearchModel {\n count: number | null;\n offSet: number;\n}\n\nexport interface FileNameAndIdModel {\n fileId: number;\n fileName: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FilesQueryService{\n\n _baseControllerUrl: string;\n\n constructor(private _httpClient: HttpClient,\n @Inject('BASE_URL') baseUrl: string) {\n this._baseControllerUrl = baseUrl + 'Api/Files/';\n }\n\n public getFilesWithRelations(model: SearchFiles):Observable<GetListResult<DbFileNoDataWithRelations>>{\n return this._httpClient.post<GetListResult<DbFileNoDataWithRelations>>(\n this._baseControllerUrl + `GetFiles/WithRelations`, model\n );\n }\n\n public getFiles(model: SearchFiles):Observable<GetListResult<FileNameAndIdModel>>{\n return this._httpClient.post<GetListResult<FileNameAndIdModel>>(\n this._baseControllerUrl + `GetFiles`, model\n );\n }\n}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { ImageMethods } from '../../extensions/ImageMethods';\nimport { FileNameAndIdModel, FilesQueryService } from '../../services/files-query.service';\n\nexport interface SearchQuestionsFormData{\n q: string;\n}\n\n@Component({\n selector: 'croco-html-file-id-select',\n templateUrl: './file-id-select.component.html',\n styleUrls: ['./file-id-select.component.css']\n})\nexport class FileIdSelectComponent implements OnInit, OnChanges {\n\n q: string;\n\n @Input()\n labelText = \"Поиск файлов\"\n\n @Input()\n @Output()\n fileId: number;\n\n loading = false;\n\n form: FormGroup;\n files: FileNameAndIdModel[] = [];\n\n @Output()\n onFileIdChanged = new EventEmitter<number>();\n\n constructor(\n private fb: FormBuilder,\n private _fileService: FilesQueryService) {\n this.form = this.fb.group({\n fileName: '',\n });\n }\n\n onModelChanged(fileId: number){\n this.onFileIdChanged.emit(fileId);\n }\n\n getSrc(fileId: number){\n return ImageMethods.buildSmallUrl(fileId);\n }\n\n ngOnInit(): void {\n this.loadFiles();\n }\n\n public loadFiles() {\n this.loading = true;\n this._fileService.getFiles({\n count: 10,\n offSet: 0,\n fileName: null,\n q: this.q\n }).subscribe(data => {\n this.files = [...data.list];\n this.loading = false;\n });\n }\n\n onSearchChanged(q: {term: string, items:object[]}){\n this.q = q.term;\n this.loadFiles();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.loadFiles();\n }\n}\n","<form [formGroup]=\"form\">\n <div class=\"form-group\">\n <label for=\"fileName\">{{labelText}}</label>\n <ng-select [(ngModel)]=\"fileId\" (ngModelChange)=\"onModelChanged($event)\"\n [items]=\"files\"\n #select\n bindLabel=\"fileName\"\n (search)=\"onSearchChanged($event)\"\n [loading]=\"loading\"\n [loadingText]=\"'Загружаю файлы'\"\n dropdownPosition=\"auto\"\n bindValue=\"fileId\"\n labelForId=\"fileName\"\n placeholder=\"Выбрать файл\"\n [virtualScroll]=\"true\"\n formControlName=\"fileName\">\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\n <div>\n <img class=\"mx-auto d-block img-fluid\" [src]=\"getSrc(item.fileId)\"/>\n </div>\n <div>\n <span class=\"h5\">Файл: </span>\n <span class=\"h5\" [ngOptionHighlight]=\"search\"><b>{{item.fileName}}</b></span>\n </div>\n <div>\n <small>\n <span>\n Идентификатор файла: <b>{{item.fileId}}</b>\n </span>\n </small>\n </div>\n </ng-template>\n </ng-select>\n </div>\n</form>\n\n<div>\n Идентификатор файла: {{fileId}}\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { ImageMethods, FileImageTagDataConsts } from '../../../extensions/ImageMethods';\nimport { HtmlBodyTag } from '../../../models/models';\n\n@Component({\n selector: 'croco-html-image-editor',\n templateUrl: './image-editor.component.html',\n styleUrls: ['./image-editor.component.css']\n})\nexport class ImageEditorComponent implements OnInit {\n\n hasImageError = false;\n searchOrEdit = \"search\";\n\n @Input()\n tag: HtmlBodyTag;\n\n myForm = new FormGroup({\n fileId:new FormControl()\n });\n\n onErrorHandler(){\n this.hasImageError = true;\n }\n\n @Output()\n onTagUpdated = new EventEmitter<HtmlBodyTag>();\n\n constructor() { }\n\n getSrc(){\n return ImageMethods.buildUrl(this.tag.attributes[FileImageTagDataConsts.FileIdAttrName]);\n }\n\n hasFileId(){\n return this.tag.attributes.hasOwnProperty(FileImageTagDataConsts.FileIdAttrName) && !isNaN(this.tag.attributes[FileImageTagDataConsts.FileIdAttrName]);\n }\n\n onFileIdChanged(fileId:number){\n this.tag.attributes[FileImageTagDataConsts.FileIdAttrName] = fileId;\n this.removeImageError();\n }\n\n removeImageError(){\n this.hasImageError = false;\n }\n\n ngOnInit(): void {\n }\n\n}\n","<div>\n <div style=\"height: 10px;\">\n </div>\n \n <div *ngIf=\"hasImageError\" class=\"error-block\">\n Изображение не найдено по указанному идентификатору, возможно файл не существует или отсутствует на сервере.\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>[Изображение не выбрано]</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 Искать файл <mat-icon>search</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"edit\">\n Указать по идентификатору <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]=\"'Выбрать файл'\"\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=\"Идентификатор файла\" 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>","import { BaseApiResponse, TableData, TableRowData } from './TableMethods';\nexport interface AngularMaterialTableData {\n displayedColumns: string[];\n data: object[];\n}\n\nexport class AngularMaterialTableMethods {\n static getAngularMaterialTableData(columns: string[], rows: TableRowData[]): AngularMaterialTableData {\n\n let data: object[] = [];\n\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n const row = rows[rowIndex];\n\n var elem = {};\n\n for (let columnIndex = 0; columnIndex < columns.length; columnIndex++) {\n const column = columns[columnIndex];\n\n elem[column] = row.columns[columnIndex].data.text;\n }\n\n data.push(elem);\n }\n\n return {\n displayedColumns: columns,\n data: data,\n };\n }\n\n static checkHeaders(tableData: TableData): BaseApiResponse {\n if(tableData.header === null){\n return {\n isSucceeded: false,\n message: \"Необходимо указать заголовок таблицы\"\n };\n }\n\n let columns: string[] = tableData.header.columns;\n\n var uniqueDislayedColumns = columns.filter((v, i, a) => a.indexOf(v) === i);\n\n if (uniqueDislayedColumns.length !== columns.length) {\n return {\n isSucceeded: false,\n message: \"Ошибка при обработке разметки таблицы. Обнаружены дубликаты заголовков.\"\n };\n }\n\n return {\n isSucceeded: true,\n message: \"Ok\"\n };\n }\n static checkAngularMaterialTableData(tableData: TableData, checkHeaders: boolean = true): BaseApiResponse {\n\n if(checkHeaders){\n var checkHeadersResult = this.checkHeaders(tableData);\n\n if(!checkHeadersResult.isSucceeded){\n return checkHeadersResult;\n }\n }\n\n let rows: TableRowData[] = tableData.rows;\n let columns: string[] = tableData.header.columns;\n\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n\n if (row.columns.length !== columns.length) {\n return {\n isSucceeded: false,\n message: `Ошибка при обработке разметки таблицы. `\n + `Количество колонок в каждой строке таблицы должно соотвествовать количеству колонок указанных в заголовке. `\n + `В строке таблицы №${i + 1} количество колонок = ${row.columns.length}, а должно быть ${columns.length}.`\n };\n }\n }\n\n return {\n isSucceeded: true,\n message: \"Ok\"\n };\n }\n}\n","import { BaseApiResponse } from \"./TableMethods\";\n\nexport const TextTag = \"text\";\n\nexport interface SimpleTextTag {\n type: \"text\",\n data: SimpleTextTagData\n}\n\nexport interface GenericTextTag {\n type: string,\n data: SimpleTextTagData\n}\n\nexport interface SimpleTextTagData {\n textTagName: string;\n text: string,\n html: string,\n horizontalAlignment: \"left\" | \"right\" | \"center\",\n validationResult: BaseApiResponse\n}\n\nexport class TextSimpleMethods {\n\n static supportedTags = [\"sup\", \"sub\", \"strong\", \"b\", \"i\"];\n\n static ExtractTextTag(elem: HTMLElement): SimpleTextTag {\n var hAlignValue = elem.getAttribute(\"h-align\") ?? \"left\" as any;\n\n var data: SimpleTextTagData = {\n textTagName: elem.tagName.toLowerCase(),\n text: elem.innerText.trim().replace('\\n\\t', ''),\n html: elem.innerHTML.trim().replace('\\n\\t', ''),\n horizontalAlignment: hAlignValue,\n validationResult: {\n isSucceeded: true,\n message: \"Ok\"\n }\n };\n\n let result: SimpleTextTag = {\n type: TextTag,\n data: data\n };\n\n if(result.data.text === '\\n'){\n result.data.text = '';\n }\n if(result.data.html === '\\n'){\n result.data.html = '';\n }\n\n var alignmentVals = [\"left\", \"right\", \"center\"];\n\n if (alignmentVals.indexOf(hAlignValue) < 0) {\n\n result.data.validationResult = {\n isSucceeded: false,\n message: `Недопустимое значение атрибута h-align. Допустимые значения: ${alignmentVals.join(', ')}. `\n + 'Данный тег можно не указывать, по-умолчанию будет применено выравнивание слева.'\n };\n }\n\n var html = result.data.html;\n var htmlValidation = this.ValidateTextHtml(html);\n\n if(!htmlValidation.isSucceeded){\n result.data.validationResult = htmlValidation;\n }\n\n return result;\n }\n\n static ValidateTextHtml(html: string) : BaseApiResponse{\n\n var p = document.createElement(\"p\");\n p.innerHTML = html;\n\n for (let i = 0; i < p.children.length; i++) {\n const element = p.children.item(i);\n\n var validationResult = this.ValidateTag(element);\n\n if(!validationResult.isSucceeded){\n return validationResult;\n }\n }\n\n return {\n isSucceeded:true,\n message: `Ok`\n }\n }\n\n static ValidateTag(element : Element): BaseApiResponse{\n let lowerTag = element.tagName.toLowerCase();\n\n if(!this.supportedTags.includes(lowerTag)){\n return {\n isSucceeded: false,\n message: `Тег <${lowerTag}> не поддерживается внутри тега <text>`\n }\n }\n\n for (let i = 0; i < element.children.length; i++) {\n const nElement = element.children.item(i);\n\n var innerValidationResult = this.ValidateTag(nElement);\n\n if(!innerValidationResult.isSucceeded){\n return innerValidationResult;\n }\n }\n\n return {\n isSucceeded: true,\n message: \"Ok\"\n };\n }\n}\n","import { InterfaceBlock } from \"./InterfaceBlock\";\nimport { FileImageTag, FileImageTagDataConsts } from './ImageMethods';\nimport { TableData, TableHeaderData, TableRowData } from './TableMethods';\nimport { SimpleTextTag, TextTag } from './TextSimpleMethods';\n\nexport class BootstrapTableMethods {\n\n static BuildTable(data: TableData): string {\n let result = `<table class=\"table table-bordered\">`;\n result += this.BuildHeader(data.header);\n result += this.BuildBody(data.rows);\n result += \"</table>\";\n\n return result;\n }\n\n static BuildHeader(data: TableHeaderData) {\n if (data === null) {\n return \"\";\n }\n\n let result = \"<thead>\";\n result += \"<tr>\";\n for (let index = 0; index < data.columns.length; index++) {\n result += `<th>${data.columns[index]}</th>`;\n }\n result += \"</tr>\";\n\n result += \"</thead>\";\n\n return result;\n }\n\n static BuildBody(rows: TableRowData[]) {\n let result = \"<tbody>\";\n\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n\n result += \"<tr>\";\n for (let j = 0; j < row.columns.length; j++) {\n const col = row.columns[j];\n\n result += `<td class=\"align-middle\">${this.BuildInnerTags(col.data.children)}</td>`;\n }\n result += \"</tr>\";\n }\n\n result += \"</tbody>\";\n return result;\n }\n\n static BuildInnerTags(tags: InterfaceBlock[]) {\n let result = \"\";\n for (let i = 0; i < tags.length; i++) {\n result += this.BuildInnerTag(tags[i]);\n }\n\n return result;\n }\n\n static BuildInnerTag(data: InterfaceBlock): string {\n if (data.type === FileImageTagDataConsts.TagName) {\n let fileImageTag = data as FileImageTag;\n return `<img src=${fileImageTag.data.src} class=\"mx-auto d-block img-fluid\" />`;\n }\n else if(data.type === TextTag){\n\n let simpleTextTag = data as SimpleTextTag;\n\n var map = {\n [\"left\"]: \"text-start\",\n [\"center\"]: \"text-center\",\n [\"right\"]: \"text-end\"\n };\n\n if(!simpleTextTag.data.validationResult.isSucceeded){\n return `<span>Ошибка в тексте ${simpleTextTag.data.validationResult.message}</span>`;\n }\n\n return `<div class=\"${map[simpleTextTag.data.horizontalAlignment]}\"><span>${simpleTextTag.data.html}</span></div>`;\n }\n else {\n return `<p>Тег ${data.type} не поддерживается</p>`;\n }\n }\n}\n","import { AngularMaterialTableMethods } from './AngularMaterialTableMethods';\nimport { BootstrapTableMethods } from './BootstrapTableMethods';\nimport { HtmlExtractionMethods } from './HtmlExtractionMethods';\nimport { InterfaceBlock } from \"./InterfaceBlock\";\nimport { TextSimpleMethods } from './TextSimpleMethods';\n\nexport interface BaseApiResponse {\n isSucceeded: boolean;\n message: string;\n}\n\nexport interface TableHeaderData{\n type: \"table-header\";\n columns: string[];\n}\n\nexport interface TableRowColumnData {\n type: \"table-row-column-data\";\n data: {\n text: string;\n children: InterfaceBlock[];\n }\n}\n\nexport interface TableRowData {\n type: \"table-row-column\";\n columns: TableRowColumnData[];\n}\n\nexport interface TableData{\n header: TableHeaderData,\n rows: TableRowData[]\n}\n\nexport interface TableTagData{\n type: \"table\";\n data: TableData;\n}\n\nexport class TableTypes{\n static readonly TableRowColumnData = \"table-row-column-data\";\n static readonly Table = \"table\";\n static readonly TableRowColumn = \"table-row-column\";\n}\n\nexport class TableMethods {\n\n static getTableFromHtmlTag(tableTag: HTMLTableElement) {\n let tableData : TableData = {\n header: TableMethods.getHeader(tableTag),\n rows: TableMethods.getTableRows(tableTag)\n };\n\n var result = {\n type: TableTypes.Table,\n data: tableData,\n validationResult: this.checkTable(tableData),\n bootstrapHtml: \"\"\n }\n\n if(!result.validationResult){\n return result;\n }\n result.bootstrapHtml = BootstrapTableMethods.BuildTable(result.data);\n\n var angularMaterialTableDataCheck = AngularMaterialTableMethods.checkAngularMaterialTableData(tableData);\n\n if (!angularMaterialTableDataCheck.isSucceeded) {\n return {\n ...result,\n angularMaterialTableDataCheck\n };\n }\n\n return {\n ...result,\n angularMaterialTableDataCheck,\n html: tableTag.outerHTML,\n angularMaterialTableData: AngularMaterialTableMethods.getAngularMaterialTableData(tableData.header.columns, tableData.rows),\n };\n }\n\n static checkTable(tableData: TableData) : BaseApiResponse{\n\n let rows = tableData.rows;\n\n let prevRowCount = -1;\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n\n if (row.columns.length !== prevRowCount && prevRowCount != -1) {\n return {\n isSucceeded: false,\n message: `Ошибка при обработке разметки таблицы. `\n + `Количество колонок в каждой строке таблицы должно соотвествовать друг другу. `\n + `В строке таблицы №${i + 1} количество колонок = ${row.columns.length}, а в строке выше ${prevRowCount}.`\n };\n }\n prevRowCount = row.columns.length;\n }\n\n return {\n isSucceeded: true,\n message: \"Ok\"\n }\n }\n\n\n static getHeader(tableTag: HTMLTableElement) : TableHeaderData {\n let header = tableTag.tHead;\n\n if(header === null){\n return null;\n }\n\n let tr = header.children.item(0);\n\n let headerColumns: string[] = [];\n\n for (let j = 0; j < tr.children.length; j++) {\n const jElement = tr.children.item(j) as HTMLElement;\n\n headerColumns.push(jElement.innerHTML);\n }\n\n return {\n type: \"table-header\",\n columns: headerColumns\n };\n }\n\n static getTableRows(tableTag: HTMLTableElement): Array<TableRowData> {\n let tBody = tableTag.tBodies.item(0);\n\n let rows: TableRowData[] = [];\n\n for (let i = 0; i < tBody.children.length; i++) {\n const iElement = tBody.children.item(i);\n\n let rowColumns: TableRowColumnData[] = [];\n\n for (let j = 0; j < iElement.children.length; j++) {\n const jElement = iElement.children.item(j) as HTMLElement;\n\n let children = HtmlExtractionMethods.transformHtmlElementToBlocks(jElement);\n\n if(children.length === 0){\n var textTag = document.createElement(\"p\");\n textTag.innerHTML = jElement.innerHTML;\n\n var textElem = TextSimpleMethods.ExtractTextTag(textTag);\n\n children.push(textElem);\n }\n\n var result:TableRowColumnData = {\n type: TableTypes.TableRowColumnData,\n data: {\n text: jElement.innerHTML,\n children\n }\n };\n\n rowColumns.push(result);\n }\n\n rows.push({\n type: TableTypes.TableRowColumn,\n columns: rowColumns\n });\n }\n\n return rows;\n }\n}\n","export interface TextBlock{\n type: \"text-block\" | \"text-sup-block\" | \"text-sub-block\";\n data: {\n text: string;\n }\n }\n \n export interface LineBreakBlock {\n type: \"line-break\";\n }\n \n export interface RichTextData{\n type: \"rich-text\"\n data: {\n children: Array<TextBlock | LineBreakBlock>;\n }\n }\n\nexport class TextMethods {\n\n static textTags = [\"text\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"];\n\n static ExtractRichTextData(elem: HTMLElement): RichTextData {\n\n let children: Array<TextBlock | LineBreakBlock> = [];\n for (let i = 0; i < elem.children.length; i++) {\n const child = elem.children.item(i);\n\n if (child.tagName === \"text-block\".toUpperCase()) {\n children.push({\n type: \"text-block\",\n data: {\n text: child.innerHTML\n }\n });\n }\n else if (child.tagName === \"line-break\".toUpperCase()) {\n children.push({\n type: \"line-break\"\n });\n }\n }\n\n return {\n type: \"rich-text\",\n data: {\n children\n }\n };\n }\n}\n","import { ImageMethods } from \"./ImageMethods\";\nimport { InterfaceBlock } from \"./InterfaceBlock\";\nimport { TableMethods } from \"./TableMethods\";\nimport { TextMethods } from \"./TextMethods\";\nimport { GenericTextTag, TextSimpleMethods } from \"./TextSimpleMethods\";\nimport { ExternalVideoTagDataConsts, VideoMethods } from \"./VideoMethods\";\n\nexport class HtmlExtractionMethods {\n\n\n static ExtractHeaderTag(elem: HTMLElement, tagName: string): GenericTextTag {\n\n var data: GenericTextTag = TextSimpleMethods.ExtractTextTag(elem);\n data.type = tagName;\n\n return data;\n }\n\n static Extractors = {\n [\"TEXT\"]: (elem: HTMLElement) => TextSimpleMethods.ExtractTextTag(elem),\n [\"FILE-IMAGE\"]: (elem: HTMLElement) => ImageMethods.ExtractImage(elem),\n [\"TABLE\"]: (elem: HTMLElement) => TableMethods.getTableFromHtmlTag(elem as HTMLTableElement),\n [\"RICH-TEXT\"]: (elem: HTMLElement) => TextMethods.ExtractRichTextData(elem),\n [\"HTML-RAW\"]: (elem: HTMLElement) => ({\n type: \"html-raw\",\n data: {\n innerHTML: elem.innerHTML\n }\n }),\n [\"H1\"]: (elem: HTMLElement) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h1\"),\n [\"H2\"]: (elem: HTMLElement) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h2\"),\n [\"H3\"]: (elem: HTMLElement) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h3\"),\n [\"H4\"]: (elem: HTMLElement) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h4\"),\n [\"H5\"]: (elem: HTMLElement) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h5\"),\n [\"H6\"]: (elem: HTMLElement) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h6\"),\n [ExternalVideoTagDataConsts.TagName.toUpperCase()]: (elem: HTMLElement) => VideoMethods.ExtractExternalVideoTag(elem)\n };\n\n static transformHtmlElementToBlocks(element: HTMLElement): InterfaceBlock[] {\n var data: InterfaceBlock[] = [];\n\n for (let i = 0; i < element.children.length; i++) {\n var elem = element.children.item(i) as HTMLElement;\n\n if (!HtmlExtractionMethods.Extractors.hasOwnProperty(elem.tagName)) {\n data.push({\n type: \"unsupported-tag\",\n data: {\n tagString: elem.outerHTML\n }\n });\n }\n else {\n var extractor = HtmlExtractionMethods.Extractors[elem.tagName];\n var result = extractor(elem);\n data.push(result);\n }\n }\n\n return data;\n }\n\n static transformHtmlStringToBlocks(value: string): InterfaceBlock[] {\n\n if (value === undefined) {\n return [];\n }\n\n value = value\n .replace('\\n', '')\n .replace('\\t', '');\n\n var div = document.createElement(\"div\");\n div.innerHTML = value;\n\n return this.transformHtmlElementToBlocks(div);\n }\n}\n","export class HtmlRawTagDataConsts {\n static TagName = \"html-raw\";\n}\n","import { HtmlBodyTag } from \"../models/models\";\nimport { HtmlExtractionMethods } from \"./HtmlExtractionMethods\";\nimport { InterfaceBlock } from \"./InterfaceBlock\";\nimport { HtmlRawTagDataConsts } from \"./HtmlRawTagDataConsts\";\nimport { FileImageTagData, FileImageTagDataConsts } from \"./ImageMethods\";\nimport { TextMethods } from \"./TextMethods\";\nimport { SimpleTextTagData } from \"./TextSimpleMethods\";\nimport { ExternalVideoTagDataConsts } from \"./VideoMethods\";\n\nexport class BodyTagsExtensions {\n\n static getDescription(tagName: string){\n var descriptions = {\n \"text\": \"Текст\",\n \"h1\": \"Заголовок 1 уровня\",\n \"h2\": \"Заголовок 2 уровня\",\n \"h3\": \"Заголовок 3 уровня\",\n \"h4\": \"Заголовок 4 уровня\",\n \"h5\": \"Заголовок 5 уровня\",\n \"h6\": \"Заголовок 6 уровня\",\n [FileImageTagDataConsts.TagName]: \"Изображение\",\n [ExternalVideoTagDataConsts.TagName]: \"Внешнее видео YouTube\",\n [HtmlRawTagDataConsts.TagName]: \"Html разметка\"\n };\n\n return descriptions[tagName];\n }\n\n static toHtml(bodyTags: HtmlBodyTag[]): string{\n let htmls = bodyTags.map(x => {\n if(TextMethods.textTags.includes(x.tagDescription.tag)){\n return `<${x.tagDescription.tag} h-align=\"${x.attributes['h-align']}\">${x.innerHtml}</${x.tagDescription.tag}>`;\n }\n\n if(x.tagDescription.tag === ExternalVideoTagDataConsts.TagName){\n return `<${x.tagDescription.tag} type=\"${x.attributes['type']}\" link=\"${x.attributes['link']}\">${x.innerHtml}</${x.tagDescription.tag}>`\n }\n\n if(x.tagDescription.tag === \"html-raw\"){\n return `<${x.tagDescription.tag}>${x.innerHtml}</${x.tagDescription.tag}>`\n }\n\n return BodyTagsExtensions.imageTagToHtml(x);\n });\n\n let result = \"\";\n\n for (let index = 0; index < htmls.length; index++) {\n const element = htmls[index];\n\n result += element;\n }\n\n return result;\n }\n\n static imageTagToHtml(imageTag: HtmlBodyTag){\n\n var attrStr = \"\";\n\n var attrValue = imageTag.attributes[FileImageTagDataConsts.FileIdAttrName];\n if(imageTag.attributes.hasOwnProperty(FileImageTagDataConsts.FileIdAttrName) && attrValue){\n attrStr = `${FileImageTagDataConsts.FileIdAttrName}=\"${attrValue}\"`;\n }\n\n return `<${FileImageTagDataConsts.TagName} ${attrStr}></${FileImageTagDataConsts.TagName}>`;\n }\n\n static getBodyTags(html:string){\n let result = HtmlExtractionMethods.transformHtmlStringToBlocks(html);\n return result.map(x => BodyTagsExtensions.toBodyTag(x));\n }\n\n static sanitizeInnerHtml(html:string):string{\n return html.trim().replace('\\n\\t', '');\n }\n\n static toBodyTag(data: InterfaceBlock): HtmlBodyTag {\n if (TextMethods.textTags.includes(data.type)) {\n let textTagData = data.data as SimpleTextTagData;\n\n return {\n presentOrEdit: true,\n tagDescription: {\n tag: textTagData.textTagName,\n displayValue: BodyTagsExtensions.getDescription(data.type)\n },\n attributes: { \"h-align\": textTagData.horizontalAlignment },\n innerHtml: BodyTagsExtensions.sanitizeInnerHtml(textTagData.html)\n };\n }\n\n if(data.type === FileImageTagDataConsts.TagName){\n\n let fileData = data.data as FileImageTagData;\n\n let atts = {};\n\n if(fileData.fileId){\n atts[FileImageTagDataConsts.FileIdAttrName] = fileData.fileId;\n }\n\n return {\n presentOrEdit: true,\n tagDescription: {\n tag: FileImageTagDataConsts.TagName,\n displayValue: BodyTagsExtensions.getDescription(data.type)\n },\n attributes: atts,\n innerHtml: \"\"\n };\n }\n\n if(data.type === ExternalVideoTagDataConsts.TagName){\n let fileData = data.data as ExternalVideoTagDataConsts;\n\n return {\n presentOrEdit: true,\n tagDescription: {\n tag: ExternalVideoTagDataConsts.TagName,\n displayValue: BodyTagsExtensions.getDescription(data.type)\n },\n attributes: fileData,\n innerHtml: \"\"\n };\n }\n\n if(data.type === HtmlRawTagDataConsts.TagName){\n\n return {\n presentOrEdit: true,\n tagDescription: {\n tag: HtmlRawTagDataConsts.TagName,\n displayValue: BodyTagsExtensions.getDescription(data.type)\n },\n attributes: {},\n innerHtml: BodyTagsExtensions.sanitizeInnerHtml(data.data[\"innerHTML\"])\n };\n }\n\n return {\n presentOrEdit: true,\n tagDescription: {\n tag: \"unsupported-tag\",\n displayValue: \"Неподдерживаемый тег\"\n },\n attributes: { },\n innerHtml: JSON.stringify(data)\n };\n }\n}\n","export class XmlExtensions{\n public static formatXml(xml:string, tab:string = '\\t'):string { // tab = optional indent value, default is tab (\\t)\n var formatted = '', indent= '';\n tab = tab || '\\t';\n xml.split(/>\\s*</).forEach(function(node) {\n if (node.match( /^\\/\\w/ )) indent = indent.substring(tab.length); // decrease indent by one 'tab'\n formatted += indent + '<' + node + '>\\r\\n';\n if (node.match( /^<?\\w[^>]*[^\\/]$/ )) indent += tab; // increase indent\n });\n return formatted.substring(1, formatted.length-3);\n }\n\n public static tagsToLower(xml: string): string{\n xml = this.replaceTagToLower(xml, \"Body\");\n xml = this.replaceTagToLower(xml, \"Image\");\n xml = this.replaceTagToLower(xml, \"Text\");\n\n return xml;\n }\n\n static replaceTagToLower(xml: string, tag: string) : string{\n return xml\n .replace(new RegExp(`<${tag}`, 'g'), `<${tag.toLowerCase()}`)\n .replace(new RegExp(`</${tag}>`, 'g'), `</${tag.toLowerCase()}>`);\n }\n}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { HtmlBodyTag } from '../../../models/models';\n\n@Component({\n selector: 'croco-html-text-editor',\n templateUrl: './text-editor.component.html',\n styleUrls: ['./text-editor.component.css']\n})\nexport class TextEditorComponent implements OnInit {\n\n myForm = new FormGroup({\n \"innerHtml\": new FormControl()\n });\n\n @Input()\n tag: HtmlBodyTag;\n\n @Output()\n onTagUpdated = new EventEmitter<HtmlBodyTag>();\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n getInnerHtml(){\n return `<${this.tag.tagDescription.tag}>${this.tag.innerHtml}<${this.tag.tagDescription.tag}/>`;\n }\n}\n","<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 По центру <mat-icon>format_align_center</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"left\">\n Слева <mat-icon>format_align_left</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"right\">\n Справа <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=\"Внутренняя разметка текстового тега\"\n formControlName=\"innerHtml\"\n [(ngModel)]=\"tag.innerHtml\"></textarea>\n </mat-form-field>\n </form>\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TextMethods } from '../../../extensions/TextMethods';\nimport { HtmlBodyTag } from '../../../models/models';\n\n@Component({\n selector: 'croco-html-main-editor-block',\n templateUrl: './main-editor-block.component.html',\n styleUrls: ['./main-editor-block.component.css']\n})\nexport class MainEditorBlockComponent implements OnInit {\n\n textTags = TextMethods.textTags;\n\n @Input()\n tag:HtmlBodyTag;\n\n @Output()\n onTagSaved = new EventEmitter<HtmlBodyTag>();\n\n @Output()\n onTagRemoved = new EventEmitter<HtmlBodyTag>();\n\n constructor() { }\n\n tagUpdatedHandler(tag:HtmlBodyTag):void{\n }\n\n save(){\n this.tag.presentOrEdit = true;\n this.onTagSaved.emit(this.tag);\n }\n\n deleteItem(){\n this.onTagRemoved.emit(this.tag);\n }\n\n ngOnInit(): void {\n }\n}\n","<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>","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { BodyTagsExtensions } from '../../../extensions/BodyTagsExtensions';\nimport { HtmlRawTagDataConsts } from '../../../extensions/HtmlRawTagDataConsts';\nimport { FileImageTagDataConsts } from '../../../extensions/ImageMethods';\nimport { TextMethods } from '../../../extensions/TextMethods';\nimport { ExternalVideoTagDataConsts, ExternalVideoSupportedTypes } from '../../../extensions/VideoMethods';\nimport { XmlExtensions } from '../../../extensions/XmlExtensions';\nimport { TagItem, HtmlBodyTag } from '../../../models/models';\nimport { FilePostingStarted } from '../../upload-files-btn/upload-files-btn.component';\n\nexport class DefaultTags{\n static tags:TagItem[] = [\n { tag: FileImageTagDataConsts.TagName, displayValue: 'Изображение' },\n { tag: ExternalVideoTagDataConsts.TagName, displayValue: 'Внешнее видео Youtube' },\n { tag: 'text', displayValue: 'Текст' },\n { tag: 'h1', displayValue: 'Заголовок 1 уровня' },\n { tag: 'h2', displayValue: 'Заголовок 2 уровня' },\n { tag: 'h3', displayValue: 'Заголовок 3 уровня' },\n { tag: 'h4', displayValue: 'Заголовок 4 уровня' },\n { tag: 'h5', displayValue: 'Заголовок 5 уровня' },\n { tag: 'h6', displayValue: 'Заголовок 6 уровня' },\n ];\n\n static htmlRawTag:TagItem = {\n tag: HtmlRawTagDataConsts.TagName, displayValue: 'Html разметка'\n }\n\n static getTags(useHtmlRaw:boolean):TagItem[]{\n var result = [...DefaultTags.tags];\n\n if(useHtmlRaw){\n result.push(DefaultTags.htmlRawTag);\n }\n\n return result;\n }\n}\n\n@Component({\n selector: 'croco-visual-editor',\n templateUrl: './visual-editor.component.html',\n styleUrls: ['./visual-editor.component.css']\n})\nexport class VisualEditorComponent implements OnInit, AfterViewInit {\n\n isLoading = false;\n loadingText = \"Идёт загрузка\";\n\n @Input()\n showMarkUp = true;\n\n myForm = new FormGroup({\n \"html\": new FormControl(),\n });\n\n tags: TagItem[] = [];\n\n selectedValue: string;\n\n @Input()\n useHtmlRaw = false;\n\n @Input()\n @Output()\n html: string = \"\";\n\n isHtmlSet(){\n return this.html.startsWith(\"<body>\");\n }\n\n clearHtml(){\n this.html = \"\";\n this.recalculateBodyTags();\n }\n\n getHtml(){\n this.recalculateHtml();\n return this.html;\n }\n\n @Output()\n onHtmlChanged = new EventEmitter<string>();\n\n @Output()\n rendered = new EventEmitter<boolean>();\n\n bodyTags: HtmlBodyTag[] = [];\n\n constructor(\n private _cdref: ChangeDetectorRef) { }\n\n ngAfterViewInit(): void {\n this.rendered.emit(true);\n }\n\n ngAfterContentChecked(): void {\n this._cdref.detectChanges();\n }\n\n addTag(): void {\n let tagDescription = this.tags\n .find(x => x.tag === this.selectedValue);\n\n let attrs = {};\n let innerHtml = \"\";\n\n if(TextMethods.textTags.includes(tagDescription.tag)){\n attrs[\"h-align\"] = \"left\";\n innerHtml = \"Введите ваш текст\";\n }\n else if(tagDescription.tag == ExternalVideoTagDataConsts.TagName){\n attrs[ExternalVideoTagDataConsts.VideoTypeAttrName] = ExternalVideoSupportedTypes.Youtube;\n attrs[ExternalVideoTagDataConsts.LinkAttrName] = null;\n }\n else{\n attrs[FileImageTagDataConsts.FileIdAttrName] = null;\n }\n\n this.bodyTags.push({\n tagDescription,\n innerHtml,\n attributes: attrs,\n presentOrEdit: true\n });\n\n this.recalculateHtml();\n }\n\n postFilesStartedEventHandler(model:FilePostingStarted){\n this.loadingText = \"Файлы загружаются на сервер\";\n this.isLoading = true;\n }\n\n addTagCustom(tag: HtmlBodyTag){\n this.bodyTags.push(tag);\n this.recalculateHtml();\n }\n\n filesTagsReadyHandler(tags: HtmlBodyTag[]){\n for(let i = 0; i < tags.length; i++){\n this.bodyTags.push(tags[i]);\n }\n this.recalculateHtml();\n\n this.isLoading = false;\n }\n\n drop(event: CdkDragDrop<object[]>) {\n moveItemInArray(this.bodyTags, event.previousIndex, event.currentIndex);\n this.recalculateHtml();\n }\n\n onTagSavedHandler(tag: HtmlBodyTag){\n this.recalculateHtml();\n }\n\n onTagRemovedHandler(index: number){\n this.bodyTags.splice(index, 1);\n this.recalculateHtml();\n }\n\n recalculateHtml(){\n let result = BodyTagsExtensions.toHtml(this.bodyTags);\n this.html = XmlExtensions.formatXml(\"<body>\" + result + \"</body>\");\n this.onHtmlChanged.emit(this.html);\n }\n\n recalculateBodyTags(){\n this.bodyTags = BodyTagsExtensions.getBodyTags(this.html);\n }\n\n ngOnInit(): void {\n this.recalculateBodyTags();\n\n this.tags = DefaultTags.getTags(this.useHtmlRaw);\n this.selectedValue = this.tags[0].tag;\n }\n}\n","<div *ngIf=\"isLoading\">\n <div>\n <mat-spinner style=\"margin:0 auto;\"></mat-spinner>\n <div style=\"text-align: center;\">{{loadingText}}</div>\n </div>\n <div style=\"height: 10px;\"></div>\n</div>\n\n<div [hidden]=\"isLoading\">\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <div *ngFor=\"let tag of bodyTags; let i = index\" cdkDrag>\n <mat-card>\n <div class=\"d-flex justify-content-between\">\n <div class=\"example-handle\" cdkDragHandle>\n <svg width=\"24px\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n d=\"M10 9h4V6h3l-5-5-5 5h3v3zm-1 1H6V7l-5 5 5 5v-3h3v-4zm14 2l-5-5v3h-3v4h3v3l5-5zm-9 3h-4v3H7l5 5 5-5h-3v-3z\">\n </path>\n <path d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n </svg>\n </div>\n <div>\n <mat-chip-list aria-label=\"Tag display value\">\n <mat-chip color=\"primary\" selected>{{tag.tagDescription.displayValue}}</mat-chip>\n </mat-chip-list>\n </div>\n </div>\n \n <div style=\"height: 15px;\"></div>\n \n <croco-html-main-editor-block [tag]=\"tag\" \n (onTagSaved)=\"onTagSavedHandler($event)\"\n (onTagRemoved)=\"onTagRemovedHandler(i)\">\n </croco-html-main-editor-block>\n </mat-card>\n \n <div style=\"height: 10px;\">\n </div>\n </div>\n </div>\n</div>\n\n\n<div [hidden]=\"isLoading\">\n <mat-card>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\" appearance=\"fill\">\n <mat-label>Выберите тег</mat-label>\n <mat-select [(ngModel)]=\"selectedValue\">\n <mat-option *ngFor=\"let tag of tags\" [value]=\"tag.tag\">\n {{tag.displayValue}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"col-12\">\n <button (click)=\"addTag()\" class=\"w-100\" mat-stroked-button>\n Добавить тег\n </button>\n </div>\n </div>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n\n<div [hidden]=\"isLoading\">\n <mat-card>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <croco-add-files-btn \n (filesTagsReady)=\"filesTagsReadyHandler($event)\"\n (postFilesStarted)=\"postFilesStartedEventHandler($event)\"\n class=\"w-100\">\n </croco-add-files-btn>\n </div>\n </div>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { SimpleTextTag } from '../../../extensions/TextSimpleMethods';\n\n@Component({\n selector: 'croco-html-xml-tag-text-view',\n templateUrl: './xml-tag-text-view.component.html',\n styleUrls: ['./xml-tag-text-view.component.css']\n})\nexport class XmlTagTextViewComponent implements OnInit {\n\n @Input()\n item: SimpleTextTag;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n}","<div *ngIf=\"item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'left'\" style=\"text-align: left;\">\n <span *ngIf=\"item.data.html.length === 0 || !item.data.html\"> </span>\n <span *ngIf=\"item.data.html.length > 0\" [innerHtml]=\"item.data.html\"></span>\n</div>\n\n<div *ngIf=\"item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'right'\" style=\"text-align: right;\">\n <span *ngIf=\"item.data.html.length === 0 || !item.data.html\"> </span>\n <span *ngIf=\"item.data.html.length > 0\" [innerHtml]=\"item.data.html\"></span>\n</div>\n\n<div *ngIf=\"item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'center'\" style=\"text-align: center;\">\n <span *ngIf=\"item.data.html.length === 0 || !item.data.html\"> </span>\n <span *ngIf=\"item.data.html.length > 0\" [innerHtml]=\"item.data.html\"></span>\n</div>\n\n<div *ngIf=\"!item.data.validationResult.isSucceeded\" class=\"red\" style=\"margin-top: 10px;\" >\n <h4>Допущена ошибка в теге <text></h4>\n <span>\n {{item.data.validationResult.message}}\n </span>\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { GenericTextTag } from '../../../extensions/TextSimpleMethods';\n\n@Component({\n selector: 'croco-html-xml-tag-header-inner-text-view',\n templateUrl: './xml-tag-header-inner-text-view.component.html',\n styleUrls: ['./xml-tag-header-inner-text-view.component.css']\n})\nexport class XmlTagHeaderInnerTextViewComponent implements OnInit {\n\n @Input()\n item: GenericTextTag;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<h1 *ngIf=\"item.type === 'h1'\" \n [innerHtml]=\"item.data.html\">\n</h1>\n<h2 *ngIf=\"item.type === 'h2'\" \n [innerHtml]=\"item.data.html\">\n</h2>\n<h3 *ngIf=\"item.type === 'h3'\" \n [innerHtml]=\"item.data.html\">\n</h3>\n<h4 *ngIf=\"item.type === 'h4'\" \n [innerHtml]=\"item.data.html\">\n</h4>\n<h5 *ngIf=\"item.type === 'h5'\" \n [innerHtml]=\"item.data.html\">\n</h5>\n<h6 *ngIf=\"item.type === 'h6'\" \n [innerHtml]=\"item.data.html\">\n</h6>","import { Component, Input, OnInit } from '@angular/core';\nimport { GenericTextTag } from '../../../extensions/TextSimpleMethods';\n\n@Component({\n selector: 'croco-html-xml-tag-header-text-view',\n templateUrl: './xml-tag-header-text-view.component.html',\n styleUrls: ['./xml-tag-header-text-view.component.css']\n})\nexport class XmlTagHeaderTextViewComponent implements OnInit {\n\n @Input()\n item: GenericTextTag;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<div *ngIf=\"item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'left'\" style=\"text-align: left;\">\n <span *ngIf=\"item.data.html.length === 0 || !item.data.html\"> </span>\n <croco-html-xml-tag-header-inner-text-view *ngIf=\"item.data.html.length > 0\" [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n</div>\n\n<div *ngIf=\"item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'right'\" style=\"text-align: right;\">\n <span *ngIf=\"item.data.html.length === 0 || !item.data.html\"> </span>\n <croco-html-xml-tag-header-inner-text-view *ngIf=\"item.data.html.length > 0\" [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n</div>\n\n<div *ngIf=\"item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'center'\" style=\"text-align: center;\">\n <span *ngIf=\"item.data.html.length === 0 || !item.data.html\"> </span>\n\n <croco-html-xml-tag-header-inner-text-view *ngIf=\"item.data.html.length > 0\" [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n</div>\n\n<div *ngIf=\"!item.data.validationResult.isSucceeded\" class=\"red\" style=\"margin-top: 10px;\" >\n <h4>Допущена ошибка в теге <text></h4>\n <span>\n {{item.data.validationResult.message}}\n </span>\n</div>","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'croco-html-xml-tag-html-view',\n templateUrl: './xml-tag-html-view.component.html',\n styleUrls: ['./xml-tag-html-view.component.css']\n})\nexport class XmlTagHtmlViewComponent {\n\n constructor() { }\n\n @Input()\n html: string = \"\";\n}\n","<div class=\"col\" [innerHTML]=\"html\">\n \n</div>","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { InterfaceBlock } from \"../../../extensions/InterfaceBlock\";\n\n@Component({\n selector: 'croco-html-xml-tag-view',\n templateUrl: './xml-tag-view.component.html',\n styleUrls: ['./xml-tag-view.component.css'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class XmlTagViewComponent {\n\n @Input()\n data:InterfaceBlock[] = [];\n\n constructor() { }\n\n}\n","<div class=\"\">\n <div class=\"row\" *ngFor=\"let item of data\">\n <div *ngIf=\"item.type === 'text'\">\n <croco-html-xml-tag-text-view [item]=\"item\"></croco-html-xml-tag-text-view>\n </div>\n <div *ngIf=\"item.type === 'image'\" class=\"red\" style=\"margin-top: 10px;\" >\n <h4>Данный тег больше больше не поддерживается</h4>\n <span>\n Вмето этого переименуйте тег image на file-image\n </span>\n </div>\n <div *ngIf=\"item.type === 'html-raw'\" [innerHTML]=\"item.data.innerHTML\">\n </div>\n <div *ngIf=\"item.type === 'h1' || item.type === 'h2' || item.type === 'h3' || item.type === 'h4' || item.type === 'h5' || item.type === 'h6'\">\n <croco-html-xml-tag-header-text-view [item]=\"item\"></croco-html-xml-tag-header-text-view>\n </div>\n <div *ngIf=\"item.type === 'file-image'\">\n <img class=\"mx-auto d-block img-fluid\" [src]=\"item.data.src\"/>\n </div>\n <div *ngIf=\"item.type === 'table'\">\n \n <croco-html-xml-tag-html-view *ngIf=\"item.validationResult.isSucceeded\" [html]=\"item.bootstrapHtml\">\n </croco-html-xml-tag-html-view>\n \n <app-tutor-baseapiresponse-banner \n *ngIf=\"item.validationResult && !item.validationResult.isSucceeded\" \n [message]=\"item.validationResult.message\">\n </app-tutor-baseapiresponse-banner>\n </div>\n \n <div *ngIf=\"item.type === 'rich-text'\">\n <croco-html-xml-tag-text-view [richTextData]=\"item\"></croco-html-xml-tag-text-view>\n </div>\n <div *ngIf=\"item.type === 'external-video'\">\n <croco-html-xml-tag-external-video [data]=\"item\"></croco-html-xml-tag-external-video>\n </div>\n <div *ngIf=\"item.type === 'unsupported-tag'\" class=\"red\" style=\"margin-top: 10px;\" >\n <h4>Данный тег не поддерживается</h4>\n <span>\n {{item.data.tagString}}\n </span>\n </div>\n </div>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { HtmlExtractionMethods } from '../extensions/HtmlExtractionMethods';\nimport { InterfaceBlock } from \"../extensions/InterfaceBlock\";\n\n@Pipe({\n name: 'topreview'\n})\nexport class ToPreviewPipe implements PipeTransform {\n transform(value: string): InterfaceBlock[] {\n return HtmlExtractionMethods.transformHtmlStringToBlocks(value);\n }\n}\n","import { AfterContentChecked, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ClipboardService } from 'ngx-clipboard';\nimport { VisualEditorComponent } from '../visual-editor/visual-editor.component';\n\n@Component({\n selector: 'croco-html-main-editor',\n templateUrl: './main-editor.component.html',\n styleUrls: ['./main-editor.component.css']\n})\nexport class MainEditorComponent implements OnInit, AfterContentChecked {\n\n visualEditorRendered = false;\n @ViewChild(\"visualEditor\")\n visualEditor!: VisualEditorComponent;\n\n @Input()\n showMarkUp = true;\n\n @Input()\n useHtmlRaw = false;\n\n myForm = new FormGroup({\n \"html\": new FormControl(),\n });\n\n @Input()\n @Output()\n html: string = \"\";\n\n @Output()\n onHtmlChanged = new EventEmitter<string>();\n\n constructor(private _clipboardService: ClipboardService,\n private _snackBar: MatSnackBar,\n private _cdref: ChangeDetectorRef) { }\n\n ngAfterContentChecked(): void {\n this._cdref.detectChanges();\n }\n\n visualEditorRenderedHandler(){\n this.visualEditorRendered = true;\n this.recalculateBodyTags();\n }\n\n onHtmlChangedHandler(html: string) {\n this.html = html;\n this.onHtmlChanged.emit(html);\n }\n\n textAreaModelChangedHandler(){\n this.recalculateBodyTags();\n this.onHtmlChangedHandler(this.html);\n }\n\n recalculateBodyTags() {\n this.visualEditor.html = this.html;\n this.visualEditor.recalculateBodyTags();\n }\n\n copyMarkUp() {\n this._snackBar.open(\"Разметка таблицы скопирована в буфер обмена\", \"Закрыть\", { duration: 1500 });\n this._clipboardService.copy(this.html);\n }\n\n ngOnInit(): void {\n }\n\n}\n","<mat-tab-group>\n <mat-tab label=\"Визуальный редактор\">\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=\"Разметка\">\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=\"Исходный код\" 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 Копировать разметку\n </button>\n </mat-tab>\n <mat-tab label=\"Результат\">\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>","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { RichTextData } from \"../extensions/TextMethods\";\n\n@Pipe({\n name: 'richTextToHtml'\n})\nexport class RichTextToHtmlPipe implements PipeTransform {\n\n transform(value: RichTextData): string {\n let result = \"\";\n\n for (let i = 0; i < value.data.children.length; i++) {\n const child = value.data.children[i];\n\n if (child.type === \"text-block\") {\n result += `<span>${child.data.text}</span>`;\n }\n else if (child.type === \"line-break\") {\n result += \"</br>\";\n }\n }\n\n return result;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { RichTextData } from '../../../extensions/TextMethods';\n\n@Component({\n selector: 'croco-html-xml-tag-rich-text-view',\n templateUrl: './xml-tag-rich-text-view.component.html',\n styleUrls: ['./xml-tag-rich-text-view.component.css']\n})\nexport class XmlTagRichTextViewComponent implements OnInit {\n\n @Input()\n richTextData: RichTextData = null;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n \n}\n","<div *ngIf=\"richTextData\" [innerHtml]=\"richTextData | richTextToHtml\">\n</div>","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'croco-html-xml-tag-table-view',\n templateUrl: './xml-tag-table-view.component.html',\n styleUrls: ['./xml-tag-table-view.component.css']\n})\nexport class XmlTagTableViewComponent {\n\n @Input()\n displayedColumns: string[] = [];\n\n @Input()\n data: object;\n}\n","<table mat-table [dataSource]=\"data\" class=\"mat-elevation-z8 w-100 example-container\">\n <ng-container [matColumnDef]=\"column\" *ngFor=\"let column of displayedColumns\">\n <th mat-header-cell *matHeaderCellDef> {{column}} </th>\n <td mat-cell *matCellDef=\"let element\"> {{element[column]}} </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n</table>","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'tagToSpan'\n})\nexport class TagToSpanPipe implements PipeTransform {\n transform(value: string[]): string {\n return value.map(x => (`<b>${x}</b>`)).join(' | ')\n }\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { BodyTagsExtensions } from '../extensions/BodyTagsExtensions';\nimport { HtmlBodyTag } from '../models/models';\n\n@Pipe({\n name: 'tohtmlbodytags'\n})\nexport class ToHtmlBodyTagsPipe implements PipeTransform {\n \n transform(value: string): HtmlBodyTag[] {\n return BodyTagsExtensions.getBodyTags(value);\n }\n \n}\n","import { XmlExtensions } from './XmlExtensions';\n\nexport class TableBuilder {\n static getTableMarkUp(rows: number, cols: number, generateHeaders: boolean): string {\n rows = +rows;\n cols = +cols;\n\n let result = \"<table>\";\n \n if(generateHeaders){\n result += TableBuilder.getTableHeaderMarkUp(cols);\n }\n \n result += TableBuilder.getTableBodyMarkUp(cols, rows);\n result += \"</table>\";\n\n return XmlExtensions.formatXml(result);\n }\n\n static getTableHeaderMarkUp(cols: number): string {\n\n let result = \"<thead><tr>\";\n\n for (let i = 0; i < cols; i++) {\n result += `<th>Колонка #${i + 1}</th>`;\n }\n\n result += \"</tr></thead>\";\n\n return result;\n }\n\n static getTableBodyMarkUp(cols: number, rows: number): string {\n\n let result = \"<tbody>\";\n\n for (let row = 0; row < rows; row++) {\n result += \"<tr>\";\n for (let i = 0; i < cols; i++) {\n\n result += `<td>Ряд№${row + 1} Колонка #${i + 1}</td>`;\n }\n result += \"</tr>\";\n }\n\n result += \"</tbody>\";\n\n return result;\n }\n}\n","import { ImageEditorComponent } from \"./components/editor/image-editor/image-editor.component\";\nimport { MainEditorBlockComponent } from \"./components/editor/main-editor-block/main-editor-block.component\";\nimport { MainEditorComponent } from \"./components/editor/main-editor/main-editor.component\";\nimport { TextEditorComponent } from \"./components/editor/text-editor/text-editor.component\";\nimport { FileIdSelectComponent } from \"./components/file-id-select/file-id-select.component\";\nimport { XmlTagHeaderInnerTextViewComponent } from \"./components/xml-tags/xml-tag-header-inner-text-view/xml-tag-header-inner-text-view.component\";\nimport { XmlTagHeaderTextViewComponent } from \"./components/xml-tags/xml-tag-header-text-view/xml-tag-header-text-view.component\";\nimport { XmlTagHtmlViewComponent } from \"./components/xml-tags/xml-tag-html-view/xml-tag-html-view.component\";\nimport { XmlTagRichTextViewComponent } from \"./components/xml-tags/xml-tag-rich-text-view/xml-tag-rich-text-view.component\";\nimport { XmlTagTableViewComponent } from \"./components/xml-tags/xml-tag-table-view/xml-tag-table-view.component\";\nimport { XmlTagTextViewComponent } from \"./components/xml-tags/xml-tag-text-view/xml-tag-text-view.component\";\nimport { XmlTagViewComponent } from \"./components/xml-tags/xml-tag-view/xml-tag-view.component\";\nimport { VisualEditorComponent } from './components/editor/visual-editor/visual-editor.component';\nimport { AddFilesBtnComponent } from './components/add-files-btn/add-files-btn.component';\nimport { ExternalVideoBlockComponent } from \"./components/editor/external-video-block/external-video-block.component\";\nimport { XmlTagExternalVideoComponent } from \"./components/xml-tags/xml-tag-external-video/xml-tag-external-video.component\";\nimport { HtmlRawEditorComponent } from \"./components/editor/html-raw-editor/html-raw-editor.component\";\n\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport {MatButtonToggleModule} from '@angular/material/button-toggle';\nimport { RichTextToHtmlPipe, TagToSpanPipe, ToHtmlBodyTagsPipe, ToPreviewPipe } from \"./pipes\";\nimport { UploadFilesBtnComponent } from \"./components\";\n\n\nexport const EditorComponents = [\n MainEditorComponent,\n FileIdSelectComponent,\n TextEditorComponent,\n ExternalVideoBlockComponent,\n ImageEditorComponent,\n MainEditorBlockComponent,\n VisualEditorComponent,\n AddFilesBtnComponent,\n HtmlRawEditorComponent,\n];\n\nexport const XmlComponents = [\n XmlTagTableViewComponent,\n XmlTagViewComponent,\n XmlTagRichTextViewComponent,\n XmlTagHtmlViewComponent,\n XmlTagTextViewComponent,\n XmlTagHeaderTextViewComponent,\n XmlTagHeaderInnerTextViewComponent,\n XmlTagExternalVideoComponent\n];\n\nexport const CrocoPipes = [\n RichTextToHtmlPipe,\n TagToSpanPipe,\n ToPreviewPipe,\n ToHtmlBodyTagsPipe,\n]\n\nexport const CrocoHtmlDeclarations = [\n UploadFilesBtnComponent,\n ...XmlComponents,\n ...EditorComponents,\n ...CrocoPipes\n]\n\nexport const MaterialModules = [\n MatBadgeModule,\n MatTableModule,\n MatExpansionModule,\n MatFormFieldModule,\n MatSnackBarModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatTabsModule,\n MatMenuModule,\n MatCardModule,\n MatSelectModule,\n MatTooltipModule,\n MatCheckboxModule,\n MatChipsModule,\n MatListModule,\n MatButtonModule,\n MatInputModule,\n MatDialogModule,\n MatPaginatorModule,\n MatDatepickerModule,\n MatGridListModule,\n MatSlideToggleModule,\n MatTreeModule,\n MatNativeDateModule,\n MatAutocompleteModule,\n MatSidenavModule,\n MatIconModule,\n DragDropModule,\n MatButtonToggleModule\n];\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { NgSelectModule } from \"@ng-select/ng-select\";\nimport { CrocoHtmlDeclarations, MaterialModules } from \".\";\n\n@NgModule({\n declarations: [\n ...CrocoHtmlDeclarations\n ],\n exports: [\n ...CrocoHtmlDeclarations,\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgSelectModule,\n ...MaterialModules\n ]\n})\nexport class CrocoHtmlModule { }\n","/*\n * Public API Surface of croco-html\n */\n\nexport * from './lib/components';\nexport * from './lib/pipes';\nexport * from './lib/extensions';\nexport * from './lib/croco-html.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i0","Injectable","Inject","EventEmitter","i1.FileUploadService","i2","Component","ViewChild","Input","Output","i1.UploadFilesBtnComponent","i1","FormGroup","FormControl","i1.XmlTagExternalVideoComponent","i3","i4","i5","i2.FilesQueryService","i3.FileIdSelectComponent","i6","i7","i1.TextEditorComponent","i2.ImageEditorComponent","i3.ExternalVideoBlockComponent","i4.HtmlRawEditorComponent","moveItemInArray","i4.MainEditorBlockComponent","i8","i9.AddFilesBtnComponent","i10","i11","i12","i1.XmlTagHeaderInnerTextViewComponent","i1.XmlTagTextViewComponent","i2.XmlTagHeaderTextViewComponent","i3.XmlTagHtmlViewComponent","i4.XmlTagExternalVideoComponent","ViewEncapsulation","Pipe","i4.VisualEditorComponent","i8.XmlTagViewComponent","i9","i13.ToPreviewPipe","i2.RichTextToHtmlPipe","MatBadgeModule","MatTableModule","MatExpansionModule","MatFormFieldModule","MatSnackBarModule","MatProgressBarModule","MatProgressSpinnerModule","MatTabsModule","MatMenuModule","MatCardModule","MatSelectModule","MatTooltipModule","MatCheckboxModule","MatChipsModule","MatListModule","MatButtonModule","MatInputModule","MatDialogModule","MatPaginatorModule","MatDatepickerModule","MatGridListModule","MatSlideToggleModule","MatTreeModule","MatNativeDateModule","MatAutocompleteModule","MatSidenavModule","MatIconModule","DragDropModule","MatButtonToggleModule","CommonModule","FormsModule","ReactiveFormsModule","NgSelectModule","i23","i24","i25","i26","i27","i28","i29","i30","i31","i32","i33","i34","i35","i36","i37","i38","i39","i40","i41","i42","i43","i44","i45","i46","i47","i48","i49","i50","i51","i2.XmlTagTableViewComponent","i3.XmlTagViewComponent","i4.XmlTagRichTextViewComponent","i5.XmlTagHtmlViewComponent","i6.XmlTagTextViewComponent","i7.XmlTagHeaderTextViewComponent","i8.XmlTagHeaderInnerTextViewComponent","i9.XmlTagExternalVideoComponent","i10.MainEditorComponent","i11.FileIdSelectComponent","i12.TextEditorComponent","i13.ExternalVideoBlockComponent","i14.ImageEditorComponent","i15.MainEditorBlockComponent","i16.VisualEditorComponent","i17.AddFilesBtnComponent","i18.HtmlRawEditorComponent","i19.RichTextToHtmlPipe","i20.TagToSpanPipe","i21.ToPreviewPipe","i22.ToHtmlBodyTagsPipe","NgModule"],"mappings":"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"}
|
package/croco-html.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvY28taHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2Nyb2NvLWh0bWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Component, EventEmitter, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { FileImageTagDataConsts } from '../../extensions/ImageMethods';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../upload-files-btn/upload-files-btn.component";
|
|
5
|
+
import * as i2 from "@angular/material/button";
|
|
6
|
+
export class AddFilesBtnComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.postFilesStarted = new EventEmitter();
|
|
9
|
+
this.fileIds = [];
|
|
10
|
+
this.filesTagsReady = new EventEmitter();
|
|
11
|
+
}
|
|
12
|
+
postFilesStartedEventHandler(data) {
|
|
13
|
+
this.postFilesStarted.emit(data);
|
|
14
|
+
}
|
|
15
|
+
filesUploadedHandler(data) {
|
|
16
|
+
this.fileIds = data.responseObject;
|
|
17
|
+
let fileTags = [];
|
|
18
|
+
for (let i = 0; i < this.fileIds.length; i++) {
|
|
19
|
+
let fileTag = {
|
|
20
|
+
presentOrEdit: true,
|
|
21
|
+
tagDescription: {
|
|
22
|
+
tag: FileImageTagDataConsts.TagName,
|
|
23
|
+
displayValue: "Изображение"
|
|
24
|
+
},
|
|
25
|
+
attributes: {
|
|
26
|
+
[FileImageTagDataConsts.FileIdAttrName]: this.fileIds[i]
|
|
27
|
+
},
|
|
28
|
+
innerHtml: ""
|
|
29
|
+
};
|
|
30
|
+
fileTags.push(fileTag);
|
|
31
|
+
}
|
|
32
|
+
this.filesTagsReady.emit(fileTags);
|
|
33
|
+
}
|
|
34
|
+
handleClick() {
|
|
35
|
+
this.fakeBtn.clickFileInput();
|
|
36
|
+
}
|
|
37
|
+
ngOnInit() {
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
AddFilesBtnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: AddFilesBtnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
41
|
+
AddFilesBtnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: AddFilesBtnComponent, selector: "croco-add-files-btn", outputs: { postFilesStarted: "postFilesStarted", filesTagsReady: "filesTagsReady" }, viewQueries: [{ propertyName: "fakeBtn", first: true, predicate: ["fakeBtn"], descendants: true }], ngImport: i0, template: "<div [hidden]=\"true\">\n <app-upload-files-btn #fakeBtn \n (onFilesUploaded)=\"filesUploadedHandler($event)\" \n [btnText]=\"'\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F'\"\n [createLocalCopiesNow]=\"true\"\n (postFilesStarted)=\"postFilesStartedEventHandler($event)\" \n [extAccepts]=\"'image/*'\"></app-upload-files-btn>\n</div>\n\n<div>\n <button class=\"w-100\" \n (click)=\"handleClick()\"\n mat-stroked-button>\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F</button>\n</div>", styles: [""], components: [{ type: i1.UploadFilesBtnComponent, selector: "app-upload-files-btn", inputs: ["extAccepts", "isMultiple", "btnText", "createLocalCopiesNow", "hidden"], outputs: ["postFilesStarted", "onFilesUploaded"] }, { type: i2.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"] }] });
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: AddFilesBtnComponent, decorators: [{
|
|
43
|
+
type: Component,
|
|
44
|
+
args: [{
|
|
45
|
+
selector: 'croco-add-files-btn',
|
|
46
|
+
templateUrl: './add-files-btn.component.html',
|
|
47
|
+
styleUrls: ['./add-files-btn.component.css']
|
|
48
|
+
}]
|
|
49
|
+
}], ctorParameters: function () { return []; }, propDecorators: { postFilesStarted: [{
|
|
50
|
+
type: Output
|
|
51
|
+
}], fakeBtn: [{
|
|
52
|
+
type: ViewChild,
|
|
53
|
+
args: ["fakeBtn"]
|
|
54
|
+
}], filesTagsReady: [{
|
|
55
|
+
type: Output
|
|
56
|
+
}] } });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZpbGVzLWJ0bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcm9jby1odG1sL3NyYy9saWIvY29tcG9uZW50cy9hZGQtZmlsZXMtYnRuL2FkZC1maWxlcy1idG4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMvYWRkLWZpbGVzLWJ0bi9hZGQtZmlsZXMtYnRuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7QUFVdkUsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQjtRQVBBLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBSzFELFlBQU8sR0FBWSxFQUFFLENBQUM7UUFLdEIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztJQUhuQyxDQUFDO0lBS2pCLDRCQUE0QixDQUFDLElBQXdCO1FBQ25ELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQWlDO1FBQ3BELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUVuQyxJQUFJLFFBQVEsR0FBaUIsRUFBRSxDQUFDO1FBRWhDLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztZQUN4QyxJQUFJLE9BQU8sR0FBZ0I7Z0JBQ3pCLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixjQUFjLEVBQUU7b0JBQ2QsR0FBRyxFQUFFLHNCQUFzQixDQUFDLE9BQU87b0JBQ25DLFlBQVksRUFBRSxhQUFhO2lCQUM1QjtnQkFDRCxVQUFVLEVBQUU7b0JBQ1YsQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztpQkFDekQ7Z0JBQ0QsU0FBUyxFQUFFLEVBQUU7YUFDZCxDQUFDO1lBRUYsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN4QjtRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsUUFBUTtJQUNSLENBQUM7O2lIQWhEVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixvUENYakMsc3FCQWFNOzJGREZPLG9CQUFvQjtrQkFMaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixXQUFXLEVBQUUsZ0NBQWdDO29CQUM3QyxTQUFTLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztpQkFDN0M7MEVBSUMsZ0JBQWdCO3NCQURmLE1BQU07Z0JBSVAsT0FBTztzQkFETixTQUFTO3VCQUFDLFNBQVM7Z0JBUXBCLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzIH0gZnJvbSAnLi4vLi4vZXh0ZW5zaW9ucy9JbWFnZU1ldGhvZHMnO1xuaW1wb3J0IHsgSHRtbEJvZHlUYWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvbW9kZWxzJztcbmltcG9ydCB7IEJhc2VBcGlSZXNwb25zZVdpdGhGaWxlc0lkcyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbGUtdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsZVBvc3RpbmdTdGFydGVkLCBVcGxvYWRGaWxlc0J0bkNvbXBvbmVudCB9IGZyb20gJy4uL3VwbG9hZC1maWxlcy1idG4vdXBsb2FkLWZpbGVzLWJ0bi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcm9jby1hZGQtZmlsZXMtYnRuJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1maWxlcy1idG4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hZGQtZmlsZXMtYnRuLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBZGRGaWxlc0J0bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQE91dHB1dCgpXG4gIHBvc3RGaWxlc1N0YXJ0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVQb3N0aW5nU3RhcnRlZD4oKTtcblxuICBAVmlld0NoaWxkKFwiZmFrZUJ0blwiKVxuICBmYWtlQnRuITogVXBsb2FkRmlsZXNCdG5Db21wb25lbnQ7XG5cbiAgZmlsZUlkczpudW1iZXJbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgQE91dHB1dCgpXG4gIGZpbGVzVGFnc1JlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjxIdG1sQm9keVRhZ1tdPigpO1xuXG4gIHBvc3RGaWxlc1N0YXJ0ZWRFdmVudEhhbmRsZXIoZGF0YTogRmlsZVBvc3RpbmdTdGFydGVkKXtcbiAgICB0aGlzLnBvc3RGaWxlc1N0YXJ0ZWQuZW1pdChkYXRhKTtcbiAgfVxuXG4gIGZpbGVzVXBsb2FkZWRIYW5kbGVyKGRhdGE6IEJhc2VBcGlSZXNwb25zZVdpdGhGaWxlc0lkcyl7XG4gICAgdGhpcy5maWxlSWRzID0gZGF0YS5yZXNwb25zZU9iamVjdDtcblxuICAgIGxldCBmaWxlVGFnczpIdG1sQm9keVRhZ1tdID0gW107XG5cbiAgICBmb3IobGV0IGk9MDsgaSA8IHRoaXMuZmlsZUlkcy5sZW5ndGg7IGkrKyl7XG4gICAgICBsZXQgZmlsZVRhZzogSHRtbEJvZHlUYWcgPSB7XG4gICAgICAgIHByZXNlbnRPckVkaXQ6IHRydWUsXG4gICAgICAgIHRhZ0Rlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgdGFnOiBGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzLlRhZ05hbWUsXG4gICAgICAgICAgZGlzcGxheVZhbHVlOiBcItCY0LfQvtCx0YDQsNC20LXQvdC40LVcIlxuICAgICAgICB9LFxuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgW0ZpbGVJbWFnZVRhZ0RhdGFDb25zdHMuRmlsZUlkQXR0ck5hbWVdOiB0aGlzLmZpbGVJZHNbaV1cbiAgICAgICAgfSxcbiAgICAgICAgaW5uZXJIdG1sOiBcIlwiXG4gICAgICB9O1xuXG4gICAgICBmaWxlVGFncy5wdXNoKGZpbGVUYWcpO1xuICAgIH1cblxuICAgIHRoaXMuZmlsZXNUYWdzUmVhZHkuZW1pdChmaWxlVGFncyk7XG4gIH1cblxuICBoYW5kbGVDbGljaygpe1xuICAgIHRoaXMuZmFrZUJ0bi5jbGlja0ZpbGVJbnB1dCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cbn1cbiIsIjxkaXYgW2hpZGRlbl09XCJ0cnVlXCI+XG4gICAgPGFwcC11cGxvYWQtZmlsZXMtYnRuICNmYWtlQnRuIFxuICAgICAgICAob25GaWxlc1VwbG9hZGVkKT1cImZpbGVzVXBsb2FkZWRIYW5kbGVyKCRldmVudClcIiBcbiAgICAgICAgW2J0blRleHRdPVwiJ9CU0L7QsdCw0LLQuNGC0Ywg0LjQt9C+0LHRgNCw0LbQtdC90LjRjydcIlxuICAgICAgICBbY3JlYXRlTG9jYWxDb3BpZXNOb3ddPVwidHJ1ZVwiXG4gICAgICAgIChwb3N0RmlsZXNTdGFydGVkKT1cInBvc3RGaWxlc1N0YXJ0ZWRFdmVudEhhbmRsZXIoJGV2ZW50KVwiIFxuICAgICAgICBbZXh0QWNjZXB0c109XCInaW1hZ2UvKidcIj48L2FwcC11cGxvYWQtZmlsZXMtYnRuPlxuPC9kaXY+XG5cbjxkaXY+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInctMTAwXCIgXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVDbGljaygpXCJcbiAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uPtCU0L7QsdCw0LLQuNGC0Ywg0LjQt9C+0LHRgNCw0LbQtdC90LjRjzwvYnV0dG9uPlxuPC9kaXY+Il19
|