croco-html 2.14.0 → 2.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/add-files-btn/add-files-btn.component.mjs +4 -3
- package/esm2022/lib/components/editor/external-video-block/external-video-block.component.mjs +7 -4
- package/esm2022/lib/components/editor/image-editor/image-editor.component.mjs +43 -8
- package/esm2022/lib/components/editor/visual-editor/visual-editor.component.mjs +4 -1
- package/esm2022/lib/croco-html.module.mjs +1 -1
- package/esm2022/lib/extensions/BodyTagsExtensions.mjs +9 -5
- package/esm2022/lib/extensions/HtmlRawTagDataConsts.mjs +4 -1
- package/esm2022/lib/extensions/ImageMethods.mjs +38 -1
- package/esm2022/lib/services/screen-width.service.mjs +24 -0
- package/fesm2022/croco-html.mjs +282 -184
- package/fesm2022/croco-html.mjs.map +1 -1
- package/lib/components/editor/image-editor/image-editor.component.d.ts +13 -3
- package/lib/extensions/HtmlRawTagDataConsts.d.ts +3 -0
- package/lib/extensions/ImageMethods.d.ts +13 -0
- package/lib/index.d.ts +7 -7
- package/lib/services/screen-width.service.d.ts +10 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"croco-html.mjs","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/AngularMaterialTableMethods.ts","../../../projects/croco-html/src/lib/components/editor/visual-editor/DefaultAligments.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/VideoMethods.ts","../../../projects/croco-html/src/lib/extensions/DownloadButtonMethods.ts","../../../projects/croco-html/src/lib/extensions/HtmlExtractionMethods.ts","../../../projects/croco-html/src/lib/extensions/HtmlRawTagDataConsts.ts","../../../projects/croco-html/src/lib/extensions/Tags.ts","../../../projects/croco-html/src/lib/extensions/BodyTagsExtensions.ts","../../../projects/croco-html/src/lib/extensions/XmlExtensions.ts","../../../projects/croco-html/src/lib/extensions/TableBuilder.ts","../../../projects/croco-html/src/lib/components/editor/external-video-block/youtube-video-player/youtube-video-player.component.ts","../../../projects/croco-html/src/lib/components/editor/external-video-block/youtube-video-player/youtube-video-player.component.html","../../../projects/croco-html/src/lib/components/editor/external-video-block/vk-video-player/vk-video-player.component.ts","../../../projects/croco-html/src/lib/components/editor/external-video-block/vk-video-player/vk-video-player.component.html","../../../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/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/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/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/services/blob-create.service.ts","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-download-file-button/xml-tag-download-file-button.component.ts","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-download-file-button/xml-tag-download-file-button.component.html","../../../projects/croco-html/src/lib/components/error-banner/error-banner.component.ts","../../../projects/croco-html/src/lib/components/error-banner/error-banner.component.html","../../../projects/croco-html/src/lib/components/xml-tags/file-image-tag-view/file-image-tag-view.component.ts","../../../projects/croco-html/src/lib/components/xml-tags/file-image-tag-view/file-image-tag-view.component.html","../../../projects/croco-html/src/lib/components/xml-tags/html-raw-view/html-raw-view.component.ts","../../../projects/croco-html/src/lib/components/xml-tags/html-raw-view/html-raw-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/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","../../../projects/croco-html/src/lib/consts/index.ts","../../../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/components/editor/visual-editor/DefaultTags.ts","../../../projects/croco-html/src/lib/components/editor/download-file-button-block/download-file-button-block.component.ts","../../../projects/croco-html/src/lib/components/editor/download-file-button-block/download-file-button-block.component.html","../../../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/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/components/html-view/html-view.component.ts","../../../projects/croco-html/src/lib/components/html-view/html-view.component.html","../../../projects/croco-html/src/lib/pipes/TagToSpanPipe.ts","../../../projects/croco-html/src/lib/pipes/ToHtmlBodyTagsPipe.ts","../../../projects/croco-html/src/lib/pipes/ToPreviewHtmlPipe.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":["import { CrocoHtmlOptions } from \"./HtmlExtractionMethods\";\n\nexport 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, sizeType: string, options: CrocoHtmlOptions): string {\n\n if (fileId === null || fileId === undefined) {\n return null;\n }\n\n return options.publicImageResizedUrlFormat\n .replace(\"{sizeType}\", sizeType)\n .replace(\"{fileId}\", fileId.toString());\n }\n\n public static buildSmallUrl(fileId: number, options: CrocoHtmlOptions): string {\n return ImageMethods.buildUrl(fileId, \"Small\", options);\n }\n\n public static buildMediumUrl(fileId: number, options: CrocoHtmlOptions): string {\n return ImageMethods.buildUrl(fileId, \"Medium\", options);\n }\n\n public static ExtractImage(elem: HTMLElement, options: CrocoHtmlOptions): FileImageTag {\n let fileId = +elem.getAttribute(FileImageTagDataConsts.FileIdAttrName);\n let src = ImageMethods.buildMediumUrl(fileId, options);\n return {\n type: FileImageTagDataConsts.TagName,\n data: {\n src,\n fileId: fileId,\n }\n };\n }\n}\n","import { HttpClient, HttpEvent } 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\nexport interface UploadFileWithProgressEvent {\n loading: boolean;\n response?: BaseApiResponseWithFilesIds;\n uploadingLoaded: number;\n uploadingTotal: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FileUploadService {\n constructor(\n private _httpClient: HttpClient,\n @Inject('BASE_URL') private baseUrl: string,\n ) {}\n\n public postFiles(files: FileList, createLocalCopiesNow = false): Observable<BaseApiResponseWithFilesIds> {\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 public postFilesInner(\n formData: FormData,\n createLocalCopiesNow: boolean,\n withProgress: true,\n ): Observable<HttpEvent<BaseApiResponseWithFilesIds>>;\n\n public postFilesInner(\n formData: FormData,\n createLocalCopiesNow?: boolean,\n withProgress?: false,\n ): Observable<BaseApiResponseWithFilesIds>;\n public postFilesInner(\n formData: FormData,\n createLocalCopiesNow: boolean,\n withProgress: boolean,\n ): Observable<BaseApiResponseWithFilesIds> | Observable<HttpEvent<BaseApiResponseWithFilesIds>>;\n public postFilesInner(\n formData: FormData,\n createLocalCopiesNow = false,\n withProgress = false,\n ): Observable<BaseApiResponseWithFilesIds> | Observable<HttpEvent<BaseApiResponseWithFilesIds>> {\n let endpoint = createLocalCopiesNow\n ? this.baseUrl + 'api/files/upload/now/with-handlers'\n : this.baseUrl + 'Api/Files/UploadFiles';\n\n return this._httpClient.post<BaseApiResponseWithFilesIds>(\n endpoint,\n formData,\n withProgress ? { reportProgress: true, observe: 'events' } : undefined,\n );\n }\n}\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { BaseApiResponseWithFilesIds, FileUploadService } from '../../services/file-upload.service';\nimport { MatButton } from '@angular/material/button';\n\nexport interface FilePostingStarted {\n filesCount: number;\n createLocalCopiesNow: boolean;\n}\n\n@Component({\n selector: 'croco-app-upload-files-btn',\n templateUrl: './upload-files-btn.component.html',\n styleUrls: ['./upload-files-btn.component.css'],\n standalone: true,\n imports: [MatButton]\n})\nexport class UploadFilesBtnComponent implements OnInit {\n\n @ViewChild('filesInput')\n private fileInput!: ElementRef<HTMLInputElement>;\n\n @Input()\n extAccepts: string = \"*/*\";\n\n @Input()\n isMultiple = true;\n\n @Input()\n btnText: string = \"Загрузить файлы\";\n\n @Input()\n createLocalCopiesNow = true;\n\n @Input()\n hidden = false;\n\n @Output()\n postFilesStarted = new EventEmitter<FilePostingStarted>();\n\n @Output()\n onFilesUploaded = new EventEmitter<BaseApiResponseWithFilesIds>();\n\n constructor(private _fileUploadService: FileUploadService) { }\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';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n selector: 'croco-html-add-files-btn',\n templateUrl: './add-files-btn.component.html',\n styleUrls: ['./add-files-btn.component.css'],\n standalone: true,\n imports: [UploadFilesBtnComponent, MatButton]\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 <croco-app-upload-files-btn #fakeBtn (onFilesUploaded)=\"filesUploadedHandler($event)\"\n [btnText]=\"'Добавить изображения'\" [createLocalCopiesNow]=\"true\"\n (postFilesStarted)=\"postFilesStartedEventHandler($event)\" [extAccepts]=\"'image/*'\"></croco-app-upload-files-btn>\n</div>\n\n<div>\n <button class=\"w-100\" (click)=\"handleClick()\" mat-stroked-button>Добавить изображения</button>\n</div>","import { BaseApiResponse, TableData, TableRowData } from './TableMethods';\nimport {AngularMaterialTableData} from \"../models/models\";\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","export enum EAlignments {\n Left = 'left',\n Center = 'center',\n Right = 'right',\n}\n\nexport const AlignmentsData = [\n { value: EAlignments.Left , text: 'Слева' },\n { value: EAlignments.Center, text: 'По центру' },\n { value: EAlignments.Right, text: 'Справа' },\n];\n","import { BaseApiResponse } from \"./TableMethods\";\nimport {EAlignments} from \"../components/editor/visual-editor/DefaultAligments\";\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\", \"u\"];\n\n static ExtractTextTag(elem: HTMLElement): SimpleTextTag {\n var hAlignValue = elem.getAttribute(\"h-align\") ?? EAlignments.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 = [EAlignments.Left, EAlignments.Right, EAlignments.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 { CrocoHtmlOptions, 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, options: CrocoHtmlOptions) {\n let tableData : TableData = {\n header: TableMethods.getHeader(tableTag),\n rows: TableMethods.getTableRows(tableTag, options)\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, options: CrocoHtmlOptions): 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, options);\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 TextTags {\n\n public static readonly text = \"text\";\n\n public static readonly h1 = \"h1\";\n\n public static readonly h2 = \"h2\";\n\n public static readonly h3 = \"h3\";\n\n public static readonly h4 = \"h4\";\n\n public static readonly h5 = \"h5\";\n\n public static readonly h6 = \"h6\";\n\n public static headerTextTags = [TextTags.h1, TextTags.h2, TextTags.h3, TextTags.h4, TextTags.h5, TextTags.h6];\n\n public static allTextTags = [TextTags.text, ...TextTags.headerTextTags];\n\n}\n\nexport class TextMethods {\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","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 static VkVideo = \"vk-video\"\n}\n\nexport const ExternalVideoPlayers = [\n {\n type: ExternalVideoSupportedTypes.Youtube,\n displayValue: 'Youtube',\n },\n {\n type: ExternalVideoSupportedTypes.VkVideo,\n displayValue: 'Vk Video',\n }\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","export class DownloadButtonTagDataConsts {\n static TagName = \"download-file-button\";\n static TitleAttrName = \"title\";\n static LinkAttrName = \"link\";\n}\n\nexport interface DownloadButtonTag {\n type: string;\n data: DownloadButtonTagData;\n}\n\n\nexport interface DownloadButtonTagData {\n title: string;\n link: string;\n}\n\nexport class DownloadButtonMethods {\n static ExtractDownloadButtonTag(elem: HTMLElement): DownloadButtonTag{\n return {\n type: DownloadButtonTagDataConsts.TagName,\n data:{\n title: elem.getAttribute(DownloadButtonTagDataConsts.TitleAttrName),\n link: elem.getAttribute(DownloadButtonTagDataConsts.LinkAttrName)\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 {\n ExternalVideoTagDataConsts,\n VideoMethods\n} from \"./VideoMethods\";\nimport {DownloadButtonMethods, DownloadButtonTagDataConsts} from \"./DownloadButtonMethods\";\n\nexport interface CrocoHtmlOptions {\n publicImageResizedUrlFormat: string;\n}\n\nexport class HtmlExtractionMethods {\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, options: CrocoHtmlOptions) => TextSimpleMethods.ExtractTextTag(elem),\n [\"FILE-IMAGE\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => ImageMethods.ExtractImage(elem, options),\n [\"TABLE\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => TableMethods.getTableFromHtmlTag(elem as HTMLTableElement, options),\n [\"RICH-TEXT\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => TextMethods.ExtractRichTextData(elem),\n [\"HTML-RAW\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => ({\n type: \"html-raw\",\n data: {\n innerHTML: elem.innerHTML\n }\n }),\n [\"H1\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h1\"),\n [\"H2\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h2\"),\n [\"H3\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h3\"),\n [\"H4\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h4\"),\n [\"H5\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h5\"),\n [\"H6\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h6\"),\n [ExternalVideoTagDataConsts.TagName.toUpperCase()]: (elem: HTMLElement, options: CrocoHtmlOptions) => VideoMethods.ExtractExternalVideoTag(elem),\n [DownloadButtonTagDataConsts.TagName.toUpperCase()]: (elem: HTMLElement, options: CrocoHtmlOptions) => DownloadButtonMethods.ExtractDownloadButtonTag(elem),\n };\n\n static transformHtmlElementToBlocks(element: HTMLElement, options: CrocoHtmlOptions): 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, options);\n data.push(result);\n }\n }\n\n return data;\n }\n\n static transformHtmlStringToBlocks(value: string, options: CrocoHtmlOptions): InterfaceBlock[] {\n\n if (value === undefined || value === null) {\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, options);\n }\n}\n","export class HtmlRawTagDataConsts {\n static TagName = \"html-raw\";\n}\n","import { HtmlRawTagDataConsts } from \"./HtmlRawTagDataConsts\";\nimport { FileImageTagDataConsts } from \"./ImageMethods\";\nimport { TextTags } from \"./TextMethods\";\nimport { ExternalVideoTagDataConsts } from \"./VideoMethods\";\n\nexport class Tags {\n public static readonly Text = TextTags.text;\n public static readonly H1 = TextTags.h1;\n public static readonly H2 = TextTags.h2;\n public static readonly H3 = TextTags.h3;\n public static readonly H4 = TextTags.h4;\n public static readonly H5 = TextTags.h5;\n public static readonly H6 = TextTags.h6;\n\n public static readonly HtmlRaw = HtmlRawTagDataConsts.TagName;\n public static readonly FileImage = FileImageTagDataConsts.TagName;\n public static readonly Table = 'table';\n public static readonly RichText = 'rich-text';\n public static readonly ExternalVideo = ExternalVideoTagDataConsts.TagName;\n public static readonly UnsupportedTag = 'unsupported-tag';\n}\n","import { HtmlBodyTag } from \"../models/models\";\nimport { HtmlExtractionMethods, CrocoHtmlOptions } from \"./HtmlExtractionMethods\";\nimport { InterfaceBlock } from \"./InterfaceBlock\";\nimport { HtmlRawTagDataConsts } from \"./HtmlRawTagDataConsts\";\nimport { FileImageTagData, FileImageTagDataConsts } from \"./ImageMethods\";\nimport { TextTags } from \"./TextMethods\";\nimport { SimpleTextTagData } from \"./TextSimpleMethods\";\nimport { Tags } from \"./Tags\";\nimport {ExternalVideoTagDataConsts} from \"./VideoMethods\";\nimport {DownloadButtonTagDataConsts} from \"./DownloadButtonMethods\";\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]: \"Внешнее видео\",\n [DownloadButtonTagDataConsts.TagName]: \"Кнопка для скачивания\",\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 (TextTags.allTextTags.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 if (x.tagDescription.tag === DownloadButtonTagDataConsts.TagName) {\n return `<${x.tagDescription.tag} title=\"${x.attributes['title']}\" link=\"${x.attributes['link']}\"></${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, options: CrocoHtmlOptions) {\n let result = HtmlExtractionMethods.transformHtmlStringToBlocks(html, options);\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 (TextTags.allTextTags.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 attrs = {};\n\n if (fileData.fileId) {\n attrs[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: attrs,\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: data.type,\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: Tags.UnsupportedTag,\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 { 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 {Component, Input} from '@angular/core';\nimport {DomSanitizer, SafeResourceUrl} from \"@angular/platform-browser\";\n\n@Component({\n selector: 'youtube-video-player',\n standalone: true,\n imports: [],\n templateUrl: './youtube-video-player.component.html',\n styleUrl: '../external-video-block.component.scss'\n})\nexport class YoutubeVideoPlayerComponent {\n\n @Input() set link(link: string) {\n this.safeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(link);\n }\n public safeUrl: SafeResourceUrl;\n\n constructor(private sanitizer: DomSanitizer) {}\n}\n","<div class=\"video-player\">\n <iframe\n width=\"100%\"\n height=\"100%\"\n [src]=\"safeUrl\"\n title=\"YouTube video player\"\n frameborder=\"0\"\n allow=\"accelerometer;\n autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen></iframe>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {DomSanitizer, SafeResourceUrl} from \"@angular/platform-browser\";\n\n@Component({\n selector: 'vk-video-player',\n standalone: true,\n imports: [],\n templateUrl: './vk-video-player.component.html',\n styleUrl: '../external-video-block.component.scss'\n})\nexport class VkVideoPlayerComponent{\n\n @Input() set link(link: string) {\n this.safeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(link);\n }\n public safeUrl: SafeResourceUrl;\n\n constructor(private sanitizer: DomSanitizer) {}\n}\n","<div class=\"video-player\">\n <iframe\n [src]=\"safeUrl\"\n width=\"100%\"\n height=\"100%\"\n allow=\"autoplay; encrypted-media; fullscreen; picture-in-picture;\"\n frameborder=\"0\"\n allowfullscreen></iframe>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\nimport {InterfaceBlock} from \"../../../extensions/InterfaceBlock\";\nimport {ExternalVideoSupportedTypes, ExternalVideoTagData} from '../../../extensions';\nimport { YoutubeVideoPlayerComponent } from '../../editor/external-video-block/youtube-video-player/youtube-video-player.component';\nimport { VkVideoPlayerComponent } from '../../editor/external-video-block/vk-video-player/vk-video-player.component';\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.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [VkVideoPlayerComponent, YoutubeVideoPlayerComponent],\n})\nexport class XmlTagExternalVideoComponent {\n @Input() public set data(value: InterfaceBlock) {\n this.tagData = value.data;\n };\n\n @Input() public set tagData(value: ExternalVideoTagData) {\n this._block = {\n type: value.type,\n link: value.link\n }\n };\n\n protected readonly ExternalVideoSupportedTypes = ExternalVideoSupportedTypes;\n\n public _block: ExternalVideoTagData = {\n type: '',\n link: ''\n }\n}\n","@switch (_block.type) {\n @case (ExternalVideoSupportedTypes.VkVideo) {\n <vk-video-player [link]=\"_block.link\"></vk-video-player>\n }\n @case (ExternalVideoSupportedTypes.Youtube) {\n <youtube-video-player [link]=\"_block.link\"></youtube-video-player>\n }\n}\n","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 standalone: true\n})\nexport class XmlTagHeaderInnerTextViewComponent implements OnInit {\n\n @Input()\n item: GenericTextTag;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","@if (item.type === 'h1') {\n <h1\n [innerHtml]=\"item.data.html\">\n </h1>\n}\n@if (item.type === 'h2') {\n <h2\n [innerHtml]=\"item.data.html\">\n </h2>\n}\n@if (item.type === 'h3') {\n <h3\n [innerHtml]=\"item.data.html\">\n </h3>\n}\n@if (item.type === 'h4') {\n <h4\n [innerHtml]=\"item.data.html\">\n </h4>\n}\n@if (item.type === 'h5') {\n <h5\n [innerHtml]=\"item.data.html\">\n </h5>\n}\n@if (item.type === 'h6') {\n <h6\n [innerHtml]=\"item.data.html\">\n </h6>\n}","import { Component, Input, OnInit } from '@angular/core';\nimport { GenericTextTag } from '../../../extensions/TextSimpleMethods';\nimport { XmlTagHeaderInnerTextViewComponent } from '../xml-tag-header-inner-text-view/xml-tag-header-inner-text-view.component';\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 standalone: true,\n imports: [XmlTagHeaderInnerTextViewComponent]\n})\nexport class XmlTagHeaderTextViewComponent implements OnInit {\n\n @Input()\n item: GenericTextTag;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'left') {\n<div style=\"text-align: left;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <croco-html-xml-tag-header-inner-text-view [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n }\n</div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'right') {\n<div style=\"text-align: right;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <croco-html-xml-tag-header-inner-text-view [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n }\n</div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'center') {\n<div style=\"text-align: center;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <croco-html-xml-tag-header-inner-text-view [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n }\n</div>\n}\n\n@if (!item.data.validationResult.isSucceeded) {\n<div class=\"red\" style=\"margin-top: 10px;\">\n <h4>Допущена ошибка в теге <text></h4>\n <span>\n {{item.data.validationResult.message}}\n </span>\n</div>\n}","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 standalone: true\n})\nexport class XmlTagHtmlViewComponent {\n\n constructor() { }\n\n @Input()\n html: string = \"\";\n}\n","<div class=\"col\" [innerHTML]=\"html\">\n</div>","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { RichTextData } from \"../extensions/TextMethods\";\n\n@Pipe({\n name: 'richTextToHtml',\n standalone: true\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';\nimport { RichTextToHtmlPipe } from '../../../pipes/RichTextToHtmlPipe';\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 standalone: true,\n imports: [RichTextToHtmlPipe]\n})\nexport class XmlTagRichTextViewComponent implements OnInit {\n\n @Input()\n richTextData: RichTextData = null;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n \n}\n","@if (richTextData) {\n <div [innerHtml]=\"richTextData | richTextToHtml\">\n </div>\n}","import { Component, Input } from '@angular/core';\nimport { MatTable, MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell, MatHeaderRowDef, MatHeaderRow, MatRowDef, MatRow } from '@angular/material/table';\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 standalone: true,\n imports: [MatTable, MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell, MatHeaderRowDef, MatHeaderRow, MatRowDef, MatRow]\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 @for (column of displayedColumns; track column) {\n <ng-container [matColumnDef]=\"column\">\n <th mat-header-cell *matHeaderCellDef> {{column}} </th>\n <td mat-cell *matCellDef=\"let element\"> {{element[column]}} </td>\n </ng-container>\n }\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n</table>","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 standalone: true\n})\nexport class XmlTagTextViewComponent implements OnInit {\n\n @Input()\n item: SimpleTextTag;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n}","@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'left') {\n <div style=\"text-align: left;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <span [innerHtml]=\"item.data.html\"></span>\n }\n </div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'right') {\n <div style=\"text-align: right;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <span [innerHtml]=\"item.data.html\"></span>\n }\n </div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'center') {\n <div style=\"text-align: center;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <span [innerHtml]=\"item.data.html\"></span>\n }\n </div>\n}\n\n@if (!item.data.validationResult.isSucceeded) {\n <div class=\"red\" style=\"margin-top: 10px;\" >\n <h4>Допущена ошибка в теге <text></h4>\n <span>\n {{item.data.validationResult.message}}\n </span>\n </div>\n}","import { Injectable } from '@angular/core';\nimport {HttpClient} from \"@angular/common/http\";\nimport {Observable} from \"rxjs\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BlobCreateService {\n\n constructor(private readonly _http: HttpClient) {}\n\n getBlob(link: string): Observable<Blob> {\n return this._http.get(link, { responseType: 'blob' })\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {InterfaceBlock} from \"../../../extensions/InterfaceBlock\";\nimport {\n YoutubeVideoPlayerComponent\n} from \"../../editor/external-video-block/youtube-video-player/youtube-video-player.component\";\nimport {MatButton} from \"@angular/material/button\";\nimport {BlobCreateService} from \"../../../services/blob-create.service\";\nimport {DownloadButtonTagData} from \"../../../extensions/DownloadButtonMethods\";\nimport {MatIcon} from \"@angular/material/icon\";\n\n@Component({\n selector: 'croco-html-xml-tag-download-file-button',\n standalone: true,\n imports: [\n YoutubeVideoPlayerComponent,\n MatButton,\n MatIcon\n ],\n templateUrl: './xml-tag-download-file-button.component.html',\n styleUrl: './xml-tag-download-file-button.component.scss'\n})\nexport class XmlTagDownloadFileButtonComponent {\n @Input() public set data(value: InterfaceBlock) {\n this.tagData = value.data;\n };\n\n @Input() public set tagData(value: DownloadButtonTagData) {\n this._block = {\n title: value.title,\n link: value.link\n }\n };\n\n constructor(private readonly _blobCreateService: BlobCreateService) {}\n\n public _block: DownloadButtonTagData = {\n title: '',\n link: ''\n }\n\n downloadFile() {\n this._blobCreateService.getBlob(this._block.link).subscribe(\n blob=> {\n const link = document.createElement('a');\n const objectUrl = URL.createObjectURL(blob);\n link.href = objectUrl;\n\n const regex = /[^/]+$/;\n link.download = this._block.link.match(regex)[0] || 'Без названия';\n link.click();\n URL.revokeObjectURL(objectUrl);\n }\n );\n }\n}\n","<span\n class=\"download-file-button\"\n (click)=\"downloadFile()\">\n <mat-icon> save</mat-icon>\n {{this._block.title}}\n</span>\n","import { Component, Input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n selector: 'croco-html-error-banner',\n standalone: true,\n imports: [\n MatCardModule,\n MatButtonModule\n ],\n templateUrl: './error-banner.component.html',\n styleUrl: './error-banner.component.css'\n})\nexport class ErrorBannerComponent {\n @Input({ required: true }) \n message: string = \"\";\n}\n","@if (message) {\n <mat-card class=\"red\">\n <mat-card-content>\n <p>\n {{ message }}\n </p>\n </mat-card-content>\n <mat-card-actions>\n <button mat-button (click)=\"message = null\">ЗАКРЫТЬ</button>\n </mat-card-actions>\n </mat-card>\n }\n ","import { Component, Input, OnInit } from '@angular/core';\nimport { InterfaceBlock } from '../../../extensions/InterfaceBlock';\nimport { FileImageTagData } from '../../../extensions';\n\n@Component({\n selector: 'croco-html-file-image-tag-view',\n templateUrl: './file-image-tag-view.component.html',\n styleUrl: './file-image-tag-view.component.css',\n standalone: true\n})\nexport class FileImageTagViewComponent implements OnInit {\n \n @Input()\n item: InterfaceBlock;\n\n imageSrc = \"\";\n\n ngOnInit(): void {\n\n let data = this.item.data as FileImageTagData;\n\n this.imageSrc = data.src;\n }\n}\n","\n<img class=\"mx-auto d-block img-fluid\" [src]=\"imageSrc\" alt=\"Изображение не загружено\"/>","import { Component, Input, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n selector: 'croco-html-raw-view',\n templateUrl: './html-raw-view.component.html',\n styleUrls: ['./html-raw-view.component.css'],\n standalone: true\n})\nexport class HtmlRawViewComponent implements OnInit {\n \n @Input()\n rawHtml = \"\";\n\n safeHtml : SafeHtml;\n isInitialized = false; \n\n constructor(private readonly _sanitizer: DomSanitizer) {\n }\n\n ngOnInit(): void {\n this.safeHtml = this._sanitizer.bypassSecurityTrustHtml(this.rawHtml);\n }\n}\n","<div [innerHTML]=\"safeHtml\">\n</div>","import {Component, Input, ViewEncapsulation} from '@angular/core';\nimport { InterfaceBlock } from \"../../../extensions/InterfaceBlock\";\nimport { TextTags } from '../../../extensions';\nimport { XmlTagDownloadFileButtonComponent } from '../xml-tag-download-file-button/xml-tag-download-file-button.component';\nimport { XmlTagExternalVideoComponent } from '../xml-tag-external-video/xml-tag-external-video.component';\nimport { ErrorBannerComponent } from '../../error-banner/error-banner.component';\nimport { XmlTagHtmlViewComponent } from '../xml-tag-html-view/xml-tag-html-view.component';\nimport { FileImageTagViewComponent } from '../file-image-tag-view/file-image-tag-view.component';\nimport { XmlTagHeaderTextViewComponent } from '../xml-tag-header-text-view/xml-tag-header-text-view.component';\nimport { HtmlRawViewComponent } from '../html-raw-view/html-raw-view.component';\nimport { XmlTagTextViewComponent } from '../xml-tag-text-view/xml-tag-text-view.component';\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 standalone: true,\n imports: [\n XmlTagTextViewComponent,\n HtmlRawViewComponent,\n XmlTagHeaderTextViewComponent,\n FileImageTagViewComponent,\n XmlTagHtmlViewComponent,\n ErrorBannerComponent,\n XmlTagExternalVideoComponent,\n XmlTagDownloadFileButtonComponent,\n ],\n})\nexport class XmlTagViewComponent {\n\n @Input()\n data:InterfaceBlock[] = [];\n\n isHeaderTextTag(item: InterfaceBlock) {\n return TextTags.headerTextTags.includes(item.type);\n }\n}\n","<div>\n @for (item of data; track $index) {\n <div class=\"row\">\n\n @if (item.type === 'text') {\n <div>\n <croco-html-xml-tag-text-view [item]=\"item\"></croco-html-xml-tag-text-view>\n </div>\n }\n\n @if (item.type === 'html-raw') {\n <div>\n <croco-html-raw-view [rawHtml]=\"item.data.innerHTML\">\n </croco-html-raw-view>\n </div>\n }\n\n @if (isHeaderTextTag(item)) {\n <div>\n <croco-html-xml-tag-header-text-view [item]=\"item\"></croco-html-xml-tag-header-text-view>\n </div>\n }\n\n @if (item.type === 'file-image') {\n <div>\n <croco-html-file-image-tag-view [item]=\"item\"></croco-html-file-image-tag-view>\n </div>\n }\n\n @if (item.type === 'table' && item.validationResult) {\n\n @if (item.validationResult.isSucceeded){\n <croco-html-xml-tag-html-view [html]=\"item.bootstrapHtml\">\n </croco-html-xml-tag-html-view>\n }\n @else {\n <croco-html-error-banner\n [message]=\"item.validationResult.message\">\n </croco-html-error-banner>\n }\n }\n\n @if (item.type === 'rich-text') {\n <div>\n <croco-html-xml-tag-text-view></croco-html-xml-tag-text-view>\n </div>\n }\n\n @if (item.type === 'external-video') {\n <div>\n <croco-html-xml-tag-external-video [data]=\"item\"></croco-html-xml-tag-external-video>\n </div>\n }\n\n @if (item.type === 'download-file-button') {\n <div>\n <croco-html-xml-tag-download-file-button [data]=\"item\"></croco-html-xml-tag-download-file-button>\n </div>\n }\n @if (item.type === 'unsupported-tag') {\n <div class=\"red\" style=\"margin-top: 10px;\">\n <h4>Данный тег не поддерживается</h4>\n <span>\n {{item.data.tagString}}\n </span>\n </div>\n }\n </div>\n }\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n ExternalVideoTagData,\n ExternalVideoSupportedTypes,\n} from '../../../extensions';\nimport { HtmlBodyTag } from '../../../models/models';\nimport { YoutubeVideoPlayerComponent } from './youtube-video-player/youtube-video-player.component';\nimport { VkVideoPlayerComponent } from './vk-video-player/vk-video-player.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\nimport { XmlTagExternalVideoComponent } from '../../xml-tags';\n\n@Component({\n selector: 'croco-html-external-video-block',\n templateUrl: './external-video-block.component.html',\n styleUrls: ['./external-video-block.component.scss'],\n standalone: true,\n imports: [\n MatFormFieldModule,\n FormsModule,\n XmlTagExternalVideoComponent\n ]\n})\nexport class ExternalVideoBlockComponent implements OnInit {\n\n @Input()\n tag: HtmlBodyTag;\n\n @Output()\n onTagUpdated = new EventEmitter<HtmlBodyTag>();\n\n protected readonly ExternalVideoSupportedTypes = ExternalVideoSupportedTypes;\n\n tagData: ExternalVideoTagData = {\n link: '',\n type: ExternalVideoSupportedTypes.Youtube\n };\n\n linkText = '';\n\n ngOnInit(): void {\n this.tagData.link = (this.tag.attributes as ExternalVideoTagData).link;\n this.tagData.type = (this.tag.attributes as ExternalVideoTagData).type;\n\n this.linkText = this.tagData.type === ExternalVideoSupportedTypes.VkVideo ? 'Ссылка на Vk Video' : ' Ссылка на YouTube';\n }\n\n linkChanged(){\n if(this.tagData.link.includes('iframe')) {\n this.createLinkByIFrame()\n }\n this.tag.attributes = this.tagData;\n }\n\n createLinkByIFrame() {\n const parser = new DOMParser();\n const document = parser.parseFromString(this.tagData.link, \"text/html\");\n const elem = document.body.children[0];\n const src = elem.getAttribute(\"src\");\n this.tagData.link = src;\n }\n}\n","@if (tag.presentOrEdit) {\n <div>\n <div>\n @switch (tagData.type) {\n @case (ExternalVideoSupportedTypes.VkVideo) {\n {{linkText}}: {{tagData.link}}\n }\n @case (ExternalVideoSupportedTypes.Youtube) {\n {{linkText}}: {{tagData.link}}\n }\n }\n </div>\n <div style=\"height: 10px;\"></div>\n <croco-html-xml-tag-external-video [tagData]=\"tagData\"></croco-html-xml-tag-external-video>\n </div>\n}\n\n@if (!tag.presentOrEdit) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n {{linkText}}\n </mat-label>\n <input matInput placeholder=\"{{linkText}}\"\n autocomplete=\"off\"\n [(ngModel)]=\"tagData.link\"\n (ngModelChange)=\"linkChanged()\">\n </mat-form-field>\n </div>\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { HtmlBodyTag } from '../../../models/models';\nimport { FormsModule } from '@angular/forms';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\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 standalone: true,\n imports: [MatFormField, MatLabel, MatInput, CdkTextareaAutosize, FormsModule]\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","@if (tag.presentOrEdit) {\n <div>\n <div [innerHTML]=\"tag.innerHtml\"></div>\n </div>\n}\n\n@if (!tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\">\n </div>\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n Внутренняя разметка тега\n </mat-label>\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\n","export const CrocoHtmlOptionsToken = \"croco-html-options\";","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 q: string;\n fileName: string;\n applicationId: string;\n fileTypes: Array<FileType>;\n count: number | null;\n offSet: number;\n}\n\nexport enum FileType {\n Undefined = 'Undefined',\n Unknown = 'Unknown',\n Image = 'Image',\n Audio = 'Audio',\n Video = 'Video',\n Document = 'Document',\n Archive = 'Archive'\n}\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, Inject, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { ImageMethods } from '../../extensions/ImageMethods';\nimport { FileNameAndIdModel, FilesQueryService, FileType } from '../../services/files-query.service';\nimport { CrocoHtmlOptionsToken } from '../../consts';\nimport { CrocoHtmlOptions } from '../../extensions/HtmlExtractionMethods';\nimport { FormsModule } from '@angular/forms';\nimport { NgSelectModule } from '@ng-select/ng-select';\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 standalone: true,\n imports: [NgSelectModule, FormsModule]\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 files: FileNameAndIdModel[] = [];\n\n @Output()\n onFileIdChanged = new EventEmitter<number>();\n\n constructor(\n private readonly _fileService: FilesQueryService,\n @Inject(CrocoHtmlOptionsToken) private readonly _options: CrocoHtmlOptions\n ) {\n }\n\n onModelChanged(fileId: number) {\n this.onFileIdChanged.emit(fileId);\n }\n\n getSrc(fileId: number) {\n return ImageMethods.buildSmallUrl(fileId, this._options);\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 fileTypes: [FileType.Image],\n applicationId: 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","<div>\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 <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</div>\n\n<div>\n Идентификатор файла: {{fileId}}\n</div>\n","import { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { ImageMethods, FileImageTagDataConsts } from '../../../extensions/ImageMethods';\nimport { HtmlBodyTag } from '../../../models/models';\nimport { CrocoHtmlOptionsToken } from '../../../consts';\nimport { CrocoHtmlOptions } from '../../../extensions/HtmlExtractionMethods';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { FileIdSelectComponent } from '../../file-id-select/file-id-select.component';\nimport { MatIcon } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonToggleGroup, MatButtonToggle } from '@angular/material/button-toggle';\n\n@Component({\n selector: 'croco-html-image-editor',\n templateUrl: './image-editor.component.html',\n styleUrls: ['./image-editor.component.css'],\n standalone: true,\n imports: [MatButtonToggleGroup, FormsModule, MatButtonToggle, MatIcon, FileIdSelectComponent, MatFormField, MatLabel, MatInput]\n})\nexport class ImageEditorComponent implements OnInit {\n\n hasImageError = false;\n searchOrEdit = \"search\";\n\n @Input()\n tag: HtmlBodyTag;\n\n onErrorHandler(){\n this.hasImageError = true;\n }\n\n @Output()\n onTagUpdated = new EventEmitter<HtmlBodyTag>();\n\n constructor(@Inject(CrocoHtmlOptionsToken) private readonly _options: CrocoHtmlOptions) { }\n\n getSrc(){\n return ImageMethods.buildUrl(this.tag.attributes[FileImageTagDataConsts.FileIdAttrName], \"Medium\", this._options);\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 @if (hasImageError) {\n <div class=\"error-block\">\n Изображение не найдено по указанному идентификатору, возможно файл не существует или отсутствует на сервере.\n </div>\n }\n\n @if (hasFileId() && !hasImageError) {\n <div>\n <img class=\"mx-auto d-block img-fluid\" [src]=\"getSrc()\" (error)=\"onErrorHandler()\"/>\n </div>\n }\n\n @if (!hasFileId()) {\n <div>\n <h5>[Изображение не выбрано]</h5>\n </div>\n }\n</div>\n\n@if (!tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\"></div>\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 <div style=\"height: 10px;\"></div>\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 <div [hidden]=\"searchOrEdit !== 'edit'\">\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n Идентификатор файла\n </mat-label>\n <input matInput placeholder=\"Идентификатор файла\" new-autocomplete=\"off\" autocomplete=\"off\"\n type=\"number\"\n [(ngModel)]=\"tag.attributes['file-id']\"\n (ngModelChange)=\"removeImageError()\">\n </mat-form-field>\n </div>\n </div>\n </div>\n}","import { HtmlRawTagDataConsts } from '../../../extensions/HtmlRawTagDataConsts';\nimport { FileImageTagDataConsts } from '../../../extensions';\nimport { TagItem } from '../../../models/models';\nimport {ExternalVideoTagDataConsts} from \"../../../extensions\";\nimport {DownloadButtonTagDataConsts} from \"../../../extensions/DownloadButtonMethods\";\n\nexport class DefaultTags {\n\n static textTags: TagItem[] = [\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 tags: TagItem[] = [\n { tag: FileImageTagDataConsts.TagName, displayValue: 'Изображение' },\n { tag: ExternalVideoTagDataConsts.TagName, displayValue: 'Внешнее видео' },\n { tag: DownloadButtonTagDataConsts.TagName, displayValue: 'Кнопка для скачивания' },\n ...DefaultTags.textTags\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","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {MatFormField, MatFormFieldModule} from \"@angular/material/form-field\";\nimport {MatInput} from \"@angular/material/input\";\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\nimport {HtmlBodyTag} from \"../../../models/models\";\nimport {XmlTagDownloadFileButtonComponent} from \"../../xml-tags/xml-tag-download-file-button/xml-tag-download-file-button.component\";\nimport {DownloadButtonTagData} from \"../../../extensions/DownloadButtonMethods\";\n\n@Component({\n selector: 'croco-html-download-file-button-block',\n standalone: true,\n imports: [\n MatFormField,\n MatInput,\n ReactiveFormsModule,\n FormsModule,\n XmlTagDownloadFileButtonComponent,\n MatFormFieldModule\n ],\n templateUrl: './download-file-button-block.component.html',\n styleUrl: './download-file-button-block.component.css'\n})\nexport class DownloadFileButtonBlockComponent {\n\n @Input()\n tag: HtmlBodyTag;\n\n @Output()\n onTagUpdated = new EventEmitter<HtmlBodyTag>();\n\n tagData: DownloadButtonTagData = {\n link: '',\n title: ''\n };\n\n ngOnInit(): void {\n this.tagData.link = (this.tag.attributes as DownloadButtonTagData).link;\n this.tagData.title = (this.tag.attributes as DownloadButtonTagData).title;\n }\n\n linkChanged(){\n this.tag.attributes = this.tagData;\n }\n}\n","@if (tag.presentOrEdit) {\n <div>\n <div>\n Ссылка для скачивания: {{tagData.link}}\n </div>\n <div style=\"height: 10px;\"></div>\n <div>\n Текст кнопки: {{tagData.title}}\n </div>\n <div style=\"height: 20px;\"></div>\n <croco-html-xml-tag-download-file-button [tagData]=\"tagData\"></croco-html-xml-tag-download-file-button>\n </div>\n}\n\n@if (!tag.presentOrEdit) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n Ссылка на скачивание\n </mat-label>\n <input matInput placeholder=\"Ссылка на скачивание\"\n autocomplete=\"off\"\n [(ngModel)]=\"tagData.link\"\n (ngModelChange)=\"linkChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n Текст на кнопке\n </mat-label>\n <input matInput placeholder=\"Текст на кнопке\"\n autocomplete=\"off\"\n [(ngModel)]=\"tagData.title\"\n (ngModelChange)=\"linkChanged()\">\n </mat-form-field>\n </div>\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { HtmlBodyTag } from '../../../models/models';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonToggleGroup, MatButtonToggle } from '@angular/material/button-toggle';\n\n@Component({\n selector: 'croco-html-text-editor',\n templateUrl: './text-editor.component.html',\n styleUrls: ['./text-editor.component.css'],\n standalone: true,\n imports: [MatButtonToggleGroup, FormsModule, MatButtonToggle, MatIcon, MatFormField, MatLabel, MatInput, CdkTextareaAutosize]\n})\nexport class TextEditorComponent 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 getInnerHtml(){\n return `<${this.tag.tagDescription.tag}>${this.tag.innerHtml}<${this.tag.tagDescription.tag}/>`;\n }\n}\n","@if (tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\">\n </div>\n @if (tag.attributes['h-align'] === 'left') {\n <div style=\"text-align: left;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n @if (tag.attributes['h-align'] === 'right') {\n <div style=\"text-align: right;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n @if (tag.attributes['h-align'] === 'center') {\n <div style=\"text-align: center;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n </div>\n}\n\n@if (!tag.presentOrEdit) {\n <div>\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 <div style=\"height: 10px;\">\n </div>\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>Внутренняя разметка текстового тега</mat-label>\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}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TextTags } from '../../../extensions/TextMethods';\nimport { HtmlBodyTag } from '../../../models/models';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { HtmlRawEditorComponent } from '../html-raw-editor/html-raw-editor.component';\nimport { DownloadFileButtonBlockComponent } from '../download-file-button-block/download-file-button-block.component';\nimport { ImageEditorComponent } from '../image-editor/image-editor.component';\nimport { TextEditorComponent } from '../text-editor/text-editor.component';\nimport { ExternalVideoBlockComponent } from '../external-video-block/external-video-block.component';\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 standalone: true,\n imports: [\n TextEditorComponent,\n ImageEditorComponent,\n DownloadFileButtonBlockComponent,\n HtmlRawEditorComponent,\n MatIconButton,\n MatIcon,\n ExternalVideoBlockComponent\n ]\n})\nexport class MainEditorBlockComponent implements OnInit {\n\n textTags = TextTags.allTextTags;\n\n @Input()\n tag: HtmlBodyTag;\n\n @Output()\n onTagSaved = new EventEmitter<HtmlBodyTag>();\n\n @Output()\n onTagRemoved = new EventEmitter<HtmlBodyTag>();\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 @if (textTags.includes(tag.tagDescription.tag)) {\n <div>\n <croco-html-text-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-text-editor>\n </div>\n }\n\n @if (tag.tagDescription.tag === 'file-image') {\n <div>\n <croco-html-image-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-image-editor>\n </div>\n }\n\n @if (tag.tagDescription.tag === 'external-video') {\n <div>\n <croco-html-external-video-block (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-external-video-block>\n </div>\n }\n\n @if (tag.tagDescription.tag === 'download-file-button') {\n <div>\n <croco-html-download-file-button-block (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-download-file-button-block>\n </div>\n }\n\n @if (tag.tagDescription.tag === 'html-raw') {\n <div>\n <croco-html-html-raw-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-html-raw-editor>\n </div>\n }\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 @if (tag.presentOrEdit) {\n <button (click)=\"tag.presentOrEdit = false\" mat-icon-button>\n <mat-icon>edit</mat-icon>\n </button>\n }\n @if (!tag.presentOrEdit) {\n <button (click)=\"save()\" mat-icon-button>\n <mat-icon>save</mat-icon>\n </button>\n }\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>\n","import { CdkDragDrop, moveItemInArray, CdkDropList, CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component, ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport {\n BodyTagsExtensions,\n ExternalVideoSupportedTypes,\n TextTags\n} from '../../../extensions';\nimport { FileImageTagDataConsts } from '../../../extensions';\nimport {\n ExternalVideoTagDataConsts,\n ExternalVideoPlayers\n} from '../../../extensions';\nimport { XmlExtensions } from '../../../extensions';\nimport { TagItem, HtmlBodyTag } from '../../../models/models';\nimport { FilePostingStarted } from '../../upload-files-btn/upload-files-btn.component';\nimport { DefaultTags } from './DefaultTags';\nimport { AlignmentsData, EAlignments } from \"./DefaultAligments\";\nimport { CrocoHtmlOptionsToken } from '../../../consts';\nimport { CrocoHtmlOptions } from '../../../extensions/HtmlExtractionMethods';\nimport {DownloadButtonTagDataConsts} from \"../../../extensions/DownloadButtonMethods\";\nimport { MainEditorBlockComponent } from '../main-editor-block/main-editor-block.component';\nimport { AddFilesBtnComponent } from '../../add-files-btn/add-files-btn.component';\nimport { MatOption } from '@angular/material/core';\nimport { MatSelect } from '@angular/material/select';\nimport { FormsModule } from '@angular/forms';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatButton } from '@angular/material/button';\nimport { MatCard, MatCardContent } from '@angular/material/card';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\n\nexport const defaultLinkYouTube = \"https://www.youtube.com/embed/4CtSAnJDfsI?si=scyBNJa0Hs2t5aLE\";\nexport const defaultLinkVk = \"https://vk.com/video_ext.php?oid=-22822305&id=456241864&hd=2\";\nexport const defaultLinkForDownload = \"https://storage.yandexcloud.net/mega-academy/presentation.pdf\";\n@Component({\n selector: 'croco-visual-editor',\n templateUrl: './visual-editor.component.html',\n styleUrls: ['./visual-editor.component.css'],\n standalone: true,\n imports: [MatProgressSpinner, MatCard, MatCardContent, MatButton, MatFormField, MatLabel, MatInput, CdkTextareaAutosize, FormsModule, MatSelect, MatOption, AddFilesBtnComponent, CdkDropList, CdkDrag, CdkDragHandle, MainEditorBlockComponent]\n})\nexport class VisualEditorComponent implements OnInit, AfterViewInit {\n @ViewChild('textArea') textArea: ElementRef;\n\n isLoading = false;\n loadingText = \"Идёт загрузка\";\n isActiveAddText = false;\n text = '';\n\n alignment = EAlignments.Left;\n textTag = DefaultTags.textTags[0].tag;\n textTagOptions = DefaultTags.textTags\n alignmentOptions = AlignmentsData\n\n @Input()\n showMarkUp = true;\n\n tags: TagItem[] = [];\n videoPlayers = ExternalVideoPlayers\n selectedValue: string;\n selectedVideoPlayer: string;\n protected readonly ExternalVideoTagDataConsts = ExternalVideoTagDataConsts;\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 saveBodyTags: HtmlBodyTag[] = [];\n\n constructor(\n private readonly _cdref: ChangeDetectorRef,\n @Inject(CrocoHtmlOptionsToken) private readonly _options: CrocoHtmlOptions) { }\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 (TextTags.allTextTags.includes(tagDescription.tag)) {\n attrs[\"h-align\"] = EAlignments.Left;\n innerHtml = \"Введите ваш текст\";\n }\n else if (tagDescription.tag == ExternalVideoTagDataConsts.TagName) {\n attrs[ExternalVideoTagDataConsts.VideoTypeAttrName] = this.selectedVideoPlayer;\n attrs[ExternalVideoTagDataConsts.LinkAttrName] = this.selectedVideoPlayer === ExternalVideoSupportedTypes.VkVideo ? defaultLinkVk : defaultLinkYouTube;\n\n }\n else if (tagDescription.tag == DownloadButtonTagDataConsts.TagName) {\n attrs[DownloadButtonTagDataConsts.LinkAttrName] = defaultLinkForDownload\n attrs[DownloadButtonTagDataConsts.TitleAttrName] = 'Скачать'\n }\n else {\n attrs[FileImageTagDataConsts.FileIdAttrName] = null;\n }\n this.bodyTags.push({\n tagDescription,\n innerHtml,\n attributes: attrs,\n presentOrEdit: true\n });\n\n this.recalculateHtml();\n }\n\n addText(): void {\n this.isActiveAddText = !this.isActiveAddText;\n this.saveBodyTags = JSON.parse(JSON.stringify(this.bodyTags));\n if (this.isActiveAddText) {\n setTimeout(() => {\n this.textArea.nativeElement.focus();\n })\n }\n this.resetTextStyle();\n }\n\n closeText(): void {\n this.isActiveAddText = !this.isActiveAddText;\n this.bodyTags = JSON.parse(JSON.stringify(this.saveBodyTags));\n this.resetTextStyle();\n }\n\n resetTextStyle(): void {\n this.text = '';\n this.alignment = EAlignments.Left;\n this.textTag = DefaultTags.textTags[0].tag;\n }\n\n modelChanged() {\n let lines = this.text.split('\\n');\n this.bodyTags = JSON.parse(JSON.stringify(this.saveBodyTags));\n let tagDescription = this.tags\n .find(x => x.tag === this.textTag);\n\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].length > 0) {\n this.bodyTags.push({\n tagDescription,\n innerHtml: lines[i],\n attributes: {\n \"h-align\": `${this.alignment}`\n },\n presentOrEdit: true\n });\n this.recalculateHtml();\n }\n }\n }\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, this._options);\n }\n\n ngOnInit(): void {\n this.recalculateBodyTags();\n\n this.tags = DefaultTags.getTags(this.useHtmlRaw);\n this.selectedValue = this.tags[0].tag;\n this.selectedVideoPlayer = this.videoPlayers[0].type;\n }\n}\n","@if (isLoading) {\n <div>\n <div>\n <mat-spinner style=\"margin:0 auto;\"></mat-spinner>\n <div style=\"text-align: center;\">{{loadingText}}</div>\n </div>\n <div style=\"height: 10px;\"></div>\n </div>\n}\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n @if (!isActiveAddText) {\n <button (click)=\"addText()\" class=\"w-100\" mat-stroked-button>\n Добавить текст\n </button>\n }\n @if (isActiveAddText) {\n <mat-form-field class=\"w-100\" >\n <mat-label>Текст</mat-label>\n <textarea\n #autosize=\"cdkTextareaAutosize\"\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n placeholder=\"Текст\"\n #textArea\n [(ngModel)]=\"text\"\n (ngModelChange)=\"modelChanged()\"\n ></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"outline\" class=\"w-100\">\n <mat-label>Тег для текста</mat-label>\n <mat-select [(ngModel)]=\"textTag\" (ngModelChange)=\"modelChanged()\">\n @for (option of textTagOptions; track option) {\n <mat-option value=\"{{ option.tag }}\">\n {{ option.displayValue }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\" class=\"w-100\">\n <mat-label>Горизонтальное выравнивание</mat-label>\n <mat-select [(ngModel)]=\"alignment\" (ngModelChange)=\"modelChanged()\">\n @for (option of alignmentOptions; track option) {\n <mat-option value=\"{{ option.value }}\">\n {{ option.text }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n <div class=\"d-flex flex-nowrap justify-content-end w-100\">\n @if (isActiveAddText) {\n <button (click)=\"addText()\" class=\"w-20\" style=\"margin-right: 10px\" mat-flat-button color=\"primary\">\n Добавить\n </button>\n }\n @if (isActiveAddText) {\n <button (click)=\"closeText()\" class=\"w-20\" mat-flat-button color=\"warn\" >\n Отменить\n </button>\n }\n </div>\n\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>Выберите тег</mat-label>\n <mat-select [(ngModel)]=\"selectedValue\">\n @for (tag of tags; track tag) {\n <mat-option [value]=\"tag.tag\">\n {{tag.displayValue}}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n @if (selectedValue === ExternalVideoTagDataConsts.TagName) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>Выберите видеоплеер</mat-label>\n <mat-select [(ngModel)]=\"selectedVideoPlayer\">\n @for (videoPlayer of videoPlayers; track videoPlayer.type) {\n <mat-option [value]=\"videoPlayer.type\">\n {{videoPlayer.displayValue}}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n }\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-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <croco-html-add-files-btn (filesTagsReady)=\"filesTagsReadyHandler($event)\"\n (postFilesStarted)=\"postFilesStartedEventHandler($event)\" class=\"w-100\">\n </croco-html-add-files-btn>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\">\n @for (tag of bodyTags; track tag; let i = $index) {\n <div cdkDrag>\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\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 <div class=\"badge\">\n {{tag.tagDescription.displayValue}}\n </div>\n </div>\n </div>\n <div style=\"height: 15px;\"></div>\n <croco-html-main-editor-block [tag]=\"tag\" (onTagSaved)=\"onTagSavedHandler($event)\"\n (onTagRemoved)=\"onTagRemovedHandler(i)\">\n </croco-html-main-editor-block>\n </mat-card-content>\n </mat-card>\n <div style=\"height: 10px;\">\n </div>\n </div>\n }\n </div>\n</div>\n\n\n\n\n\n","import { Inject, Pipe, PipeTransform } from '@angular/core';\nimport { CrocoHtmlOptions, HtmlExtractionMethods } from '../extensions/HtmlExtractionMethods';\nimport { InterfaceBlock } from \"../extensions/InterfaceBlock\";\nimport { CrocoHtmlOptionsToken } from '../consts';\n\n@Pipe({\n name: 'topreview',\n standalone: true\n})\nexport class ToPreviewPipe implements PipeTransform {\n\n constructor(@Inject(CrocoHtmlOptionsToken) private readonly _options: CrocoHtmlOptions) {\n }\n\n transform(value: string): InterfaceBlock[] {\n return HtmlExtractionMethods.transformHtmlStringToBlocks(value, this._options);\n }\n}\n","import { AfterContentChecked, AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ClipboardService } from 'ngx-clipboard';\nimport { VisualEditorComponent } from '../visual-editor/visual-editor.component';\nimport { ToPreviewPipe } from '../../../pipes/to-preview.pipe';\nimport { XmlTagViewComponent } from '../../xml-tags/xml-tag-view/xml-tag-view.component';\nimport { MatCard, MatCardContent } from '@angular/material/card';\nimport { MatButton } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatTabGroup, MatTab } from '@angular/material/tabs';\n\n@Component({\n selector: 'croco-html-main-editor',\n templateUrl: './main-editor.component.html',\n styleUrls: ['./main-editor.component.css'],\n standalone: true,\n imports: [MatTabGroup, MatTab, VisualEditorComponent, MatFormField, MatLabel, MatInput, CdkTextareaAutosize, FormsModule, MatButton, MatCard, MatCardContent, XmlTagViewComponent, ToPreviewPipe]\n})\nexport class MainEditorComponent implements OnInit, AfterContentChecked, AfterViewInit {\n\n visualEditorRendered = false;\n \n @ViewChild(\"visualEditor\", { static: true })\n visualEditor: VisualEditorComponent;\n\n @Input()\n showMarkUp = true;\n\n @Input()\n useHtmlRaw = false;\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 ngAfterViewInit(): void {\n this.recalculateBodyTags();\n }\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 this.visualEditor.recalculateBodyTags();\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 @if (visualEditorRendered) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>Исходный код</mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"Исходный код\" [(ngModel)]=\"html\"\n (ngModelChange)=\"textAreaModelChangedHandler()\"></textarea>\n </mat-form-field>\n </div>\n }\n\n <button (click)=\"copyMarkUp()\"\n mat-raised-button color=\"primary\">\n Копировать разметку\n </button>\n </mat-tab>\n <mat-tab label=\"Результат\">\n <mat-card style=\"padding: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <croco-html-xml-tag-view [data]=\"html | topreview\">\n </croco-html-xml-tag-view>\n </mat-card-content>\n </mat-card>\n </mat-tab>\n</mat-tab-group>\n","import { Component, Input } from '@angular/core';\nimport { ToPreviewPipe } from '../../pipes/to-preview.pipe';\nimport { XmlTagViewComponent } from '../xml-tags/xml-tag-view/xml-tag-view.component';\n\n@Component({\n selector: 'croco-html-view',\n templateUrl: './html-view.component.html',\n styleUrls: ['./html-view.component.css'],\n standalone: true,\n imports: [XmlTagViewComponent, ToPreviewPipe]\n})\nexport class HtmlViewComponent {\n @Input()\n html: string = \"<body></body>\";\n}\n","<croco-html-xml-tag-view [data]=\"html | topreview\"></croco-html-xml-tag-view>","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'tagToSpan',\n standalone: true\n})\nexport class TagToSpanPipe implements PipeTransform {\n transform(value: string[]): string {\n return value.map(x => (`<b>${x}</b>`)).join(' | ')\n }\n}","import { Inject, Pipe, PipeTransform } from '@angular/core';\nimport { BodyTagsExtensions } from '../extensions/BodyTagsExtensions';\nimport { HtmlBodyTag } from '../models/models';\nimport { CrocoHtmlOptions } from '../extensions/HtmlExtractionMethods';\nimport { CrocoHtmlOptionsToken } from '../consts';\n\n@Pipe({\n name: 'tohtmlbodytags',\n standalone: true\n})\nexport class ToHtmlBodyTagsPipe implements PipeTransform {\n\n constructor(@Inject(CrocoHtmlOptionsToken) private readonly _options: CrocoHtmlOptions) {\n }\n\n transform(value: string): HtmlBodyTag[] {\n return BodyTagsExtensions.getBodyTags(value, this._options);\n }\n}\n","import { Inject, Pipe, PipeTransform } from '@angular/core';\nimport { HtmlExtractionMethods, CrocoHtmlOptions } from '../extensions/HtmlExtractionMethods';\nimport { InterfaceBlock } from \"../extensions/InterfaceBlock\";\nimport { CrocoHtmlOptionsToken } from '../consts';\n\n@Pipe({\n name: 'topreviewhtml',\n standalone: true\n})\nexport class ToPreviewHtmlPipe implements PipeTransform {\n\n constructor(@Inject(CrocoHtmlOptionsToken) private readonly _options: CrocoHtmlOptions) {\n }\n\n transform(value: string): InterfaceBlock[] {\n return HtmlExtractionMethods.transformHtmlStringToBlocks(value, this._options);\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\";\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, ToPreviewHtmlPipe, ToPreviewPipe } from \"./pipes\";\nimport { FileImageTagViewComponent, UploadFilesBtnComponent } from \"./components\";\nimport { HtmlRawViewComponent } from \"./components/xml-tags/html-raw-view/html-raw-view.component\";\nimport { HtmlViewComponent } from \"./components/html-view/html-view.component\";\n\nexport const EditorComponents = [\n MainEditorComponent,\n FileIdSelectComponent,\n TextEditorComponent,\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 HtmlRawViewComponent,\n FileImageTagViewComponent,\n HtmlViewComponent\n];\n\nexport const CrocoPipes = [\n RichTextToHtmlPipe,\n TagToSpanPipe,\n ToPreviewPipe,\n ToHtmlBodyTagsPipe,\n ToPreviewHtmlPipe\n]\n\nexport const CrocoHtmlDeclarations = [\n UploadFilesBtnComponent,\n HtmlViewComponent,\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 \".\";\nimport {\n VkVideoPlayerComponent\n} from \"./components/editor/external-video-block/vk-video-player/vk-video-player.component\";\nimport { ErrorBannerComponent } from \"./components/error-banner/error-banner.component\";\nimport {\n YoutubeVideoPlayerComponent\n} from \"./components/editor/external-video-block/youtube-video-player/youtube-video-player.component\";\nimport {DownloadFileButtonBlockComponent} from \"./components/editor/download-file-button-block/download-file-button-block.component\";\nimport {\n XmlTagDownloadFileButtonComponent\n} from \"./components/xml-tags/xml-tag-download-file-button/xml-tag-download-file-button.component\";\n\n@NgModule({\n exports: [\n ...CrocoHtmlDeclarations,\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgSelectModule,\n ...MaterialModules,\n ErrorBannerComponent,\n VkVideoPlayerComponent,\n YoutubeVideoPlayerComponent,\n DownloadFileButtonBlockComponent,\n XmlTagDownloadFileButtonComponent,\n ...CrocoHtmlDeclarations\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';\nexport * from './lib/models/models'\nexport * from './lib/consts'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FileUploadService","i1","i1.BlobCreateService","i3","i2","i30.UploadFilesBtnComponent","i31.HtmlViewComponent","i32.XmlTagTableViewComponent","i33.XmlTagViewComponent","i34.XmlTagRichTextViewComponent","i35.XmlTagHtmlViewComponent","i36.XmlTagTextViewComponent","i37.XmlTagHeaderTextViewComponent","i38.XmlTagHeaderInnerTextViewComponent","i39.XmlTagExternalVideoComponent","i40.HtmlRawViewComponent","i41.FileImageTagViewComponent","i42.MainEditorComponent","i43.FileIdSelectComponent","i44.TextEditorComponent","i45.ImageEditorComponent","i46.MainEditorBlockComponent","i47.VisualEditorComponent","i48.AddFilesBtnComponent","i49.HtmlRawEditorComponent","i50.RichTextToHtmlPipe","i51.TagToSpanPipe","i52.ToPreviewPipe","i53.ToHtmlBodyTagsPipe","i54.ToPreviewHtmlPipe"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"croco-html.mjs","sources":["../../../projects/croco-html/src/lib/extensions/AngularMaterialTableMethods.ts","../../../projects/croco-html/src/lib/extensions/ImageMethods.ts","../../../projects/croco-html/src/lib/components/editor/visual-editor/DefaultAligments.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/VideoMethods.ts","../../../projects/croco-html/src/lib/extensions/DownloadButtonMethods.ts","../../../projects/croco-html/src/lib/extensions/HtmlExtractionMethods.ts","../../../projects/croco-html/src/lib/extensions/HtmlRawTagDataConsts.ts","../../../projects/croco-html/src/lib/extensions/Tags.ts","../../../projects/croco-html/src/lib/extensions/BodyTagsExtensions.ts","../../../projects/croco-html/src/lib/extensions/XmlExtensions.ts","../../../projects/croco-html/src/lib/extensions/TableBuilder.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/components/editor/external-video-block/youtube-video-player/youtube-video-player.component.ts","../../../projects/croco-html/src/lib/components/editor/external-video-block/youtube-video-player/youtube-video-player.component.html","../../../projects/croco-html/src/lib/components/editor/external-video-block/vk-video-player/vk-video-player.component.ts","../../../projects/croco-html/src/lib/components/editor/external-video-block/vk-video-player/vk-video-player.component.html","../../../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/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/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/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/services/blob-create.service.ts","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-download-file-button/xml-tag-download-file-button.component.ts","../../../projects/croco-html/src/lib/components/xml-tags/xml-tag-download-file-button/xml-tag-download-file-button.component.html","../../../projects/croco-html/src/lib/components/error-banner/error-banner.component.ts","../../../projects/croco-html/src/lib/components/error-banner/error-banner.component.html","../../../projects/croco-html/src/lib/components/xml-tags/file-image-tag-view/file-image-tag-view.component.ts","../../../projects/croco-html/src/lib/components/xml-tags/file-image-tag-view/file-image-tag-view.component.html","../../../projects/croco-html/src/lib/components/xml-tags/html-raw-view/html-raw-view.component.ts","../../../projects/croco-html/src/lib/components/xml-tags/html-raw-view/html-raw-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/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","../../../projects/croco-html/src/lib/consts/index.ts","../../../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/services/screen-width.service.ts","../../../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/components/editor/visual-editor/DefaultTags.ts","../../../projects/croco-html/src/lib/components/editor/download-file-button-block/download-file-button-block.component.ts","../../../projects/croco-html/src/lib/components/editor/download-file-button-block/download-file-button-block.component.html","../../../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/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/components/html-view/html-view.component.ts","../../../projects/croco-html/src/lib/components/html-view/html-view.component.html","../../../projects/croco-html/src/lib/pipes/TagToSpanPipe.ts","../../../projects/croco-html/src/lib/pipes/ToHtmlBodyTagsPipe.ts","../../../projects/croco-html/src/lib/pipes/ToPreviewHtmlPipe.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":["import { BaseApiResponse, TableData, TableRowData } from './TableMethods';\nimport {AngularMaterialTableData} from \"../models/models\";\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 { CrocoHtmlOptions } from \"./HtmlExtractionMethods\";\n\nexport class FileImageTagDataConsts {\n static TagName = \"file-image\";\n static FileIdAttrName = \"file-id\";\n static ScreenMediaRequest = \"screen-media-request\";\n static DefaultValueForFileImage = \"screen-width:1200,max-image-height:300;screen-width:900,max-image-height:200\";\n static ScreenWidth = 'screen-width';\n static MaxImageHeight = 'max-image-height';\n}\n\nexport interface FileImageTag {\n type: string;\n data: FileImageTagData;\n}\n\nexport interface FileImageTagData {\n src: string;\n fileId: number;\n screenMediaRequest: string;\n}\n\nexport interface IMediaRequest {\n screenWidth: number,\n maxImageHeight: number,\n}\n\nexport class ImageMethods {\n\n public static buildUrl(fileId: number, sizeType: string, options: CrocoHtmlOptions): string {\n\n if (fileId === null || fileId === undefined) {\n return null;\n }\n\n return options.publicImageResizedUrlFormat\n .replace(\"{sizeType}\", sizeType)\n .replace(\"{fileId}\", fileId.toString());\n }\n\n public static buildSmallUrl(fileId: number, options: CrocoHtmlOptions): string {\n return ImageMethods.buildUrl(fileId, \"Small\", options);\n }\n\n public static buildMediumUrl(fileId: number, options: CrocoHtmlOptions): string {\n return ImageMethods.buildUrl(fileId, \"Medium\", options);\n }\n\n public static ExtractImage(elem: HTMLElement, options: CrocoHtmlOptions): FileImageTag {\n let fileId = +elem.getAttribute(FileImageTagDataConsts.FileIdAttrName);\n let src = ImageMethods.buildMediumUrl(fileId, options);\n return {\n type: FileImageTagDataConsts.TagName,\n data: {\n src,\n fileId: fileId,\n screenMediaRequest: elem.getAttribute(FileImageTagDataConsts.ScreenMediaRequest)\n }\n };\n }\n\n public static mediaRequestStringToArrayParser = (data: string) => {\n if(!data.length) {\n return []\n }\n\n return data.split(';').reduce((requests: IMediaRequest[], currentValue: string ) => {\n requests.push({\n screenWidth: ImageMethods.createMediaRequestValue(currentValue.split(','), FileImageTagDataConsts.ScreenWidth ),\n maxImageHeight: ImageMethods.createMediaRequestValue(currentValue.split(','), FileImageTagDataConsts.MaxImageHeight ),\n })\n return requests\n }, [])\n }\n\n public static createMediaRequestValue(arr: string[], attribute: string) {\n return +arr.find(el => el.includes(attribute)).match(/\\d+/g).join('');\n }\n\n public static mediaRequestsArrayToStringParser = (data: IMediaRequest[]) => {\n if(!data.length) {\n return ''\n }\n\n return data.map(el=> `${FileImageTagDataConsts.ScreenWidth}:${el.screenWidth},${FileImageTagDataConsts.MaxImageHeight}:${el.maxImageHeight}`).join(';')\n }\n\n public static screenSizeChanged = (screenSize: number, requests: IMediaRequest[]) => {\n let newSize = null;\n requests\n .sort((a,b) => a.screenWidth > b.screenWidth ? -1 : 1)\n .forEach((el, index) => {\n if(screenSize < +el.screenWidth) {\n newSize = el.maxImageHeight;\n }\n })\n return newSize\n }\n\n}\n","export enum EAlignments {\n Left = 'left',\n Center = 'center',\n Right = 'right',\n}\n\nexport const AlignmentsData = [\n { value: EAlignments.Left , text: 'Слева' },\n { value: EAlignments.Center, text: 'По центру' },\n { value: EAlignments.Right, text: 'Справа' },\n];\n","import { BaseApiResponse } from \"./TableMethods\";\nimport {EAlignments} from \"../components/editor/visual-editor/DefaultAligments\";\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\", \"u\"];\n\n static ExtractTextTag(elem: HTMLElement): SimpleTextTag {\n var hAlignValue = elem.getAttribute(\"h-align\") ?? EAlignments.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 = [EAlignments.Left, EAlignments.Right, EAlignments.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 { CrocoHtmlOptions, 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, options: CrocoHtmlOptions) {\n let tableData : TableData = {\n header: TableMethods.getHeader(tableTag),\n rows: TableMethods.getTableRows(tableTag, options)\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, options: CrocoHtmlOptions): 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, options);\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 TextTags {\n\n public static readonly text = \"text\";\n\n public static readonly h1 = \"h1\";\n\n public static readonly h2 = \"h2\";\n\n public static readonly h3 = \"h3\";\n\n public static readonly h4 = \"h4\";\n\n public static readonly h5 = \"h5\";\n\n public static readonly h6 = \"h6\";\n\n public static headerTextTags = [TextTags.h1, TextTags.h2, TextTags.h3, TextTags.h4, TextTags.h5, TextTags.h6];\n\n public static allTextTags = [TextTags.text, ...TextTags.headerTextTags];\n\n}\n\nexport class TextMethods {\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","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 static VkVideo = \"vk-video\"\n}\n\nexport const ExternalVideoPlayers = [\n {\n type: ExternalVideoSupportedTypes.Youtube,\n displayValue: 'Youtube',\n },\n {\n type: ExternalVideoSupportedTypes.VkVideo,\n displayValue: 'Vk Video',\n }\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","export class DownloadButtonTagDataConsts {\n static TagName = \"download-file-button\";\n static TitleAttrName = \"title\";\n static LinkAttrName = \"link\";\n}\n\nexport interface DownloadButtonTag {\n type: string;\n data: DownloadButtonTagData;\n}\n\n\nexport interface DownloadButtonTagData {\n title: string;\n link: string;\n}\n\nexport class DownloadButtonMethods {\n static ExtractDownloadButtonTag(elem: HTMLElement): DownloadButtonTag{\n return {\n type: DownloadButtonTagDataConsts.TagName,\n data:{\n title: elem.getAttribute(DownloadButtonTagDataConsts.TitleAttrName),\n link: elem.getAttribute(DownloadButtonTagDataConsts.LinkAttrName)\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 {\n ExternalVideoTagDataConsts,\n VideoMethods\n} from \"./VideoMethods\";\nimport {DownloadButtonMethods, DownloadButtonTagDataConsts} from \"./DownloadButtonMethods\";\n\nexport interface CrocoHtmlOptions {\n publicImageResizedUrlFormat: string;\n}\n\nexport class HtmlExtractionMethods {\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, options: CrocoHtmlOptions) => TextSimpleMethods.ExtractTextTag(elem),\n [\"FILE-IMAGE\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => ImageMethods.ExtractImage(elem, options),\n [\"TABLE\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => TableMethods.getTableFromHtmlTag(elem as HTMLTableElement, options),\n [\"RICH-TEXT\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => TextMethods.ExtractRichTextData(elem),\n [\"HTML-RAW\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => ({\n type: \"html-raw\",\n data: {\n innerHTML: elem.innerHTML\n }\n }),\n [\"H1\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h1\"),\n [\"H2\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h2\"),\n [\"H3\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h3\"),\n [\"H4\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h4\"),\n [\"H5\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h5\"),\n [\"H6\"]: (elem: HTMLElement, options: CrocoHtmlOptions) => HtmlExtractionMethods.ExtractHeaderTag(elem, \"h6\"),\n [ExternalVideoTagDataConsts.TagName.toUpperCase()]: (elem: HTMLElement, options: CrocoHtmlOptions) => VideoMethods.ExtractExternalVideoTag(elem),\n [DownloadButtonTagDataConsts.TagName.toUpperCase()]: (elem: HTMLElement, options: CrocoHtmlOptions) => DownloadButtonMethods.ExtractDownloadButtonTag(elem),\n };\n\n static transformHtmlElementToBlocks(element: HTMLElement, options: CrocoHtmlOptions): 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, options);\n data.push(result);\n }\n }\n\n return data;\n }\n\n static transformHtmlStringToBlocks(value: string, options: CrocoHtmlOptions): InterfaceBlock[] {\n\n if (value === undefined || value === null) {\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, options);\n }\n}\n","export class HtmlRawTagDataConsts {\n static TagName = \"html-raw\";\n static ScreenWidth = \"screen-width\";\n static MaxImageHeight = \"max-image-height\";\n static MediaRequest=\" media-request\"\n}\n","import { HtmlRawTagDataConsts } from \"./HtmlRawTagDataConsts\";\nimport { FileImageTagDataConsts } from \"./ImageMethods\";\nimport { TextTags } from \"./TextMethods\";\nimport { ExternalVideoTagDataConsts } from \"./VideoMethods\";\n\nexport class Tags {\n public static readonly Text = TextTags.text;\n public static readonly H1 = TextTags.h1;\n public static readonly H2 = TextTags.h2;\n public static readonly H3 = TextTags.h3;\n public static readonly H4 = TextTags.h4;\n public static readonly H5 = TextTags.h5;\n public static readonly H6 = TextTags.h6;\n\n public static readonly HtmlRaw = HtmlRawTagDataConsts.TagName;\n public static readonly FileImage = FileImageTagDataConsts.TagName;\n public static readonly Table = 'table';\n public static readonly RichText = 'rich-text';\n public static readonly ExternalVideo = ExternalVideoTagDataConsts.TagName;\n public static readonly UnsupportedTag = 'unsupported-tag';\n}\n","import { HtmlBodyTag } from \"../models/models\";\nimport { HtmlExtractionMethods, CrocoHtmlOptions } from \"./HtmlExtractionMethods\";\nimport { InterfaceBlock } from \"./InterfaceBlock\";\nimport { HtmlRawTagDataConsts } from \"./HtmlRawTagDataConsts\";\nimport { FileImageTagData, FileImageTagDataConsts } from \"./ImageMethods\";\nimport { TextTags } from \"./TextMethods\";\nimport { SimpleTextTagData } from \"./TextSimpleMethods\";\nimport { Tags } from \"./Tags\";\nimport {ExternalVideoTagDataConsts} from \"./VideoMethods\";\nimport {DownloadButtonTagDataConsts} from \"./DownloadButtonMethods\";\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]: \"Внешнее видео\",\n [DownloadButtonTagDataConsts.TagName]: \"Кнопка для скачивания\",\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 (TextTags.allTextTags.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 if (x.tagDescription.tag === DownloadButtonTagDataConsts.TagName) {\n return `<${x.tagDescription.tag} title=\"${x.attributes['title']}\" link=\"${x.attributes['link']}\"></${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 let fileIdAttr = \"\";\n let screenMediaRequestAttr = \"\";\n\n let attrValue = imageTag.attributes[FileImageTagDataConsts.FileIdAttrName];\n if (imageTag.attributes.hasOwnProperty(FileImageTagDataConsts.FileIdAttrName) && attrValue) {\n fileIdAttr = `${FileImageTagDataConsts.FileIdAttrName}=\"${attrValue}\"`;\n }\n\n return `<${FileImageTagDataConsts.TagName} ${fileIdAttr} ${FileImageTagDataConsts.ScreenMediaRequest}=\"${imageTag.attributes[FileImageTagDataConsts.ScreenMediaRequest]}\"></${FileImageTagDataConsts.TagName}>`;\n }\n\n static getBodyTags(html: string, options: CrocoHtmlOptions) {\n let result = HtmlExtractionMethods.transformHtmlStringToBlocks(html, options);\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 (TextTags.allTextTags.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 attrs = {};\n\n if (fileData.fileId) {\n attrs[FileImageTagDataConsts.FileIdAttrName] = fileData.fileId;\n }\n\n if (fileData.screenMediaRequest) {\n attrs[FileImageTagDataConsts.ScreenMediaRequest] = fileData.screenMediaRequest;\n }\n\n return {\n presentOrEdit: true,\n tagDescription: {\n tag: FileImageTagDataConsts.TagName,\n displayValue: BodyTagsExtensions.getDescription(data.type)\n },\n attributes: attrs,\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: data.type,\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: Tags.UnsupportedTag,\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 { 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 { HttpClient, HttpEvent } 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\nexport interface UploadFileWithProgressEvent {\n loading: boolean;\n response?: BaseApiResponseWithFilesIds;\n uploadingLoaded: number;\n uploadingTotal: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FileUploadService {\n constructor(\n private _httpClient: HttpClient,\n @Inject('BASE_URL') private baseUrl: string,\n ) {}\n\n public postFiles(files: FileList, createLocalCopiesNow = false): Observable<BaseApiResponseWithFilesIds> {\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 public postFilesInner(\n formData: FormData,\n createLocalCopiesNow: boolean,\n withProgress: true,\n ): Observable<HttpEvent<BaseApiResponseWithFilesIds>>;\n\n public postFilesInner(\n formData: FormData,\n createLocalCopiesNow?: boolean,\n withProgress?: false,\n ): Observable<BaseApiResponseWithFilesIds>;\n public postFilesInner(\n formData: FormData,\n createLocalCopiesNow: boolean,\n withProgress: boolean,\n ): Observable<BaseApiResponseWithFilesIds> | Observable<HttpEvent<BaseApiResponseWithFilesIds>>;\n public postFilesInner(\n formData: FormData,\n createLocalCopiesNow = false,\n withProgress = false,\n ): Observable<BaseApiResponseWithFilesIds> | Observable<HttpEvent<BaseApiResponseWithFilesIds>> {\n let endpoint = createLocalCopiesNow\n ? this.baseUrl + 'api/files/upload/now/with-handlers'\n : this.baseUrl + 'Api/Files/UploadFiles';\n\n return this._httpClient.post<BaseApiResponseWithFilesIds>(\n endpoint,\n formData,\n withProgress ? { reportProgress: true, observe: 'events' } : undefined,\n );\n }\n}\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { BaseApiResponseWithFilesIds, FileUploadService } from '../../services/file-upload.service';\nimport { MatButton } from '@angular/material/button';\n\nexport interface FilePostingStarted {\n filesCount: number;\n createLocalCopiesNow: boolean;\n}\n\n@Component({\n selector: 'croco-app-upload-files-btn',\n templateUrl: './upload-files-btn.component.html',\n styleUrls: ['./upload-files-btn.component.css'],\n standalone: true,\n imports: [MatButton]\n})\nexport class UploadFilesBtnComponent implements OnInit {\n\n @ViewChild('filesInput')\n private fileInput!: ElementRef<HTMLInputElement>;\n\n @Input()\n extAccepts: string = \"*/*\";\n\n @Input()\n isMultiple = true;\n\n @Input()\n btnText: string = \"Загрузить файлы\";\n\n @Input()\n createLocalCopiesNow = true;\n\n @Input()\n hidden = false;\n\n @Output()\n postFilesStarted = new EventEmitter<FilePostingStarted>();\n\n @Output()\n onFilesUploaded = new EventEmitter<BaseApiResponseWithFilesIds>();\n\n constructor(private _fileUploadService: FileUploadService) { }\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';\nimport { HtmlBodyTag } from '../../models/models';\nimport { BaseApiResponseWithFilesIds } from '../../services/file-upload.service';\nimport { FilePostingStarted, UploadFilesBtnComponent } from '../upload-files-btn/upload-files-btn.component';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n selector: 'croco-html-add-files-btn',\n templateUrl: './add-files-btn.component.html',\n styleUrls: ['./add-files-btn.component.css'],\n standalone: true,\n imports: [UploadFilesBtnComponent, MatButton]\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 [FileImageTagDataConsts.ScreenMediaRequest]: FileImageTagDataConsts.DefaultValueForFileImage\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 <croco-app-upload-files-btn #fakeBtn (onFilesUploaded)=\"filesUploadedHandler($event)\"\n [btnText]=\"'Добавить изображения'\" [createLocalCopiesNow]=\"true\"\n (postFilesStarted)=\"postFilesStartedEventHandler($event)\" [extAccepts]=\"'image/*'\"></croco-app-upload-files-btn>\n</div>\n\n<div>\n <button class=\"w-100\" (click)=\"handleClick()\" mat-stroked-button>Добавить изображения</button>\n</div>","import {Component, Input} from '@angular/core';\nimport {DomSanitizer, SafeResourceUrl} from \"@angular/platform-browser\";\n\n@Component({\n selector: 'youtube-video-player',\n standalone: true,\n imports: [],\n templateUrl: './youtube-video-player.component.html',\n styleUrl: '../external-video-block.component.scss'\n})\nexport class YoutubeVideoPlayerComponent {\n\n @Input() set link(link: string) {\n this.safeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(link);\n }\n public safeUrl: SafeResourceUrl;\n\n constructor(private sanitizer: DomSanitizer) {}\n}\n","<div class=\"video-player\">\n <iframe\n width=\"100%\"\n height=\"100%\"\n [src]=\"safeUrl\"\n title=\"YouTube video player\"\n frameborder=\"0\"\n allow=\"accelerometer;\n autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen></iframe>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {DomSanitizer, SafeResourceUrl} from \"@angular/platform-browser\";\n\n@Component({\n selector: 'vk-video-player',\n standalone: true,\n imports: [],\n templateUrl: './vk-video-player.component.html',\n styleUrl: '../external-video-block.component.scss'\n})\nexport class VkVideoPlayerComponent{\n\n @Input() set link(link: string) {\n this.safeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(link);\n }\n public safeUrl: SafeResourceUrl;\n\n constructor(private sanitizer: DomSanitizer) {}\n}\n","<div class=\"video-player\">\n <iframe\n [src]=\"safeUrl\"\n width=\"100%\"\n height=\"100%\"\n allow=\"autoplay; encrypted-media; fullscreen; picture-in-picture;\"\n frameborder=\"0\"\n allowfullscreen></iframe>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\nimport {InterfaceBlock} from \"../../../extensions/InterfaceBlock\";\nimport {ExternalVideoSupportedTypes, ExternalVideoTagData} from '../../../extensions';\nimport { YoutubeVideoPlayerComponent } from '../../editor/external-video-block/youtube-video-player/youtube-video-player.component';\nimport { VkVideoPlayerComponent } from '../../editor/external-video-block/vk-video-player/vk-video-player.component';\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.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [VkVideoPlayerComponent, YoutubeVideoPlayerComponent],\n})\nexport class XmlTagExternalVideoComponent {\n @Input() public set data(value: InterfaceBlock) {\n this.tagData = value.data;\n };\n\n @Input() public set tagData(value: ExternalVideoTagData) {\n this._block = {\n type: value.type,\n link: value.link\n }\n };\n\n protected readonly ExternalVideoSupportedTypes = ExternalVideoSupportedTypes;\n\n public _block: ExternalVideoTagData = {\n type: '',\n link: ''\n }\n}\n","@switch (_block.type) {\n @case (ExternalVideoSupportedTypes.VkVideo) {\n <vk-video-player [link]=\"_block.link\"></vk-video-player>\n }\n @case (ExternalVideoSupportedTypes.Youtube) {\n <youtube-video-player [link]=\"_block.link\"></youtube-video-player>\n }\n}\n","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 standalone: true\n})\nexport class XmlTagHeaderInnerTextViewComponent implements OnInit {\n\n @Input()\n item: GenericTextTag;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","@if (item.type === 'h1') {\n <h1\n [innerHtml]=\"item.data.html\">\n </h1>\n}\n@if (item.type === 'h2') {\n <h2\n [innerHtml]=\"item.data.html\">\n </h2>\n}\n@if (item.type === 'h3') {\n <h3\n [innerHtml]=\"item.data.html\">\n </h3>\n}\n@if (item.type === 'h4') {\n <h4\n [innerHtml]=\"item.data.html\">\n </h4>\n}\n@if (item.type === 'h5') {\n <h5\n [innerHtml]=\"item.data.html\">\n </h5>\n}\n@if (item.type === 'h6') {\n <h6\n [innerHtml]=\"item.data.html\">\n </h6>\n}","import { Component, Input, OnInit } from '@angular/core';\nimport { GenericTextTag } from '../../../extensions/TextSimpleMethods';\nimport { XmlTagHeaderInnerTextViewComponent } from '../xml-tag-header-inner-text-view/xml-tag-header-inner-text-view.component';\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 standalone: true,\n imports: [XmlTagHeaderInnerTextViewComponent]\n})\nexport class XmlTagHeaderTextViewComponent implements OnInit {\n\n @Input()\n item: GenericTextTag;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'left') {\n<div style=\"text-align: left;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <croco-html-xml-tag-header-inner-text-view [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n }\n</div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'right') {\n<div style=\"text-align: right;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <croco-html-xml-tag-header-inner-text-view [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n }\n</div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'center') {\n<div style=\"text-align: center;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <croco-html-xml-tag-header-inner-text-view [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n }\n</div>\n}\n\n@if (!item.data.validationResult.isSucceeded) {\n<div class=\"red\" style=\"margin-top: 10px;\">\n <h4>Допущена ошибка в теге <text></h4>\n <span>\n {{item.data.validationResult.message}}\n </span>\n</div>\n}","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 standalone: true\n})\nexport class XmlTagHtmlViewComponent {\n\n constructor() { }\n\n @Input()\n html: string = \"\";\n}\n","<div class=\"col\" [innerHTML]=\"html\">\n</div>","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { RichTextData } from \"../extensions/TextMethods\";\n\n@Pipe({\n name: 'richTextToHtml',\n standalone: true\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';\nimport { RichTextToHtmlPipe } from '../../../pipes/RichTextToHtmlPipe';\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 standalone: true,\n imports: [RichTextToHtmlPipe]\n})\nexport class XmlTagRichTextViewComponent implements OnInit {\n\n @Input()\n richTextData: RichTextData = null;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n \n}\n","@if (richTextData) {\n <div [innerHtml]=\"richTextData | richTextToHtml\">\n </div>\n}","import { Component, Input } from '@angular/core';\nimport { MatTable, MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell, MatHeaderRowDef, MatHeaderRow, MatRowDef, MatRow } from '@angular/material/table';\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 standalone: true,\n imports: [MatTable, MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell, MatHeaderRowDef, MatHeaderRow, MatRowDef, MatRow]\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 @for (column of displayedColumns; track column) {\n <ng-container [matColumnDef]=\"column\">\n <th mat-header-cell *matHeaderCellDef> {{column}} </th>\n <td mat-cell *matCellDef=\"let element\"> {{element[column]}} </td>\n </ng-container>\n }\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n</table>","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 standalone: true\n})\nexport class XmlTagTextViewComponent implements OnInit {\n\n @Input()\n item: SimpleTextTag;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n}","@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'left') {\n <div style=\"text-align: left;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <span [innerHtml]=\"item.data.html\"></span>\n }\n </div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'right') {\n <div style=\"text-align: right;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <span [innerHtml]=\"item.data.html\"></span>\n }\n </div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'center') {\n <div style=\"text-align: center;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <span [innerHtml]=\"item.data.html\"></span>\n }\n </div>\n}\n\n@if (!item.data.validationResult.isSucceeded) {\n <div class=\"red\" style=\"margin-top: 10px;\" >\n <h4>Допущена ошибка в теге <text></h4>\n <span>\n {{item.data.validationResult.message}}\n </span>\n </div>\n}","import { Injectable } from '@angular/core';\nimport {HttpClient} from \"@angular/common/http\";\nimport {Observable} from \"rxjs\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BlobCreateService {\n\n constructor(private readonly _http: HttpClient) {}\n\n getBlob(link: string): Observable<Blob> {\n return this._http.get(link, { responseType: 'blob' })\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {InterfaceBlock} from \"../../../extensions/InterfaceBlock\";\nimport {\n YoutubeVideoPlayerComponent\n} from \"../../editor/external-video-block/youtube-video-player/youtube-video-player.component\";\nimport {MatButton} from \"@angular/material/button\";\nimport {BlobCreateService} from \"../../../services/blob-create.service\";\nimport {DownloadButtonTagData} from \"../../../extensions/DownloadButtonMethods\";\nimport {MatIcon} from \"@angular/material/icon\";\n\n@Component({\n selector: 'croco-html-xml-tag-download-file-button',\n standalone: true,\n imports: [\n YoutubeVideoPlayerComponent,\n MatButton,\n MatIcon\n ],\n templateUrl: './xml-tag-download-file-button.component.html',\n styleUrl: './xml-tag-download-file-button.component.scss'\n})\nexport class XmlTagDownloadFileButtonComponent {\n @Input() public set data(value: InterfaceBlock) {\n this.tagData = value.data;\n };\n\n @Input() public set tagData(value: DownloadButtonTagData) {\n this._block = {\n title: value.title,\n link: value.link\n }\n };\n\n constructor(private readonly _blobCreateService: BlobCreateService) {}\n\n public _block: DownloadButtonTagData = {\n title: '',\n link: ''\n }\n\n downloadFile() {\n this._blobCreateService.getBlob(this._block.link).subscribe(\n blob=> {\n const link = document.createElement('a');\n const objectUrl = URL.createObjectURL(blob);\n link.href = objectUrl;\n\n const regex = /[^/]+$/;\n link.download = this._block.link.match(regex)[0] || 'Без названия';\n link.click();\n URL.revokeObjectURL(objectUrl);\n }\n );\n }\n}\n","<span\n class=\"download-file-button\"\n (click)=\"downloadFile()\">\n <mat-icon> save</mat-icon>\n {{this._block.title}}\n</span>\n","import { Component, Input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n selector: 'croco-html-error-banner',\n standalone: true,\n imports: [\n MatCardModule,\n MatButtonModule\n ],\n templateUrl: './error-banner.component.html',\n styleUrl: './error-banner.component.css'\n})\nexport class ErrorBannerComponent {\n @Input({ required: true }) \n message: string = \"\";\n}\n","@if (message) {\n <mat-card class=\"red\">\n <mat-card-content>\n <p>\n {{ message }}\n </p>\n </mat-card-content>\n <mat-card-actions>\n <button mat-button (click)=\"message = null\">ЗАКРЫТЬ</button>\n </mat-card-actions>\n </mat-card>\n }\n ","import { Component, Input, OnInit } from '@angular/core';\nimport { InterfaceBlock } from '../../../extensions/InterfaceBlock';\nimport { FileImageTagData } from '../../../extensions';\n\n@Component({\n selector: 'croco-html-file-image-tag-view',\n templateUrl: './file-image-tag-view.component.html',\n styleUrl: './file-image-tag-view.component.css',\n standalone: true\n})\nexport class FileImageTagViewComponent implements OnInit {\n \n @Input()\n item: InterfaceBlock;\n\n imageSrc = \"\";\n\n ngOnInit(): void {\n\n let data = this.item.data as FileImageTagData;\n\n this.imageSrc = data.src;\n }\n}\n","\n<img class=\"mx-auto d-block img-fluid\" [src]=\"imageSrc\" alt=\"Изображение не загружено\"/>","import { Component, Input, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n selector: 'croco-html-raw-view',\n templateUrl: './html-raw-view.component.html',\n styleUrls: ['./html-raw-view.component.css'],\n standalone: true\n})\nexport class HtmlRawViewComponent implements OnInit {\n \n @Input()\n rawHtml = \"\";\n\n safeHtml : SafeHtml;\n isInitialized = false; \n\n constructor(private readonly _sanitizer: DomSanitizer) {\n }\n\n ngOnInit(): void {\n this.safeHtml = this._sanitizer.bypassSecurityTrustHtml(this.rawHtml);\n }\n}\n","<div [innerHTML]=\"safeHtml\">\n</div>","import {Component, Input, ViewEncapsulation} from '@angular/core';\nimport { InterfaceBlock } from \"../../../extensions/InterfaceBlock\";\nimport { TextTags } from '../../../extensions';\nimport { XmlTagDownloadFileButtonComponent } from '../xml-tag-download-file-button/xml-tag-download-file-button.component';\nimport { XmlTagExternalVideoComponent } from '../xml-tag-external-video/xml-tag-external-video.component';\nimport { ErrorBannerComponent } from '../../error-banner/error-banner.component';\nimport { XmlTagHtmlViewComponent } from '../xml-tag-html-view/xml-tag-html-view.component';\nimport { FileImageTagViewComponent } from '../file-image-tag-view/file-image-tag-view.component';\nimport { XmlTagHeaderTextViewComponent } from '../xml-tag-header-text-view/xml-tag-header-text-view.component';\nimport { HtmlRawViewComponent } from '../html-raw-view/html-raw-view.component';\nimport { XmlTagTextViewComponent } from '../xml-tag-text-view/xml-tag-text-view.component';\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 standalone: true,\n imports: [\n XmlTagTextViewComponent,\n HtmlRawViewComponent,\n XmlTagHeaderTextViewComponent,\n FileImageTagViewComponent,\n XmlTagHtmlViewComponent,\n ErrorBannerComponent,\n XmlTagExternalVideoComponent,\n XmlTagDownloadFileButtonComponent,\n ],\n})\nexport class XmlTagViewComponent {\n\n @Input()\n data:InterfaceBlock[] = [];\n\n isHeaderTextTag(item: InterfaceBlock) {\n return TextTags.headerTextTags.includes(item.type);\n }\n}\n","<div>\n @for (item of data; track $index) {\n <div class=\"row\">\n\n @if (item.type === 'text') {\n <div>\n <croco-html-xml-tag-text-view [item]=\"item\"></croco-html-xml-tag-text-view>\n </div>\n }\n\n @if (item.type === 'html-raw') {\n <div>\n <croco-html-raw-view [rawHtml]=\"item.data.innerHTML\">\n </croco-html-raw-view>\n </div>\n }\n\n @if (isHeaderTextTag(item)) {\n <div>\n <croco-html-xml-tag-header-text-view [item]=\"item\"></croco-html-xml-tag-header-text-view>\n </div>\n }\n\n @if (item.type === 'file-image') {\n <div>\n <croco-html-file-image-tag-view [item]=\"item\"></croco-html-file-image-tag-view>\n </div>\n }\n\n @if (item.type === 'table' && item.validationResult) {\n\n @if (item.validationResult.isSucceeded){\n <croco-html-xml-tag-html-view [html]=\"item.bootstrapHtml\">\n </croco-html-xml-tag-html-view>\n }\n @else {\n <croco-html-error-banner\n [message]=\"item.validationResult.message\">\n </croco-html-error-banner>\n }\n }\n\n @if (item.type === 'rich-text') {\n <div>\n <croco-html-xml-tag-text-view></croco-html-xml-tag-text-view>\n </div>\n }\n\n @if (item.type === 'external-video') {\n <div>\n <croco-html-xml-tag-external-video [data]=\"item\"></croco-html-xml-tag-external-video>\n </div>\n }\n\n @if (item.type === 'download-file-button') {\n <div>\n <croco-html-xml-tag-download-file-button [data]=\"item\"></croco-html-xml-tag-download-file-button>\n </div>\n }\n @if (item.type === 'unsupported-tag') {\n <div class=\"red\" style=\"margin-top: 10px;\">\n <h4>Данный тег не поддерживается</h4>\n <span>\n {{item.data.tagString}}\n </span>\n </div>\n }\n </div>\n }\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n ExternalVideoTagData,\n ExternalVideoSupportedTypes,\n} from '../../../extensions';\nimport { HtmlBodyTag } from '../../../models/models';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\nimport { XmlTagExternalVideoComponent } from '../../xml-tags';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'croco-html-external-video-block',\n templateUrl: './external-video-block.component.html',\n styleUrls: ['./external-video-block.component.scss'],\n standalone: true,\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n XmlTagExternalVideoComponent,\n ]\n})\nexport class ExternalVideoBlockComponent implements OnInit {\n\n @Input()\n tag: HtmlBodyTag;\n\n @Output()\n onTagUpdated = new EventEmitter<HtmlBodyTag>();\n\n protected readonly ExternalVideoSupportedTypes = ExternalVideoSupportedTypes;\n\n tagData: ExternalVideoTagData = {\n link: '',\n type: ExternalVideoSupportedTypes.Youtube\n };\n\n linkText = '';\n\n ngOnInit(): void {\n this.tagData.link = (this.tag.attributes as ExternalVideoTagData).link;\n this.tagData.type = (this.tag.attributes as ExternalVideoTagData).type;\n\n this.linkText = this.tagData.type === ExternalVideoSupportedTypes.VkVideo ? 'Ссылка на Vk Video' : ' Ссылка на YouTube';\n }\n\n linkChanged(){\n if(this.tagData.link.includes('iframe')) {\n this.createLinkByIFrame()\n }\n this.tag.attributes = this.tagData;\n }\n\n createLinkByIFrame() {\n const parser = new DOMParser();\n const document = parser.parseFromString(this.tagData.link, \"text/html\");\n const elem = document.body.children[0];\n const src = elem.getAttribute(\"src\");\n this.tagData.link = src;\n }\n}\n","@if (tag.presentOrEdit) {\n <div>\n <div>\n @switch (tagData.type) {\n @case (ExternalVideoSupportedTypes.VkVideo) {\n {{linkText}}: {{tagData.link}}\n }\n @case (ExternalVideoSupportedTypes.Youtube) {\n {{linkText}}: {{tagData.link}}\n }\n }\n </div>\n <div style=\"height: 10px;\"></div>\n <croco-html-xml-tag-external-video [tagData]=\"tagData\"></croco-html-xml-tag-external-video>\n </div>\n}\n\n@if (!tag.presentOrEdit) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n {{linkText}}\n </mat-label>\n <input matInput placeholder=\"{{linkText}}\"\n autocomplete=\"off\"\n [(ngModel)]=\"tagData.link\"\n (ngModelChange)=\"linkChanged()\">\n </mat-form-field>\n </div>\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { HtmlBodyTag } from '../../../models/models';\nimport { FormsModule } from '@angular/forms';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\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 standalone: true,\n imports: [MatFormField, MatLabel, MatInput, CdkTextareaAutosize, FormsModule]\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","@if (tag.presentOrEdit) {\n <div>\n <div [innerHTML]=\"tag.innerHtml\"></div>\n </div>\n}\n\n@if (!tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\">\n </div>\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n Внутренняя разметка тега\n </mat-label>\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\n","export const CrocoHtmlOptionsToken = \"croco-html-options\";","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 q: string;\n fileName: string;\n applicationId: string;\n fileTypes: Array<FileType>;\n count: number | null;\n offSet: number;\n}\n\nexport enum FileType {\n Undefined = 'Undefined',\n Unknown = 'Unknown',\n Image = 'Image',\n Audio = 'Audio',\n Video = 'Video',\n Document = 'Document',\n Archive = 'Archive'\n}\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, Inject, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { ImageMethods } from '../../extensions/ImageMethods';\nimport { FileNameAndIdModel, FilesQueryService, FileType } from '../../services/files-query.service';\nimport { CrocoHtmlOptionsToken } from '../../consts';\nimport { CrocoHtmlOptions } from '../../extensions/HtmlExtractionMethods';\nimport { FormsModule } from '@angular/forms';\nimport { NgSelectModule } from '@ng-select/ng-select';\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 standalone: true,\n imports: [NgSelectModule, FormsModule]\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 files: FileNameAndIdModel[] = [];\n\n @Output()\n onFileIdChanged = new EventEmitter<number>();\n\n constructor(\n private readonly _fileService: FilesQueryService,\n @Inject(CrocoHtmlOptionsToken) private readonly _options: CrocoHtmlOptions\n ) {\n }\n\n onModelChanged(fileId: number) {\n this.onFileIdChanged.emit(fileId);\n }\n\n getSrc(fileId: number) {\n return ImageMethods.buildSmallUrl(fileId, this._options);\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 fileTypes: [FileType.Image],\n applicationId: 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","<div>\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 <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</div>\n\n<div>\n Идентификатор файла: {{fileId}}\n</div>\n","import { Injectable } from '@angular/core';\nimport {BehaviorSubject, Observable} from \"rxjs\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ScreenWidthService {\n\n private screenWidth = new BehaviorSubject<number>(window.innerWidth);\n\n constructor() {\n window.addEventListener('resize', this.onResize.bind(this));\n }\n\n private onResize(event: Event) {\n this.screenWidth.next(window.innerWidth);\n }\n\n getScreenWidth(): Observable<number> {\n return this.screenWidth.asObservable()\n }\n}\n","import {Component, EventEmitter, Inject, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {ImageMethods, FileImageTagDataConsts, IMediaRequest} from '../../../extensions';\nimport { HtmlBodyTag } from '../../../models/models';\nimport { CrocoHtmlOptionsToken } from '../../../consts';\nimport { CrocoHtmlOptions } from '../../../extensions/HtmlExtractionMethods';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { FileIdSelectComponent } from '../../file-id-select/file-id-select.component';\nimport { MatIcon } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonToggleGroup, MatButtonToggle } from '@angular/material/button-toggle';\nimport {CdkDragHandle} from \"@angular/cdk/drag-drop\";\nimport {MatCard, MatCardContent} from \"@angular/material/card\";\nimport {XmlTagExternalVideoComponent} from \"../../xml-tags\";\nimport {NgStyle} from \"@angular/common\";\nimport {ScreenWidthService} from \"../../../services/screen-width.service\";\nimport {MatButton, MatIconButton} from \"@angular/material/button\";\nimport {MatSlideToggle} from \"@angular/material/slide-toggle\";\nimport {Subject, takeUntil} from \"rxjs\";\n\n@Component({\n selector: 'croco-html-image-editor',\n templateUrl: './image-editor.component.html',\n styleUrls: ['./image-editor.component.scss'],\n standalone: true,\n imports: [MatButtonToggleGroup, FormsModule, MatButtonToggle, MatIcon, FileIdSelectComponent, MatFormField, MatLabel, MatInput, CdkDragHandle, MatCard, MatCardContent, XmlTagExternalVideoComponent, NgStyle, MatButton, MatIconButton, MatSlideToggle]\n})\nexport class ImageEditorComponent implements OnInit, OnDestroy {\n\n hasImageError = false;\n searchOrEdit = \"search\";\n requests: IMediaRequest[] = [];\n imageMaxHeight = null;\n isShowMediaRequest = false;\n private unsubscribe = new Subject<void>();\n\n @Input()\n tag: HtmlBodyTag;\n\n onErrorHandler(){\n this.hasImageError = true;\n }\n\n @Output()\n onTagUpdated = new EventEmitter<HtmlBodyTag>();\n\n constructor(\n @Inject(CrocoHtmlOptionsToken) private readonly _options: CrocoHtmlOptions,\n screenWidth: ScreenWidthService) {\n\n screenWidth.getScreenWidth()\n .pipe(takeUntil(this.unsubscribe))\n .subscribe(screenWidth => {\n this.imageMaxHeight = ImageMethods.screenSizeChanged(screenWidth, this.requests);\n })\n }\n\n getSrc(){\n return ImageMethods.buildUrl(this.tag.attributes[FileImageTagDataConsts.FileIdAttrName], \"Medium\", this._options);\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 this.requests = ImageMethods.mediaRequestStringToArrayParser(this.tag.attributes[FileImageTagDataConsts.ScreenMediaRequest])\n }\n\n requestChanged() {\n this.tag.attributes[FileImageTagDataConsts.ScreenMediaRequest] = ImageMethods.mediaRequestsArrayToStringParser(this.requests)\n }\n\n addNewMediaRequest() {\n this.requests.push({\n screenWidth: 0,\n maxImageHeight: 0,\n })\n }\n\n deleteMediaRequest(index: number) {\n this.requests.splice(index, 1);\n this.requestChanged();\n }\n\n ngOnDestroy(): void {\n this.unsubscribe.next();\n this.unsubscribe.complete();\n }\n}\n","<div>\n <div style=\"height: 10px;\">\n </div>\n\n @if (hasImageError) {\n <div class=\"error-block\">\n Изображение не найдено по указанному идентификатору, возможно файл не существует или отсутствует на сервере.\n </div>\n }\n\n @if (hasFileId() && !hasImageError) {\n <div>\n <img\n [ngStyle]=\"{ 'max-height': imageMaxHeight ? imageMaxHeight + 'px' : '100%'}\"\n class=\"mx-auto d-block img-fluid\" [src]=\"getSrc()\" (error)=\"onErrorHandler()\" alt=\"photo\"/>\n </div>\n }\n\n @if (!hasFileId()) {\n <div>\n <h5>[Изображение не выбрано]</h5>\n </div>\n }\n\n @if(!tag.presentOrEdit) {\n <mat-slide-toggle style=\"padding: 10px 0\" [(ngModel)]=\"isShowMediaRequest\">Показывать медиа запросы</mat-slide-toggle>\n }\n\n @if(isShowMediaRequest) {\n <div style=\"display: flex; flex-direction: column; gap: 20px\">\n <div class=\"media-request__header\">\n <span>Медиа запросы:</span>\n @if (!tag.presentOrEdit) {\n <button (click)=\"addNewMediaRequest()\" class=\"w-30\" mat-icon-button color=\"primary\">\n <mat-icon>add</mat-icon>\n </button>\n }\n </div>\n @for (request of requests; track $index) {\n <div class=\"media-request__container\">\n @if (tag.presentOrEdit) {\n <div style=\"display: flex; flex-direction: column; gap: 5px\">\n <span class=\"w-100\">Граница ширины: {{request.screenWidth}}</span>\n <span class=\"w-100\">Максимальная высота: {{request.maxImageHeight}}</span>\n </div>\n }\n\n @if (!tag.presentOrEdit) {\n <div style=\"width: 100%\">\n <mat-form-field class=\"w-100\">\n <mat-label>\n Граница ширины\n </mat-label>\n <input matInput placeholder=\"Граница ширины\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.screenWidth\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n Максимальная высота\n </mat-label>\n <input matInput placeholder=\" Максимальная высота\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.maxImageHeight\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n </div>\n\n <button (click)=\"deleteMediaRequest($index)\" class=\"w-30\" mat-icon-button color=\"warn\">\n <mat-icon>delete</mat-icon>\n </button>\n }\n </div>\n }\n </div>\n }\n</div>\n\n@if (!tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\"></div>\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 <div style=\"height: 10px;\"></div>\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 <div [hidden]=\"searchOrEdit !== 'edit'\">\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n Идентификатор файла\n </mat-label>\n <input matInput placeholder=\"Идентификатор файла\" new-autocomplete=\"off\" autocomplete=\"off\"\n type=\"number\"\n [(ngModel)]=\"tag.attributes['file-id']\"\n (ngModelChange)=\"removeImageError()\">\n </mat-form-field>\n </div>\n </div>\n </div>\n}\n","import { HtmlRawTagDataConsts } from '../../../extensions/HtmlRawTagDataConsts';\nimport { FileImageTagDataConsts } from '../../../extensions';\nimport { TagItem } from '../../../models/models';\nimport {ExternalVideoTagDataConsts} from \"../../../extensions\";\nimport {DownloadButtonTagDataConsts} from \"../../../extensions/DownloadButtonMethods\";\n\nexport class DefaultTags {\n\n static textTags: TagItem[] = [\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 tags: TagItem[] = [\n { tag: FileImageTagDataConsts.TagName, displayValue: 'Изображение' },\n { tag: ExternalVideoTagDataConsts.TagName, displayValue: 'Внешнее видео' },\n { tag: DownloadButtonTagDataConsts.TagName, displayValue: 'Кнопка для скачивания' },\n ...DefaultTags.textTags\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","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {MatFormField, MatFormFieldModule} from \"@angular/material/form-field\";\nimport {MatInput} from \"@angular/material/input\";\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\nimport {HtmlBodyTag} from \"../../../models/models\";\nimport {XmlTagDownloadFileButtonComponent} from \"../../xml-tags/xml-tag-download-file-button/xml-tag-download-file-button.component\";\nimport {DownloadButtonTagData} from \"../../../extensions/DownloadButtonMethods\";\n\n@Component({\n selector: 'croco-html-download-file-button-block',\n standalone: true,\n imports: [\n MatFormField,\n MatInput,\n ReactiveFormsModule,\n FormsModule,\n XmlTagDownloadFileButtonComponent,\n MatFormFieldModule\n ],\n templateUrl: './download-file-button-block.component.html',\n styleUrl: './download-file-button-block.component.css'\n})\nexport class DownloadFileButtonBlockComponent {\n\n @Input()\n tag: HtmlBodyTag;\n\n @Output()\n onTagUpdated = new EventEmitter<HtmlBodyTag>();\n\n tagData: DownloadButtonTagData = {\n link: '',\n title: ''\n };\n\n ngOnInit(): void {\n this.tagData.link = (this.tag.attributes as DownloadButtonTagData).link;\n this.tagData.title = (this.tag.attributes as DownloadButtonTagData).title;\n }\n\n linkChanged(){\n this.tag.attributes = this.tagData;\n }\n}\n","@if (tag.presentOrEdit) {\n <div>\n <div>\n Ссылка для скачивания: {{tagData.link}}\n </div>\n <div style=\"height: 10px;\"></div>\n <div>\n Текст кнопки: {{tagData.title}}\n </div>\n <div style=\"height: 20px;\"></div>\n <croco-html-xml-tag-download-file-button [tagData]=\"tagData\"></croco-html-xml-tag-download-file-button>\n </div>\n}\n\n@if (!tag.presentOrEdit) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n Ссылка на скачивание\n </mat-label>\n <input matInput placeholder=\"Ссылка на скачивание\"\n autocomplete=\"off\"\n [(ngModel)]=\"tagData.link\"\n (ngModelChange)=\"linkChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n Текст на кнопке\n </mat-label>\n <input matInput placeholder=\"Текст на кнопке\"\n autocomplete=\"off\"\n [(ngModel)]=\"tagData.title\"\n (ngModelChange)=\"linkChanged()\">\n </mat-form-field>\n </div>\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { HtmlBodyTag } from '../../../models/models';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonToggleGroup, MatButtonToggle } from '@angular/material/button-toggle';\n\n@Component({\n selector: 'croco-html-text-editor',\n templateUrl: './text-editor.component.html',\n styleUrls: ['./text-editor.component.css'],\n standalone: true,\n imports: [MatButtonToggleGroup, FormsModule, MatButtonToggle, MatIcon, MatFormField, MatLabel, MatInput, CdkTextareaAutosize]\n})\nexport class TextEditorComponent 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 getInnerHtml(){\n return `<${this.tag.tagDescription.tag}>${this.tag.innerHtml}<${this.tag.tagDescription.tag}/>`;\n }\n}\n","@if (tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\">\n </div>\n @if (tag.attributes['h-align'] === 'left') {\n <div style=\"text-align: left;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n @if (tag.attributes['h-align'] === 'right') {\n <div style=\"text-align: right;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n @if (tag.attributes['h-align'] === 'center') {\n <div style=\"text-align: center;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n </div>\n}\n\n@if (!tag.presentOrEdit) {\n <div>\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 <div style=\"height: 10px;\">\n </div>\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>Внутренняя разметка текстового тега</mat-label>\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}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TextTags } from '../../../extensions/TextMethods';\nimport { HtmlBodyTag } from '../../../models/models';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { HtmlRawEditorComponent } from '../html-raw-editor/html-raw-editor.component';\nimport { DownloadFileButtonBlockComponent } from '../download-file-button-block/download-file-button-block.component';\nimport { ImageEditorComponent } from '../image-editor/image-editor.component';\nimport { TextEditorComponent } from '../text-editor/text-editor.component';\nimport { ExternalVideoBlockComponent } from '../external-video-block/external-video-block.component';\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 standalone: true,\n imports: [\n TextEditorComponent,\n ImageEditorComponent,\n DownloadFileButtonBlockComponent,\n HtmlRawEditorComponent,\n MatIconButton,\n MatIcon,\n ExternalVideoBlockComponent\n ]\n})\nexport class MainEditorBlockComponent implements OnInit {\n\n textTags = TextTags.allTextTags;\n\n @Input()\n tag: HtmlBodyTag;\n\n @Output()\n onTagSaved = new EventEmitter<HtmlBodyTag>();\n\n @Output()\n onTagRemoved = new EventEmitter<HtmlBodyTag>();\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 @if (textTags.includes(tag.tagDescription.tag)) {\n <div>\n <croco-html-text-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-text-editor>\n </div>\n }\n\n @if (tag.tagDescription.tag === 'file-image') {\n <div>\n <croco-html-image-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-image-editor>\n </div>\n }\n\n @if (tag.tagDescription.tag === 'external-video') {\n <div>\n <croco-html-external-video-block (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-external-video-block>\n </div>\n }\n\n @if (tag.tagDescription.tag === 'download-file-button') {\n <div>\n <croco-html-download-file-button-block (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-download-file-button-block>\n </div>\n }\n\n @if (tag.tagDescription.tag === 'html-raw') {\n <div>\n <croco-html-html-raw-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-html-raw-editor>\n </div>\n }\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 @if (tag.presentOrEdit) {\n <button (click)=\"tag.presentOrEdit = false\" mat-icon-button>\n <mat-icon>edit</mat-icon>\n </button>\n }\n @if (!tag.presentOrEdit) {\n <button (click)=\"save()\" mat-icon-button>\n <mat-icon>save</mat-icon>\n </button>\n }\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>\n","import { CdkDragDrop, moveItemInArray, CdkDropList, CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component, ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport {\n BodyTagsExtensions,\n ExternalVideoSupportedTypes,\n TextTags\n} from '../../../extensions';\nimport { FileImageTagDataConsts } from '../../../extensions';\nimport {\n ExternalVideoTagDataConsts,\n ExternalVideoPlayers\n} from '../../../extensions';\nimport { XmlExtensions } from '../../../extensions';\nimport { TagItem, HtmlBodyTag } from '../../../models/models';\nimport { FilePostingStarted } from '../../upload-files-btn/upload-files-btn.component';\nimport { DefaultTags } from './DefaultTags';\nimport { AlignmentsData, EAlignments } from \"./DefaultAligments\";\nimport { CrocoHtmlOptionsToken } from '../../../consts';\nimport { CrocoHtmlOptions } from '../../../extensions/HtmlExtractionMethods';\nimport {DownloadButtonTagDataConsts} from \"../../../extensions/DownloadButtonMethods\";\nimport { MainEditorBlockComponent } from '../main-editor-block/main-editor-block.component';\nimport { AddFilesBtnComponent } from '../../add-files-btn/add-files-btn.component';\nimport { MatOption } from '@angular/material/core';\nimport { MatSelect } from '@angular/material/select';\nimport { FormsModule } from '@angular/forms';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatButton } from '@angular/material/button';\nimport { MatCard, MatCardContent } from '@angular/material/card';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\n\nexport const defaultLinkYouTube = \"https://www.youtube.com/embed/4CtSAnJDfsI?si=scyBNJa0Hs2t5aLE\";\nexport const defaultLinkVk = \"https://vk.com/video_ext.php?oid=-22822305&id=456241864&hd=2\";\nexport const defaultLinkForDownload = \"https://storage.yandexcloud.net/mega-academy/presentation.pdf\";\n\n@Component({\n selector: 'croco-visual-editor',\n templateUrl: './visual-editor.component.html',\n styleUrls: ['./visual-editor.component.css'],\n standalone: true,\n imports: [MatProgressSpinner, MatCard, MatCardContent, MatButton, MatFormField, MatLabel, MatInput, CdkTextareaAutosize, FormsModule, MatSelect, MatOption, AddFilesBtnComponent, CdkDropList, CdkDrag, CdkDragHandle, MainEditorBlockComponent]\n})\nexport class VisualEditorComponent implements OnInit, AfterViewInit {\n @ViewChild('textArea') textArea: ElementRef;\n\n isLoading = false;\n loadingText = \"Идёт загрузка\";\n isActiveAddText = false;\n text = '';\n\n alignment = EAlignments.Left;\n textTag = DefaultTags.textTags[0].tag;\n textTagOptions = DefaultTags.textTags\n alignmentOptions = AlignmentsData\n\n @Input()\n showMarkUp = true;\n\n tags: TagItem[] = [];\n videoPlayers = ExternalVideoPlayers\n selectedValue: string;\n selectedVideoPlayer: string;\n protected readonly ExternalVideoTagDataConsts = ExternalVideoTagDataConsts;\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 saveBodyTags: HtmlBodyTag[] = [];\n\n constructor(\n private readonly _cdref: ChangeDetectorRef,\n @Inject(CrocoHtmlOptionsToken) private readonly _options: CrocoHtmlOptions) { }\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 (TextTags.allTextTags.includes(tagDescription.tag)) {\n attrs[\"h-align\"] = EAlignments.Left;\n innerHtml = \"Введите ваш текст\";\n }\n else if (tagDescription.tag == ExternalVideoTagDataConsts.TagName) {\n attrs[ExternalVideoTagDataConsts.VideoTypeAttrName] = this.selectedVideoPlayer;\n attrs[ExternalVideoTagDataConsts.LinkAttrName] = this.selectedVideoPlayer === ExternalVideoSupportedTypes.VkVideo ? defaultLinkVk : defaultLinkYouTube;\n }\n else if (tagDescription.tag == FileImageTagDataConsts.TagName) {\n attrs[FileImageTagDataConsts.ScreenMediaRequest] = FileImageTagDataConsts.DefaultValueForFileImage;\n }\n else if (tagDescription.tag == DownloadButtonTagDataConsts.TagName) {\n attrs[DownloadButtonTagDataConsts.LinkAttrName] = defaultLinkForDownload\n attrs[DownloadButtonTagDataConsts.TitleAttrName] = 'Скачать'\n }\n else {\n attrs[FileImageTagDataConsts.FileIdAttrName] = null;\n }\n this.bodyTags.push({\n tagDescription,\n innerHtml,\n attributes: attrs,\n presentOrEdit: true\n });\n\n this.recalculateHtml();\n }\n\n addText(): void {\n this.isActiveAddText = !this.isActiveAddText;\n this.saveBodyTags = JSON.parse(JSON.stringify(this.bodyTags));\n if (this.isActiveAddText) {\n setTimeout(() => {\n this.textArea.nativeElement.focus();\n })\n }\n this.resetTextStyle();\n }\n\n closeText(): void {\n this.isActiveAddText = !this.isActiveAddText;\n this.bodyTags = JSON.parse(JSON.stringify(this.saveBodyTags));\n this.resetTextStyle();\n }\n\n resetTextStyle(): void {\n this.text = '';\n this.alignment = EAlignments.Left;\n this.textTag = DefaultTags.textTags[0].tag;\n }\n\n modelChanged() {\n let lines = this.text.split('\\n');\n this.bodyTags = JSON.parse(JSON.stringify(this.saveBodyTags));\n let tagDescription = this.tags\n .find(x => x.tag === this.textTag);\n\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].length > 0) {\n this.bodyTags.push({\n tagDescription,\n innerHtml: lines[i],\n attributes: {\n \"h-align\": `${this.alignment}`\n },\n presentOrEdit: true\n });\n this.recalculateHtml();\n }\n }\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 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, this._options);\n }\n\n ngOnInit(): void {\n this.recalculateBodyTags();\n\n this.tags = DefaultTags.getTags(this.useHtmlRaw);\n this.selectedValue = this.tags[0].tag;\n this.selectedVideoPlayer = this.videoPlayers[0].type;\n }\n}\n","@if (isLoading) {\n <div>\n <div>\n <mat-spinner style=\"margin:0 auto;\"></mat-spinner>\n <div style=\"text-align: center;\">{{loadingText}}</div>\n </div>\n <div style=\"height: 10px;\"></div>\n </div>\n}\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n @if (!isActiveAddText) {\n <button (click)=\"addText()\" class=\"w-100\" mat-stroked-button>\n Добавить текст\n </button>\n }\n @if (isActiveAddText) {\n <mat-form-field class=\"w-100\" >\n <mat-label>Текст</mat-label>\n <textarea\n #autosize=\"cdkTextareaAutosize\"\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n placeholder=\"Текст\"\n #textArea\n [(ngModel)]=\"text\"\n (ngModelChange)=\"modelChanged()\"\n ></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"outline\" class=\"w-100\">\n <mat-label>Тег для текста</mat-label>\n <mat-select [(ngModel)]=\"textTag\" (ngModelChange)=\"modelChanged()\">\n @for (option of textTagOptions; track option) {\n <mat-option value=\"{{ option.tag }}\">\n {{ option.displayValue }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\" class=\"w-100\">\n <mat-label>Горизонтальное выравнивание</mat-label>\n <mat-select [(ngModel)]=\"alignment\" (ngModelChange)=\"modelChanged()\">\n @for (option of alignmentOptions; track option) {\n <mat-option value=\"{{ option.value }}\">\n {{ option.text }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n <div class=\"d-flex flex-nowrap justify-content-end w-100\">\n @if (isActiveAddText) {\n <button (click)=\"addText()\" class=\"w-20\" style=\"margin-right: 10px\" mat-flat-button color=\"primary\">\n Добавить\n </button>\n }\n @if (isActiveAddText) {\n <button (click)=\"closeText()\" class=\"w-20\" mat-flat-button color=\"warn\" >\n Отменить\n </button>\n }\n </div>\n\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>Выберите тег</mat-label>\n <mat-select [(ngModel)]=\"selectedValue\">\n @for (tag of tags; track tag) {\n <mat-option [value]=\"tag.tag\">\n {{tag.displayValue}}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n @if (selectedValue === ExternalVideoTagDataConsts.TagName) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>Выберите видеоплеер</mat-label>\n <mat-select [(ngModel)]=\"selectedVideoPlayer\">\n @for (videoPlayer of videoPlayers; track videoPlayer.type) {\n <mat-option [value]=\"videoPlayer.type\">\n {{videoPlayer.displayValue}}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n }\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-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <croco-html-add-files-btn (filesTagsReady)=\"filesTagsReadyHandler($event)\"\n (postFilesStarted)=\"postFilesStartedEventHandler($event)\" class=\"w-100\">\n </croco-html-add-files-btn>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\">\n @for (tag of bodyTags; track tag; let i = $index) {\n <div cdkDrag>\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\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 <div class=\"badge\">\n {{tag.tagDescription.displayValue}}\n </div>\n </div>\n </div>\n <div style=\"height: 15px;\"></div>\n <croco-html-main-editor-block [tag]=\"tag\" (onTagSaved)=\"onTagSavedHandler($event)\"\n (onTagRemoved)=\"onTagRemovedHandler(i)\">\n </croco-html-main-editor-block>\n </mat-card-content>\n </mat-card>\n <div style=\"height: 10px;\">\n </div>\n </div>\n }\n </div>\n</div>\n\n\n\n\n\n","import { Inject, Pipe, PipeTransform } from '@angular/core';\nimport { CrocoHtmlOptions, HtmlExtractionMethods } from '../extensions/HtmlExtractionMethods';\nimport { InterfaceBlock } from \"../extensions/InterfaceBlock\";\nimport { CrocoHtmlOptionsToken } from '../consts';\n\n@Pipe({\n name: 'topreview',\n standalone: true\n})\nexport class ToPreviewPipe implements PipeTransform {\n\n constructor(@Inject(CrocoHtmlOptionsToken) private readonly _options: CrocoHtmlOptions) {\n }\n\n transform(value: string): InterfaceBlock[] {\n return HtmlExtractionMethods.transformHtmlStringToBlocks(value, this._options);\n }\n}\n","import { AfterContentChecked, AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ClipboardService } from 'ngx-clipboard';\nimport { VisualEditorComponent } from '../visual-editor/visual-editor.component';\nimport { ToPreviewPipe } from '../../../pipes/to-preview.pipe';\nimport { XmlTagViewComponent } from '../../xml-tags/xml-tag-view/xml-tag-view.component';\nimport { MatCard, MatCardContent } from '@angular/material/card';\nimport { MatButton } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatTabGroup, MatTab } from '@angular/material/tabs';\n\n@Component({\n selector: 'croco-html-main-editor',\n templateUrl: './main-editor.component.html',\n styleUrls: ['./main-editor.component.css'],\n standalone: true,\n imports: [MatTabGroup, MatTab, VisualEditorComponent, MatFormField, MatLabel, MatInput, CdkTextareaAutosize, FormsModule, MatButton, MatCard, MatCardContent, XmlTagViewComponent, ToPreviewPipe]\n})\nexport class MainEditorComponent implements OnInit, AfterContentChecked, AfterViewInit {\n\n visualEditorRendered = false;\n \n @ViewChild(\"visualEditor\", { static: true })\n visualEditor: VisualEditorComponent;\n\n @Input()\n showMarkUp = true;\n\n @Input()\n useHtmlRaw = false;\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 ngAfterViewInit(): void {\n this.recalculateBodyTags();\n }\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 this.visualEditor.recalculateBodyTags();\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 @if (visualEditorRendered) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>Исходный код</mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"Исходный код\" [(ngModel)]=\"html\"\n (ngModelChange)=\"textAreaModelChangedHandler()\"></textarea>\n </mat-form-field>\n </div>\n }\n\n <button (click)=\"copyMarkUp()\"\n mat-raised-button color=\"primary\">\n Копировать разметку\n </button>\n </mat-tab>\n <mat-tab label=\"Результат\">\n <mat-card style=\"padding: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <croco-html-xml-tag-view [data]=\"html | topreview\">\n </croco-html-xml-tag-view>\n </mat-card-content>\n </mat-card>\n </mat-tab>\n</mat-tab-group>\n","import { Component, Input } from '@angular/core';\nimport { ToPreviewPipe } from '../../pipes/to-preview.pipe';\nimport { XmlTagViewComponent } from '../xml-tags/xml-tag-view/xml-tag-view.component';\n\n@Component({\n selector: 'croco-html-view',\n templateUrl: './html-view.component.html',\n styleUrls: ['./html-view.component.css'],\n standalone: true,\n imports: [XmlTagViewComponent, ToPreviewPipe]\n})\nexport class HtmlViewComponent {\n @Input()\n html: string = \"<body></body>\";\n}\n","<croco-html-xml-tag-view [data]=\"html | topreview\"></croco-html-xml-tag-view>","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'tagToSpan',\n standalone: true\n})\nexport class TagToSpanPipe implements PipeTransform {\n transform(value: string[]): string {\n return value.map(x => (`<b>${x}</b>`)).join(' | ')\n }\n}","import { Inject, Pipe, PipeTransform } from '@angular/core';\nimport { BodyTagsExtensions } from '../extensions/BodyTagsExtensions';\nimport { HtmlBodyTag } from '../models/models';\nimport { CrocoHtmlOptions } from '../extensions/HtmlExtractionMethods';\nimport { CrocoHtmlOptionsToken } from '../consts';\n\n@Pipe({\n name: 'tohtmlbodytags',\n standalone: true\n})\nexport class ToHtmlBodyTagsPipe implements PipeTransform {\n\n constructor(@Inject(CrocoHtmlOptionsToken) private readonly _options: CrocoHtmlOptions) {\n }\n\n transform(value: string): HtmlBodyTag[] {\n return BodyTagsExtensions.getBodyTags(value, this._options);\n }\n}\n","import { Inject, Pipe, PipeTransform } from '@angular/core';\nimport { HtmlExtractionMethods, CrocoHtmlOptions } from '../extensions/HtmlExtractionMethods';\nimport { InterfaceBlock } from \"../extensions/InterfaceBlock\";\nimport { CrocoHtmlOptionsToken } from '../consts';\n\n@Pipe({\n name: 'topreviewhtml',\n standalone: true\n})\nexport class ToPreviewHtmlPipe implements PipeTransform {\n\n constructor(@Inject(CrocoHtmlOptionsToken) private readonly _options: CrocoHtmlOptions) {\n }\n\n transform(value: string): InterfaceBlock[] {\n return HtmlExtractionMethods.transformHtmlStringToBlocks(value, this._options);\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\";\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, ToPreviewHtmlPipe, ToPreviewPipe } from \"./pipes\";\nimport { FileImageTagViewComponent, UploadFilesBtnComponent } from \"./components\";\nimport { HtmlRawViewComponent } from \"./components/xml-tags/html-raw-view/html-raw-view.component\";\nimport { HtmlViewComponent } from \"./components/html-view/html-view.component\";\n\nexport const EditorComponents = [\n MainEditorComponent,\n FileIdSelectComponent,\n TextEditorComponent,\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 HtmlRawViewComponent,\n FileImageTagViewComponent,\n HtmlViewComponent\n];\n\nexport const CrocoPipes = [\n RichTextToHtmlPipe,\n TagToSpanPipe,\n ToPreviewPipe,\n ToHtmlBodyTagsPipe,\n ToPreviewHtmlPipe\n]\n\nexport const CrocoHtmlDeclarations = [\n UploadFilesBtnComponent,\n HtmlViewComponent,\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 \".\";\nimport {\n VkVideoPlayerComponent\n} from \"./components/editor/external-video-block/vk-video-player/vk-video-player.component\";\nimport { ErrorBannerComponent } from \"./components/error-banner/error-banner.component\";\nimport {\n YoutubeVideoPlayerComponent\n} from \"./components/editor/external-video-block/youtube-video-player/youtube-video-player.component\";\nimport { DownloadFileButtonBlockComponent } from \"./components/editor/download-file-button-block/download-file-button-block.component\";\nimport {\n XmlTagDownloadFileButtonComponent\n} from \"./components/xml-tags/xml-tag-download-file-button/xml-tag-download-file-button.component\";\n\n@NgModule({\n exports: [\n ...CrocoHtmlDeclarations,\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgSelectModule,\n ...MaterialModules,\n ErrorBannerComponent,\n VkVideoPlayerComponent,\n YoutubeVideoPlayerComponent,\n DownloadFileButtonBlockComponent,\n XmlTagDownloadFileButtonComponent,\n ...CrocoHtmlDeclarations\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';\nexport * from './lib/models/models'\nexport * from './lib/consts'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FileUploadService","i1","i1.BlobCreateService","i2","i3","i1.ScreenWidthService","i30.UploadFilesBtnComponent","i31.HtmlViewComponent","i32.XmlTagTableViewComponent","i33.XmlTagViewComponent","i34.XmlTagRichTextViewComponent","i35.XmlTagHtmlViewComponent","i36.XmlTagTextViewComponent","i37.XmlTagHeaderTextViewComponent","i38.XmlTagHeaderInnerTextViewComponent","i39.XmlTagExternalVideoComponent","i40.HtmlRawViewComponent","i41.FileImageTagViewComponent","i42.MainEditorComponent","i43.FileIdSelectComponent","i44.TextEditorComponent","i45.ImageEditorComponent","i46.MainEditorBlockComponent","i47.VisualEditorComponent","i48.AddFilesBtnComponent","i49.HtmlRawEditorComponent","i50.RichTextToHtmlPipe","i51.TagToSpanPipe","i52.ToPreviewPipe","i53.ToHtmlBodyTagsPipe","i54.ToPreviewHtmlPipe"],"mappings":"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"}
|