{"version":3,"sources":["webpack:///./node_modules/@progress/kendo-ui/js/editor/range.js"],"names":["module","exports","modules","installedModules","__webpack_require__","moduleId","id","loaded","call","m","c","p","0","3","Error","1007","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","f","define","apply","undefined","$","kendo","window","Class","extend","Editor","ui","editor","browser","support","dom","Dom","findNodeIndex","isDataNode","findClosestAncestor","getNodeLength","normalize","SelectionUtils","selectionFromWindow","getSelection","W3CSelection","document","selectionFromRange","range","rangeDocument","RangeUtils","documentFromRange","selectionFromDocument","windowFromDocument","W3CRange","init","doc","this","ownerDocument","startContainer","endContainer","commonAncestorContainer","startOffset","endOffset","collapsed","setStart","node","offset","updateRangeProperties","fixIvalidRange","setEnd","setStartBefore","parentNode","setStartAfter","setEndBefore","setEndAfter","selectNode","selectNodeContents","nodeType","length","collapse","toStart","that","deleteContents","cloneRange","deleteSubtree","iterator","next","hasPartialSubtree","getSubtreeIterator","remove","RangeIterator","cloneContents","cloneSubtree","frag","createDocumentFragment","cloneNode","appendChild","extractContents","extractSubtree","originalRange","insertNode","nodeValue","splitDataNode","insertAfter","insertAt","toString","startNodeName","nodeName","endNodeName","join","compareBoundaries","start","end","container","root","commonAncestor","startAncestor","endAncestor","isInvalidRange","ex","isAncestorOf","fromNode","_current","_next","_end","childNodes","nextSibling","hasNext","current","deleteData","traverse","callback","delta","inStartContainer","inEndContainer","parent","nodeIndex","isAncestorOrSelf","getSubRange","subRange","rangeCount","addRange","textRange","body","createTextRange","adoptContainer","select","removeAllRanges","selection","type","empty","getRangeAt","element","createRange","item","parentElement","textRangeContainer","adoptEndPoint","compareEndPoints","movedStart","movedEnd","firstChild","lastChild","left","duplicate","right","cursorNode","textOffset","isData","anchorNode","anchorParent","cursor","toLowerCase","moveToElementText","setEndPoint","insertBefore","create","result","target","previous","args","index","comparison","appended","innerHTML","previousSibling","text","RangeEnumerator","enumerate","nodes","visit","is","isEmptyspace","push","ImmutablesRangeIterator","immutable","Immutables","fn","ImmutablesRangeEnumerator","RestorePoint","options","rootNode","getEditable","name","nodeToPath","immutables","serializedImmutables","removeImmutables","html","restoreImmutables","lastType","attributes","contentEditable","restoreHtml","removeChildren","value","path","toRangePoint","denormalizedOffset","toRange","Marker","caret","addCaret","className","stripBomNode","removeCaret","containerIndex","textNode","lastTextNode","msie","add","expand","isExpandable","rangeBoundary","_removeDeadMarkers","bom","createTextNode","_normalizedIndex","pointer","shouldNormalizeStart","shouldNormalizeEnd","isBomSelected","isBom","charAt","collapsedToStart","startParent","endParent","startIndex","endIndex","boundary","textNodes","significantChildNodes","editableTextNodes","immutableParent","selectRange","image","stringify","format","split","trim","partition","partitionRange","contents","mapAll","map","mapped","inArray","getAll","predicate","selector","getMarkers","isStartOf","insignificant","isEndOf","test","wrapSelectedElements","startEditable","editableParent","endEditable","isEnd","i","beforeCaret","afterCaret","reverse","search","substring","jQuery","1008"],"mappings":"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","file":"js/chunk-vendors~c3c85f9e.2844d024.js","sourcesContent":["module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(1007);\n\tmodule.exports = __webpack_require__(1007);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1007:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*jshint boss: true */\n\n\t(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1008) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\t(function($) {\n\n\t // Imports ================================================================\n\t var kendo = window.kendo,\n\t Class = kendo.Class,\n\t extend = $.extend,\n\t Editor = kendo.ui.editor,\n\t browser = kendo.support.browser,\n\t dom = Editor.Dom,\n\t findNodeIndex = dom.findNodeIndex,\n\t isDataNode = dom.isDataNode,\n\t findClosestAncestor = dom.findClosestAncestor,\n\t getNodeLength = dom.getNodeLength,\n\t normalize = dom.normalize;\n\n\tvar SelectionUtils = {\n\t selectionFromWindow: function(window) {\n\t if(!window) {\n\t return;\n\t }\n\n\t if (!(\"getSelection\" in window)) {\n\t return new W3CSelection(window.document);\n\t }\n\n\t return window.getSelection();\n\t },\n\n\t selectionFromRange: function(range) {\n\t var rangeDocument = RangeUtils.documentFromRange(range);\n\t return SelectionUtils.selectionFromDocument(rangeDocument);\n\t },\n\n\t selectionFromDocument: function(document) {\n\t return SelectionUtils.selectionFromWindow(dom.windowFromDocument(document));\n\t }\n\t};\n\n\tvar W3CRange = Class.extend({\n\t init: function(doc) {\n\t $.extend(this, {\n\t ownerDocument: doc, /* not part of the spec; used when cloning ranges, traversing the dom and creating fragments */\n\t startContainer: doc,\n\t endContainer: doc,\n\t commonAncestorContainer: doc,\n\t startOffset: 0,\n\t endOffset: 0,\n\t collapsed: true\n\t });\n\t },\n\n\t // Positioning Methods\n\t setStart: function (node, offset) {\n\t this.startContainer = node;\n\t this.startOffset = offset;\n\t updateRangeProperties(this);\n\t fixIvalidRange(this, true);\n\t },\n\n\t setEnd: function (node, offset) {\n\t this.endContainer = node;\n\t this.endOffset = offset;\n\t updateRangeProperties(this);\n\t fixIvalidRange(this, false);\n\t },\n\n\t setStartBefore: function (node) {\n\t this.setStart(node.parentNode, findNodeIndex(node));\n\t },\n\n\t setStartAfter: function (node) {\n\t this.setStart(node.parentNode, findNodeIndex(node) + 1);\n\t },\n\n\t setEndBefore: function (node) {\n\t this.setEnd(node.parentNode, findNodeIndex(node));\n\t },\n\n\t setEndAfter: function (node) {\n\t this.setEnd(node.parentNode, findNodeIndex(node) + 1);\n\t },\n\n\t selectNode: function (node) {\n\t this.setStartBefore(node);\n\t this.setEndAfter(node);\n\t },\n\n\t selectNodeContents: function (node) {\n\t this.setStart(node, 0);\n\t this.setEnd(node, node[node.nodeType === 1 ? 'childNodes' : 'nodeValue'].length);\n\t },\n\n\t collapse: function (toStart) {\n\t var that = this;\n\n\t if (toStart) {\n\t that.setEnd(that.startContainer, that.startOffset);\n\t } else {\n\t that.setStart(that.endContainer, that.endOffset);\n\t }\n\t },\n\n\t // Editing Methods\n\n\t deleteContents: function () {\n\t var that = this,\n\t range = that.cloneRange();\n\n\t if (that.startContainer != that.commonAncestorContainer) {\n\t that.setStartAfter(findClosestAncestor(that.commonAncestorContainer, that.startContainer));\n\t }\n\n\t that.collapse(true);\n\n\t (function deleteSubtree(iterator) {\n\t while (iterator.next()) {\n\t if (iterator.hasPartialSubtree()) {\n\t deleteSubtree(iterator.getSubtreeIterator());\n\t } else {\n\t iterator.remove();\n\t }\n\t }\n\t })(new RangeIterator(range));\n\t },\n\n\t cloneContents: function () {\n\t // clone subtree\n\t var document = RangeUtils.documentFromRange(this);\n\t return (function cloneSubtree(iterator) {\n\t var node, frag = document.createDocumentFragment();\n\n\t while (node = iterator.next()) {\n\t node = node.cloneNode(!iterator.hasPartialSubtree());\n\n\t if (iterator.hasPartialSubtree()) {\n\t node.appendChild(cloneSubtree(iterator.getSubtreeIterator()));\n\t }\n\n\t frag.appendChild(node);\n\t }\n\n\t return frag;\n\t })(new RangeIterator(this));\n\t },\n\n\t extractContents: function () {\n\t var that = this,\n\t range = that.cloneRange();\n\n\t if (that.startContainer != that.commonAncestorContainer) {\n\t that.setStartAfter(findClosestAncestor(that.commonAncestorContainer, that.startContainer));\n\t }\n\n\t that.collapse(true);\n\n\t var document = RangeUtils.documentFromRange(that);\n\n\t return (function extractSubtree(iterator) {\n\t var node, frag = document.createDocumentFragment();\n\n\t while (node = iterator.next()) {\n\t if (iterator.hasPartialSubtree()) {\n\t node = node.cloneNode(false);\n\t node.appendChild(extractSubtree(iterator.getSubtreeIterator()));\n\t } else {\n\t iterator.remove(that.originalRange);\n\t }\n\n\t frag.appendChild(node);\n\t }\n\n\t return frag;\n\t })(new RangeIterator(range));\n\t },\n\n\t insertNode: function (node) {\n\t var that = this;\n\n\t if (isDataNode(that.startContainer)) {\n\t if (that.startOffset != that.startContainer.nodeValue.length) {\n\t dom.splitDataNode(that.startContainer, that.startOffset);\n\t }\n\n\t dom.insertAfter(node, that.startContainer);\n\t } else {\n\t dom.insertAt(that.startContainer, node, that.startOffset);\n\t }\n\n\t that.setStart(that.startContainer, that.startOffset);\n\t },\n\n\t cloneRange: function () {\n\t // fast copy\n\t return $.extend(new W3CRange(this.ownerDocument), {\n\t startContainer: this.startContainer,\n\t endContainer: this.endContainer,\n\t commonAncestorContainer: this.commonAncestorContainer,\n\t startOffset: this.startOffset,\n\t endOffset: this.endOffset,\n\t collapsed: this.collapsed,\n\n\t originalRange: this /* not part of the spec; used to update the original range when calling extractContents() on clones */\n\t });\n\t },\n\n\t // used for debug purposes\n\t toString: function () {\n\t var startNodeName = this.startContainer.nodeName,\n\t endNodeName = this.endContainer.nodeName;\n\n\t return [startNodeName == \"#text\" ? this.startContainer.nodeValue : startNodeName, '(', this.startOffset, ') : ',\n\t endNodeName == \"#text\" ? this.endContainer.nodeValue : endNodeName, '(', this.endOffset, ')'].join('');\n\t }\n\t});\n\n\tW3CRange.fromNode = function(node) {\n\t return new W3CRange(node.ownerDocument);\n\t};\n\n\t/* can be used in Range.compareBoundaryPoints if we need it one day */\n\tfunction compareBoundaries(start, end, startOffset, endOffset) {\n\t if (start == end) {\n\t return endOffset - startOffset;\n\t }\n\n\t // end is child of start\n\t var container = end;\n\t while (container && container.parentNode != start) {\n\t container = container.parentNode;\n\t }\n\n\t if (container) {\n\t return findNodeIndex(container) - startOffset;\n\t }\n\n\t // start is child of end\n\t container = start;\n\t while (container && container.parentNode != end) {\n\t container = container.parentNode;\n\t }\n\n\t if (container) {\n\t return endOffset - findNodeIndex(container) - 1;\n\t }\n\n\t // deep traversal\n\t var root = dom.commonAncestor(start, end);\n\t var startAncestor = start;\n\n\t while (startAncestor && startAncestor.parentNode != root) {\n\t startAncestor = startAncestor.parentNode;\n\t }\n\n\t if (!startAncestor) {\n\t startAncestor = root;\n\t }\n\n\t var endAncestor = end;\n\t while (endAncestor && endAncestor.parentNode != root) {\n\t endAncestor = endAncestor.parentNode;\n\t }\n\n\t if (!endAncestor) {\n\t endAncestor = root;\n\t }\n\n\t if (startAncestor == endAncestor) {\n\t return 0;\n\t }\n\n\t return findNodeIndex(endAncestor) - findNodeIndex(startAncestor);\n\t}\n\n\tfunction fixIvalidRange(range, toStart) {\n\t function isInvalidRange(range) {\n\t try {\n\t return compareBoundaries(range.startContainer, range.endContainer, range.startOffset, range.endOffset) < 0;\n\t } catch (ex) {\n\t // range was initially invalid (e.g. when cloned from invalid range) - it must be fixed\n\t return true;\n\t }\n\t }\n\n\t if (isInvalidRange(range)) {\n\t if (toStart) {\n\t range.commonAncestorContainer = range.endContainer = range.startContainer;\n\t range.endOffset = range.startOffset;\n\t } else {\n\t range.commonAncestorContainer = range.startContainer = range.endContainer;\n\t range.startOffset = range.endOffset;\n\t }\n\n\t range.collapsed = true;\n\t }\n\t}\n\n\tfunction updateRangeProperties(range) {\n\t range.collapsed = range.startContainer == range.endContainer && range.startOffset == range.endOffset;\n\n\t var node = range.startContainer;\n\t while (node && node != range.endContainer && !dom.isAncestorOf(node, range.endContainer)) {\n\t node = node.parentNode;\n\t }\n\n\t range.commonAncestorContainer = node;\n\t}\n\n\tvar RangeIterator = Class.extend({\n\t init: function(range) {\n\t $.extend(this, {\n\t range: range,\n\t _current: null,\n\t _next: null,\n\t _end: null\n\t });\n\n\t if (range.collapsed) {\n\t return;\n\t }\n\n\t var root = range.commonAncestorContainer;\n\n\t this._next = range.startContainer == root && !isDataNode(range.startContainer) ?\n\t range.startContainer.childNodes[range.startOffset] :\n\t findClosestAncestor(root, range.startContainer);\n\n\t this._end = range.endContainer == root && !isDataNode(range.endContainer) ?\n\t range.endContainer.childNodes[range.endOffset] :\n\t findClosestAncestor(root, range.endContainer).nextSibling;\n\t },\n\n\t hasNext: function () {\n\t return !!this._next;\n\t },\n\n\t next: function () {\n\t var that = this,\n\t current = that._current = that._next;\n\t that._next = that._current && that._current.nextSibling != that._end ?\n\t that._current.nextSibling : null;\n\n\t if (isDataNode(that._current)) {\n\t if (that.range.endContainer == that._current) {\n\t current = current.cloneNode(true);\n\t current.deleteData(that.range.endOffset, current.length - that.range.endOffset);\n\t }\n\n\t if (that.range.startContainer == that._current) {\n\t current = current.cloneNode(true);\n\t current.deleteData(0, that.range.startOffset);\n\t }\n\t }\n\n\t return current;\n\t },\n\n\t traverse: function (callback) {\n\t var that = this,\n\t current;\n\n\t function next() {\n\t that._current = that._next;\n\t that._next = that._current && that._current.nextSibling != that._end ? that._current.nextSibling : null;\n\t return that._current;\n\t }\n\n\t while (current = next()) {\n\t if (that.hasPartialSubtree()) {\n\t that.getSubtreeIterator().traverse(callback);\n\t } else {\n\t callback(current);\n\t }\n\t }\n\n\t return current;\n\t },\n\n\t remove: function (originalRange) {\n\t var that = this,\n\t inStartContainer = that.range.startContainer == that._current,\n\t inEndContainer = that.range.endContainer == that._current,\n\t start, end, delta;\n\n\t if (isDataNode(that._current) && (inStartContainer || inEndContainer)) {\n\t start = inStartContainer ? that.range.startOffset : 0;\n\t end = inEndContainer ? that.range.endOffset : that._current.length;\n\t delta = end - start;\n\n\t if (originalRange && (inStartContainer || inEndContainer)) {\n\t if (that._current == originalRange.startContainer && start <= originalRange.startOffset) {\n\t originalRange.startOffset -= delta;\n\t }\n\n\t if (that._current == originalRange.endContainer && end <= originalRange.endOffset) {\n\t originalRange.endOffset -= delta;\n\t }\n\t }\n\n\t that._current.deleteData(start, delta);\n\t } else {\n\t var parent = that._current.parentNode;\n\n\t if (originalRange && (that.range.startContainer == parent || that.range.endContainer == parent)) {\n\t var nodeIndex = findNodeIndex(that._current);\n\n\t if (parent == originalRange.startContainer && nodeIndex <= originalRange.startOffset) {\n\t originalRange.startOffset -= 1;\n\t }\n\n\t if (parent == originalRange.endContainer && nodeIndex < originalRange.endOffset) {\n\t originalRange.endOffset -= 1;\n\t }\n\t }\n\n\t dom.remove(that._current);\n\t }\n\t },\n\n\t hasPartialSubtree: function () {\n\t return !isDataNode(this._current) &&\n\t (dom.isAncestorOrSelf(this._current, this.range.startContainer) ||\n\t dom.isAncestorOrSelf(this._current, this.range.endContainer));\n\t },\n\n\t getSubtreeIterator: function () {\n\t return new RangeIterator(this.getSubRange());\n\t },\n\n\t getSubRange: function(){\n\t var that = this,\n\t subRange = that.range.cloneRange();\n\t subRange.selectNodeContents(that._current);\n\t if (dom.isAncestorOrSelf(that._current, that.range.startContainer)) {\n\t subRange.setStart(that.range.startContainer, that.range.startOffset);\n\t }\n\t if (dom.isAncestorOrSelf(that._current, that.range.endContainer)) {\n\t subRange.setEnd(that.range.endContainer, that.range.endOffset);\n\t }\n\n\t return subRange;\n\t }\n\t});\n\n\tvar W3CSelection = Class.extend({\n\t init: function(doc) {\n\t this.ownerDocument = doc;\n\t this.rangeCount = 1;\n\t },\n\n\t addRange: function (range) {\n\t var textRange = this.ownerDocument.body.createTextRange();\n\n\t // end container should be adopted first in order to prevent selection with negative length\n\t adoptContainer(textRange, range, false);\n\t adoptContainer(textRange, range, true);\n\n\t textRange.select();\n\t },\n\n\t removeAllRanges: function () {\n\t var selection = this.ownerDocument.selection;\n\n\t if (selection.type != \"None\") {\n\t selection.empty();\n\t }\n\t },\n\n\t getRangeAt: function () {\n\t var textRange,\n\t range = new W3CRange(this.ownerDocument),\n\t selection = this.ownerDocument.selection,\n\t element, commonAncestor;\n\n\t try {\n\t textRange = selection.createRange();\n\t element = textRange.item ? textRange.item(0) : textRange.parentElement();\n\t if (element.ownerDocument != this.ownerDocument) {\n\t return range;\n\t }\n\t } catch (ex) {\n\t return range;\n\t }\n\n\t if (selection.type == \"Control\") {\n\t range.selectNode(textRange.item(0));\n\t } else {\n\t commonAncestor = textRangeContainer(textRange);\n\t adoptEndPoint(textRange, range, commonAncestor, true);\n\t adoptEndPoint(textRange, range, commonAncestor, false);\n\n\t if (range.startContainer.nodeType == 9) {\n\t range.setStart(range.endContainer, range.startOffset);\n\t }\n\n\t if (range.endContainer.nodeType == 9) {\n\t range.setEnd(range.startContainer, range.endOffset);\n\t }\n\n\t if (textRange.compareEndPoints(\"StartToEnd\", textRange) === 0) {\n\t range.collapse(false);\n\t }\n\n\t var startContainer = range.startContainer,\n\t endContainer = range.endContainer,\n\t body = this.ownerDocument.body;\n\n\t if (!range.collapsed && range.startOffset === 0 && range.endOffset == getNodeLength(range.endContainer) && // check for full body selection\n\t !(startContainer == endContainer && isDataNode(startContainer) && startContainer.parentNode == body)) { // but not when single textnode is selected\n\t var movedStart = false,\n\t movedEnd = false;\n\n\t while (findNodeIndex(startContainer) === 0 && startContainer == startContainer.parentNode.firstChild && startContainer != body) {\n\t startContainer = startContainer.parentNode;\n\t movedStart = true;\n\t }\n\n\t while (findNodeIndex(endContainer) == getNodeLength(endContainer.parentNode) - 1 && endContainer == endContainer.parentNode.lastChild && endContainer != body) {\n\t endContainer = endContainer.parentNode;\n\t movedEnd = true;\n\t }\n\n\t if (startContainer == body && endContainer == body && movedStart && movedEnd) {\n\t range.setStart(startContainer, 0);\n\t range.setEnd(endContainer, getNodeLength(body));\n\t }\n\t }\n\t }\n\n\t return range;\n\t }\n\t});\n\n\tfunction textRangeContainer(textRange) {\n\t var left = textRange.duplicate(),\n\t right = textRange.duplicate();\n\n\t left.collapse(true);\n\t right.collapse(false);\n\n\t return dom.commonAncestor(textRange.parentElement(), left.parentElement(), right.parentElement());\n\t}\n\n\tfunction adoptContainer(textRange, range, start) {\n\t // find anchor node and offset\n\t var container = range[start ? \"startContainer\" : \"endContainer\"],\n\t offset = range[start ? \"startOffset\" : \"endOffset\"],\n\t textOffset = 0,\n\t isData = isDataNode(container),\n\t anchorNode = isData ? container : container.childNodes[offset] || null,\n\t anchorParent = isData ? container.parentNode : container,\n\t doc = range.ownerDocument,\n\t cursor = doc.body.createTextRange(),\n\t cursorNode;\n\n\t // visible data nodes need a text offset\n\t if (container.nodeType == 3 || container.nodeType == 4) {\n\t textOffset = offset;\n\t }\n\n\t if (!anchorParent) {\n\t anchorParent = doc.body;\n\t }\n\n\t if (anchorParent.nodeName.toLowerCase() == \"img\") {\n\t cursor.moveToElementText(anchorParent);\n\t cursor.collapse(false);\n\t textRange.setEndPoint(start ? \"StartToStart\" : \"EndToStart\", cursor);\n\t } else {\n\t // create a cursor element node to position range (since we can't select text nodes)\n\t cursorNode = anchorParent.insertBefore(dom.create(doc, \"a\"), anchorNode);\n\n\t cursor.moveToElementText(cursorNode);\n\t dom.remove(cursorNode);\n\t cursor[start ? \"moveStart\" : \"moveEnd\"](\"character\", textOffset);\n\t cursor.collapse(false);\n\t textRange.setEndPoint(start ? \"StartToStart\" : \"EndToStart\", cursor);\n\t }\n\t}\n\n\tfunction adoptEndPoint(textRange, range, commonAncestor, start) {\n\t var cursorNode = dom.create(range.ownerDocument, \"a\"),\n\t cursor = textRange.duplicate(),\n\t comparison = start ? \"StartToStart\" : \"StartToEnd\",\n\t result, parent, target,\n\t previous, next,\n\t args, index,\n\t appended = false;\n\n\t cursorNode.innerHTML = \"\\ufeff\";\n\t cursor.collapse(start);\n\n\t parent = cursor.parentElement();\n\n\t if (!dom.isAncestorOrSelf(commonAncestor, parent)) {\n\t parent = commonAncestor;\n\t }\n\n\t // detect range end points\n\t // insert cursorNode within the textRange parent and move the cursor until it gets outside of the textRange\n\t do {\n\t if (appended) {\n\t parent.insertBefore(cursorNode, cursorNode.previousSibling);\n\t } else {\n\t parent.appendChild(cursorNode);\n\t appended = true;\n\t }\n\t cursor.moveToElementText(cursorNode);\n\t } while ((result = cursor.compareEndPoints(comparison, textRange)) > 0 && cursorNode.previousSibling);\n\n\t target = cursorNode.nextSibling;\n\n\t if (result == -1 && isDataNode(target)) {\n\t cursor.setEndPoint(start ? \"EndToStart\" : \"EndToEnd\", textRange);\n\n\t dom.remove(cursorNode);\n\n\t args = [target, cursor.text.length];\n\t } else {\n\t previous = !start && cursorNode.previousSibling;\n\t next = start && cursorNode.nextSibling;\n\n\t if (isDataNode(next)) {\n\t args = [next, 0];\n\t } else if (isDataNode(previous)) {\n\t args = [previous, previous.length];\n\t } else {\n\t index = findNodeIndex(cursorNode);\n\n\t if (parent.nextSibling && index == parent.childNodes.length - 1) {\n\t args = [parent.nextSibling, 0];\n\t } else {\n\t args = [parent, index];\n\t }\n\t }\n\n\t dom.remove(cursorNode);\n\t }\n\n\t range[start ? \"setStart\" : \"setEnd\"].apply(range, args);\n\t}\n\n\tvar RangeEnumerator = Class.extend({\n\t init: function(range) {\n\t this.enumerate = function () {\n\t var nodes = [];\n\n\t function visit(node) {\n\t if (dom.is(node, \"img\") || (node.nodeType == 3 && (!dom.isEmptyspace(node) || node.nodeValue == \"\\ufeff\"))) {\n\t nodes.push(node);\n\t } else {\n\t node = node.firstChild;\n\t while (node) {\n\t visit(node);\n\t node = node.nextSibling;\n\t }\n\t }\n\t }\n\n\t new RangeIterator(range).traverse(visit);\n\n\t return nodes;\n\t };\n\t }\n\t});\n\n\tvar ImmutablesRangeIterator = RangeIterator.extend({\n\t hasPartialSubtree: function () {\n\t var immutable = Editor.Immutables && Editor.Immutables.immutable;\n\t return immutable && !immutable(this._current) && RangeIterator.fn.hasPartialSubtree.call(this);\n\t },\n\n\t getSubtreeIterator: function () {\n\t return new ImmutablesRangeIterator(this.getSubRange());\n\t }\n\t});\n\n\tvar ImmutablesRangeEnumerator = Class.extend({\n\t init: function(range) {\n\t this.enumerate = function () {\n\t var nodes = [];\n\t var immutable = Editor.Immutables && Editor.Immutables.immutable;\n\t function visit(node) {\n\t if (immutable && !immutable(node)) {\n\t if (dom.is(node, \"img\") || (node.nodeType == 3 && (!dom.isEmptyspace(node) || node.nodeValue == \"\\ufeff\"))) {\n\t nodes.push(node);\n\t } else {\n\t node = node.firstChild;\n\t while (node) {\n\t visit(node);\n\t node = node.nextSibling;\n\t }\n\t }\n\t }\n\t }\n\n\t new ImmutablesRangeIterator(range).traverse(visit);\n\n\t return nodes;\n\t };\n\t }\n\t});\n\n\tvar RestorePoint = Class.extend({\n\t init: function(range, body, options) {\n\t var that = this;\n\t that.range = range;\n\t that.rootNode = RangeUtils.documentFromRange(range);\n\t that.body = body || that.getEditable(range);\n\t if (dom.name(that.body) != \"body\") {\n\t that.rootNode = that.body;\n\t }\n\n\t that.startContainer = that.nodeToPath(range.startContainer);\n\t that.endContainer = that.nodeToPath(range.endContainer);\n\t that.startOffset = that.offset(range.startContainer, range.startOffset);\n\t that.endOffset = that.offset(range.endContainer, range.endOffset);\n\n\t that.immutables = options && options.immutables;\n\n\t if (that.immutables) {\n\t that.serializedImmutables = Editor.Immutables.removeImmutables(that.body);\n\t }\n\n\t that.html = that.body.innerHTML;\n\n\t if (that.immutables && !that.serializedImmutables.empty) {\n\t Editor.Immutables.restoreImmutables(that.body, that.serializedImmutables);\n\t }\n\t },\n\n\t index: function(node) {\n\t var result = 0,\n\t lastType = node.nodeType;\n\n\t while (node = node.previousSibling) {\n\t var nodeType = node.nodeType;\n\n\t if (nodeType != 3 || lastType != nodeType) {\n\t result ++;\n\t }\n\n\t lastType = nodeType;\n\t }\n\n\t return result;\n\t },\n\n\t getEditable: function(range) {\n\t var root = range.commonAncestorContainer;\n\n\t while (root && (root.nodeType == 3 || root.attributes && (!root.attributes.contentEditable || root.attributes.contentEditable.nodeValue.toLowerCase() == \"false\"))) {\n\t root = root.parentNode;\n\t }\n\n\t return root;\n\t },\n\n\t restoreHtml: function() {\n\t var that = this;\n\n\t dom.removeChildren(that.body);\n\t that.body.innerHTML = that.html;\n\t if (that.immutables && !that.serializedImmutables.empty) {\n\t Editor.Immutables.restoreImmutables(that.body, that.serializedImmutables);\n\t }\n\t },\n\n\t offset: function(node, value) {\n\t if (node.nodeType == 3) {\n\t while ((node = node.previousSibling) && node.nodeType == 3) {\n\t value += node.nodeValue.length;\n\t }\n\t }\n\n\t return value;\n\t },\n\n\t nodeToPath: function(node) {\n\t var path = [];\n\n\t while (node != this.rootNode) {\n\t path.push(this.index(node));\n\t node = node.parentNode;\n\t }\n\n\t return path;\n\t },\n\n\t toRangePoint: function(range, start, path, denormalizedOffset) {\n\t var node = this.rootNode,\n\t length = path.length,\n\t offset = denormalizedOffset;\n\n\t while (length-- && node) {\n\t node = node.childNodes[path[length]];\n\t }\n\n\t while (node && node.nodeType == 3 && node.nodeValue.length < offset) {\n\t offset -= node.nodeValue.length;\n\t node = node.nextSibling;\n\t }\n\n\t if (node && offset >= 0) {\n\t range[start ? 'setStart' : 'setEnd'](node, offset);\n\t }\n\t },\n\n\t toRange: function () {\n\t var that = this,\n\t result = that.range.cloneRange();\n\n\t that.toRangePoint(result, true, that.startContainer, that.startOffset);\n\t that.toRangePoint(result, false, that.endContainer, that.endOffset);\n\n\t return result;\n\t }\n\n\t});\n\n\tvar Marker = Class.extend({\n\t init: function() {\n\t this.caret = null;\n\t },\n\n\t addCaret: function (range) {\n\t var that = this;\n\t var caret = that.caret = dom.create(RangeUtils.documentFromRange(range), 'span', { className: 'k-marker' });\n\t range.insertNode(caret);\n\n\t dom.stripBomNode(caret.previousSibling);\n\t dom.stripBomNode(caret.nextSibling);\n\n\t range.selectNode(caret);\n\t return caret;\n\t },\n\n\t removeCaret: function (range) {\n\t var that = this,\n\t previous = that.caret.previousSibling,\n\t startOffset = 0;\n\n\t if (previous) {\n\t startOffset = isDataNode(previous) ? previous.nodeValue.length : findNodeIndex(previous);\n\t }\n\n\t var container = that.caret.parentNode;\n\t var containerIndex = previous ? findNodeIndex(previous) : 0;\n\n\t dom.remove(that.caret);\n\t normalize(container);\n\n\t var node = container.childNodes[containerIndex];\n\n\t if (isDataNode(node)) {\n\t range.setStart(node, startOffset);\n\t } else if (node) {\n\t var textNode = dom.lastTextNode(node);\n\t if (textNode) {\n\t range.setStart(textNode, textNode.nodeValue.length);\n\t } else {\n\t range[previous ? 'setStartAfter' : 'setStartBefore'](node);\n\t }\n\t } else {\n\t if (!browser.msie && !container.innerHTML) {\n\t container.innerHTML = '
';\n\t }\n\n\t range.selectNodeContents(container);\n\t }\n\t range.collapse(true);\n\t },\n\n\t add: function (range, expand) {\n\t var that = this;\n\n\t var collapsed = range.collapsed && !RangeUtils.isExpandable(range);\n\t var doc = RangeUtils.documentFromRange(range);\n\n\t if (expand && range.collapsed) {\n\t that.addCaret(range);\n\t range = RangeUtils.expand(range);\n\t }\n\n\t var rangeBoundary = range.cloneRange();\n\n\t rangeBoundary.collapse(false);\n\t that.end = dom.create(doc, 'span', { className: 'k-marker' });\n\t rangeBoundary.insertNode(that.end);\n\n\t rangeBoundary = range.cloneRange();\n\t rangeBoundary.collapse(true);\n\t that.start = that.end.cloneNode(true);\n\t rangeBoundary.insertNode(that.start);\n\n\t that._removeDeadMarkers(that.start, that.end);\n\n\t if (collapsed) {\n\t var bom = doc.createTextNode(\"\\ufeff\");\n\t dom.insertAfter(bom.cloneNode(), that.start);\n\t dom.insertBefore(bom, that.end);\n\t }\n\n\t normalize(range.commonAncestorContainer);\n\n\t range.setStartBefore(that.start);\n\t range.setEndAfter(that.end);\n\n\t return range;\n\t },\n\n\t _removeDeadMarkers: function(start, end) {\n\t if (start.previousSibling && start.previousSibling.nodeValue == \"\\ufeff\") {\n\t dom.remove(start.previousSibling);\n\t }\n\n\t if (end.nextSibling && end.nextSibling.nodeValue == \"\\ufeff\") {\n\t dom.remove(end.nextSibling);\n\t }\n\t },\n\n\t _normalizedIndex: function(node) {\n\t var index = findNodeIndex(node);\n\t var pointer = node;\n\n\t while (pointer.previousSibling) {\n\t if (pointer.nodeType == 3 && pointer.previousSibling.nodeType == 3) {\n\t index--;\n\t }\n\n\t pointer = pointer.previousSibling;\n\t }\n\n\t return index;\n\t },\n\n\t remove: function (range) {\n\t var that = this,\n\t start = that.start,\n\t end = that.end,\n\t shouldNormalizeStart,\n\t shouldNormalizeEnd,\n\t shouldNormalize;\n\n\t normalize(range.commonAncestorContainer);\n\n\t while (!start.nextSibling && start.parentNode) {\n\t start = start.parentNode;\n\t }\n\n\t while (!end.previousSibling && end.parentNode) {\n\t end = end.parentNode;\n\t }\n\n\t // merely accessing the siblings will solve range issues in IE\n\t shouldNormalizeStart = (start.previousSibling && start.previousSibling.nodeType == 3) &&\n\t (start.nextSibling && start.nextSibling.nodeType == 3);\n\n\t shouldNormalizeEnd = (end.previousSibling && end.previousSibling.nodeType == 3) &&\n\t (end.nextSibling && end.nextSibling.nodeType == 3);\n\n\t shouldNormalize = shouldNormalizeStart && shouldNormalizeEnd;\n\n\t start = start.nextSibling;\n\t end = end.previousSibling;\n\n\t var isBomSelected = start === end && dom.isBom(start);\n\t if (isBomSelected && start.length > 1) {\n\t start.nodeValue = start.nodeValue.charAt(0);\n\t }\n\n\t var collapsed = isBomSelected;\n\t var collapsedToStart = false;\n\t // collapsed range\n\t if (start == that.end) {\n\t collapsedToStart = !!that.start.previousSibling;\n\t start = end = that.start.previousSibling || that.end.nextSibling;\n\t collapsed = true;\n\t }\n\n\t dom.remove(that.start);\n\t dom.remove(that.end);\n\n\t if (!start || !end) {\n\t range.selectNodeContents(range.commonAncestorContainer);\n\t range.collapse(true);\n\t return;\n\t }\n\n\t var startOffset = collapsed ? isDataNode(start) ? start.nodeValue.length : start.childNodes.length : 0;\n\t var endOffset = isDataNode(end) ? end.nodeValue.length : end.childNodes.length;\n\n\t if (start.nodeType == 3) {\n\t while (start.previousSibling && start.previousSibling.nodeType == 3) {\n\t start = start.previousSibling;\n\t startOffset += start.nodeValue.length;\n\t }\n\t }\n\n\t if (end.nodeType == 3) {\n\t while (end.previousSibling && end.previousSibling.nodeType == 3) {\n\t end = end.previousSibling;\n\t endOffset += end.nodeValue.length;\n\t }\n\t }\n\n\t var startParent = start.parentNode;\n\t var endParent = end.parentNode;\n\t var startIndex = this._normalizedIndex(start);\n\t var endIndex = this._normalizedIndex(end);\n\n\t normalize(startParent);\n\t if (start.nodeType == 3) {\n\t start = startParent.childNodes[startIndex];\n\t }\n\n\t normalize(endParent);\n\t if (end.nodeType == 3) {\n\t end = endParent.childNodes[endIndex];\n\t }\n\n\t if (collapsed) {\n\t if (start.nodeType == 3) {\n\t range.setStart(start, startOffset);\n\t } else {\n\t range[collapsedToStart ? 'setStartAfter' : 'setStartBefore'](start);\n\t }\n\n\t range.collapse(true);\n\n\t } else {\n\t if (start.nodeType == 3) {\n\t range.setStart(start, startOffset);\n\t } else {\n\t range.setStartBefore(start);\n\t }\n\n\t if (end.nodeType == 3) {\n\t range.setEnd(end, endOffset);\n\t } else {\n\t range.setEndAfter(end);\n\t }\n\t }\n\n\t if (that.caret) {\n\t that.removeCaret(range);\n\t }\n\t }\n\t});\n\n\tvar boundary = /[\\u0009-\\u000d]|\\u0020|\\u00a0|\\ufeff|\\.|,|;|:|!|\\(|\\)|\\?/;\n\n\tvar RangeUtils = {\n\t nodes: function(range) {\n\t var nodes = RangeUtils.textNodes(range);\n\t if (!nodes.length) {\n\t range.selectNodeContents(range.commonAncestorContainer);\n\t nodes = RangeUtils.textNodes(range);\n\t if (!nodes.length) {\n\t nodes = dom.significantChildNodes(range.commonAncestorContainer);\n\t }\n\t }\n\t return nodes;\n\t },\n\n\t textNodes: function(range) {\n\t return new RangeEnumerator(range).enumerate();\n\t },\n\n\t editableTextNodes: function(range) {\n\t var nodes = [],\n\t immutableParent = Editor.Immutables && Editor.Immutables.immutableParent;\n\n\t if (immutableParent && !immutableParent(range.commonAncestorContainer)) {\n\t nodes = new ImmutablesRangeEnumerator(range).enumerate();\n\t }\n\n\t return nodes;\n\t },\n\n\t documentFromRange: function(range) {\n\t var startContainer = range.startContainer;\n\t return startContainer.nodeType == 9 ? startContainer : startContainer.ownerDocument;\n\t },\n\n\t createRange: function(document) {\n\t return document.createRange();\n\t },\n\n\t selectRange: function(range) {\n\t var image = RangeUtils.image(range);\n\t if (image) {\n\t range.setStartAfter(image);\n\t range.setEndAfter(image);\n\t }\n\t var selection = SelectionUtils.selectionFromRange(range);\n\t selection.removeAllRanges();\n\t selection.addRange(range);\n\t },\n\n\t stringify: function(range) {\n\t return kendo.format(\n\t \"{0}:{1} - {2}:{3}\",\n\t dom.name(range.startContainer), range.startOffset,\n\t dom.name(range.endContainer), range.endOffset\n\t );\n\t },\n\n\t split: function(range, node, trim) {\n\t function partition(start) {\n\t var partitionRange = range.cloneRange();\n\t partitionRange.collapse(start);\n\t partitionRange[start ? 'setStartBefore' : 'setEndAfter'](node);\n\t var contents = partitionRange.extractContents();\n\t if (trim) {\n\t contents = dom.trim(contents);\n\t }\n\t dom[start ? 'insertBefore' : 'insertAfter'](contents, node);\n\t }\n\t partition(true);\n\t partition(false);\n\t },\n\n\t mapAll: function(range, map) {\n\t var nodes = [];\n\n\t new RangeIterator(range).traverse(function(node) {\n\t var mapped = map(node);\n\n\t if (mapped && $.inArray(mapped, nodes) < 0) {\n\t nodes.push(mapped);\n\t }\n\t });\n\n\t return nodes;\n\t },\n\n\t getAll: function(range, predicate) {\n\t var selector = predicate;\n\n\t if (typeof predicate == \"string\") {\n\t predicate = function(node) {\n\t return dom.is(node, selector);\n\t };\n\t }\n\n\t return RangeUtils.mapAll(range, function (node) {\n\t if (predicate(node)) {\n\t return node;\n\t }\n\t });\n\t },\n\n\t getMarkers: function(range) {\n\t return RangeUtils.getAll(range, function(node) {\n\t return node.className == 'k-marker';\n\t });\n\t },\n\n\t image: function (range) {\n\t var nodes = RangeUtils.getAll(range, \"img\");\n\n\t if (nodes.length == 1) {\n\t return nodes[0];\n\t }\n\t },\n\n\t isStartOf: function(originalRange, node) {\n\t if (originalRange.startOffset !== 0) {\n\t return false;\n\t }\n\n\t var range = originalRange.cloneRange();\n\n\t while (range.startOffset === 0 && range.startContainer != node) {\n\t var index = dom.findNodeIndex(range.startContainer);\n\t var parent = range.startContainer.parentNode;\n\n\t while (index > 0 && parent[index-1] && dom.insignificant(parent[index-1])) {\n\t index--;\n\t }\n\n\t range.setStart(parent, index);\n\t }\n\n\t return range.startOffset === 0 && range.startContainer == node;\n\t },\n\n\t isEndOf: function(originalRange, node) {\n\t var range = originalRange.cloneRange();\n\n\t range.collapse(false);\n\n\t var start = range.startContainer;\n\n\t if (dom.isDataNode(start) && range.startOffset == dom.getNodeLength(start)) {\n\t range.setStart(start.parentNode, dom.findNodeIndex(start) + 1);\n\t range.collapse(true);\n\t }\n\n\t range.setEnd(node, dom.getNodeLength(node));\n\n\t var nodes = [];\n\n\t function visit(node) {\n\t if (!dom.insignificant(node) && !(dom.isDataNode(node) && /^[\\ufeff]*$/.test(node.nodeValue))) {\n\t nodes.push(node);\n\t }\n\t }\n\n\t new RangeIterator(range).traverse(visit);\n\n\t return !nodes.length;\n\t },\n\n\t wrapSelectedElements: function(range) {\n\t var startEditable = dom.editableParent(range.startContainer);\n\t var endEditable = dom.editableParent(range.endContainer);\n\n\t while (range.startOffset === 0 && range.startContainer != startEditable) {\n\t range.setStart(range.startContainer.parentNode, dom.findNodeIndex(range.startContainer));\n\t }\n\n\t function isEnd(offset, container) {\n\t var length = dom.getNodeLength(container);\n\n\t if (offset == length) {\n\t return true;\n\t }\n\n\t for (var i = offset; i < length; i++) {\n\t if (!dom.insignificant(container.childNodes[i])) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t while (isEnd(range.endOffset, range.endContainer) && range.endContainer != endEditable) {\n\t range.setEnd(range.endContainer.parentNode, dom.findNodeIndex(range.endContainer) + 1);\n\t }\n\n\t return range;\n\t },\n\n\t expand: function (range) {\n\t var result = range.cloneRange();\n\n\t var startContainer = result.startContainer.childNodes[result.startOffset === 0 ? 0 : result.startOffset - 1];\n\t var endContainer = result.endContainer.childNodes[result.endOffset];\n\n\t if (!isDataNode(startContainer) || !isDataNode(endContainer)) {\n\t return result;\n\t }\n\n\t var beforeCaret = startContainer.nodeValue;\n\t var afterCaret = endContainer.nodeValue;\n\n\t if (!beforeCaret || !afterCaret) {\n\t return result;\n\t }\n\n\t var startOffset = beforeCaret.split('').reverse().join('').search(boundary);\n\t var endOffset = afterCaret.search(boundary);\n\n\t if (!startOffset || !endOffset) {\n\t return result;\n\t }\n\n\t endOffset = endOffset == -1 ? afterCaret.length : endOffset;\n\t startOffset = startOffset == -1 ? 0 : beforeCaret.length - startOffset;\n\n\t result.setStart(startContainer, startOffset);\n\t result.setEnd(endContainer, endOffset);\n\n\t return result;\n\t },\n\n\t isExpandable: function (range) {\n\t var node = range.startContainer;\n\t var rangeDocument = RangeUtils.documentFromRange(range);\n\n\t if (node == rangeDocument || node == rangeDocument.body) {\n\t return false;\n\t }\n\n\t var result = range.cloneRange();\n\n\t var value = node.nodeValue;\n\t if (!value) {\n\t return false;\n\t }\n\n\t var beforeCaret = value.substring(0, result.startOffset);\n\t var afterCaret = value.substring(result.startOffset);\n\n\t var startOffset = 0, endOffset = 0;\n\n\t if (beforeCaret) {\n\t startOffset = beforeCaret.split('').reverse().join('').search(boundary);\n\t }\n\n\t if (afterCaret) {\n\t endOffset = afterCaret.search(boundary);\n\t }\n\n\t return startOffset && endOffset;\n\t }\n\t};\n\n\textend(Editor, {\n\t SelectionUtils: SelectionUtils,\n\t W3CRange: W3CRange,\n\t RangeIterator: RangeIterator,\n\t W3CSelection: W3CSelection,\n\t RangeEnumerator: RangeEnumerator,\n\t RestorePoint: RestorePoint,\n\t Marker: Marker,\n\t RangeUtils: RangeUtils\n\t});\n\n\t})(window.kendo.jQuery);\n\n\t}, __webpack_require__(3));\n\n\n/***/ }),\n\n/***/ 1008:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./components\");\n\n/***/ })\n\n/******/ });"],"sourceRoot":""}