\").kendoProgressBar(progressBarOptions).getKendoProgressBar();\n\t this.progressBar.element.addClass(\"k-pos-absolute k-overflow-hidden\");\n\n\t // TODO: for 2021 R2 the following line must be removed!\n\t this.progressBar.element.css(\"position\", \"absolute\");\n\n\t this._calculateDimensions();\n\n\t wrapper.append(this.progressBar.element);\n\t },\n\n\t _progressOptions: function() {\n\t var options = this.options,\n\t orientation = options.orientation,\n\t stepsOptions = options.steps,\n\t numberOfSteps, progressBarOptions;\n\n\t if(!stepsOptions || stepsOptions.length === 0) {\n\t return;\n\t } else {\n\t numberOfSteps = stepsOptions.length;\n\t }\n\n\t progressBarOptions = {\n\t max: numberOfSteps - 1,\n\t value: this.select().getIndex(),\n\t orientation: orientation,\n\t showStatus: false\n\t };\n\n\t if(orientation === VERTICAL) {\n\t progressBarOptions.reverse = true;\n\t }\n\n\t return progressBarOptions;\n\t },\n\n\t _resetProgressBar: function() {\n\t var progressBar = this.progressBar,\n\t newOptions;\n\n\t if(!progressBar) {\n\t return;\n\t }\n\n\t newOptions = this._progressOptions();\n\t progressBar.setOptions(newOptions);\n\t },\n\n\t _renderSteps: function() {\n\t var steps = this._steps,\n\t stepsList = this._stepList,\n\t step, idx;\n\n\t stepsList.empty();\n\n\t for (idx = 0; idx < steps.length; idx++) {\n\t step = steps[idx];\n\t stepsList.append(step.element);\n\t }\n\t },\n\n\t _resetStep: function(i, index, forward) {\n\t var step = this._steps[i];\n\n\t if(!forward && i < index) {\n\t step.options.selectable = true;\n\t } else if(i === index) {\n\t step.options.previous = false;\n\t step.options.selected = true;\n\t step.options.selectable = true;\n\t } else if (forward && i > index) {\n\t step.options.selectable = true;\n\t } else {\n\t step.options.selected = false;\n\t step.options.previous = forward;\n\t }\n\n\t if(this.options.linear && (i < index - 1 || i > index + 1)) {\n\t step.options.selectable = false;\n\t }\n\n\t step._link();\n\t step._stepClasses();\n\t this.options.steps[i] = step.options;\n\t },\n\n\t _select: function(index) {\n\t var options = this.options,\n\t linear = options.linear,\n\t selectedStep = this.select(),\n\t selectedIndex = selectedStep.getIndex(),\n\t stepsOptions = options.steps,\n\t targetStep = this._steps[index],\n\t forward, i, min, max;\n\n\t if(!targetStep || !targetStep.getEnabled()) {\n\t return;\n\t }\n\n\t if(index > selectedIndex) {\n\t forward = true;\n\n\t if(linear) {\n\t min = Math.max(selectedIndex - 1, 0);\n\t max = Math.min(index + 1, stepsOptions.length - 1);\n\t } else {\n\t min = selectedIndex;\n\t max = index;\n\t }\n\t } else {\n\t forward = false;\n\n\t if(linear) {\n\t min = Math.max(index - 1, 0);\n\t max = Math.min(selectedIndex + 1, stepsOptions.length - 1);\n\t } else {\n\t min = index;\n\t max = selectedIndex;\n\t }\n\t }\n\n\t for(i = min; i <= max; i ++) {\n\t this._resetStep(i, index, forward);\n\t }\n\n\t this.selectedStep = targetStep;\n\t this.progressBar.value(index);\n\t },\n\n\t _selectablePreviousState: function(stepOpt, selected, idx) {\n\t var stepsOptions = this.options.steps,\n\t linear = this.options.linear;\n\n\t if(!selected) {\n\t stepOpt.previous = true;\n\t if(linear && !stepsOptions[idx + 1].selected) {\n\t stepOpt.selectable = false;\n\t } else {\n\t stepOpt.selectable = true;\n\t }\n\t } else if(linear && !stepsOptions[idx - 1].selected) {\n\t stepOpt.selectable = false;\n\t } else {\n\t stepOpt.selectable = true;\n\t }\n\n\t return stepOpt;\n\t },\n\n\t _selectClickHandler: function(e) {\n\t var stepElement = $(e.target).closest(DOT + stepStyles.step);\n\n\t e.preventDefault();\n\t this._preventWrapperClick = true;\n\t this._selectHandler(e, stepElement);\n\t },\n\n\t _selectHandler: function(e, stepElement) {\n\t var that = this,\n\t step = that._steps[stepElement.index()],\n\t currentStep = this.select();\n\n\t if(!step || step.getIndex() === currentStep.getIndex() || !step.getEnabled() || !step.getSelectable()) {\n\t that._focusStep(currentStep.element);\n\n\t return;\n\t }\n\n\t if(!that.trigger(SELECT, { sender: that, originalEvent: e, step: step})) {\n\t that._select(step.getIndex());\n\t stepElement.find(DOT + stepStyles.stepLink)[0].focus();\n\t that.trigger(ACTIVATE, { sender: that, originalEvent: e, step: step});\n\t }\n\t },\n\n\t _selectHandlerOnKey: function(e, stepElement) {\n\t var that = this,\n\t step = that._steps[stepElement.index()];\n\n\t if(!step.getEnabled() || !step.getSelectable()) {\n\t return;\n\t }\n\n\t if(!that.trigger(SELECT, { sender: that, originalEvent: e, step: step})) {\n\t that._select(step.getIndex());\n\t stepElement.find(DOT + stepStyles.stepLink)[0].focus();\n\t that.trigger(ACTIVATE, { sender: that, originalEvent: e, step: step});\n\t }\n\t },\n\n\t _tabKey: function(e, shift) {\n\t var selectOnFocus = this.options.selectOnFocus,\n\t focusedStepElement = $(document.activeElement).closest(DOT + stepStyles.step),\n\t focusedStepIndex = focusedStepElement.index(),\n\t targetStep = $(focusedStepElement.parent().find(DOT + stepStyles.step)[focusedStepIndex + shift]);\n\n\t this._focusStep(targetStep);\n\n\t if(selectOnFocus) {\n\t this._selectHandlerOnKey(e, targetStep);\n\t }\n\t },\n\n\t _wrapper: function() {\n\t var that = this,\n\t element = that.element;\n\n\t that.wrapper = element;\n\t that.wrapper.addClass(stepperStyles.widget);\n\n\t if(that.options.linear) {\n\t that.wrapper.addClass(stepperStyles.stepperLinear);\n\t }\n\n\t this._addStepList();\n\t },\n\n\t _wrapperClickHandler: function(e) {\n\t var currentStep = this.select();\n\n\t if(!this._preventWrapperClick) {\n\t e.preventDefault();\n\t this._focusStep(currentStep.element);\n\t } else {\n\t this._preventWrapperClick = false;\n\t }\n\t }\n\t });\n\n\t kendo.stepper = {\n\t Step: Step\n\t };\n\n\t kendo.ui.plugin(Stepper);\n\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\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\tmodule.exports = __webpack_require__(1415);\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/***/ 1212:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./util/undoredostack\");\n\n/***/ }),\n\n/***/ 1277:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.pdf\");\n\n/***/ }),\n\n/***/ 1295:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.excel\");\n\n/***/ }),\n\n/***/ 1297:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.progressbar\");\n\n/***/ }),\n\n/***/ 1415:\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__ = [\n\t __webpack_require__(1212),\n\t __webpack_require__(1417),\n\t __webpack_require__(1418),\n\t __webpack_require__(1295),\n\t __webpack_require__(1297),\n\t __webpack_require__(1277),\n\t __webpack_require__(1419),\n\t __webpack_require__(1420),\n\t __webpack_require__(1421),\n\t __webpack_require__(1422),\n\t __webpack_require__(1423),\n\t __webpack_require__(1424),\n\t __webpack_require__(1425),\n\t __webpack_require__(1426),\n\t __webpack_require__(1427),\n\t __webpack_require__(1428),\n\t __webpack_require__(1429),\n\t __webpack_require__(1430),\n\t __webpack_require__(1431),\n\t __webpack_require__(1432),\n\t __webpack_require__(1433),\n\t __webpack_require__(1416),\n\t __webpack_require__(1434),\n\t __webpack_require__(1435),\n\t __webpack_require__(1436),\n\t __webpack_require__(1437),\n\t __webpack_require__(1438),\n\t __webpack_require__(1439),\n\t __webpack_require__(1440),\n\t __webpack_require__(1441),\n\t __webpack_require__(1442),\n\t __webpack_require__(1443),\n\t __webpack_require__(1444),\n\t __webpack_require__(1445),\n\t __webpack_require__(1446),\n\t __webpack_require__(1447),\n\t __webpack_require__(1448),\n\t __webpack_require__(1449),\n\t __webpack_require__(1450),\n\t __webpack_require__(1451),\n\t __webpack_require__(1452),\n\t __webpack_require__(1453)\n\t ], __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\t var __meta__ = { // jshint ignore:line\n\t id: \"spreadsheet\",\n\t name: \"Spreadsheet\",\n\t category: \"web\",\n\t description: \"Spreadsheet component\",\n\t depends: [\n\t \"core\", \"binder\", \"colorpicker\", \"combobox\", \"data\", \"dom\", \"dropdownlist\",\n\t \"menu\", \"ooxml\", \"popup\", \"sortable\", \"tabstrip\", \"toolbar\", \"treeview\",\n\t \"window\", \"validator\", \"excel\", \"pdf\", \"drawing\" ]\n\t };\n\n\t (function(kendo, undefined) {\n\t if (kendo.support.browser.msie && kendo.support.browser.version < 9) {\n\t return;\n\t }\n\n\t var $ = kendo.jQuery;\n\t var keys = $.extend({F10: 121, F11: 122, B: 66, I: 73, U: 85, N: 78, H: 72, A: 65, PAGEDOWN: 34, PAGEUP: 33, DELETE: 46, R: 82}, kendo.keys);\n\t var Widget = kendo.ui.Widget;\n\t var Workbook = kendo.spreadsheet.Workbook;\n\t var Controller = kendo.spreadsheet.Controller;\n\t var View = kendo.spreadsheet.View;\n\t var NS = \".kendoSpreadsheet\";\n\n\t var ALL_REASONS = {\n\t recalc: true,\n\t selection: true,\n\t activeCell: true,\n\t layout: true,\n\t sheetSelection: true,\n\t resize: true,\n\t editorChange: false,\n\t editorClose: false\n\t };\n\n\t var classNames = {\n\t wrapper: \"k-widget k-spreadsheet\"\n\t };\n\n\t var Spreadsheet = kendo.ui.Widget.extend({\n\t init: function(element, options) {\n\t Widget.fn.init.call(this, element, options);\n\n\t this.element.addClass(Spreadsheet.classNames.wrapper);\n\n\t this._view = new View(this.element, {\n\t messages: this.options.messages.view,\n\t toolbar: this.options.toolbar,\n\t sheetsbar:this.options.sheetsbar\n\t });\n\n\t this._workbook = new Workbook(this.options, this._view);\n\n\t this._controller = new Controller(this._view, this._workbook);\n\n\t this._autoRefresh = true;\n\n\t this._bindWorkbookEvents();\n\n\t this._view.workbook(this._workbook);\n\n\t this._view.enableClipboard(false);\n\t this.refresh();\n\t this._view.enableClipboard(true);\n\n\t this._resizeHandler = function() { this.resize(); }.bind(this);\n\t $(window).on(\"resize\" + NS, this._resizeHandler);\n\n\t this.element.on(\"keydown\" + NS, this._keyDown.bind(this));\n\t },\n\n\t _keyDown: function(e) {\n\t var key = e.keyCode;\n\t var redoTool = $(\".k-spreadsheet-quick-access-toolbar [title=Redo]\");\n\t if (key === keys.F11 && e.shiftKey) {\n\t this._view.sheetsbar._onAddSelect();\n\t e.preventDefault();\n\t return;\n\t } else if (e.altKey && key === keys.PAGEDOWN) {\n\t this._view.sheetsbar.trigger(\"select\", {\n\t name: this._view.sheetsbar._sheets[this._view.sheetsbar._selectedIndex + 1].name(),\n\t isAddButton: false\n\t });\n\t } else if (e.altKey && key === keys.PAGEUP) {\n\t this._view.sheetsbar.trigger(\"select\", {\n\t name: this._view.sheetsbar._sheets[this._view.sheetsbar._selectedIndex - 1].name(),\n\t isAddButton: false\n\t });\n\t } else if (e.altKey && key === keys.DELETE) {\n\t var closeCallback = function(e) {\n\t var dlg = e.sender;\n\n\t if (dlg.isConfirmed()) {\n\t this._view.sheetsbar.trigger(\"remove\", { name: this.activeSheet()._name(), confirmation: true });\n\t }\n\t }.bind(this);\n\n\t this._view.sheetsbar._openDialog(\"confirmation\", {\n\t close: closeCallback\n\t });\n\t e.preventDefault();\n\t return;\n\t } else if (e.altKey && key === keys.R) {\n\t this._view.sheetsbar._createEditor();\n\t e.preventDefault();\n\t return;\n\t } else if (key === keys.F10 && this._view.tabstrip || (key === keys.TAB && !e.shiftKey && $(document.activeElement).is(redoTool))) {\n\t this._view.tabstrip.toolbars[this._view.tabstrip.element.find(\"li.k-state-active\").text().toLowerCase()].element.find(\":not(.k-overflow-anchor):kendoFocusable\").first().trigger(\"focus\");\n\t this._view.tabstrip.toolbars[this._view.tabstrip.element.find(\"li.k-state-active\").text().toLowerCase()].element.find(\".k-toolbar-first-visible\").addClass(\"k-state-focused\");\n\t e.preventDefault();\n\t return;\n\t } else if (e.ctrlKey && key === keys.B) {\n\t $(\"[data-tool=bold]\")[0].click();\n\t } else if (e.ctrlKey && key === keys.I) {\n\t $(\"[data-tool=italic]\")[0].click();\n\t } else if (e.ctrlKey && key === keys.U) {\n\t $(\"[data-tool=underline]\")[0].click();\n\t } else if (e.altKey && key === keys.H) {\n\t this._view.tabstrip.select(0);\n\t e.preventDefault();\n\t return;\n\t } else if (e.altKey && key === keys.N) {\n\t this._view.tabstrip.select(1);\n\t e.preventDefault();\n\t return;\n\t } else if (e.altKey && key === keys.A) {\n\t this._view.tabstrip.select(2);\n\t e.preventDefault();\n\t return;\n\t }\n\t },\n\n\t _resize: function() {\n\t this.refresh({ layout: true });\n\t },\n\n\t _workbookChanging: function(e) {\n\t if (this.trigger(\"changing\", e)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _workbookChange: function(e) {\n\t if (this._autoRefresh) {\n\t this.refresh(e);\n\t }\n\n\t if (e.recalc && e.ref) {\n\t var range = e.range || new kendo.spreadsheet.Range(e.ref, this.activeSheet());\n\t this.trigger(\"change\", { range: range });\n\t }\n\t },\n\n\t _workbookCut: function(e) {\n\t this.trigger(\"cut\", e);\n\t },\n\n\t _workbookCopy: function(e) {\n\t this.trigger(\"copy\", e);\n\t },\n\n\t _workbookPaste: function(e) {\n\t this.trigger(\"paste\", e);\n\t },\n\n\t activeSheet: function(sheet) {\n\t return this._workbook.activeSheet(sheet);\n\t },\n\n\t moveSheetToIndex: function (sheet, index) {\n\t return this._workbook.moveSheetToIndex(sheet, index);\n\t },\n\n\t insertSheet: function(options) {\n\t return this._workbook.insertSheet(options);\n\t },\n\n\t sheets: function() {\n\t return this._workbook.sheets();\n\t },\n\n\t removeSheet: function(sheet) {\n\t return this._workbook.removeSheet(sheet);\n\t },\n\n\t sheetByName: function(sheetName) {\n\t return this._workbook.sheetByName(sheetName);\n\t },\n\n\t sheetIndex: function(sheet) {\n\t return this._workbook.sheetIndex(sheet);\n\t },\n\n\t sheetByIndex: function(index) {\n\t return this._workbook.sheetByIndex(index);\n\t },\n\n\t renameSheet: function(sheet, newSheetName) {\n\t return this._workbook.renameSheet(sheet, newSheetName);\n\t },\n\n\t refresh: function(reason) {\n\t if (!reason) {\n\t reason = ALL_REASONS;\n\t }\n\n\t if (!reason.editorClose) {\n\t this._view.sheet(this._workbook.activeSheet());\n\t this._controller.sheet(this._workbook.activeSheet());\n\n\t this._workbook.refresh(reason);\n\t }\n\n\t if (!reason.editorChange) {\n\t this._view.refresh(reason);\n\t this._controller.refresh();\n\n\t this._view.render(reason);\n\t this.trigger(\"render\");\n\t }\n\n\t return this;\n\t },\n\n\t openDialog: function(name, options) {\n\t return this._view.openDialog(name, options);\n\t },\n\n\t autoRefresh: function(value) {\n\t if (value !== undefined) {\n\t this._autoRefresh = value;\n\n\t if (value === true) {\n\t this.refresh();\n\t }\n\n\t return this;\n\t }\n\n\t return this._autoRefresh;\n\t },\n\n\t toJSON: function() {\n\t return this._workbook.toJSON();\n\t },\n\n\t fromJSON: function(json) {\n\t if (json.sheets) {\n\t this._workbook.destroy();\n\n\t this._workbook = new Workbook($.extend({}, this.options, json));\n\n\t this._bindWorkbookEvents();\n\n\t this._view.workbook(this._workbook);\n\t this._controller.workbook(this._workbook);\n\n\t this.activeSheet(this.activeSheet());\n\t } else {\n\t this.refresh();\n\t }\n\t },\n\n\t saveJSON: function() {\n\t return this._workbook.saveJSON();\n\t },\n\n\t fromFile: function(blob, name) {\n\t return this._workbook.fromFile(blob, name);\n\t },\n\n\t saveAsPDF: function(options) {\n\t this._workbook.saveAsPDF(\n\t $.extend({}, this.options.pdf, options, { workbook: this._workbook })\n\t );\n\t },\n\n\t saveAsExcel: function(options) {\n\t this._workbook.saveAsExcel(options);\n\t },\n\n\t draw: function(options, callback) {\n\t this._workbook.draw(options, callback);\n\t },\n\n\t _workbookExcelExport: function(e) {\n\t if (this.trigger(\"excelExport\", e)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _workbookExcelImport: function(e) {\n\t if (this.trigger(\"excelImport\", e)) {\n\t e.preventDefault();\n\t } else {\n\t this._initProgress(e.promise);\n\t }\n\t },\n\n\t _initProgress: function(deferred) {\n\t var loading =\n\t $(\"
\")\n\t .appendTo(this.element);\n\n\t var pb = $(\"
\")\n\t .appendTo(loading)\n\t .kendoProgressBar({\n\t type: \"chunk\", chunkCount: 10,\n\t min: 0, max: 1, value: 0\n\t }).data(\"kendoProgressBar\");\n\n\t deferred.progress(function(e) {\n\t pb.value(e.progress);\n\t })\n\t .always(function() {\n\t kendo.destroy(loading);\n\t loading.remove();\n\t });\n\t },\n\n\t _workbookPdfExport: function(e) {\n\t if (this.trigger(\"pdfExport\", e)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _workbookInsertSheet: function(e) {\n\t if (this.trigger(\"insertSheet\", e)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _workbookRemoveSheet: function(e) {\n\t if (this.trigger(\"removeSheet\", e)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _workbookSelectSheet: function(e) {\n\t if (this.trigger(\"selectSheet\", e)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _workbookRenameSheet: function(e) {\n\t if (this.trigger(\"renameSheet\", e)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _workbookInsertRow: function(e) {\n\t if (this.trigger(\"insertRow\", e)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _workbookInsertColumn: function(e) {\n\t if (this.trigger(\"insertColumn\", e)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _workbookDeleteRow: function(e) {\n\t if (this.trigger(\"deleteRow\", e)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _workbookDeleteColumn: function(e) {\n\t if (this.trigger(\"deleteColumn\", e)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _workbookHideRow: function(e) {\n\t if (this.trigger(\"hideRow\", e)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _workbookHideColumn: function(e) {\n\t if (this.trigger(\"hideColumn\", e)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _workbookUnhideRow: function(e) {\n\t if (this.trigger(\"unhideRow\", e)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _workbookUnhideColumn: function(e) {\n\t if (this.trigger(\"unhideColumn\", e)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _workbookSelect: function(e) {\n\t this.trigger(\"select\", e);\n\t },\n\n\t _workbookChangeFormat: function(e) {\n\t this.trigger(\"changeFormat\", e);\n\t },\n\n\t _workbookDataBinding: function(e) {\n\t if (this.trigger(\"dataBinding\", e)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _workbookDataBound: function(e) {\n\t this.trigger(\"dataBound\", e);\n\t },\n\n\t _workbookProgress: function(e) {\n\t kendo.ui.progress(this.element, e.toggle);\n\t },\n\n\t _bindWorkbookEvents: function() {\n\t this._workbook.bind(\"cut\", this._workbookCut.bind(this));\n\t this._workbook.bind(\"copy\", this._workbookCopy.bind(this));\n\t this._workbook.bind(\"paste\", this._workbookPaste.bind(this));\n\t this._workbook.bind(\"changing\", this._workbookChanging.bind(this));\n\t this._workbook.bind(\"change\", this._workbookChange.bind(this));\n\t this._workbook.bind(\"excelExport\", this._workbookExcelExport.bind(this));\n\t this._workbook.bind(\"excelImport\", this._workbookExcelImport.bind(this));\n\t this._workbook.bind(\"pdfExport\", this._workbookPdfExport.bind(this));\n\t this._workbook.bind(\"insertSheet\", this._workbookInsertSheet.bind(this));\n\t this._workbook.bind(\"removeSheet\", this._workbookRemoveSheet.bind(this));\n\t this._workbook.bind(\"selectSheet\", this._workbookSelectSheet.bind(this));\n\t this._workbook.bind(\"renameSheet\", this._workbookRenameSheet.bind(this));\n\t this._workbook.bind(\"insertRow\", this._workbookInsertRow.bind(this));\n\t this._workbook.bind(\"insertColumn\", this._workbookInsertColumn.bind(this));\n\t this._workbook.bind(\"deleteRow\", this._workbookDeleteRow.bind(this));\n\t this._workbook.bind(\"deleteColumn\", this._workbookDeleteColumn.bind(this));\n\t this._workbook.bind(\"hideRow\", this._workbookHideRow.bind(this));\n\t this._workbook.bind(\"hideColumn\", this._workbookHideColumn.bind(this));\n\t this._workbook.bind(\"unhideRow\", this._workbookUnhideRow.bind(this));\n\t this._workbook.bind(\"unhideColumn\", this._workbookUnhideColumn.bind(this));\n\t this._workbook.bind(\"select\", this._workbookSelect.bind(this));\n\t this._workbook.bind(\"changeFormat\", this._workbookChangeFormat.bind(this));\n\t this._workbook.bind(\"dataBinding\", this._workbookDataBinding.bind(this));\n\t this._workbook.bind(\"dataBound\", this._workbookDataBound.bind(this));\n\t this._workbook.bind(\"progress\", this._workbookProgress.bind(this));\n\t },\n\n\t destroy: function() {\n\t kendo.ui.Widget.fn.destroy.call(this);\n\n\t this._workbook.destroy();\n\t this._controller.destroy();\n\t this._view.destroy();\n\n\t if (this._resizeHandler) {\n\t $(window).off(\"resize\" + NS, this._resizeHandler);\n\t }\n\t },\n\n\t options: {\n\t name: \"Spreadsheet\",\n\t toolbar: true,\n\t sheetsbar: true,\n\t rows: 200,\n\t columns: 50,\n\t rowHeight: 20,\n\t columnWidth: 64,\n\t headerHeight: 20,\n\t headerWidth: 32,\n\t excel: {\n\t proxyURL: \"\",\n\t fileName: \"Workbook.xlsx\"\n\t },\n\t messages: {},\n\t pdf: {\n\t // which part of the workbook to be exported\n\t area : \"workbook\",\n\t fileName : \"Workbook.pdf\",\n\t proxyURL : \"\",\n\t // paperSize can be an usual name, i.e. \"A4\", or an array of two Number-s specifying the\n\t // width/height in points (1pt = 1/72in), or strings including unit, i.e. \"10mm\". Supported\n\t // units are \"mm\", \"cm\", \"in\" and \"pt\". The default \"auto\" means paper size is determined\n\t // by content.\n\t paperSize : \"a4\",\n\t // True to reverse the paper dimensions if needed such that width is the larger edge.\n\t landscape : true,\n\t // An object containing { left, top, bottom, right } margins with units.\n\t margin : null,\n\t // Optional information for the PDF Info dictionary; all strings except for the date.\n\t title : null,\n\t author : null,\n\t subject : null,\n\t keywords : null,\n\t creator : \"Kendo UI PDF Generator v.\" + kendo.version,\n\t // Creation Date; defaults to new Date()\n\t date : null\n\t },\n\t defaultCellStyle: {\n\t fontFamily: \"Arial\",\n\t fontSize: 12\n\t },\n\t useCultureDecimals: false\n\t },\n\n\t defineName: function(name, value, hidden) {\n\t return this._workbook.defineName(name, value, hidden);\n\t },\n\n\t undefineName: function(name) {\n\t return this._workbook.undefineName(name);\n\t },\n\n\t nameValue: function(name) {\n\t return this._workbook.nameValue(name);\n\t },\n\n\t forEachName: function(func) {\n\t return this._workbook.forEachName(func);\n\t },\n\n\t cellContextMenu: function() {\n\t return this._view.cellContextMenu;\n\t },\n\n\t rowHeaderContextMenu: function() {\n\t return this._view.rowHeaderContextMenu;\n\t },\n\n\t colHeaderContextMenu: function() {\n\t return this._view.colHeaderContextMenu;\n\t },\n\n\t addImage: function(image) {\n\t return this._workbook.addImage(image);\n\t },\n\n\t cleanupImages: function() {\n\t return this._workbook.cleanupImages();\n\t },\n\n\t events: [\n\t \"cut\",\n\t \"copy\",\n\t \"paste\",\n\t \"pdfExport\",\n\t \"excelExport\",\n\t \"excelImport\",\n\t \"changing\",\n\t \"change\",\n\t \"render\",\n\t \"removeSheet\",\n\t \"selectSheet\",\n\t \"renameSheet\",\n\t \"insertRow\",\n\t \"insertColumn\",\n\t \"deleteRow\",\n\t \"insertSheet\",\n\t \"deleteColumn\",\n\t \"hideRow\",\n\t \"hideColumn\",\n\t \"unhideRow\",\n\t \"unhideColumn\",\n\t \"select\",\n\t \"changeFormat\",\n\t \"dataBinding\",\n\t \"dataBound\"\n\t ]\n\t });\n\n\t kendo.spreadsheet.ALL_REASONS = ALL_REASONS;\n\t kendo.ui.plugin(Spreadsheet);\n\t $.extend(true, Spreadsheet, { classNames: classNames });\n\t })(window.kendo);\n\n\t return window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ }),\n\n/***/ 1416:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/formulacontext\");\n\n/***/ }),\n\n/***/ 1417:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./util/text-metrics\");\n\n/***/ }),\n\n/***/ 1418:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./util/parse-xml\");\n\n/***/ }),\n\n/***/ 1419:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/commands\");\n\n/***/ }),\n\n/***/ 1420:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/formulabar\");\n\n/***/ }),\n\n/***/ 1421:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/formulainput\");\n\n/***/ }),\n\n/***/ 1422:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/eventlistener\");\n\n/***/ }),\n\n/***/ 1423:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/rangelist\");\n\n/***/ }),\n\n/***/ 1424:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/propertybag\");\n\n/***/ }),\n\n/***/ 1425:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/references\");\n\n/***/ }),\n\n/***/ 1426:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/navigator\");\n\n/***/ }),\n\n/***/ 1427:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/axismanager\");\n\n/***/ }),\n\n/***/ 1428:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/clipboard\");\n\n/***/ }),\n\n/***/ 1429:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/range\");\n\n/***/ }),\n\n/***/ 1430:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/sheet\");\n\n/***/ }),\n\n/***/ 1431:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/sheetsbar\");\n\n/***/ }),\n\n/***/ 1432:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/excel-reader\");\n\n/***/ }),\n\n/***/ 1433:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/workbook\");\n\n/***/ }),\n\n/***/ 1434:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/controller\");\n\n/***/ }),\n\n/***/ 1435:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/view\");\n\n/***/ }),\n\n/***/ 1436:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/customeditors\");\n\n/***/ }),\n\n/***/ 1437:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/grid\");\n\n/***/ }),\n\n/***/ 1438:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/axis\");\n\n/***/ }),\n\n/***/ 1439:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/filter\");\n\n/***/ }),\n\n/***/ 1440:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/sorter\");\n\n/***/ }),\n\n/***/ 1441:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/runtime\");\n\n/***/ }),\n\n/***/ 1442:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/calc\");\n\n/***/ }),\n\n/***/ 1443:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/numformat\");\n\n/***/ }),\n\n/***/ 1444:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/runtime.functions\");\n\n/***/ }),\n\n/***/ 1445:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/runtime.functions.2\");\n\n/***/ }),\n\n/***/ 1446:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/toolbar\");\n\n/***/ }),\n\n/***/ 1447:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/dialogs\");\n\n/***/ }),\n\n/***/ 1448:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/sheetbinder\");\n\n/***/ }),\n\n/***/ 1449:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/filtermenu\");\n\n/***/ }),\n\n/***/ 1450:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/editor\");\n\n/***/ }),\n\n/***/ 1451:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/autofill\");\n\n/***/ }),\n\n/***/ 1452:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/nameeditor\");\n\n/***/ }),\n\n/***/ 1453:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./spreadsheet/print\");\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\tmodule.exports = __webpack_require__(1456);\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/***/ 1059:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"jquery\");\n\n/***/ }),\n\n/***/ 1069:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.data\");\n\n/***/ }),\n\n/***/ 1456:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(jQuery) {(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1069) ], __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\tvar __meta__ = { // jshint ignore:line\n\t id: \"tabstrip\",\n\t name: \"TabStrip\",\n\t category: \"web\",\n\t description: \"The TabStrip widget displays a collection of tabs with associated tab content.\",\n\t depends: [ \"data\" ],\n\t features: [ {\n\t id: \"tabstrip-fx\",\n\t name: \"Animation\",\n\t description: \"Support for animation\",\n\t depends: [ \"fx\" ]\n\t } ]\n\t};\n\n\t(function ($, undefined) {\n\t var kendo = window.kendo,\n\t ui = kendo.ui,\n\t keys = kendo.keys,\n\t map = $.map,\n\t each = $.each,\n\t trim = kendo.trim,\n\t extend = $.extend,\n\t isFunction = kendo.isFunction,\n\t template = kendo.template,\n\t outerWidth = kendo._outerWidth,\n\t outerHeight = kendo._outerHeight,\n\t Widget = ui.Widget,\n\t excludedNodesRegExp = /^(a|div)$/i,\n\t NS = \".kendoTabStrip\",\n\t IMG = \"img\",\n\t HREF = \"href\",\n\t PREV = \"prev\",\n\t NEXT = \"next\",\n\t SHOW = \"show\",\n\t LINK = \"k-link\",\n\t LAST = \"k-last\",\n\t CLICK = \"click\",\n\t ERROR = \"error\",\n\t EMPTY = \":empty\",\n\t IMAGE = \"k-image\",\n\t FIRST = \"k-first\",\n\t SELECT = \"select\",\n\t ACTIVATE = \"activate\",\n\t CONTENT = \"k-tabstrip-content k-content\",\n\t CONTENTURL = \"contentUrl\",\n\t MOUSEENTER = \"mouseenter\",\n\t MOUSELEAVE = \"mouseleave\",\n\t CONTENTLOAD = \"contentLoad\",\n\t DISABLEDSTATE = \"k-state-disabled\",\n\t DEFAULTSTATE = \"k-state-default\",\n\t ACTIVESTATE = \"k-state-active\",\n\t FOCUSEDSTATE = \"k-state-focused\",\n\t HOVERSTATE = \"k-state-hover\",\n\t TABONTOP = \"k-tab-on-top\",\n\t NAVIGATABLEITEMS = \".k-item:not(.\" + DISABLEDSTATE + \")\",\n\t KEYBOARDNAVIGATABLEITEMS = \".k-item\",\n\t HOVERABLEITEMS = \".k-tabstrip-items > \" + NAVIGATABLEITEMS + \":not(.\" + ACTIVESTATE + \")\",\n\t DEFAULTDISTANCE = 200,\n\n\t templates = {\n\t content: template(\n\t \"
#= content(item) #
\"\n\t ),\n\t itemWrapper: template(\n\t \"<#= tag(item) # class='k-link' #= contentUrl(item) # #= textAttributes(item) #>\" +\n\t \"#= image(item) ##= sprite(item) ##= text(item) #\" +\n\t \"#= tag(item) #>\"\n\t ),\n\t item: template(\n\t \"
\" +\n\t \"#= itemWrapper(data) #\" +\n\t \"\"\n\t ),\n\t image: template(\"

\"),\n\t sprite: template(\"
\"),\n\t empty: template(\"\")\n\t },\n\n\t rendering = {\n\t wrapperCssClass: function (group, item) {\n\t var result = [\"k-tabstrip-item\", \"k-item\"],\n\t index = item.index;\n\n\t if (item.enabled === false) {\n\t result.push(\"k-state-disabled\");\n\t } else {\n\t result.push(\"k-state-default\");\n\t }\n\n\t if (index === 0) {\n\t result.push(\"k-first\");\n\t }\n\n\t if (index == group.length-1) {\n\t result.push(\"k-last\");\n\t }\n\n\t return result.join(\" \");\n\t },\n\t textAttributes: function(item) {\n\t return item.url ? \" href='\" + item.url + \"'\" : \"\";\n\t },\n\t text: function(item) {\n\t return item.encoded === false ? item.text : kendo.htmlEncode(item.text);\n\t },\n\t tag: function(item) {\n\t return item.url ? \"a\" : \"span\";\n\t },\n\t contentAttributes: function(content) {\n\t return content.active !== true ? \" style='display:none' aria-hidden='true' aria-expanded='false'\" : \"\";\n\t },\n\t content: function(item) {\n\t return item.content ? item.content : item.contentUrl ? \"\" : \" \";\n\t },\n\t contentUrl: function(item) {\n\t return item.contentUrl ? kendo.attr(\"content-url\") + '=\"' + item.contentUrl + '\"' : \"\";\n\t }\n\t };\n\n\t function updateTabClasses(tabs) {\n\t tabs.children(IMG)\n\t .addClass(IMAGE);\n\n\t tabs.children(\"a\")\n\t .addClass(LINK)\n\t .children(IMG)\n\t .addClass(IMAGE);\n\n\t tabs.filter(\":not([disabled]):not([class*=k-state-disabled])\")\n\t .addClass(DEFAULTSTATE);\n\n\t tabs.filter(\"li[disabled]\")\n\t .addClass(DISABLEDSTATE)\n\t .attr(\"aria-disabled\", \"true\")\n\t .prop(\"disabled\", false);\n\n\t tabs.filter(\":not([class*=k-state])\")\n\t .children(\"a\")\n\t .filter(\":focus\")\n\t .parent()\n\t .addClass(ACTIVESTATE + \" \" + TABONTOP);\n\n\t tabs.attr(\"role\", \"tab\");\n\t tabs.filter(\".\" + ACTIVESTATE)\n\t .attr(\"aria-selected\", true);\n\n\n\t tabs.each(function() {\n\t var item = $(this);\n\n\t if (!item.children(\".\" + LINK).length) {\n\t item\n\t .contents() // exclude groups, real links, templates and empty text nodes\n\t .filter(function() { return (!this.nodeName.match(excludedNodesRegExp) && !(this.nodeType == 3 && !trim(this.nodeValue))); })\n\t .wrapAll(\"
\");\n\t }\n\t });\n\n\t }\n\n\t function updateFirstLast(tabGroup) {\n\t var tabs = tabGroup.children(\".k-item\");\n\n\t tabs.filter(\".k-first:not(:first-child)\").removeClass(FIRST);\n\t tabs.filter(\".k-last:not(:last-child)\").removeClass(LAST);\n\t tabs.filter(\":first-child\").addClass(FIRST);\n\t tabs.filter(\":last-child\").addClass(LAST);\n\t }\n\n\t function scrollButtonHtml(buttonClass, iconClass) {\n\t return \"
\";\n\t }\n\n\t var TabStrip = Widget.extend({\n\t init: function(element, options) {\n\t var that = this, value;\n\n\t Widget.fn.init.call(that, element, options);\n\n\t that._animations(that.options);\n\n\t options = that.options;\n\n\t that._contentUrls = options.contentUrls || [];\n\n\t that._wrapper();\n\n\t that._isRtl = kendo.support.isRtl(that.wrapper);\n\n\t that._tabindex();\n\t that._updateClasses();\n\t that._dataSource();\n\n\t that.tabGroup.attr(\"role\", \"none\");\n\t that.wrapper.attr(\"role\", \"tablist\");\n\n\t if (options.dataSource) {\n\t that.dataSource.fetch();\n\t }\n\n\t that._tabPosition();\n\t that._scrollable();\n\t that._processContentUrls();\n\t that._attachEvents();\n\n\t if (that.options.value) {\n\t value = that.options.value;\n\t }\n\n\t that._initialActivate();\n\t that.value(value);\n\t kendo.notify(that);\n\t },\n\n\t events: [\n\t SELECT,\n\t ACTIVATE,\n\t SHOW,\n\t ERROR,\n\t CONTENTLOAD,\n\t \"change\",\n\t \"dataBinding\",\n\t \"dataBound\"\n\t ],\n\n\t options: {\n\t name: \"TabStrip\",\n\t dataEncodedField: \"\",\n\t dataTextField: \"\",\n\t dataContentField: \"\",\n\t dataImageUrlField: \"\",\n\t dataUrlField: \"\",\n\t dataSpriteCssClass: \"\",\n\t dataContentUrlField: \"\",\n\t tabPosition: \"top\",\n\t animation: {\n\t open: {\n\t effects: \"expand:vertical fadeIn\",\n\t duration: 200\n\t },\n\t close: { // if close animation effects are defined, they will be used instead of open.reverse\n\t duration: 200\n\t }\n\t },\n\t collapsible: false,\n\t navigatable: true,\n\t contentUrls: false,\n\t scrollable: {\n\t distance: DEFAULTDISTANCE\n\t }\n\t },\n\n\t setDataSource: function(dataSource) {\n\t var that = this;\n\n\t that.options.dataSource = dataSource;\n\t that._dataSource();\n\t that.dataSource.fetch();\n\t },\n\n\t setOptions: function(options) {\n\t var that = this,\n\t animation = that.options.animation;\n\n\t that._animations(options);\n\n\t if (options.contentUrls) {\n\t that._contentUrls = options.contentUrls;\n\t }\n\n\t options.animation = extend(true, animation, options.animation);\n\n\t if (options.navigatable) {\n\t that.wrapper.on(\"keydown\" + NS, that._keyDownProxy);\n\t } else {\n\t that.wrapper.off(\"keydown\" + NS, that._keyDownProxy);\n\t }\n\n\t Widget.fn.setOptions.call(that, options);\n\t },\n\n\t activateTab: function (item) {\n\t if (this.tabGroup.children(\"[data-animating]\").length) { return; }\n\n\t item = this.tabGroup.find(item);\n\n\t var that = this,\n\t animationSettings = that.options.animation,\n\t animation = animationSettings.open,\n\t close = extend({}, animationSettings.close),\n\t hasCloseAnimation = close && \"effects\" in close,\n\t neighbours = item.parent().children(),\n\t oldTab = neighbours.filter(\".\" + ACTIVESTATE),\n\t itemIndex = neighbours.index(item),\n\t isAnimationEnabled = animation && \"duration\" in animation && \"effects\" in animation;\n\n\t close = extend( hasCloseAnimation ? close : extend({ reverse: true }, animation), { hide: true });\n\t // deactivate previously active tab\n\t if (kendo.size(animation.effects)) {\n\t oldTab.kendoRemoveClass(ACTIVESTATE, { duration: close.duration });\n\t item.kendoRemoveClass(HOVERSTATE, { duration: close.duration });\n\t } else {\n\t oldTab.removeClass(ACTIVESTATE);\n\t item.removeClass(HOVERSTATE);\n\t }\n\n\t // handle content elements\n\t var contentAnimators = that.contentAnimators;\n\n\t if (that.inRequest) {\n\t that.xhr.abort();\n\t that.inRequest = false;\n\t }\n\n\t if (contentAnimators.length === 0) {\n\t that.tabGroup.find(\".\" + TABONTOP).removeClass(TABONTOP);\n\t item.addClass(TABONTOP) // change these directly to bring the tab on top.\n\t .css(\"z-index\");\n\n\t item.addClass(ACTIVESTATE);\n\t that._current(item);\n\n\t that.trigger(\"change\");\n\n\t if (that._scrollableModeActive) {\n\t that._scrollTabsToItem(item);\n\t }\n\n\t return false;\n\t }\n\n\t var visibleContents = contentAnimators.filter(\".\" + ACTIVESTATE),\n\t contentHolder = that.contentHolder(itemIndex),\n\t contentElement = contentHolder.closest(\".k-content\");\n\n\t that.tabsHeight = outerHeight(that.tabGroup) +\n\t parseInt(that.wrapper.css(\"border-top-width\"), 10) +\n\t parseInt(that.wrapper.css(\"border-bottom-width\"), 10);\n\n\t if (contentHolder.length === 0) {\n\t visibleContents\n\t .removeClass( ACTIVESTATE )\n\t .attr(\"aria-hidden\", true)\n\t .kendoStop(true, true)\n\t .kendoAnimate( close );\n\t return false;\n\t }\n\n\t item.attr(\"data-animating\", true);\n\n\t var isAjaxContent = (item.children(\".\" + LINK).data(CONTENTURL) || that._contentUrls[itemIndex] || false) && contentHolder.is(EMPTY),\n\t showContentElement = function () {\n\t oldTab.removeAttr(\"aria-selected\");\n\t item.attr(\"aria-selected\", true);\n\n\t that._current(item);\n\n\t contentElement\n\t .addClass(ACTIVESTATE)\n\t .removeAttr(\"aria-hidden\")\n\t .kendoStop(true, true)\n\t .attr(\"aria-expanded\", true)\n\t .kendoAnimate( extend({ init: function () {\n\t that.trigger(SHOW, { item: item[0], contentElement: contentHolder[0] });\n\t kendo.resize(contentHolder);\n\t } }, animation, {\n\t complete: function () {\n\t item.removeAttr(\"data-animating\");\n\n\t that.trigger(ACTIVATE, { item: item[0], contentElement: contentHolder[0] });\n\t kendo.resize(contentHolder);\n\n\t // Force IE and Edge rendering to fix visual glitches telerik/kendo-ui-core#2777.\n\t if (isAnimationEnabled && (kendo.support.browser.msie || kendo.support.browser.edge)) {\n\t contentHolder.finish().animate({\n\t opacity: 0.9\n\t },\"fast\", \"linear\", function(){\n\t contentHolder.finish().animate({\n\t opacity: 1\n\t },\"fast\", \"linear\");\n\t });\n\t }\n\t }\n\t } ) );\n\t },\n\t showContent = function() {\n\t if (!isAjaxContent) {\n\t showContentElement();\n\t that.trigger(\"change\");\n\t } else {\n\t item.removeAttr(\"data-animating\");\n\t that.ajaxRequest(item, contentHolder, function () {\n\t item.attr(\"data-animating\", true);\n\t showContentElement();\n\t that.trigger(\"change\");\n\t });\n\t }\n\n\t if (that._scrollableModeActive) {\n\t that._scrollTabsToItem(item);\n\t }\n\n\t };\n\n\t visibleContents\n\t .removeClass(ACTIVESTATE);\n\n\t that.tabGroup.find(\".\" + TABONTOP).removeClass(TABONTOP);\n\t item.addClass(TABONTOP) // change these directly to bring the tab on top.\n\t .css(\"z-index\");\n\n\t if (kendo.size(animation.effects)) {\n\t oldTab.kendoAddClass(DEFAULTSTATE, { duration: animation.duration });\n\t item.kendoAddClass(ACTIVESTATE, { duration: animation.duration });\n\t } else {\n\t oldTab.addClass(DEFAULTSTATE);\n\t item.addClass(ACTIVESTATE);\n\t }\n\n\t visibleContents.attr(\"aria-hidden\", true);\n\t visibleContents.attr(\"aria-expanded\", false);\n\n\t if (visibleContents.length) {\n\t visibleContents\n\t .kendoStop(true, true)\n\t .kendoAnimate(extend( {\n\t complete: showContent\n\t }, close ));\n\t } else {\n\t showContent();\n\t }\n\n\t return true;\n\t },\n\n\t ajaxRequest: function (element, content, complete, url) {\n\t element = this.tabGroup.find(element);\n\n\t var that = this,\n\t xhr = $.ajaxSettings.xhr,\n\t link = element.find(\".\" + LINK),\n\t data = {},\n\t halfWidth = element.width() / 2,\n\t fakeProgress = false,\n\t statusIcon = element.find(\".k-loading\").removeClass(\"k-complete\");\n\n\t if (!statusIcon[0]) {\n\t statusIcon = $(\"
\").prependTo(element);\n\t }\n\n\t var endState = halfWidth * 2 - statusIcon.width();\n\n\t var oldProgressAnimation = function() {\n\t statusIcon.animate({ marginLeft: (parseInt(statusIcon.css(\"marginLeft\"), 10) || 0) < halfWidth ? endState : 0 }, 500, oldProgressAnimation);\n\t };\n\n\t if (kendo.support.browser.msie && kendo.support.browser.version < 10) {\n\t setTimeout(oldProgressAnimation, 40);\n\t }\n\n\t url = url || link.data(CONTENTURL) || that._contentUrls[element.index()] || link.attr(HREF);\n\t that.inRequest = true;\n\n\t var ajaxOptions = {\n\t type: \"GET\",\n\t cache: false,\n\t url: url,\n\t dataType: \"html\",\n\t data: data,\n\t xhr: function() {\n\t var current = this,\n\t request = xhr(),\n\t event = current.progressUpload ? \"progressUpload\" : current.progress ? \"progress\" : false;\n\n\t if (request) {\n\t $.each([ request, request.upload ], function () {\n\t if (this.addEventListener) {\n\t this.addEventListener(\"progress\", function(evt) {\n\t if (event) {\n\t current[event](evt);\n\t }\n\t }, false);\n\t }\n\t });\n\t }\n\n\t current.noProgress = !(window.XMLHttpRequest && ('upload' in new XMLHttpRequest()));\n\t return request;\n\t },\n\n\t progress: function(evt) {\n\t if (evt.lengthComputable) {\n\t var percent = parseInt((evt.loaded / evt.total * 100), 10) + \"%\";\n\t statusIcon\n\t .stop(true)\n\t .addClass(\"k-progress\")\n\t .css({\n\t \"width\": percent,\n\t \"marginLeft\": 0\n\t });\n\t }\n\t },\n\n\t error: function (xhr, status) {\n\t if (that.trigger(\"error\", { xhr: xhr, status: status })) {\n\t this.complete();\n\t }\n\t },\n\n\t stopProgress: function () {\n\t clearInterval(fakeProgress);\n\t statusIcon\n\t .stop(true)\n\t .addClass(\"k-progress\")\n\t [0].style.cssText = \"\";\n\t },\n\n\t complete: function (xhr) {\n\t that.inRequest = false;\n\t if (this.noProgress) {\n\t setTimeout(this.stopProgress, 500);\n\t } else {\n\t this.stopProgress();\n\t }\n\n\t if (xhr.statusText == \"abort\") {\n\t statusIcon.remove();\n\t }\n\t },\n\n\t success: function (data) {\n\t statusIcon.addClass(\"k-complete\");\n\t try {\n\t var current = this,\n\t loaded = 10;\n\n\t if (current.noProgress) {\n\t statusIcon.width(loaded+\"%\");\n\t fakeProgress = setInterval(function () {\n\t current.progress({ lengthComputable: true, loaded: Math.min(loaded, 100), total: 100 });\n\t loaded += 10;\n\t }, 40);\n\t }\n\n\t that.angular(\"cleanup\", function () { return { elements: content.get() }; });\n\t kendo.destroy(content);\n\t content.html(data);\n\t } catch (e) {\n\t var console = window.console;\n\n\t if (console && console.error) {\n\t console.error(e.name + \": \" + e.message + \" in \" + url);\n\t }\n\t this.error(this.xhr, \"error\");\n\t }\n\n\t if (complete) {\n\t complete.call(that, content);\n\t }\n\n\t that.angular(\"compile\", function(){ return { elements: content.get() }; });\n\n\t that.trigger(CONTENTLOAD, { item: element[0], contentElement: content[0] });\n\t }\n\t };\n\n\t if (typeof url === \"object\") {\n\t ajaxOptions = $.extend(true, {}, ajaxOptions, url);\n\n\t if (isFunction(ajaxOptions.url)) {\n\t ajaxOptions.url = ajaxOptions.url();\n\t }\n\t }\n\n\t that.xhr = $.ajax(ajaxOptions);\n\t },\n\n\t append: function (tab) {\n\t var that = this,\n\t inserted = that._create(tab);\n\n\t each(inserted.tabs, function (idx) {\n\t var contents = inserted.contents[idx];\n\t that.tabGroup.append(this);\n\t if (that.options.tabPosition == \"bottom\") {\n\t that.tabWrapper.before(contents);\n\t } else {\n\t that.wrapper.append(contents);\n\t }\n\t that.angular(\"compile\", function(){ return { elements: [ contents ] }; });\n\t });\n\n\t updateFirstLast(that.tabGroup);\n\t that._updateContentElements();\n\t that.resize(true);\n\n\t return that;\n\t },\n\n\t contentElement: function (itemIndex) {\n\t if (isNaN(itemIndex - 0)) {\n\t return undefined;\n\t }\n\n\t var contentElements = this.contentElements && this.contentElements[0] && !kendo.kineticScrollNeeded ? this.contentElements : this.contentAnimators;\n\t var id = $(this.tabGroup.children()[itemIndex]).attr(\"aria-controls\");\n\n\t if (contentElements) {\n\t for (var i = 0, len = contentElements.length; i < len; i++) {\n\t if (contentElements.eq(i).closest(\".k-content\")[0].id == id) {\n\t return contentElements[i];\n\t }\n\t }\n\t }\n\n\t return undefined;\n\t },\n\n\t contentHolder: function (itemIndex) {\n\t var contentElement = $(this.contentElement(itemIndex)),\n\t scrollContainer = contentElement.children(\".km-scroll-container\");\n\n\t return kendo.support.touch && scrollContainer[0] ? scrollContainer : contentElement;\n\t },\n\n\t deactivateTab: function (item) {\n\t var that = this,\n\t animationSettings = that.options.animation,\n\t animation = animationSettings.open,\n\t close = extend({}, animationSettings.close),\n\t hasCloseAnimation = close && \"effects\" in close;\n\t item = that.tabGroup.find(item);\n\n\t close = extend( hasCloseAnimation ? close : extend({ reverse: true }, animation), { hide: true });\n\n\t if (kendo.size(animation.effects)) {\n\t item.kendoAddClass(DEFAULTSTATE, { duration: animation.duration });\n\t item.kendoRemoveClass(ACTIVESTATE, { duration: animation.duration });\n\t } else {\n\t item.addClass(DEFAULTSTATE);\n\t item.removeClass(ACTIVESTATE);\n\t }\n\n\t item.removeAttr(\"aria-selected\");\n\n\t that.contentAnimators\n\t .filter(\".\" + ACTIVESTATE)\n\t .kendoStop(true, true)\n\t .kendoAnimate( close )\n\t .removeClass(ACTIVESTATE)\n\t .attr(\"aria-hidden\", true);\n\t },\n\n\t destroy: function() {\n\t var that = this;\n\n\t Widget.fn.destroy.call(that);\n\n\t if (that._refreshHandler) {\n\t that.dataSource.unbind(\"change\", that._refreshHandler);\n\t }\n\n\t that.wrapper.off(NS);\n\t that.tabGroup.off(NS);\n\n\t if (that._scrollableModeActive) {\n\t that._scrollPrevButton.off().remove();\n\t that._scrollNextButton.off().remove();\n\t }\n\n\t kendo.destroy(that.wrapper);\n\t },\n\n\t disable: function (element) {\n\t this._toggleDisabled(element, false);\n\n\t return this;\n\t },\n\n\t enable: function (element, state) {\n\t this._toggleDisabled(element, state !== false);\n\n\t return this;\n\t },\n\n\t insertAfter: function (tab, referenceTab) {\n\t if ($(tab).is($(referenceTab))) {\n\t referenceTab = this.tabGroup.find(referenceTab).prev();\n\t } else {\n\t referenceTab = this.tabGroup.find(referenceTab);\n\t }\n\n\t var that = this,\n\t inserted = that._create(tab),\n\t referenceContent = that.element.find(\"[id='\" + referenceTab.attr(\"aria-controls\") + \"']\");\n\n\t each(inserted.tabs, function (idx) {\n\t var contents = inserted.contents[idx];\n\t var fromIndex = inserted.newTabsCreated ? that._contentUrls.length - (inserted.tabs.length - idx) : $(contents).index() - 1;\n\n\t referenceTab.after(this);\n\t referenceContent.after(contents);\n\n\t that._moveUrlItem(fromIndex, $(this).index());\n\t that.angular(\"compile\", function(){ return { elements: [ contents ] }; });\n\t });\n\n\t updateFirstLast(that.tabGroup);\n\t that._updateContentElements(inserted.newTabsCreated);\n\t that.resize(true);\n\n\t return that;\n\t },\n\n\t insertBefore: function (tab, referenceTab) {\n\t if ($(tab).is($(referenceTab))) {\n\t referenceTab = this.tabGroup.find(referenceTab).next();\n\t } else {\n\t referenceTab = this.tabGroup.find(referenceTab);\n\t }\n\n\t var that = this,\n\t inserted = that._create(tab),\n\t referenceContent = that.element.find(\"[id='\" + referenceTab.attr(\"aria-controls\") + \"']\");\n\n\t each(inserted.tabs, function (idx) {\n\t var contents = inserted.contents[idx];\n\t var fromIndex = inserted.newTabsCreated ? that._contentUrls.length - (inserted.tabs.length - idx) : $(contents).index() - 1;\n\n\t referenceTab.before(this);\n\t referenceContent.before(contents);\n\n\t that._moveUrlItem(fromIndex, $(this).index());\n\t that.angular(\"compile\", function(){ return { elements: [ contents ] }; });\n\t });\n\n\t updateFirstLast(that.tabGroup);\n\t that._updateContentElements(inserted.newTabsCreated);\n\t that.resize(true);\n\n\t return that;\n\t },\n\n\t items: function() {\n\t return this.tabGroup[0].children;\n\t },\n\n\t refresh: function(e) {\n\t var that = this,\n\t options = that.options,\n\t encoded = kendo.getter(options.dataEncodedField),\n\t text = kendo.getter(options.dataTextField),\n\t content = kendo.getter(options.dataContentField),\n\t contentUrl = kendo.getter(options.dataContentUrlField),\n\t image = kendo.getter(options.dataImageUrlField),\n\t url = kendo.getter(options.dataUrlField),\n\t sprite = kendo.getter(options.dataSpriteCssClass),\n\t idx,\n\t tabs = [],\n\t tab,\n\t action,\n\t view = that.dataSource.view(),\n\t length;\n\n\n\t e = e || {};\n\t action = e.action;\n\n\t if (action) {\n\t view = e.items;\n\t }\n\n\t for (idx = 0, length = view.length; idx < length; idx ++) {\n\t tab = {\n\t text: text(view[idx])\n\t };\n\n\t if (options.dataEncodedField) {\n\t tab.encoded = encoded(view[idx]);\n\t }\n\n\t if (options.dataContentField) {\n\t tab.content = content(view[idx]);\n\t }\n\n\t if (options.dataContentUrlField) {\n\t tab.contentUrl = contentUrl(view[idx]);\n\t }\n\n\t if (options.dataUrlField) {\n\t tab.url = url(view[idx]);\n\t }\n\n\t if (options.dataImageUrlField) {\n\t tab.imageUrl = image(view[idx]);\n\t }\n\n\t if (options.dataSpriteCssClass) {\n\t tab.spriteCssClass = sprite(view[idx]);\n\t }\n\n\t tabs[idx] = tab;\n\t }\n\n\t if (e.action == \"add\") {\n\t if (e.index < that.tabGroup.children().length) {\n\t that.insertBefore(tabs, that.tabGroup.children().eq(e.index));\n\t } else {\n\t that.append(tabs);\n\t }\n\t } else if (e.action == \"remove\") {\n\t for (idx = 0; idx < view.length; idx++) {\n\t that.remove(e.index);\n\t }\n\t } else if (e.action == \"itemchange\") {\n\t idx = that.dataSource.view().indexOf(view[0]);\n\t if (e.field === options.dataTextField) {\n\t that.tabGroup.children().eq(idx).find(\".k-link\").text(view[0].get(e.field));\n\t }\n\n\t if (e.field === options.dataUrlField) {\n\t that._contentUrls[idx] = view[0].get(e.field);\n\t }\n\t } else {\n\t that.trigger(\"dataBinding\");\n\t that.remove(\"li\");\n\t that._contentUrls = [];\n\t that.append(tabs);\n\t that.trigger(\"dataBound\");\n\t }\n\t },\n\n\t reload: function (element) {\n\t element = this.tabGroup.find(element);\n\t var that = this;\n\t var contentUrls = that._contentUrls;\n\n\t element.each(function () {\n\t var item = $(this),\n\t contentUrl = item.find(\".\" + LINK).data(CONTENTURL) || contentUrls[item.index()],\n\t content = that.contentHolder(item.index());\n\n\t if (contentUrl) {\n\t that.ajaxRequest(item, content, null, contentUrl);\n\t }\n\t });\n\n\t return that;\n\t },\n\n\t remove: function (elements) {\n\t var that = this;\n\t var type = typeof elements;\n\t var contents;\n\n\t if (type === \"string\") {\n\t elements = that.tabGroup.find(elements);\n\t } else if (type === \"number\") {\n\t elements = that.tabGroup.children().eq(elements);\n\t }\n\n\t contents = elements.map(function () {\n\t var idx = $(this).index();\n\t var content = that.contentElement(idx);\n\n\t kendo.destroy(content);\n\t that._removeUrlItem(idx);\n\n\t return content;\n\t });\n\n\t elements.remove();\n\t contents.empty();\n\t contents.remove();\n\n\t that._updateContentElements();\n\t that.resize(true);\n\n\t return that;\n\t },\n\n\t select: function (element) {\n\t var that = this;\n\n\t if (arguments.length === 0) {\n\t return that.tabGroup.children(\"li.\" + ACTIVESTATE);\n\t }\n\n\t if (!isNaN(element)) {\n\t element = that.tabGroup.children().get(element);\n\t }\n\n\t element = that.tabGroup.find(element);\n\t $(element).each(function (index, item) {\n\t item = $(item);\n\t if (!item.hasClass(ACTIVESTATE) && !that.trigger(SELECT, { item: item[0], contentElement: that.contentHolder(item.index())[0] })) {\n\t that.activateTab(item);\n\t }\n\t });\n\n\t return that;\n\t },\n\n\t value: function(value) {\n\t var that = this;\n\n\t if (value !== undefined) {\n\t if (value != that.value()) {\n\t that.tabGroup.children().each(function() {\n\t if (kendo.trim($(this).text()) == value) {\n\t that.select(this);\n\t }\n\t });\n\t }\n\t } else {\n\t return that.select().text();\n\t }\n\t },\n\n\t _active: function () {\n\t var item = this.tabGroup.children().filter(\".\" + ACTIVESTATE);\n\n\t item = item[0] ? item : this._endItem(\"first\");\n\t if (item[0]) {\n\t this._current(item);\n\t }\n\t },\n\n\t _animations: function(options) {\n\t if (options && (\"animation\" in options) && !options.animation) {\n\t options.animation = { open: { effects: {} }, close: { effects: {} } }; // No animation\n\t }\n\t },\n\n\t _appendUrlItem: function(url) {\n\t this._contentUrls.push(url);\n\t },\n\n\t _attachEvents: function() {\n\t var that = this,\n\t options = that.options;\n\n\t that.wrapper\n\t .on(MOUSEENTER + NS + \" \" + MOUSELEAVE + NS, HOVERABLEITEMS, that._toggleHover)\n\t .on(\"focus\" + NS, $.proxy(that._active, that))\n\t .on(\"blur\" + NS, function() { that._current(null); });\n\n\t that._keyDownProxy = $.proxy(that._keydown, that);\n\n\t if (options.navigatable) {\n\t that.wrapper.on(\"keydown\" + NS, that._keyDownProxy);\n\t }\n\n\t that.tabGroup\n\t .on(CLICK + NS, \".k-state-disabled .k-link\", false)\n\t .on(CLICK + NS, \" > \" + NAVIGATABLEITEMS, $.proxy(that._itemClick, that));\n\t },\n\n\t _click: function (item) {\n\t var that = this,\n\t link = item.find(\".\" + LINK),\n\t href = link.attr(HREF),\n\t collapse = that.options.collapsible,\n\t index = item.index(),\n\t contentHolder = that.contentHolder(index),\n\t prevent, isAnchor,\n\t neighbours = item.parent().children(),\n\t oldFocusedTab = neighbours.filter(\".\" + FOCUSEDSTATE);\n\n\t if (item.closest(\".k-widget\")[0] != that.wrapper[0]) {\n\t return;\n\t }\n\n\t if (item.is(\".\" + DISABLEDSTATE + (!collapse ? \",.\" + ACTIVESTATE : \"\"))) {\n\t oldFocusedTab.removeClass(FOCUSEDSTATE);\n\t that._focused = item;\n\n\t item.addClass(FOCUSEDSTATE);\n\t that._current(item);\n\n\t if (that._scrollableModeActive) {\n\t that._scrollTabsToItem(item);\n\t }\n\t return true;\n\t }\n\n\t isAnchor = link.data(CONTENTURL) || that._contentUrls[index] || (href && (href.charAt(href.length - 1) == \"#\" || href.indexOf(\"#\" + that.element[0].id + \"-\") != -1));\n\t prevent = !href || isAnchor;\n\n\t if (that.tabGroup.children(\"[data-animating]\").length) {\n\t return prevent;\n\t }\n\n\t if (that.trigger(SELECT, { item: item[0], contentElement: contentHolder[0] })) {\n\t return true;\n\t }\n\n\t if (prevent === false) {\n\t return;\n\t }\n\n\t if (collapse && item.is(\".\" + ACTIVESTATE)) {\n\t that.deactivateTab(item);\n\t return true;\n\t }\n\n\t if (that.activateTab(item)) {\n\t prevent = true;\n\t }\n\n\t return prevent;\n\t },\n\n\t _create: function (tab) {\n\t var that = this,\n\t tabs,\n\t contents,\n\t content,\n\t newTabsCreated = false;\n\n\t tab = tab instanceof kendo.data.ObservableArray ? tab.toJSON() : tab;\n\n\t if ($.isPlainObject(tab) || Array.isArray(tab)) {\n\t tab = Array.isArray(tab) ? tab : [tab];\n\t newTabsCreated = true;\n\n\t tabs = map(tab, function (value, idx) {\n\t that._appendUrlItem(tab[idx].contentUrl || null);\n\n\t return $(TabStrip.renderItem({\n\t group: that.tabGroup,\n\t item: extend(value, { index: idx })\n\t }));\n\t });\n\n\t contents = map( tab, function (value, idx) {\n\t if (typeof value.content == \"string\" || value.contentUrl) {\n\t return $(TabStrip.renderContent({\n\t item: extend(value, { index: idx })\n\t }));\n\t }\n\t });\n\t } else {\n\t if (typeof tab == \"string\" && tab[0] != \"<\") {\n\t tabs = that.element.find(tab);\n\t } else {\n\t tabs = $(tab);\n\t }\n\t contents = $();\n\t tabs.each(function () {\n\t if (/k-tabstrip-items/.test(this.parentNode.className)) {\n\t var element = that.element.find(\"[id='\" + this.getAttribute(\"aria-controls\") + \"']\");\n\t content = element;\n\t } else {\n\t content = $(\"
\");\n\t }\n\n\t contents = contents.add(content);\n\t });\n\n\t updateTabClasses(tabs);\n\t }\n\n\t return { tabs: tabs, contents: contents, newTabsCreated: newTabsCreated };\n\t },\n\n\t _current: function (candidate) {\n\t var that = this,\n\t focused = that._focused;\n\n\t if (candidate === undefined) {\n\t return focused;\n\t }\n\n\t if (focused) {\n\t focused.removeClass(FOCUSEDSTATE);\n\t }\n\n\t if (candidate) {\n\t if (!candidate.hasClass(ACTIVESTATE)) {\n\t candidate.addClass(FOCUSEDSTATE);\n\t }\n\n\t if (candidate[0].id) {\n\t that.element.attr(\"aria-activedescendant\", candidate[0].id);\n\t }\n\t }\n\n\t that._focused = candidate;\n\t },\n\n\t _dataSource: function() {\n\t var that = this;\n\n\t if (that.dataSource && that._refreshHandler) {\n\t that.dataSource.unbind(\"change\", that._refreshHandler);\n\t } else {\n\t that._refreshHandler = $.proxy(that.refresh, that);\n\t }\n\n\t that.dataSource = kendo.data.DataSource.create(that.options.dataSource)\n\t .bind(\"change\", that._refreshHandler);\n\t },\n\n\t _elementId: function(element, idx, tab) {\n\t var elementId = element.attr(\"id\"),\n\t wrapperId = this.element.attr(\"id\"),\n\t guid = kendo.guid();\n\n\t if (!elementId || elementId.indexOf(wrapperId + \"-\") > -1) {\n\t var tabStripID = (wrapperId || guid) + \"-\";\n\n\t if(tab) {\n\t tabStripID += \"tab-\";\n\t }\n\n\t return tabStripID + (idx + 1);\n\t }\n\n\t return elementId;\n\t },\n\n\t _endItem: function(action) {\n\t return this.tabGroup.children(NAVIGATABLEITEMS)[action]();\n\t },\n\n\t _getItem: function(action) {\n\t return this.tabGroup.children(KEYBOARDNAVIGATABLEITEMS)[action]();\n\t },\n\n\t _initialActivate: function() {\n\t var that = this,\n\t selectedItems = that.tabGroup.children(\"li.\" + ACTIVESTATE),\n\t content = that.contentHolder(selectedItems.index());\n\n\t if (selectedItems[0] && content.length > 0 && content[0].childNodes.length === 0) {\n\t that.activateTab(selectedItems.eq(0));\n\t }\n\t },\n\n\t _item: function(item, action) {\n\t var endItem;\n\t if (action === PREV) {\n\t endItem = \"last\";\n\t } else {\n\t endItem = \"first\";\n\t }\n\n\t if (!item) {\n\t return this._endItem(endItem);\n\t }\n\n\t item = item[action]();\n\n\t if (!item[0]) {\n\t item = this.tabGroup.children(KEYBOARDNAVIGATABLEITEMS)[endItem]();\n\t }\n\n\t if (item.hasClass(DISABLEDSTATE)) {\n\t item.addClass(FOCUSEDSTATE);\n\t }\n\t if (item.hasClass(DISABLEDSTATE) || item.hasClass(ACTIVESTATE)) {\n\t this._focused = item;\n\t }\n\n\t return item;\n\t },\n\n\t _itemClick: function(e) {\n\t var that = this,\n\t wr = that.wrapper[0];\n\n\t if (wr !== document.activeElement) {\n\t var msie = kendo.support.browser.msie;\n\t if (msie) {\n\t try {\n\t // does not scroll to the active element\n\t wr.setActive();\n\t } catch (j) {\n\t wr.focus();\n\t }\n\t } else {\n\t wr.focus();\n\t }\n\t }\n\n\t if (that._click($(e.currentTarget))) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _keydown: function(e) {\n\t var that = this,\n\t key = e.keyCode,\n\t current = that._current(),\n\t rtl = that._isRtl,\n\t isHorizontal = /top|bottom/.test(that.options.tabPosition),\n\t action;\n\n\t if (e.target != e.currentTarget || !current) {\n\t return;\n\t }\n\n\t if (key === keys.DOWN && !isHorizontal) {\n\t action = NEXT;\n\t } else if (key === keys.UP && !isHorizontal) {\n\t action = PREV;\n\t } else if (key === keys.RIGHT && isHorizontal) {\n\t action = rtl ? PREV : NEXT;\n\t } else if (key === keys.LEFT && isHorizontal) {\n\t action = rtl ? NEXT : PREV;\n\t } else if (key == keys.ENTER || key == keys.SPACEBAR) {\n\t that._click(current);\n\t e.preventDefault();\n\t } else if (key == keys.HOME) {\n\t that._click(that._getItem(\"first\"));\n\t e.preventDefault();\n\t return;\n\t } else if (key == keys.END) {\n\t that._click(that._getItem(\"last\"));\n\t e.preventDefault();\n\t return;\n\t }\n\n\t if (action) {\n\t that._click(that._item(current, action));\n\t e.preventDefault();\n\t }\n\t },\n\n\t _moveUrlItem: function(from, to) {\n\t this._contentUrls.splice(to, 0, this._contentUrls.splice(from, 1)[0]);\n\t },\n\n\t _processContentUrls: function() {\n\t var that = this;\n\n\t if (that._contentUrls.length) {\n\t that.tabGroup.children(\".k-item\")\n\t .each(function(index, item) {\n\t var url = that._contentUrls[index];\n\n\t if (typeof url === 'string') {\n\t $(item).find(\">.\" + LINK).data(CONTENTURL, url);\n\t }\n\t });\n\t } else {\n\t that._contentUrls.length = that.tabGroup.find(\"li.k-item\").length;\n\t }\n\t },\n\n\t _removeUrlItem: function(index) {\n\t this._contentUrls.splice(index, 1);\n\t },\n\n\t _resize: function() {\n\t this._scrollable();\n\t },\n\n\t _scrollable: function() {\n\t var that = this,\n\t options = that.options,\n\t wrapperOffsetWidth,\n\t tabGroupScrollWidth,\n\t scrollPrevButton,\n\t scrollNextButton;\n\n\t if (that._scrollableAllowed()) {\n\n\t that.wrapper.addClass(\"k-tabstrip-scrollable\");\n\n\t wrapperOffsetWidth = that.wrapper[0].offsetWidth;\n\t tabGroupScrollWidth = that.tabGroup[0].scrollWidth;\n\n\t if (tabGroupScrollWidth > wrapperOffsetWidth && !that._scrollableModeActive) {\n\t that._nowScrollingTabs = false;\n\t that._isRtl = kendo.support.isRtl(that.element);\n\t var mouseDown = kendo.support.touch ? \"touchstart\" : \"mousedown\";\n\t var mouseUp = kendo.support.touch ? \"touchend\" : \"mouseup\";\n\t var browser = kendo.support.browser;\n\t var isRtlScrollDirection = that._isRtl && !browser.msie && !browser.edge;\n\n\t that.tabWrapper.prepend(scrollButtonHtml(\"prev\", \"k-i-arrow-60-left\"));\n\t that.tabWrapper.append(scrollButtonHtml(\"next\", \"k-i-arrow-60-right\"));\n\n\t scrollPrevButton = that._scrollPrevButton = that.tabWrapper.children(\".k-tabstrip-prev\");\n\t scrollNextButton = that._scrollNextButton = that.tabWrapper.children(\".k-tabstrip-next\");\n\n\t scrollPrevButton.on(mouseDown + NS, function () {\n\t that._nowScrollingTabs = true;\n\t that._scrollTabsByDelta(options.scrollable.distance * (isRtlScrollDirection ? 1 : -1));\n\t });\n\n\t scrollNextButton.on(mouseDown + NS, function () {\n\t that._nowScrollingTabs = true;\n\t that._scrollTabsByDelta(options.scrollable.distance * (isRtlScrollDirection ? -1 : 1));\n\t });\n\n\t scrollPrevButton.add(scrollNextButton).on(mouseUp + NS, function () {\n\t that._nowScrollingTabs = false;\n\t });\n\n\t that._scrollableModeActive = true;\n\n\t that._toggleScrollButtons();\n\t } else if (that._scrollableModeActive && tabGroupScrollWidth <= wrapperOffsetWidth) {\n\t that._scrollableModeActive = false;\n\n\t that.wrapper.removeClass(\"k-tabstrip-scrollable\");\n\n\t that._scrollPrevButton.off().remove();\n\t that._scrollNextButton.off().remove();\n\t } else if (!that._scrollableModeActive) {\n\t that.wrapper.removeClass(\"k-tabstrip-scrollable\");\n\t } else {\n\t that._toggleScrollButtons();\n\t }\n\t }\n\t },\n\n\t _scrollableAllowed: function() {\n\t var options = this.options;\n\n\t if(options.scrollable && !options.scrollable.distance){\n\t options.scrollable = {distance: DEFAULTDISTANCE};\n\t }\n\n\t return options.scrollable && !isNaN(options.scrollable.distance) && (options.tabPosition == \"top\" || options.tabPosition == \"bottom\");\n\t },\n\n\t _scrollTabsToItem: function (item) {\n\t var that = this,\n\t tabGroup = that.tabGroup,\n\t currentScrollOffset = kendo.scrollLeft(tabGroup),\n\t itemWidth = outerWidth(item),\n\t itemOffset = that._isRtl ? item.position().left : item.position().left - tabGroup.children().first().position().left,\n\t tabGroupWidth = tabGroup[0].offsetWidth,\n\t browser = kendo.support.browser,\n\t itemPosition;\n\n\t if (that._isRtl && (browser.mozilla || (browser.webkit && browser.version >= 85))) {\n\t currentScrollOffset = currentScrollOffset * -1;\n\t }\n\n\t if (that._isRtl) {\n\t if (itemOffset < 0) {\n\t itemPosition = currentScrollOffset + itemOffset - (tabGroupWidth - currentScrollOffset);\n\t } else if (itemOffset + itemWidth > tabGroupWidth) {\n\t itemPosition = currentScrollOffset + itemOffset - itemWidth;\n\t }\n\t } else {\n\t if (currentScrollOffset + tabGroupWidth < itemOffset + itemWidth) {\n\t itemPosition = itemOffset + itemWidth - tabGroupWidth;\n\t } else if (currentScrollOffset > itemOffset) {\n\t itemPosition = itemOffset;\n\t }\n\t }\n\n\t tabGroup.finish().animate({ \"scrollLeft\": itemPosition }, \"fast\", \"linear\", function () {\n\t that._toggleScrollButtons();\n\t });\n\t },\n\n\t _scrollTabsByDelta: function (delta) {\n\t var that = this;\n\t var tabGroup = that.tabGroup;\n\t var scrLeft = kendo.scrollLeft(tabGroup);\n\t var browser = kendo.support.browser;\n\n\t if(that._isRtl && (browser.mozilla || (browser.webkit && browser.version >= 85))) {\n\t scrLeft = scrLeft * -1;\n\t }\n\n\t tabGroup.finish().animate({ \"scrollLeft\": scrLeft + delta }, \"fast\", \"linear\", function () {\n\t if (that._nowScrollingTabs && !jQuery.fx.off) {\n\t that._scrollTabsByDelta(delta);\n\t } else {\n\t that._toggleScrollButtons();\n\t }\n\t });\n\t },\n\n\t _tabPosition: function() {\n\t var that = this,\n\t tabPosition = that.options.tabPosition;\n\n\t that.wrapper.addClass(\"k-floatwrap k-tabstrip-\" + tabPosition);\n\n\t if (tabPosition == \"bottom\") {\n\t that.tabWrapper.appendTo(that.wrapper);\n\t }\n\n\t if (tabPosition === \"left\" || tabPosition === \"right\") {\n\t that.wrapper.attr(\"aria-orientation\", \"vertical\");\n\t }\n\n\t that.resize(true);\n\t },\n\n\t _toggleHover: function(e) {\n\t $(e.currentTarget).toggleClass(HOVERSTATE, e.type == MOUSEENTER);\n\t },\n\n\t _toggleDisabled: function(element, enable) {\n\t element = this.tabGroup.find(element);\n\t element.each(function () {\n\t $(this)\n\t .toggleClass(DEFAULTSTATE, enable)\n\t .toggleClass(DISABLEDSTATE, !enable)\n\t .attr(\"aria-disabled\", !enable);\n\t });\n\t },\n\n\t _toggleScrollButtons: function () {\n\t var that = this,\n\t ul = that.tabGroup,\n\t scrollLeft = kendo.scrollLeft(ul);\n\n\t that._scrollPrevButton.toggleClass('k-disabled', scrollLeft === 0);\n\t that._scrollNextButton.toggleClass('k-disabled', scrollLeft === ul[0].scrollWidth - ul[0].offsetWidth);\n\t },\n\n\t _updateClasses: function() {\n\t var that = this,\n\t tabs, activeItem, activeTab;\n\t var isHorizontal = /top|bottom/.test(that.options.tabPosition);\n\n\t that.wrapper.addClass(\"k-widget k-tabstrip\");\n\n\t if (!that.tabGroup) {\n\t that.tabGroup = that.wrapper.children(\"ul\");\n\t that.tabGroup.wrap('
');\n\t that.tabWrapper = that.tabGroup.parent();\n\t }\n\n\t if (!that.tabGroup[0]) {\n\t that.tabGroup = $(\"
\").prependTo(that.wrapper);\n\t that.tabGroup.wrap('
');\n\t that.tabWrapper = that.tabGroup.parent();\n\t }\n\n\t that.tabWrapper.addClass('k-tabstrip-items-wrapper');\n\t that.tabWrapper.addClass(isHorizontal ? 'k-hstack' : 'k-vstack');\n\t that.tabGroup.addClass('k-tabstrip-items k-reset');\n\n\t tabs = that.tabGroup.find(\"li\").addClass(\"k-tabstrip-item k-item\");\n\n\t if (tabs.length) {\n\t activeItem = tabs.filter(\".\" + ACTIVESTATE).index();\n\t activeTab = activeItem >= 0 ? activeItem : undefined;\n\n\t that.tabGroup // Remove empty text nodes\n\t .contents()\n\t .filter(function () { return (this.nodeType == 3 && !trim(this.nodeValue)); })\n\t .remove();\n\t }\n\n\t if (activeItem >= 0) {\n\t tabs.eq(activeItem).addClass(TABONTOP);\n\t }\n\n\t that.contentElements = that.wrapper.children(\"div:not(.k-tabstrip-items-wrapper)\");\n\n\t that.contentElements\n\t .addClass(CONTENT)\n\t .eq(activeTab)\n\t .addClass(ACTIVESTATE)\n\t .css({ display: \"block\" });\n\n\t if (tabs.length) {\n\t updateTabClasses(tabs);\n\n\t updateFirstLast(that.tabGroup);\n\t that._updateContentElements(true);\n\t }\n\t },\n\n\t _updateContentElements: function(isInitialUpdate) {\n\t var that = this,\n\t contentUrls = that._contentUrls,\n\t items = that.tabGroup.children(\".k-item\"),\n\t contentElements = that.wrapper.children(\"div:not(.k-tabstrip-items-wrapper)\"),\n\t _elementId = that._elementId.bind(that);\n\n\t if (contentElements.length && (items.length > contentElements.length)) {\n\t contentElements.each(function(idx) {\n\t // Generate an ID for each content element\n\t var contentId = _elementId($(this), idx),\n\t item = items.filter(\"[aria-controls=\" + (contentId || 0) + \"]\")[0],\n\t tabId;\n\n\t if (!item && isInitialUpdate) {\n\t // On initialization of the widget get the tab by its index\n\t item = items[idx];\n\t }\n\n\t if (item) {\n\t // set the tab aria-controls attribute to the content ID\n\t item.setAttribute(\"aria-controls\", contentId);\n\t tabId = item.id = _elementId($(item), idx, true);\n\t this.setAttribute(\"aria-labelledby\", tabId);\n\t }\n\n\t // set the get (possibly existing) ID on the content element\n\t this.setAttribute(\"id\", contentId);\n\t });\n\t } else {\n\t items.each(function(idx) {\n\t var currentContent = contentElements.eq(idx),\n\t contentId = _elementId(currentContent, idx),\n\t tabId;\n\n\t // set the tab aria-controls attribute to the content ID\n\t this.setAttribute(\"aria-controls\", contentId);\n\n\t tabId = this.id = _elementId($(this), idx, true);\n\n\t if (!currentContent.length && contentUrls[idx]) {\n\t // Append content element in case contentUrl is used\n\t $(\"
\").appendTo(that.wrapper).attr(\"id\", contentId);\n\t } else {\n\t // set the ID on the content element\n\t currentContent.attr(\"id\", contentId);\n\n\t if (!$(this).children(\".k-loading\")[0] && !contentUrls[idx]) {\n\t $(\"
\").prependTo(this);\n\t }\n\t }\n\n\t currentContent.attr(\"role\", \"tabpanel\");\n\t currentContent.attr(\"tabindex\", \"0\");\n\t currentContent.attr(\"aria-labelledby\", tabId);\n\t currentContent.filter(\":not(.\" + ACTIVESTATE + \")\").attr(\"aria-hidden\", true).attr(\"aria-expanded\", false);\n\t currentContent.filter(\".\" + ACTIVESTATE).attr(\"aria-expanded\", true);\n\t });\n\t }\n\n\t that.contentElements = that.contentAnimators = that.wrapper.children(\"div:not(.k-tabstrip-items-wrapper)\"); // refresh the contents\n\n\t that.tabsHeight = outerHeight(that.tabGroup) +\n\t parseInt(that.wrapper.css(\"border-top-width\"), 10) +\n\t parseInt(that.wrapper.css(\"border-bottom-width\"), 10);\n\n\t if (kendo.kineticScrollNeeded && kendo.mobile.ui.Scroller) {\n\t kendo.touchScroller(that.contentElements);\n\t that.contentElements = that.contentElements.children(\".km-scroll-container\");\n\t }\n\t },\n\n\t _wrapper: function() {\n\t var that = this;\n\n\t if (that.element.is(\"ul\")) {\n\t that.wrapper = that.element.wrapAll(\"
\").parent();\n\t } else {\n\t that.wrapper = that.element;\n\t }\n\t }\n\t });\n\n\t // client-side rendering\n\t extend(TabStrip, {\n\t renderItem: function (options) {\n\t options = extend({ tabStrip: {}, group: {} }, options);\n\n\t var empty = templates.empty,\n\t item = options.item;\n\n\t return templates.item(extend(options, {\n\t image: item.imageUrl ? templates.image : empty,\n\t sprite: item.spriteCssClass ? templates.sprite : empty,\n\t itemWrapper: templates.itemWrapper\n\t }, rendering));\n\t },\n\n\t renderContent: function (options) {\n\t return templates.content(extend(options, rendering));\n\t }\n\t });\n\n\t kendo.ui.plugin(TabStrip);\n\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1059)))\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\tmodule.exports = __webpack_require__(1413);\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/***/ 1059:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"jquery\");\n\n/***/ }),\n\n/***/ 1128:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.draganddrop\");\n\n/***/ }),\n\n/***/ 1413:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(jQuery) {/* jshint eqnull: true */\n\t(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1128) ], __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\tvar __meta__ = { // jshint ignore:line\n\t id: \"sortable\",\n\t name: \"Sortable\",\n\t category: \"framework\",\n\t depends: [ \"draganddrop\" ]\n\t};\n\n\t(function($, undefined) {\n\t var kendo = window.kendo,\n\t Widget = kendo.ui.Widget,\n\t outerWidth = kendo._outerWidth,\n\t outerHeight = kendo._outerHeight,\n\n\t START = \"start\",\n\t BEFORE_MOVE = \"beforeMove\",\n\t MOVE = \"move\",\n\t END = \"end\",\n\t CHANGE = \"change\",\n\t CANCEL = \"cancel\",\n\n\t ACTION_SORT = \"sort\",\n\t ACTION_REMOVE = \"remove\",\n\t ACTION_RECEIVE = \"receive\",\n\n\t DEFAULT_FILTER = \">*\",\n\t MISSING_INDEX = -1;\n\n\t function containsOrEqualTo(parent, child) {\n\t try {\n\t return $.contains(parent, child) || parent == child;\n\t } catch (e) {\n\t return false;\n\t }\n\t }\n\n\t function defaultHint(element) {\n\t return element.clone();\n\t }\n\n\t function defaultPlaceholder(element) {\n\t return element.clone().removeAttr(\"id\").css(\"visibility\", \"hidden\");\n\t }\n\n\t var Sortable = Widget.extend({\n\t init: function(element, options) {\n\t var that = this;\n\n\t Widget.fn.init.call(that, element, options);\n\n\t if(!that.options.placeholder) {\n\t that.options.placeholder = defaultPlaceholder;\n\t }\n\n\t if(!that.options.hint) {\n\t that.options.hint = defaultHint;\n\t }\n\n\t that.draggable = that._createDraggable();\n\t },\n\n\t events: [\n\t START,\n\t BEFORE_MOVE,\n\t MOVE,\n\t END,\n\t CHANGE,\n\t CANCEL\n\t ],\n\n\t options: {\n\t name: \"Sortable\",\n\t hint: null,\n\t placeholder: null,\n\t filter: DEFAULT_FILTER,\n\t holdToDrag: false,\n\t disabled: null,\n\t container: null,\n\t connectWith: null,\n\t handler: null,\n\t cursorOffset: null,\n\t axis: null,\n\t ignore: null,\n\t autoScroll: false,\n\t cursor: \"auto\",\n\t moveOnDragEnter: false\n\t },\n\n\t destroy: function() {\n\t this.draggable.destroy();\n\t Widget.fn.destroy.call(this);\n\t },\n\n\t _createDraggable: function() {\n\t var that = this,\n\t element = that.element,\n\t options = that.options;\n\n\t return new kendo.ui.Draggable(element, {\n\t filter: options.filter,\n\t hint: kendo.isFunction(options.hint) ? options.hint : $(options.hint),\n\t holdToDrag: options.holdToDrag,\n\t container: options.container ? $(options.container) : null,\n\t cursorOffset: options.cursorOffset,\n\t axis: options.axis,\n\t ignore: options.ignore,\n\t autoScroll: options.autoScroll,\n\t dragstart: $.proxy(that._dragstart, that),\n\t dragcancel: $.proxy(that._dragcancel, that),\n\t drag: $.proxy(that._drag, that),\n\t dragend: $.proxy(that._dragend, that)\n\t });\n\t },\n\n\t _dragstart: function(e) {\n\t var draggedElement = this.draggedElement = e.currentTarget,\n\t disabled = this.options.disabled,\n\t handler = this.options.handler,\n\t _placeholder = this.options.placeholder,\n\t placeholder = this.placeholder = kendo.isFunction(_placeholder) ? $(_placeholder.call(this, draggedElement)) : $(_placeholder);\n\n\t if(disabled && draggedElement.is(disabled)) {\n\t e.preventDefault();\n\t } else if(handler && !$(e.initialTarget).is(handler)) {\n\t e.preventDefault();\n\t } else {\n\n\t if(this.trigger(START, { item: draggedElement, draggableEvent: e })) {\n\t e.preventDefault();\n\t } else {\n\t draggedElement.css(\"display\", \"none\");\n\t draggedElement.before(placeholder);\n\n\t this._setCursor();\n\t }\n\n\t }\n\t },\n\n\t _dragcancel: function() {\n\t this._cancel();\n\t this.trigger(CANCEL, { item: this.draggedElement });\n\n\t this._resetCursor();\n\t },\n\n\t _drag: function(e) {\n\t var draggedElement = this.draggedElement,\n\t target = this._findTarget(e),\n\t targetCenter,\n\t cursorOffset = { left: e.x.location, top: e.y.location },\n\t offsetDelta,\n\t axisDelta = { x: e.x.delta, y: e.y.delta },\n\t direction,\n\t sibling,\n\t getSibling,\n\t axis = this.options.axis,\n\t moveOnDragEnter= this.options.moveOnDragEnter,\n\t eventData = { item: draggedElement, list: this, draggableEvent: e };\n\n\t if(axis === \"x\" || axis === \"y\") {\n\t this._movementByAxis(axis, cursorOffset, axisDelta[axis], eventData);\n\t return;\n\t }\n\n\t if(target) {\n\t targetCenter = this._getElementCenter(target.element);\n\n\t offsetDelta = {\n\t left: Math.round(cursorOffset.left - targetCenter.left),\n\t top: Math.round(cursorOffset.top - targetCenter.top)\n\t };\n\n\t $.extend(eventData, { target: target.element });\n\n\t if(target.appendToBottom) {\n\t this._movePlaceholder(target, null, eventData);\n\t return;\n\t }\n\n\t if(target.appendAfterHidden) {\n\t this._movePlaceholder(target, \"next\", eventData);\n\t }\n\n\t if(this._isFloating(target.element)) { //horizontal\n\t if((axisDelta.x < 0 && moveOnDragEnter) || (!moveOnDragEnter && offsetDelta.left < 0)) {\n\t direction = \"prev\";\n\t } else if((axisDelta.x > 0 && moveOnDragEnter) || (!moveOnDragEnter && offsetDelta.left > 0)) {\n\t direction = \"next\";\n\t }\n\t } else { //vertical\n\t if((axisDelta.y < 0 && moveOnDragEnter) || (!moveOnDragEnter && offsetDelta.top < 0)) {\n\t direction = \"prev\";\n\t } else if((axisDelta.y > 0 && moveOnDragEnter) || (!moveOnDragEnter && offsetDelta.top > 0)) {\n\t direction = \"next\";\n\t }\n\t }\n\n\t if(direction) {\n\t getSibling = (direction === \"prev\") ? jQuery.fn.prev : jQuery.fn.next;\n\n\t sibling = getSibling.call(target.element);\n\n\t //find the prev/next visible sibling\n\t while(sibling.length && !sibling.is(\":visible\")) {\n\t sibling = getSibling.call(sibling);\n\t }\n\n\t if(sibling[0] != this.placeholder[0]) {\n\t this._movePlaceholder(target, direction, eventData);\n\t }\n\t }\n\t }\n\t },\n\n\t _dragend: function(e) {\n\t var placeholder = this.placeholder,\n\t draggedElement = this.draggedElement,\n\t draggedIndex = this.indexOf(draggedElement),\n\t placeholderIndex = this.indexOf(placeholder),\n\t connectWith = this.options.connectWith,\n\t connectedList,\n\t isDefaultPrevented,\n\t eventData,\n\t connectedListEventData;\n\n\t this._resetCursor();\n\n\t eventData = {\n\t action: ACTION_SORT,\n\t item: draggedElement,\n\t oldIndex: draggedIndex,\n\t newIndex: placeholderIndex,\n\t draggableEvent: e\n\t };\n\n\t if(placeholderIndex >= 0) {\n\t isDefaultPrevented = this.trigger(END, eventData);\n\t } else {\n\t connectedList = placeholder.parents(connectWith).getKendoSortable();\n\n\t eventData.action = ACTION_REMOVE;\n\t connectedListEventData = $.extend({}, eventData, {\n\t action: ACTION_RECEIVE,\n\t oldIndex: MISSING_INDEX,\n\t newIndex: connectedList.indexOf(placeholder)\n\t });\n\n\t isDefaultPrevented = !(!this.trigger(END, eventData) && !connectedList.trigger(END, connectedListEventData));\n\t }\n\n\t if(isDefaultPrevented || placeholderIndex === draggedIndex) {\n\t this._cancel();\n\t return;\n\t }\n\n\t placeholder.replaceWith(draggedElement);\n\n\t draggedElement.show();\n\t this.draggable.dropped = true;\n\n\t eventData = {\n\t action: this.indexOf(draggedElement) != MISSING_INDEX ? ACTION_SORT : ACTION_REMOVE,\n\t item: draggedElement,\n\t oldIndex: draggedIndex,\n\t newIndex: this.indexOf(draggedElement),\n\t draggableEvent: e\n\t };\n\n\t this.trigger(CHANGE, eventData);\n\n\t if(connectedList) {\n\t connectedListEventData = $.extend({}, eventData, {\n\t action: ACTION_RECEIVE,\n\t oldIndex: MISSING_INDEX,\n\t newIndex: connectedList.indexOf(draggedElement)\n\t });\n\n\t connectedList.trigger(CHANGE, connectedListEventData);\n\t }\n\n\t },\n\n\t _findTarget: function(e) {\n\t var element = this._findElementUnderCursor(e),\n\t items,\n\t connectWith = this.options.connectWith,\n\t node;\n\n\t if($.contains(this.element[0], element)) { //the element is part of the sortable container\n\t items = this.items();\n\t node = items.filter(element)[0] || items.has(element)[0];\n\n\t return node ? { element: $(node), sortable: this } : null;\n\t } else if (this.element[0] == element && this._isEmpty()) {\n\t return { element: this.element, sortable: this, appendToBottom: true };\n\t } else if (this.element[0] == element && this._isLastHidden()) {\n\t node = this.items().eq(0);\n\t return { element: node , sortable: this, appendAfterHidden: true };\n\t } else if (connectWith) { //connected lists are present\n\t return this._searchConnectedTargets(element, e);\n\t }\n\t },\n\n\t _findElementUnderCursor: function(e) {\n\t var elementUnderCursor = kendo.elementUnderCursor(e),\n\t draggable = e.sender;\n\n\t if(containsOrEqualTo(draggable.hint[0], elementUnderCursor)) {\n\t draggable.hint.hide();\n\t elementUnderCursor = kendo.elementUnderCursor(e);\n\t // IE8 does not return the element in iframe from first attempt\n\t if (!elementUnderCursor) {\n\t elementUnderCursor = kendo.elementUnderCursor(e);\n\t }\n\t draggable.hint.show();\n\t }\n\n\t return elementUnderCursor;\n\t },\n\n\t _searchConnectedTargets: function(element, e) {\n\t var connected = $(this.options.connectWith),\n\t sortableInstance,\n\t items,\n\t node;\n\n\t for (var i = 0; i < connected.length; i++) {\n\t sortableInstance = connected.eq(i).getKendoSortable();\n\n\t if($.contains(connected[i], element)) {\n\t if(sortableInstance) {\n\t items = sortableInstance.items();\n\t node = items.filter(element)[0] || items.has(element)[0];\n\n\t if(node) {\n\t sortableInstance.placeholder = this.placeholder;\n\t return { element: $(node), sortable: sortableInstance };\n\t } else {\n\t return null;\n\t }\n\t }\n\t } else if(connected[i] == element) {\n\t if(sortableInstance && sortableInstance._isEmpty()) {\n\t return { element: connected.eq(i), sortable: sortableInstance, appendToBottom: true };\n\t } else if (this._isCursorAfterLast(sortableInstance, e)) {\n\t node = sortableInstance.items().last();\n\t return { element: node, sortable: sortableInstance };\n\t }\n\t }\n\t }\n\n\t },\n\n\t _isCursorAfterLast: function(sortable, e) {\n\t var lastItem = sortable.items().last(),\n\t cursorOffset = { left: e.x.location, top: e.y.location },\n\t lastItemOffset,\n\t delta;\n\n\t lastItemOffset = kendo.getOffset(lastItem);\n\t lastItemOffset.top += outerHeight(lastItem);\n\t lastItemOffset.left += outerWidth(lastItem);\n\n\t if(this._isFloating(lastItem)) { //horizontal\n\t delta = lastItemOffset.left - cursorOffset.left;\n\t } else { //vertical\n\t delta = lastItemOffset.top - cursorOffset.top;\n\t }\n\n\t return delta < 0 ? true : false;\n\t },\n\n\t _movementByAxis: function(axis, cursorOffset, delta, eventData) {\n\t var cursorPosition = (axis === \"x\") ? cursorOffset.left : cursorOffset.top,\n\t target = (delta < 0) ? this.placeholder.prev() : this.placeholder.next(),\n\t items = this.items(),\n\t targetCenter;\n\n\t if (target.length && !target.is(\":visible\")) {\n\t target = (delta <0) ? target.prev() : target.next();\n\t }\n\n\t if (!items.filter(target).length) {\n\t return;\n\t }\n\n\t $.extend(eventData, { target: target });\n\t targetCenter = this._getElementCenter(target);\n\n\t if (targetCenter) {\n\t targetCenter = (axis === \"x\") ? targetCenter.left : targetCenter.top;\n\t }\n\n\t if (target.length && delta < 0 && cursorPosition - targetCenter < 0) { //prev\n\t this._movePlaceholder({ element: target, sortable: this }, \"prev\", eventData);\n\t } else if (target.length && delta > 0 && cursorPosition - targetCenter > 0) { //next\n\t this._movePlaceholder({ element: target, sortable: this }, \"next\", eventData);\n\t }\n\t },\n\n\t _movePlaceholder: function(target, direction, eventData) {\n\t var placeholder = this.placeholder;\n\n\t if (!target.sortable.trigger(BEFORE_MOVE, eventData)) {\n\n\t if (!direction) {\n\t target.element.append(placeholder);\n\t } else if (direction === \"prev\") {\n\t target.element.before(placeholder);\n\t } else if (direction === \"next\") {\n\t target.element.after(placeholder);\n\t }\n\n\t target.sortable.trigger(MOVE, eventData);\n\t }\n\t },\n\n\t _setCursor: function() {\n\t var cursor = this.options.cursor,\n\t body;\n\n\t if(cursor && cursor !== \"auto\") {\n\t body = $(document.body);\n\n\t this._originalCursorType = body.css(\"cursor\");\n\t body.css({ \"cursor\": cursor });\n\n\t if(!this._cursorStylesheet) {\n\t this._cursorStylesheet = $(\"\");\n\t }\n\n\t this._cursorStylesheet.appendTo(body);\n\t }\n\t },\n\n\t _resetCursor: function() {\n\t if(this._originalCursorType) {\n\t $(document.body).css(\"cursor\", this._originalCursorType);\n\t this._originalCursorType = null;\n\n\t this._cursorStylesheet.remove();\n\t }\n\t },\n\n\t _getElementCenter: function(element) {\n\t var center = element.length ? kendo.getOffset(element) : null;\n\t if(center) {\n\t center.top += outerHeight(element) / 2;\n\t center.left += outerWidth(element) / 2;\n\t }\n\n\t return center;\n\t },\n\n\t _isFloating: function (item) {\n\t var isFloating = /left|right/.test(item.css('float'));\n\t var isTable = /inline|table-cell/.test(item.css('display'));\n\t var isHorizontalFlex = /flex/.test(item.parent().css('display')) && (/row|row-reverse/.test(item.parent().css('flex-direction')) || !item.parent().css('flex-direction'));\n\t return isFloating || isTable || isHorizontalFlex;\n\t },\n\n\t _cancel: function() {\n\t this.draggedElement.show();\n\t this.placeholder.remove();\n\t this.draggable.dropped = true;\n\t },\n\n\t _items: function() {\n\t var filter = this.options.filter,\n\t items;\n\n\t if(filter) {\n\t items = this.element.find(filter);\n\t } else {\n\t items = this.element.children();\n\t }\n\n\t return items;\n\t },\n\n\t indexOf: function(element) {\n\t var items = this._items(),\n\t placeholder = this.placeholder,\n\t draggedElement = this.draggedElement;\n\n\t if(placeholder && element[0] == placeholder[0]) {\n\t return items.not(draggedElement).index(element);\n\t } else {\n\t return items.not(placeholder).index(element);\n\t }\n\t },\n\n\t items: function() {\n\t var placeholder = this.placeholder,\n\t items = this._items();\n\n\t if(placeholder) {\n\t items = items.not(placeholder);\n\t }\n\n\t return items;\n\t },\n\n\t _isEmpty: function() {\n\t return !this.items().length;\n\t },\n\n\t _isLastHidden: function() {\n\t return this.items().length === 1 && this.items().is(\":hidden\");\n\t }\n\n\t });\n\n\t kendo.ui.plugin(Sortable);\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1059)))\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\tmodule.exports = __webpack_require__(1455);\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/***/ 1050:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.core\");\n\n/***/ }),\n\n/***/ 1455:\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__(1050) ], __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\tvar __meta__ = { // jshint ignore:line\n\t id: \"switch\",\n\t name: \"Switch\",\n\t category: \"web\",\n\t description: \"The Switch widget is used to display two exclusive choices.\",\n\t depends: [ \"core\" ]\n\t};\n\n\t(function($, undefined) {\n\t var kendo = window.kendo,\n\t ui = kendo.ui,\n\t NS = \".kendoSwitch\",\n\t Widget = ui.Widget,\n\t support = kendo.support,\n\t CHANGE = \"change\",\n\t switchStyles = {\n\t widget: \"k-switch k-widget\",\n\t container: \"k-switch-container\",\n\t handle: \"k-switch-handle\",\n\t checked: \"k-switch-on\",\n\t checkedLabel: \"k-switch-label-on\",\n\t unchecked: \"k-switch-off\",\n\t uncheckedLabel: \"k-switch-label-off\",\n\t disabled: \"k-state-disabled\",\n\t readonly: \"k-state-readonly\",\n\t active: \"k-state-active\"\n\t },\n\t DISABLED = \"disabled\",\n\t ARIA_DISABLED = \"aria-disabled\",\n\t READONLY = \"readonly\",\n\t ARIA_READONLY = \"aria-readonly\",\n\t ARIA_CHECKED = \"aria-checked\",\n\t CHECKED = \"checked\",\n\t CLICK = support.click + NS,\n\t TOUCHEND = support.pointers ? \"pointerup\" : \"touchend\",\n\t KEYDOWN = \"keydown\" + NS,\n\t LABELIDPART = \"_label\",\n\t proxy = $.proxy;\n\n\t var SWITCH_TEMPLATE = kendo.template('
');\n\n\t var SWITCH_CONTAINER_TEMPLATE = kendo.template(\"
\" +\n\t \"#=checked#\" +\n\t \"#=unchecked#\" +\n\t \"\" +\n\t \"\");\n\n\t var Switch = Widget.extend({\n\t init: function(element, options) {\n\t var that = this;\n\n\t Widget.fn.init.call(that, element, options);\n\n\t that._wrapper();\n\n\t that._initSettings();\n\n\t that._aria();\n\n\t that._attachEvents();\n\n\t kendo.notify(that, kendo.ui);\n\t },\n\n\t _wrapper: function() {\n\t var that = this,\n\t options = that.options,\n\t element = that.element[0],\n\t wrapper = $(SWITCH_TEMPLATE({\n\t styles: switchStyles\n\t }));\n\n\t element.type = \"checkbox\";\n\n\t that.wrapper = that.element.wrap(wrapper).parent();\n\n\t that.wrapper[0].style.cssText = that.element[0].style.cssText;\n\n\t that.wrapper\n\t .append($(SWITCH_CONTAINER_TEMPLATE({\n\t styles: switchStyles,\n\t checked: options.messages.checked,\n\t unchecked: options.messages.unchecked\n\t })))\n\t .addClass(element.className)\n\t .removeClass('input-validation-error');\n\t },\n\n\t _attachEvents: function() {\n\t var that = this;\n\n\t that.wrapper\n\t .on(CLICK, proxy(that._click, that))\n\t .on(TOUCHEND, proxy(that._touchEnd, that))\n\t .on(KEYDOWN, proxy(that._keydown, that));\n\t },\n\n\t setOptions: function (options) {\n\t var that = this,\n\t messages = options.messages,\n\t checkedLabel,\n\t uncheckedLabel;\n\n\t that.options = $.extend(that.options, options);\n\n\t if (messages && messages.checked !== undefined) {\n\t checkedLabel = that.wrapper.find(\".\" + switchStyles.checkedLabel);\n\t checkedLabel.text(messages.checked);\n\t }\n\n\t if (messages && messages.unchecked !== undefined) {\n\t uncheckedLabel = that.wrapper.find(\".\" + switchStyles.uncheckedLabel);\n\t uncheckedLabel.text(messages.unchecked);\n\t }\n\n\t if (options.width) {\n\t that.wrapper.css({\n\t width: options.width\n\t });\n\t }\n\n\t if (options.enabled !== undefined) {\n\t that.enable(options.enabled);\n\t }\n\n\t if (options.readonly !== undefined) {\n\t that.readonly(options.readonly);\n\t }\n\n\t that.check(options.checked);\n\t },\n\n\t _initSettings: function () {\n\t var that = this,\n\t element = that.element[0],\n\t options = that.options;\n\n\t if (options.enabled) {\n\t that._tabindex();\n\t }\n\n\t if (options.width) {\n\t that.wrapper.css({\n\t width: options.width\n\t });\n\t }\n\n\t if (options.checked === null) {\n\t options.checked = element.checked;\n\t }\n\n\t that.check(options.checked);\n\n\t options.enabled = options.enabled && !that.element.attr(DISABLED);\n\t that.enable(options.enabled);\n\n\t options.readonly = options.readonly || !!that.element.attr(READONLY);\n\t that.readonly(options.readonly);\n\t },\n\n\t _aria: function () {\n\t var that = this,\n\t element = that.element,\n\t wrapper = that.wrapper,\n\t id = element.attr(\"id\"),\n\t labelFor = $(\"label[for=\\\"\" + id + \"\\\"]\"),\n\t ariaLabel = element.attr(\"aria-label\"),\n\t ariaLabelledBy = element.attr(\"aria-labelledby\");\n\n\t if (ariaLabel) {\n\t wrapper.attr(\"aria-label\", ariaLabel);\n\t } else if (ariaLabelledBy){\n\t wrapper.attr(\"aria-labelledby\", ariaLabelledBy);\n\t } else if (labelFor.length){\n\t var labelId = labelFor.attr(\"id\");\n\n\t if (!labelId) {\n\t labelId = (id || kendo.guid()) + LABELIDPART;\n\t labelFor.attr(\"id\", labelId);\n\t }\n\n\t wrapper.attr(\"aria-labelledby\", labelId);\n\t }\n\t },\n\n\t events: [\n\t CHANGE\n\t ],\n\n\t options: {\n\t name: \"Switch\",\n\t messages: {\n\t checked: \"On\",\n\t unchecked: \"Off\"\n\t },\n\t width: null,\n\t checked: null,\n\t enabled: true,\n\t readonly: false\n\t },\n\n\t check: function(checked) {\n\t var that = this,\n\t element = that.element[0];\n\n\t if (checked === undefined) {\n\t return element.checked;\n\t }\n\n\t if (element.checked !== checked) {\n\t that.options.checked = element.checked = checked;\n\t }\n\n\t that.wrapper\n\t .attr(ARIA_CHECKED, checked)\n\t .toggleClass(switchStyles.checked, checked)\n\t .toggleClass(switchStyles.unchecked, !checked);\n\n\t if (checked) {\n\t that.element\n\t .attr(CHECKED, CHECKED);\n\t } else {\n\t that.element\n\t .prop(CHECKED, false);\n\t }\n\t },\n\n\t // alias for check, NG support\n\t value: function(value) {\n\t if (typeof value === \"string\") {\n\t value = (value === \"true\");\n\t }\n\t return this.check.apply(this, [value]);\n\t },\n\n\t destroy: function() {\n\t Widget.fn.destroy.call(this);\n\t this.wrapper.off(NS);\n\t },\n\n\t toggle: function() {\n\t var that = this;\n\n\t that.check(!that.element[0].checked);\n\t },\n\n\t enable: function(enable) {\n\t var element = this.element,\n\t wrapper = this.wrapper;\n\n\t if(typeof enable == \"undefined\") {\n\t enable = true;\n\t }\n\n\t this.options.enabled = enable;\n\n\t if(enable) {\n\t element.prop(DISABLED, false);\n\t wrapper.removeAttr(ARIA_DISABLED);\n\t } else {\n\t element.attr(DISABLED, DISABLED);\n\t wrapper.attr(ARIA_DISABLED, true);\n\t }\n\n\t wrapper.toggleClass(switchStyles.disabled, !enable);\n\t },\n\n\t readonly: function(readonly) {\n\t var that = this,\n\t element = that.element,\n\t wrapper = that.wrapper;\n\n\t if(typeof readonly == \"undefined\") {\n\t readonly = true;\n\t }\n\n\t that.options.readonly = readonly;\n\n\t if(readonly) {\n\t element.attr(READONLY, true);\n\t wrapper.attr(ARIA_READONLY, true);\n\t } else {\n\t element.prop(READONLY, false);\n\t wrapper.removeAttr(ARIA_READONLY);\n\t }\n\n\t wrapper.toggleClass(switchStyles.readonly, readonly);\n\t },\n\n\t _check: function () {\n\t var that = this,\n\t checked = that.element[0].checked = !that.element[0].checked;\n\n\t that.wrapper.trigger(\"focus\");\n\n\t if (!that.options.enabled || that.options.readonly ||\n\t that.trigger(CHANGE, { checked: checked })) {\n\t that.element[0].checked = !checked;\n\t return;\n\t }\n\n\t that.check(checked);\n\t },\n\n\t _keydown: function (e) {\n\t if (e.keyCode === kendo.keys.SPACEBAR) {\n\t this._check();\n\t e.preventDefault();\n\t }\n\t },\n\n\t _isTouch: function(event) {\n\t return /touch/.test(event.type) || (event.originalEvent && /touch/.test(event.originalEvent.pointerType));\n\t },\n\n\t _click: function (e) {\n\t if (!this._isTouch(e) && e.which === 1) {\n\t this._check();\n\t }\n\t },\n\n\t _touchEnd: function (e) {\n\t if (this._isTouch(e)) {\n\t this._check();\n\t e.preventDefault();\n\t }\n\t }\n\n\t });\n\n\t ui.plugin(Switch);\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\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\tmodule.exports = __webpack_require__(1414);\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/***/ 1059:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"jquery\");\n\n/***/ }),\n\n/***/ 1208:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.resizable\");\n\n/***/ }),\n\n/***/ 1414:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(jQuery) {(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1208) ], __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\tvar __meta__ = { // jshint ignore:line\n\t id: \"splitter\",\n\t name: \"Splitter\",\n\t category: \"web\",\n\t description: \"The Splitter widget provides an easy way to create a dynamic layout of resizable and collapsible panes.\",\n\t depends: [ \"resizable\" ]\n\t};\n\n\t(function ($, undefined) {\n\t var kendo = window.kendo,\n\t ui = kendo.ui,\n\t keys = kendo.keys,\n\t extend = $.extend,\n\t proxy = $.proxy,\n\t Widget = ui.Widget,\n\t pxUnitsRegex = /^\\d+(\\.\\d+)?px$/i,\n\t percentageUnitsRegex = /^\\d+(\\.\\d+)?%$/i,\n\t NS = \".kendoSplitter\",\n\t EXPAND = \"expand\",\n\t COLLAPSE = \"collapse\",\n\t CONTENTLOAD = \"contentLoad\",\n\t ERROR = \"error\",\n\t RESIZE = \"resize\",\n\t LAYOUTCHANGE = \"layoutChange\",\n\t HORIZONTAL = \"horizontal\",\n\t VERTICAL = \"vertical\",\n\t MOUSEENTER = \"mouseenter\",\n\t CLICK = \"click\",\n\t PANE = \"pane\",\n\t MOUSELEAVE = \"mouseleave\",\n\t FOCUSED = \"k-state-focused\",\n\t KPANE = \"k-\" + PANE,\n\t PANECLASS = \".\" + KPANE,\n\t TABINDEX = \"tabindex\",\n\t ARIA_VALUEMIN = \"aria-valuemin\",\n\t ARIA_VALUEMAX = \"aria-valuemax\",\n\t ARIA_VALUENOW = \"aria-valuenow\",\n\t ARIA_CONTROLS = \"aria-controls\",\n\t ARIA_LABEL = \"aria-label\",\n\t ARIA_LABELLEDBY = \"aria-labelledby\",\n\t ARIA_ORIENTATION = \"aria-orientation\";\n\n\t function isPercentageSize(size) {\n\t return percentageUnitsRegex.test(size);\n\t }\n\n\t function isPixelSize(size) {\n\t return pxUnitsRegex.test(size) || /^\\d+$/.test(size);\n\t }\n\n\t function isFluid(size) {\n\t return !isPercentageSize(size) && !isPixelSize(size);\n\t }\n\n\t function calculateSize(size, total) {\n\t var output = parseInt(size, 10);\n\n\t if (isPercentageSize(size)) {\n\t output = Math.floor(output * total / 100);\n\t }\n\n\t return output;\n\t }\n\n\t function panePropertyAccessor(propertyName, triggersResize) {\n\t return function(pane, value) {\n\t var paneConfig = this.element.find(pane).data(PANE);\n\n\t if (arguments.length == 1) {\n\t return paneConfig[propertyName];\n\t }\n\n\t paneConfig[propertyName] = value;\n\n\t if (triggersResize) {\n\t var splitter = this.element.data(\"kendo\" + this.options.name);\n\t splitter.resize(true);\n\t }\n\t };\n\t }\n\n\t var Splitter = Widget.extend({\n\t init: function(element, options) {\n\t var that = this,\n\t isHorizontal;\n\n\t Widget.fn.init.call(that, element, options);\n\n\t that.wrapper = that.element;\n\n\t if(that.options.orientation){\n\t isHorizontal = that.options.orientation.toLowerCase() != VERTICAL;\n\t }\n\n\t that.orientation = isHorizontal ? HORIZONTAL : VERTICAL;\n\t that._dimension = isHorizontal ? \"width\" : \"height\";\n\t that._keys = {\n\t decrease: isHorizontal ? keys.LEFT : keys.UP,\n\t increase: isHorizontal ? keys.RIGHT : keys.DOWN\n\t };\n\n\t that._resizeStep = 10;\n\n\t that._marker = kendo.guid().substring(0, 8);\n\n\t that._initPanes();\n\n\t that.resizing = new PaneResizing(that);\n\n\t that.element.triggerHandler(\"init\" + NS);\n\t },\n\t events: [\n\t EXPAND,\n\t COLLAPSE,\n\t CONTENTLOAD,\n\t ERROR,\n\t RESIZE,\n\t LAYOUTCHANGE\n\t ],\n\n\t _addOverlays: function() {\n\t this._panes().append(\"
\");\n\t },\n\n\t _removeOverlays: function() {\n\t this._panes().children(\".k-splitter-overlay\").remove();\n\t },\n\n\t _attachEvents: function() {\n\t var that = this,\n\t orientation = that.options.orientation;\n\n\t // do not use delegated events to increase performance of nested elements\n\t that.element\n\t .children(\".k-splitbar-draggable-\" + orientation)\n\t .on(\"keydown\" + NS, proxy(that._keydown, that))\n\t .on(\"mousedown\" + NS, function(e) { e.currentTarget.focus(); })\n\t .on(\"focus\" + NS, function(e) { $(e.currentTarget).addClass(FOCUSED); })\n\t .on(\"blur\" + NS, function(e) { $(e.currentTarget).removeClass(FOCUSED);\n\t if (that.resizing) {\n\t that.resizing.end();\n\t }\n\t })\n\t .on(MOUSEENTER + NS, function() { $(this).addClass(\"k-splitbar-\" + that.orientation + \"-hover\"); })\n\t .on(MOUSELEAVE + NS, function() { $(this).removeClass(\"k-splitbar-\" + that.orientation + \"-hover\"); })\n\t .on(\"mousedown\" + NS, proxy(that._addOverlays, that))\n\t .end()\n\t .children(\".k-splitbar\")\n\t .on(\"dblclick\" + NS, proxy(that._togglePane, that))\n\t .children(\".k-collapse-next, .k-collapse-prev\").on(CLICK + NS, that._arrowClick(COLLAPSE)).end()\n\t .children(\".k-expand-next, .k-expand-prev\").on(CLICK + NS, that._arrowClick(EXPAND)).end()\n\t .end();\n\n\t $(window).on(\"resize\" + NS + that._marker, proxy(that.resize, that, false));\n\t $(document).on(\"mouseup\" + NS + that._marker, proxy(that._removeOverlays, that));\n\t },\n\n\t _detachEvents: function() {\n\t var that = this;\n\n\t that.element\n\t .children(\".k-splitbar-draggable-\" + that.orientation).off(NS).end()\n\t .children(\".k-splitbar\").off(\"dblclick\" + NS)\n\t .children(\".k-collapse-next, .k-collapse-prev, .k-expand-next, .k-expand-prev\").off(NS);\n\n\t $(window).off(NS + that._marker);\n\t $(document).off(NS + that._marker);\n\t },\n\n\t options: {\n\t name: \"Splitter\",\n\t orientation: HORIZONTAL,\n\t panes: []\n\t },\n\n\t destroy: function() {\n\t Widget.fn.destroy.call(this);\n\n\t this._detachEvents();\n\n\t if (this.resizing) {\n\t this.resizing.destroy();\n\t }\n\n\t kendo.destroy(this.element);\n\n\t this.wrapper = this.element = null;\n\t },\n\n\t _keydown: function(e) {\n\t var that = this,\n\t key = e.keyCode,\n\t resizing = that.resizing,\n\t target = $(e.currentTarget),\n\t navigationKeys = that._keys,\n\t increase = key === navigationKeys.increase,\n\t decrease = key === navigationKeys.decrease,\n\t pane;\n\n\t if (increase || decrease) {\n\t if (e.ctrlKey) {\n\t pane = target[decrease ? \"next\" : \"prev\"]();\n\n\t if (resizing && resizing.isResizing()) {\n\t resizing.end();\n\t }\n\n\t if (!pane[that._dimension]()) {\n\t that._triggerAction(EXPAND, pane);\n\t } else {\n\t that._triggerAction(COLLAPSE, target[decrease ? \"prev\" : \"next\"]());\n\t }\n\t } else if (resizing) {\n\t resizing.move((decrease ? -1 : 1) * that._resizeStep, target);\n\t }\n\t e.preventDefault();\n\t } else if (key === keys.HOME) {\n\t pane = target.prev();\n\t that.collapse(pane);\n\t e.preventDefault();\n\t } else if (key === keys.END) {\n\t pane = target.prev();\n\t that.expand(pane);\n\t e.preventDefault();\n\t } else if (key === keys.ENTER && resizing) {\n\t resizing.end();\n\t e.preventDefault();\n\t }\n\t },\n\n\t _initPanes: function() {\n\t var panesConfig = this.options.panes || [];\n\t var that = this;\n\n\t this.element\n\t .addClass(\"k-widget\").addClass(\"k-splitter\")\n\t .children()\n\t .each(function(i, pane) {\n\t if (pane.nodeName.toLowerCase() != \"script\") {\n\t that._initPane(pane, panesConfig[i]);\n\t }\n\t });\n\n\t this.resize();\n\t },\n\n\t _initPane: function(pane, config) {\n\t pane = $(pane)\n\t .attr(\"role\", \"group\")\n\t .addClass(KPANE);\n\n\t pane.data(PANE, config ? config : {})\n\t .toggleClass(\"k-scrollable\", config ? config.scrollable !== false : true);\n\n\t this.ajaxRequest(pane);\n\t },\n\n\t ajaxRequest: function(pane, url, data) {\n\t var that = this,\n\t paneConfig;\n\n\t pane = that.element.find(pane);\n\t paneConfig = pane.data(PANE);\n\n\t url = url || paneConfig.contentUrl;\n\n\t if (url) {\n\t pane.append(\"
\");\n\n\t if (kendo.isLocalUrl(url)) {\n\t jQuery.ajax({\n\t url: url,\n\t data: data || {},\n\t type: \"GET\",\n\t dataType: \"html\",\n\t success: function (data) {\n\t that.angular(\"cleanup\", function(){ return { elements: pane.get() }; });\n\t pane.html(data);\n\t that.angular(\"compile\", function(){ return { elements: pane.get() }; });\n\n\t that.trigger(CONTENTLOAD, { pane: pane[0] });\n\t },\n\t error: function (xhr, status) {\n\t that.trigger(ERROR, {\n\t pane: pane[0],\n\t status: status,\n\t xhr: xhr\n\t });\n\t }\n\t });\n\t } else {\n\t pane.removeClass(\"k-scrollable\")\n\t .html(\"
\");\n\t }\n\t }\n\t },\n\n\t _triggerAction: function(type, pane) {\n\t if (!this.trigger(type, { pane: pane[0] })) {\n\t this[type](pane[0]);\n\t }\n\t },\n\n\t _togglePane: function(e) {\n\t var that = this,\n\t target = $(e.target),\n\t arrow;\n\n\t if (target.closest(\".k-splitter\")[0] != that.element[0]) {\n\t return;\n\t }\n\n\t arrow = target.children(\".k-icon:not(.k-resize-handle)\");\n\n\t if (arrow.length !== 1) {\n\t return;\n\t }\n\n\t if (arrow.is(\".k-collapse-prev\")) {\n\t that._triggerAction(COLLAPSE, target.prev());\n\t } else if (arrow.is(\".k-collapse-next\")) {\n\t that._triggerAction(COLLAPSE, target.next());\n\t } else if (arrow.is(\".k-expand-prev\")) {\n\t that._triggerAction(EXPAND, target.prev());\n\t } else if (arrow.is(\".k-expand-next\")) {\n\t that._triggerAction(EXPAND, target.next());\n\t }\n\t },\n\t _arrowClick: function (arrowType) {\n\t var that = this;\n\n\t return function(e) {\n\t var target = $(e.target),\n\t pane;\n\n\t if (target.closest(\".k-splitter\")[0] != that.element[0]) {\n\t return;\n\t }\n\n\t if (target.is(\".k-\" + arrowType + \"-prev\")) {\n\t pane = target.parent().prev();\n\t } else {\n\t pane = target.parent().next();\n\t }\n\t that._triggerAction(arrowType, pane);\n\t };\n\t },\n\t _updateSplitBar: function(splitbar, previousPane, nextPane, previousPaneEl) {\n\t var catIconIf = function(iconType, condition) {\n\t return condition ? \"
\" : \"\";\n\t },\n\t orientation = this.orientation,\n\t draggable = (previousPane.resizable !== false) && (nextPane.resizable !== false),\n\t prevCollapsible = previousPane.collapsible,\n\t prevCollapsed = previousPane.collapsed,\n\t nextCollapsible = nextPane.collapsible,\n\t nextCollapsed = nextPane.collapsed,\n\t previousPaneId = previousPaneEl.attr(\"id\");\n\n\t if(!previousPaneId) {\n\t previousPaneId = kendo.guid();\n\t previousPaneEl.attr(\"id\", previousPaneId);\n\t }\n\n\t splitbar.addClass(\"k-splitbar k-state-default k-splitbar-\" + orientation)\n\t .attr(\"role\", \"separator\")\n\t .attr(ARIA_VALUEMIN, \"0\")\n\t .attr(ARIA_VALUEMAX, \"100\")\n\t .attr(ARIA_CONTROLS, previousPaneId)\n\t .removeClass(\"k-splitbar-\" + orientation + \"-hover\")\n\t .toggleClass(\"k-splitbar-draggable-\" + orientation,\n\t draggable && !prevCollapsed && !nextCollapsed)\n\t .toggleClass(\"k-splitbar-static-\" + orientation,\n\t !draggable && !prevCollapsible && !nextCollapsible)\n\t .html(\n\t catIconIf(\"k-collapse-prev k-i-arrow-60-up\", prevCollapsible && !prevCollapsed && !nextCollapsed && orientation == VERTICAL) +\n\t catIconIf(\"k-collapse-prev k-i-arrow-60-left\", prevCollapsible && !prevCollapsed && !nextCollapsed && orientation == HORIZONTAL) +\n\t catIconIf(\"k-expand-prev k-i-arrow-60-down\", prevCollapsible && prevCollapsed && !nextCollapsed && orientation == VERTICAL) +\n\t catIconIf(\"k-expand-prev k-i-arrow-60-right\", prevCollapsible && prevCollapsed && !nextCollapsed && orientation == HORIZONTAL) +\n\t catIconIf(\"k-resize-handle k-i-hbar\", draggable && orientation == VERTICAL) +\n\t catIconIf(\"k-resize-handle k-i-vbar\", draggable && orientation == HORIZONTAL) +\n\t catIconIf(\"k-collapse-next k-i-arrow-60-down\", nextCollapsible && !nextCollapsed && !prevCollapsed && orientation == VERTICAL) +\n\t catIconIf(\"k-collapse-next k-i-arrow-60-right\", nextCollapsible && !nextCollapsed && !prevCollapsed && orientation == HORIZONTAL) +\n\t catIconIf(\"k-expand-next k-i-arrow-60-up\", nextCollapsible && nextCollapsed && !prevCollapsed && orientation == VERTICAL) +\n\t catIconIf(\"k-expand-next k-i-arrow-60-left\", nextCollapsible && nextCollapsed && !prevCollapsed && orientation == HORIZONTAL)\n\t );\n\n\t if(previousPane.labelId) {\n\t splitbar.attr(ARIA_LABELLEDBY, previousPane.labelId);\n\t } else if(previousPane.label) {\n\t splitbar.attr(ARIA_LABEL, previousPane.label);\n\t }\n\n\t if(orientation == HORIZONTAL) {\n\t splitbar.attr(ARIA_ORIENTATION, VERTICAL);\n\t }\n\n\t if (!draggable && !prevCollapsible && !nextCollapsible) {\n\t splitbar.removeAttr(TABINDEX);\n\t }\n\t },\n\t _updateSplitBars: function() {\n\t var that = this;\n\n\t this.element.children(\".k-splitbar\").each(function() {\n\t var splitbar = $(this),\n\t previousPaneEl = splitbar.prevAll(PANECLASS).first(),\n\t previousPane = previousPaneEl.data(PANE),\n\t nextPane = splitbar.nextAll(PANECLASS).first().data(PANE);\n\n\t if (!nextPane) {\n\t return;\n\t }\n\n\t that._updateSplitBar(splitbar, previousPane, nextPane, previousPaneEl);\n\t });\n\t },\n\t _removeSplitBars: function() {\n\t this.element.children(\".k-splitbar\").remove();\n\t },\n\t _panes: function() {\n\t if (!this.element) {\n\t return $();\n\t }\n\t return this.element.children(PANECLASS);\n\t },\n\n\t _resetAriaValueNow: function(splitBars, panesSizes) {\n\t var i, splitbar, valueNow, joinDimension;\n\n\t for(i = 0; i < splitBars.length; i++) {\n\t joinDimension = (panesSizes[i] + panesSizes[i + 1]) || 1;\n\t valueNow = Math.round(panesSizes[i] / joinDimension * 100);\n\t splitbar = splitBars[i];\n\t splitbar.setAttribute(ARIA_VALUENOW, valueNow);\n\t }\n\t },\n\n\t _resize: function() {\n\t var that = this,\n\t element = that.element,\n\t panes = element.children(PANECLASS),\n\t isHorizontal = that.orientation == HORIZONTAL,\n\t splitBars = element.children(\".k-splitbar\"),\n\t splitBarsCount = splitBars.length,\n\t sizingProperty = isHorizontal ? \"width\" : \"height\",\n\t totalSize = element[sizingProperty](),\n\t panesSizes = [];\n\n\t that.wrapper.addClass(\"k-splitter-resizing\");\n\n\t if (splitBarsCount === 0) {\n\t splitBarsCount = panes.length - 1;\n\t panes.slice(0, splitBarsCount)\n\t .after(\"
\");\n\n\t that._updateSplitBars();\n\t splitBars = element.children(\".k-splitbar\");\n\t } else {\n\t that._updateSplitBars();\n\t }\n\n\t // discard splitbar sizes from total size\n\t splitBars.each(function() {\n\t totalSize -= this[isHorizontal ? \"offsetWidth\" : \"offsetHeight\"];\n\t });\n\n\t var sizedPanesWidth = 0,\n\t sizedPanesCount = 0,\n\t freeSizedPanes = $();\n\n\t panes.css({ position: \"absolute\", top: 0 })\n\t [sizingProperty](function() {\n\t var element = $(this),\n\t config = element.data(PANE) || {}, size;\n\n\t element.removeClass(\"k-state-collapsed\");\n\t if (config.collapsed) {\n\t size = config.collapsedSize ? calculateSize(config.collapsedSize, totalSize) : 0;\n\t element.css(\"overflow\", \"hidden\").addClass(\"k-state-collapsed\");\n\t } else if (isFluid(config.size)) {\n\t freeSizedPanes = freeSizedPanes.add(this);\n\t panesSizes.push(false);\n\t return;\n\t } else { // sized in px/%, not collapsed\n\t size = calculateSize(config.size, totalSize);\n\t }\n\n\t sizedPanesCount++;\n\t sizedPanesWidth += size;\n\t panesSizes.push(size);\n\n\t return size;\n\t });\n\n\t totalSize -= sizedPanesWidth;\n\n\t var freeSizePanesCount = freeSizedPanes.length,\n\t freeSizePaneWidth = Math.floor(totalSize / freeSizePanesCount);\n\n\t freeSizedPanes\n\t .slice(0, freeSizePanesCount - 1)\n\t .css(sizingProperty, freeSizePaneWidth)\n\t .end()\n\t .eq(freeSizePanesCount - 1)\n\t .css(sizingProperty, totalSize - (freeSizePanesCount - 1) * freeSizePaneWidth);\n\n\t panesSizes.forEach(function(size, i) {\n\t if(size === false) {\n\t panesSizes[i] = freeSizePaneWidth;\n\t }\n\t });\n\n\t that._resetAriaValueNow(splitBars, panesSizes);\n\n\t // arrange panes\n\t var sum = 0,\n\t alternateSizingProperty = isHorizontal ? \"height\" : \"width\",\n\t positioningProperty = isHorizontal ? \"left\" : \"top\",\n\t sizingDomProperty = isHorizontal ? \"offsetWidth\" : \"offsetHeight\";\n\n\t if (freeSizePanesCount === 0) {\n\t var lastNonCollapsedPane = panes.filter(function() {\n\t return !(($(this).data(PANE) || {}).collapsed);\n\t }).last();\n\n\t lastNonCollapsedPane[sizingProperty](totalSize + lastNonCollapsedPane[0][sizingDomProperty]);\n\t }\n\n\t element.children()\n\t .css(alternateSizingProperty, element[alternateSizingProperty]())\n\t .each(function (i, child) {\n\t if (child.tagName.toLowerCase() != \"script\") {\n\t child.style[positioningProperty] = Math.floor(sum) + \"px\";\n\t sum += child[sizingDomProperty];\n\t }\n\t });\n\n\t that._detachEvents();\n\t that._attachEvents();\n\n\t that.wrapper.removeClass(\"k-splitter-resizing\");\n\n\t kendo.resize(panes);\n\t that.trigger(LAYOUTCHANGE);\n\t },\n\n\t toggle: function(pane, expand) {\n\t var that = this,\n\t paneConfig;\n\n\t pane = that.element.find(pane);\n\t paneConfig = pane.data(PANE);\n\n\t if (!expand && !paneConfig.collapsible) {\n\t return;\n\t }\n\n\t if (arguments.length == 1) {\n\t expand = paneConfig.collapsed === undefined ? false : paneConfig.collapsed;\n\t }\n\n\t paneConfig.collapsed = !expand;\n\n\t if (paneConfig.collapsed) {\n\t pane.css(\"overflow\", \"hidden\");\n\t } else {\n\t pane.css(\"overflow\", \"\");\n\t }\n\n\t that.resize(true);\n\t },\n\n\t collapse: function(pane) {\n\t this.toggle(pane, false);\n\t },\n\n\t expand: function(pane) {\n\t this.toggle(pane, true);\n\t },\n\n\t _addPane: function(config, idx, paneElement) {\n\t var that = this;\n\n\t if (paneElement.length) {\n\t that.options.panes.splice(idx, 0, config);\n\t that._initPane(paneElement, config);\n\n\t that._removeSplitBars();\n\n\t that.resize(true);\n\t }\n\n\t return paneElement;\n\t },\n\n\t append: function(config) {\n\t config = config || {};\n\n\t var that = this,\n\t paneElement = $(\"
\").appendTo(that.element);\n\n\t return that._addPane(config, that.options.panes.length, paneElement);\n\t },\n\n\t insertBefore: function(config, referencePane) {\n\t referencePane = $(referencePane);\n\t config = config || {};\n\n\t var that = this,\n\t idx = that.wrapper.children(\".k-pane\").index(referencePane),\n\t paneElement = $(\"
\").insertBefore($(referencePane));\n\n\t return that._addPane(config, idx, paneElement);\n\t },\n\n\t insertAfter: function(config, referencePane) {\n\t referencePane = $(referencePane);\n\t config = config || {};\n\n\t var that = this,\n\t idx = that.wrapper.children(\".k-pane\").index(referencePane),\n\t paneElement = $(\"
\").insertAfter($(referencePane));\n\n\t return that._addPane(config, idx + 1, paneElement);\n\t },\n\n\t remove: function(pane) {\n\t var that = this;\n\t pane = that.wrapper.find(pane);\n\n\t if (pane.length) {\n\t kendo.destroy(pane);\n\t pane.each(function(idx, element){\n\t that.options.panes.splice(that.wrapper.children(\".k-pane\").index(element), 1);\n\t $(element).remove();\n\t });\n\n\t that._removeSplitBars();\n\n\t if (that.options.panes.length) {\n\t that.resize(true);\n\t }\n\t }\n\n\t return that;\n\t },\n\n\t size: panePropertyAccessor(\"size\", true),\n\n\t min: panePropertyAccessor(\"min\"),\n\n\t max: panePropertyAccessor(\"max\")\n\t });\n\n\t ui.plugin(Splitter);\n\n\t var verticalDefaults = {\n\t sizingProperty: \"height\",\n\t sizingDomProperty: \"offsetHeight\",\n\t alternateSizingProperty: \"width\",\n\t positioningProperty: \"top\",\n\t mousePositioningProperty: \"pageY\"\n\t };\n\n\t var horizontalDefaults = {\n\t sizingProperty: \"width\",\n\t sizingDomProperty: \"offsetWidth\",\n\t alternateSizingProperty: \"height\",\n\t positioningProperty: \"left\",\n\t mousePositioningProperty: \"pageX\"\n\t };\n\n\t function PaneResizing(splitter) {\n\t var that = this,\n\t orientation = splitter.orientation;\n\n\t that.owner = splitter;\n\t that._element = splitter.element;\n\t that.orientation = orientation;\n\n\t extend(that, orientation === HORIZONTAL ? horizontalDefaults : verticalDefaults);\n\n\t that._resizable = new kendo.ui.Resizable(splitter.element, {\n\t orientation: orientation,\n\t handle: \".k-splitbar-draggable-\" + orientation + \"[data-marker=\" + splitter._marker + \"]\",\n\t hint: proxy(that._createHint, that),\n\t start: proxy(that._start, that),\n\t max: proxy(that._max, that),\n\t min: proxy(that._min, that),\n\t invalidClass:\"k-restricted-size-\" + orientation,\n\t resizeend: proxy(that._stop, that)\n\t });\n\t }\n\n\t PaneResizing.prototype = {\n\t press: function(target) {\n\t this._resizable.press(target);\n\t },\n\n\t move: function(delta, target) {\n\t if (!this.pressed) {\n\t this.press(target);\n\t this.pressed = true;\n\t }\n\n\t if (!this._resizable.target) {\n\t this._resizable.press(target);\n\t }\n\n\t this._resizable.move(delta);\n\t },\n\n\t end: function() {\n\t this._resizable.end();\n\t this.pressed = false;\n\t },\n\n\t destroy: function() {\n\t this._resizable.destroy();\n\t this._resizable = this._element = this.owner = null;\n\t },\n\n\t isResizing: function() {\n\t return this._resizable.resizing;\n\t },\n\n\t _createHint: function(handle) {\n\t var that = this;\n\t return $(\"
\")\n\t .css(that.alternateSizingProperty, handle[that.alternateSizingProperty]());\n\t },\n\n\t _start: function(e) {\n\t var that = this,\n\t splitbar = $(e.currentTarget),\n\t previousPane = splitbar.prev(),\n\t nextPane = splitbar.next(),\n\t previousPaneConfig = previousPane.data(PANE),\n\t nextPaneConfig = nextPane.data(PANE),\n\t prevBoundary = parseInt(previousPane[0].style[that.positioningProperty], 10),\n\t nextBoundary = parseInt(nextPane[0].style[that.positioningProperty], 10) + nextPane[0][that.sizingDomProperty] - splitbar[0][that.sizingDomProperty],\n\t totalSize = parseInt(that._element.css(that.sizingProperty), 10),\n\t toPx = function (value) {\n\t var val = parseInt(value, 10);\n\t return (isPixelSize(value) ? val : (totalSize * val) / 100) || 0;\n\t },\n\t prevMinSize = toPx(previousPaneConfig.min),\n\t prevMaxSize = toPx(previousPaneConfig.max) || nextBoundary - prevBoundary,\n\t nextMinSize = toPx(nextPaneConfig.min),\n\t nextMaxSize = toPx(nextPaneConfig.max) || nextBoundary - prevBoundary;\n\n\t that.previousPane = previousPane;\n\t that.nextPane = nextPane;\n\t that._maxPosition = Math.min(nextBoundary - nextMinSize, prevBoundary + prevMaxSize);\n\t that._minPosition = Math.max(prevBoundary + prevMinSize, nextBoundary - nextMaxSize);\n\t },\n\t _max: function() {\n\t return this._maxPosition;\n\t },\n\t _min: function() {\n\t return this._minPosition;\n\t },\n\t _stop: function(e) {\n\t var that = this,\n\t splitbar = $(e.currentTarget),\n\t owner = that.owner;\n\n\t owner._panes().children(\".k-splitter-overlay\").remove();\n\n\t if (e.keyCode !== kendo.keys.ESC) {\n\t var ghostPosition = e.position,\n\t previousPane = splitbar.prev(),\n\t nextPane = splitbar.next(),\n\t previousPaneConfig = previousPane.data(PANE),\n\t nextPaneConfig = nextPane.data(PANE),\n\t previousPaneNewSize = ghostPosition - parseInt(previousPane[0].style[that.positioningProperty], 10),\n\t nextPaneNewSize = parseInt(nextPane[0].style[that.positioningProperty], 10) + nextPane[0][that.sizingDomProperty] - ghostPosition - splitbar[0][that.sizingDomProperty],\n\t fluidPanesCount = that._element.children(PANECLASS).filter(function() { return isFluid($(this).data(PANE).size); }).length;\n\n\t if (!isFluid(previousPaneConfig.size) || fluidPanesCount > 1) {\n\t if (isFluid(previousPaneConfig.size)) {\n\t fluidPanesCount--;\n\t }\n\n\t previousPaneConfig.size = previousPaneNewSize + \"px\";\n\t }\n\n\t if (!isFluid(nextPaneConfig.size) || fluidPanesCount > 1) {\n\t nextPaneConfig.size = nextPaneNewSize + \"px\";\n\t }\n\n\t owner.resize(true);\n\t }\n\n\t return false;\n\t }\n\t };\n\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1059)))\n\n/***/ })\n\n/******/ });"],"sourceRoot":""}