@kolkov/angular-editor 1.1.5 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"kolkov-angular-editor.js","sources":["../../../projects/angular-editor/src/lib/angular-editor.service.ts","../../../projects/angular-editor/src/lib/config.ts","../../../projects/angular-editor/src/lib/angular-editor-toolbar.component.ts","../../../projects/angular-editor/src/lib/utils.ts","../../../projects/angular-editor/src/lib/angular-editor.component.ts","../../../projects/angular-editor/src/lib/ae-select/ae-select.component.ts","../../../projects/angular-editor/src/lib/angular-editor.module.ts","../../../projects/angular-editor/src/public-api.ts","../../../projects/angular-editor/src/kolkov-angular-editor.ts"],"sourcesContent":["import {Inject, Injectable} from '@angular/core';\r\nimport {HttpClient, HttpEvent} from '@angular/common/http';\r\nimport {Observable} from 'rxjs';\r\nimport {DOCUMENT} from '@angular/common';\r\nimport {CustomClass} from './config';\r\n\r\nexport interface UploadResponse {\r\n imageUrl: string;\r\n}\r\n\r\n@Injectable()\r\nexport class AngularEditorService {\r\n\r\n savedSelection: Range | null;\r\n selectedText: string;\r\n uploadUrl: string;\r\n uploadWithCredentials: boolean;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n @Inject(DOCUMENT) private doc: any\r\n ) { }\r\n\r\n /**\r\n * Executed command from editor header buttons exclude toggleEditorMode\r\n * @param command string from triggerCommand\r\n */\r\n executeCommand(command: string) {\r\n const commands = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'pre'];\r\n if (commands.includes(command)) {\r\n this.doc.execCommand('formatBlock', false, command);\r\n return;\r\n }\r\n this.doc.execCommand(command, false, null);\r\n }\r\n\r\n /**\r\n * Create URL link\r\n * @param url string from UI prompt\r\n */\r\n createLink(url: string) {\r\n if (!url.includes('http')) {\r\n this.doc.execCommand('createlink', false, url);\r\n } else {\r\n const newUrl = '<a href=\"' + url + '\" target=\"_blank\">' + this.selectedText + '</a>';\r\n this.insertHtml(newUrl);\r\n }\r\n }\r\n\r\n /**\r\n * insert color either font or background\r\n *\r\n * @param color color to be inserted\r\n * @param where where the color has to be inserted either text/background\r\n */\r\n insertColor(color: string, where: string): void {\r\n const restored = this.restoreSelection();\r\n if (restored) {\r\n if (where === 'textColor') {\r\n this.doc.execCommand('foreColor', false, color);\r\n } else {\r\n this.doc.execCommand('hiliteColor', false, color);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Set font name\r\n * @param fontName string\r\n */\r\n setFontName(fontName: string) {\r\n this.doc.execCommand('fontName', false, fontName);\r\n }\r\n\r\n /**\r\n * Set font size\r\n * @param fontSize string\r\n */\r\n setFontSize(fontSize: string) {\r\n this.doc.execCommand('fontSize', false, fontSize);\r\n }\r\n\r\n /**\r\n * Create raw HTML\r\n * @param html HTML string\r\n */\r\n insertHtml(html: string): void {\r\n\r\n const isHTMLInserted = this.doc.execCommand('insertHTML', false, html);\r\n\r\n if (!isHTMLInserted) {\r\n throw new Error('Unable to perform the operation');\r\n }\r\n }\r\n\r\n /**\r\n * save selection when the editor is focussed out\r\n */\r\n public saveSelection = (): void => {\r\n if (this.doc.getSelection) {\r\n const sel = this.doc.getSelection();\r\n if (sel.getRangeAt && sel.rangeCount) {\r\n this.savedSelection = sel.getRangeAt(0);\r\n this.selectedText = sel.toString();\r\n }\r\n } else if (this.doc.getSelection && this.doc.createRange) {\r\n this.savedSelection = document.createRange();\r\n } else {\r\n this.savedSelection = null;\r\n }\r\n }\r\n\r\n /**\r\n * restore selection when the editor is focused in\r\n *\r\n * saved selection when the editor is focused out\r\n */\r\n restoreSelection(): boolean {\r\n if (this.savedSelection) {\r\n if (this.doc.getSelection) {\r\n const sel = this.doc.getSelection();\r\n sel.removeAllRanges();\r\n sel.addRange(this.savedSelection);\r\n return true;\r\n } else if (this.doc.getSelection /*&& this.savedSelection.select*/) {\r\n // this.savedSelection.select();\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * setTimeout used for execute 'saveSelection' method in next event loop iteration\r\n */\r\n public executeInNextQueueIteration(callbackFn: (...args: any[]) => any, timeout = 1e2): void {\r\n setTimeout(callbackFn, timeout);\r\n }\r\n\r\n /** check any selection is made or not */\r\n private checkSelection(): any {\r\n\r\n const selectedText = this.savedSelection.toString();\r\n\r\n if (selectedText.length === 0) {\r\n throw new Error('No Selection Made');\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Upload file to uploadUrl\r\n * @param file The file\r\n */\r\n uploadImage(file: File): Observable<HttpEvent<UploadResponse>> {\r\n\r\n const uploadData: FormData = new FormData();\r\n\r\n uploadData.append('file', file, file.name);\r\n\r\n return this.http.post<UploadResponse>(this.uploadUrl, uploadData, {\r\n reportProgress: true,\r\n observe: 'events',\r\n withCredentials: this.uploadWithCredentials,\r\n });\r\n }\r\n\r\n /**\r\n * Insert image with Url\r\n * @param imageUrl The imageUrl.\r\n */\r\n insertImage(imageUrl: string) {\r\n this.doc.execCommand('insertImage', false, imageUrl);\r\n }\r\n\r\n setDefaultParagraphSeparator(separator: string) {\r\n this.doc.execCommand('defaultParagraphSeparator', false, separator);\r\n }\r\n\r\n createCustomClass(customClass: CustomClass) {\r\n let newTag = this.selectedText;\r\n if (customClass) {\r\n const tagName = customClass.tag ? customClass.tag : 'span';\r\n newTag = '<' + tagName + ' class=\"' + customClass.class + '\">' + this.selectedText + '</' + tagName + '>';\r\n }\r\n this.insertHtml(newTag);\r\n }\r\n\r\n insertVideo(videoUrl: string) {\r\n if (videoUrl.match('www.youtube.com')) {\r\n this.insertYouTubeVideoTag(videoUrl);\r\n }\r\n if (videoUrl.match('vimeo.com')) {\r\n this.insertVimeoVideoTag(videoUrl);\r\n }\r\n }\r\n\r\n private insertYouTubeVideoTag(videoUrl: string): void {\r\n const id = videoUrl.split('v=')[1];\r\n const imageUrl = `https://img.youtube.com/vi/${id}/0.jpg`;\r\n const thumbnail = `\r\n <div style='position: relative'>\r\n <img style='position: absolute; left:200px; top:140px'\r\n src=\"https://img.icons8.com/color/96/000000/youtube-play.png\"/>\r\n <a href='${videoUrl}' target='_blank'>\r\n <img src=\"${imageUrl}\" alt=\"click to watch\"/>\r\n </a>\r\n </div>`;\r\n this.insertHtml(thumbnail);\r\n }\r\n\r\n private insertVimeoVideoTag(videoUrl: string): void {\r\n const sub = this.http.get<any>(`https://vimeo.com/api/oembed.json?url=${videoUrl}`).subscribe(data => {\r\n const imageUrl = data.thumbnail_url_with_play_button;\r\n const thumbnail = `<div>\r\n <a href='${videoUrl}' target='_blank'>\r\n <img src=\"${imageUrl}\" alt=\"${data.title}\"/>\r\n </a>\r\n </div>`;\r\n this.insertHtml(thumbnail);\r\n sub.unsubscribe();\r\n });\r\n }\r\n\r\n nextNode(node) {\r\n if (node.hasChildNodes()) {\r\n return node.firstChild;\r\n } else {\r\n while (node && !node.nextSibling) {\r\n node = node.parentNode;\r\n }\r\n if (!node) {\r\n return null;\r\n }\r\n return node.nextSibling;\r\n }\r\n }\r\n\r\n getRangeSelectedNodes(range, includePartiallySelectedContainers) {\r\n let node = range.startContainer;\r\n const endNode = range.endContainer;\r\n let rangeNodes = [];\r\n\r\n // Special case for a range that is contained within a single node\r\n if (node === endNode) {\r\n rangeNodes = [node];\r\n } else {\r\n // Iterate nodes until we hit the end container\r\n while (node && node !== endNode) {\r\n rangeNodes.push( node = this.nextNode(node) );\r\n }\r\n\r\n // Add partially selected nodes at the start of the range\r\n node = range.startContainer;\r\n while (node && node !== range.commonAncestorContainer) {\r\n rangeNodes.unshift(node);\r\n node = node.parentNode;\r\n }\r\n }\r\n\r\n // Add ancestors of the range container, if required\r\n if (includePartiallySelectedContainers) {\r\n node = range.commonAncestorContainer;\r\n while (node) {\r\n rangeNodes.push(node);\r\n node = node.parentNode;\r\n }\r\n }\r\n\r\n return rangeNodes;\r\n }\r\n\r\n getSelectedNodes() {\r\n const nodes = [];\r\n if (this.doc.getSelection) {\r\n const sel = this.doc.getSelection();\r\n for (let i = 0, len = sel.rangeCount; i < len; ++i) {\r\n nodes.push.apply(nodes, this.getRangeSelectedNodes(sel.getRangeAt(i), true));\r\n }\r\n }\r\n return nodes;\r\n }\r\n\r\n replaceWithOwnChildren(el) {\r\n const parent = el.parentNode;\r\n while (el.hasChildNodes()) {\r\n parent.insertBefore(el.firstChild, el);\r\n }\r\n parent.removeChild(el);\r\n }\r\n\r\n removeSelectedElements(tagNames) {\r\n const tagNamesArray = tagNames.toLowerCase().split(',');\r\n this.getSelectedNodes().forEach((node) => {\r\n if (node.nodeType === 1 &&\r\n tagNamesArray.indexOf(node.tagName.toLowerCase()) > -1) {\r\n // Remove the node and replace it with its children\r\n this.replaceWithOwnChildren(node);\r\n }\r\n });\r\n }\r\n}\r\n","export interface CustomClass {\r\n name: string;\r\n class: string;\r\n tag?: string;\r\n}\r\n\r\nexport interface Font {\r\n name: string;\r\n class: string;\r\n}\r\n\r\nexport interface AngularEditorConfig {\r\n editable?: boolean;\r\n spellcheck?: boolean;\r\n height?: 'auto' | string;\r\n minHeight?: '0' | string;\r\n maxHeight?: 'auto' | string;\r\n width?: 'auto' | string;\r\n minWidth?: '0' | string;\r\n translate?: 'yes' | 'now' | string;\r\n enableToolbar?: boolean;\r\n showToolbar?: boolean;\r\n placeholder?: string;\r\n defaultParagraphSeparator?: string;\r\n defaultFontName?: string;\r\n defaultFontSize?: '1' | '2' | '3' | '4' | '5' | '6' | '7' | string;\r\n uploadUrl?: string;\r\n uploadWithCredentials?: boolean;\r\n fonts?: Font[];\r\n customClasses?: CustomClass[];\r\n sanitize?: boolean;\r\n toolbarPosition?: 'top' | 'bottom';\r\n outline?: boolean;\r\n toolbarHiddenButtons?: string[][];\r\n}\r\n\r\nexport const angularEditorConfig: AngularEditorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: 'auto',\r\n minHeight: '0',\r\n maxHeight: 'auto',\r\n width: 'auto',\r\n minWidth: '0',\r\n translate: 'yes',\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: 'Enter text here...',\r\n defaultParagraphSeparator: '',\r\n defaultFontName: '',\r\n defaultFontSize: '',\r\n fonts: [\r\n {class: 'arial', name: 'Arial'},\r\n {class: 'times-new-roman', name: 'Times New Roman'},\r\n {class: 'calibri', name: 'Calibri'},\r\n {class: 'comic-sans-ms', name: 'Comic Sans MS'}\r\n ],\r\n uploadUrl: 'v1/image',\r\n uploadWithCredentials: false,\r\n sanitize: true,\r\n toolbarPosition: 'top',\r\n outline: true,\r\n /*toolbarHiddenButtons: [\r\n ['bold', 'italic', 'underline', 'strikeThrough', 'superscript', 'subscript'],\r\n ['heading', 'fontName', 'fontSize', 'color'],\r\n ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', 'indent', 'outdent'],\r\n ['cut', 'copy', 'delete', 'removeFormat', 'undo', 'redo'],\r\n ['paragraph', 'blockquote', 'removeBlockquote', 'horizontalLine', 'orderedList', 'unorderedList'],\r\n ['link', 'unlink', 'image', 'video']\r\n ]*/\r\n};\r\n","import {Component, ElementRef, EventEmitter, Inject, Input, Output, Renderer2, ViewChild} from '@angular/core';\r\nimport {AngularEditorService} from './angular-editor.service';\r\nimport {HttpResponse} from '@angular/common/http';\r\nimport {DOCUMENT} from '@angular/common';\r\nimport {CustomClass} from './config';\r\nimport {SelectOption} from './ae-select/ae-select.component';\r\n\r\n@Component({\r\n selector: 'angular-editor-toolbar',\r\n templateUrl: './angular-editor-toolbar.component.html',\r\n styleUrls: ['./angular-editor-toolbar.component.scss'],\r\n})\r\n\r\nexport class AngularEditorToolbarComponent {\r\n htmlMode = false;\r\n linkSelected = false;\r\n block = 'default';\r\n fontName = 'Times New Roman';\r\n fontSize = '3';\r\n foreColour;\r\n backColor;\r\n\r\n headings: SelectOption[] = [\r\n {\r\n label: 'Heading 1',\r\n value: 'h1',\r\n },\r\n {\r\n label: 'Heading 2',\r\n value: 'h2',\r\n },\r\n {\r\n label: 'Heading 3',\r\n value: 'h3',\r\n },\r\n {\r\n label: 'Heading 4',\r\n value: 'h4',\r\n },\r\n {\r\n label: 'Heading 5',\r\n value: 'h5',\r\n },\r\n {\r\n label: 'Heading 6',\r\n value: 'h6',\r\n },\r\n {\r\n label: 'Heading 7',\r\n value: 'h7',\r\n },\r\n {\r\n label: 'Paragraph',\r\n value: 'p',\r\n },\r\n {\r\n label: 'Predefined',\r\n value: 'pre'\r\n },\r\n {\r\n label: 'Standard',\r\n value: 'div'\r\n },\r\n {\r\n label: 'default',\r\n value: 'default'\r\n }\r\n ];\r\n\r\n fontSizes: SelectOption[] = [\r\n {\r\n label: '1',\r\n value: '1',\r\n },\r\n {\r\n label: '2',\r\n value: '2',\r\n },\r\n {\r\n label: '3',\r\n value: '3',\r\n },\r\n {\r\n label: '4',\r\n value: '4',\r\n },\r\n {\r\n label: '5',\r\n value: '5',\r\n },\r\n {\r\n label: '6',\r\n value: '6',\r\n },\r\n {\r\n label: '7',\r\n value: '7',\r\n }\r\n ];\r\n\r\n customClassId = '-1';\r\n // tslint:disable-next-line:variable-name\r\n _customClasses: CustomClass[];\r\n customClassList: SelectOption[] = [{label: '', value: ''}];\r\n // uploadUrl: string;\r\n\r\n tagMap = {\r\n BLOCKQUOTE: 'indent',\r\n A: 'link'\r\n };\r\n\r\n select = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'P', 'PRE', 'DIV'];\r\n\r\n buttons = ['bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', 'justifyLeft', 'justifyCenter',\r\n 'justifyRight', 'justifyFull', 'indent', 'outdent', 'insertUnorderedList', 'insertOrderedList', 'link'];\r\n\r\n @Input() id: string;\r\n @Input() uploadUrl: string;\r\n @Input() showToolbar: boolean;\r\n @Input() fonts: SelectOption[] = [{label: '', value: ''}];\r\n\r\n @Input()\r\n set customClasses(classes: CustomClass[]) {\r\n if (classes) {\r\n this._customClasses = classes;\r\n this.customClassList = this._customClasses.map((x, i) => ({label: x.name, value: i.toString()}));\r\n this.customClassList.unshift({label: 'Clear Class', value: '-1'});\r\n }\r\n }\r\n\r\n @Input()\r\n set defaultFontName(value: string) {\r\n if (value) {\r\n this.fontName = value;\r\n }\r\n }\r\n\r\n @Input()\r\n set defaultFontSize(value: string) {\r\n if (value) {\r\n this.fontSize = value;\r\n }\r\n }\r\n\r\n @Input() hiddenButtons: string[][];\r\n\r\n @Output() execute: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @ViewChild('fileInput', {static: true}) myInputFile: ElementRef;\r\n\r\n public get isLinkButtonDisabled(): boolean {\r\n return this.htmlMode || !Boolean(this.editorService.selectedText);\r\n }\r\n\r\n constructor(\r\n private r: Renderer2,\r\n private editorService: AngularEditorService,\r\n private er: ElementRef,\r\n @Inject(DOCUMENT) private doc: any\r\n ) {\r\n }\r\n\r\n /**\r\n * Trigger command from editor header buttons\r\n * @param command string from toolbar buttons\r\n */\r\n triggerCommand(command: string) {\r\n this.execute.emit(command);\r\n }\r\n\r\n /**\r\n * highlight editor buttons when cursor moved or positioning\r\n */\r\n triggerButtons() {\r\n if (!this.showToolbar) {\r\n return;\r\n }\r\n this.buttons.forEach(e => {\r\n const result = this.doc.queryCommandState(e);\r\n const elementById = this.doc.getElementById(e + '-' + this.id);\r\n if (result) {\r\n this.r.addClass(elementById, 'active');\r\n } else {\r\n this.r.removeClass(elementById, 'active');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * trigger highlight editor buttons when cursor moved or positioning in block\r\n */\r\n triggerBlocks(nodes: Node[]) {\r\n if (!this.showToolbar) {\r\n return;\r\n }\r\n this.linkSelected = nodes.findIndex(x => x.nodeName === 'A') > -1;\r\n let found = false;\r\n this.select.forEach(y => {\r\n const node = nodes.find(x => x.nodeName === y);\r\n if (node !== undefined && y === node.nodeName) {\r\n if (found === false) {\r\n this.block = node.nodeName.toLowerCase();\r\n found = true;\r\n }\r\n } else if (found === false) {\r\n this.block = 'default';\r\n }\r\n });\r\n\r\n found = false;\r\n if (this._customClasses) {\r\n this._customClasses.forEach((y, index) => {\r\n const node = nodes.find(x => {\r\n if (x instanceof Element) {\r\n return x.className === y.class;\r\n }\r\n });\r\n if (node !== undefined) {\r\n if (found === false) {\r\n this.customClassId = index.toString();\r\n found = true;\r\n }\r\n } else if (found === false) {\r\n this.customClassId = '-1';\r\n }\r\n });\r\n }\r\n\r\n Object.keys(this.tagMap).map(e => {\r\n const elementById = this.doc.getElementById(this.tagMap[e] + '-' + this.id);\r\n const node = nodes.find(x => x.nodeName === e);\r\n if (node !== undefined && e === node.nodeName) {\r\n this.r.addClass(elementById, 'active');\r\n } else {\r\n this.r.removeClass(elementById, 'active');\r\n }\r\n });\r\n\r\n this.foreColour = this.doc.queryCommandValue('ForeColor');\r\n this.fontSize = this.doc.queryCommandValue('FontSize');\r\n this.fontName = this.doc.queryCommandValue('FontName').replace(/\"/g, '');\r\n this.backColor = this.doc.queryCommandValue('backColor');\r\n }\r\n\r\n /**\r\n * insert URL link\r\n */\r\n insertUrl() {\r\n let url = 'https:\\/\\/';\r\n const selection = this.editorService.savedSelection;\r\n if (selection && selection.commonAncestorContainer.parentElement.nodeName === 'A') {\r\n const parent = selection.commonAncestorContainer.parentElement as HTMLAnchorElement;\r\n if (parent.href !== '') {\r\n url = parent.href;\r\n }\r\n }\r\n url = prompt('Insert URL link', url);\r\n if (url && url !== '' && url !== 'https://') {\r\n this.editorService.createLink(url);\r\n }\r\n }\r\n\r\n /**\r\n * insert Video link\r\n */\r\n insertVideo() {\r\n this.execute.emit('');\r\n const url = prompt('Insert Video link', `https://`);\r\n if (url && url !== '' && url !== `https://`) {\r\n this.editorService.insertVideo(url);\r\n }\r\n }\r\n\r\n /** insert color */\r\n insertColor(color: string, where: string) {\r\n this.editorService.insertColor(color, where);\r\n this.execute.emit('');\r\n }\r\n\r\n /**\r\n * set font Name/family\r\n * @param foreColor string\r\n */\r\n setFontName(foreColor: string): void {\r\n this.editorService.setFontName(foreColor);\r\n this.execute.emit('');\r\n }\r\n\r\n /**\r\n * set font Size\r\n * @param fontSize string\r\n */\r\n setFontSize(fontSize: string): void {\r\n this.editorService.setFontSize(fontSize);\r\n this.execute.emit('');\r\n }\r\n\r\n /**\r\n * toggle editor mode (WYSIWYG or SOURCE)\r\n * @param m boolean\r\n */\r\n setEditorMode(m: boolean) {\r\n const toggleEditorModeButton = this.doc.getElementById('toggleEditorMode' + '-' + this.id);\r\n if (m) {\r\n this.r.addClass(toggleEditorModeButton, 'active');\r\n } else {\r\n this.r.removeClass(toggleEditorModeButton, 'active');\r\n }\r\n this.htmlMode = m;\r\n }\r\n\r\n /**\r\n * Upload image when file is selected\r\n */\r\n onFileChanged(event) {\r\n const file = event.target.files[0];\r\n if (file.type.includes('image/')) {\r\n if (this.uploadUrl) {\r\n this.editorService.uploadImage(file).subscribe(e => {\r\n if (e instanceof HttpResponse) {\r\n this.editorService.insertImage(e.body.imageUrl);\r\n event.srcElement.value = null;\r\n }\r\n });\r\n } else {\r\n const reader = new FileReader();\r\n reader.onload = (e: ProgressEvent) => {\r\n const fr = e.currentTarget as FileReader;\r\n this.editorService.insertImage(fr.result.toString());\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Set custom class\r\n */\r\n setCustomClass(classId: string) {\r\n if (classId === '-1') {\r\n this.execute.emit('clear');\r\n } else {\r\n this.editorService.createCustomClass(this._customClasses[+classId]);\r\n }\r\n }\r\n\r\n isButtonHidden(name: string): boolean {\r\n if (!name) {\r\n return false;\r\n }\r\n if (!(this.hiddenButtons instanceof Array)) {\r\n return false;\r\n }\r\n let result: any;\r\n for (const arr of this.hiddenButtons) {\r\n if (arr instanceof Array) {\r\n result = arr.find(item => item === name);\r\n }\r\n if (result) {\r\n break;\r\n }\r\n }\r\n return result !== undefined;\r\n }\r\n\r\n focus() {\r\n this.execute.emit('focus');\r\n console.log('focused');\r\n }\r\n}\r\n","export function isDefined(value: any) {\r\n return value !== undefined && value !== null;\r\n}\r\n","import {\r\n AfterViewInit,\r\n Attribute,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n HostBinding,\r\n HostListener,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n SecurityContext,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {AngularEditorConfig, angularEditorConfig} from './config';\r\nimport {AngularEditorToolbarComponent} from './angular-editor-toolbar.component';\r\nimport {AngularEditorService} from './angular-editor.service';\r\nimport {DOCUMENT} from '@angular/common';\r\nimport {DomSanitizer} from '@angular/platform-browser';\r\nimport {isDefined} from './utils';\r\n\r\n@Component({\r\n selector: 'angular-editor',\r\n templateUrl: './angular-editor.component.html',\r\n styleUrls: ['./angular-editor.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AngularEditorComponent),\r\n multi: true\r\n },\r\n AngularEditorService\r\n ]\r\n})\r\nexport class AngularEditorComponent implements OnInit, ControlValueAccessor, AfterViewInit, OnDestroy {\r\n\r\n private onChange: (value: string) => void;\r\n private onTouched: () => void;\r\n\r\n modeVisual = true;\r\n showPlaceholder = false;\r\n disabled = false;\r\n focused = false;\r\n touched = false;\r\n changed = false;\r\n\r\n focusInstance: any;\r\n blurInstance: any;\r\n\r\n @Input() id = '';\r\n @Input() config: AngularEditorConfig = angularEditorConfig;\r\n @Input() placeholder = '';\r\n @Input() tabIndex: number | null;\r\n\r\n @Output() html;\r\n\r\n @ViewChild('editor', {static: true}) textArea: ElementRef;\r\n @ViewChild('editorWrapper', {static: true}) editorWrapper: ElementRef;\r\n @ViewChild('editorToolbar') editorToolbar: AngularEditorToolbarComponent;\r\n\r\n @Output() viewMode = new EventEmitter<boolean>();\r\n\r\n /** emits `blur` event when focused out from the textarea */\r\n // tslint:disable-next-line:no-output-native no-output-rename\r\n @Output('blur') blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\r\n\r\n /** emits `focus` event when focused in to the textarea */\r\n // tslint:disable-next-line:no-output-rename no-output-native\r\n @Output('focus') focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\r\n\r\n @HostBinding('attr.tabindex') tabindex = -1;\r\n\r\n @HostListener('focus')\r\n onFocus() {\r\n this.focus();\r\n }\r\n\r\n constructor(\r\n private r: Renderer2,\r\n private editorService: AngularEditorService,\r\n @Inject(DOCUMENT) private doc: any,\r\n private sanitizer: DomSanitizer,\r\n private cdRef: ChangeDetectorRef,\r\n @Attribute('tabindex') defaultTabIndex: string,\r\n @Attribute('autofocus') private autoFocus: any\r\n ) {\r\n const parsedTabIndex = Number(defaultTabIndex);\r\n this.tabIndex = (parsedTabIndex || parsedTabIndex === 0) ? parsedTabIndex : null;\r\n }\r\n\r\n ngOnInit() {\r\n this.config.toolbarPosition = this.config.toolbarPosition ? this.config.toolbarPosition : angularEditorConfig.toolbarPosition;\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (isDefined(this.autoFocus)) {\r\n this.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Executed command from editor header buttons\r\n * @param command string from triggerCommand\r\n */\r\n executeCommand(command: string) {\r\n this.focus();\r\n if (command === 'focus') {\r\n return;\r\n }\r\n if (command === 'toggleEditorMode') {\r\n this.toggleEditorMode(this.modeVisual);\r\n } else if (command !== '') {\r\n if (command === 'clear') {\r\n this.editorService.removeSelectedElements(this.getCustomTags());\r\n this.onContentChange(this.textArea.nativeElement);\r\n } else if (command === 'default') {\r\n this.editorService.removeSelectedElements('h1,h2,h3,h4,h5,h6,p,pre');\r\n this.onContentChange(this.textArea.nativeElement);\r\n } else {\r\n this.editorService.executeCommand(command);\r\n }\r\n this.exec();\r\n }\r\n }\r\n\r\n /**\r\n * focus event\r\n */\r\n onTextAreaFocus(event: FocusEvent): void {\r\n if (this.focused) {\r\n event.stopPropagation();\r\n return;\r\n }\r\n this.focused = true;\r\n this.focusEvent.emit(event);\r\n if (!this.touched || !this.changed) {\r\n this.editorService.executeInNextQueueIteration(() => {\r\n this.configure();\r\n this.touched = true;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @description fires when cursor leaves textarea\r\n */\r\n public onTextAreaMouseOut(event: MouseEvent): void {\r\n this.editorService.saveSelection();\r\n }\r\n\r\n /**\r\n * blur event\r\n */\r\n onTextAreaBlur(event: FocusEvent) {\r\n /**\r\n * save selection if focussed out\r\n */\r\n this.editorService.executeInNextQueueIteration(this.editorService.saveSelection);\r\n\r\n if (typeof this.onTouched === 'function') {\r\n this.onTouched();\r\n }\r\n\r\n if (event.relatedTarget !== null) {\r\n const parent = (event.relatedTarget as HTMLElement).parentElement;\r\n if (!parent.classList.contains('angular-editor-toolbar-set') && !parent.classList.contains('ae-picker')) {\r\n this.blurEvent.emit(event);\r\n this.focused = false;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * focus the text area when the editor is focused\r\n */\r\n focus() {\r\n if (this.modeVisual) {\r\n this.textArea.nativeElement.focus();\r\n } else {\r\n const sourceText = this.doc.getElementById('sourceText' + this.id);\r\n sourceText.focus();\r\n this.focused = true;\r\n }\r\n }\r\n\r\n /**\r\n * Executed from the contenteditable section while the input property changes\r\n * @param element html element from contenteditable\r\n */\r\n onContentChange(element: HTMLElement): void {\r\n let html = '';\r\n if (this.modeVisual) {\r\n html = element.innerHTML;\r\n } else {\r\n html = element.innerText;\r\n }\r\n if ((!html || html === '<br>')) {\r\n html = '';\r\n }\r\n if (typeof this.onChange === 'function') {\r\n this.onChange(this.config.sanitize || this.config.sanitize === undefined ?\r\n this.sanitizer.sanitize(SecurityContext.HTML, html) : html);\r\n if ((!html) !== this.showPlaceholder) {\r\n this.togglePlaceholder(this.showPlaceholder);\r\n }\r\n }\r\n this.changed = true;\r\n }\r\n\r\n /**\r\n * Set the function to be called\r\n * when the control receives a change event.\r\n *\r\n * @param fn a function\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = e => (e === '<br>' ? fn('') : fn(e)) ;\r\n }\r\n\r\n /**\r\n * Set the function to be called\r\n * when the control receives a touch event.\r\n *\r\n * @param fn a function\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Write a new value to the element.\r\n *\r\n * @param value value to be executed when there is a change in contenteditable\r\n */\r\n writeValue(value: any): void {\r\n\r\n if ((!value || value === '<br>' || value === '') !== this.showPlaceholder) {\r\n this.togglePlaceholder(this.showPlaceholder);\r\n }\r\n\r\n if (value === undefined || value === '' || value === '<br>') {\r\n value = null;\r\n }\r\n\r\n this.refreshView(value);\r\n }\r\n\r\n /**\r\n * refresh view/HTML of the editor\r\n *\r\n * @param value html string from the editor\r\n */\r\n refreshView(value: string): void {\r\n const normalizedValue = value === null ? '' : value;\r\n this.r.setProperty(this.textArea.nativeElement, 'innerHTML', normalizedValue);\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * toggles placeholder based on input string\r\n *\r\n * @param value A HTML string from the editor\r\n */\r\n togglePlaceholder(value: boolean): void {\r\n if (!value) {\r\n this.r.addClass(this.editorWrapper.nativeElement, 'show-placeholder');\r\n this.showPlaceholder = true;\r\n\r\n } else {\r\n this.r.removeClass(this.editorWrapper.nativeElement, 'show-placeholder');\r\n this.showPlaceholder = false;\r\n }\r\n }\r\n\r\n /**\r\n * Implements disabled state for this element\r\n *\r\n * @param isDisabled Disabled flag\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n const div = this.textArea.nativeElement;\r\n const action = isDisabled ? 'addClass' : 'removeClass';\r\n this.r[action](div, 'disabled');\r\n this.disabled = isDisabled;\r\n }\r\n\r\n /**\r\n * toggles editor mode based on bToSource bool\r\n *\r\n * @param bToSource A boolean value from the editor\r\n */\r\n toggleEditorMode(bToSource: boolean) {\r\n let oContent: any;\r\n const editableElement = this.textArea.nativeElement;\r\n\r\n if (bToSource) {\r\n oContent = this.r.createText(editableElement.innerHTML);\r\n this.r.setProperty(editableElement, 'innerHTML', '');\r\n this.r.setProperty(editableElement, 'contentEditable', false);\r\n\r\n const oPre = this.r.createElement('pre');\r\n this.r.setStyle(oPre, 'margin', '0');\r\n this.r.setStyle(oPre, 'outline', 'none');\r\n\r\n const oCode = this.r.createElement('code');\r\n this.r.setProperty(oCode, 'id', 'sourceText' + this.id);\r\n this.r.setStyle(oCode, 'display', 'block');\r\n this.r.setStyle(oCode, 'white-space', 'pre-wrap');\r\n this.r.setStyle(oCode, 'word-break', 'keep-all');\r\n this.r.setStyle(oCode, 'outline', 'none');\r\n this.r.setStyle(oCode, 'margin', '0');\r\n this.r.setStyle(oCode, 'background-color', '#fff5b9');\r\n this.r.setProperty(oCode, 'contentEditable', true);\r\n this.r.appendChild(oCode, oContent);\r\n this.focusInstance = this.r.listen(oCode, 'focus', (event) => this.onTextAreaFocus(event));\r\n this.blurInstance = this.r.listen(oCode, 'blur', (event) => this.onTextAreaBlur(event));\r\n this.r.appendChild(oPre, oCode);\r\n this.r.appendChild(editableElement, oPre);\r\n\r\n // ToDo move to service\r\n this.doc.execCommand('defaultParagraphSeparator', false, 'div');\r\n\r\n this.modeVisual = false;\r\n this.viewMode.emit(false);\r\n oCode.focus();\r\n } else {\r\n if (this.doc.querySelectorAll) {\r\n this.r.setProperty(editableElement, 'innerHTML', editableElement.innerText);\r\n } else {\r\n oContent = this.doc.createRange();\r\n oContent.selectNodeContents(editableElement.firstChild);\r\n this.r.setProperty(editableElement, 'innerHTML', oContent.toString());\r\n }\r\n this.r.setProperty(editableElement, 'contentEditable', true);\r\n this.modeVisual = true;\r\n this.viewMode.emit(true);\r\n this.onContentChange(editableElement);\r\n editableElement.focus();\r\n }\r\n this.editorToolbar.setEditorMode(!this.modeVisual);\r\n }\r\n\r\n /**\r\n * toggles editor buttons when cursor moved or positioning\r\n *\r\n * Send a node array from the contentEditable of the editor\r\n */\r\n exec() {\r\n this.editorToolbar.triggerButtons();\r\n\r\n let userSelection;\r\n if (this.doc.getSelection) {\r\n userSelection = this.doc.getSelection();\r\n this.editorService.executeInNextQueueIteration(this.editorService.saveSelection);\r\n }\r\n\r\n let a = userSelection.focusNode;\r\n const els = [];\r\n while (a && a.id !== 'editor') {\r\n els.unshift(a);\r\n a = a.parentNode;\r\n }\r\n this.editorToolbar.triggerBlocks(els);\r\n }\r\n\r\n private configure() {\r\n this.editorService.uploadUrl = this.config.uploadUrl;\r\n this.editorService.uploadWithCredentials = this.config.uploadWithCredentials;\r\n if (this.config.defaultParagraphSeparator) {\r\n this.editorService.setDefaultParagraphSeparator(this.config.defaultParagraphSeparator);\r\n }\r\n if (this.config.defaultFontName) {\r\n this.editorService.setFontName(this.config.defaultFontName);\r\n }\r\n if (this.config.defaultFontSize) {\r\n this.editorService.setFontSize(this.config.defaultFontSize);\r\n }\r\n }\r\n\r\n getFonts() {\r\n const fonts = this.config.fonts ? this.config.fonts : angularEditorConfig.fonts;\r\n return fonts.map(x => {\r\n return {label: x.name, value: x.name};\r\n });\r\n }\r\n\r\n getCustomTags() {\r\n const tags = ['span'];\r\n this.config.customClasses.forEach(x => {\r\n if (x.tag !== undefined) {\r\n if (!tags.includes(x.tag)) {\r\n tags.push(x.tag);\r\n }\r\n }\r\n });\r\n return tags.join(',');\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.blurInstance) {\r\n this.blurInstance();\r\n }\r\n if (this.focusInstance) {\r\n this.focusInstance();\r\n }\r\n }\r\n\r\n filterStyles(html: string): string {\r\n html = html.replace('position: fixed;', '');\r\n return html;\r\n }\r\n}\r\n","import {\r\n Attribute,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef, HostBinding,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {isDefined} from '../utils';\r\n\r\nexport interface SelectOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\n@Component({\r\n selector: 'ae-select',\r\n templateUrl: './ae-select.component.html',\r\n styleUrls: ['./ae-select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AeSelectComponent),\r\n multi: true,\r\n }\r\n ]\r\n})\r\nexport class AeSelectComponent implements OnInit, ControlValueAccessor {\r\n @Input() options: SelectOption[] = [];\r\n // tslint:disable-next-line:no-input-rename\r\n @Input('hidden') isHidden: boolean;\r\n\r\n selectedOption: SelectOption;\r\n disabled = false;\r\n optionId = 0;\r\n\r\n get label(): string {\r\n return this.selectedOption && this.selectedOption.hasOwnProperty('label') ? this.selectedOption.label : 'Select';\r\n }\r\n\r\n opened = false;\r\n\r\n get value(): string {\r\n return this.selectedOption.value;\r\n }\r\n\r\n @HostBinding('style.display') hidden = 'inline-block';\r\n\r\n // tslint:disable-next-line:no-output-native no-output-rename\r\n @Output('change') changeEvent = new EventEmitter();\r\n\r\n @ViewChild('labelButton', {static: true}) labelButton: ElementRef;\r\n\r\n constructor(private elRef: ElementRef,\r\n private r: Renderer2,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.selectedOption = this.options[0];\r\n if (isDefined(this.isHidden) && this.isHidden) {\r\n this.hide();\r\n }\r\n }\r\n\r\n hide() {\r\n this.hidden = 'none';\r\n }\r\n\r\n optionSelect(option: SelectOption, event: MouseEvent) {\r\n event.stopPropagation();\r\n this.setValue(option.value);\r\n this.onChange(this.selectedOption.value);\r\n this.changeEvent.emit(this.selectedOption.value);\r\n this.onTouched();\r\n this.opened = false;\r\n }\r\n\r\n toggleOpen(event: MouseEvent) {\r\n // event.stopPropagation();\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.opened = !this.opened;\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClick($event: MouseEvent) {\r\n if (!this.elRef.nativeElement.contains($event.target)) {\r\n this.close();\r\n }\r\n }\r\n\r\n close() {\r\n this.opened = false;\r\n }\r\n\r\n get isOpen(): boolean {\r\n return this.opened;\r\n }\r\n\r\n writeValue(value) {\r\n if (!value || typeof value !== 'string') {\r\n return;\r\n }\r\n this.setValue(value);\r\n }\r\n\r\n setValue(value) {\r\n let index = 0;\r\n const selectedEl = this.options.find((el, i) => {\r\n index = i;\r\n return el.value === value;\r\n });\r\n if (selectedEl) {\r\n this.selectedOption = selectedEl;\r\n this.optionId = index;\r\n }\r\n }\r\n\r\n onChange: any = () => {\r\n }\r\n onTouched: any = () => {\r\n }\r\n\r\n registerOnChange(fn) {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.labelButton.nativeElement.disabled = isDisabled;\r\n const div = this.labelButton.nativeElement;\r\n const action = isDisabled ? 'addClass' : 'removeClass';\r\n this.r[action](div, 'disabled');\r\n this.disabled = isDisabled;\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n handleKeyDown($event: KeyboardEvent) {\r\n if (!this.opened) {\r\n return;\r\n }\r\n // console.log($event.key);\r\n // if (KeyCode[$event.key]) {\r\n switch ($event.key) {\r\n case 'ArrowDown':\r\n this._handleArrowDown($event);\r\n break;\r\n case 'ArrowUp':\r\n this._handleArrowUp($event);\r\n break;\r\n case 'Space':\r\n this._handleSpace($event);\r\n break;\r\n case 'Enter':\r\n this._handleEnter($event);\r\n break;\r\n case 'Tab':\r\n this._handleTab($event);\r\n break;\r\n case 'Escape':\r\n this.close();\r\n $event.preventDefault();\r\n break;\r\n case 'Backspace':\r\n this._handleBackspace();\r\n break;\r\n }\r\n // } else if ($event.key && $event.key.length === 1) {\r\n // this._keyPress$.next($event.key.toLocaleLowerCase());\r\n // }\r\n }\r\n\r\n _handleArrowDown($event) {\r\n if (this.optionId < this.options.length - 1) {\r\n this.optionId++;\r\n }\r\n }\r\n\r\n _handleArrowUp($event) {\r\n if (this.optionId >= 1) {\r\n this.optionId--;\r\n }\r\n }\r\n\r\n _handleSpace($event) {\r\n\r\n }\r\n\r\n _handleEnter($event) {\r\n this.optionSelect(this.options[this.optionId], $event);\r\n }\r\n\r\n _handleTab($event) {\r\n\r\n }\r\n\r\n _handleBackspace() {\r\n\r\n }\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {AngularEditorComponent} from './angular-editor.component';\r\nimport {AngularEditorToolbarComponent} from './angular-editor-toolbar.component';\r\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\r\nimport {CommonModule} from '@angular/common';\r\nimport { AeSelectComponent } from './ae-select/ae-select.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule, FormsModule, ReactiveFormsModule\r\n ],\r\n declarations: [AngularEditorComponent, AngularEditorToolbarComponent, AeSelectComponent],\r\n exports: [AngularEditorComponent, AngularEditorToolbarComponent]\r\n})\r\nexport class AngularEditorModule {\r\n}\r\n","/*\r\n * Public API Surface of angular-editor\r\n */\r\n\r\nexport * from './lib/angular-editor.service';\r\nexport * from './lib/angular-editor.component';\r\nexport * from './lib/angular-editor-toolbar.component';\r\nexport * from './lib/angular-editor.module';\r\nexport { AngularEditorConfig, CustomClass } from './lib/config';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {AeSelectComponent as ɵa} from './lib/ae-select/ae-select.component';"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kolkov-angular-editor.js","sources":["../../../projects/angular-editor/src/lib/angular-editor.service.ts","../../../projects/angular-editor/src/lib/config.ts","../../../projects/angular-editor/src/lib/utils.ts","../../../projects/angular-editor/src/lib/angular-editor.component.ts","../../../projects/angular-editor/src/lib/angular-editor-toolbar.component.ts","../../../projects/angular-editor/src/lib/ae-select/ae-select.component.ts","../../../projects/angular-editor/src/lib/angular-editor.module.ts","../../../projects/angular-editor/src/public-api.ts","../../../projects/angular-editor/src/kolkov-angular-editor.ts"],"sourcesContent":["import {Inject, Injectable} from '@angular/core';\nimport {HttpClient, HttpEvent} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {DOCUMENT} from '@angular/common';\nimport {CustomClass} from './config';\n\nexport interface UploadResponse {\n imageUrl: string;\n}\n\n@Injectable()\nexport class AngularEditorService {\n\n savedSelection: Range | null;\n selectedText: string;\n uploadUrl: string;\n uploadWithCredentials: boolean;\n\n constructor(\n private http: HttpClient,\n @Inject(DOCUMENT) private doc: any\n ) { }\n\n /**\n * Executed command from editor header buttons exclude toggleEditorMode\n * @param command string from triggerCommand\n */\n executeCommand(command: string) {\n const commands = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'pre'];\n if (commands.includes(command)) {\n this.doc.execCommand('formatBlock', false, command);\n return;\n }\n this.doc.execCommand(command, false, null);\n }\n\n /**\n * Create URL link\n * @param url string from UI prompt\n */\n createLink(url: string) {\n if (!url.includes('http')) {\n this.doc.execCommand('createlink', false, url);\n } else {\n const newUrl = '<a href=\"' + url + '\" target=\"_blank\">' + this.selectedText + '</a>';\n this.insertHtml(newUrl);\n }\n }\n\n /**\n * insert color either font or background\n *\n * @param color color to be inserted\n * @param where where the color has to be inserted either text/background\n */\n insertColor(color: string, where: string): void {\n const restored = this.restoreSelection();\n if (restored) {\n if (where === 'textColor') {\n this.doc.execCommand('foreColor', false, color);\n } else {\n this.doc.execCommand('hiliteColor', false, color);\n }\n }\n }\n\n /**\n * Set font name\n * @param fontName string\n */\n setFontName(fontName: string) {\n this.doc.execCommand('fontName', false, fontName);\n }\n\n /**\n * Set font size\n * @param fontSize string\n */\n setFontSize(fontSize: string) {\n this.doc.execCommand('fontSize', false, fontSize);\n }\n\n /**\n * Create raw HTML\n * @param html HTML string\n */\n insertHtml(html: string): void {\n\n const isHTMLInserted = this.doc.execCommand('insertHTML', false, html);\n\n if (!isHTMLInserted) {\n throw new Error('Unable to perform the operation');\n }\n }\n\n /**\n * save selection when the editor is focussed out\n */\n public saveSelection = (): void => {\n if (this.doc.getSelection) {\n const sel = this.doc.getSelection();\n if (sel.getRangeAt && sel.rangeCount) {\n this.savedSelection = sel.getRangeAt(0);\n this.selectedText = sel.toString();\n }\n } else if (this.doc.getSelection && this.doc.createRange) {\n this.savedSelection = document.createRange();\n } else {\n this.savedSelection = null;\n }\n }\n\n /**\n * restore selection when the editor is focused in\n *\n * saved selection when the editor is focused out\n */\n restoreSelection(): boolean {\n if (this.savedSelection) {\n if (this.doc.getSelection) {\n const sel = this.doc.getSelection();\n sel.removeAllRanges();\n sel.addRange(this.savedSelection);\n return true;\n } else if (this.doc.getSelection /*&& this.savedSelection.select*/) {\n // this.savedSelection.select();\n return true;\n }\n } else {\n return false;\n }\n }\n\n /**\n * setTimeout used for execute 'saveSelection' method in next event loop iteration\n */\n public executeInNextQueueIteration(callbackFn: (...args: any[]) => any, timeout = 1e2): void {\n setTimeout(callbackFn, timeout);\n }\n\n /** check any selection is made or not */\n private checkSelection(): any {\n\n const selectedText = this.savedSelection.toString();\n\n if (selectedText.length === 0) {\n throw new Error('No Selection Made');\n }\n return true;\n }\n\n /**\n * Upload file to uploadUrl\n * @param file The file\n */\n uploadImage(file: File): Observable<HttpEvent<UploadResponse>> {\n\n const uploadData: FormData = new FormData();\n\n uploadData.append('file', file, file.name);\n\n return this.http.post<UploadResponse>(this.uploadUrl, uploadData, {\n reportProgress: true,\n observe: 'events',\n withCredentials: this.uploadWithCredentials,\n });\n }\n\n /**\n * Insert image with Url\n * @param imageUrl The imageUrl.\n */\n insertImage(imageUrl: string) {\n this.doc.execCommand('insertImage', false, imageUrl);\n }\n\n setDefaultParagraphSeparator(separator: string) {\n this.doc.execCommand('defaultParagraphSeparator', false, separator);\n }\n\n createCustomClass(customClass: CustomClass) {\n let newTag = this.selectedText;\n if (customClass) {\n const tagName = customClass.tag ? customClass.tag : 'span';\n newTag = '<' + tagName + ' class=\"' + customClass.class + '\">' + this.selectedText + '</' + tagName + '>';\n }\n this.insertHtml(newTag);\n }\n\n insertVideo(videoUrl: string) {\n if (videoUrl.match('www.youtube.com')) {\n this.insertYouTubeVideoTag(videoUrl);\n }\n if (videoUrl.match('vimeo.com')) {\n this.insertVimeoVideoTag(videoUrl);\n }\n }\n\n private insertYouTubeVideoTag(videoUrl: string): void {\n const id = videoUrl.split('v=')[1];\n const imageUrl = `https://img.youtube.com/vi/${id}/0.jpg`;\n const thumbnail = `\n <div style='position: relative'>\n <a href='${videoUrl}' target='_blank'>\n <img src=\"${imageUrl}\" alt=\"click to watch\"/>\n <img style='position: absolute; left:200px; top:140px'\n src=\"https://img.icons8.com/color/96/000000/youtube-play.png\"/>\n </a>\n </div>`;\n this.insertHtml(thumbnail);\n }\n\n private insertVimeoVideoTag(videoUrl: string): void {\n const sub = this.http.get<any>(`https://vimeo.com/api/oembed.json?url=${videoUrl}`).subscribe(data => {\n const imageUrl = data.thumbnail_url_with_play_button;\n const thumbnail = `<div>\n <a href='${videoUrl}' target='_blank'>\n <img src=\"${imageUrl}\" alt=\"${data.title}\"/>\n </a>\n </div>`;\n this.insertHtml(thumbnail);\n sub.unsubscribe();\n });\n }\n\n nextNode(node) {\n if (node.hasChildNodes()) {\n return node.firstChild;\n } else {\n while (node && !node.nextSibling) {\n node = node.parentNode;\n }\n if (!node) {\n return null;\n }\n return node.nextSibling;\n }\n }\n\n getRangeSelectedNodes(range, includePartiallySelectedContainers) {\n let node = range.startContainer;\n const endNode = range.endContainer;\n let rangeNodes = [];\n\n // Special case for a range that is contained within a single node\n if (node === endNode) {\n rangeNodes = [node];\n } else {\n // Iterate nodes until we hit the end container\n while (node && node !== endNode) {\n rangeNodes.push( node = this.nextNode(node) );\n }\n\n // Add partially selected nodes at the start of the range\n node = range.startContainer;\n while (node && node !== range.commonAncestorContainer) {\n rangeNodes.unshift(node);\n node = node.parentNode;\n }\n }\n\n // Add ancestors of the range container, if required\n if (includePartiallySelectedContainers) {\n node = range.commonAncestorContainer;\n while (node) {\n rangeNodes.push(node);\n node = node.parentNode;\n }\n }\n\n return rangeNodes;\n }\n\n getSelectedNodes() {\n const nodes = [];\n if (this.doc.getSelection) {\n const sel = this.doc.getSelection();\n for (let i = 0, len = sel.rangeCount; i < len; ++i) {\n nodes.push.apply(nodes, this.getRangeSelectedNodes(sel.getRangeAt(i), true));\n }\n }\n return nodes;\n }\n\n replaceWithOwnChildren(el) {\n const parent = el.parentNode;\n while (el.hasChildNodes()) {\n parent.insertBefore(el.firstChild, el);\n }\n parent.removeChild(el);\n }\n\n removeSelectedElements(tagNames) {\n const tagNamesArray = tagNames.toLowerCase().split(',');\n this.getSelectedNodes().forEach((node) => {\n if (node.nodeType === 1 &&\n tagNamesArray.indexOf(node.tagName.toLowerCase()) > -1) {\n // Remove the node and replace it with its children\n this.replaceWithOwnChildren(node);\n }\n });\n }\n}\n","import { UploadResponse } from './angular-editor.service';\nimport { HttpEvent } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nexport interface CustomClass {\n name: string;\n class: string;\n tag?: string;\n}\n\nexport interface Font {\n name: string;\n class: string;\n}\n\nexport interface AngularEditorConfig {\n editable?: boolean;\n spellcheck?: boolean;\n height?: 'auto' | string;\n minHeight?: '0' | string;\n maxHeight?: 'auto' | string;\n width?: 'auto' | string;\n minWidth?: '0' | string;\n translate?: 'yes' | 'now' | string;\n enableToolbar?: boolean;\n showToolbar?: boolean;\n placeholder?: string;\n defaultParagraphSeparator?: string;\n defaultFontName?: string;\n defaultFontSize?: '1' | '2' | '3' | '4' | '5' | '6' | '7' | string;\n uploadUrl?: string;\n upload?: (file: File) => Observable<HttpEvent<UploadResponse>>;\n uploadWithCredentials?: boolean;\n fonts?: Font[];\n customClasses?: CustomClass[];\n sanitize?: boolean;\n toolbarPosition?: 'top' | 'bottom';\n outline?: boolean;\n toolbarHiddenButtons?: string[][];\n rawPaste?: boolean;\n}\n\nexport const angularEditorConfig: AngularEditorConfig = {\n editable: true,\n spellcheck: true,\n height: 'auto',\n minHeight: '0',\n maxHeight: 'auto',\n width: 'auto',\n minWidth: '0',\n translate: 'yes',\n enableToolbar: true,\n showToolbar: true,\n placeholder: 'Enter text here...',\n defaultParagraphSeparator: '',\n defaultFontName: '',\n defaultFontSize: '',\n fonts: [\n {class: 'arial', name: 'Arial'},\n {class: 'times-new-roman', name: 'Times New Roman'},\n {class: 'calibri', name: 'Calibri'},\n {class: 'comic-sans-ms', name: 'Comic Sans MS'}\n ],\n uploadUrl: 'v1/image',\n uploadWithCredentials: false,\n sanitize: true,\n toolbarPosition: 'top',\n outline: true,\n /*toolbarHiddenButtons: [\n ['bold', 'italic', 'underline', 'strikeThrough', 'superscript', 'subscript'],\n ['heading', 'fontName', 'fontSize', 'color'],\n ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', 'indent', 'outdent'],\n ['cut', 'copy', 'delete', 'removeFormat', 'undo', 'redo'],\n ['paragraph', 'blockquote', 'removeBlockquote', 'horizontalLine', 'orderedList', 'unorderedList'],\n ['link', 'unlink', 'image', 'video']\n ]*/\n};\n","export function isDefined(value: any) {\n return value !== undefined && value !== null;\n}\n","import {\n AfterViewInit,\n Attribute,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SecurityContext,\n ViewChild\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {AngularEditorConfig, angularEditorConfig} from './config';\nimport {AngularEditorToolbarComponent} from './angular-editor-toolbar.component';\nimport {AngularEditorService} from './angular-editor.service';\nimport {DOCUMENT} from '@angular/common';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {isDefined} from './utils';\n\n@Component({\n selector: 'angular-editor',\n templateUrl: './angular-editor.component.html',\n styleUrls: ['./angular-editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AngularEditorComponent),\n multi: true\n },\n AngularEditorService\n ]\n})\nexport class AngularEditorComponent implements OnInit, ControlValueAccessor, AfterViewInit, OnDestroy {\n\n private onChange: (value: string) => void;\n private onTouched: () => void;\n\n modeVisual = true;\n showPlaceholder = false;\n disabled = false;\n focused = false;\n touched = false;\n changed = false;\n\n focusInstance: any;\n blurInstance: any;\n\n @Input() id = '';\n @Input() config: AngularEditorConfig = angularEditorConfig;\n @Input() placeholder = '';\n @Input() tabIndex: number | null;\n\n @Output() html;\n\n @ViewChild('editor', {static: true}) textArea: ElementRef;\n @ViewChild('editorWrapper', {static: true}) editorWrapper: ElementRef;\n @ViewChild('editorToolbar') editorToolbar: AngularEditorToolbarComponent;\n\n @Output() viewMode = new EventEmitter<boolean>();\n\n /** emits `blur` event when focused out from the textarea */\n // eslint-disable-next-line @angular-eslint/no-output-native, @angular-eslint/no-output-rename\n @Output('blur') blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n\n /** emits `focus` event when focused in to the textarea */\n // eslint-disable-next-line @angular-eslint/no-output-rename, @angular-eslint/no-output-native\n @Output('focus') focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n\n @HostBinding('attr.tabindex') tabindex = -1;\n\n @HostListener('focus')\n onFocus() {\n this.focus();\n }\n\n constructor(\n private r: Renderer2,\n private editorService: AngularEditorService,\n @Inject(DOCUMENT) private doc: any,\n private sanitizer: DomSanitizer,\n private cdRef: ChangeDetectorRef,\n @Attribute('tabindex') defaultTabIndex: string,\n @Attribute('autofocus') private autoFocus: any\n ) {\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex = (parsedTabIndex || parsedTabIndex === 0) ? parsedTabIndex : null;\n }\n\n ngOnInit() {\n this.config.toolbarPosition = this.config.toolbarPosition ? this.config.toolbarPosition : angularEditorConfig.toolbarPosition;\n }\n\n ngAfterViewInit() {\n if (isDefined(this.autoFocus)) {\n this.focus();\n }\n }\n\n onPaste(event: ClipboardEvent){\n if (this.config.rawPaste) {\n event.preventDefault();\n const text = event.clipboardData.getData('text/plain');\n document.execCommand('insertHTML', false, text);\n return text;\n }\n }\n\n /**\n * Executed command from editor header buttons\n * @param command string from triggerCommand\n */\n executeCommand(command: string) {\n this.focus();\n if (command === 'focus') {\n return;\n }\n if (command === 'toggleEditorMode') {\n this.toggleEditorMode(this.modeVisual);\n } else if (command !== '') {\n if (command === 'clear') {\n this.editorService.removeSelectedElements(this.getCustomTags());\n this.onContentChange(this.textArea.nativeElement);\n } else if (command === 'default') {\n this.editorService.removeSelectedElements('h1,h2,h3,h4,h5,h6,p,pre');\n this.onContentChange(this.textArea.nativeElement);\n } else {\n this.editorService.executeCommand(command);\n }\n this.exec();\n }\n }\n\n /**\n * focus event\n */\n onTextAreaFocus(event: FocusEvent): void {\n if (this.focused) {\n event.stopPropagation();\n return;\n }\n this.focused = true;\n this.focusEvent.emit(event);\n if (!this.touched || !this.changed) {\n this.editorService.executeInNextQueueIteration(() => {\n this.configure();\n this.touched = true;\n });\n }\n }\n\n /**\n * @description fires when cursor leaves textarea\n */\n public onTextAreaMouseOut(event: MouseEvent): void {\n this.editorService.saveSelection();\n }\n\n /**\n * blur event\n */\n onTextAreaBlur(event: FocusEvent) {\n /**\n * save selection if focussed out\n */\n this.editorService.executeInNextQueueIteration(this.editorService.saveSelection);\n\n if (typeof this.onTouched === 'function') {\n this.onTouched();\n }\n\n if (event.relatedTarget !== null) {\n const parent = (event.relatedTarget as HTMLElement).parentElement;\n if (!parent.classList.contains('angular-editor-toolbar-set') && !parent.classList.contains('ae-picker')) {\n this.blurEvent.emit(event);\n this.focused = false;\n }\n }\n }\n\n /**\n * focus the text area when the editor is focused\n */\n focus() {\n if (this.modeVisual) {\n this.textArea.nativeElement.focus();\n } else {\n const sourceText = this.doc.getElementById('sourceText' + this.id);\n sourceText.focus();\n this.focused = true;\n }\n }\n\n /**\n * Executed from the contenteditable section while the input property changes\n * @param element html element from contenteditable\n */\n onContentChange(element: HTMLElement): void {\n let html = '';\n if (this.modeVisual) {\n html = element.innerHTML;\n } else {\n html = element.innerText;\n }\n if ((!html || html === '<br>')) {\n html = '';\n }\n if (typeof this.onChange === 'function') {\n this.onChange(this.config.sanitize || this.config.sanitize === undefined ?\n this.sanitizer.sanitize(SecurityContext.HTML, html) : html);\n if ((!html) !== this.showPlaceholder) {\n this.togglePlaceholder(this.showPlaceholder);\n }\n }\n this.changed = true;\n }\n\n /**\n * Set the function to be called\n * when the control receives a change event.\n *\n * @param fn a function\n */\n registerOnChange(fn: any): void {\n this.onChange = e => (e === '<br>' ? fn('') : fn(e)) ;\n }\n\n /**\n * Set the function to be called\n * when the control receives a touch event.\n *\n * @param fn a function\n */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * Write a new value to the element.\n *\n * @param value value to be executed when there is a change in contenteditable\n */\n writeValue(value: any): void {\n\n if ((!value || value === '<br>' || value === '') !== this.showPlaceholder) {\n this.togglePlaceholder(this.showPlaceholder);\n }\n\n if (value === undefined || value === '' || value === '<br>') {\n value = null;\n }\n\n this.refreshView(value);\n }\n\n /**\n * refresh view/HTML of the editor\n *\n * @param value html string from the editor\n */\n refreshView(value: string): void {\n const normalizedValue = value === null ? '' : value;\n this.r.setProperty(this.textArea.nativeElement, 'innerHTML', normalizedValue);\n\n return;\n }\n\n /**\n * toggles placeholder based on input string\n *\n * @param value A HTML string from the editor\n */\n togglePlaceholder(value: boolean): void {\n if (!value) {\n this.r.addClass(this.editorWrapper.nativeElement, 'show-placeholder');\n this.showPlaceholder = true;\n\n } else {\n this.r.removeClass(this.editorWrapper.nativeElement, 'show-placeholder');\n this.showPlaceholder = false;\n }\n }\n\n /**\n * Implements disabled state for this element\n *\n * @param isDisabled Disabled flag\n */\n setDisabledState(isDisabled: boolean): void {\n const div = this.textArea.nativeElement;\n const action = isDisabled ? 'addClass' : 'removeClass';\n this.r[action](div, 'disabled');\n this.disabled = isDisabled;\n }\n\n /**\n * toggles editor mode based on bToSource bool\n *\n * @param bToSource A boolean value from the editor\n */\n toggleEditorMode(bToSource: boolean) {\n let oContent: any;\n const editableElement = this.textArea.nativeElement;\n\n if (bToSource) {\n oContent = this.r.createText(editableElement.innerHTML);\n this.r.setProperty(editableElement, 'innerHTML', '');\n this.r.setProperty(editableElement, 'contentEditable', false);\n\n const oPre = this.r.createElement('pre');\n this.r.setStyle(oPre, 'margin', '0');\n this.r.setStyle(oPre, 'outline', 'none');\n\n const oCode = this.r.createElement('code');\n this.r.setProperty(oCode, 'id', 'sourceText' + this.id);\n this.r.setStyle(oCode, 'display', 'block');\n this.r.setStyle(oCode, 'white-space', 'pre-wrap');\n this.r.setStyle(oCode, 'word-break', 'keep-all');\n this.r.setStyle(oCode, 'outline', 'none');\n this.r.setStyle(oCode, 'margin', '0');\n this.r.setStyle(oCode, 'background-color', '#fff5b9');\n this.r.setProperty(oCode, 'contentEditable', true);\n this.r.appendChild(oCode, oContent);\n this.focusInstance = this.r.listen(oCode, 'focus', (event) => this.onTextAreaFocus(event));\n this.blurInstance = this.r.listen(oCode, 'blur', (event) => this.onTextAreaBlur(event));\n this.r.appendChild(oPre, oCode);\n this.r.appendChild(editableElement, oPre);\n\n // ToDo move to service\n this.doc.execCommand('defaultParagraphSeparator', false, 'div');\n\n this.modeVisual = false;\n this.viewMode.emit(false);\n oCode.focus();\n } else {\n if (this.doc.querySelectorAll) {\n this.r.setProperty(editableElement, 'innerHTML', editableElement.innerText);\n } else {\n oContent = this.doc.createRange();\n oContent.selectNodeContents(editableElement.firstChild);\n this.r.setProperty(editableElement, 'innerHTML', oContent.toString());\n }\n this.r.setProperty(editableElement, 'contentEditable', true);\n this.modeVisual = true;\n this.viewMode.emit(true);\n this.onContentChange(editableElement);\n editableElement.focus();\n }\n this.editorToolbar.setEditorMode(!this.modeVisual);\n }\n\n /**\n * toggles editor buttons when cursor moved or positioning\n *\n * Send a node array from the contentEditable of the editor\n */\n exec() {\n this.editorToolbar.triggerButtons();\n\n let userSelection;\n if (this.doc.getSelection) {\n userSelection = this.doc.getSelection();\n this.editorService.executeInNextQueueIteration(this.editorService.saveSelection);\n }\n\n let a = userSelection.focusNode;\n const els = [];\n while (a && a.id !== 'editor') {\n els.unshift(a);\n a = a.parentNode;\n }\n this.editorToolbar.triggerBlocks(els);\n }\n\n private configure() {\n this.editorService.uploadUrl = this.config.uploadUrl;\n this.editorService.uploadWithCredentials = this.config.uploadWithCredentials;\n if (this.config.defaultParagraphSeparator) {\n this.editorService.setDefaultParagraphSeparator(this.config.defaultParagraphSeparator);\n }\n if (this.config.defaultFontName) {\n this.editorService.setFontName(this.config.defaultFontName);\n }\n if (this.config.defaultFontSize) {\n this.editorService.setFontSize(this.config.defaultFontSize);\n }\n }\n\n getFonts() {\n const fonts = this.config.fonts ? this.config.fonts : angularEditorConfig.fonts;\n return fonts.map(x => {\n return {label: x.name, value: x.name};\n });\n }\n\n getCustomTags() {\n const tags = ['span'];\n this.config.customClasses.forEach(x => {\n if (x.tag !== undefined) {\n if (!tags.includes(x.tag)) {\n tags.push(x.tag);\n }\n }\n });\n return tags.join(',');\n }\n\n ngOnDestroy() {\n if (this.blurInstance) {\n this.blurInstance();\n }\n if (this.focusInstance) {\n this.focusInstance();\n }\n }\n\n filterStyles(html: string): string {\n html = html.replace('position: fixed;', '');\n return html;\n }\n}\n","import {Component, ElementRef, EventEmitter, Inject, Input, Output, Renderer2, ViewChild} from '@angular/core';\nimport {AngularEditorService, UploadResponse} from './angular-editor.service';\nimport {HttpResponse, HttpEvent} from '@angular/common/http';\nimport {DOCUMENT} from '@angular/common';\nimport {CustomClass} from './config';\nimport {SelectOption} from './ae-select/ae-select.component';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'angular-editor-toolbar',\n templateUrl: './angular-editor-toolbar.component.html',\n styleUrls: ['./angular-editor-toolbar.component.scss'],\n})\n\nexport class AngularEditorToolbarComponent {\n htmlMode = false;\n linkSelected = false;\n block = 'default';\n fontName = 'Times New Roman';\n fontSize = '3';\n foreColour;\n backColor;\n\n headings: SelectOption[] = [\n {\n label: 'Heading 1',\n value: 'h1',\n },\n {\n label: 'Heading 2',\n value: 'h2',\n },\n {\n label: 'Heading 3',\n value: 'h3',\n },\n {\n label: 'Heading 4',\n value: 'h4',\n },\n {\n label: 'Heading 5',\n value: 'h5',\n },\n {\n label: 'Heading 6',\n value: 'h6',\n },\n {\n label: 'Heading 7',\n value: 'h7',\n },\n {\n label: 'Paragraph',\n value: 'p',\n },\n {\n label: 'Predefined',\n value: 'pre'\n },\n {\n label: 'Standard',\n value: 'div'\n },\n {\n label: 'default',\n value: 'default'\n }\n ];\n\n fontSizes: SelectOption[] = [\n {\n label: '1',\n value: '1',\n },\n {\n label: '2',\n value: '2',\n },\n {\n label: '3',\n value: '3',\n },\n {\n label: '4',\n value: '4',\n },\n {\n label: '5',\n value: '5',\n },\n {\n label: '6',\n value: '6',\n },\n {\n label: '7',\n value: '7',\n }\n ];\n\n customClassId = '-1';\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\n _customClasses: CustomClass[];\n customClassList: SelectOption[] = [{label: '', value: ''}];\n // uploadUrl: string;\n\n tagMap = {\n BLOCKQUOTE: 'indent',\n A: 'link'\n };\n\n select = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'P', 'PRE', 'DIV'];\n\n buttons = ['bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', 'justifyLeft', 'justifyCenter',\n 'justifyRight', 'justifyFull', 'indent', 'outdent', 'insertUnorderedList', 'insertOrderedList', 'link'];\n\n @Input() id: string;\n @Input() uploadUrl: string;\n @Input() upload: (file: File) => Observable<HttpEvent<UploadResponse>>;\n @Input() showToolbar: boolean;\n @Input() fonts: SelectOption[] = [{label: '', value: ''}];\n\n @Input()\n set customClasses(classes: CustomClass[]) {\n if (classes) {\n this._customClasses = classes;\n this.customClassList = this._customClasses.map((x, i) => ({label: x.name, value: i.toString()}));\n this.customClassList.unshift({label: 'Clear Class', value: '-1'});\n }\n }\n\n @Input()\n set defaultFontName(value: string) {\n if (value) {\n this.fontName = value;\n }\n }\n\n @Input()\n set defaultFontSize(value: string) {\n if (value) {\n this.fontSize = value;\n }\n }\n\n @Input() hiddenButtons: string[][];\n\n @Output() execute: EventEmitter<string> = new EventEmitter<string>();\n\n @ViewChild('fileInput', {static: true}) myInputFile: ElementRef;\n\n public get isLinkButtonDisabled(): boolean {\n return this.htmlMode || !Boolean(this.editorService.selectedText);\n }\n\n constructor(\n private r: Renderer2,\n private editorService: AngularEditorService,\n private er: ElementRef,\n @Inject(DOCUMENT) private doc: any\n ) {\n }\n\n /**\n * Trigger command from editor header buttons\n * @param command string from toolbar buttons\n */\n triggerCommand(command: string) {\n this.execute.emit(command);\n }\n\n /**\n * highlight editor buttons when cursor moved or positioning\n */\n triggerButtons() {\n if (!this.showToolbar) {\n return;\n }\n this.buttons.forEach(e => {\n const result = this.doc.queryCommandState(e);\n const elementById = this.doc.getElementById(e + '-' + this.id);\n if (result) {\n this.r.addClass(elementById, 'active');\n } else {\n this.r.removeClass(elementById, 'active');\n }\n });\n }\n\n /**\n * trigger highlight editor buttons when cursor moved or positioning in block\n */\n triggerBlocks(nodes: Node[]) {\n if (!this.showToolbar) {\n return;\n }\n this.linkSelected = nodes.findIndex(x => x.nodeName === 'A') > -1;\n let found = false;\n this.select.forEach(y => {\n const node = nodes.find(x => x.nodeName === y);\n if (node !== undefined && y === node.nodeName) {\n if (found === false) {\n this.block = node.nodeName.toLowerCase();\n found = true;\n }\n } else if (found === false) {\n this.block = 'default';\n }\n });\n\n found = false;\n if (this._customClasses) {\n this._customClasses.forEach((y, index) => {\n const node = nodes.find(x => {\n if (x instanceof Element) {\n return x.className === y.class;\n }\n });\n if (node !== undefined) {\n if (found === false) {\n this.customClassId = index.toString();\n found = true;\n }\n } else if (found === false) {\n this.customClassId = '-1';\n }\n });\n }\n\n Object.keys(this.tagMap).map(e => {\n const elementById = this.doc.getElementById(this.tagMap[e] + '-' + this.id);\n const node = nodes.find(x => x.nodeName === e);\n if (node !== undefined && e === node.nodeName) {\n this.r.addClass(elementById, 'active');\n } else {\n this.r.removeClass(elementById, 'active');\n }\n });\n\n this.foreColour = this.doc.queryCommandValue('ForeColor');\n this.fontSize = this.doc.queryCommandValue('FontSize');\n this.fontName = this.doc.queryCommandValue('FontName').replace(/\"/g, '');\n this.backColor = this.doc.queryCommandValue('backColor');\n }\n\n /**\n * insert URL link\n */\n insertUrl() {\n let url = 'https:\\/\\/';\n const selection = this.editorService.savedSelection;\n if (selection && selection.commonAncestorContainer.parentElement.nodeName === 'A') {\n const parent = selection.commonAncestorContainer.parentElement as HTMLAnchorElement;\n if (parent.href !== '') {\n url = parent.href;\n }\n }\n url = prompt('Insert URL link', url);\n if (url && url !== '' && url !== 'https://') {\n this.editorService.createLink(url);\n }\n }\n\n /**\n * insert Video link\n */\n insertVideo() {\n this.execute.emit('');\n const url = prompt('Insert Video link', `https://`);\n if (url && url !== '' && url !== `https://`) {\n this.editorService.insertVideo(url);\n }\n }\n\n /** insert color */\n insertColor(color: string, where: string) {\n this.editorService.insertColor(color, where);\n this.execute.emit('');\n }\n\n /**\n * set font Name/family\n * @param foreColor string\n */\n setFontName(foreColor: string): void {\n this.editorService.setFontName(foreColor);\n this.execute.emit('');\n }\n\n /**\n * set font Size\n * @param fontSize string\n */\n setFontSize(fontSize: string): void {\n this.editorService.setFontSize(fontSize);\n this.execute.emit('');\n }\n\n /**\n * toggle editor mode (WYSIWYG or SOURCE)\n * @param m boolean\n */\n setEditorMode(m: boolean) {\n const toggleEditorModeButton = this.doc.getElementById('toggleEditorMode' + '-' + this.id);\n if (m) {\n this.r.addClass(toggleEditorModeButton, 'active');\n } else {\n this.r.removeClass(toggleEditorModeButton, 'active');\n }\n this.htmlMode = m;\n }\n\n /**\n * Upload image when file is selected.\n */\n onFileChanged(event) {\n const file = event.target.files[0];\n if (file.type.includes('image/')) {\n if (this.upload) {\n this.upload(file).subscribe(() => this.watchUploadImage);\n } else if (this.uploadUrl) {\n this.editorService.uploadImage(file).subscribe(() => this.watchUploadImage);\n } else {\n const reader = new FileReader();\n reader.onload = (e: ProgressEvent) => {\n const fr = e.currentTarget as FileReader;\n this.editorService.insertImage(fr.result.toString());\n };\n reader.readAsDataURL(file);\n }\n }\n }\n\n watchUploadImage(response: HttpResponse<{imageUrl: string}>, event) {\n const { imageUrl } = response.body;\n this.editorService.insertImage(imageUrl);\n event.srcElement.value = null;\n }\n\n /**\n * Set custom class\n */\n setCustomClass(classId: string) {\n if (classId === '-1') {\n this.execute.emit('clear');\n } else {\n this.editorService.createCustomClass(this._customClasses[+classId]);\n }\n }\n\n isButtonHidden(name: string): boolean {\n if (!name) {\n return false;\n }\n if (!(this.hiddenButtons instanceof Array)) {\n return false;\n }\n let result: any;\n for (const arr of this.hiddenButtons) {\n if (arr instanceof Array) {\n result = arr.find(item => item === name);\n }\n if (result) {\n break;\n }\n }\n return result !== undefined;\n }\n\n focus() {\n this.execute.emit('focus');\n console.log('focused');\n }\n}\n","import {\n Attribute,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef, HostBinding,\n HostListener,\n Input,\n OnInit,\n Output,\n Renderer2,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {isDefined} from '../utils';\n\nexport interface SelectOption {\n label: string;\n value: string;\n}\n\n@Component({\n selector: 'ae-select',\n templateUrl: './ae-select.component.html',\n styleUrls: ['./ae-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AeSelectComponent),\n multi: true,\n }\n ]\n})\nexport class AeSelectComponent implements OnInit, ControlValueAccessor {\n @Input() options: SelectOption[] = [];\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('hidden') isHidden: boolean;\n\n selectedOption: SelectOption;\n disabled = false;\n optionId = 0;\n\n get label(): string {\n return this.selectedOption && this.selectedOption.hasOwnProperty('label') ? this.selectedOption.label : 'Select';\n }\n\n opened = false;\n\n get value(): string {\n return this.selectedOption.value;\n }\n\n @HostBinding('style.display') hidden = 'inline-block';\n\n // eslint-disable-next-line @angular-eslint/no-output-native, @angular-eslint/no-output-rename\n @Output('change') changeEvent = new EventEmitter();\n\n @ViewChild('labelButton', {static: true}) labelButton: ElementRef;\n\n constructor(private elRef: ElementRef,\n private r: Renderer2,\n ) {}\n\n ngOnInit() {\n this.selectedOption = this.options[0];\n if (isDefined(this.isHidden) && this.isHidden) {\n this.hide();\n }\n }\n\n hide() {\n this.hidden = 'none';\n }\n\n optionSelect(option: SelectOption, event: MouseEvent) {\n event.stopPropagation();\n this.setValue(option.value);\n this.onChange(this.selectedOption.value);\n this.changeEvent.emit(this.selectedOption.value);\n this.onTouched();\n this.opened = false;\n }\n\n toggleOpen(event: MouseEvent) {\n // event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.opened = !this.opened;\n }\n\n @HostListener('document:click', ['$event'])\n onClick($event: MouseEvent) {\n if (!this.elRef.nativeElement.contains($event.target)) {\n this.close();\n }\n }\n\n close() {\n this.opened = false;\n }\n\n get isOpen(): boolean {\n return this.opened;\n }\n\n writeValue(value) {\n if (!value || typeof value !== 'string') {\n return;\n }\n this.setValue(value);\n }\n\n setValue(value) {\n let index = 0;\n const selectedEl = this.options.find((el, i) => {\n index = i;\n return el.value === value;\n });\n if (selectedEl) {\n this.selectedOption = selectedEl;\n this.optionId = index;\n }\n }\n\n onChange: any = () => {\n }\n onTouched: any = () => {\n }\n\n registerOnChange(fn) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.labelButton.nativeElement.disabled = isDisabled;\n const div = this.labelButton.nativeElement;\n const action = isDisabled ? 'addClass' : 'removeClass';\n this.r[action](div, 'disabled');\n this.disabled = isDisabled;\n }\n\n @HostListener('keydown', ['$event'])\n handleKeyDown($event: KeyboardEvent) {\n if (!this.opened) {\n return;\n }\n // console.log($event.key);\n // if (KeyCode[$event.key]) {\n switch ($event.key) {\n case 'ArrowDown':\n this._handleArrowDown($event);\n break;\n case 'ArrowUp':\n this._handleArrowUp($event);\n break;\n case 'Space':\n this._handleSpace($event);\n break;\n case 'Enter':\n this._handleEnter($event);\n break;\n case 'Tab':\n this._handleTab($event);\n break;\n case 'Escape':\n this.close();\n $event.preventDefault();\n break;\n case 'Backspace':\n this._handleBackspace();\n break;\n }\n // } else if ($event.key && $event.key.length === 1) {\n // this._keyPress$.next($event.key.toLocaleLowerCase());\n // }\n }\n\n _handleArrowDown($event) {\n if (this.optionId < this.options.length - 1) {\n this.optionId++;\n }\n }\n\n _handleArrowUp($event) {\n if (this.optionId >= 1) {\n this.optionId--;\n }\n }\n\n _handleSpace($event) {\n\n }\n\n _handleEnter($event) {\n this.optionSelect(this.options[this.optionId], $event);\n }\n\n _handleTab($event) {\n\n }\n\n _handleBackspace() {\n\n }\n}\n","import {NgModule} from '@angular/core';\nimport {AngularEditorComponent} from './angular-editor.component';\nimport {AngularEditorToolbarComponent} from './angular-editor-toolbar.component';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\nimport { AeSelectComponent } from './ae-select/ae-select.component';\n\n@NgModule({\n imports: [\n CommonModule, FormsModule, ReactiveFormsModule\n ],\n declarations: [AngularEditorComponent, AngularEditorToolbarComponent, AeSelectComponent],\n exports: [AngularEditorComponent, AngularEditorToolbarComponent]\n})\nexport class AngularEditorModule {\n}\n","/*\n * Public API Surface of angular-editor\n */\n\nexport * from './lib/angular-editor.service';\nexport * from './lib/angular-editor.component';\nexport * from './lib/angular-editor-toolbar.component';\nexport * from './lib/angular-editor.module';\nexport { AngularEditorConfig, CustomClass } from './lib/config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {AeSelectComponent as ɵa} from './lib/ae-select/ae-select.component';"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- export { AeSelectComponent as ɵa } from './lib/ae-select/ae-select.component';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ export { AeSelectComponent as ɵa } from './lib/ae-select/ae-select.component';