{"version":3,"sources":["webpack:///./node_modules/@progress/kendo-ui/js/spreadsheet/sheetsbar.js","webpack:///./node_modules/@progress/kendo-ui/js/spreadsheet/sheetbinder.js","webpack:///./node_modules/@progress/kendo-ui/js/spreadsheet/sheet.js"],"names":["module","exports","modules","installedModules","__webpack_require__","moduleId","id","loaded","call","m","c","p","0","3","Error","20","1676","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","f","define","apply","undefined","kendo","$","jQuery","outerWidth","_outerWidth","DOT","EMPTYCHAR","sheetsBarClassNames","sheetsBarWrapper","sheetsBarSheetsWrapper","sheetsBarActive","sheetsBarInactive","sheetsBarAdd","sheetsBarRemove","sheetsBarItems","sheetsBarEditor","sheetsBarScrollable","sheetsBarNext","sheetsBarPrev","sheetsBarKItem","sheetsBarKActive","sheetsBarKTextbox","sheetsBarKLink","sheetsBarKIcon","sheetsBarKFontIcon","sheetsBarKButton","sheetsBarKButtonBare","sheetsBarKArrowW","sheetsBarKArrowE","sheetsBarKReset","sheetsBarKIconX","sheetsBarKSprite","sheetsBarKIconPlus","sheetsBarHintWrapper","sheetsBarKResetItems","SheetsBar","ui","Widget","extend","init","element","options","classNames","this","addClass","_openDialog","openDialog","_tree","dom","Tree","render","_addButton","_createSheetsWrapper","_toggleScrollEvents","_createSortable","_sortable","bind","_onSheetReorderStart","_onSheetReorderEnd","on","_onSheetRemove","_onSheetSelect","_createEditor","_onAddSelect","name","scrollable","distance","events","_editor","_renderSheets","_sheets","_selectedIndex","find","format","trigger","_onEditorKeydown","_onEditorBlur","_destroyEditor","canceled","newSheetName","val","off","_onSheetRename","renderSheets","sheets","selectedIndex","isInEditMode","that","_isRtl","support","isRtl","_renderHtml","_scrollableAllowed","sheetsWrapper","_sheetsWrapper","_toggleScrollButtons","toggle","ul","_sheetsGroup","wrapper","scrollLeft","prev","next","toggleClass","scrollWidth","offsetWidth","scrollPrevButton","scrollNextButton","_nowScrollingSheets","_scrollSheetsByDelta","add","renderScrollButtons","idx","sheetElements","length","sheet","isSelectedSheet","attr","className","elementContent","push","type","value","maxlength","title","text","deleteIcon","itemsWrapper","childrenElements","baseButtonClass","children","Sortable","filter","container","axis","animation","ignore","end","draggable","hint","remove","clone","wrap","closest","e","which","preventDefault","oldIndex","newIndex","removedSheetName","target","closeCallback","dlg","sender","isConfirmed","confirmation","close","selectedSheetText","is","_scrollSheetsToItem","isAddButton","sheetIndex","destroy","isNaN","item","itemPosition","sheetsGroup","currentScrollOffset","itemWidth","itemOffset","position","left","first","sheetsGroupWidth","finish","animate","delta","scrLeft","spreadsheet","window","1677","5","1641","1675","identity","o","SheetDataSourceBinder","Class","columns","_normalizeColumns","_sheet","_dataSource","_header","_boundRowsCount","dataSource","fetch","_sheetChangeHandler","_sheetChange","_sheetDeleteRowHandler","_sheetDeleteRow","_sheetInsertRowHandler","_sheetInsertRow","index","insert","Math","max","model","view","batch","forEach","column","range","insertRow","deleteRow","recalc","ref","fields","getters","normalizedRef","i","rangeRef","normalizedRefs","UnionRef","data","values","setValues","record","toRangeRef","valueIndex","ri","topLeft","row","bottomRight","colValueIndex","ci","col","currentValue","set","field","reader","Object","keys","toJSON","map","numberToDate","_skipRebind","_grid","normalize","refs","Array","isArray","_changeHandler","unbind","_progressHandler","_errorHandler","_change","_requestStart","_error","DataSource","create","_progress","getter","rowCount","getterIdx","956","1628","1656","1673","MODIFIED_FORMULAS","RangeRef","CellRef","Range","Selection","selection","FIRSTREF","originalSelection","_activeCell","originalActiveCell","currentSelectionRange","rangeAt","selectionRangeIndex","currentOriginalNavigationRange","currentNavigationRange","singleCellSelection","_sheetRef","nextNavigationRange","nextRangeIndex","previousNavigationRange","previousRangeIndex","activeCell","unionWithMerged","focus","triggerChange","select","expanded","changeActiveCell","eq","triggerSelect","isCell","forEachMergedCell","merged","lastRange","panes","pane","rows","cols","visible","newRef","_currentView","start","intersect","NULLREF","size","Sheet","Observable","prototype","_reinit","arguments","columnCount","rowHeight","columnWidth","headerHeight","headerWidth","defaultCellStyle","_defaultCellStyle","background","color","fontFamily","fontSize","italic","bold","underline","verticalAlign","textAlign","_rows","Axis","_columns","_filteredRows","RangeList","_mergedCells","_frozenRows","_frozenColumns","_suspendChanges","_filter","_showGridLines","_gridLinesColor","Grid","SHEETREF","_properties","PropertyBag","_sorter","Sorter","sortable","_viewSelection","_editSelection","_formulaSelections","_drawings","_selectionState","_inEdit","navigator","_navigator","SheetNavigator","axisManager","_axisManager","AxisManager","_name","_sheetName","_property","accessor","reason","_field","suspendChanges","setDataSource","dataSourceBinder","hideColumn","columnIndex","hide","layout","unhideColumn","unhide","isHiddenColumn","hidden","_copyRange","sourceRangeRef","targetRef","grid","nextRefTopLeft","nextRefBottomRight","nextIndex","nextBottomIndex","targetIndex","copy","_saveModifiedFormulas","array","callback","save","ret","_restoreModifiedFormulas","wb","_workbook","sheetByName","calc","runtime","Formula","cellRefIndex","validation","Validation","_adjustReferences","operation","mergedCells","reduce","a","adjust","affectedSheet","_forFormulas","formula","_forValidations","adjustNames","_count","drawing","topLeftCell","props","formulas","get","n","v","preventInsertRow","rowIndex","count","selectedHeaders","allRows","hasValue","preventInsertBelowLastRow","preventInsertColumn","colIndex","allCols","preventInsertAfterLastColumn","skipDataSourceInsert","result","frozenRows","slice","nextRef","clear","clearAll","keepBorders","Infinity","isEnabledRow","enable","skipDataSourceDelete","insertColumn","frozenColumns","isEnabledColumn","deleteColumn","_filterRow","hideRow","unhideRow","isHiddenRow","isFilteredRow","width","height","showGridLines","gridLinesColor","_ref","numRows","numColumns","Ref","parseReference","_getMergedCells","primary","secondary","hasMerged","cellRef","print","contains","selectAll","intersects","forEachFilterHeader","forEachColumn","columnRef","indexOf","self","forEachRange","doIt","startCellIndex","endCellIndex","startResizing","initialPosition","_initialPosition","_resizeInProgress","startAutoFill","_autoFillInProgress","_autoFillOrigin","_autoFillDest","updateAutoFill","dest","punch","direction","_autoFillPunch","_autoFillHint","_autoFillDirection","autoFillRef","autoFillPunch","autoFillInProgress","resizingInProgress","draggingInProgress","_draggingInProgress","completeResizing","hintPosition","resizeHintPosition","handlePosition","resizeHandlePosition","command","x","y","resize","_renderComment","comment","_commentRef","_resizeHandlePosition","location","_resizeHintPosition","removeResizeHandle","positionResizeHandle","startDragging","completeDragging","drag","box","drawingBoundingBox","indexVisible","top","refBox","refBoundingBox","offsetX","offsetY","dragging","previous","startSelection","_selectionInProgress","completeSelection","origin","operatingRange","selectionInProgress","expandedRef","selectionState","isAxis","originalSelect","currentOriginalSelectionRange","union","trim","trims","forEachProperty","property","list","_focus","activeCellSelection","maxRow","maxCol","rowState","colState","rowSelection","colSelection","all","isInEdit","_setFormulaSelections","_viewActiveCell","positions","viewSelection","hyperlinks","clearDefaultStyle","cell","key","link","display","cells","arrayFormulaRange","src","toString","parseColor","toCss","borderTop","borderBottom","borderRight","borderLeft","json","drawings","dr","_sort","sort","ascending","fromJSON","_compileFormula","setArrayFormulaRange","_compileValidation","Drawing","activeCellRef","merge","Filter","_refreshFilter","logToConsole","_refresh","resetFormulas","reset","resetValidations","context","pending","exec","revalidate","_get","_value","_validation","from","replace","to","compile","parseFormula","_copyValuesInRange","_set","limitPrecision","suspended","_sortBy","indices","sortBy","diff","_filterBy","toColumn","prepare","matches","filterColumn","filterRef","clearFilter","spec","_clearFilter","getAxisState","getState","setAxisState","state","setState","properties","ALL_REASONS","_merge","mergedRef","currentRef","splice","collapse","_useCultureDecimals","useCultureDecimals","withCultureDecimals","dot","culture","numberFormat","withDecimalSeparator","sum","Rectangle","rectangle","addDrawing","drw","activate","_activeDrawing","removeDrawing","pos","usesImage","img","image","isMerged","args","opacity","anchor","1674"],"mappings":"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","file":"js/chunk-vendors~01af8b61.e39f96ed.js","sourcesContent":["module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(1676);\n\tmodule.exports = __webpack_require__(1676);\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/***/ 20:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"../kendo.core\");\n\n/***/ }),\n\n/***/ 1676:\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__(20), __webpack_require__(1677) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\t (function(kendo) {\n\n\t var $ = kendo.jQuery;\n\t var outerWidth = kendo._outerWidth;\n\t var DOT = \".\";\n\t var EMPTYCHAR = \" \";\n\t var sheetsBarClassNames = {\n\t sheetsBarWrapper: \"k-widget k-header\",\n\t sheetsBarSheetsWrapper: \"k-tabstrip k-floatwrap k-tabstrip-bottom\",\n\t sheetsBarActive: \"k-spreadsheet-sheets-bar-active\",\n\t sheetsBarInactive: \"k-spreadsheet-sheets-bar-inactive\",\n\t sheetsBarAdd: \"k-spreadsheet-sheets-bar-add\",\n\t sheetsBarRemove: \"k-spreadsheet-sheets-remove\",\n\t sheetsBarItems: \"k-spreadsheet-sheets-items\",\n\t sheetsBarEditor: \"k-spreadsheet-sheets-editor\",\n\t sheetsBarScrollable: \"k-tabstrip-scrollable\",\n\t sheetsBarNext: \"k-tabstrip-next\",\n\t sheetsBarPrev: \"k-tabstrip-prev\",\n\t sheetsBarKItem: \"k-item k-tabstrip-item k-state-default\",\n\t sheetsBarKActive: \"k-state-active k-state-tab-on-top\",\n\t sheetsBarKTextbox: \"k-textbox\",\n\t sheetsBarKLink: \"k-link\",\n\t sheetsBarKIcon: \"k-icon\",\n\t sheetsBarKFontIcon: \"k-icon\",\n\t sheetsBarKButton: \"k-button k-button-icon\",\n\t sheetsBarKButtonBare: \"k-flat\",\n\t sheetsBarKArrowW: \"k-i-arrow-60-left\",\n\t sheetsBarKArrowE: \"k-i-arrow-60-right\",\n\t sheetsBarKReset: \"k-reset k-tabstrip-items\",\n\t sheetsBarKIconX: \"k-i-close\",\n\t sheetsBarKSprite: \"k-sprite\",\n\t sheetsBarKIconPlus: \"k-i-plus\",\n\t sheetsBarHintWrapper: \"k-widget k-tabstrip k-tabstrip-bottom k-spreadsheet-sheets-items-hint\",\n\t sheetsBarKResetItems: \"k-reset k-tabstrip-items\"\n\t };\n\n\t var SheetsBar = kendo.ui.Widget.extend({\n\t init: function(element, options) {\n\t var classNames = SheetsBar.classNames;\n\n\t kendo.ui.Widget.call(this, element, options);\n\n\t element = this.element;\n\n\t element.addClass(classNames.sheetsBarWrapper);\n\n\t this._openDialog = options.openDialog;\n\n\t this._tree = new kendo.dom.Tree(element[0]);\n\n\t this._tree.render([this._addButton(), this._createSheetsWrapper([])]);\n\n\t this._toggleScrollEvents(true);\n\n\t this._createSortable();\n\n\t this._sortable.bind(\"start\", this._onSheetReorderStart.bind(this));\n\n\t this._sortable.bind(\"end\", this._onSheetReorderEnd.bind(this));\n\n\t element.on(\"click\", DOT + classNames.sheetsBarRemove, this._onSheetRemove.bind(this));\n\n\t element.on(\"click\", \"li\", this._onSheetSelect.bind(this));\n\n\t element.on(\"dblclick\", \"li\" + DOT + classNames.sheetsBarActive, this._createEditor.bind(this));\n\n\t element.on(\"click\", DOT + classNames.sheetsBarAdd, this._onAddSelect.bind(this));\n\t },\n\n\t options: {\n\t name: \"SheetsBar\",\n\t scrollable: {\n\t distance: 200\n\t }\n\t },\n\n\t events: [\n\t \"select\",\n\t \"reorder\",\n\t \"rename\"\n\t ],\n\n\t _createEditor: function () {\n\t if (this._editor) {\n\t return;\n\t }\n\n\t this._renderSheets(this._sheets, this._selectedIndex, true);\n\t this._editor = this.element\n\t .find(kendo.format(\"input{0}{1}\",DOT,SheetsBar.classNames.sheetsBarEditor))\n\t .trigger(\"focus\")\n\t .on(\"keydown\", this._onEditorKeydown.bind(this))\n\t .on(\"blur\", this._onEditorBlur.bind(this));\n\t },\n\n\t _destroyEditor: function(canceled) {\n\t var newSheetName = canceled ? null : this._editor.val();\n\t this._editor.off();\n\t this._editor = null;\n\t this._renderSheets(this._sheets, this._selectedIndex, false);\n\t this._onSheetRename(newSheetName);\n\t },\n\n\t renderSheets: function(sheets, selectedIndex) {\n\t if (!sheets || selectedIndex < 0) {\n\t return;\n\t }\n\n\t this._renderSheets(sheets, selectedIndex, false);\n\t },\n\n\t _renderSheets: function(sheets, selectedIndex, isInEditMode) {\n\t var that = this;\n\t var classNames = SheetsBar.classNames;\n\n\t that._isRtl = kendo.support.isRtl(that.element);\n\t that._sheets = sheets;\n\t that._selectedIndex = selectedIndex;\n\n\t that._renderHtml(isInEditMode, true);\n\n\t if (!that._scrollableAllowed()) {\n\t return;\n\t }\n\n\t var sheetsWrapper = that._sheetsWrapper();\n\n\t sheetsWrapper.addClass(classNames.sheetsBarScrollable + EMPTYCHAR + classNames.sheetsBarSheetsWrapper);\n\n\t that._toggleScrollButtons();\n\t },\n\n\t _toggleScrollButtons: function (toggle) {\n\t var that = this;\n\t var ul = that._sheetsGroup();\n\t var wrapper = that._sheetsWrapper();\n\t var scrollLeft = kendo.scrollLeft(ul);\n\t var prev = wrapper.find(DOT + SheetsBar.classNames.sheetsBarPrev);\n\t var next = wrapper.find(DOT + SheetsBar.classNames.sheetsBarNext);\n\n\t if (toggle === false) {\n\t prev.addClass( 'k-disabled' );\n\t next.addClass( 'k-disabled' );\n\t } else {\n\t prev.toggleClass( 'k-disabled', !(that._isRtl ? scrollLeft < ul[0].scrollWidth - ul[0].offsetWidth - 1 : scrollLeft !== 0) );\n\t next.toggleClass( 'k-disabled', !(that._isRtl ? scrollLeft !== 0 : scrollLeft < ul[0].scrollWidth - ul[0].offsetWidth - 1) );\n\t }\n\n\t },\n\n\t _toggleScrollEvents: function(toggle) {\n\t var that = this;\n\t var classNames = SheetsBar.classNames;\n\t var options = that.options;\n\t var scrollPrevButton;\n\t var scrollNextButton;\n\t var sheetsWrapper = that._sheetsWrapper();\n\t scrollPrevButton = sheetsWrapper.find(DOT + classNames.sheetsBarPrev);\n\t scrollNextButton = sheetsWrapper.find(DOT + classNames.sheetsBarNext);\n\n\t if (toggle) {\n\t scrollPrevButton.on(\"mousedown\", function () {\n\t that._nowScrollingSheets = true;\n\t that._scrollSheetsByDelta(options.scrollable.distance * (that._isRtl ? 1 : -1));\n\t });\n\n\t scrollNextButton.on(\"mousedown\", function () {\n\t that._nowScrollingSheets = true;\n\t that._scrollSheetsByDelta(options.scrollable.distance * (that._isRtl ? -1 : 1));\n\t });\n\n\t scrollPrevButton.add(scrollNextButton).on(\"mouseup\", function () {\n\t that._nowScrollingSheets = false;\n\t });\n\t } else {\n\t scrollPrevButton.off();\n\t scrollNextButton.off();\n\t }\n\t },\n\n\t _renderHtml: function(isInEditMode, renderScrollButtons) {\n\t var idx;\n\t var sheetElements = [];\n\t var dom = kendo.dom;\n\t var element = dom.element;\n\t var sheets = this._sheets;\n\t var selectedIndex = this._selectedIndex;\n\t var classNames = SheetsBar.classNames;\n\n\t for (idx = 0; idx < sheets.length; idx++) {\n\t var sheet = sheets[idx];\n\t var isSelectedSheet = (idx === selectedIndex);\n\t var attr = { className: classNames.sheetsBarKItem + EMPTYCHAR };\n\t var elementContent = [];\n\n\t if (isSelectedSheet) {\n\t attr.className += classNames.sheetsBarKActive + EMPTYCHAR + classNames.sheetsBarActive;\n\t } else {\n\t attr.className += classNames.sheetsBarInactive;\n\t }\n\n\t if (isSelectedSheet && isInEditMode) {\n\t elementContent.push(element(\"input\", {\n\t type: \"text\",\n\t value: sheet.name(),\n\t className: classNames.sheetsBarKTextbox + EMPTYCHAR + classNames.sheetsBarEditor,\n\t maxlength: 50\n\t }, []));\n\t } else {\n\t elementContent.push(element(\"span\", {\n\t className: classNames.sheetsBarKLink,\n\t title: sheet.name()\n\t }, [dom.text(sheet.name())]));\n\n\t if (sheets.length > 1) {\n\t var deleteIcon = element(\"span\", {\n\t className: classNames.sheetsBarKIcon + EMPTYCHAR + classNames.sheetsBarKFontIcon + EMPTYCHAR + classNames.sheetsBarKIconX\n\t }, []);\n\n\t elementContent.push(element(\"span\", {\n\t className: classNames.sheetsBarKLink + EMPTYCHAR + classNames.sheetsBarRemove,\n\t 'data-type': 'remove'\n\t }, [deleteIcon]));\n\t }\n\t }\n\n\t sheetElements.push(element(\"li\", attr, elementContent));\n\t }\n\n\t this._tree.render([this._addButton(), this._createSheetsWrapper(sheetElements, renderScrollButtons)]);\n\t },\n\n\t _createSheetsWrapper: function(sheetElements, renderScrollButtons) {\n\t var element = kendo.dom.element;\n\t var classNames = SheetsBar.classNames;\n\t var itemsWrapper = element('div', { className: 'k-tabstrip-items-wrapper k-hstack' } );\n\t var childrenElements = [null, element(\"ul\", {\n\t className: classNames.sheetsBarKReset\n\t }, sheetElements), null ];\n\n\t renderScrollButtons = true;\n\n\t if (renderScrollButtons) {\n\t var baseButtonClass = classNames.sheetsBarKButton + EMPTYCHAR + classNames.sheetsBarKButtonBare + EMPTYCHAR;\n\n\t childrenElements[0] = (element(\"span\", {className: baseButtonClass + classNames.sheetsBarPrev }, [\n\t element(\"span\", {className: classNames.sheetsBarKIcon + EMPTYCHAR + classNames.sheetsBarKArrowW}, [])\n\t ]));\n\n\t childrenElements[2] = (element(\"span\", {className: baseButtonClass + classNames.sheetsBarNext }, [\n\t element(\"span\", {className: classNames.sheetsBarKIcon + EMPTYCHAR + classNames.sheetsBarKArrowE}, [])\n\t ]));\n\t }\n\n\t itemsWrapper.children = childrenElements;\n\n\t return element(\"div\", { className: classNames.sheetsBarItems }, [ itemsWrapper ]);\n\t },\n\n\t _createSortable: function() {\n\t var classNames = SheetsBar.classNames;\n\t this._sortable = new kendo.ui.Sortable(this.element, {\n\t filter: kendo.format(\"ul li.{0},ul li.{1}\", classNames.sheetsBarActive, classNames.sheetsBarInactive),\n\t container: DOT + classNames.sheetsBarItems,\n\t axis: \"x\",\n\t animation: false,\n\t ignore: \"input\",\n\t end: function () {\n\t if (this.draggable.hint) {\n\t this.draggable.hint.remove();\n\t }\n\t },\n\t hint: function (element) {\n\t var hint = $(element).clone();\n\t return hint.wrap(\"
\").closest(\"div\");\n\t }\n\t });\n\t },\n\n\t _onEditorKeydown: function(e) {\n\t if (this._editor) {\n\t if (e.which === 13) {\n\t this._destroyEditor();\n\t }\n\n\t if (e.which === 27) {\n\t this._destroyEditor(true);\n\t }\n\t }\n\t },\n\n\t _onEditorBlur: function() {\n\t if (this._editor) {\n\t this._destroyEditor();\n\t }\n\t },\n\n\t _onSheetReorderEnd: function(e) {\n\t e.preventDefault();\n\t this.trigger(\"reorder\", {oldIndex: e.oldIndex, newIndex: e.newIndex});\n\t },\n\n\t _onSheetReorderStart: function(e) {\n\t if (this._editor) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _onSheetRemove: function(e) {\n\t var removedSheetName = $(e.target).closest(\"li\").text();\n\n\t if (this._editor) {\n\t this._destroyEditor();\n\t }\n\n\t var closeCallback = function(e) {\n\t var dlg = e.sender;\n\n\t if (dlg.isConfirmed()) {\n\t this.trigger(\"remove\", { name: removedSheetName, confirmation: true });\n\t }\n\t }.bind(this);\n\n\t this._openDialog(\"confirmation\", {\n\t close: closeCallback\n\t });\n\t },\n\n\t _onSheetSelect: function(e) {\n\t var selectedSheetText = $(e.target).text();\n\n\t if ($(e.target).is(DOT + SheetsBar.classNames.sheetsBarEditor) || !selectedSheetText) {\n\t e.preventDefault();\n\t return;\n\t }\n\n\t if (this._editor) {\n\t this._destroyEditor();\n\t }\n\n\t this._scrollSheetsToItem($(e.target).closest(\"li\"));\n\n\t this.trigger(\"select\", {name: selectedSheetText, isAddButton: false});\n\t },\n\n\t _onSheetRename: function(newSheetName) {\n\t if (this._sheets[this._selectedIndex].name() === newSheetName || newSheetName === null) {\n\t return;\n\t }\n\n\t this.trigger(\"rename\", {name: newSheetName, sheetIndex: this._selectedIndex });\n\t },\n\n\t _onAddSelect: function() {\n\t this.trigger(\"select\", {isAddButton: true});\n\t },\n\n\t _addButton: function() {\n\t var element = kendo.dom.element;\n\t var classNames = SheetsBar.classNames;\n\t return element(\"a\", {\n\t className: classNames.sheetsBarAdd + EMPTYCHAR + classNames.sheetsBarKButton\n\t }, [element(\"span\", {className: classNames.sheetsBarKIcon + EMPTYCHAR + classNames.sheetsBarKFontIcon + EMPTYCHAR + classNames.sheetsBarKIconPlus}, [])]);\n\t },\n\n\t destroy: function() {\n\t this._sortable.destroy();\n\t },\n\n\t _scrollableAllowed: function() {\n\t var options = this.options;\n\t return options.scrollable && !isNaN(options.scrollable.distance);\n\t },\n\n\t _scrollSheetsToItem: function (item) {\n\t var that = this;\n\t var sheetsGroup = that._sheetsGroup();\n\t var currentScrollOffset = kendo.scrollLeft(sheetsGroup);\n\t var itemWidth = outerWidth(item);\n\t var itemOffset = that._isRtl ? item.position().left : item.position().left - sheetsGroup.children().first().position().left;\n\t var sheetsGroupWidth = sheetsGroup[0].offsetWidth;\n\t var itemPosition;\n\n\t if (that._isRtl) {\n\t if (itemOffset < 0) {\n\t itemPosition = currentScrollOffset + itemOffset - (sheetsGroupWidth - currentScrollOffset);\n\t } else if (itemOffset + itemWidth > sheetsGroupWidth) {\n\t itemPosition = currentScrollOffset + itemOffset - itemWidth;\n\t }\n\t } else {\n\t if (currentScrollOffset + sheetsGroupWidth < itemOffset + itemWidth) {\n\t itemPosition = itemOffset + itemWidth - sheetsGroupWidth;\n\t } else if (currentScrollOffset > itemOffset) {\n\t itemPosition = itemOffset;\n\t }\n\t }\n\n\t sheetsGroup.finish().animate({ \"scrollLeft\": itemPosition }, \"fast\", \"linear\", function () {\n\t that._toggleScrollButtons();\n\t });\n\t },\n\n\t _sheetsGroup: function() {\n\t return this._sheetsWrapper().find(\"ul\");\n\t },\n\n\t _sheetsWrapper: function() {\n\t return this.element.find(DOT + SheetsBar.classNames.sheetsBarItems);\n\t },\n\n\t _scrollSheetsByDelta: function (delta) {\n\t var that = this;\n\t var sheetsGroup = that._sheetsGroup();\n\t var scrLeft = kendo.scrollLeft(sheetsGroup);\n\n\t sheetsGroup.finish().animate({ \"scrollLeft\": scrLeft + delta }, \"fast\", \"linear\", function () {\n\t if (that._nowScrollingSheets) {\n\t that._scrollSheetsByDelta(delta);\n\t } else {\n\t that._toggleScrollButtons();\n\t }\n\t });\n\t }\n\t });\n\n\t kendo.spreadsheet.SheetsBar = SheetsBar;\n\t $.extend(true, SheetsBar, { classNames: sheetsBarClassNames });\n\t })(window.kendo);\n\t}, __webpack_require__(3));\n\n\n/***/ }),\n\n/***/ 1677:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"../kendo.sortable\");\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(1675);\n\tmodule.exports = __webpack_require__(1675);\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/***/ 5:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"../kendo.data\");\n\n/***/ }),\n\n/***/ 20:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"../kendo.core\");\n\n/***/ }),\n\n/***/ 1641:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./sheet\");\n\n/***/ }),\n\n/***/ 1675:\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__(20), __webpack_require__(5), __webpack_require__(1641) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\t(function(kendo) {\n\n\t var identity = function(o) { return o; };\n\n\t var SheetDataSourceBinder = kendo.Class.extend({\n\t init: function(options) {\n\n\t this.options = kendo.jQuery.extend({}, this.options, options);\n\n\t this.columns = this._normalizeColumns(this.options.columns);\n\n\t this._sheet();\n\t this._dataSource();\n\n\t this._header();\n\n\t this._boundRowsCount = 0;\n\n\t this.dataSource.fetch();\n\t },\n\n\t _sheet: function() {\n\t this.sheet = this.options.sheet;\n\n\t this._sheetChangeHandler = this._sheetChange.bind(this);\n\t this._sheetDeleteRowHandler = this._sheetDeleteRow.bind(this);\n\t this._sheetInsertRowHandler = this._sheetInsertRow.bind(this);\n\n\t this.sheet.bind(\"change\", this._sheetChangeHandler)\n\t .bind(\"afterDeleteRow\", this._sheetDeleteRowHandler)\n\t .bind(\"afterInsertRow\", this._sheetInsertRowHandler);\n\t },\n\n\t _sheetInsertRow: function(e) {\n\t if (e.index !== undefined) {\n\t this.dataSource.insert(Math.max(e.index - 1, 0), {});\n\t }\n\t },\n\n\t _sheetDeleteRow: function(e) {\n\t if (e.index !== undefined) {\n\t var dataSource = this.dataSource;\n\t var model = dataSource.view()[e.index - 1];\n\n\t if (model) {\n\t dataSource.remove(model);\n\t }\n\t }\n\t },\n\n\t _header: function() {\n\t this.sheet.batch(function() {\n\t this.columns.forEach(function(column, index) {\n\t this.sheet.range(0,index).value(column.title);\n\t }.bind(this));\n\t }.bind(this));\n\t },\n\n\t _sheetChange: function(e) {\n\t if (e.insertRow || e.deleteRow) {\n\t // these actions are handled via custom events\n\t return;\n\t }\n\n\t if (e.recalc && e.ref) {\n\t var UnionRef = kendo.spreadsheet.UnionRef;\n\t var dataSource = this.dataSource;\n\t var data = dataSource.view();\n\t var columns = this.columns;\n\t var values = [];\n\t var sheet = this.sheet;\n\t var fields, getters, normalizedRef, i, rangeRef, normalizedRefs;\n\t var setValues = function(ref) {\n\t ref = ref.toRangeRef();\n\t var record;\n\t var valueIndex = 0;\n\t for (var ri = ref.topLeft.row; ri <= ref.bottomRight.row; ri++) {\n\t record = data[ri - 1]; // skip header row\n\n\t if (!record) {\n\t record = dataSource.insert(ri - 1, {});\n\t data = dataSource.view();\n\t }\n\n\t var colValueIndex = 0;\n\t for (var ci = ref.topLeft.col; ci <= ref.bottomRight.col && ci < columns.length; ci++) {\n\t var currentValue = values[i][valueIndex][colValueIndex++];\n\t record.set(columns[ci].field, getters[ci](currentValue));\n\t }\n\t valueIndex++;\n\t }\n\t };\n\n\t if (dataSource.reader.model) {\n\t fields = dataSource.reader.model.fields;\n\t }\n\n\t if (!columns.length && data.length) {\n\t columns = Object.keys(data[0].toJSON());\n\t }\n\n\t getters = columns.map(function(column) {\n\t var field = column.field;\n\t if (field && fields && fields[field] && fields[field].type == \"date\") {\n\t return kendo.spreadsheet.numberToDate;\n\t }\n\t return identity;\n\t });\n\n\t this._skipRebind = true;\n\t normalizedRef = sheet._grid.normalize(e.ref);\n\n\t if(!(normalizedRef instanceof UnionRef)) {\n\t normalizedRef = new UnionRef([normalizedRef]);\n\t }\n\n\t normalizedRefs = normalizedRef.refs;\n\n\t normalizedRefs.forEach(function(ref) {\n\t values.push(sheet.range(ref).values());\n\t });\n\n\t for(i = 0; i < normalizedRefs.length; i++) {\n\t rangeRef = normalizedRefs[i];\n\t rangeRef.forEach(setValues);\n\t }\n\n\t this._boundRowsCount = dataSource.view().length;\n\n\t this._skipRebind = false;\n\t }\n\t },\n\n\t _normalizeColumns: function(columns) {\n\t return columns.map(function(column) {\n\t var field = column.field || column;\n\t return {\n\t field: field,\n\t title: column.title || field\n\t };\n\t });\n\t },\n\n\t _dataSource: function() {\n\t var options = this.options;\n\t var dataSource = options.dataSource;\n\n\t dataSource = Array.isArray(dataSource) ? { data: dataSource } : dataSource;\n\n\t if (this.dataSource && this._changeHandler) {\n\t this.dataSource.unbind(\"change\", this._changeHandler)\n\t .unbind(\"progress\", this._progressHandler)\n\t .unbind(\"error\", this._errorHandler);\n\t } else {\n\t this._changeHandler = this._change.bind(this);\n\t this._progressHandler = this._requestStart.bind(this);\n\t this._errorHandler = this._error.bind(this);\n\t }\n\n\t this.dataSource = kendo.data.DataSource.create(dataSource)\n\t .bind(\"change\", this._changeHandler)\n\t .bind(\"progress\", this._progressHandler)\n\t .bind(\"error\", this._errorHandler);\n\t },\n\n\t _error: function() {\n\t this._progress(false);\n\t },\n\n\t _requestStart: function() {\n\t this._progress(true);\n\t },\n\n\t _progress: function(toggle) {\n\t this.sheet.trigger(\"progress\", {\n\t toggle: toggle\n\t });\n\t },\n\n\t _change: function() {\n\t if (this._skipRebind) {\n\t return;\n\t }\n\n\t if (this.sheet.trigger(\"dataBinding\")) {\n\t return;\n\t }\n\n\t var data = this.dataSource.view();\n\t var columns = this.columns;\n\n\t if (!columns.length && data.length) {\n\t this.columns = columns = this._normalizeColumns(Object.keys(data[0].toJSON()));\n\t this._header();\n\t }\n\n\t var getters = columns.map(function(column) {\n\t return kendo.getter(column.field);\n\t });\n\n\t this.sheet.batch(function() {\n\t var length = Math.max(data.length, this._boundRowsCount, this.sheet._grid.rowCount - 1);\n\n\t for (var idx = 0; idx < length; idx++) {\n\t for (var getterIdx = 0; getterIdx < getters.length; getterIdx++) {\n\t var value = data[idx] ? getters[getterIdx](data[idx]) : null;\n\n\t //skip header row\n\t this.sheet.range(idx + 1, getterIdx).value(value);\n\t }\n\t }\n\t }.bind(this));\n\n\t this._boundRowsCount = data.length;\n\n\t this._progress(false);\n\t this.sheet.trigger(\"dataBound\");\n\t },\n\n\t destroy: function() {\n\t this.dataSource.unbind(\"change\", this._changeHandler)\n\t .unbind(\"progress\", this._progressHandler)\n\t .unbind(\"error\", this._errorHandler);\n\n\t this.sheet.unbind(\"change\", this._sheetChangeHandler)\n\t .unbind(\"deleteRow\", this._sheetDeleteRowHandler)\n\t .unbind(\"insertRow\", this._sheetInsertRowHandler);\n\t },\n\n\t options: {\n\t columns: []\n\t }\n\t });\n\n\t kendo.spreadsheet.SheetDataSourceBinder = SheetDataSourceBinder;\n\t})(kendo);\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\t__webpack_require__(1673);\n\tmodule.exports = __webpack_require__(1673);\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/***/ 20:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"../kendo.core\");\n\n/***/ }),\n\n/***/ 956:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"../kendo.color\");\n\n/***/ }),\n\n/***/ 1628:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./runtime\");\n\n/***/ }),\n\n/***/ 1656:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./references\");\n\n/***/ }),\n\n/***/ 1673:\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__(20), __webpack_require__(956), __webpack_require__(1628), __webpack_require__(1674), __webpack_require__(1656) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\t(function(kendo) {\n\n\t /* jshint laxbreak:true, eqnull:true */\n\n\t var RangeRef = kendo.spreadsheet.RangeRef;\n\t var UnionRef = kendo.spreadsheet.UnionRef;\n\t var CellRef = kendo.spreadsheet.CellRef;\n\t var Range = kendo.spreadsheet.Range;\n\n\t // This is a “dynamic variable” (see Greenspun's 10th rule). It's\n\t // bound to an array via sheet._saveModifiedFormulas (which see)\n\t // while the callback runs. The goal is to enable external code\n\t // to get a list of formulas or validations that have been\n\t // adjusted as an effect of an insert/delete row/column operation,\n\t // to be able to undo it.\n\t //\n\t // The reason why simply saving the state via sheet.getState() or\n\t // range.getState() won't suffice is that an insert or delete\n\t // operation can have far-reaching effects, like adjusting\n\t // formulas from another sheet.\n\t var MODIFIED_FORMULAS;\n\n\t var Selection = kendo.Class.extend({\n\t init: function(sheet) {\n\t this._sheet = sheet;\n\t this.selection = kendo.spreadsheet.FIRSTREF.toRangeRef();\n\t this.originalSelection = kendo.spreadsheet.FIRSTREF.toRangeRef();\n\t this._activeCell = kendo.spreadsheet.FIRSTREF.toRangeRef();\n\t this.originalActiveCell = kendo.spreadsheet.FIRSTREF;\n\t },\n\n\t currentSelectionRange: function() {\n\t return this.selection.rangeAt(this.selectionRangeIndex).toRangeRef();\n\t },\n\n\t currentOriginalNavigationRange: function() {\n\t return this.originalSelection.rangeAt(this.selectionRangeIndex).toRangeRef();\n\t },\n\n\t currentNavigationRange: function() {\n\t if (this.singleCellSelection()) {\n\t return this._sheet._sheetRef;\n\t } else {\n\t return this.selection.rangeAt(this.selectionRangeIndex).toRangeRef();\n\t }\n\t },\n\n\t nextNavigationRange: function() {\n\t if (!this.singleCellSelection()) {\n\t this.selectionRangeIndex = this.selection.nextRangeIndex(this.selectionRangeIndex);\n\t }\n\n\t return this.currentNavigationRange();\n\t },\n\n\t previousNavigationRange: function() {\n\t if (!this.singleCellSelection()) {\n\t this.selectionRangeIndex = this.selection.previousRangeIndex(this.selectionRangeIndex);\n\t }\n\n\t return this.currentNavigationRange();\n\t },\n\n\t activeCell: function(ref) {\n\t if (ref) {\n\t this.originalActiveCell = ref.first();\n\t this._activeCell = this._sheet.unionWithMerged(ref.toRangeRef());\n\t this._sheet.focus(ref);\n\t this._sheet.triggerChange({ activeCell: true, selection: true });\n\t }\n\n\t return this._activeCell;\n\t },\n\n\t select: function(ref, expanded, changeActiveCell, view) {\n\t if (ref) {\n\t if (ref.eq(this.originalSelection)) {\n\t return;\n\t }\n\n\t this._sheet.triggerSelect(new Range(ref, this._sheet));\n\n\t this.originalSelection = ref;\n\n\t this.selection = expanded;\n\n\t if (changeActiveCell !== false) {\n\t if (ref.isCell()) {\n\t // when selecting part of a merged cell, i.e. A1:B2 is merged and select(B2)\n\t // is requested, mark A1 as the actually active cell.\n\t // https://github.com/telerik/kendo/issues/7698\n\t this._sheet.forEachMergedCell(ref, function(merged){\n\t ref = merged.topLeft;\n\t });\n\t this.activeCell(ref);\n\t } else {\n\t ref = this.selection.lastRange();\n\t if (view && view._sheet === this._sheet && view.panes[0]) {\n\t // we should intersect this ref with the range that's currently on\n\t // screen, so that the view doesn't scroll (that is, keep the activeCell\n\t // visible) - https://github.com/telerik/kendo-ui-core/issues/5182 —\n\t // XXX: fiddling with View internals here is probably bad practice, but\n\t // this whole thing is a mess already, so it can be forgiven. :-/\n\t var panes = view.panes;\n\t var i, pane, rows, cols, visible, newRef;\n\n\t for (i = 0; i < panes.length; i++) {\n\t pane = panes[i];\n\t rows = pane._currentView.rows.values;\n\t cols = pane._currentView.columns.values;\n\n\t visible = new RangeRef(\n\t new CellRef(rows.start, cols.start),\n\t new CellRef(rows.end, cols.end)\n\t );\n\n\t newRef = ref.intersect(visible);\n\n\t if (newRef !== kendo.spreadsheet.NULLREF) {\n\t break;\n\t }\n\t }\n\n\t if (newRef && newRef !== kendo.spreadsheet.NULLREF) {\n\t ref = newRef;\n\t }\n\t }\n\t this.activeCell(ref.first());\n\t }\n\n\t this.selectionRangeIndex = this.selection.size() - 1;\n\t } else {\n\t this._sheet.triggerChange({ selection: true });\n\t }\n\t }\n\n\t return this.selection;\n\t },\n\n\t singleCellSelection: function() {\n\t return this._activeCell.eq(this.selection);\n\t }\n\t });\n\n\t var Sheet = kendo.Observable.extend({\n\t init: function() {\n\t kendo.Observable.prototype.init.call(this);\n\t this._reinit.apply(this, arguments);\n\t },\n\n\n\t events: [\n\t \"changing\",\n\t \"commandRequest\",\n\t \"afterInsertRow\",\n\t \"afterDeleteRow\",\n\t \"insertRow\",\n\t \"insertColumn\",\n\t \"deleteRow\",\n\t \"deleteColumn\",\n\t \"hideRow\",\n\t \"hideColumn\",\n\t \"unhideRow\",\n\t \"unhideColumn\",\n\t \"select\",\n\t \"dataBinding\",\n\t \"dataBound\",\n\t \"progress\"\n\t ],\n\n\t _reinit: function(rowCount, columnCount, rowHeight, columnWidth, headerHeight, headerWidth, defaultCellStyle) {\n\t defaultCellStyle = defaultCellStyle || {};\n\n\t this._defaultCellStyle = {\n\t background: defaultCellStyle.background,\n\t color: defaultCellStyle.color,\n\t fontFamily: defaultCellStyle.fontFamily,\n\t fontSize: defaultCellStyle.fontSize,\n\t italic: defaultCellStyle.italic,\n\t bold: defaultCellStyle.bold,\n\t underline: defaultCellStyle.underline,\n\t wrap: defaultCellStyle.wrap,\n\t verticalAlign: defaultCellStyle.verticalAlign,\n\t textAlign: defaultCellStyle.textAlign\n\t };\n\n\t this._rows = new kendo.spreadsheet.Axis(rowCount, rowHeight);\n\t this._columns = new kendo.spreadsheet.Axis(columnCount, columnWidth);\n\t this._filteredRows = new kendo.spreadsheet.RangeList(0, rowCount - 1, false);\n\t this._mergedCells = [];\n\t this._frozenRows = 0;\n\t this._frozenColumns = 0;\n\t this._suspendChanges = false;\n\t this._filter = null;\n\t this._showGridLines = true;\n\t this._gridLinesColor = null;\n\t this._grid = new kendo.spreadsheet.Grid(this._rows, this._columns, rowCount, columnCount, headerHeight, headerWidth);\n\t this._sheetRef = this._grid.normalize(kendo.spreadsheet.SHEETREF);\n\t this._properties = new kendo.spreadsheet.PropertyBag(rowCount, columnCount, this._defaultCellStyle);\n\t this._sorter = new kendo.spreadsheet.Sorter(this._grid, this._properties.sortable());\n\n\t this._viewSelection = new Selection(this);\n\n\t this._editSelection = new Selection(this);\n\n\t this._formulaSelections = [];\n\t this._drawings = [];\n\t },\n\n\t _selectionState: function() {\n\t return this._inEdit ? this._editSelection : this._viewSelection;\n\t },\n\n\t navigator: function() {\n\t if(!this._navigator) {\n\t this._navigator = new kendo.spreadsheet.SheetNavigator(this);\n\t }\n\t return this._navigator;\n\t },\n\n\t axisManager: function() {\n\t if(!this._axisManager) {\n\t this._axisManager = new kendo.spreadsheet.AxisManager(this);\n\t }\n\n\t return this._axisManager;\n\t },\n\n\t _name: function(value) {\n\t if (!value) {\n\t return this._sheetName;\n\t }\n\n\t this._sheetName = value;\n\n\t return this;\n\t },\n\n\t name: function() {\n\t return this._name();\n\t },\n\n\t _property: function(accessor, value, reason) {\n\t if (value === undefined) {\n\t return accessor();\n\t } else {\n\t accessor(value);\n\n\t return this.triggerChange(reason);\n\t }\n\t },\n\n\t _field: function(name, value, reason) {\n\t if (value === undefined) {\n\t return this[name];\n\t } else {\n\t this[name] = value;\n\n\t return this.triggerChange(reason);\n\t }\n\t },\n\n\t suspendChanges: function(value) {\n\t if (value === undefined) {\n\t return this._suspendChanges;\n\t }\n\n\t this._suspendChanges = value;\n\n\t return this;\n\t },\n\n\t triggerChange: function(reason) {\n\t if (!this._suspendChanges) {\n\t this.trigger(\"change\", reason);\n\t }\n\t return this;\n\t },\n\n\t triggerSelect: function(range) {\n\t this.trigger(\"select\", { range: range });\n\t },\n\n\t setDataSource: function(dataSource, columns) {\n\t if (this.dataSourceBinder) {\n\t this.dataSourceBinder.destroy();\n\t }\n\n\t this.dataSourceBinder = new kendo.spreadsheet.SheetDataSourceBinder({\n\t dataSource: dataSource,\n\t sheet: this,\n\t columns: columns\n\t });\n\n\t this.dataSource = this.dataSourceBinder.dataSource;\n\t },\n\n\t hideColumn: function(columnIndex) {\n\t if (this.trigger(\"hideColumn\", { index: columnIndex })) {\n\t return;\n\t }\n\n\t return this._property(this._columns.hide.bind(this._columns), columnIndex, { layout: true });\n\t },\n\n\t unhideColumn: function(columnIndex) {\n\t if (this.trigger(\"unhideColumn\", { index: columnIndex })) {\n\t return;\n\t }\n\n\t return this._property(this._columns.unhide.bind(this._columns), columnIndex, { layout: true });\n\t },\n\n\t isHiddenColumn: function(columnIndex) {\n\t return this._grid._columns.hidden(columnIndex);\n\t },\n\n\t _copyRange: function(sourceRangeRef, targetRef) {\n\t var grid = this._grid;\n\t var rowCount = grid.rowCount;\n\n\t var nextRefTopLeft = grid.normalize(sourceRangeRef.topLeft);\n\t var nextRefBottomRight = grid.normalize(sourceRangeRef.bottomRight);\n\n\t var nextIndex = nextRefTopLeft.col * rowCount + nextRefTopLeft.row;\n\t var nextBottomIndex = nextRefBottomRight.col * rowCount + nextRefBottomRight.row;\n\n\t var targetIndex = targetRef.col * rowCount + targetRef.row;\n\n\t this._properties.copy(nextIndex, nextBottomIndex, targetIndex);\n\t },\n\n\t _saveModifiedFormulas: function(array, callback) {\n\t var save = MODIFIED_FORMULAS;\n\t MODIFIED_FORMULAS = array;\n\t var ret = callback();\n\t MODIFIED_FORMULAS = save;\n\t return ret;\n\t },\n\n\t _restoreModifiedFormulas: function(array) {\n\t var wb = this._workbook;\n\t array.forEach(function(f){\n\t var sheet = wb.sheetByName(f.sheet), index;\n\t if (f instanceof kendo.spreadsheet.calc.runtime.Formula) {\n\t index = sheet._grid.cellRefIndex(f); // f has row, col\n\t sheet._properties.set(\"formula\", index, index, f);\n\t }\n\t if (f instanceof kendo.spreadsheet.validation.Validation) {\n\t index = sheet._grid.cellRefIndex(f); // f has row, col\n\t sheet._properties.set(\"validation\", index, index, f);\n\t }\n\t });\n\t },\n\n\t _adjustReferences: function(operation, start, delta, mergedCells) {\n\t this._mergedCells = mergedCells.reduce(function(a, ref){\n\t ref = ref.adjust(null, null, null, null, operation == \"row\", start, delta);\n\t if (ref instanceof RangeRef) {\n\t a.push(ref);\n\t }\n\t return a;\n\t }, []);\n\t if (this._workbook) {\n\t var affectedSheet = this._name();\n\t this._workbook._sheets.forEach(function(sheet){\n\t sheet._forFormulas(function(formula){\n\t var prev = formula.adjust(affectedSheet, operation, start, delta);\n\t if (prev && MODIFIED_FORMULAS) {\n\t // if formula.adjust returns non-null,\n\t // that means the formula was indeed\n\t // modified and the returned value is a\n\t // copy of the previous Formula, which we\n\t // can use for undoing the operation.\n\t MODIFIED_FORMULAS.push(prev);\n\t }\n\t });\n\n\t sheet._forValidations(function(validation){\n\t var prev = validation.adjust(affectedSheet, operation, start, delta);\n\t if (prev && MODIFIED_FORMULAS) {\n\t MODIFIED_FORMULAS.push(prev);\n\t }\n\t });\n\t });\n\t this._workbook.adjustNames(affectedSheet, operation == \"row\", start, delta);\n\t }\n\t var selection = this.select();\n\t selection = selection.adjust(null, null, null, null, operation == \"row\", start, delta);\n\t if (selection !== kendo.spreadsheet.NULLREF) {\n\t this.select(selection);\n\t }\n\t // adjust column widths or row heights and hidden attribute\n\t var axis = operation == \"col\" ? this._columns : this._rows;\n\t axis.adjust(start, delta);\n\n\t if (operation == \"row\") {\n\t if (delta < 0) {\n\t this._filteredRows.copy(start - delta, this._rows._count - 1, start);\n\t } else {\n\t this._filteredRows.copy(start, this._rows._count, start + delta);\n\t this._filteredRows.value(start, start + delta - 1, false);\n\t }\n\t }\n\n\t // adjust drawing anchor cells\n\t this._drawings.forEach(function(drawing){\n\t if (drawing.topLeftCell) {\n\t drawing.topLeftCell = drawing.topLeftCell.adjust(null, null, null, null,\n\t operation == \"row\", start, delta);\n\t }\n\t });\n\t },\n\n\t _forFormulas: function(callback) {\n\t var props = this._properties;\n\t var formulas = props.get(\"formula\").values();\n\t var n = formulas.length;\n\t formulas.forEach(function(f, i){\n\t callback.call(this, f.value, i, n);\n\t }, this);\n\t },\n\n\t _forValidations: function(callback) {\n\t var props = this._properties;\n\t props.get(\"validation\").values().forEach(function(v){\n\t callback.call(this, v.value);\n\t }, this);\n\t },\n\n\t preventInsertRow: function(rowIndex, count) {\n\t if (this.selectedHeaders().allRows) {\n\t return { reason: \"error\", type: \"insertRowWhenColumnIsSelected\" };\n\t }\n\n\t count = count || 1;\n\t var grid = this._grid;\n\t var range = this.range(grid.rowCount - count, 0, count, grid.columnCount);\n\n\t //TODO: Improve has value to return true only if real value is available?\n\t if (range.hasValue()) {\n\t return { reason: \"error\", type: \"shiftingNonblankCells\" };\n\t }\n\n\t return false;\n\t },\n\n\t preventInsertBelowLastRow: function(rowIndex, count) {\n\t count = count || 1;\n\n\t if (rowIndex + count === this._rows._count) {\n\t return { reason: \"error\", type: \"insertRowBelowLastRow\" };\n\t }\n\n\t return false;\n\t },\n\n\t preventInsertColumn: function(colIndex, count) {\n\t if (this.selectedHeaders().allCols) {\n\t return { reason: \"error\", type: \"insertColumnWhenRowIsSelected\" };\n\t }\n\n\t count = count || 1;\n\t var grid = this._grid;\n\t var range = this.range(0, grid.columnCount - count, grid.rowCount, count);\n\n\t //TODO: Improve has value to return true only if real value is available?\n\t if (range.hasValue()) {\n\t return { reason: \"error\", type: \"shiftingNonblankCells\" };\n\t }\n\n\t return false;\n\t },\n\n\t preventInsertAfterLastColumn: function(colIndex, count) {\n\t count = count || 1;\n\n\t if (colIndex + count === this._columns._count) {\n\t return { reason: \"error\", type: \"insertColAfterLastCol\" };\n\t }\n\n\t return false;\n\t },\n\n\t insertRow: function(rowIndex, skipDataSourceInsert) {\n\t var result = this.preventInsertRow(rowIndex);\n\n\t if (result) {\n\t throw new Error(\"Shifting nonblank cells off the worksheet is not supported!\");\n\t }\n\n\t if (this.trigger(\"insertRow\", { index: rowIndex })) {\n\t return;\n\t }\n\n\t this.batch(function() {\n\n\t var grid = this._grid;\n\t var columnCount = grid.columnCount;\n\t var rowCount = grid.rowCount;\n\n\t var frozenRows = this.frozenRows();\n\n\t if (rowIndex < frozenRows) {\n\t this.frozenRows(frozenRows + 1);\n\t }\n\n\t var mergedCells = this._mergedCells.slice();\n\n\t for (var ci = 0; ci < columnCount; ci++) {\n\t var ref = new RangeRef(new CellRef(rowIndex, ci), new CellRef(rowIndex, ci));\n\n\t var topLeft = grid.normalize(ref.topLeft);\n\t var bottomRight = grid.normalize(ref.bottomRight);\n\n\t var nextRef = new RangeRef(\n\t new CellRef(topLeft.row, topLeft.col),\n\t new CellRef(rowCount - 2, bottomRight.col)\n\t );\n\n\t this._copyRange(nextRef, new CellRef(topLeft.row + 1, topLeft.col));\n\n\t new Range(ref, this).clear({ clearAll: true, keepBorders: true });\n\t }\n\n\t this._adjustReferences(\"row\", rowIndex, 1, mergedCells);\n\t }, {\n\t recalc: true,\n\t layout: true,\n\t insertRow: { index: rowIndex },\n\t ref: new RangeRef(new CellRef(rowIndex, 0), new CellRef(Infinity, Infinity))\n\t });\n\n\t if (!skipDataSourceInsert) {\n\t this.trigger(\"afterInsertRow\", { index: rowIndex });\n\t }\n\n\t return this;\n\t },\n\n\t isEnabledRow: function(rowIndex) {\n\t var ref = new RangeRef(new CellRef(rowIndex, 0), new CellRef(rowIndex, this._grid.columnCount));\n\t return new Range(ref, this).enable();\n\t },\n\n\t deleteRow: function(rowIndex, skipDataSourceDelete) {\n\t if (!this.isEnabledRow(rowIndex)) {\n\t return this;\n\t }\n\n\t if (this.trigger(\"deleteRow\", { index: rowIndex })) {\n\t return;\n\t }\n\n\t this.batch(function() {\n\t var grid = this._grid;\n\t var columnCount = grid.columnCount;\n\n\t var frozenRows = this.frozenRows();\n\t if (rowIndex < frozenRows) {\n\t this.frozenRows(frozenRows - 1);\n\t }\n\n\t var mergedCells = this._mergedCells.slice();\n\n\t for (var ci = 0; ci < columnCount; ci++) {\n\t var ref = new RangeRef(new CellRef(rowIndex, ci), new CellRef(rowIndex, ci));\n\n\t new Range(ref, this).clear({ clearAll: true, keepBorders: true });\n\n\t var topLeft = grid.normalize(ref.topLeft);\n\t var bottomRight = grid.normalize(ref.bottomRight);\n\n\t var nextRef = new RangeRef(\n\t new CellRef(topLeft.row + 1, topLeft.col),\n\t new CellRef(Infinity, bottomRight.col)\n\t );\n\n\t this._copyRange(nextRef, topLeft);\n\n\t var nextRefBottomRight = grid.normalize(nextRef.bottomRight);\n\n\t new Range(new RangeRef(nextRefBottomRight, nextRefBottomRight), this).clear();\n\t }\n\n\t this._adjustReferences(\"row\", rowIndex, -1, mergedCells);\n\t }, {\n\t recalc: true,\n\t layout: true,\n\t deleteRow: { index: rowIndex },\n\t ref: new RangeRef(new CellRef(rowIndex, 0), new CellRef(Infinity, Infinity))\n\t });\n\n\t if (!skipDataSourceDelete) {\n\t this.trigger(\"afterDeleteRow\", { index: rowIndex });\n\t }\n\n\t return this;\n\t },\n\n\t insertColumn: function(columnIndex) {\n\t if (this.trigger(\"insertColumn\", { index: columnIndex })) {\n\t return;\n\t }\n\n\t this.batch(function() {\n\t var grid = this._grid;\n\t var columnCount = grid.columnCount;\n\n\t var frozenColumns = this.frozenColumns();\n\n\t if (columnIndex < frozenColumns) {\n\t this.frozenColumns(frozenColumns + 1);\n\t }\n\n\t var mergedCells = this._mergedCells.slice();\n\n\t for (var ci = columnCount; ci >= columnIndex; ci--) {\n\t var ref = new RangeRef(new CellRef(0, ci), new CellRef(Infinity, ci));\n\n\t new Range(ref, this).clear({ clearAll: true, keepBorders: true });\n\n\t if (ci == columnIndex) {\n\t break;\n\t }\n\n\t var topLeft = grid.normalize(ref.topLeft);\n\t var bottomRight = grid.normalize(ref.bottomRight);\n\n\t var nextRef = new RangeRef(\n\t new CellRef(topLeft.row, topLeft.col - 1),\n\t new CellRef(bottomRight.row, bottomRight.col - 1)\n\t );\n\n\t this._copyRange(nextRef, topLeft);\n\t }\n\n\t this._adjustReferences(\"col\", columnIndex, 1, mergedCells);\n\t }, {\n\t recalc: true,\n\t layout: true,\n\t insertColumn: { index: columnIndex },\n\t ref: new RangeRef(new CellRef(0, columnIndex), new CellRef(Infinity, Infinity))\n\t });\n\n\t return this;\n\t },\n\n\t isEnabledColumn: function(columnIndex) {\n\t var ref = new RangeRef(new CellRef(0, columnIndex), new CellRef(Infinity, columnIndex));\n\t return new Range(ref, this).enable();\n\t },\n\n\t deleteColumn: function(columnIndex) {\n\t if (!this.isEnabledColumn(columnIndex)) {\n\t return this;\n\t }\n\n\t if (this.trigger(\"deleteColumn\", { index: columnIndex })) {\n\t return;\n\t }\n\n\t this.batch(function() {\n\t var grid = this._grid;\n\t var columnCount = grid.columnCount;\n\n\t var frozenColumns = this.frozenColumns();\n\n\t if (columnIndex < frozenColumns) {\n\t this.frozenColumns(frozenColumns - 1);\n\t }\n\n\t var mergedCells = this._mergedCells.slice();\n\n\t for (var ci = columnIndex; ci < columnCount; ci++) {\n\t var ref = new RangeRef(new CellRef(0, ci), new CellRef(Infinity, ci));\n\n\t new Range(ref, this).clear({ clearAll: true, keepBorders: true });\n\n\t if (ci == columnCount - 1) {\n\t break;\n\t }\n\n\t var topLeft = grid.normalize(ref.topLeft);\n\t var bottomRight = grid.normalize(ref.bottomRight);\n\n\t var nextRef = new RangeRef(\n\t new CellRef(topLeft.row, topLeft.col + 1),\n\t new CellRef(bottomRight.row, bottomRight.col + 1)\n\t );\n\n\t this._copyRange(nextRef, topLeft);\n\t }\n\n\t this._adjustReferences(\"col\", columnIndex, -1, mergedCells);\n\t }, {\n\t recalc: true,\n\t layout: true,\n\t deleteColumn: { index: columnIndex },\n\t ref: new RangeRef(new CellRef(0, columnIndex), new CellRef(Infinity, Infinity))\n\t });\n\n\t return this;\n\t },\n\n\t _filterRow: function(rowIndex) {\n\t this._rows.hide(rowIndex);\n\t this._filteredRows.value(rowIndex, rowIndex, true);\n\t this.triggerChange({ layout: true });\n\t },\n\n\t hideRow: function(rowIndex) {\n\t if (this.trigger(\"hideRow\", { index: rowIndex })) {\n\t return;\n\t }\n\t return this._property(this._rows.hide.bind(this._rows), rowIndex, { layout: true });\n\t },\n\n\t unhideRow: function(rowIndex) {\n\t if (this.trigger(\"unhideRow\", { index: rowIndex })) {\n\t return;\n\t }\n\t return this._property(this._rows.unhide.bind(this._rows), rowIndex, { layout: true });\n\t },\n\n\t isHiddenRow: function(rowIndex) {\n\t return this._grid._rows.hidden(rowIndex);\n\t },\n\n\t isFilteredRow: function(rowIndex) {\n\t return this._filteredRows.value(rowIndex);\n\t },\n\n\t columnWidth: function(columnIndex, width) {\n\t return this._property(this._columns.value.bind(this._columns, columnIndex, columnIndex), width, { layout: true });\n\t },\n\n\t rowHeight: function(rowIndex, height) {\n\t return this._property(this._rows.value.bind(this._rows, rowIndex, rowIndex), height, { layout: true });\n\t },\n\n\t frozenRows: function(value) {\n\t return this._field(\"_frozenRows\", value, { layout: true });\n\t },\n\n\t frozenColumns: function(value) {\n\t return this._field(\"_frozenColumns\", value, { layout: true });\n\t },\n\n\t showGridLines: function(value) {\n\t return this._field(\"_showGridLines\", value, { layout: true });\n\t },\n\n\t gridLinesColor: function(value) {\n\t return this._field(\"_gridLinesColor\", value, { layout: true });\n\t },\n\n\t _ref: function(row, column, numRows, numColumns) {\n\t var ref = null;\n\n\t if (row instanceof kendo.spreadsheet.Ref) {\n\t return row;\n\t }\n\n\t if (row instanceof kendo.spreadsheet.Range) {\n\t return row._ref.toRangeRef();\n\t }\n\n\t if (typeof row === \"string\") {\n\t ref = kendo.spreadsheet.calc.parseReference(row);\n\t } else {\n\t if (!numRows) {\n\t numRows = 1;\n\t }\n\n\t if (!numColumns) {\n\t numColumns = 1;\n\t }\n\t ref = new RangeRef(new CellRef(row, column), new CellRef(row + numRows - 1, column + numColumns - 1));\n\t }\n\n\t return ref;\n\t },\n\n\t range: function(row, column, numRows, numColumns) {\n\t return new Range(this._ref(row, column, numRows, numColumns), this);\n\t },\n\n\t _getMergedCells: function(range) {\n\t var grid = this._grid;\n\t var primary = {};\n\t var secondary = {};\n\t var hasMerged = false;\n\n\t this.forEachMergedCell(range, function(ref) {\n\t var topLeft = ref.topLeft;\n\t grid.forEach(ref, function(cellRef) {\n\t if (topLeft.eq(cellRef)) {\n\t primary[cellRef.print()] = ref;\n\t hasMerged = true;\n\t } else if (range.contains(cellRef)) {\n\t secondary[cellRef.print()] = topLeft;\n\t hasMerged = true;\n\t }\n\t });\n\t });\n\n\t return { primary: primary, secondary: secondary, hasMerged: hasMerged };\n\t },\n\n\t forEachMergedCell: function(ref, callback) {\n\t var selectAll = false;\n\n\t if (typeof callback === \"undefined\") {\n\t callback = ref;\n\t selectAll = true;\n\t }\n\n\t this._mergedCells.forEach(function(merged) {\n\t if (selectAll || merged.intersects(ref)) {\n\t callback(merged);\n\t }\n\t });\n\t },\n\n\t forEachFilterHeader: function(ref, callback) {\n\t var selectAll = false;\n\n\t if (typeof callback === \"undefined\") {\n\t callback = ref;\n\t selectAll = true;\n\t }\n\n\t if (this._filter) {\n\t var refs = [];\n\n\t // get refs of all columns\n\t this._filter.ref.forEachColumn(function(columnRef) {\n\t if (selectAll || columnRef.intersects(ref)) {\n\t refs.push(columnRef.topLeft);\n\t }\n\t });\n\n\t // filter out merged references\n\t this._mergedCells.forEach(function(merged) {\n\t refs = refs.map(function(ref) {\n\t if (merged.intersects(ref)) {\n\t return merged;\n\t }\n\n\t return ref;\n\t });\n\t });\n\n\t // use only unique refs\n\t refs.reduce(function unique(result, element) {\n\t if (result.indexOf(element) < 0) {\n\t result.push(element);\n\t }\n\n\t return result;\n\t }, []).forEach(callback);\n\t }\n\t },\n\n\t forEach: function(ref, callback) {\n\t var self = this;\n\t function forEachRange(ref) {\n\t if (!(ref instanceof RangeRef)) {\n\t ref = ref.toRangeRef();\n\t }\n\t var topLeft = self._grid.normalize(ref.topLeft);\n\t var bottomRight = self._grid.normalize(ref.bottomRight);\n\t var ci, ri;\n\n\t function doIt(value) {\n\t callback(ri++, ci, value);\n\t }\n\n\t for (ci = topLeft.col; ci <= bottomRight.col; ci++) {\n\t ri = topLeft.row;\n\t var startCellIndex = self._grid.index(ri, ci);\n\t var endCellIndex = self._grid.index(bottomRight.row, ci);\n\t self._properties.forEach(startCellIndex, endCellIndex, doIt);\n\t }\n\t }\n\n\t if (!(ref instanceof RangeRef)) {\n\t ref = self._ref(ref);\n\t }\n\n\t if (ref instanceof UnionRef) {\n\t // _ref() might still return a UnionRef, for instance, if\n\t // `ref` happens to be one. Probably an oversight, but it\n\t // turns out to be useful.\n\t ref.forEach(forEachRange);\n\t } else {\n\t forEachRange(ref);\n\t }\n\t },\n\n\t startResizing: function(initialPosition) {\n\t this._initialPosition = initialPosition;\n\t this._resizeInProgress = true;\n\t },\n\n\t startAutoFill: function() {\n\t this._autoFillInProgress = true;\n\t var selection = this.select();\n\t this._autoFillOrigin = selection;\n\t this._autoFillDest = selection;\n\t this.triggerChange({ selection: true });\n\t },\n\n\t updateAutoFill: function(dest, punch, hint, direction) {\n\t this._autoFillDest = dest;\n\t this._autoFillPunch = punch;\n\t this._autoFillHint = hint;\n\t this._autoFillDirection = direction;\n\t this.triggerChange({ selection: true });\n\t },\n\n\t autoFillRef: function() {\n\t return this._autoFillDest;\n\t },\n\n\t autoFillPunch: function() {\n\t return this._autoFillPunch;\n\t },\n\n\t autoFillInProgress: function() {\n\t return this._autoFillInProgress;\n\t },\n\n\t resizingInProgress: function() {\n\t return this._resizeInProgress;\n\t },\n\n\t draggingInProgress: function() {\n\t return this._draggingInProgress;\n\t },\n\n\t completeResizing: function() {\n\t if (this._resizeInProgress) {\n\t this._resizeInProgress = false;\n\t var hintPosition = this.resizeHintPosition();\n\n\t if (this._initialPosition && hintPosition) {\n\t var handlePosition = this.resizeHandlePosition();\n\t if (handlePosition.col !== -Infinity) {\n\t this.trigger(\"commandRequest\", {\n\t command: \"ColumnWidthCommand\",\n\t options: {\n\t target: handlePosition.col,\n\t value: this.columnWidth(handlePosition.col) - (this._initialPosition.x - hintPosition.x)\n\t }\n\t });\n\t } else {\n\t this.trigger(\"commandRequest\", {\n\t command: \"RowHeightCommand\",\n\t options: {\n\t target: handlePosition.row,\n\t value: this.rowHeight(handlePosition.row) - (this._initialPosition.y - hintPosition.y)\n\t }\n\t });\n\t }\n\t } else {\n\t this.trigger(\"change\", { resize: true });\n\t }\n\t }\n\t },\n\n\t _renderComment: function(ref) {\n\t var comment = ref ? this.range(ref).comment() : null;\n\t if (comment) {\n\t if (!this._commentRef || !ref.eq(this._commentRef)) {\n\t this._commentRef = ref;\n\t this.trigger(\"change\", { comment: true });\n\t }\n\t } else {\n\t if (this._commentRef) {\n\t this._commentRef = null;\n\t this.trigger(\"change\", { comment: true });\n\t }\n\t }\n\t },\n\n\t resizeHandlePosition: function() {\n\t return this._resizeHandlePosition;\n\t },\n\n\t resizeHintPosition: function(location) {\n\t if (location !== undefined) {\n\t this._resizeHintPosition = location;\n\t this.trigger(\"change\", { resize: true });\n\t }\n\t return this._resizeHintPosition;\n\t },\n\n\t removeResizeHandle: function() {\n\t if (this._resizeHandlePosition) {\n\t this._resizeHintPosition = undefined;\n\t this._resizeHandlePosition = undefined;\n\t this._initialPosition = undefined;\n\t this.trigger(\"change\", { resize: true });\n\t }\n\t },\n\n\t positionResizeHandle: function(ref) {\n\t this._resizeHandlePosition = ref;\n\t this.trigger(\"change\", { resize: true });\n\t },\n\n\t startDragging: function(data) {\n\t this._draggingInProgress = data;\n\t },\n\n\t completeDragging: function() {\n\t var drag = this._draggingInProgress;\n\t if (drag) {\n\t this._draggingInProgress = null;\n\t var drawing = drag.drawing;\n\t if (drawing.eq(drag.copy)) {\n\t return;\n\t }\n\t if (drawing.topLeftCell) {\n\t // adjust reference - in case the top-left corner\n\t // was moving, select the cell beneath it.\n\t var box = this.drawingBoundingBox(drawing);\n\t var row = this._rows.indexVisible(box.top);\n\t var col = this._columns.indexVisible(box.left);\n\t var ref = new CellRef(row, col);\n\t var refBox = this.refBoundingBox(ref);\n\t drawing.offsetX = box.left - refBox.left;\n\t drawing.offsetY = box.top - refBox.top;\n\t drawing.topLeftCell = ref;\n\t this.triggerChange({ dragging: true });\n\t }\n\t this.trigger(\"commandRequest\", {\n\t command: \"DrawingUpdateCommand\",\n\t options: {\n\t sheet : this,\n\t drawing : drawing,\n\t previous : drag.copy\n\t }\n\t });\n\t }\n\t },\n\n\t startSelection: function(view) {\n\t if (this.frozenRows() || this.frozenColumns()) {\n\t this._currentView = null;\n\t } else if (view && view._sheet === this) {\n\t this._currentView = view;\n\t }\n\t this._selectionInProgress = true;\n\t },\n\n\t completeSelection: function() {\n\t if (this._selectionInProgress) {\n\t this._selectionInProgress = false;\n\t this._resizeHintPosition = undefined;\n\t this.trigger(\"change\", { selection: true });\n\t }\n\t if (this._autoFillInProgress) {\n\t this._autoFillInProgress = false;\n\t var dest = this._autoFillDest;\n\t var origin = this._autoFillOrigin;\n\n\t if (this._autoFillPunch) { // we just clear data here\n\t this.trigger(\"commandRequest\", {\n\t command: \"ClearContentCommand\", options: { operatingRange: this.range(this._autoFillPunch) }\n\t });\n\t } else {\n\t if (!dest.eq(origin)) {\n\t this.trigger(\"commandRequest\", {\n\t command: \"AutoFillCommand\", options: { operatingRange: this.range(dest), origin: this.range(origin) }\n\t });\n\t } else {\n\t this.triggerChange({ selection: true });\n\t }\n\t }\n\n\t this._autoFillDest = null;\n\t this._autoFillPunch = null;\n\t this._autoFillOrigin = null;\n\n\t this.select(dest);\n\t }\n\t },\n\n\t selectionInProgress: function() {\n\t return this._selectionInProgress;\n\t },\n\n\t select: function(ref, changeActiveCell) {\n\t var selectionState = this._selectionState();\n\n\t var expandedRef;\n\n\t if (ref) {\n\t ref = this._ref(ref);\n\t ref = this._grid.normalize(ref);\n\t expandedRef = this._grid.isAxis(ref) ? ref : this.unionWithMerged(ref);\n\t }\n\n\t return selectionState.select(ref, expandedRef, changeActiveCell, this._currentView);\n\t },\n\n\t originalSelect: function() {\n\t return this._selectionState().originalSelection;\n\t },\n\n\t currentSelectionRange: function() {\n\t return this._selectionState().currentSelectionRange();\n\t },\n\n\t currentOriginalSelectionRange: function() {\n\t return this._selectionState().currentOriginalNavigationRange();\n\t },\n\n\t currentNavigationRange: function() {\n\t return this._selectionState().currentNavigationRange();\n\t },\n\n\t nextNavigationRange: function() {\n\t return this._selectionState().nextNavigationRange();\n\t },\n\n\t previousNavigationRange: function() {\n\t return this._selectionState().previousNavigationRange();\n\t },\n\n\t selectionRangeIndex: function() {\n\t return this._selectionState().selectionRangeIndex;\n\t },\n\n\t activeCell: function(ref) {\n\t return this._selectionState().activeCell(ref);\n\t },\n\n\t originalActiveCell: function() {\n\t return this._selectionState().originalActiveCell;\n\t },\n\n\t singleCellSelection: function() {\n\t return this._selectionState().singleCellSelection();\n\t },\n\n\t unionWithMerged: function(ref) {\n\t var mergedCells = this._mergedCells;\n\n\t return ref.map(function(ref) {\n\t return ref.toRangeRef().union(mergedCells);\n\t });\n\t },\n\n\t trim: function(ref) {\n\t var trims = [];\n\t var grid = this._grid;\n\t this._properties.forEachProperty(function(property) {\n\t trims.push(grid.trim(ref, property.list));\n\t });\n\t return this.unionWithMerged(ref.topLeft.toRangeRef().union(trims));\n\t },\n\n\t focus: function(ref) {\n\t if (ref) {\n\t this._focus = ref.toRangeRef();\n\t } else {\n\t var focus = this._focus;\n\t this._focus = null;\n\t return focus;\n\t }\n\t },\n\n\t activeCellSelection: function() {\n\t return new Range(this._grid.normalize(this.activeCell()), this);\n\t },\n\n\t selection: function() {\n\t return new Range(this._grid.normalize(this._selectionState().selection), this);\n\t },\n\n\t selectedHeaders: function() {\n\t var selection = this.select();\n\n\t var rows = {};\n\t var cols = {};\n\t var allCols = false;\n\t var allRows = false;\n\t var maxRow = this._grid.rowCount - 1;\n\t var maxCol = this._grid.columnCount - 1;\n\n\t selection.forEach(function(ref) {\n\t var i;\n\t var rowState = \"partial\";\n\t var colState = \"partial\";\n\t ref = ref.toRangeRef();\n\n\t var bottomRight = ref.bottomRight;\n\t var topLeft = ref.topLeft;\n\n\t var rowSelection = topLeft.col <= 0 && bottomRight.col >= maxCol;\n\t var colSelection = topLeft.row <= 0 && bottomRight.row >= maxRow;\n\n\t if (colSelection) { //column selection\n\t allRows = true;\n\t colState = \"full\";\n\t }\n\n\t if (rowSelection) { //row selection\n\t allCols = true;\n\t rowState = \"full\";\n\t }\n\n\t if (!colSelection) { //column selection\n\t for (i = topLeft.row; i <= bottomRight.row; i++) {\n\t if (rows[i] !== \"full\") {\n\t rows[i] = rowState;\n\t }\n\t }\n\t }\n\n\t if (!rowSelection) {\n\t for (i = topLeft.col; i <= bottomRight.col; i++) {\n\t if (cols[i] !== \"full\") {\n\t cols[i] = colState;\n\t }\n\t }\n\t }\n\t });\n\n\t return {\n\t rows: rows,\n\t cols: cols,\n\t allRows: allRows,\n\t allCols: allCols,\n\t all: allRows && allCols\n\t };\n\t },\n\n\t isInEditMode: function(isInEdit) {\n\t if (isInEdit === undefined) {\n\t return this._inEdit;\n\t }\n\n\t this._inEdit = isInEdit;\n\n\t if (isInEdit) {\n\t this._editSelection.selection = this._viewSelection.selection.clone();\n\t this._editSelection.originalSelection = this._viewSelection.originalSelection.clone();\n\t this._editSelection._activeCell = this._viewSelection._activeCell.clone();\n\t this._editSelection.originalActiveCell = this._viewSelection.originalActiveCell.clone();\n\t }\n\t },\n\n\t _setFormulaSelections: function(selection) {\n\t this._formulaSelections = (selection || []).slice();\n\t this.triggerChange({ selection: true });\n\t },\n\n\t _viewActiveCell: function() {\n\t return this._viewSelection._activeCell.toRangeRef();\n\t },\n\n\t toJSON: function() {\n\t var positions = {};\n\n\t var rows = this._rows.toJSON(\"height\", positions);\n\t var columns = this._columns.toJSON(\"width\", {});\n\t var viewSelection = this._viewSelection;\n\t var hyperlinks = [];\n\t var defaultCellStyle = this._defaultCellStyle || {};\n\n\t function clearDefaultStyle(cell) {\n\t Object.keys(defaultCellStyle).forEach(function(key){\n\t if (cell[key] === defaultCellStyle[key]) {\n\t delete cell[key];\n\t }\n\t });\n\t }\n\n\t this.forEach(kendo.spreadsheet.SHEETREF, function(row, col, cell) {\n\t clearDefaultStyle(cell);\n\n\t if (Object.keys(cell).length === 0) {\n\t return;\n\t }\n\n\t if (cell.link) {\n\t hyperlinks.push({\n\t ref : kendo.spreadsheet.Ref.display(null, row, col),\n\t target : cell.link\n\t });\n\t }\n\n\t var position = positions[row];\n\n\t if (position === undefined) {\n\t position = rows.length;\n\t rows.push({ index: row });\n\t positions[row] = position;\n\t }\n\n\t row = rows[position];\n\n\t cell.index = col;\n\n\t if (row.cells === undefined) {\n\t row.cells = [];\n\t }\n\n\t if (cell.formula) {\n\t // stringify Formula object.\n\t if (cell.formula.arrayFormulaRange) {\n\t cell.formula = {\n\t src: cell.formula.toString(),\n\t ref: cell.formula.arrayFormulaRange.toString()\n\t };\n\t } else {\n\t cell.formula = cell.formula.toString();\n\t }\n\t }\n\n\t if (cell.validation) {\n\t cell.validation = cell.validation.toJSON();\n\t }\n\n\t if (cell.color) {\n\t cell.color = kendo.parseColor(cell.color).toCss();\n\t }\n\n\t if (cell.background) {\n\t cell.background = kendo.parseColor(cell.background).toCss();\n\t }\n\n\t if (cell.borderTop && cell.borderTop.color) {\n\t cell.borderTop.color = kendo.parseColor(cell.borderTop.color).toCss();\n\t }\n\n\t if (cell.borderBottom && cell.borderBottom.color) {\n\t cell.borderBottom.color = kendo.parseColor(cell.borderBottom.color).toCss();\n\t }\n\n\t if (cell.borderRight && cell.borderRight.color) {\n\t cell.borderRight.color = kendo.parseColor(cell.borderRight.color).toCss();\n\t }\n\n\t if (cell.borderLeft && cell.borderLeft.color) {\n\t cell.borderLeft.color = kendo.parseColor(cell.borderLeft.color).toCss();\n\t }\n\n\t row.cells.push(cell);\n\t });\n\n\t var json = {\n\t name: this._name(),\n\t rows: rows,\n\t columns: columns,\n\t selection: viewSelection.selection.toString(),\n\t activeCell: viewSelection.activeCell().toString(),\n\t frozenRows: this.frozenRows(),\n\t frozenColumns: this.frozenColumns(),\n\t showGridLines: this.showGridLines(),\n\t gridLinesColor: this.gridLinesColor(),\n\t mergedCells: this._mergedCells.map(function(ref) {\n\t return ref.toString();\n\t }),\n\t hyperlinks: hyperlinks,\n\t defaultCellStyle: defaultCellStyle,\n\t drawings: this._drawings.map(function(dr){\n\t return dr.toJSON();\n\t })\n\t };\n\n\t if (this._sort) {\n\t json.sort = {\n\t ref: this._sort.ref.toString(),\n\t columns: this._sort.columns.map(function(column) {\n\t return {\n\t index: column.index,\n\t ascending: column.ascending\n\t };\n\t })\n\t };\n\t }\n\n\t if (this._filter) {\n\t json.filter = {\n\t ref: this._filter.ref.toString(),\n\t columns: this._filter.columns.map(function(column) {\n\t var filter = column.filter.toJSON();\n\t filter.index = column.index;\n\t return filter;\n\t })\n\t };\n\t }\n\n\t return json;\n\t },\n\n\t fromJSON: function(json) {\n\t this.batch(function() {\n\t if (json.name !== undefined) {\n\t this._name(json.name);\n\t }\n\n\t if (json.frozenColumns !== undefined) {\n\t this.frozenColumns(json.frozenColumns);\n\t }\n\n\t if (json.frozenRows !== undefined) {\n\t this.frozenRows(json.frozenRows);\n\t }\n\n\t if (json.columns !== undefined) {\n\t this._columns.fromJSON(\"width\", json.columns);\n\t }\n\n\t if (json.rows !== undefined) {\n\t this._rows.fromJSON(\"height\", json.rows);\n\n\t for (var ri = 0; ri < json.rows.length; ri++) {\n\t var row = json.rows[ri];\n\t var rowIndex = row.index;\n\n\t if (rowIndex === undefined) {\n\t rowIndex = ri;\n\t }\n\n\t if (row.cells) {\n\t for (var ci = 0; ci < row.cells.length; ci++) {\n\t var cell = row.cells[ci];\n\t var columnIndex = cell.index;\n\n\t if (columnIndex === undefined) {\n\t columnIndex = ci;\n\t }\n\n\t if (cell.formula) {\n\t var isArray = typeof cell.formula != \"string\";\n\t var src = isArray ? cell.formula.src : cell.formula;\n\t var formula = this._compileFormula(rowIndex, columnIndex, src);\n\t if (isArray) {\n\t formula.setArrayFormulaRange(\n\t kendo.spreadsheet.calc.parseReference(cell.formula.ref));\n\t }\n\t cell.formula = formula;\n\t }\n\n\t if (cell.validation) {\n\t cell.validation = this._compileValidation(rowIndex, columnIndex, cell.validation);\n\t }\n\n\t this._properties.fromJSON(this._grid.index(rowIndex, columnIndex), cell);\n\t }\n\t }\n\t }\n\t }\n\n\t if (json.drawings) {\n\t this._drawings = json.drawings.map(Drawing.fromJSON);\n\t }\n\n\t if (json.selection) {\n\t this._viewSelection.selection =\n\t this._viewSelection.originalSelection = this._ref(json.selection);\n\t }\n\n\t if (json.activeCell) {\n\t var activeCellRef = this._ref(json.activeCell);\n\n\t this._viewSelection._activeCell = activeCellRef.toRangeRef();\n\t this._viewSelection.originalActiveCell = activeCellRef.first();\n\t }\n\n\n\t if (json.mergedCells) {\n\t json.mergedCells.forEach(function(ref) {\n\t this.range(ref).merge();\n\t }, this);\n\t }\n\n\t if (json.sort) {\n\t this._sort = {\n\t ref: this._ref(json.sort.ref),\n\t columns: json.sort.columns.slice(0)\n\t };\n\t }\n\n\t if (json.filter) {\n\t var ref = json.filter.ref;\n\t var columns = json.filter.columns === undefined ? [] : json.filter.columns;\n\n\t if (!ref) {\n\t kendo.logToConsole(\"Dropping filter for sheet '\" + json.name + \"' due to missing ref\");\n\t } else {\n\t this._filter = {\n\t ref: this._ref(ref),\n\t columns: columns.map(function(column) {\n\t return {\n\t index: column.index,\n\t filter: kendo.spreadsheet.Filter.create(column)\n\t };\n\t })\n\t };\n\n\t this._refreshFilter();\n\t }\n\t }\n\n\t if (json.showGridLines !== undefined) {\n\t this._showGridLines = json.showGridLines;\n\t }\n\n\t this._gridLinesColor = json.gridLinesColor;\n\t });\n\n\t this._rows._refresh();\n\t this._columns._refresh();\n\t },\n\n\t formula: function(ref) {\n\t return this._properties.get(\"formula\", this._grid.cellRefIndex(ref));\n\t },\n\n\t validation: function(ref) {\n\t return this._properties.get(\"validation\", this._grid.cellRefIndex(ref));\n\t },\n\n\t // NOTE: resetFormulas should be called first. We don't do it in this\n\t // function because it should be done from the Workbook object for all\n\t // sheets.\n\t resetFormulas: function() {\n\t this._forFormulas(function(formula){\n\t formula.reset();\n\t });\n\t },\n\n\t resetValidations: function() {\n\t this._forValidations(function(validation){\n\t validation.reset();\n\t });\n\t },\n\n\t recalc: function(context, callback) {\n\t var formulas = this._properties.get(\"formula\").values();\n\t var count = formulas.length, pending = 0, i = 0;\n\t if (!count && callback) {\n\t return callback();\n\t }\n\t function next() {\n\t pending--;\n\t if (i == count && !pending) {\n\t callback();\n\t }\n\t }\n\t while (i < count) {\n\t pending++;\n\t formulas[i++].value.exec(context, callback ? next : null);\n\t }\n\t },\n\n\t revalidate: function(context) {\n\t var self = this;\n\t this._forValidations(function(validation){\n\t var cellRef = new CellRef(validation.row, validation.col);\n\t var ref = new RangeRef(cellRef, cellRef);\n\t validation.exec(context, self._get(ref, \"value\"), self._get(ref, \"format\"));\n\t });\n\t },\n\n\t _value: function(row, col, value) {\n\t var index = this._grid.index(row, col);\n\n\t if (value !== undefined) {\n\t this._properties.set(\"value\", index, index, value);\n\t } else {\n\t return this._properties.get(\"value\", index);\n\t }\n\t },\n\n\t _validation: function(row, col) {\n\t var index = this._grid.index(row, col);\n\n\t return this._properties.get(\"validation\", index);\n\t },\n\n\t _compileValidation: function(row, col, validation) {\n\t if (validation instanceof kendo.spreadsheet.validation.Validation) {\n\t // do not alter an existing object.\n\t return validation.clone(this._name(), row, col);\n\t }\n\n\t if (validation.from != null) { // jshint ignore: line\n\t validation.from = (validation.from + \"\").replace(/^=/, \"\");\n\t }\n\n\t if (validation.to != null) { // jshint ignore: line\n\t validation.to = (validation.to + \"\").replace(/^=/, \"\");\n\t }\n\n\t return kendo.spreadsheet.validation.compile(this._name(), row, col, validation);\n\t },\n\n\t _compileFormula: function(row, col, f) {\n\t f = f.replace(/^=/, \"\");\n\t f = kendo.spreadsheet.calc.parseFormula(this._name(), row, col, f);\n\t return kendo.spreadsheet.calc.compile(f);\n\t },\n\n\t _copyValuesInRange: function (topLeft, bottomRight, value, property) {\n\t var ci, start, end;\n\n\t for (ci = topLeft.col; ci <= bottomRight.col; ci++) {\n\t start = this._grid.index(topLeft.row, ci);\n\t end = this._grid.index(bottomRight.row, ci);\n\t for (var index = start, row = topLeft.row; index <= end; ++index, ++row) {\n\t // Even if it's the same formula in multiple cells, we\n\t // need to have different Formula objects, hence cloning\n\t // it. Don't worry, clone() is fast.\n\t value = value.clone(this._name(), row, ci);\n\t this._properties.set(property, index, index, value);\n\t }\n\t }\n\t return value;\n\t },\n\n\t _set: function(ref, name, value) {\n\t var topLeft = this._grid.normalize(ref.topLeft);\n\t var bottomRight = this._grid.normalize(ref.bottomRight);\n\t var ci, start, end;\n\n\t if (typeof value == \"number\") {\n\t // Apparently, Excel (and LibreOffice and Google\n\t // Sheets) will limit precision to 14 digits; type:\n\t // -4.2524999999999995 and you get -4.2525. The\n\t // formula engine already does something similar for\n\t // intermediate formula results, but we must do it\n\t // here as well for original input values.\n\t value = kendo.spreadsheet.calc.runtime.limitPrecision(value);\n\t }\n\n\t if (value && name == \"formula\") {\n\t if (typeof value == \"string\") {\n\t // get Formula object. we don't care about handling errors\n\t // here since it won't be called interactively.\n\t value = this._compileFormula(topLeft.row, topLeft.col, value);\n\t }\n\n\t value = this._copyValuesInRange(topLeft, bottomRight, value, \"formula\");\n\n\t } else if (value && name == \"validation\") {\n\t value = this._compileValidation(topLeft.row, topLeft.col, value);\n\t value = this._copyValuesInRange(topLeft, bottomRight, value, \"validation\");\n\n\t } else {\n\t for (ci = topLeft.col; ci <= bottomRight.col; ci++) {\n\t start = this._grid.index(topLeft.row, ci);\n\t end = this._grid.index(bottomRight.row, ci);\n\t this._properties.set(name, start, end, value);\n\t if (name == \"formula\") {\n\t // removing a formula, must clear value.\n\t this._properties.set(\"value\", start, end, null);\n\t }\n\t }\n\t }\n\t },\n\n\t _get: function(ref, name) {\n\t var topLeft = this._grid.normalize(ref.topLeft);\n\n\t var index = this._grid.index(topLeft.row, topLeft.col);\n\n\t return this._properties.get(name, index);\n\t },\n\n\t batch: function(callback, reason) {\n\t var suspended = this.suspendChanges();\n\n\t this.suspendChanges(true);\n\n\t callback.call(this);\n\n\t return this.suspendChanges(suspended).triggerChange(reason || { recalc: true });\n\t },\n\n\t _sortBy: function(ref, columns) {\n\t var indices = null;\n\n\t columns.forEach(function(column) {\n\t indices = this._sorter.sortBy(ref, column.index, this._properties.get(\"value\"), column.ascending, indices);\n\t }, this);\n\n\t this._sort = {\n\t ref: ref,\n\t columns: columns\n\t };\n\n\t this._refreshFilter();\n\n\t this.forEach(ref, function(row, col, props) {\n\t var formula = props.formula;\n\t if (formula) {\n\t var diff = row - formula.row;\n\t if (diff !== 0) {\n\t var start = diff > 0 ? formula.row : formula.row + diff;\n\t formula.adjust(this.name(), \"row\", start, diff);\n\t }\n\t }\n\t }.bind(this));\n\n\t this.triggerChange({ recalc: true });\n\t },\n\n\t _refreshFilter: function() {\n\t if (this._filter) {\n\t this._filterBy(this._filter.ref, this._filter.columns);\n\t }\n\t },\n\n\t _filterBy: function(ref, columns) {\n\t this.batch(function() {\n\t for (var ri = ref.topLeft.row; ri <= ref.bottomRight.row; ri++) {\n\t if (this.isFilteredRow(ri)) {\n\t this._filteredRows.value(ri, ri, false);\n\t this._rows.unhide(ri);\n\t }\n\t }\n\n\t columns.forEach(function(column) {\n\t // do not filter header row\n\t var columnRef = ref.resize({ top: 1 }).toColumn(column.index);\n\n\t var cells = [];\n\n\t if (columnRef === kendo.spreadsheet.NULLREF) {\n\t return;\n\t }\n\n\t this.forEach(columnRef, function(row, col, cell) {\n\t cell.row = row;\n\t cells.push(cell);\n\t });\n\n\t column.filter.prepare(cells);\n\n\t for (var ci = 0; ci < cells.length; ci++) {\n\t var cell = cells[ci];\n\t var value = column.filter.value(cell);\n\n\t if (column.filter.matches(value) === false) {\n\t this._filterRow(cell.row);\n\t }\n\t }\n\t }, this);\n\n\t this._filter = {\n\t ref: ref,\n\t columns: columns\n\t };\n\t }, { recalc: true, layout: true, filter: true });\n\t },\n\n\t filterColumn: function(ref) {\n\t var filterRef = this.filter().ref;\n\t return ref.toRangeRef().topLeft.col - filterRef.topLeft.col;\n\t },\n\n\t filter: function() {\n\t return this._filter;\n\t },\n\n\t clearFilter: function(spec) {\n\t this._clearFilter(spec instanceof Array ? spec : [spec]);\n\t },\n\n\t _clearFilter: function(indices) {\n\t if (this._filter) {\n\t this.batch(function() {\n\t this._filter.columns = this._filter.columns.filter(function(column) {\n\t return indices.indexOf(column.index) < 0;\n\t });\n\n\t this._refreshFilter();\n\t }, { recalc: true, layout: true, filter: true });\n\t }\n\t },\n\n\t getAxisState: function() {\n\t return {\n\t rows: this._rows.getState(),\n\t columns: this._columns.getState()\n\t };\n\t },\n\n\t setAxisState: function(state) {\n\t this._rows.setState(state.rows);\n\t this._columns.setState(state.columns);\n\t this.triggerChange({ layout: true });\n\t },\n\n\t getState: function() {\n\t return {\n\t rows: this._rows.getState(),\n\t columns: this._columns.getState(),\n\t mergedCells: this._mergedCells.map(function(cell) { return cell.clone(); }),\n\t properties: this._properties.getState()\n\t };\n\t },\n\n\t setState: function(state) {\n\t this._rows.setState(state.rows);\n\t this._columns.setState(state.columns);\n\t this._mergedCells = state.mergedCells;\n\t this._properties.setState(state.properties);\n\t this.triggerChange(kendo.spreadsheet.ALL_REASONS);\n\t },\n\n\t _merge: function(ref) {\n\t var mergedCells = this._mergedCells;\n\n\t var sheet = this;\n\t var mergedRef;\n\t this.batch(function() {\n\t mergedRef = ref.map(function(ref) {\n\t if (ref instanceof kendo.spreadsheet.CellRef) {\n\t return ref;\n\t }\n\n\t var currentRef = ref.toRangeRef().union(mergedCells, function(ref) {\n\t mergedCells.splice(mergedCells.indexOf(ref), 1);\n\t });\n\n\t var range = new Range(currentRef, sheet);\n\t var formula = range._get(\"formula\");\n\t var value = range.value();\n\t var format = range.format();\n\t var background = range.background();\n\n\t range.value(null);\n\t range.format(null);\n\t range.background(null);\n\n\t var topLeft = new Range(currentRef.collapse(), sheet);\n\n\t if (formula) {\n\t topLeft._set(\"formula\", formula);\n\t } else {\n\t topLeft.value(value);\n\t }\n\t topLeft.format(format);\n\t topLeft.background(background);\n\n\t mergedCells.push(currentRef);\n\t return currentRef;\n\t });\n\n\t var viewSelection = sheet._viewSelection;\n\n\t viewSelection.selection = sheet.unionWithMerged(viewSelection.originalSelection);\n\t viewSelection._activeCell = sheet.unionWithMerged(viewSelection.originalActiveCell);\n\t }, { activeCell: true, selection: true });\n\n\t return mergedRef;\n\t },\n\n\t _useCultureDecimals: function() {\n\t return this._workbook && this._workbook.options.useCultureDecimals;\n\t },\n\n\t withCultureDecimals: function(f) {\n\t var dot = \".\";\n\t if (this._useCultureDecimals()) {\n\t dot = kendo.culture().numberFormat[\".\"];\n\t }\n\t return kendo.spreadsheet.calc.withDecimalSeparator(dot, f);\n\t },\n\n\t drawingBoundingBox: function(drawing) {\n\t var left = drawing.offsetX;\n\t var top = drawing.offsetY;\n\t if (drawing.topLeftCell) {\n\t // offsets are relative to cell\n\t left += this._columns.sum(0, drawing.topLeftCell.col - 1);\n\t top += this._rows.sum(0, drawing.topLeftCell.row - 1);\n\t }\n\t return new kendo.spreadsheet.Rectangle(left, top, drawing.width, drawing.height);\n\t },\n\n\t refBoundingBox: function(ref) {\n\t return this._grid.rectangle(ref.toRangeRef());\n\t },\n\n\t addDrawing: function(drw, activate) {\n\t if (!(drw instanceof Drawing)) {\n\t drw = new Drawing(drw);\n\t }\n\t this._drawings.push(drw);\n\t if (activate) {\n\t this._activeDrawing = drw;\n\t }\n\t this.triggerChange({ layout: true });\n\t return drw;\n\t },\n\n\t removeDrawing: function(drawing) {\n\t var pos = this._drawings.indexOf(drawing);\n\t if (pos >= 0) {\n\t this._drawings.splice(pos, 1);\n\t this.triggerChange({ layout: true });\n\t }\n\t },\n\n\t usesImage: function(img) {\n\t for (var i = this._drawings.length; --i >= 0;) {\n\t if (this._drawings[i].image === img) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t },\n\n\t isMerged: function(ref) {\n\t var merged = this._mergedCells;\n\t for (var i = merged.length; --i >= 0;) {\n\t if (merged[i].eq(ref)) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t }\n\t });\n\n\t var Drawing = kendo.Class.extend({\n\t init: function Drawing(args) {\n\t this.reset(args);\n\t },\n\n\t toJSON: function() {\n\t return {\n\t topLeftCell: this.topLeftCell.toString(),\n\t offsetX: this.offsetX,\n\t offsetY: this.offsetY,\n\t width: this.width,\n\t height: this.height,\n\t image: this.image,\n\t opacity: this.opacity\n\t };\n\t },\n\n\t clone: function() {\n\t return new Drawing(this);\n\t },\n\n\t reset: function(dr) {\n\t var anchor = dr.topLeftCell;\n\t if (typeof anchor == \"string\") {\n\t anchor = kendo.spreadsheet.calc.parseReference(anchor);\n\t }\n\t this.topLeftCell = anchor;\n\t this.offsetX = dr.offsetX || 0;\n\t this.offsetY = dr.offsetY || 0;\n\t this.width = dr.width;\n\t this.height = dr.height;\n\t this.image = dr.image;\n\t this.opacity = dr.opacity != null ? dr.opacity : 1;\n\t },\n\n\t eq: function(dr) {\n\t return ((!this.topLeftCell && !dr.topLeftCell)\n\t || (this.topLeftCell && dr.topLeftCell\n\t && this.topLeftCell.eq(dr.topLeftCell)))\n\t && this.offsetX === dr.offsetX\n\t && this.offsetY === dr.offsetY\n\t && this.width === dr.width\n\t && this.height === dr.height\n\t && this.image === dr.image\n\t && this.opacity === dr.opacity;\n\t }\n\t });\n\n\t Drawing.fromJSON = function(args) {\n\t return new Drawing(args);\n\t };\n\n\t kendo.spreadsheet.Sheet = Sheet;\n\t kendo.spreadsheet.Drawing = Drawing;\n\t})(kendo);\n\n\t}, __webpack_require__(3));\n\n\n/***/ }),\n\n/***/ 1674:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./validation\");\n\n/***/ })\n\n/******/ });"],"sourceRoot":""}