{"version":3,"sources":["webpack:///./node_modules/@progress/kendo-ui/js/editor/immutables.js","webpack:///./node_modules/@progress/kendo-ui/js/editor/dom.js","webpack:///./node_modules/@progress/kendo-ui/js/editor/command.js","webpack:///./node_modules/@progress/kendo-ui/js/editor/components.js"],"names":["module","exports","modules","installedModules","__webpack_require__","moduleId","id","loaded","call","m","c","p","0","3","Error","971","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","f","define","apply","undefined","$","kendo","window","Class","Editor","ui","editor","dom","Dom","template","RangeUtils","complexBlocks","toolsToBeUpdated","IMMUTABALE","IMMUTABALE_MARKER_SELECTOR","IMMUTABLE_SELECTOR","rootCondition","node","is","immutable","getAttribute","immutableParent","closestBy","expandImmutablesIn","range","startImmutableParent","startContainer","endImmutableParent","endContainer","setStartBefore","setEndAfter","immutablesContext","commonAncestorContainer","editableNodes","editableTextNodes","length","randomId","result","chars","i","charAt","Math","round","random","removeImmutables","root","nodeName","serialized","serializedImmutables","empty","find","each","name","style","attr","replaceWith","restoreImmutables","removeAttr","deletingKey","keyCode","keys","BACKSPACE","DELETE","updateToolOptions","tool","options","finder","_initOptions","immutables","Immutables","extend","init","this","tools","toolbar","justifyLeft","justifyCenter","justifyRight","justifyFull","serialize","_toHtml","indexOf","replace","match","serialization","serializationType","deserialize","that","deserialization","isFunction","keydown","e","isDeleting","shouldCancelEvent","_cancelDeleting","_cancelTyping","preventDefault","keyboard","collapsed","typingInProgress","isTypingKey","backspace","del","cancelDeleting","nextImmutable","closestSelectionLi","closest","closestImmutableLi","tableCell","parentOfType","parentNode","childNodes","_removeImmutable","forwards","commonContainer","isBom","isEndOf","isStartOf","next","_nextNode","isBlock","children","startRestorePoint","RestorePoint","body","remove","_finishUpdate","sibling","current","isDataNode","test","nodeValue","jQuery","972","969","map","browser","support","STYLE","FLOAT","CSSFLOAT","STYLEFLOAT","CLASS","KMARKER","makeMap","items","len","obj","split","nonListBlockElements","blockElements","concat","block","selfClosing","inlineElements","inline","fillAttrs","normalize","nodeType","msie","version","parent","firstChild","prev","nextSibling","persistedScrollTop","whitespace","emptyspace","rgb","bom","whitespaceOrBom","cssAttributes","htmlRe","entityRe","entityTable","34","38","39","60","62","160","161","162","163","164","165","166","167","168","169","170","171","172","173","174","175","176","177","178","179","180","181","182","183","184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","200","201","202","203","204","205","206","207","208","209","210","211","212","213","214","215","216","217","218","219","220","221","222","223","224","225","226","227","228","229","230","231","232","233","234","235","236","237","238","239","240","241","242","243","244","245","246","247","248","249","250","251","252","253","254","255","402","913","914","915","916","917","918","919","920","921","922","923","924","925","926","927","928","929","931","932","933","934","935","936","937","945","946","947","948","949","950","951","952","953","954","955","956","957","958","959","960","961","962","963","964","965","966","967","968","977","978","982","8226","8230","8242","8243","8254","8260","8472","8465","8476","8482","8501","8592","8593","8594","8595","8596","8629","8656","8657","8658","8659","8660","8704","8706","8707","8709","8711","8712","8713","8715","8719","8721","8722","8727","8730","8733","8734","8736","8743","8744","8745","8746","8747","8756","8764","8773","8776","8800","8801","8804","8805","8834","8835","8836","8838","8839","8853","8855","8869","8901","8968","8969","8970","8971","9001","9002","9674","9824","9827","9829","9830","338","339","352","353","376","710","732","8194","8195","8201","8204","8205","8206","8207","8211","8212","8216","8217","8218","8220","8221","8222","8224","8225","8240","8249","8250","8364","findNodeIndex","skipText","previousSibling","data","isAncestorOf","contains","isAncestorOrSelf","findClosestAncestor","getAllComments","rootElem","comments","iterator","document","createNodeIterator","NodeFilter","SHOW_COMMENT","FILTER_ACCEPT","curNode","nextNode","push","getNodeLength","splitDataNode","offset","temp","newNode","cloneNode","denormalizedText","deleteData","insertAfter","attrEquals","attributes","key","value","cssFloat","blockParentOrBody","ownerDocument","blockParents","nodes","blocks","inArray","windowFromDocument","defaultView","parentWindow","nodeTypes","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","NOTATION_NODE","toHex","color","matches","exec","slice","x","parseInt","toString","join","encode","encodableChars","entities","charCode","charCodeAt","entity","stripBom","text","stripBomNode","removeChild","insignificant","className","_moz_dirty","_moz_editor_bogus_node","significantNodes","grep","child","emptyTextNode","emptyNode","toLowerCase","significantChildNodes","isWhitespace","lastTextNode","lastChild","isMarker","allWhitespaceContent","isEmptyspace","htmlIndentSpace","el","direction","isPrevBlock","isNextBlock","isSelfClosing","isEmpty","isInline","isBr","list","scrollContainer","doc","wnd","contentWindow","compatMode","scrollingElement","documentElement","scrollTo","toStart","element","elementTop","elementHeight","marker","windowHeight","innerHeight","create","insertBefore","top","offsetHeight","css","ceil","scrollTop","persistScrollTop","target","offsetParent","offsetTop","left","offsetLeft","restoreScrollTop","insertAt","newElement","position","referenceElement","removeChildren","removeTextSiblings","trim","tags","condition","ofType","changeTag","tagName","skipAttributes","attribute","specified","cssText","setAttribute","appendChild","editableParent","contentEditable","wrap","wrapper","unwrap","createElement","createEmptyNode","innerHTML","removeAttribute","mergeAttributes","origin","traverseCss","unstyle","inlineStyle","span","getEffectiveBackground","backgroundStyle","innerText","removeClass","classNames","classes","commonAncestor","ancestors","first","j","count","arguments","paths","minPathLength","Infinity","output","reverse","min","closestSplittableParent","editableParents","editableAncestor","closestEditable","types","editable","closestEditableOfType","filter","invert","filterFn","filterBy","ensureTrailingBreaks","elements","ensureTrailingBreak","removeTrailingBreak","br","reMapTableColumns","table","colAttr","_mapColIndices","clearTableMappings","registeredColumns","rowIndex","rows","cells","colIndex","cellIndex","cell","rowSpan","_mapColspan","colSpan","index","ci","ri","associateWithIds","theadRows","numberOfTheadRows","tableRows","numberOfTableRows","theadMatrix","tbodyMatrix","tHead","_getNumberOfHeaderRows","_generateIdsForColumns","_generateIdsForRows","_assignIds","row","col","colspan","rowspan","k","l","timestamp","Date","getTime","headers","pushHeaderId","forEach","_onlyUnique","_getNumberOfColumns","currentIndex","numberOfCols","Number","_getNumberOfHeaderColumns","numberOfHeaderRows","thead","number","self","970","editorNS","Marker","finishUpdate","endRestorePoint","selectionRestorePoint","getRange","command","GenericCommand","undoRedoStack","refreshTools","Command","restorePoint","formatter","toRange","lockRange","expand","add","releaseRange","selectRange","undo","point","restoreHtml","redo","createDialog","content","appendTo","kendoWindow","dialogOptions","toggleClass","isRtl","end","toggle","html","DropDownList","SelectBox","fn","mobileOS","ios","_initSelectOverlay","bind","proxy","title","autoSize","listWidth","whiteSpace","width","_listWidth","scrollbar","item","selectBox","view","dataSource","htmlEncode","select","on","trigger","decorate","tag","plugin"],"mappings":"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","file":"js/chunk-vendors~eb382cb8.377a800d.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__(971);\n\tmodule.exports = __webpack_require__(971);\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/***/ 971:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\r\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(972) ], __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__));\r\n\t})(function(){\r\n\r\n\t(function($, undefined) {\r\n\t var kendo = window.kendo,\r\n\t Class = kendo.Class,\r\n\t Editor = kendo.ui.editor,\r\n\t dom = Editor.Dom,\r\n\t template = kendo.template,\r\n\t RangeUtils = Editor.RangeUtils,\r\n\t complexBlocks = [\"ul\", \"ol\", \"tbody\", \"thead\", \"table\"],\r\n\t toolsToBeUpdated = [\r\n\t \"bold\",\r\n\t \"italic\",\r\n\t \"underline\",\r\n\t \"strikethrough\",\r\n\t \"superscript\",\r\n\t \"subscript\",\r\n\t \"forecolor\",\r\n\t \"backcolor\",\r\n\t \"fontname\",\r\n\t \"fontsize\",\r\n\t \"createlink\",\r\n\t \"unlink\",\r\n\t \"autolink\",\r\n\t \"addcolumnleft\",\r\n\t \"addcolumnright\",\r\n\t \"addrowabove\",\r\n\t \"addrowbelow\",\r\n\t \"deleterow\",\r\n\t \"deletecolumn\",\r\n\t \"mergecells\",\r\n\t \"formatting\",\r\n\t \"cleanformatting\" ],\r\n\t IMMUTABALE = \"k-immutable\",\r\n\t IMMUTABALE_MARKER_SELECTOR = \"[\" + IMMUTABALE + \"]\",\r\n\t IMMUTABLE_SELECTOR = \"[contenteditable='false']\";\r\n\r\n\t var rootCondition = function(node) {\r\n\t return $(node).is(\"body,.k-editor\");\r\n\t };\r\n\r\n\t var immutable = function(node) {\r\n\t return node.getAttribute && node.getAttribute(\"contenteditable\") == \"false\";\r\n\t };\r\n\r\n\t var immutableParent = function (node) {\r\n\t return dom.closestBy(node, immutable, rootCondition);\r\n\t };\r\n\r\n\t var expandImmutablesIn = function(range) {\r\n\t var startImmutableParent = immutableParent(range.startContainer);\r\n\t var endImmutableParent = immutableParent(range.endContainer);\r\n\r\n\t if (startImmutableParent || endImmutableParent) {\r\n\t if (startImmutableParent){\r\n\t range.setStartBefore(startImmutableParent);\r\n\t }\r\n\t if (endImmutableParent){\r\n\t range.setEndAfter(endImmutableParent);\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t var immutablesContext = function(range) {\r\n\t if (immutableParent(range.commonAncestorContainer)) {\r\n\t return true;\r\n\t } else if(immutableParent(range.startContainer) || immutableParent(range.endContainer)){\r\n\t var editableNodes = RangeUtils.editableTextNodes(range);\r\n\t if (editableNodes.length === 0){\r\n\t return true;\r\n\t }\r\n\t }\r\n\t return false;\r\n\t };\r\n\r\n\t var randomId = function(length) {\r\n\t var result = '';\r\n\t var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n\t for (var i = length || 10; i > 0; --i) {\r\n\t result += chars.charAt(Math.round(Math.random() * (chars.length - 1)));\r\n\t }\r\n\t return result;\r\n\t };\r\n\r\n\t var removeImmutables = function (root) {\r\n\t var serializedImmutables = {empty: true}, nodeName, id, serialized;\r\n\t $(root).find(IMMUTABLE_SELECTOR).each(function(i, node){\r\n\t nodeName = dom.name(node);\r\n\t id = randomId();\r\n\t serialized = \"<\" + nodeName + \" \" + IMMUTABALE + \"='\" + id + \"'>\" + nodeName + \">\";\r\n\t serializedImmutables[id] = {node: node, style: $(node).attr(\"style\")};\r\n\t serializedImmutables.empty = false;\r\n\t $(node).replaceWith(serialized);\r\n\t });\r\n\r\n\t return serializedImmutables;\r\n\t };\r\n\r\n\t var restoreImmutables = function(root, serializedImmutables) {\r\n\t var id, immutable;\r\n\t $(root).find(IMMUTABALE_MARKER_SELECTOR).each(function(i, node) {\r\n\t id = node.getAttribute(IMMUTABALE);\r\n\t immutable = serializedImmutables[id];\r\n\t $(node).replaceWith(immutable.node);\r\n\t if (immutable.style != $(immutable.node).attr(\"style\")) {\r\n\t $(immutable.node).removeAttr(\"style\").attr(\"style\", immutable.style);\r\n\t }\r\n\t });\r\n\t };\r\n\r\n\t var deletingKey = function (keyCode) {\r\n\t var keys = kendo.keys;\r\n\t return keyCode === keys.BACKSPACE || keyCode == keys.DELETE;\r\n\t };\r\n\t var updateToolOptions = function(tool) {\r\n\t var options = tool ? tool.options : undefined;\r\n\t if (options && options.finder) {\r\n\t options.finder._initOptions({immutables: true});\r\n\t }\r\n\t };\r\n\r\n\t var Immutables = Class.extend({\r\n\t init: function (editor) {\r\n\t this.editor = editor;\r\n\t this.serializedImmutables = {};\r\n\t this.options = $.extend({}, editor && editor.options && editor.options.immutables);\r\n\r\n\t var tools = editor.toolbar.tools;\r\n\t updateToolOptions(tools.justifyLeft);\r\n\t updateToolOptions(tools.justifyCenter);\r\n\t updateToolOptions(tools.justifyRight);\r\n\t updateToolOptions(tools.justifyFull);\r\n\t },\r\n\r\n\t serialize: function(node) {\r\n\t var result = this._toHtml(node),\r\n\t id;\r\n\r\n\t if (result.indexOf(IMMUTABALE) === -1) {\r\n\t id = this.randomId();\r\n\t result = result.replace(/>/, ' ' + IMMUTABALE + '=\"' + id + '\">');\r\n\t } else {\r\n\t id = result.match(/k-immutable\\s*=\\s*['\"](.*)['\"]/)[1];\r\n\t }\r\n\r\n\t this.serializedImmutables[id] = node;\r\n\t return result;\r\n\t },\r\n\r\n\t _toHtml: function(node){\r\n\t var serialization = this.options.serialization;\r\n\t var serializationType = typeof serialization;\r\n\t var nodeName;\r\n\r\n\t switch (serializationType) {\r\n\t case \"string\":\r\n\t return template(serialization)(node);\r\n\t case \"function\":\r\n\t return serialization(node);\r\n\t default:\r\n\t nodeName = dom.name(node);\r\n\t return \"<\" + nodeName + \">\" + nodeName + \">\";\r\n\t }\r\n\t },\r\n\r\n\t deserialize: function(node) {\r\n\t var that = this;\r\n\t var deserialization = this.options.deserialization;\r\n\r\n\t $(IMMUTABALE_MARKER_SELECTOR, node).each(function() {\r\n\t var id = this.getAttribute(IMMUTABALE);\r\n\t var immutable = that.serializedImmutables[id];\r\n\t if (kendo.isFunction(deserialization)) {\r\n\t deserialization(this, immutable);\r\n\t }\r\n\t $(this).replaceWith(immutable);\r\n\t });\r\n\r\n\t that.serializedImmutables = {};\r\n\t },\r\n\r\n\t randomId: function (length) {\r\n\t return randomId(length);\r\n\t },\r\n\r\n\t keydown: function(e, range) {\r\n\t var isDeleting = deletingKey(e.keyCode);\r\n\t var shouldCancelEvent = (isDeleting && this._cancelDeleting(e, range)) ||\r\n\t (!isDeleting && this._cancelTyping(e, range));\r\n\r\n\t if (shouldCancelEvent) {\r\n\t e.preventDefault();\r\n\t return true;\r\n\t }\r\n\t },\r\n\r\n\t _cancelTyping: function(e, range) {\r\n\t var editor = this.editor;\r\n\t var keyboard = editor.keyboard;\r\n\r\n\t return range.collapsed && !keyboard.typingInProgress &&\r\n\t keyboard.isTypingKey(e) && immutablesContext(range);\r\n\t },\r\n\r\n\t _cancelDeleting: function(e, range) {\r\n\t var keys = kendo.keys;\r\n\t var backspace = e.keyCode === keys.BACKSPACE;\r\n\t var del = e.keyCode == keys.DELETE;\r\n\r\n\t if (!backspace && !del) {\r\n\t return false;\r\n\t }\r\n\t var cancelDeleting = false;\r\n\t if (range.collapsed) {\r\n\t if (immutablesContext(range)) {\r\n\t return true;\r\n\t }\r\n\t var immutable = this.nextImmutable(range, del);\r\n\t if (immutable && backspace) {\r\n\t var closestSelectionLi = dom.closest(range.commonAncestorContainer, \"li\");\r\n\t if (closestSelectionLi) {\r\n\t var closestImmutableLi = dom.closest(immutable, \"li\");\r\n\t if (closestImmutableLi && closestImmutableLi !== closestSelectionLi) {\r\n\t return cancelDeleting;\r\n\t }\r\n\t }\r\n\t }\r\n\t if (immutable && !dom.tableCell(immutable)) {\r\n\t if (dom.parentOfType(immutable, complexBlocks) === dom.parentOfType(range.commonAncestorContainer, complexBlocks)) {\r\n\t while (immutable && immutable.parentNode.childNodes.length == 1) {\r\n\t immutable = immutable.parentNode;\r\n\t }\r\n\t if (dom.tableCell(immutable)) {\r\n\t return cancelDeleting;\r\n\t }\r\n\t this._removeImmutable(immutable, range);\r\n\t }\r\n\t cancelDeleting = true;\r\n\t }\r\n\t }\r\n\t return cancelDeleting;\r\n\t },\r\n\r\n\t nextImmutable: function(range, forwards) {\r\n\t var commonContainer = range.commonAncestorContainer;\r\n\t if (dom.isBom(commonContainer) || ((forwards && RangeUtils.isEndOf(range, commonContainer)) || (!forwards && RangeUtils.isStartOf(range, commonContainer)))) {\r\n\t var next = this._nextNode(commonContainer, forwards);\r\n\t if (next && dom.isBlock(next) && !immutableParent(next)) {\r\n\t while (next && next.children && next.children[forwards ? 0 : next.children.length - 1]) {\r\n\t next = next.children[forwards ? 0 : next.children.length - 1];\r\n\t }\r\n\t }\r\n\t return immutableParent(next);\r\n\t }\r\n\t },\r\n\r\n\t _removeImmutable: function(immutable, range) {\r\n\t var editor = this.editor;\r\n\t var startRestorePoint = new Editor.RestorePoint(range, editor.body);\r\n\t dom.remove(immutable);\r\n\t Editor._finishUpdate(editor, startRestorePoint);\r\n\t },\r\n\r\n\t _nextNode: function(node, forwards) {\r\n\t var sibling = forwards ? \"nextSibling\" : \"previousSibling\";\r\n\t var current = node, next;\r\n\t while(current && !next) {\r\n\t next = current[sibling];\r\n\t if (next && dom.isDataNode(next) && /^\\s|[\\ufeff]$/.test(next.nodeValue)){\r\n\t current = next;\r\n\t next = current[sibling];\r\n\t }\r\n\t if (!next){\r\n\t current = current.parentNode;\r\n\t }\r\n\t }\r\n\t return next;\r\n\t }\r\n\t });\r\n\r\n\t Immutables.immutable = immutable;\r\n\t Immutables.immutableParent = immutableParent;\r\n\t Immutables.expandImmutablesIn = expandImmutablesIn;\r\n\t Immutables.immutablesContext = immutablesContext;\r\n\t Immutables.toolsToBeUpdated = toolsToBeUpdated;\r\n\t Immutables.removeImmutables = removeImmutables;\r\n\t Immutables.restoreImmutables = restoreImmutables;\r\n\r\n\t Editor.Immutables = Immutables;\r\n\t})(window.kendo.jQuery);\r\n\r\n\t}, __webpack_require__(3));\r\n\n\n/***/ }),\n\n/***/ 972:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./range\");\n\n/***/ })\n\n/******/ });","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__(969);\n\tmodule.exports = __webpack_require__(969);\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/***/ 969:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(970) ], __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\tvar kendo = window.kendo,\n\t map = $.map,\n\t extend = $.extend,\n\t browser = kendo.support.browser,\n\t STYLE = \"style\",\n\t FLOAT = \"float\",\n\t CSSFLOAT = \"cssFloat\",\n\t STYLEFLOAT = \"styleFloat\",\n\t CLASS = \"class\",\n\t KMARKER = \"k-marker\";\n\n\tfunction makeMap(items) {\n\t var obj = {},\n\t i, len;\n\n\t for (i = 0, len = items.length; i < len; i++) {\n\t obj[items[i]] = true;\n\t }\n\t return obj;\n\t}\n\n\tvar empty = makeMap(\"area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed\".split(\",\")),\n\t nonListBlockElements = \"p,div,h1,h2,h3,h4,h5,h6,address,applet,blockquote,button,center,dd,dir,dl,dt,fieldset,form,frameset,hr,iframe,isindex,map,menu,noframes,noscript,object,pre,script,table,tbody,td,tfoot,th,thead,tr,header,article,nav,footer,section,aside,main,figure,figcaption\".split(\",\"),\n\t blockElements = nonListBlockElements.concat([\"ul\",\"ol\",\"li\"]),\n\t block = makeMap(blockElements),\n\t selfClosing = makeMap(\"area,base,br,col,command,embed,hr,img,input,keygen,link,menuitem,meta,param,source,track,wbr\".split(\",\")),\n\t inlineElements = \"span,em,a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,strike,strong,sub,sup,textarea,tt,u,var,data,time,mark,ruby\".split(\",\"),\n\t inline = makeMap(inlineElements),\n\t fillAttrs = makeMap(\"checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected\".split(\",\"));\n\n\tvar normalize = function (node) {\n\t if (node.nodeType == 1) {\n\t node.normalize();\n\t }\n\t};\n\n\tif (browser.msie && browser.version >= 8) {\n\t normalize = function(parent) {\n\t if (parent.nodeType == 1 && parent.firstChild) {\n\t var prev = parent.firstChild,\n\t node = prev;\n\n\t normalize(node);\n\n\t while (true) {\n\t node = node.nextSibling;\n\n\t if (!node) {\n\t break;\n\t }\n\n\t normalize(node);\n\n\t if (node.nodeType == 3 && prev.nodeType == 3) {\n\t node.nodeValue = prev.nodeValue + node.nodeValue;\n\t Dom.remove(prev);\n\t }\n\n\t prev = node;\n\t }\n\t }\n\t };\n\t}\n\n\tvar whitespace = /^\\s+$/,\n\t emptyspace = /^[\\n\\r\\t]+$/,\n\t rgb = /rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/i,\n\t bom = /\\ufeff/g,\n\t whitespaceOrBom = /^(\\s+|\\ufeff)$/,\n\t persistedScrollTop,\n\t cssAttributes =\n\t (\"color,padding-left,padding-right,padding-top,padding-bottom,\" +\n\t \"background-color,background-attachment,background-image,background-position,background-repeat,\" +\n\t \"border-top-style,border-top-width,border-top-color,\" +\n\t \"border-bottom-style,border-bottom-width,border-bottom-color,\" +\n\t \"border-left-style,border-left-width,border-left-color,\" +\n\t \"border-right-style,border-right-width,border-right-color,\" +\n\t \"font-family,font-size,font-style,font-variant,font-weight,line-height\"\n\t ).split(\",\"),\n\t htmlRe = /[<>\\&]/g,\n\t entityRe = /[\\u00A0-\\u2666<>\\&]/g,\n\t entityTable = {\n\t 34: 'quot', 38: 'amp', 39: 'apos', 60: 'lt', 62: 'gt',\n\t 160: 'nbsp', 161: 'iexcl', 162: 'cent', 163: 'pound', 164: 'curren',\n\t 165: 'yen', 166: 'brvbar', 167: 'sect', 168: 'uml', 169: 'copy',\n\t 170: 'ordf', 171: 'laquo', 172: 'not', 173: 'shy', 174: 'reg',\n\t 175: 'macr', 176: 'deg', 177: 'plusmn', 178: 'sup2', 179: 'sup3',\n\t 180: 'acute', 181: 'micro', 182: 'para', 183: 'middot', 184: 'cedil',\n\t 185: 'sup1', 186: 'ordm', 187: 'raquo', 188: 'frac14', 189: 'frac12',\n\t 190: 'frac34', 191: 'iquest', 192: 'Agrave', 193: 'Aacute', 194: 'Acirc',\n\t 195: 'Atilde', 196: 'Auml', 197: 'Aring', 198: 'AElig', 199: 'Ccedil',\n\t 200: 'Egrave', 201: 'Eacute', 202: 'Ecirc', 203: 'Euml', 204: 'Igrave',\n\t 205: 'Iacute', 206: 'Icirc', 207: 'Iuml', 208: 'ETH', 209: 'Ntilde',\n\t 210: 'Ograve', 211: 'Oacute', 212: 'Ocirc', 213: 'Otilde', 214: 'Ouml',\n\t 215: 'times', 216: 'Oslash', 217: 'Ugrave', 218: 'Uacute', 219: 'Ucirc',\n\t 220: 'Uuml', 221: 'Yacute', 222: 'THORN', 223: 'szlig', 224: 'agrave',\n\t 225: 'aacute', 226: 'acirc', 227: 'atilde', 228: 'auml', 229: 'aring',\n\t 230: 'aelig', 231: 'ccedil', 232: 'egrave', 233: 'eacute', 234: 'ecirc',\n\t 235: 'euml', 236: 'igrave', 237: 'iacute', 238: 'icirc', 239: 'iuml',\n\t 240: 'eth', 241: 'ntilde', 242: 'ograve', 243: 'oacute', 244: 'ocirc',\n\t 245: 'otilde', 246: 'ouml', 247: 'divide', 248: 'oslash', 249: 'ugrave',\n\t 250: 'uacute', 251: 'ucirc', 252: 'uuml', 253: 'yacute', 254: 'thorn',\n\t 255: 'yuml', 402: 'fnof', 913: 'Alpha', 914: 'Beta', 915: 'Gamma',\n\t 916: 'Delta', 917: 'Epsilon', 918: 'Zeta', 919: 'Eta', 920: 'Theta',\n\t 921: 'Iota', 922: 'Kappa', 923: 'Lambda', 924: 'Mu', 925: 'Nu',\n\t 926: 'Xi', 927: 'Omicron', 928: 'Pi', 929: 'Rho', 931: 'Sigma',\n\t 932: 'Tau', 933: 'Upsilon', 934: 'Phi', 935: 'Chi', 936: 'Psi',\n\t 937: 'Omega', 945: 'alpha', 946: 'beta', 947: 'gamma', 948: 'delta',\n\t 949: 'epsilon', 950: 'zeta', 951: 'eta', 952: 'theta', 953: 'iota',\n\t 954: 'kappa', 955: 'lambda', 956: 'mu', 957: 'nu', 958: 'xi',\n\t 959: 'omicron', 960: 'pi', 961: 'rho', 962: 'sigmaf', 963: 'sigma',\n\t 964: 'tau', 965: 'upsilon', 966: 'phi', 967: 'chi', 968: 'psi',\n\t 969: 'omega', 977: 'thetasym', 978: 'upsih', 982: 'piv', 8226: 'bull',\n\t 8230: 'hellip', 8242: 'prime', 8243: 'Prime', 8254: 'oline', 8260: 'frasl',\n\t 8472: 'weierp', 8465: 'image', 8476: 'real', 8482: 'trade', 8501: 'alefsym',\n\t 8592: 'larr', 8593: 'uarr', 8594: 'rarr', 8595: 'darr', 8596: 'harr',\n\t 8629: 'crarr', 8656: 'lArr', 8657: 'uArr', 8658: 'rArr', 8659: 'dArr',\n\t 8660: 'hArr', 8704: 'forall', 8706: 'part', 8707: 'exist', 8709: 'empty',\n\t 8711: 'nabla', 8712: 'isin', 8713: 'notin', 8715: 'ni', 8719: 'prod',\n\t 8721: 'sum', 8722: 'minus', 8727: 'lowast', 8730: 'radic', 8733: 'prop',\n\t 8734: 'infin', 8736: 'ang', 8743: 'and', 8744: 'or', 8745: 'cap',\n\t 8746: 'cup', 8747: 'int', 8756: 'there4', 8764: 'sim', 8773: 'cong',\n\t 8776: 'asymp', 8800: 'ne', 8801: 'equiv', 8804: 'le', 8805: 'ge',\n\t 8834: 'sub', 8835: 'sup', 8836: 'nsub', 8838: 'sube', 8839: 'supe',\n\t 8853: 'oplus', 8855: 'otimes', 8869: 'perp', 8901: 'sdot', 8968: 'lceil',\n\t 8969: 'rceil', 8970: 'lfloor', 8971: 'rfloor', 9001: 'lang', 9002: 'rang',\n\t 9674: 'loz', 9824: 'spades', 9827: 'clubs', 9829: 'hearts', 9830: 'diams',\n\t 338: 'OElig', 339: 'oelig', 352: 'Scaron', 353: 'scaron', 376: 'Yuml',\n\t 710: 'circ', 732: 'tilde', 8194: 'ensp', 8195: 'emsp', 8201: 'thinsp',\n\t 8204: 'zwnj', 8205: 'zwj', 8206: 'lrm', 8207: 'rlm', 8211: 'ndash',\n\t 8212: 'mdash', 8216: 'lsquo', 8217: 'rsquo', 8218: 'sbquo', 8220: 'ldquo',\n\t 8221: 'rdquo', 8222: 'bdquo', 8224: 'dagger', 8225: 'Dagger', 8240: 'permil',\n\t 8249: 'lsaquo', 8250: 'rsaquo', 8364: 'euro'\n\t };\n\n\tvar Dom = {\n\t block: block,\n\t inline: inline,\n\n\t findNodeIndex: function(node, skipText) {\n\t var i = 0;\n\n\t if (!node) {\n\t return -1;\n\t }\n\n\t while (true) {\n\t node = node.previousSibling;\n\n\t if (!node) {\n\t break;\n\t }\n\n\t if (!(skipText && node.nodeType == 3)) {\n\t i++;\n\t }\n\t }\n\n\t return i;\n\t },\n\n\t isDataNode: function(node) {\n\t return node && node.nodeValue !== null && node.data !== null;\n\t },\n\n\t isAncestorOf: function(parent, node) {\n\t try {\n\t return !Dom.isDataNode(parent) && ($.contains(parent, Dom.isDataNode(node) ? node.parentNode : node) || node.parentNode == parent);\n\t } catch (e) {\n\t return false;\n\t }\n\t },\n\n\t isAncestorOrSelf: function(root, node) {\n\t return Dom.isAncestorOf(root, node) || root == node;\n\t },\n\n\t findClosestAncestor: function(root, node) {\n\t if (Dom.isAncestorOf(root, node)) {\n\t while (node && node.parentNode != root) {\n\t node = node.parentNode;\n\t }\n\t }\n\n\t return node;\n\t },\n\n\t getAllComments: function (rootElem) {\n\t var comments = [];\n\t // Fourth argument, which is actually obsolete according to the DOM4 standard, is required in IE 11\n\t var iterator = document.createNodeIterator(rootElem,\n\t NodeFilter.SHOW_COMMENT,\n\t function () {\n\t return NodeFilter.FILTER_ACCEPT;\n\t }, false);\n\n\t var curNode = iterator.nextNode();\n\t while (curNode) {\n\t comments.push(curNode.nodeValue);\n\t curNode = iterator.nextNode();\n\t }\n\t return comments;\n\t },\n\n\t getNodeLength: function(node) {\n\t return Dom.isDataNode(node) ? node.length : node.childNodes.length;\n\t },\n\n\t splitDataNode: function(node, offset) {\n\t var newNode = node.cloneNode(false);\n\t var denormalizedText = \"\";\n\t var iterator = node.nextSibling;\n\t var temp;\n\n\t while (iterator && iterator.nodeType == 3 && iterator.nodeValue) {\n\t denormalizedText += iterator.nodeValue;\n\t temp = iterator;\n\t iterator = iterator.nextSibling;\n\t Dom.remove(temp);\n\t }\n\n\t node.deleteData(offset, node.length);\n\t newNode.deleteData(0, offset);\n\t newNode.nodeValue += denormalizedText;\n\t Dom.insertAfter(newNode, node);\n\t },\n\n\t attrEquals: function(node, attributes) {\n\t for (var key in attributes) {\n\t var value = node[key];\n\n\t if (key == FLOAT) {\n\t value = node[kendo.support.cssFloat ? CSSFLOAT : STYLEFLOAT];\n\t }\n\n\t if (typeof value == \"object\") {\n\t if (!Dom.attrEquals(value, attributes[key])) {\n\t return false;\n\t }\n\t } else if (value != attributes[key]) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t },\n\n\t blockParentOrBody: function(node) {\n\t return Dom.parentOfType(node, blockElements) || node.ownerDocument.body;\n\t },\n\n\t blockParents: function(nodes) {\n\t var blocks = [],\n\t i, len;\n\n\t for (i = 0, len = nodes.length; i < len; i++) {\n\t var block = Dom.parentOfType(nodes[i], Dom.blockElements);\n\t if (block && $.inArray(block, blocks) < 0) {\n\t blocks.push(block);\n\t }\n\t }\n\n\t return blocks;\n\t },\n\n\t windowFromDocument: function(document) {\n\t return document.defaultView || document.parentWindow;\n\t },\n\n\t normalize: normalize,\n\t blockElements: blockElements,\n\t nonListBlockElements: nonListBlockElements,\n\t inlineElements: inlineElements,\n\t empty: empty,\n\t fillAttrs: fillAttrs,\n\t nodeTypes: {\n\t ELEMENT_NODE: 1,\n\t ATTRIBUTE_NODE: 2,\n\t TEXT_NODE: 3,\n\t CDATA_SECTION_NODE: 4,\n\t ENTITY_REFERENCE_NODE: 5,\n\t ENTITY_NODE: 6,\n\t PROCESSING_INSTRUCTION_NODE: 7,\n\t COMMENT_NODE: 8,\n\t DOCUMENT_NODE: 9,\n\t DOCUMENT_TYPE_NODE: 10,\n\t DOCUMENT_FRAGMENT_NODE: 11,\n\t NOTATION_NODE: 12\n\t },\n\n\t toHex: function (color) {\n\t var matches = rgb.exec(color);\n\n\t if (!matches) {\n\t return color;\n\t }\n\n\t return \"#\" + map(matches.slice(1), function (x) {\n\t x = parseInt(x, 10).toString(16);\n\t return x.length > 1 ? x : \"0\" + x;\n\t }).join(\"\");\n\t },\n\n\t encode: function (value, options) {\n\t var encodableChars = (!options || options.entities) ? entityRe : htmlRe;\n\t return value.replace(encodableChars, function(c) {\n\t var charCode = c.charCodeAt(0);\n\t var entity = entityTable[charCode];\n\t return entity ? '&'+entity+';' : c;\n\t });\n\t },\n\t isBom: function(node) {\n\t return node && node.nodeType === 3 && /^[\\ufeff]+$/.test(node.nodeValue);\n\t },\n\t stripBom: function(text) {\n\t return (text || \"\").replace(bom, \"\");\n\t },\n\n\t stripBomNode: function(node) {\n\t if(Dom.isBom(node)) {\n\t node.parentNode.removeChild(node);\n\t }\n\t },\n\n\t insignificant: function(node) {\n\t var attr = node.attributes;\n\n\t return node.className == \"k-marker\" || (Dom.is(node, 'br') && (node.className == \"k-br\" || attr._moz_dirty || attr._moz_editor_bogus_node)) || (Dom.is(node, 'span') && (node.className == \"k-br\"));\n\t },\n\t tableCell: function(node) {\n\t return Dom.is(node, \"td\") || Dom.is(node, \"th\");\n\t },\n\t significantNodes: function(nodes) {\n\t return $.grep(nodes, function(child) {\n\t var name = Dom.name(child);\n\n\t if (name == 'br') {\n\t return false;\n\t } else if (Dom.insignificant(child)) {\n\t return false;\n\t } else if (Dom.emptyTextNode(child)) {\n\t return false;\n\t } else if (child.nodeType == 1 && !empty[name] && Dom.emptyNode(child)) {\n\t return false;\n\t }\n\n\t return true;\n\t });\n\t },\n\n\t emptyTextNode: function(node) {\n\t return node && node.nodeType == 3 && whitespaceOrBom.test(node.nodeValue);\n\t },\n\n\t emptyNode: function(node) {\n\t return node.nodeType == 1 && !Dom.significantNodes(node.childNodes).length;\n\t },\n\n\t name: function (node) {\n\t return node.nodeName.toLowerCase();\n\t },\n\n\t significantChildNodes: function(node) {\n\t return $.grep(node.childNodes, function(child) {\n\t return child.nodeType != 3 || !Dom.isWhitespace(child);\n\t });\n\t },\n\n\t lastTextNode: function(node) {\n\t var result = null;\n\n\t if (node.nodeType == 3) {\n\t return node;\n\t }\n\n\t for (var child = node.lastChild; child; child = child.previousSibling) {\n\t result = Dom.lastTextNode(child);\n\n\t if (result) {\n\t return result;\n\t }\n\t }\n\n\t return result;\n\t },\n\n\t is: function (node, nodeName) {\n\t return node && Dom.name(node) == nodeName;\n\t },\n\n\t isMarker: function(node) {\n\t return node.className == KMARKER;\n\t },\n\n\t isWhitespace: function(node) {\n\t return whitespace.test(node.nodeValue);\n\t },\n\n\t allWhitespaceContent: function(node) {\n\t var child = node.firstChild;\n\t while(child && Dom.isWhitespace(child)) {\n\t child = child.nextSibling;\n\t }\n\n\t return !child;\n\t },\n\n\n\t isEmptyspace: function(node) {\n\t return emptyspace.test(node.nodeValue);\n\t },\n\n\t htmlIndentSpace: function (node){\n\t if (!(Dom.isDataNode(node) && Dom.isWhitespace(node))) {\n\t return false;\n\t }\n\n\t if (emptyspace.test(node.nodeValue)) {\n\t return true;\n\t }\n\n\t var sibling = function(el, direction) {\n\t while (el[direction]) {\n\t el = el[direction];\n\t if (Dom.significantNodes([el]).length > 0) {\n\t return el;\n\t }\n\t }\n\t };\n\n\t var parent = node.parentNode;\n\t var prev = sibling(node, \"previousSibling\");\n\t var next = sibling(node, \"nextSibling\");\n\n\t if (bom.test(node.nodeValue)) {\n\t return !!(prev || next);\n\t }\n\n\t if ($(parent).is(\"tr,tbody,thead,tfoot,table,ol,ul\")) {\n\t return true;\n\t }\n\n\t if (Dom.isBlock(parent) || Dom.is(parent, \"body\")) {\n\t var isPrevBlock = prev && Dom.isBlock(prev);\n\t var isNextBlock = next && Dom.isBlock(next);\n\t if ((!next && isPrevBlock) || (!prev && isNextBlock) || (isPrevBlock && isNextBlock)) {\n\t return true;\n\t }\n\t }\n\n\t return false;\n\t },\n\n\t isBlock: function(node) {\n\t return block[Dom.name(node)];\n\t },\n\n\t isSelfClosing: function(node) {\n\t return selfClosing[Dom.name(node)];\n\t },\n\n\t isEmpty: function(node) {\n\t return empty[Dom.name(node)];\n\t },\n\n\t isInline: function(node) {\n\t return inline[Dom.name(node)];\n\t },\n\n\t isBr: function(node) {\n\t return Dom.name(node) == \"br\";\n\t },\n\n\t list: function(node) {\n\t var name = node ? Dom.name(node) : \"\";\n\t return name == \"ul\" || name == \"ol\" || name == \"dl\";\n\t },\n\n\t scrollContainer: function(doc) {\n\t var wnd = Dom.windowFromDocument(doc),\n\t scrollContainer = (wnd.contentWindow || wnd).document || wnd.ownerDocument || wnd;\n\n\t if (scrollContainer.compatMode == 'BackCompat') {\n\t scrollContainer = scrollContainer.body;\n\t } else {\n\t scrollContainer = scrollContainer.scrollingElement || scrollContainer.documentElement;\n\t }\n\n\t return scrollContainer;\n\t },\n\n\t scrollTo: function (node, toStart) {\n\t var doc = node.ownerDocument;\n\t var wnd = Dom.windowFromDocument(doc);\n\t var windowHeight = wnd.innerHeight;\n\t var scrollContainer = Dom.scrollContainer(doc);\n\t var element, elementTop, elementHeight, marker;\n\n\t if (Dom.isDataNode(node)) {\n\t if (toStart) {\n\t marker = Dom.create(doc, \"span\", {\"innerHTML\": \"\"});\n\t Dom.insertBefore(marker, node);\n\t element = $(marker);\n\t } else {\n\t element = $(node.parentNode);\n\t }\n\t } else {\n\t element = $(node);\n\t }\n\n\t elementTop = element.offset().top;\n\t elementHeight = element[0].offsetHeight;\n\n\t if (toStart || !elementHeight) {\n\t elementHeight = parseInt(element.css(\"line-height\"), 10) ||\n\t Math.ceil(1.2 * parseInt(element.css(\"font-size\"), 10)) ||\n\t 15;\n\t }\n\n\t if (marker) {\n\t Dom.remove(marker);\n\t }\n\n\t if (elementHeight + elementTop > scrollContainer.scrollTop + windowHeight) {\n\t scrollContainer.scrollTop = elementHeight + elementTop - windowHeight;\n\t }\n\t },\n\n\t persistScrollTop: function(doc) {\n\t persistedScrollTop = Dom.scrollContainer(doc).scrollTop;\n\t },\n\n\t offset: function (target, offsetParent) {\n\t var result = {top: target.offsetTop, left: target.offsetLeft};\n\t var parent = target.offsetParent;\n\n\t while (parent && (!offsetParent || Dom.isAncestorOf(offsetParent, parent))) {\n\t result.top += parent.offsetTop;\n\t result.left += parent.offsetLeft;\n\t parent = parent.offsetParent;\n\t }\n\n\t return result;\n\t },\n\n\t restoreScrollTop: function(doc) {\n\t if (typeof persistedScrollTop == \"number\") {\n\t Dom.scrollContainer(doc).scrollTop = persistedScrollTop;\n\t persistedScrollTop = undefined;\n\t }\n\t },\n\n\t insertAt: function (parent, newElement, position) {\n\t parent.insertBefore(newElement, parent.childNodes[position] || null);\n\t },\n\n\t insertBefore: function (newElement, referenceElement) {\n\t if (referenceElement.parentNode) {\n\t return referenceElement.parentNode.insertBefore(newElement, referenceElement);\n\t } else {\n\t return referenceElement;\n\t }\n\t },\n\n\t insertAfter: function (newElement, referenceElement) {\n\t return referenceElement.parentNode.insertBefore(newElement, referenceElement.nextSibling);\n\t },\n\n\t remove: function (node) {\n\t if(node.parentNode) {\n\t node.parentNode.removeChild(node);\n\t }\n\t },\n\n\t removeChildren: function(node){\n\t while(node.firstChild) {\n\t node.removeChild(node.firstChild);\n\t }\n\t },\n\n\t removeTextSiblings: function(node) {\n\t var parentNode = node.parentNode;\n\n\t while (node.nextSibling && node.nextSibling.nodeType == 3) {\n\t parentNode.removeChild(node.nextSibling);\n\t }\n\n\t while (node.previousSibling && node.previousSibling.nodeType == 3) {\n\t parentNode.removeChild(node.previousSibling);\n\t }\n\t },\n\n\t trim: function (parent) {\n\t for (var i = parent.childNodes.length - 1; i >= 0; i--) {\n\t var node = parent.childNodes[i];\n\t if (Dom.isDataNode(node)) {\n\t if (!Dom.stripBom(node.nodeValue).length) {\n\t Dom.remove(node);\n\t }\n\t } else if (node.className != KMARKER) {\n\t Dom.trim(node);\n\n\t if ((!Dom.isEmpty(node) && node.childNodes.length === 0) ||\n\t (Dom.isBlock(node) && Dom.allWhitespaceContent(node))) {\n\t Dom.remove(node);\n\t }\n\t }\n\t }\n\n\t return parent;\n\t },\n\n\t closest: function(node, tags) {\n\t if(typeof tags === \"string\") {\n\t tags = [tags];\n\t }\n\n\t while (node && tags.indexOf(Dom.name(node)) < 0) {\n\t node = node.parentNode;\n\t }\n\n\t return node;\n\t },\n\n\t closestBy: function(node, condition, rootCondition) {\n\t while (node && !condition(node)) {\n\t if (rootCondition && rootCondition(node)){\n\t return null;\n\t }\n\t node = node.parentNode;\n\t }\n\t return node;\n\t },\n\n\t sibling: function(node, direction) {\n\t do {\n\t node = node[direction];\n\t } while (node && node.nodeType != 1);\n\n\t return node;\n\t },\n\n\t next: function(node) {\n\t return Dom.sibling(node, \"nextSibling\");\n\t },\n\n\t prev: function(node) {\n\t return Dom.sibling(node, \"previousSibling\");\n\t },\n\n\t parentOfType: function (node, tags) {\n\t do {\n\t node = node.parentNode;\n\t } while (node && !(Dom.ofType(node, tags)));\n\n\t return node;\n\t },\n\n\t ofType: function (node, tags) {\n\t return $.inArray(Dom.name(node), tags) >= 0;\n\t },\n\n\t changeTag: function (referenceElement, tagName, skipAttributes) {\n\t var newElement = Dom.create(referenceElement.ownerDocument, tagName),\n\t attributes = referenceElement.attributes,\n\t i, len, name, value, attribute;\n\n\t if (!skipAttributes) {\n\t for (i = 0, len = attributes.length; i < len; i++) {\n\t attribute = attributes[i];\n\t if (attribute.specified) {\n\t // IE < 8 cannot set class or style via setAttribute\n\t name = attribute.nodeName;\n\t value = attribute.nodeValue;\n\t if (name == CLASS) {\n\t newElement.className = value;\n\t } else if (name == STYLE) {\n\t newElement.style.cssText = referenceElement.style.cssText;\n\t } else {\n\t newElement.setAttribute(name, value);\n\t }\n\t }\n\t }\n\t }\n\n\t while (referenceElement.firstChild) {\n\t newElement.appendChild(referenceElement.firstChild);\n\t }\n\n\t Dom.insertBefore(newElement, referenceElement);\n\t Dom.remove(referenceElement);\n\t return newElement;\n\t },\n\n\t editableParent: function(node) {\n\t while (node && (node.nodeType == 3 || node.contentEditable !== 'true')) {\n\t node = node.parentNode;\n\t }\n\n\t return node;\n\t },\n\n\t wrap: function (node, wrapper) {\n\t Dom.insertBefore(wrapper, node);\n\t wrapper.appendChild(node);\n\t return wrapper;\n\t },\n\n\t unwrap: function (node) {\n\t var parent = node.parentNode;\n\t while (node.firstChild) {\n\t parent.insertBefore(node.firstChild, node);\n\t }\n\n\t parent.removeChild(node);\n\t },\n\n\t wrapper: function(node) {\n\t var wrapper = Dom.closestBy(node, function (el) {\n\t return el.parentNode && Dom.significantNodes(el.parentNode.childNodes).length > 1;\n\t });\n\n\t return $(wrapper).is(\"body,.k-editor\") ? undefined : wrapper;\n\t },\n\n\t create: function (document, tagName, attributes) {\n\t return Dom.attr(document.createElement(tagName), attributes);\n\t },\n\n\t createEmptyNode: function (document, tagName, attributes) {\n\t var node = Dom.attr(document.createElement(tagName), attributes);\n\t node.innerHTML = \"\\ufeff\";\n\t return node;\n\t },\n\n\t attr: function (element, attributes) {\n\t attributes = extend({}, attributes);\n\n\t if (attributes && STYLE in attributes) {\n\t Dom.style(element, attributes.style);\n\t delete attributes.style;\n\t }\n\n\t for (var attr in attributes) {\n\t if (attributes[attr] === null) {\n\t element.removeAttribute(attr);\n\t delete attributes[attr];\n\t } else if (attr == \"className\") {\n\t element[attr] = attributes[attr];\n\t }\n\t }\n\n\t return extend(element, attributes);\n\t },\n\n\t mergeAttributes: function (origin, target, traverseCss) {\n\t if (!origin.attributes.length) {\n\t return;\n\t }\n\n\t $.each(origin.attributes, function() {\n\t if(this.name !== \"contenteditable\" && (!traverseCss || this.name !== STYLE)) {\n\t $(target).attr(this.name, this.value);\n\t }\n\n\t if (traverseCss && this.name === STYLE) {\n\t $.each(origin.style, function(){\n\t target.style[this] = origin.style[this];\n\t });\n\t }\n\t });\n\t },\n\n\t style: function (node, value) {\n\t $(node).css(value || {});\n\t },\n\n\t unstyle: function (node, value) {\n\t for (var key in value) {\n\t if (key == FLOAT) {\n\t key = kendo.support.cssFloat ? CSSFLOAT : STYLEFLOAT;\n\t }\n\n\t node.style[key] = \"\";\n\t }\n\n\t if (node.style.cssText === \"\") {\n\t node.removeAttribute(STYLE);\n\t }\n\t },\n\n\t inlineStyle: function(body, name, attributes) {\n\t var span = $(Dom.create(body.ownerDocument, name, attributes)),\n\t style;\n\n\t body.appendChild(span[0]);\n\n\t style = map(cssAttributes, function(value) {\n\t if (browser.msie && value == \"line-height\" && span.css(value) == \"1px\") {\n\t return \"line-height:1.5\";\n\t } else {\n\t return value + \":\" + span.css(value);\n\t }\n\t }).join(\";\");\n\n\t span.remove();\n\n\t return style;\n\t },\n\n\t getEffectiveBackground: function(element) {\n\t var backgroundStyle = element.css(\"background-color\") || \"\";\n\n\t if (backgroundStyle.indexOf(\"rgba(0, 0, 0, 0\") < 0 && backgroundStyle !== \"transparent\") {\n\t return backgroundStyle;\n\t } else if (element[0].tagName.toLowerCase() === \"html\") {\n\t return \"Window\";\n\t } else {\n\t return Dom.getEffectiveBackground(element.parent());\n\t }\n\t },\n\n\t innerText: function(node) {\n\t var text = node.innerHTML;\n\t text = text.replace(//gi, \"\");\n\t text = text.replace(/<\\/?[^>]+?\\/?>/gm, \"\");\n\n\t return text;\n\t },\n\n\t removeClass: function(node, classNames) {\n\t var className = \" \" + node.className + \" \",\n\t classes = classNames.split(\" \"),\n\t i, len;\n\n\t for (i = 0, len = classes.length; i < len; i++) {\n\t className = className.replace(\" \" + classes[i] + \" \", \" \");\n\t }\n\n\t className = kendo.trim(className);\n\n\t if (className.length) {\n\t node.className = className;\n\t } else {\n\t node.removeAttribute(CLASS);\n\t }\n\t },\n\n\t commonAncestor: function () {\n\t var count = arguments.length,\n\t paths = [],\n\t minPathLength = Infinity,\n\t output = null,\n\t i, ancestors, node, first, j;\n\n\t if (!count) {\n\t return null;\n\t }\n\n\t if (count == 1) {\n\t return arguments[0];\n\t }\n\n\t for (i = 0; i < count; i++) {\n\t ancestors = [];\n\t node = arguments[i];\n\t while (node) {\n\t ancestors.push(node);\n\t node = node.parentNode;\n\t }\n\t paths.push(ancestors.reverse());\n\t minPathLength = Math.min(minPathLength, ancestors.length);\n\t }\n\n\t if (count == 1) {\n\t return paths[0][0];\n\t }\n\n\t for (i = 0; i < minPathLength; i++) {\n\t first = paths[0][i];\n\n\t for (j = 1; j < count; j++) {\n\t if (first != paths[j][i]) {\n\t return output;\n\t }\n\t }\n\n\t output = first;\n\t }\n\t return output;\n\t },\n\n\t closestSplittableParent: function(nodes) {\n\t var result;\n\n\t if (nodes.length == 1) {\n\t result = Dom.parentOfType(nodes[0], [\"ul\",\"ol\"]);\n\t } else {\n\t result = Dom.commonAncestor.apply(null, nodes);\n\t }\n\n\t if (!result) {\n\t result = Dom.parentOfType(nodes[0], [\"p\", \"td\"]) || nodes[0].ownerDocument.body;\n\t }\n\n\t if (Dom.isInline(result)) {\n\t result = Dom.blockParentOrBody(result);\n\t }\n\n\t var editableParents = map(nodes, Dom.editableParent);\n\t var editableAncestor = Dom.commonAncestor(editableParents)[0];\n\n\t if ($.contains(result, editableAncestor)) {\n\t result = editableAncestor;\n\t }\n\n\t return result;\n\t },\n\n\t closestEditable: function(node, types) {\n\t var closest;\n\t var editable = Dom.editableParent(node);\n\n\t if (Dom.ofType(node, types)) {\n\t closest = node;\n\t } else {\n\t closest = Dom.parentOfType(node, types);\n\t }\n\n\t if (closest && editable && $.contains(closest, editable)) {\n\t closest = editable;\n\t } else if (!closest && editable) {\n\t closest = editable;\n\t }\n\n\t return closest;\n\t },\n\n\t closestEditableOfType: function(node, types) {\n\t var editable = Dom.closestEditable(node, types);\n\n\t if (editable && Dom.ofType(editable, types) && !$(editable).is(\".k-editor\")) {\n\t return editable;\n\t }\n\t },\n\n\t filter: function(tagName, nodes, invert) {\n\t var filterFn = function (node) {\n\t return Dom.name(node) == tagName;\n\t };\n\n\t return Dom.filterBy(nodes, filterFn, invert);\n\t },\n\n\t filterBy: function(nodes, condition, invert) {\n\t var i = 0;\n\t var len = nodes.length;\n\t var result = [];\n\t var match;\n\n\t for (; i < len; i++) {\n\t match = condition(nodes[i]);\n\t if ((match && !invert) || (!match && invert)) {\n\t result.push(nodes[i]);\n\t }\n\t }\n\n\t return result;\n\t },\n\n\t ensureTrailingBreaks: function(node) {\n\t var elements = $(node).find(\"p,td,th\");\n\t var length = elements.length;\n\t var i = 0;\n\n\t if (length) {\n\t for (; i < length; i++) {\n\t Dom.ensureTrailingBreak(elements[i]);\n\t }\n\t } else {\n\t Dom.ensureTrailingBreak(node);\n\t }\n\t },\n\n\t removeTrailingBreak: function(node) {\n\t $(node).find(\"br[type=_moz],.k-br\").remove();\n\t },\n\n\t ensureTrailingBreak: function(node) {\n\t Dom.removeTrailingBreak(node);\n\n\t var lastChild = node.lastChild;\n\t var name = lastChild && Dom.name(lastChild);\n\t var br;\n\n\t if (!name ||\n\t (name != \"br\" && name != \"img\") ||\n\t (name == \"br\" && lastChild.className != \"k-br\")) {\n\t br = node.ownerDocument.createElement(\"br\");\n\t br.className = \"k-br\";\n\t node.appendChild(br);\n\t }\n\t },\n\n\t // Start: Table Utilities\n\n\t reMapTableColumns: function (table, colAttr) {\n\t Dom._mapColIndices(table, colAttr);\n\t },\n\n\t clearTableMappings: function (table, colAttr) {\n\t $(table).find(\"[\"+ colAttr + \"]\").removeAttr(colAttr);\n\t },\n\n\t _mapColIndices: function (table, colAttr) {\n\t var registeredColumns = {};\n\n\t for (var rowIndex = 0; rowIndex < table.rows.length; rowIndex++) {\n\t var cells = table.rows[rowIndex].cells;\n\t var colIndex = 0;\n\t for (var cellIndex = 0; cellIndex < cells.length; cellIndex++, colIndex++) {\n\t var cell = cells[cellIndex];\n\n\t if(cell.rowSpan > 1) {\n\t this._mapColspan(cell, rowIndex, colIndex, registeredColumns);\n\t }\n\n\t if(registeredColumns[rowIndex]) {\n\t while(registeredColumns[rowIndex][colIndex]) {\n\t colIndex++;\n\t }\n\t }\n\n\t cell.setAttribute(colAttr, colIndex);\n\n\t if(cell.colSpan > 1) {\n\t colIndex = colIndex + cell.colSpan - 1;\n\t }\n\t }\n\t }\n\t },\n\n\t _mapColspan: function (cell, rowIndex, colIndex, registeredColumns) {\n\t var rowSpan = cell.rowSpan,\n\t colSpan = cell.colSpan,\n\t index;\n\n\t for (var ci = 0; ci < colSpan; ci++) {\n\t index = colIndex + ci;\n\n\t for (var ri = rowIndex + 1; ri < rowIndex + rowSpan; ri++) {\n\n\t if(!registeredColumns[ri]) {\n\t registeredColumns[ri] = {};\n\t registeredColumns[ri].length = 0;\n\t }\n\n\t if(registeredColumns[rowIndex]) {\n\t while(registeredColumns[rowIndex][index]) {\n\t index++;\n\t }\n\t }\n\n\t registeredColumns[ri][index] = true;\n\t registeredColumns[ri].length++;\n\t }\n\t }\n\n\t },\n\n\t associateWithIds: function(table) {\n\t var that = this;\n\t var numberOfTheadRows = 0;\n\t var tableRows = table.rows;\n\t var numberOfTableRows = tableRows.length;\n\t var theadMatrix = [];\n\t var tbodyMatrix = [];\n\t var theadRows, i;\n\n\t if(table.tHead) {\n\t theadRows = table.tHead.rows;\n\t numberOfTheadRows = theadRows.length;\n\t } else {\n\t numberOfTheadRows = that._getNumberOfHeaderRows(table);\n\t theadRows = [];\n\t for (i = 0; i < numberOfTheadRows; i++) {\n\t theadRows.push(tableRows[i]);\n\t }\n\t }\n\t for (i = 0; i < numberOfTheadRows; i++) {\n\t theadMatrix.push([]);\n\t }\n\t for (i = 0; i < numberOfTableRows; i++) {\n\t tbodyMatrix.push([]);\n\t }\n\n\t that._generateIdsForColumns(theadMatrix, theadRows);\n\t that._generateIdsForRows(theadMatrix, tbodyMatrix, numberOfTheadRows, tableRows);\n\t that._assignIds(theadMatrix, tbodyMatrix, numberOfTheadRows, tableRows);\n\t },\n\n\t _generateIdsForColumns: function(theadMatrix, theadRows) {\n\t var timestamp = new Date().getTime();\n\t var numberOfTheadRows = theadRows ? theadRows.length : 0;\n\t var row, cells, cell, col, id, colspan, rowspan, i, j, k, l;\n\n\t for (i = 0; i < numberOfTheadRows; i++) {\n\t row = theadRows[i];\n\t cells = row.cells;\n\t col = 0;\n\n\t for(j = 0; j < cells.length; j++) {\n\t cell = cells[j];\n\t id = \"table\" + i + j + (++timestamp);\n\t cell.setAttribute(\"id\", id);\n\t colspan = cell.getAttribute(\"colspan\") || 1;\n\t rowspan = cell.getAttribute(\"rowspan\") || 1;\n\n\t while(theadMatrix[i][j + col]) {\n\t col += 1;\n\t }\n\n\t for(k = 0; k < rowspan; k++) {\n\t for(l = 0; l < colspan; l++) {\n\t theadMatrix[i + k][j + col + l] = id;\n\t }\n\t }\n\t }\n\t }\n\t },\n\n\t _generateIdsForRows: function(theadMatrix, tbodyMatrix, numberOfTheadRows, tableRows) {\n\t var that = this;\n\t var timestamp = new Date().getTime();\n\t var numberOfTableRows = tableRows.length;\n\t var row, cells, cell, col, id, colspan, rowspan, i, j, k, l, colIndex, headers;\n\n\t var pushHeaderId = function(row){\n\t headers.push(row[colIndex]);\n\t };\n\n\t for (i = numberOfTheadRows; i < numberOfTableRows; i++) {\n\t row = tableRows[i];\n\t cells = $(row.cells).filter(\"th\");\n\t col = 0;\n\n\t for(j = 0; j < cells.length; j++) {\n\t cell = cells[j];\n\t id = \"table\" + i + j + (++timestamp);\n\t cell.setAttribute(\"id\", id);\n\t colspan = cell.getAttribute(\"colspan\") || 1;\n\t rowspan = cell.getAttribute(\"rowspan\") || 1;\n\n\t while(tbodyMatrix[i][j + col]) {\n\t col += 1;\n\t }\n\n\t for(k = 0; k < rowspan; k++) {\n\t for(l = 0; l < colspan; l++) {\n\t tbodyMatrix[i + k][j + col + l] = id;\n\t }\n\t }\n\n\t colIndex = cell.getAttribute(\"col-index\");\n\t headers = [];\n\t theadMatrix.forEach(pushHeaderId);\n\t headers = headers.filter(that._onlyUnique);\n\t cell.setAttribute(\"headers\", headers.join(\" \").trim());\n\t }\n\t }\n\t },\n\n\t _assignIds: function(theadMatrix, tbodyMatrix, numberOfTheadRows, tableRows) {\n\t var that = this;\n\t var numberOfTableRows = tableRows.length;\n\t var row, cells, cell, i, j, colIndex, headers;\n\n\t var pushHeaderId = function(row){\n\t headers.push(row[colIndex]);\n\t };\n\n\t for (i = numberOfTheadRows; i < numberOfTableRows; i++) {\n\t row = tableRows[i];\n\t cells = $(row.cells).filter(\"td\");\n\n\t for(j = 0; j < cells.length; j++) {\n\t cell = cells[j];\n\t colIndex = cell.getAttribute(\"col-index\");\n\t headers = tbodyMatrix[i].slice();\n\n\t theadMatrix.forEach(pushHeaderId);\n\t headers = headers.filter(that._onlyUnique);\n\t cell.setAttribute(\"headers\", headers.join(\" \").trim());\n\t }\n\t }\n\t },\n\n\t _getNumberOfColumns: function(table) {\n\t var cells = $(table).find(\"th, td\");\n\t var numberOfCols = 0;\n\t var cell, i, currentIndex;\n\n\t for(i = 0; i < cells.length; i++) {\n\t cell = cells[i];\n\t currentIndex = Number(cell.getAttribute(\"col-index\")) + 1;\n\t if(currentIndex > numberOfCols) {\n\t numberOfCols = currentIndex;\n\t }\n\t }\n\n\t return numberOfCols;\n\t },\n\n\t _getNumberOfHeaderColumns: function(table, numberOfHeaderRows) {\n\t var rows = table.rows;\n\t var numberOfCols = 0;\n\t var currentIndex, row, i, j, cell;\n\n\t for(i = numberOfHeaderRows; i < rows.length; i++) {\n\t row = rows[i];\n\n\t for(j = 0; j < row.cells.length; j++) {\n\t cell = row.cells[j];\n\n\t if(this.is(cell, \"th\")) {\n\t currentIndex = Number(cell.getAttribute(\"col-index\")) + 1;\n\t if(currentIndex > numberOfCols) {\n\t numberOfCols = currentIndex;\n\t }\n\t }\n\t }\n\t }\n\n\t return numberOfCols;\n\t },\n\n\t _getNumberOfHeaderRows: function(table) {\n\t var rows = table.rows;\n\t var thead = table.tHead;\n\t var number = thead && table.tHead.rows ? table.tHead.rows.length : 0;\n\t var j, row, cell, length;\n\n\t if(number === 0) {\n\t row = rows[0];\n\t length = row.cells && row.cells.length;\n\n\t while(row && length && this.is(row.cells[0], \"th\")) {\n\t for(j = 0; j < length; j++) {\n\t cell = row ? row.cells[j] : null;\n\n\t if(!this.is(cell, \"th\")) {\n\t row = null;\n\t }\n\t }\n\n\t if(row) {\n\t number += 1;\n\t row = this.next(row);\n\t length = row && row.cells && row.cells.length;\n\t }\n\t }\n\t }\n\n\t return number ;\n\t },\n\n\t // End: Table Utilities\n\n\t _onlyUnique: function(value, index, self) {\n\t return self.indexOf(value) === index;\n\t }\n\t};\n\n\tkendo.ui.editor.Dom = Dom;\n\n\t})(window.kendo.jQuery);\n\n\t}, __webpack_require__(3));\n\n\n\n\n/***/ }),\n\n/***/ 970:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./main\");\n\n/***/ })\n\n/******/ });","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__(965);\n\tmodule.exports = __webpack_require__(965);\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/***/ 965:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(966) ], __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 editorNS = kendo.ui.editor,\n\t dom = editorNS.Dom,\n\t RestorePoint = editorNS.RestorePoint,\n\t Marker = editorNS.Marker,\n\t extend = $.extend;\n\n\tfunction finishUpdate(editor, startRestorePoint) {\n\t var endRestorePoint = editor.selectionRestorePoint = new RestorePoint(editor.getRange(), editor.body);\n\t var command = new GenericCommand(startRestorePoint, endRestorePoint);\n\t command.editor = editor;\n\n\t editor.undoRedoStack.push(command);\n\t editor.toolbar.refreshTools();\n\n\t return endRestorePoint;\n\t}\n\n\tvar Command = Class.extend({\n\t init: function(options) {\n\t this.options = options;\n\t this.restorePoint = new RestorePoint(options.range, options.body, {immutables: options.immutables});\n\t this.marker = new Marker();\n\t this.formatter = options.formatter;\n\t },\n\n\t getRange: function () {\n\t return this.restorePoint.toRange();\n\t },\n\n\t lockRange: function (expand) {\n\t return this.marker.add(this.getRange(), expand);\n\t },\n\n\t releaseRange: function (range) {\n\t this.marker.remove(range);\n\t this.editor.selectRange(range);\n\t },\n\n\t undo: function () {\n\t var point = this.restorePoint;\n\t point.restoreHtml();\n\t this.editor.selectRange(point.toRange());\n\t },\n\n\t redo: function () {\n\t this.exec();\n\t },\n\n\t createDialog: function (content, options) {\n\t var editor = this.editor;\n\n\t return $(content).appendTo(document.body)\n\t .kendoWindow(extend({}, editor.options.dialogOptions, options))\n\t .closest(\".k-window\").toggleClass(\"k-rtl\", kendo.support.isRtl(editor.wrapper)).end();\n\t },\n\n\t exec: function () {\n\t var range = this.lockRange(true);\n\t this.formatter.editor = this.editor;\n\t this.formatter.toggle(range);\n\t this.releaseRange(range);\n\t },\n\n\t immutables: function(){\n\t return this.editor && this.editor.options.immutables;\n\t },\n\n\t expandImmutablesIn: function(range) {\n\t if (this.immutables()) {\n\t kendo.ui.editor.Immutables.expandImmutablesIn(range);\n\t this.restorePoint = new RestorePoint(range, this.editor.body);\n\t }\n\t }\n\t});\n\n\tvar GenericCommand = Class.extend({\n\t init: function(startRestorePoint, endRestorePoint) {\n\t this.body = startRestorePoint.body;\n\t this.startRestorePoint = startRestorePoint;\n\t this.endRestorePoint = endRestorePoint;\n\t },\n\n\t redo: function () {\n\t dom.removeChildren(this.body);\n\n\t this.body.innerHTML = this.endRestorePoint.html;\n\t this.editor.selectRange(this.endRestorePoint.toRange());\n\t },\n\n\t undo: function () {\n\t dom.removeChildren(this.body);\n\n\t this.body.innerHTML = this.startRestorePoint.html;\n\t this.editor.selectRange(this.startRestorePoint.toRange());\n\t }\n\t});\n\n\textend(editorNS, {\n\t _finishUpdate: finishUpdate,\n\t Command: Command,\n\t GenericCommand: GenericCommand\n\t});\n\n\t})(window.kendo.jQuery);\n\n\t}, __webpack_require__(3));\n\n\n/***/ }),\n\n/***/ 966:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./immutables\");\n\n/***/ })\n\n/******/ });","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__(967);\n\tmodule.exports = __webpack_require__(967);\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/***/ 967:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(968) ], __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($, undefined) {\n\n\tvar kendo = window.kendo,\n\t DropDownList = kendo.ui.DropDownList,\n\t dom = kendo.ui.editor.Dom;\n\n\tvar SelectBox = DropDownList.extend({\n\t init: function(element, options) {\n\t var that = this;\n\n\t DropDownList.fn.init.call(that, element, options);\n\n\t // overlay drop-down with popout for snappier interaction\n\t if (kendo.support.mobileOS.ios) {\n\t this._initSelectOverlay();\n\t this.bind(\"dataBound\", $.proxy(this._initSelectOverlay, this));\n\t }\n\n\t that.text(that.options.title);\n\n\t that.element.attr(\"title\", that.options.title);\n\t that.wrapper.attr(\"title\", that.options.title);\n\n\t that.bind(\"open\", function() {\n\t if (that.options.autoSize) {\n\t var list = that.list,\n\t listWidth;\n\n\t list.css({\n\t whiteSpace: \"nowrap\",\n\t width: \"auto\"\n\t });\n\n\t listWidth = list.width();\n\n\t if (listWidth > 0) {\n\t listWidth += 20;\n\t } else {\n\t listWidth = that._listWidth;\n\t }\n\n\t list.css(\"width\", listWidth + kendo.support.scrollbar());\n\n\t that._listWidth = listWidth;\n\t }\n\t });\n\t },\n\t options: {\n\t name: \"SelectBox\",\n\t index: -1\n\t },\n\n\t _initSelectOverlay: function() {\n\t var selectBox = this;\n\t var value = selectBox.value();\n\t var view = this.dataSource.view();\n\t var item;\n\t var html = \"\";\n\t var encode = kendo.htmlEncode;\n\n\t for (var i = 0; i < view.length; i++) {\n\t item = view[i];\n\n\t html += \"\";\n\t }\n\n\t var select = $(\"\");\n\t var wrapper = $(this.element).closest(\".k-widget\");\n\n\t wrapper.next(\".k-select-overlay\").remove();\n\n\t select.insertAfter(wrapper);\n\n\t select.on(\"change\", function() {\n\t selectBox.value(this.value);\n\t selectBox.trigger(\"change\");\n\t });\n\t },\n\n\t value: function(value) {\n\t var that = this,\n\t result = DropDownList.fn.value.call(that, value);\n\n\t if (value === undefined) {\n\t return result;\n\t }\n\n\t if (!DropDownList.fn.value.call(that)) {\n\t that.text(that.options.title);\n\t }\n\t },\n\n\t decorate: function(body) {\n\t var that = this,\n\t dataSource = that.dataSource,\n\t items = dataSource.data(),\n\t i, tag, className, style;\n\n\t if (body) {\n\t that.list.css(\"background-color\", dom.getEffectiveBackground($(body)));\n\t }\n\n\t for (i = 0; i < items.length; i++) {\n\t tag = items[i].tag || \"span\";\n\t className = items[i].className;\n\n\t style = dom.inlineStyle(body, tag, { className : className });\n\n\t style = style.replace(/\"/g, \"'\");\n\n\t items[i].style = style + \";display:inline-block\";\n\t }\n\n\t dataSource.trigger(\"change\");\n\t }\n\t});\n\n\n\tkendo.ui.plugin(SelectBox);\n\tkendo.ui.editor.SelectBox = SelectBox;\n\n\t})(window.kendo.jQuery);\n\n\t}, __webpack_require__(3));\n\n\n/***/ }),\n\n/***/ 968:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./serializer\");\n\n/***/ })\n\n/******/ });"],"sourceRoot":""}