{"version":3,"file":"TelerikEditorHelpers.js","sourceRoot":"","sources":["../../TS/TelerikEditorHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { IJSModule } from \"./IJSModule.js\";\r\n\r\nexport class TelerikEditorHelpers implements IJSModule {\r\n //IJSService\r\n public serviceName: string;\r\n\r\n private componentInstanceObj = null;\r\n\r\n public initialize(): boolean {\r\n this.serviceName = 'TelerikEditorHelpers';\r\n\r\n window['TelerikEditorHelpers'] = this;\r\n\r\n return true;\r\n }\r\n\r\n public passComponentInstance(obj: object) {\r\n this.componentInstanceObj = obj;\r\n }\r\n\r\n private getContentEditableContainer(containerId: string): HTMLElement {\r\n let containerEl = document.getElementById(containerId);\r\n let contentContainer = null;\r\n\r\n if (containerEl != null && containerEl != undefined) {\r\n let containers = containerEl.getElementsByClassName('k-content');\r\n if (containers != null && containers != undefined && containers.length > 0) {\r\n contentContainer = containers[0];\r\n }\r\n }\r\n\r\n return contentContainer;\r\n }\r\n\r\n public getCaretPosition(containerId: string): number {\r\n let contentContainer = this.getContentEditableContainer(containerId);\r\n\r\n let caretOffset = -1;\r\n\r\n if (contentContainer != null) {\r\n //TODO: VM - to refactor code below. \"Node's stepper\" has to be moved to separate method or anonymous func\r\n if (window.getSelection && window.getSelection().getRangeAt) {\r\n let selectedObj = window.getSelection();\r\n let range = selectedObj.getRangeAt(0);\r\n let rangeCount = 0;\r\n\r\n let anchorNode = selectedObj.anchorNode as HTMLElement;\r\n let anchorParentNode = anchorNode.parentNode as HTMLElement;\r\n\r\n if (anchorParentNode != contentContainer && anchorParentNode.outerHTML) {\r\n rangeCount += anchorParentNode.outerHTML.split('>')[0].length + 1;\r\n }\r\n\r\n if (anchorParentNode == contentContainer && anchorNode.outerHTML) {\r\n rangeCount += anchorNode.outerHTML.split('>')[0].length + 1;\r\n }\r\n\r\n let childNodes = anchorParentNode.childNodes;\r\n for (let i = 0; i < childNodes.length; i++) {\r\n let child = childNodes[i] as HTMLElement;\r\n if (child == anchorNode) {\r\n break;\r\n }\r\n if (child.outerHTML) {\r\n rangeCount += child.outerHTML.length;\r\n }\r\n else if (child.nodeType == 3) {\r\n rangeCount += child.textContent.length;\r\n }\r\n }\r\n\r\n let pNode = anchorParentNode as Node;\r\n let container;\r\n while (pNode != null && pNode != contentContainer) {\r\n container = pNode;\r\n pNode = pNode.parentNode;\r\n\r\n let childNodes = pNode.childNodes;\r\n\r\n for (let i = 0; i < childNodes.length; i++) {\r\n let child = childNodes[i] as HTMLElement;\r\n\r\n let pNodeOpeningTagLength = 0;\r\n if (i == 0 && pNode != contentContainer) {\r\n let anchorPP = pNode as HTMLElement;\r\n if (anchorPP && anchorPP.outerHTML) {\r\n pNodeOpeningTagLength = anchorPP.outerHTML.split('>')[0].length + 1;\r\n }\r\n }\r\n\r\n if (child == container || child == anchorParentNode) {\r\n if (child == container) {\r\n rangeCount += pNodeOpeningTagLength;\r\n }\r\n break;\r\n }\r\n if (child.outerHTML) {\r\n rangeCount += child.outerHTML.length;\r\n }\r\n else if (child.nodeType == 3) {\r\n rangeCount += child.textContent.length;\r\n }\r\n\r\n rangeCount += pNodeOpeningTagLength;\r\n }\r\n }\r\n\r\n return range.startOffset + rangeCount;\r\n }\r\n }\r\n\r\n return caretOffset;\r\n }\r\n\r\n public setCaretPosition(containerId: string, nodeId: string): void {\r\n let contentContainer = this.getContentEditableContainer(containerId);\r\n\r\n if (contentContainer != null) {\r\n if (this.componentInstanceObj) {\r\n this.componentInstanceObj.invokeMethodAsync('DraftMessageUpdateUI').then(() => {\r\n contentContainer.focus();\r\n\r\n let containerEl = document.getElementById(nodeId);\r\n\r\n if (containerEl != null && containerEl != undefined) {\r\n if (window.getSelection && window.getSelection().getRangeAt) {\r\n let range = document.createRange();\r\n let sel = window.getSelection();\r\n\r\n let siblings = containerEl.parentNode.childNodes;\r\n let nodeNdx = Array.prototype.indexOf.call(siblings, containerEl);\r\n\r\n //VM - increased for 1 more for buffer span. Remove after clearFormatting will be fixed\r\n range.setStartAfter(siblings[nodeNdx + 1]);\r\n range.collapse(true);\r\n\r\n sel.removeAllRanges();\r\n sel.addRange(range);\r\n\r\n this.componentInstanceObj.invokeMethodAsync('DraftMessageCleanFormatting').then();\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n public insertUserLinkHTML(id: string, title: string): void {\r\n if (this.componentInstanceObj && id != null && id.length > 0 && title != null && title.length > 0) {\r\n this.componentInstanceObj.invokeMethodAsync('DraftMessageInsertUserLinkHTML').then(() => {\r\n setTimeout(() => {\r\n let el = document.getElementById(id);\r\n if (el != null && el != undefined) {\r\n console.log(title, id);\r\n el.setAttribute('link-title', title);\r\n el.setAttribute('contenteditable', 'false');\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n public setUserLinkTitle(id: string, title: string): void {\r\n if (this.componentInstanceObj && id != null && id.length > 0 && title != null && title.length > 0) {\r\n let el = document.getElementById(id);\r\n if (el != null && el != undefined) {\r\n el.setAttribute('link-title', title);\r\n this.componentInstanceObj.invokeMethodAsync('DraftMessageUpdateUI').then();\r\n }\r\n }\r\n }\r\n}\r\n"]}