{"version":3,"sources":["webpack:///./node_modules/@progress/kendo-ui/js/spreadsheet/view.js","webpack:///./node_modules/@progress/kendo-ui/js/spreadsheet/workbook.js"],"names":["module","exports","modules","installedModules","__webpack_require__","moduleId","id","loaded","call","m","c","p","0","3","Error","20","1035","1662","1682","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","f","define","apply","undefined","kendo","$","jQuery","CellRef","spreadsheet","DOT","RESIZE_HANDLE_WIDTH","EDIT_BUTTON_WIDTH","ERROR","viewClassNames","view","fixedContainer","editContainer","scroller","viewSize","clipboard","cellEditor","barEditor","topCorner","filterHeadersWrapper","filterRange","filterButton","filterButtonActive","horizontalResize","verticalResize","icon","iconFilterDefault","sheetsBar","sheetsBarActive","sheetsBarInactive","cellContextMenu","rowHeaderContextMenu","colHeaderContextMenu","drawingContextMenu","selectElementContents","el","sel","window","getSelection","removeAllRanges","range","document","createRange","selectNodeContents","addRange","cellBefore","table","row","cells","trs","children","length","cellAbove","prevRow","index","cellBorder","value","size","color","asURL","link","test","drawCell","collection","cell","cls","showGrid","maybeLink","style","textDecoration","underline","dom","element","href","target","shouldDraw","validation","background","merged","comment","defaultBorder","parseColor","toHSV","v","toCssRgba","outline","backgroundColor","fontFamily","italic","fontStyle","textAlign","bold","fontWeight","fontSize","wrap","whiteSpace","overflowWrap","wordWrap","left","top","width","height","data","type","format","Math","floor","formatting","__dataType","html","text","draw","applyIndent","classNames","paneClassNames","push","enable","verticalAlign","className","properties","title","message","join","div","addCell","borderRight","borderRightColor","borderBottom","borderBottomColor","border","sibling","td","borderLeft","attr","borderLeftColor","borderTop","borderTopColor","messages","nameBox","errors","openUnsupported","shiftingNonblankCells","insertColumnWhenRowIsSelected","insertRowWhenColumnIsSelected","filterRangeContainingMerges","sortRangeContainingMerges","cantSortMultipleSelection","cantSortNullRef","cantSortMixedCells","validationError","cannotModifyDisabled","insertRowBelowLastRow","insertColAfterLastCol","tabs","home","insert","menus","HtmlTable","Class","extend","init","this","cols","_height","_width","addColumn","col","visible","addRow","tr","rowIndex","Node","toDomTree","x","y","filter","offset","ci","forEach","splice","role","CELL_CONTEXT_MENU","ROW_HEADER_CONTEXT_MENU","COL_HEADER_CONTEXT_MENU","DRAWING_CONTEXT_MENU","ContextMenu","ui","VIEW_CONTENTS","template","within","min","max","View","options","_chrome","_dialogs","append","_formulaInput","wrapper","find","container","firstChild","tree","Tree","clipboardContents","editor","SheetEditor","_sheetsbar","contextMenuConfig","animation","showOn","enableClipboard","isClipboardDeactivated","removeAttr","_resize","actionBar","formulaBar","parents","outerHeight","_outerHeight","tabstripHeight","tabstrip","formulaBarHeight","sheetsBarHeight","sheetsbar","quickAccessAdjust","prependTo","nameEditor","appendTo","NameEditor","FormulaBar","toolbar","_tabstrip","formulaInput","FormulaInput","autoScale","openDialog","bind","SheetsBar","name","destroy","remove","Array","content","TabStrip","dataTextField","dataContentField","dataSource","toolbarOptions","select","_executeCommand","e","_sheet","trigger","workbook","_workbook","_view","sheet","activeCellRectangle","cellRectangle","_viewActiveCell","_rectangle","pane","ref","_grid","boundingRectangle","toRangeRef","isColumnResizer","_headerWidth","columns","frozen","scrollLeft","_columns","locate","w","abs","isHiddenColumn","isRowResizer","_headerHeight","rows","scrollTop","_rows","h","isHiddenRow","isFilterIcon","self","theGrid","util","withExit","exit","forEachFilterHeader","rect","filterIconRect","intersects","isAutoFill","selection","rectangle","right","bottom","isEditButton","ed","activeCellCustomEditor","r","_editorInLastColumn","drawingAt","drawings","_drawings","i","d","box","drawingBoundingBox","drawing","drx","dry","objectAt","noDrawing","object","grid","clientWidth","clientHeight","paneAt","startX","startY","indexVisible","column","selecting","selectionInProgress","Infinity","panes","containingPane","contains","headerWidth","headerHeight","refresh","reason","refreshTools","activeCell","sheetSelection","renderSheets","sheets","sheetIndex","totalHeight","totalWidth","layout","frozenColumns","frozenRows","_pane","_destroyFilterMenu","_focus","createFilterMenu","Range","filterMenu","FilterMenu","_filterMenu","selectClipboardContents","focus","scrollIntoView","willScroll","boundaries","scrollBoundaries","scrollBottom","scrollRight","_destroyDialog","pop","openCustomEditor","first","edit","callback","parse","command","operatingRange","editRange","property","withCultureDecimals","dialog","dialogs","create","open","showError","reopenEditor","currentDialogs","errorMessages","hasOpenedError","focusButton","cont","sender","on","ev","keyCode","keys","ESC","close","onClose","dlg","_retry","registered","dialogOptions","body","activate","_filterMenuColumn","render","is","scrollbarSize","support","scrollbar","contentWidth","contentHeight","resizeDirection","resizingInProgress","resizeHandlePosition","toggleClass","isActive","args","toplevelElements","resizeHintPosition","renderResizeHint","css","toggleTooltip","resize","draggingInProgress","isInEditMode","renderClipboardContents","horizontal","Pane","resizeHint","resizeHintVertical","resizeHintHandle","resizeHintMarker","normalize","status","canCopy","multiSelection","trim","selectionView","rangeDimensions","tmp","_getMergedCells","primaryMergedCells","primary","secondaryMergedCells","secondary","location","print","topLeft","mergedCell","colspan","rowspan","browser","msie","empty","_uid","rowCount","columnCount","vaxis","haxis","vborder","hborder","rowHeader","columnHeader","mergedCellsWrapper","selectionWrapper","autoFillWrapper","single","resizeHandle","columnResizeHandle","rowResizeHandle","selectionHighlight","series","isVisible","_currentView","_currentRect","_selectedHeaders","selectedHeaders","renderData","_activeDrawing","renderSelection","renderAutoFill","renderEditorSelection","renderFilterHeaders","hasRowHeader","rowOffset","leftColumn","rowHeight","headerClassName","hasColumnHeader","columnOffset","topRow","Ref","display","columnWidth","position","renderResizeHandle","paneClasses","itemSelection","allHeaders","allRows","allCols","all","prev","doLayout","forScreen","showGridLines","_showGridLines","xCoords","borderColor","gridLinesColor","yCoords","borders","Borders","activeCellRange","absRow","absCol","topLeftCell","concat","_activeFormulaColor","_directionClasses","singleCellSelection","add","_commentRef","ttOffset","vert","a","b","rendered","borderWidth","transform","horiz","renderDrawings","toDiv","image","backgroundImage","imageUrl","opacity","drawingResizeHandles","_start","BUTTON_SIZE","BUTTON_OFFSET","Rectangle","filtered","some","classes","button","_addDiv","filterColumn","selections","_formulaSelections","NULLREF","colorClass","selectionClasses","autoFillPunch","_renderCustomEditorButton","autoFillRectangle","autoFillInProgress","autoFillRef","punch","direction","_autoFillDirection","cssClass","bottomRight","hint","_autoFillHint","_axis","_count","collapse","btnClass","isLastColumn","_buttonOutOfVisiblePane","btn","activeFormulaSelection","colorClasses","active","cellClasses","move","mergedCellLeft","mergedCellTop","_ref","1683","1628","1656","1684","Formula","calc","runtime","CalcError","loadBinary","url","xhr","XMLHttpRequest","onload","response","getResponseHeader","onerror","responseType","send","defaultSheetName","Workbook","Observable","fn","_sheets","_images","_imgID","_sheetsSearchCache","insertSheet","undoRedoStack","UndoRedoStack","_onUndoRedo","_context","FormulaContext","_validationContext","ValidationFormulaContext","_names","Object","fromJSON","_clipboard","Clipboard","unbind","events","_sheetChanging","preventDefault","_sheetChange","_sheetInsertRow","_sheetInsertColumn","_sheetDeleteRow","_sheetDeleteColumn","_sheetHideRow","_sheetHideColumn","_sheetUnhideRow","_sheetUnhideColumn","_sheetSelect","_sheetDataBinding","_sheetDataBound","_sheetProgress","that","setTimeout","toggle","_sheetCommandRequest","_inputForRef","input","execute","commandOptions","activeSheet","origin","_editRange","result","exec","cannotUndo","cleanupImages","resetFormulas","resetValidations","recalc","revalidate","sheetByName","triggerChange","ALL_REASONS","moveSheetToIndex","toIndex","fromIndex","sheetName","insertIndex","getUniqueSheetName","sheetNameSuffix","Sheet","defaultCellStyle","_name","_bindSheetEvents","setDataSource","slice","sheetByIndex","toLowerCase","idx","renameSheet","newSheetName","oldSheetName","_forFormulas","formula","forEachName","def","nameref","undefineName","nameDefinition","removeSheet","newSheet","_clearSheets","json","images","isNaN","num","parseFloat","isFinite","sheetParamsFromJSON","names","defineName","hidden","toJSON","map","val","JSON","stringify","localName","saveJSON","deferred","Deferred","ids","usesImage","count","img","blob","reader","FileReader","next","readAsDataURL","promise","resolve","fromFile","file","readExcel","reject","saveAsExcel","excel","readAsArrayBuffer","ooxml","saveAs","dataURI","forceProxy","toDataURL","toBlob","fileName","proxyURL","parts","loop","SHEETREF","group","nameForRef","str","parseNameDefinition","nameValue","arguments","func","adjustNames","affectedSheet","forRow","start","delta","adjust","addImage","String","URL","createObjectURL","revokeObjectURL","stack","or","ri","j","PDFMixin","prototype","saveAsPDF","progress","_drawPDF","then","root","pdf","exportPDF","exportPDFToBlob","done","proxyTarget","fail","err","area","1685"],"mappings":"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","file":"js/chunk-vendors~ced70f93.644249f9.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__(1682);\n\tmodule.exports = __webpack_require__(1682);\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/***/ 1035:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"../kendo.menu\");\n\n/***/ }),\n\n/***/ 1662:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"../util/main\");\n\n/***/ }),\n\n/***/ 1682:\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__(1035), __webpack_require__(1683), __webpack_require__(1662) ], __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 CellRef = kendo.spreadsheet.CellRef;\n\t var DOT = \".\";\n\t var RESIZE_HANDLE_WIDTH = 7;\n\t var EDIT_BUTTON_WIDTH = 20;\n\t var ERROR = \"Error\";\n\t var viewClassNames = {\n\t view: \"k-spreadsheet-view\",\n\t fixedContainer: \"k-spreadsheet-fixed-container\",\n\t editContainer: \"k-spreadsheet-edit-container\",\n\t scroller: \"k-spreadsheet-scroller\",\n\t viewSize: \"k-spreadsheet-view-size\",\n\t clipboard: \"k-spreadsheet-clipboard\",\n\t cellEditor: \"k-spreadsheet-cell-editor\",\n\t barEditor: \"k-spreadsheet-editor\",\n\t topCorner: \"k-spreadsheet-top-corner\",\n\t filterHeadersWrapper: \"k-filter-wrapper\",\n\t filterRange: \"k-filter-range\",\n\t filterButton: \"k-spreadsheet-filter\",\n\t filterButtonActive: \"k-state-active\",\n\t horizontalResize: \"k-horizontal-resize\",\n\t verticalResize: \"k-vertical-resize\",\n\t icon: \"k-icon\",\n\t iconFilterDefault: \"k-i-arrow-60-down\",\n\t sheetsBar: \"k-spreadsheet-sheets-bar\",\n\t sheetsBarActive: \"k-spreadsheet-sheets-bar-active\",\n\t sheetsBarInactive: \"k-spreadsheet-sheets-bar-inactive\",\n\t cellContextMenu: \"k-spreadsheet-cell-context-menu\",\n\t rowHeaderContextMenu: \"k-spreadsheet-row-header-context-menu\",\n\t colHeaderContextMenu: \"k-spreadsheet-col-header-context-menu\",\n\t drawingContextMenu: \"k-spreadsheet-drawing-context-menu\"\n\t };\n\n\t kendo.spreadsheet.messages.view = {\n\t nameBox: \"Name Box\",\n\t errors: {\n\t openUnsupported: \"Unsupported format. Please select an .xlsx file.\",\n\t shiftingNonblankCells: \"Cannot insert cells due to data loss possibility. Select another insert location or delete the data from the end of your worksheet.\",\n\t insertColumnWhenRowIsSelected: \"Cannot insert column when all columns are selected.\",\n\t insertRowWhenColumnIsSelected: \"Cannot insert row when all rows are selected.\",\n\t filterRangeContainingMerges: \"Cannot create a filter within a range containing merges\",\n\t sortRangeContainingMerges: \"Cannot sort a range containing merges\",\n\t cantSortMultipleSelection: \"Cannot sort multiple selection\",\n\t cantSortNullRef: \"Cannot sort empty selection\",\n\t cantSortMixedCells: \"Cannot sort range containing cells of mixed shapes\",\n\t validationError: \"The value that you entered violates the validation rules set on the cell.\",\n\t cannotModifyDisabled: \"Cannot modify disabled cells.\",\n\t insertRowBelowLastRow: \"Cannot insert row below the last row.\",\n\t insertColAfterLastCol: \"Cannot insert column to the right of the last column.\"\n\t },\n\t tabs: {\n\t home: \"Home\",\n\t insert: \"Insert\",\n\t data: \"Data\"\n\t }\n\t };\n\n\t kendo.spreadsheet.messages.menus = {\n\t \"cut\" : \"Cut\",\n\t \"copy\" : \"Copy\",\n\t \"paste\" : \"Paste\",\n\t \"merge\" : \"Merge\",\n\t \"unmerge\" : \"Unmerge\",\n\t \"delete\" : \"Delete\",\n\t \"hide\" : \"Hide\",\n\t \"unhide\" : \"Unhide\",\n\t \"bringToFront\" : \"Bring to front\",\n\t \"sendToBack\" : \"Send to back\"\n\t };\n\n\t function selectElementContents(el) {\n\t var sel = window.getSelection();\n\t sel.removeAllRanges();\n\n\t var range = document.createRange();\n\t range.selectNodeContents(el);\n\n\t sel.addRange(range);\n\t }\n\n\t function cellBefore(table, row) {\n\t var cells = table.trs[row].children;\n\t return cells[cells.length - 2];\n\t }\n\n\t function cellAbove(table, row) {\n\t var prevRow = table.trs[row-1];\n\t var index = table.trs[row].children.length-1;\n\n\t if (prevRow && index >= 0) {\n\t return prevRow.children[index];\n\t }\n\t }\n\n\t function cellBorder(value) {\n\t return (value.size || 1) + \"px solid \" + (value.color || \"#000\");\n\t }\n\n\t function asURL(link) {\n\t if (!/:\\/\\//.test(link)) {\n\t link = \"http://\" + link;\n\t }\n\t return link;\n\t }\n\n\t function drawCell(collection, cell, cls, showGrid) {\n\t function maybeLink(el) {\n\t var link = cell.link;\n\t if (!link) {\n\t if (typeof cell.value == \"object\") {\n\t link = cell.value.link;\n\t }\n\t }\n\t if (link) {\n\t var style = {\n\t textDecoration: \"none\"\n\t };\n\t if (cell.color) {\n\t style.color = cell.color;\n\t }\n\t if (cell.underline) {\n\t style.textDecoration = \"underline\";\n\t }\n\t return kendo.dom.element(\"a\", {\n\t href : asURL(link),\n\t style : style,\n\t target : \"_blank\" // XXX: customizable?\n\t }, el ? [ el ] : []);\n\t }\n\t return el;\n\t }\n\n\t var shouldDraw = (cell.value != null || (cell.validation != null && !cell.validation.value) || // jshint ignore:line\n\t cell.background || cell.merged || cell.comment);\n\t if (!cls && !shouldDraw) {\n\t return;\n\t }\n\n\t var style = {};\n\t var background = cell.background;\n\t if (background) {\n\t var defaultBorder = background;\n\t if (showGrid) {\n\t // darken\n\t defaultBorder = kendo.parseColor(defaultBorder).toHSV();\n\t defaultBorder.v *= 0.9;\n\t defaultBorder = defaultBorder.toCssRgba();\n\t }\n\t defaultBorder = cellBorder({ color: defaultBorder });\n\t style.outline = defaultBorder;\n\t }\n\n\t if (background) {\n\t style.backgroundColor = background;\n\t }\n\n\t if (cell.color) {\n\t style.color = cell.color;\n\t }\n\n\t if (cell.fontFamily) {\n\t style.fontFamily = cell.fontFamily;\n\t }\n\n\t if (cell.underline) {\n\t style.textDecoration = \"underline\";\n\t }\n\n\t if (cell.italic) {\n\t style.fontStyle = \"italic\";\n\t }\n\n\t if (cell.textAlign) {\n\t style.textAlign = cell.textAlign;\n\t }\n\n\t if (cell.bold) {\n\t style.fontWeight = \"bold\";\n\t }\n\n\t if (cell.fontSize) {\n\t style.fontSize = cell.fontSize + \"px\";\n\t }\n\n\t if (cell.wrap === true) {\n\t style.whiteSpace = \"pre-wrap\";\n\t style.overflowWrap = \"break-word\";\n\t style.wordWrap = \"break-word\";\n\t } else {\n\t style.whiteSpace = \"pre\";\n\t style.overflowWrap = \"normal\";\n\t style.wordWrap = \"normal\";\n\t }\n\n\t style.left = (cell.left + 1) + \"px\";\n\t style.top = (cell.top + 1) + \"px\";\n\t style.width = (cell.width - 1) + \"px\";\n\t style.height = (cell.height - 1) + \"px\";\n\n\t var data = cell.value, type = typeof data, format = cell.format;\n\t if (!format && type == \"number\" && data != Math.floor(data)) {\n\t format = \"0.##############\";\n\t }\n\t if (format && data != null) { // jshint ignore:line\n\t data = kendo.spreadsheet.formatting.format(data, format);\n\t if (data.__dataType) {\n\t type = data.__dataType;\n\t }\n\t } else if (data !== null && data !== undefined) {\n\t if(cell.html){\n\t data = kendo.dom.html(data);\n\t } else {\n\t data = kendo.dom.text(data);\n\t }\n\t }\n\n\t if (!style.textAlign) {\n\t switch (type) {\n\t case \"number\":\n\t case \"date\":\n\t case \"percent\":\n\t case \"currency\":\n\t style.textAlign = \"right\";\n\t break;\n\t case \"boolean\":\n\t style.textAlign = \"center\";\n\t break;\n\t }\n\t }\n\n\t // defined in print.js\n\t kendo.spreadsheet.draw.applyIndent(cell, style);\n\n\t var classNames = [ paneClassNames.cell ];\n\n\t if (cls) {\n\t classNames.push(cls);\n\t }\n\t if (cell.enable === false) {\n\t classNames.push(\"k-state-disabled\");\n\t }\n\t if (cell.merged) {\n\t classNames.push(\"k-spreadsheet-merged-cell\");\n\t }\n\t if (cell.comment) {\n\t classNames.push(\"k-spreadsheet-has-comment\");\n\t }\n\n\t var verticalAlign = cell.verticalAlign || \"bottom\";\n\n\t if (verticalAlign && data) {\n\t data = kendo.dom.element(\"div\", { className: \"k-vertical-align-\" + verticalAlign }, [ maybeLink(data) ]);\n\t } else {\n\t data = maybeLink(data);\n\t }\n\n\t var children = data ? [ data ] : [];\n\t var properties = {\n\t style: style\n\t };\n\t var validation = cell.validation;\n\t if (validation && !validation.value) {\n\t children.push(kendo.dom.element(\"span\", { className: \"k-dirty\" }));\n\t classNames.push(\"k-dirty-cell\");\n\n\t properties.title = validation.message;\n\t }\n\t properties.className = classNames.join(\" \");\n\n\t var div = kendo.dom.element(\"div\", properties, children);\n\t collection.push(div);\n\t return div;\n\t }\n\n\t function addCell(table, row, cell) {\n\t var style = {};\n\n\t if (cell.background) {\n\t style.backgroundColor = cell.background;\n\t }\n\n\t if (cell.color) {\n\t style.color = cell.color;\n\t }\n\n\t if (cell.fontFamily) {\n\t style.fontFamily = cell.fontFamily;\n\t }\n\n\t if (cell.underline) {\n\t style.textDecoration = \"underline\";\n\t }\n\n\t if (cell.italic) {\n\t style.fontStyle = \"italic\";\n\t }\n\n\t if (cell.textAlign) {\n\t style.textAlign = cell.textAlign;\n\t }\n\n\t if (cell.verticalAlign) {\n\t style.verticalAlign = (cell.verticalAlign === \"center\") ? \"middle\" : cell.verticalAlign;\n\t }\n\n\t if (cell.bold) {\n\t style.fontWeight = \"bold\";\n\t }\n\n\t if (cell.fontSize) {\n\t style.fontSize = cell.fontSize + \"px\";\n\t }\n\n\t if (cell.wrap === true) {\n\t style.whiteSpace = \"pre-wrap\";\n\t }\n\n\t if (cell.borderRight) {\n\t style.borderRight = cellBorder(cell.borderRight);\n\t } else if (cell.background) {\n\t style.borderRightColor = cell.background;\n\t }\n\n\t if (cell.borderBottom) {\n\t style.borderBottom = cellBorder(cell.borderBottom);\n\t } else if (cell.background) {\n\t style.borderBottomColor = cell.background;\n\t }\n\n\t var data = cell.value, type = typeof data, format = cell.format;\n\t if (!format && type == \"number\" && data != Math.floor(data)) {\n\t format = \"0.##############\";\n\t }\n\t if (format && data != null) { // jshint ignore:line\n\t data = kendo.spreadsheet.formatting.format(data, format);\n\t if (data.__dataType) {\n\t type = data.__dataType;\n\t }\n\t }\n\n\t if (!style.textAlign) {\n\t switch (type) {\n\t case \"number\":\n\t case \"date\":\n\t case \"percent\":\n\t case \"currency\":\n\t style.textAlign = \"right\";\n\t break;\n\t case \"boolean\":\n\t style.textAlign = \"center\";\n\t break;\n\t }\n\t }\n\n\t var className = null;\n\n\t if (cell.enable === false) {\n\t className = \"k-state-disabled\";\n\t }\n\n\t var td = table.addCell(row, data, style, className, cell.validation);\n\n\t var border, sibling;\n\n\t if (cell.borderLeft) {\n\t sibling = cellBefore(table, row);\n\t border = cellBorder(cell.borderLeft);\n\t if (sibling && border) {\n\t sibling.attr.style.borderRight = border;\n\t }\n\t } else if (cell.background) {\n\t style.borderLeftColor = cell.background;\n\t }\n\n\t if (cell.borderTop) {\n\t sibling = cellAbove(table, row);\n\t border = cellBorder(cell.borderTop);\n\t if (sibling && border) {\n\t sibling.attr.style.borderBottom = border;\n\t }\n\t } else if (cell.background) {\n\t style.borderTopColor = cell.background;\n\t }\n\n\t return td;\n\t }\n\n\t var HtmlTable = kendo.Class.extend({\n\t init: function() {\n\t this.cols = [];\n\t this.trs = [];\n\t this._height = 0;\n\t this._width = 0;\n\t },\n\n\t addColumn: function(width) {\n\t this._width += width;\n\n\t var col = kendo.dom.element(\"col\", { style: { width: width + \"px\" } });\n\n\t col.visible = width > 0;\n\n\t this.cols.push(col);\n\t },\n\n\t addRow: function(height) {\n\t var attr = null;\n\n\t attr = { style: { height: height + \"px\" } };\n\n\t this._height += height;\n\n\t var tr = kendo.dom.element(\"tr\", attr);\n\n\t tr.visible = height > 0;\n\n\t this.trs.push(tr);\n\t },\n\n\t addCell: function(rowIndex, text, style, className, validation) {\n\t if (text === null || text === undefined) {\n\t text = \"\";\n\t }\n\t if (!(text instanceof kendo.dom.Node)) {\n\t text = kendo.dom.text(text);\n\t }\n\n\t var children = [ text ];\n\t var properties = { style: style };\n\n\t if (validation && !validation.value) {\n\t children.push(kendo.dom.element(\"span\", { className: \"k-dirty\" }));\n\n\t className = (className || \"\") + (className ? \" \" : \"\") + \"k-dirty-cell\";\n\t properties.title = validation.message;\n\t }\n\n\t if (className) {\n\t properties.className = className;\n\t }\n\t var td = kendo.dom.element(\"td\", properties, children);\n\n\t this.trs[rowIndex].children.push(td);\n\t return td;\n\t },\n\n\t toDomTree: function(x, y, className) {\n\t this.trs = this.trs.filter(function(tr) {\n\t return tr.visible;\n\t });\n\n\t var offset = 0;\n\t this.cols = this.cols.filter(function(col, ci) {\n\t if (!col.visible) {\n\t this.trs.forEach(function(tr) {\n\t tr.children.splice(ci - offset, 1);\n\t });\n\t offset++;\n\t }\n\n\t return col.visible;\n\t }, this);\n\n\t return kendo.dom.element(\"table\", {\n\t style: { left: x + \"px\", top: y + \"px\", height: this._height + \"px\", width: this._width + \"px\" },\n\t className: className,\n\t role: \"presentation\"\n\t },[\n\t kendo.dom.element(\"colgroup\", null, this.cols),\n\t kendo.dom.element(\"tbody\", null, this.trs)\n\t ]);\n\t }\n\t });\n\n\t var CELL_CONTEXT_MENU = '';\n\n\t var ROW_HEADER_CONTEXT_MENU = '';\n\n\t var COL_HEADER_CONTEXT_MENU = '';\n\n\t var DRAWING_CONTEXT_MENU = '';\n\n\t kendo.spreadsheet.ContextMenu = kendo.ui.ContextMenu;\n\n\t var VIEW_CONTENTS = kendo.template('
' +\n\t '
' +\n\t CELL_CONTEXT_MENU + ROW_HEADER_CONTEXT_MENU + COL_HEADER_CONTEXT_MENU + DRAWING_CONTEXT_MENU\n\t );\n\n\t function within(value, min, max) {\n\t return value >= min && value <= max;\n\t }\n\n\t var View = kendo.Class.extend({\n\t init: function(element, options) {\n\t var classNames = View.classNames;\n\n\t this.element = element;\n\n\t this.options = $.extend(true, {\n\t messages: kendo.spreadsheet.messages.view\n\t }, this.options, options);\n\n\t this._chrome();\n\n\t this._dialogs = [];\n\n\t element.append(VIEW_CONTENTS({\n\t classNames: classNames,\n\t messages: kendo.spreadsheet.messages.menus\n\t }));\n\n\t this._formulaInput();\n\n\t this.wrapper = element.find(DOT + classNames.view);\n\t this.container = element.find(DOT + classNames.fixedContainer)[0];\n\t this.scroller = element.find(DOT + classNames.scroller)[0];\n\t this.clipboard = element.find(DOT + classNames.clipboard);\n\n\t this.viewSize = $(this.scroller.firstChild);\n\n\t this.tree = new kendo.dom.Tree(this.container);\n\t this.clipboardContents = new kendo.dom.Tree(this.clipboard[0]);\n\n\t this.editor = new kendo.spreadsheet.SheetEditor(this);\n\n\t this._sheetsbar();\n\n\t var contextMenuConfig = {\n\t target: element,\n\t animation: false,\n\t showOn: \"never\" // this is just an invalid event name to prevent the show\n\t };\n\n\t this.cellContextMenu = new kendo.spreadsheet.ContextMenu(element.find(DOT + classNames.cellContextMenu), contextMenuConfig);\n\n\t this.colHeaderContextMenu = new kendo.spreadsheet.ContextMenu(element.find(DOT + classNames.colHeaderContextMenu), contextMenuConfig);\n\n\t this.rowHeaderContextMenu = new kendo.spreadsheet.ContextMenu(element.find(DOT + classNames.rowHeaderContextMenu), contextMenuConfig);\n\n\t this.drawingContextMenu = new kendo.spreadsheet.ContextMenu(element.find(DOT + classNames.drawingContextMenu), contextMenuConfig);\n\t },\n\n\t enableClipboard: function(enable) {\n\t this.isClipboardDeactivated = !enable;\n\n\t if (enable) {\n\t this.clipboard.attr(\"contenteditable\", enable);\n\t } else {\n\t this.clipboard.removeAttr(\"contenteditable\");\n\t }\n\t },\n\n\t _resize: function() {\n\t var actionBar = $(this.formulaBar.element).parents(\".k-spreadsheet-action-bar\");\n\t var outerHeight = kendo._outerHeight;\n\t var tabstripHeight = this.tabstrip ? outerHeight(this.tabstrip.element) : 0;\n\t var formulaBarHeight = actionBar ? outerHeight(actionBar) : 0;\n\t var sheetsBarHeight = this.sheetsbar ? outerHeight(this.sheetsbar.element) : 0;\n\n\t this.wrapper.height(\n\t this.element.height() -\n\t (tabstripHeight + formulaBarHeight + sheetsBarHeight)\n\t );\n\n\t if (this.tabstrip) {\n\t this.tabstrip.quickAccessAdjust();\n\t }\n\t },\n\n\t _chrome: function() {\n\t var wrapper = $(\"
\").prependTo(this.element);\n\n\t var nameEditor = $(\"
\").appendTo(wrapper);\n\t this.nameEditor = new kendo.spreadsheet.NameEditor(nameEditor, this.options);\n\n\t var formulaBar = $(\"
\").appendTo(wrapper);\n\t this.formulaBar = new kendo.spreadsheet.FormulaBar(formulaBar);\n\n\t if (this.options.toolbar) {\n\t this._tabstrip();\n\t }\n\t },\n\n\t _formulaInput: function() {\n\t var editor = this.element.find(DOT + View.classNames.cellEditor);\n\n\t this.formulaInput = new kendo.spreadsheet.FormulaInput(editor, {\n\t autoScale: true\n\t });\n\t },\n\n\t _sheetsbar: function() {\n\t if (this.options.sheetsbar) {\n\t var options = $.extend(true, {\n\t openDialog: this.openDialog.bind(this)\n\t }, this.options.sheetsbar);\n\n\t this.sheetsbar = new kendo.spreadsheet.SheetsBar(this.element.find(DOT + View.classNames.sheetsBar), options);\n\t }\n\t },\n\n\t _tabstrip: function() {\n\t var messages = this.options.messages.tabs;\n\t var options = $.extend(true, { home: true, insert: true, data: true }, this.options.toolbar);\n\t var tabs = [];\n\n\t if (this.tabstrip) {\n\t this.tabstrip.destroy();\n\t this.element.children(\".k-tabstrip\").remove();\n\t }\n\n\t for (var name in options) {\n\t if (options[name] === true || options[name] instanceof Array) {\n\t tabs.push({ id: name, text: messages[name], content: \"\" });\n\t }\n\t }\n\n\t this.tabstrip = new kendo.spreadsheet.TabStrip($(\"
\").prependTo(this.element), {\n\t animation: false,\n\t dataTextField: \"text\",\n\t dataContentField: \"content\",\n\t dataSource: tabs,\n\t toolbarOptions: options,\n\t view: this\n\t });\n\n\t this.tabstrip.select(0);\n\t },\n\n\t _executeCommand: function(e) {\n\t this._sheet.trigger(\"commandRequest\", e);\n\t },\n\n\t workbook: function(workbook) {\n\t this._workbook = workbook;\n\t workbook._view = this;\n\t this.nameEditor._workbook = workbook;\n\t },\n\n\t sheet: function(sheet) {\n\t this._sheet = sheet;\n\t },\n\n\t activeCellRectangle: function() {\n\t return this.cellRectangle(this._sheet._viewActiveCell());\n\t },\n\n\t _rectangle: function(pane, ref) {\n\t return pane._grid.boundingRectangle(ref.toRangeRef());\n\t },\n\n\t isColumnResizer: function(x, pane, col) {\n\t // relative to content\n\t x -= this._sheet._grid._headerWidth;\n\n\t // add scroll if pane is not frozen\n\t if (!pane._grid.columns.frozen) {\n\t x += this.scroller.scrollLeft;\n\t }\n\n\t col = this._sheet._grid._columns.locate(0, col, function(w){\n\t return Math.abs(x - w) <= RESIZE_HANDLE_WIDTH/2;\n\t });\n\n\t return col !== null && !this._sheet.isHiddenColumn(col) ? col : null;\n\t },\n\n\t isRowResizer: function(y, pane, row) {\n\t // relative to content\n\t y -= this._sheet._grid._headerHeight;\n\n\t // add scroll if pane is not frozen\n\t if (!pane._grid.rows.frozen) {\n\t y += this.scroller.scrollTop;\n\t }\n\n\t row = this._sheet._grid._rows.locate(0, row, function(h){\n\t return Math.abs(y - h) <= RESIZE_HANDLE_WIDTH/2;\n\t });\n\n\t return row !== null && !this._sheet.isHiddenRow(row) ? row : null;\n\t },\n\n\t isFilterIcon: function(x, y, pane, ref) {\n\t var self = this;\n\t var theGrid = pane._grid;\n\t var scrollTop = theGrid.rows.frozen ? 0 : self.scroller.scrollTop;\n\t var scrollLeft = theGrid.columns.frozen ? 0 : self.scroller.scrollLeft;\n\n\t x -= self._sheet._grid._headerWidth - scrollLeft;\n\t y -= self._sheet._grid._headerHeight - scrollTop;\n\n\t return kendo.util.withExit(function(exit){\n\t self._sheet.forEachFilterHeader(ref, function(ref) {\n\t var rect = self._rectangle(pane, ref);\n\t if (pane.filterIconRect(rect).intersects(x, y)) {\n\t exit(true);\n\t }\n\t });\n\t });\n\t },\n\n\t isAutoFill: function(x, y, pane) {\n\t var selection = this._sheet.select();\n\n\t if (selection.size > 1) {\n\t return false;\n\t }\n\n\t x -= this._sheet._grid._headerWidth;\n\t y -= this._sheet._grid._headerHeight;\n\n\t if (!pane._grid.columns.frozen) {\n\t x += this.scroller.scrollLeft;\n\t }\n\n\t if (!pane._grid.rows.frozen) {\n\t y += this.scroller.scrollTop;\n\t }\n\n\t var rectangle = this._rectangle(pane, selection);\n\n\t return Math.abs(rectangle.right - x) < 8 && Math.abs(rectangle.bottom - y) < 8;\n\t },\n\n\t isEditButton: function(x, y, pane) {\n\t var ed = this._sheet.activeCellCustomEditor();\n\t if (ed) {\n\t var r = this.activeCellRectangle();\n\t // XXX: hard-coded button width (20)\n\n\t if (y >= r.top && y <= r.bottom) {\n\t return pane._editorInLastColumn ? x < r.left && x >= r.left - EDIT_BUTTON_WIDTH\n\t : x > r.right && x <= r.right + EDIT_BUTTON_WIDTH;\n\t }\n\t }\n\t },\n\n\t drawingAt: function(x, y, pane) {\n\t x -= this._sheet._grid._headerWidth;\n\t y -= this._sheet._grid._headerHeight;\n\n\t if (!pane._grid.columns.frozen) {\n\t x += this.scroller.scrollLeft;\n\t }\n\n\t if (!pane._grid.rows.frozen) {\n\t y += this.scroller.scrollTop;\n\t }\n\n\t var sheet = this._sheet;\n\t var drawings = this._sheet._drawings;\n\t for (var i = drawings.length; --i >= 0;) {\n\t var d = drawings[i];\n\t var box = sheet.drawingBoundingBox(d);\n\t if (box.intersects(x, y)) {\n\t return {\n\t drawing: d,\n\n\t // also include how far is the drawing's\n\t // top-left from the mouse position, as it's\n\t // not easy to compute some place else.\n\t drx: box.left - x,\n\t dry: box.top - y\n\t };\n\t }\n\t }\n\t },\n\n\t objectAt: function(x, y, noDrawing) {\n\t var grid = this._sheet._grid;\n\t var object, pane;\n\n\t if (x < 0 || y < 0 || x > this.scroller.clientWidth || y > this.scroller.clientHeight) {\n\t object = { type: \"outside\" };\n\t } else if (x < grid._headerWidth && y < grid._headerHeight) {\n\t object = { type: \"topcorner\" };\n\t } else {\n\t pane = this.paneAt(x, y);\n\n\t if (!pane) {\n\t object = { type: \"outside\" };\n\t } else {\n\t if (!noDrawing) {\n\t var drawing = this.drawingAt(x, y, pane);\n\t if (drawing) {\n\t return {\n\t type: \"drawing\",\n\t drawing: drawing.drawing,\n\t drx: drawing.drx,\n\t dry: drawing.dry,\n\t pane: pane,\n\t startX: x,\n\t startY: y\n\t };\n\t }\n\t }\n\n\t var row = pane._grid.rows.indexVisible(y, this.scroller.scrollTop);\n\t var column = pane._grid.columns.indexVisible(x, this.scroller.scrollLeft);\n\n\t var type = \"cell\";\n\t var ref = new CellRef(row, column);\n\t var selecting = this._sheet.selectionInProgress();\n\n\t if (this.isAutoFill(x, y, pane)) {\n\t type = \"autofill\";\n\t } else if (this.isFilterIcon(x, y, pane, ref)) {\n\t type = \"filtericon\";\n\t } else if (!selecting && x < grid._headerWidth) {\n\t type = \"rowheader\";\n\t if ((row = this.isRowResizer(y, pane, row)) !== null) {\n\t ref = new CellRef(row, -Infinity);\n\t type = \"rowresizehandle\";\n\t }\n\t } else if (!selecting && y < grid._headerHeight) {\n\t type = \"columnheader\";\n\t if ((column = this.isColumnResizer(x, pane, column)) !== null) {\n\t ref = new CellRef(-Infinity, column);\n\t type = \"columnresizehandle\";\n\t }\n\t } else if (this.isEditButton(x, y, pane)) {\n\t type = \"editor\";\n\t }\n\n\t object = { type: type, ref: ref };\n\t }\n\t }\n\n\t object.pane = pane;\n\t object.x = x;\n\t object.y = y;\n\t return object;\n\t },\n\n\t paneAt: function(x, y) {\n\t return this.panes.filter(function paneLocationWithin(pane) {\n\t var grid = pane._grid;\n\t return within(y, grid.top, grid.bottom) && within(x, grid.left, grid.right);\n\t })[0];\n\t },\n\n\t containingPane: function(cell) {\n\t return this.panes.filter(function(pane) {\n\t if (pane._grid.contains(cell)) {\n\t return true;\n\t }\n\t return false;\n\t })[0];\n\t },\n\n\t cellRectangle: function(cell) {\n\t var theGrid = this.containingPane(cell)._grid;\n\t var rectangle = this._sheet._grid.rectangle(cell);\n\n\t return rectangle.offset(\n\t theGrid.headerWidth - (theGrid.columns.frozen ? 0 : this.scroller.scrollLeft),\n\t theGrid.headerHeight - (theGrid.rows.frozen ? 0 : this.scroller.scrollTop)\n\t );\n\t },\n\n\t refresh: function(reason) {\n\t var sheet = this._sheet;\n\n\t if (this.tabstrip) {\n\t this.tabstrip.refreshTools(sheet.range(sheet.activeCell()));\n\t }\n\n\t if (reason.sheetSelection && this.sheetsbar) {\n\t this.sheetsbar.renderSheets(this._workbook.sheets(), this._workbook.sheetIndex(this._sheet));\n\t }\n\n\t this._resize();\n\n\t //TODO: refresh sheets list on sheetSelection\n\t this.viewSize[0].style.height = sheet._grid.totalHeight() + \"px\";\n\t this.viewSize[0].style.width = sheet._grid.totalWidth() + \"px\";\n\n\t if (reason.layout) {\n\t var frozenColumns = sheet.frozenColumns();\n\t var frozenRows = sheet.frozenRows();\n\n\t // main or bottom or right pane\n\t this.panes = [ this._pane(frozenRows, frozenColumns) ];\n\n\t // left pane\n\t if (frozenColumns > 0) {\n\t this.panes.push(this._pane(frozenRows, 0, null, frozenColumns));\n\t }\n\n\t // top pane\n\t if (frozenRows > 0) {\n\t this.panes.push(this._pane(0, frozenColumns, frozenRows, null));\n\t }\n\n\t // left-top \"fixed\" pane\n\t if (frozenRows > 0 && frozenColumns > 0) {\n\t this.panes.push(this._pane(0, 0, frozenRows, frozenColumns));\n\t }\n\t }\n\n\t if (reason.filter) {\n\t this._destroyFilterMenu();\n\t }\n\n\t if (reason.activeCell) {\n\t this._focus = sheet.activeCell().toRangeRef();\n\t }\n\t },\n\n\t createFilterMenu: function(column) {\n\t this._destroyFilterMenu();\n\n\t var sheet = this._sheet;\n\t var ref = sheet.filter().ref;\n\t var range = new kendo.spreadsheet.Range(ref, sheet);\n\t var element = $(\"
\").appendTo(this.element);\n\t var options = { column: column, range: range };\n\t var filterMenu = new kendo.spreadsheet.FilterMenu(element, options);\n\n\t this._filterMenu = filterMenu;\n\n\t return filterMenu;\n\t },\n\n\t selectClipboardContents: function() {\n\t if (!this.isClipboardDeactivated) {\n\t this.clipboard.focus();\n\t selectElementContents(this.clipboard[0]);\n\t }\n\t },\n\n\t scrollIntoView: function(cell) {\n\t var willScroll = false;\n\t var theGrid = this.containingPane(cell)._grid;\n\n\t var boundaries = theGrid.scrollBoundaries(cell);\n\n\t var scroller = this.scroller;\n\t var scrollTop = theGrid.rows.frozen ? 0 : scroller.scrollTop;\n\t var scrollLeft = theGrid.columns.frozen ? 0 : scroller.scrollLeft;\n\n\t if (boundaries.top < scrollTop) {\n\t willScroll = true;\n\t scroller.scrollTop = boundaries.scrollTop;\n\t }\n\n\t if (boundaries.bottom > scrollTop) {\n\t willScroll = true;\n\t scroller.scrollTop = boundaries.scrollBottom;\n\t }\n\n\t if (boundaries.left < scrollLeft) {\n\t willScroll = true;\n\t scroller.scrollLeft = boundaries.scrollLeft;\n\t }\n\n\t if (boundaries.right > scrollLeft) {\n\t willScroll = true;\n\t scroller.scrollLeft = boundaries.scrollRight;\n\t }\n\n\t return willScroll;\n\t },\n\n\t _destroyDialog: function() {\n\t this._dialogs.pop();\n\t },\n\n\t openCustomEditor: function() {\n\t var self = this;\n\t var cell = self._sheet.activeCell().first();\n\t var editor = self._sheet.activeCellCustomEditor();\n\t var range = self._sheet.range(cell);\n\t editor.edit({\n\t range : range,\n\t rect : self.activeCellRectangle(),\n\t view : this,\n\t validation : this._sheet.validation(cell),\n\t callback : function(value, parse){\n\t self._executeCommand({\n\t command: \"EditCommand\",\n\t options: {\n\t operatingRange: range,\n\t editRange: range,\n\t property: parse ? \"input\" : \"value\",\n\t value: value\n\t }\n\t });\n\t }\n\t });\n\t },\n\n\t openDialog: function(name, options) {\n\t var sheet = this._sheet;\n\t return sheet.withCultureDecimals(function(){\n\t var dialog = kendo.spreadsheet.dialogs.create(name, options);\n\n\t if (dialog) {\n\t dialog.bind(\"action\", this._executeCommand.bind(this));\n\t dialog.bind(\"deactivate\", this._destroyDialog.bind(this));\n\t this._dialogs.push(dialog);\n\n\t var ref = sheet.activeCell();\n\t var range = new kendo.spreadsheet.Range(ref, sheet);\n\n\t dialog.open(range);\n\t return dialog;\n\t }\n\t }.bind(this));\n\t },\n\n\t showError: function(options, reopenEditor) {\n\t var currentDialogs = this._dialogs;\n\t var errorMessages = this.options.messages.errors;\n\t var hasOpenedError = false;\n\n\t if (currentDialogs.length > 0) {\n\t currentDialogs.forEach(function(dialog) {\n\t if (dialog.options && dialog.options.title === ERROR) {\n\t hasOpenedError = true;\n\t }\n\t });\n\t }\n\t if (hasOpenedError) {\n\t return;\n\t }\n\n\t var focusButton = function(e) {\n\t var cont = e.sender.dialog().element;\n\t cont.find(\".k-button\").first().trigger(\"focus\");\n\t cont.find(\".k-button, input\").on(\"keydown\", function(ev){\n\t if (ev.keyCode == kendo.keys.ESC) {\n\t e.sender.close();\n\t }\n\t });\n\t };\n\n\t var onClose = function(e) {\n\t var dlg = e.sender;\n\t this.selectClipboardContents();\n\t if (dlg._retry && reopenEditor) {\n\t reopenEditor();\n\t }\n\t }.bind(this);\n\n\t if (kendo.spreadsheet.dialogs.registered(options.type)) {\n\t var dialogOptions = {\n\t close: onClose\n\t };\n\n\t if (options.type === \"validationError\") {\n\t dialogOptions = $.extend(dialogOptions, {\n\t title: options.title || \"Error\",\n\t text: options.body ? options.body : errorMessages[options.type],\n\t activate: focusButton\n\t });\n\t }\n\n\t this.openDialog(options.type, dialogOptions);\n\t } else {\n\t this.openDialog(\"message\", {\n\t title : options.title || \"Error\",\n\t text : options.body ? options.body : errorMessages[options.type],\n\t activate: focusButton,\n\t close: onClose\n\t });\n\t }\n\t },\n\n\t destroy: function() {\n\t this._dialogs.forEach(function(dialog) {\n\t dialog.destroy();\n\t });\n\n\t this.cellContextMenu.destroy();\n\t this.rowHeaderContextMenu.destroy();\n\t this.colHeaderContextMenu.destroy();\n\t this.drawingContextMenu.destroy();\n\n\t this.cellContextMenu = this.rowHeaderContextMenu =\n\t this.colHeaderContextMenu =\n\t this.drawingContextMenu = null;\n\n\t if (this.tabstrip) {\n\t this.tabstrip.destroy();\n\t this.tabstrip = null;\n\t }\n\n\t this._destroyFilterMenu();\n\t },\n\n\t _destroyFilterMenu: function() {\n\t if (this._filterMenu) {\n\t this._filterMenu.destroy();\n\t this._filterMenu = undefined;\n\t this._filterMenuColumn = undefined;\n\t }\n\t },\n\n\t render: function(reason) {\n\t if (!this.element.is(\":visible\")) {\n\t return;\n\t }\n\t var sheet = this._sheet;\n\t var focus = sheet.focus();\n\t var scrollbarSize = kendo.support.scrollbar();\n\t var contentWidth = this.wrapper[0].clientWidth - scrollbarSize;\n\t var contentHeight = this.wrapper[0].clientHeight - scrollbarSize;\n\n\t if (focus && this.scrollIntoView(focus)) {\n\t return;\n\t }\n\n\t var resizeDirection =\n\t !sheet.resizingInProgress() ? \"none\" :\n\t sheet.resizeHandlePosition().col === -Infinity ? \"column\" :\n\t \"row\";\n\n\t this.wrapper\n\t .toggleClass(viewClassNames.editContainer, this.editor.isActive())\n\t .toggleClass(viewClassNames.horizontalResize, resizeDirection == \"row\")\n\t .toggleClass(viewClassNames.verticalResize, resizeDirection == \"column\");\n\n\t var grid = sheet._grid;\n\t var content = [];\n\t var args = {\n\t scroller: this.scroller,\n\t toplevelElements: content,\n\t contentWidth: contentWidth,\n\t contentHeight: contentHeight\n\t };\n\t this.panes.forEach(function(pane) {\n\t content.push(pane.render(args));\n\t });\n\n\t var topCorner = kendo.dom.element(\"div\", {\n\t style: { width: grid._headerWidth + \"px\", height: grid._headerHeight + \"px\" },\n\t className: View.classNames.topCorner\n\t });\n\n\t content.push(topCorner);\n\n\t if (sheet.resizeHandlePosition() && sheet.resizeHintPosition()) {\n\t content.push(this.renderResizeHint());\n\t }\n\n\t this.tree.render(content);\n\n\t $(this.container).css({\n\t width: contentWidth,\n\t height: contentHeight\n\t });\n\n\t if (this.editor.isActive()) {\n\t this.editor.toggleTooltip(this.activeCellRectangle());\n\t } else if (!(reason.resize ||\n\t reason.comment ||\n\t sheet.selectionInProgress() ||\n\t sheet.resizingInProgress() ||\n\t sheet.draggingInProgress() ||\n\t sheet.isInEditMode())) {\n\t this.renderClipboardContents();\n\t }\n\t },\n\n\t // this renders the big blue line during resizing\n\t renderResizeHint: function() {\n\t var sheet = this._sheet;\n\t var ref = sheet.resizeHandlePosition();\n\n\t var horizontal = ref.col !== -Infinity;\n\n\t var style;\n\t if (horizontal) {\n\t style = {\n\t height: this.scroller.clientHeight + \"px\",\n\t width: RESIZE_HANDLE_WIDTH + \"px\",\n\t left: sheet.resizeHintPosition().x + \"px\",\n\t top: \"0px\"\n\t };\n\t } else {\n\t style = {\n\t height: RESIZE_HANDLE_WIDTH + \"px\",\n\t width: this.scroller.clientWidth + \"px\",\n\t top: sheet.resizeHintPosition().y + \"px\",\n\t left: \"0px\"\n\t };\n\t }\n\n\t var classNames = Pane.classNames;\n\n\t return kendo.dom.element(\"div\", {\n\t className: classNames.resizeHint + (!horizontal ? \" \" + classNames.resizeHintVertical : \"\"),\n\t style: style\n\t },[\n\t kendo.dom.element(\"div\", { className: classNames.resizeHintHandle }),\n\t kendo.dom.element(\"div\", { className: classNames.resizeHintMarker })\n\t ]);\n\t },\n\n\t renderClipboardContents: function() {\n\t var sheet = this._sheet;\n\t var grid = sheet._grid;\n\n\t // if (sheet._activeDrawing && sheet._activeDrawing.image) {\n\t // var url = this._workbook.imageUrl(sheet._activeDrawing.image);\n\t // var img = kendo.dom.element(\"img\", {\n\t // src: url,\n\t // style: {\n\t // width: sheet._activeDrawing.width + \"px\",\n\t // height: sheet._activeDrawing.height + \"px\"\n\t // }\n\t // });\n\t // this.clipboardContents.render([ img ]);\n\t // this.selectClipboardContents();\n\t // return;\n\t // }\n\n\t var selection = grid.normalize(sheet.select().toRangeRef());\n\t var status = this._workbook.clipboard().canCopy();\n\t if (status.canCopy === false && status.multiSelection) {\n\t this.clipboardContents.render([]);\n\t this.selectClipboardContents();\n\t return;\n\t }\n\n\t selection = sheet.trim(selection);\n\n\t var table = new HtmlTable();\n\n\t var selectionView = grid.rangeDimensions(selection);\n\n\t selectionView.rows.forEach(function(height) {\n\t table.addRow(height);\n\t });\n\n\t selectionView.columns.forEach(function(width) {\n\t table.addColumn(width);\n\t });\n\n\t var tmp = sheet._getMergedCells(selection);\n\t var primaryMergedCells = tmp.primary;\n\t var secondaryMergedCells = tmp.secondary;\n\n\t sheet.forEach(selection, function(row, col, cell) {\n\t var location = new CellRef(row, col).print();\n\n\t if (!secondaryMergedCells[location]) {\n\t var td = addCell(table, row - selection.topLeft.row, cell);\n\n\t var mergedCell = primaryMergedCells[location];\n\n\t if (mergedCell) {\n\t td.attr.colspan = mergedCell.width();\n\t td.attr.rowspan = mergedCell.height();\n\t }\n\t }\n\t });\n\n\t if (kendo.support.browser.msie) {\n\t this.clipboard.empty();\n\t }\n\n\t this.clipboardContents.render([ table.toDomTree(0, 0, \"kendo-clipboard-\" + this._workbook.clipboard()._uid) ]);\n\n\t this.selectClipboardContents();\n\t },\n\n\t _pane: function(row, column, rowCount, columnCount) {\n\t var pane = new Pane(this._sheet, this._sheet._grid.pane({ row: row, column: column, rowCount: rowCount, columnCount: columnCount }));\n\t pane.refresh(this.scroller.clientWidth, this.scroller.clientHeight);\n\t return pane;\n\t }\n\t });\n\n\t var paneClassNames = {\n\t cell: \"k-spreadsheet-cell\",\n\t vaxis: \"k-spreadsheet-vaxis\",\n\t haxis: \"k-spreadsheet-haxis\",\n\t vborder: \"k-spreadsheet-vborder\",\n\t hborder: \"k-spreadsheet-hborder\",\n\t rowHeader: \"k-spreadsheet-row-header\",\n\t columnHeader: \"k-spreadsheet-column-header\",\n\t pane: \"k-spreadsheet-pane\",\n\t data: \"k-spreadsheet-data\",\n\t mergedCell: \"k-spreadsheet-merged-cell\",\n\t mergedCellsWrapper: \"k-merged-cells-wrapper\",\n\t activeCell: \"k-spreadsheet-active-cell\",\n\t selection: \"k-spreadsheet-selection\",\n\t selectionWrapper: \"k-selection-wrapper\",\n\t autoFillWrapper: \"k-auto-fill-wrapper\",\n\t single: \"k-single\",\n\t top: \"k-top\",\n\t right: \"k-right\",\n\t bottom: \"k-bottom\",\n\t left: \"k-left\",\n\t resizeHandle: \"k-resize-handle\",\n\t columnResizeHandle: \"k-column-resize-handle\",\n\t rowResizeHandle: \"k-row-resize-handle\",\n\t resizeHint: \"k-resize-hint\",\n\t resizeHintHandle: \"k-resize-hint-handle\",\n\t resizeHintMarker: \"k-resize-hint-marker\",\n\t resizeHintVertical: \"k-resize-hint-vertical\",\n\t selectionHighlight: \"k-spreadsheet-selection-highlight\",\n\t series: [\n\t \"k-series-a\",\n\t \"k-series-b\",\n\t \"k-series-c\",\n\t \"k-series-d\",\n\t \"k-series-e\",\n\t \"k-series-f\"\n\t ]\n\t };\n\n\t var Pane = kendo.Class.extend({\n\t init: function(sheet, grid) {\n\t this._sheet = sheet;\n\t this._grid = grid;\n\t },\n\n\t refresh: function(width, height) {\n\t this._grid.refresh(width, height);\n\t },\n\n\t isVisible: function(scrollLeft, scrollTop, ref) {\n\t return this._grid.view(scrollLeft, scrollTop).ref.intersects(ref);\n\t },\n\n\t render: function(args) {\n\t var scroller = args.scroller;\n\t var scrollLeft = scroller.scrollLeft;\n\t var scrollTop = scroller.scrollTop;\n\n\t if (scrollTop < 0) {\n\t scrollTop = 0;\n\t }\n\n\t if (scrollLeft < 0) {\n\t scrollLeft = 0;\n\t }\n\n\t var classNames = Pane.classNames;\n\t var sheet = this._sheet;\n\t var grid = this._grid;\n\t var view = grid.view(scrollLeft, scrollTop);\n\t this._currentView = view;\n\t this._currentRect = this._rectangle(view.ref);\n\t this._selectedHeaders = sheet.selectedHeaders();\n\n\t var children = [];\n\n\t children.push(this.renderData(args));\n\n\t if (!sheet._activeDrawing) {\n\t children.push(this.renderSelection(scroller));\n\t }\n\n\t children.push(this.renderAutoFill());\n\n\t children.push(this.renderEditorSelection());\n\n\t children.push(this.renderFilterHeaders());\n\n\t if (grid.hasRowHeader) {\n\t var rowHeader = kendo.dom.element(\"div\", {\n\t className: classNames.rowHeader,\n\t style: {\n\t width: grid.headerWidth + \"px\",\n\t top: view.rowOffset + \"px\"\n\t }\n\t });\n\t children.push(rowHeader);\n\t sheet.forEach(view.ref.leftColumn(), function(row){\n\t if (!sheet.isHiddenRow(row)) {\n\t var text = row + 1, height = sheet.rowHeight(row);\n\t rowHeader.children.push(kendo.dom.element(\"div\", {\n\t className: this.headerClassName(row, \"row\"),\n\t style: {\n\t width: grid.headerWidth + \"px\",\n\t height: height + \"px\"\n\t }\n\t }, [ kendo.dom.element(\"div\", {\n\t className: \"k-vertical-align-center\"\n\t }, [ kendo.dom.text(text+\"\") ])]));\n\t }\n\t }.bind(this));\n\t }\n\n\t if (grid.hasColumnHeader) {\n\t var columnHeader = kendo.dom.element(\"div\", {\n\t className: classNames.columnHeader,\n\t style: {\n\t top: \"0px\",\n\t left: view.columnOffset + \"px\",\n\t width: this._currentRect.width + \"px\",\n\t height: grid.headerHeight + \"px\"\n\t }\n\t });\n\t children.push(columnHeader);\n\t var left = 0;\n\t sheet.forEach(view.ref.topRow(), function(row, col){\n\t if (!sheet.isHiddenColumn(col)) {\n\t var text = kendo.spreadsheet.Ref.display(null, Infinity, col),\n\t width = sheet.columnWidth(col);\n\t columnHeader.children.push(kendo.dom.element(\"div\", {\n\t className: this.headerClassName(col, \"col\"),\n\t style: {\n\t position: \"absolute\",\n\t left: left + \"px\",\n\t width: width + \"px\",\n\t height: grid.headerHeight + \"px\"\n\t }\n\t }, [ kendo.dom.element(\"div\", {\n\t className: \"k-vertical-align-center\"\n\t }, [ kendo.dom.text(text+\"\") ])]));\n\t left += width;\n\t }\n\t }.bind(this));\n\t }\n\n\t if (sheet.resizeHandlePosition() && (grid.hasColumnHeader || grid.hasRowHeader)) {\n\t if (!sheet.resizeHintPosition()) {\n\t this.renderResizeHandle(children);\n\t }\n\t }\n\n\t var paneClasses = [classNames.pane];\n\n\t if (grid.hasColumnHeader) {\n\t paneClasses.push(classNames.top);\n\t }\n\n\t if (grid.hasRowHeader) {\n\t paneClasses.push(classNames.left);\n\t }\n\n\t return kendo.dom.element(\"div\", {\n\t style: grid.style,\n\t className: paneClasses.join(\" \")\n\t }, children);\n\t },\n\n\t headerClassName: function(index, type) {\n\t var selectedHeaders = this._selectedHeaders;\n\n\t var itemSelection;\n\t var allHeaders;\n\n\t if (type === \"row\") {\n\t itemSelection = selectedHeaders.rows[index];\n\t allHeaders = selectedHeaders.allRows;\n\t } else {\n\t itemSelection = selectedHeaders.cols[index];\n\t allHeaders = selectedHeaders.allCols;\n\t }\n\n\t var className = itemSelection || (selectedHeaders.all ? \"full\" : (allHeaders ? \"partial\" : \"none\"));\n\n\t if (className) {\n\t className = \"k-selection-\" + className;\n\t }\n\n\t return className;\n\t },\n\n\t renderData: function(args) {\n\t var sheet = this._sheet;\n\t var view = this._currentView;\n\t var cont = kendo.dom.element(\"div\", {\n\t className: Pane.classNames.data,\n\t style: {\n\t position: \"relative\",\n\t left: view.columnOffset + \"px\",\n\t top: view.rowOffset + \"px\"\n\t }\n\t });\n\t var rect = this._currentRect;\n\t var layout = kendo.spreadsheet.draw.doLayout(sheet, view.ref, { forScreen: true }), prev;\n\t var grid = this._grid;\n\t var showGridLines = sheet._showGridLines;\n\t if (showGridLines) {\n\t // draw axis first\n\t prev = null;\n\t layout.xCoords.forEach(function(x){\n\t if (x !== prev) {\n\t prev = x;\n\t cont.children.push(kendo.dom.element(\"div\", {\n\t className: paneClassNames.vaxis,\n\t style: {\n\t left: x + \"px\",\n\t height: rect.height + \"px\",\n\t borderColor: sheet.gridLinesColor()\n\t }\n\t }));\n\t }\n\t });\n\t prev = null;\n\t layout.yCoords.forEach(function(y){\n\t if (y !== prev) {\n\t prev = y;\n\t cont.children.push(kendo.dom.element(\"div\", {\n\t className: paneClassNames.haxis,\n\t style: {\n\t top: y + \"px\",\n\t width: rect.width + \"px\",\n\t borderColor: sheet.gridLinesColor()\n\t }\n\t }));\n\t }\n\t });\n\t }\n\t var borders = kendo.spreadsheet.draw.Borders();\n\t var activeCellRange = sheet.activeCell().toRangeRef();\n\t var activeCell = activeCellRange.topLeft;\n\n\t layout.cells.forEach(function(cell){\n\t var cls = null;\n\t var absRow = cell.row + view.ref.topLeft.row;\n\t var absCol = cell.col + view.ref.topLeft.col;\n\t if (sheet._activeDrawing) {\n\t var ref = sheet._activeDrawing.topLeftCell;\n\t if (ref && ref.row == absRow && ref.col == absCol) {\n\t cls = \"k-spreadsheet-drawing-anchor-cell\";\n\t }\n\t } else if (absRow == activeCell.row && absCol == activeCell.col) {\n\t // active cell. normally we enter here only once.\n\t cls = [\n\t Pane.classNames.activeCell\n\t ].concat(this._activeFormulaColor(),\n\t this._directionClasses(activeCellRange));\n\t if (sheet.singleCellSelection()) {\n\t cls.push(Pane.classNames.single);\n\t }\n\t cls = cls.join(\" \");\n\t }\n\t borders.add(cell);\n\t drawCell(cont.children, cell, cls, showGridLines);\n\t if (cell.comment && sheet._commentRef &&\n\t absRow == sheet._commentRef.row && absCol == sheet._commentRef.col) {\n\t var ttOffset = 4;\n\t var left = cell.right + grid.left + view.columnOffset + ttOffset;\n\t var style = { top: (cell.top + grid.top + view.rowOffset) + \"px\" };\n\t if (left + 200 > args.contentWidth) {\n\t style.right = (args.contentWidth - grid.left - cell.left - view.columnOffset + ttOffset) + \"px\";\n\t } else {\n\t style.left = left + \"px\";\n\t }\n\t var div = kendo.dom.element(\"div\", {\n\t className: \"k-tooltip k-spreadsheet-cell-comment\",\n\t style: style\n\t }, [ kendo.dom.text(cell.comment) ]);\n\t args.toplevelElements.push(div);\n\t }\n\t }, this);\n\t borders.vert.forEach(function(a){\n\t a.forEach(function(b){\n\t if (!b.rendered) {\n\t b.rendered = true;\n\t var style = {\n\t left : b.x + \"px\",\n\t top : b.top + \"px\",\n\t height : (b.bottom - b.top + 1) + \"px\",\n\t borderWidth : b.size + \"px\",\n\t borderColor : b.color\n\t };\n\t if (b.size != 1) {\n\t style.transform = \"translateX(-\" + (b.size-1)/2 + \"px)\";\n\t }\n\t cont.children.push(kendo.dom.element(\"div\", {\n\t className: paneClassNames.vborder,\n\t style: style\n\t }));\n\t }\n\t });\n\t });\n\t borders.horiz.forEach(function(a){\n\t a.forEach(function(b){\n\t if (!b.rendered) {\n\t b.rendered = true;\n\t var style = {\n\t top : b.y + \"px\",\n\t left : b.left + \"px\",\n\t width : (b.right - b.left) + \"px\",\n\t borderWidth : b.size + \"px\",\n\t borderColor : b.color\n\t };\n\t if (b.size != 1) {\n\t style.transform = \"translateY(-\" + (b.size-1)/2 + \"px)\";\n\t }\n\t cont.children.push(kendo.dom.element(\"div\", {\n\t className: paneClassNames.hborder,\n\t style: style\n\t }));\n\t }\n\t });\n\t });\n\t this.renderDrawings(layout, cont.children);\n\t return cont;\n\t },\n\n\t renderDrawings: function(layout, container) {\n\t var sheet = this._sheet;\n\t var workbook = sheet._workbook;\n\t layout.drawings.forEach(function(d){\n\t var drawing = d.drawing;\n\t var box = d.box;\n\t var div = box.toDiv(\"k-spreadsheet-drawing\");\n\t if (drawing.image) {\n\t div.children.push(kendo.dom.element(\"div\", {\n\t className: \"k-spreadsheet-drawing-image\",\n\t style: {\n\t backgroundImage: \"url('\" + workbook.imageUrl(drawing.image) + \"')\",\n\t opacity: drawing.opacity\n\t }\n\t }));\n\t }\n\t if (drawing === sheet._activeDrawing) {\n\t div.attr.className += \" k-spreadsheet-active-drawing\";\n\t drawingResizeHandles(div.children);\n\t }\n\t container.push(div);\n\t });\n\t },\n\n\t renderResizeHandle: function(container) {\n\t var sheet = this._sheet;\n\t var ref = sheet.resizeHandlePosition();\n\t var rectangle = this._rectangle(ref);\n\t var classNames = [ Pane.classNames.resizeHandle ];\n\n\t var style;\n\t if (ref.col !== -Infinity) {\n\t if (this._grid.rows._start > 0) {\n\t return;\n\t }\n\t style = {\n\t height: this._grid.headerHeight + \"px\",\n\t width: RESIZE_HANDLE_WIDTH + \"px\",\n\t left: rectangle.right - RESIZE_HANDLE_WIDTH/2 + \"px\",\n\t top: \"0px\"\n\t };\n\t classNames.push(viewClassNames.horizontalResize);\n\t } else {\n\t if (this._grid.columns._start > 0) {\n\t return;\n\t }\n\t style = {\n\t height: RESIZE_HANDLE_WIDTH + \"px\",\n\t width: this._grid.headerWidth + \"px\",\n\t top: rectangle.bottom - RESIZE_HANDLE_WIDTH/2 + \"px\",\n\t left: \"0px\"\n\t };\n\t classNames.push(viewClassNames.verticalResize);\n\t }\n\n\t container.push(kendo.dom.element(\"div\", {\n\t className: classNames.join(\" \"),\n\t style: style\n\t }));\n\t },\n\n\t filterIconRect: function(rect) {\n\t var BUTTON_SIZE = 16;\n\t var BUTTON_OFFSET = 3;\n\n\t return new kendo.spreadsheet.Rectangle(\n\t rect.right - BUTTON_SIZE - BUTTON_OFFSET,\n\t rect.top + BUTTON_OFFSET,\n\t BUTTON_SIZE,\n\t BUTTON_SIZE\n\t );\n\t },\n\n\t renderFilterHeaders: function() {\n\t var sheet = this._sheet;\n\t var children = [];\n\t var classNames = View.classNames;\n\t var filter = sheet.filter();\n\n\t function icon(className) {\n\t return kendo.dom.element(\"span\", {\n\t className: classNames.icon + \" \" + className\n\t });\n\t }\n\n\t function filterButton(classNames, position, index) {\n\t var style = {\n\t left: position.left + \"px\",\n\t top: position.top + \"px\"\n\t };\n\t var filtered = filter && filter.columns.some(function(c) {\n\t return c.index === index;\n\t });\n\t var classes = classNames.filterButton;\n\n\t if (filtered) {\n\t classes += \" \" + classNames.filterButtonActive;\n\t }\n\n\t var button = kendo.dom.element(\n\t \"span\",\n\t { className: classes, style: style },\n\t [ icon(classNames.iconFilterDefault) ]\n\t );\n\n\t return button;\n\t }\n\n\t if (filter) {\n\t this._addDiv(children, filter.ref, classNames.filterRange);\n\t }\n\n\t sheet.forEachFilterHeader(this._currentView.ref, function(ref) {\n\t var rect = this._rectangle(ref);\n\t var position = this.filterIconRect(rect);\n\t var column = this._sheet.filterColumn(ref);\n\t var button = filterButton(classNames, position, column);\n\n\t children.push(button);\n\t }.bind(this));\n\n\t return kendo.dom.element(\"div\", {\n\t className: classNames.filterHeadersWrapper\n\t }, children);\n\n\t },\n\n\t renderEditorSelection: function() {\n\t var classNames = Pane.classNames;\n\t var sheet = this._sheet;\n\t var selections = [];\n\n\t sheet._formulaSelections.forEach(function(range) {\n\t var ref = range.ref;\n\n\t if (ref === kendo.spreadsheet.NULLREF) {\n\t return;\n\t }\n\n\t this._addDiv(selections, ref, classNames.selectionHighlight + \" \" + range.colorClass);\n\t }.bind(this));\n\n\t return kendo.dom.element(\"div\", { className: classNames.selectionWrapper }, selections);\n\n\t },\n\n\t renderSelection: function(scroller) {\n\t var classNames = Pane.classNames;\n\t var selections = [];\n\t var selectionClasses = [classNames.selection];\n\t var sheet = this._sheet;\n\t var activeCell = sheet.activeCell().toRangeRef();\n\t var selection = sheet.select();\n\n\t selectionClasses = selectionClasses.concat(this._activeFormulaColor());\n\n\t if (selection.size() === 1) {\n\t selectionClasses.push(\"k-single-selection\");\n\t }\n\n\t if (this._sheet.autoFillPunch()) {\n\t selectionClasses.push(\"k-dim-auto-fill-handle\");\n\t }\n\n\t selection.forEach(function(ref) {\n\t if (ref !== kendo.spreadsheet.NULLREF) {\n\t this._addDiv(selections, ref, selectionClasses.join(\" \"));\n\t }\n\t }.bind(this));\n\n\t this._renderCustomEditorButton(selections, activeCell, scroller);\n\n\t return kendo.dom.element(\"div\", { className: classNames.selectionWrapper }, selections);\n\t },\n\n\t renderAutoFill: function() {\n\t var autoFillRectangle = [];\n\n\t if (this._sheet.autoFillInProgress()) {\n\t var autoFillRef = this._sheet.autoFillRef();\n\t var punch = this._sheet.autoFillPunch();\n\t var direction = this._sheet._autoFillDirection;\n\n\t this._addDiv(autoFillRectangle, autoFillRef, \"k-auto-fill\");\n\n\t if (punch) { // collapsing, add overlay\n\t this._addDiv(autoFillRectangle, punch, \"k-auto-fill-punch\");\n\t } else if (direction !== undefined) { // expanding - add hint\n\t var ref, cssClass;\n\n\t switch(direction) {\n\t case 0:\n\t ref = autoFillRef.bottomRight;\n\t cssClass = \"k-auto-fill-br-hint\";\n\t break;\n\t case 1:\n\t ref = autoFillRef.bottomRight;\n\t cssClass = \"k-auto-fill-br-hint\";\n\t break;\n\t case 2:\n\t ref = new CellRef(autoFillRef.topLeft.row, autoFillRef.bottomRight.col);\n\t cssClass = \"k-auto-fill-tr-hint\";\n\t break;\n\t case 3:\n\t ref = new CellRef(autoFillRef.bottomRight.row, autoFillRef.topLeft.col);\n\t cssClass = \"k-auto-fill-bl-hint\";\n\t break;\n\t }\n\n\t var rectangle = this._addDiv(autoFillRectangle, ref, cssClass);\n\t if (rectangle) {\n\t var hint = kendo.dom.element(\"span\", { className: \"k-tooltip\" }, [ kendo.dom.text(this._sheet._autoFillHint) ]);\n\t rectangle.children.push(hint);\n\t }\n\t }\n\t }\n\n\t return kendo.dom.element(\"div\", { className: Pane.classNames.autoFillWrapper }, autoFillRectangle);\n\t },\n\n\t _addDiv: function(collection, ref, className) {\n\t var view = this._currentView, div;\n\n\t if (view.ref.intersects(ref)) {\n\t div = this._rectangle(ref).resize(1, 1).toDiv(className);\n\t collection.push(div);\n\t }\n\t return div;\n\t },\n\n\t _renderCustomEditorButton: function(collection, ref, scroller) {\n\t var self = this;\n\t var sheet = self._sheet;\n\t var view = self._currentView;\n\t var columnCount = self._grid.columns._axis._count;\n\t var ed = sheet.activeCellCustomEditor();\n\n\t if (ed && view.ref.intersects(ref)) {\n\t var rectangle = self._rectangle(ref);\n\t sheet.forEach(ref.collapse(), function(row, col, cell) {\n\t cell.left = rectangle.left;\n\t cell.top = rectangle.top;\n\t cell.width = rectangle.width;\n\t cell.height = rectangle.height;\n\n\t var btnClass = \"k-button k-spreadsheet-editor-button\";\n\t var isLastColumn = col == columnCount - 1 || self._buttonOutOfVisiblePane(row, col, scroller);\n\t if (isLastColumn) {\n\t btnClass += \" k-spreadsheet-last-column\";\n\t }\n\t self._editorInLastColumn = isLastColumn;\n\t var btn = kendo.dom.element(\"div\", {\n\t className: btnClass,\n\t style: {\n\t left : (cell.left + (isLastColumn ? 0 : cell.width)) + \"px\",\n\t top : cell.top + \"px\",\n\t height : cell.height + \"px\"\n\t }\n\t });\n\t if (ed.icon) {\n\t btn.children.push(kendo.dom.element(\"span\", {\n\t className: \"k-icon \" + ed.icon\n\t }));\n\t }\n\t collection.push(btn);\n\t });\n\t }\n\t },\n\n\t _activeFormulaColor: function() {\n\t var activeFormulaSelection;\n\t var colorClasses = [];\n\n\t if (this._sheet.isInEditMode()) {\n\t activeFormulaSelection = this._sheet._formulaSelections.filter(function(sel) { return sel.active && sel.type == \"ref\"; })[0];\n\n\t if (activeFormulaSelection) {\n\t colorClasses.push(activeFormulaSelection.colorClass);\n\t }\n\t }\n\n\t return colorClasses;\n\t },\n\n\t _directionClasses: function(cell) {\n\t var cellClasses = [];\n\t var classNames = Pane.classNames;\n\t var view = this._currentView.ref;\n\n\t if (!cell.move(0, -1).intersects(view)) {\n\t cellClasses.push(classNames.left);\n\t }\n\n\t if (!cell.move(-1, 0).intersects(view)) {\n\t cellClasses.push(classNames.top);\n\t }\n\n\t if (!cell.move(0, 1).intersects(view)) {\n\t cellClasses.push(classNames.right);\n\t }\n\n\t if (!cell.move(1, 0).intersects(view)) {\n\t cellClasses.push(classNames.bottom);\n\t }\n\n\t return cellClasses;\n\t },\n\n\t _rectangle: function(ref) {\n\t return this._grid.boundingRectangle(ref.toRangeRef()).offset(-this._currentView.mergedCellLeft, -this._currentView.mergedCellTop);\n\t },\n\n\t _buttonOutOfVisiblePane: function(row, col, scroller) {\n\t var self = this;\n\t var theGrid = self._grid;\n\t var sheet = self._sheet;\n\t var ref = sheet.range(row, col)._ref;\n\t var boundaries = theGrid.scrollBoundaries(ref);\n\t var scrollLeft = theGrid.columns.frozen ? 0 : scroller.scrollLeft;\n\n\t if (boundaries.right + EDIT_BUTTON_WIDTH > scrollLeft || col + 1 === sheet.frozenColumns()) {\n\t return true;\n\t }\n\t }\n\t });\n\n\t function drawingResizeHandles(container) {\n\t [ \"N\", \"NE\", \"E\", \"SE\", \"S\", \"SW\", \"W\", \"NW\" ].forEach(function(direction) {\n\t container.push(kendo.dom.element(\"div\", {\n\t \"className\": \"k-spreadsheet-drawing-handle \" + direction,\n\t \"data-direction\": direction\n\t }));\n\t });\n\t }\n\n\t kendo.spreadsheet.View = View;\n\t kendo.spreadsheet.Pane = Pane;\n\t kendo.spreadsheet.drawCell = drawCell;\n\n\t $.extend(true, View, { classNames: viewClassNames });\n\t $.extend(true, Pane, { classNames: paneClassNames });\n\n\t})(window.kendo);\n\t}, __webpack_require__(3));\n\n\n/***/ }),\n\n/***/ 1683:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./sheetsbar\");\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__(1684);\n\tmodule.exports = __webpack_require__(1684);\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/***/ 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/***/ 1684:\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__(1628), __webpack_require__(1656), __webpack_require__(1685) ], __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 latedef: nofunc\n\t // jshint eqnull: true, laxbreak: true\n\n\t var $ = kendo.jQuery;\n\t var Formula = kendo.spreadsheet.calc.runtime.Formula;\n\t var Ref = kendo.spreadsheet.Ref;\n\t var CalcError = kendo.spreadsheet.CalcError;\n\n\t kendo.spreadsheet.messages.workbook = {\n\t defaultSheetName: \"Sheet\"\n\t };\n\n\t function loadBinary(url, callback) {\n\t var xhr = new XMLHttpRequest();\n\t xhr.onload = function() {\n\t callback(xhr.response, xhr.getResponseHeader(\"Content-Type\"));\n\t };\n\t xhr.onerror = function() {\n\t callback(null);\n\t };\n\t xhr.open(\"GET\", url);\n\t xhr.responseType = \"arraybuffer\";\n\t xhr.send();\n\t }\n\n\t var Workbook = kendo.Observable.extend({\n\t options: {},\n\n\t init: function(options, view) {\n\t kendo.Observable.fn.init.call(this);\n\n\t this.options = options;\n\n\t this._view = view;\n\t this._sheets = [];\n\t this._images = {};\n\t this._imgID = 0;\n\n\t this._sheetsSearchCache = {};\n\n\t this._sheet = this.insertSheet({\n\t rows: this.options.rows,\n\t columns: this.options.columns,\n\t rowHeight: this.options.rowHeight,\n\t columnWidth: this.options.columnWidth,\n\t headerHeight: this.options.headerHeight,\n\t headerWidth: this.options.headerWidth,\n\t dataSource: this.options.dataSource\n\t });\n\n\t this.undoRedoStack = new kendo.util.UndoRedoStack();\n\t this.undoRedoStack.bind([\"undo\", \"redo\"], this._onUndoRedo.bind(this));\n\n\t this._context = new kendo.spreadsheet.FormulaContext(this);\n\t this._validationContext = new kendo.spreadsheet.ValidationFormulaContext(this);\n\t this._names = Object.create(null);\n\n\t this.fromJSON(this.options);\n\t },\n\n\t clipboard: function() {\n\t if(!this._clipboard) {\n\t this._clipboard = new kendo.spreadsheet.Clipboard(this);\n\t }\n\t return this._clipboard;\n\t },\n\n\t destroy: function() {\n\t this.unbind();\n\n\t if (this._clipboard) {\n\t this._clipboard.destroy();\n\t }\n\t },\n\n\t events: [\n\t \"cut\",\n\t \"copy\",\n\t \"paste\",\n\t \"changing\",\n\t \"change\",\n\t \"excelImport\",\n\t \"excelExport\",\n\t \"insertSheet\",\n\t \"removeSheet\",\n\t \"selectSheet\",\n\t \"renameSheet\",\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 \"changeFormat\",\n\t \"dataBinding\",\n\t \"dataBound\",\n\t \"progress\"\n\t ],\n\n\t _sheetChanging: function(e) {\n\t if (this.trigger(\"changing\", e)) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _sheetChange: function(e) {\n\t this.trigger(\"change\", e);\n\t },\n\n\t _sheetInsertRow: function(e) {\n\t if (this.trigger(\"insertRow\", {\n\t sheet: e.sender,\n\t index: e.index\n\t })) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _sheetInsertColumn: function(e) {\n\t if (this.trigger(\"insertColumn\", {\n\t sheet: e.sender,\n\t index: e.index\n\t })) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _sheetDeleteRow: function(e) {\n\t if (this.trigger(\"deleteRow\", {\n\t sheet: e.sender,\n\t index: e.index\n\t })) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _sheetDeleteColumn: function(e) {\n\t if (this.trigger(\"deleteColumn\", {\n\t sheet: e.sender,\n\t index: e.index\n\t })) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _sheetHideRow: function(e) {\n\t if (this.trigger(\"hideRow\", {\n\t sheet: e.sender,\n\t index: e.index\n\t })) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _sheetHideColumn: function(e) {\n\t if (this.trigger(\"hideColumn\", {\n\t sheet: e.sender,\n\t index: e.index\n\t })) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _sheetUnhideRow: function(e) {\n\t if (this.trigger(\"unhideRow\", {\n\t sheet: e.sender,\n\t index: e.index\n\t })) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _sheetUnhideColumn: function(e) {\n\t if (this.trigger(\"unhideColumn\", {\n\t sheet: e.sender,\n\t index: e.index\n\t })) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _sheetSelect: function(e) {\n\t this.trigger(\"select\", e);\n\t },\n\n\t _sheetDataBinding: function(e) {\n\t if (this.trigger(\"dataBinding\", {\n\t sheet: e.sender\n\t })) {\n\t e.preventDefault();\n\t }\n\t },\n\n\t _sheetDataBound: function(e) {\n\t this.trigger(\"dataBound\", {\n\t sheet: e.sender\n\t });\n\t },\n\n\t _sheetProgress: function(e) {\n\t var that = this;\n\n\t setTimeout(function() {\n\t that.trigger(\"progress\", {\n\t toggle: e.toggle\n\t });\n\t });\n\t },\n\n\t _sheetCommandRequest: function(e) {\n\t this.trigger(\"commandRequest\", e);\n\t },\n\n\t _inputForRef: function(ref) {\n\t var self = this;\n\t return self._sheet.withCultureDecimals(function(){\n\t return new kendo.spreadsheet.Range(ref, self._sheet).input();\n\t });\n\t },\n\n\t _onUndoRedo: function(e) {\n\t e.command.range().select();\n\t },\n\n\t execute: function(options) {\n\t var commandOptions = $.extend({ workbook: this }, options.options);\n\t var command = new kendo.spreadsheet[options.command](commandOptions);\n\t var sheet = this.activeSheet();\n\n\t if (commandOptions.origin) {\n\t command.origin(commandOptions.origin);\n\t }\n\n\t if (commandOptions.operatingRange) {\n\t command.range(commandOptions.operatingRange);\n\t } else {\n\t command.range(sheet.selection());\n\t }\n\n\t if (commandOptions.editRange) {\n\t command._editRange = commandOptions.editRange;\n\t }\n\n\t var result = command.exec();\n\n\t if (!result || result.reason !== \"error\") {\n\t if (!command.cannotUndo) {\n\t this.undoRedoStack.push(command);\n\t }\n\t }\n\n\t // when the undo/redo stack is truncated (by e.g. adding a\n\t // non-redo command after undoing) it's possible to\n\t // discard images from the dropped commands.\n\t this.cleanupImages();\n\n\t return result;\n\t },\n\n\t resetFormulas: function() {\n\t this._sheets.forEach(function(sheet){\n\t sheet.resetFormulas();\n\t });\n\t },\n\n\t resetValidations: function() {\n\t this._sheets.forEach(function(sheet){\n\t sheet.resetValidations();\n\t });\n\t },\n\n\t refresh: function(reason) {\n\t if (reason.recalc) {\n\t this.resetFormulas();\n\t this.resetValidations();\n\t this._sheet.recalc(this._context);\n\t this._sheet.revalidate(this._validationContext);\n\t }\n\t },\n\n\t activeSheet: function(sheet) {\n\t if (sheet === undefined) {\n\t return this._sheet;\n\t }\n\n\t if (!this.sheetByName(sheet.name())) {\n\t return;\n\t }\n\n\t this._sheet = sheet;\n\n\t //TODO: better way to get all reasons?\n\t sheet.triggerChange(kendo.spreadsheet.ALL_REASONS);\n\t },\n\n\t moveSheetToIndex: function(sheet, toIndex) {\n\t var fromIndex = this.sheetIndex(sheet);\n\t var sheets = this._sheets;\n\n\t if (fromIndex === -1) {\n\t return;\n\t }\n\n\t this._sheetsSearchCache = {};\n\n\t sheets.splice(toIndex, 0, sheets.splice(fromIndex, 1)[0]);\n\n\t this.trigger(\"change\", { sheetSelection: true });\n\t },\n\n\t insertSheet: function(options) {\n\t options = options || {};\n\t var that = this;\n\t var insertIndex = typeof options.index === \"number\" ? options.index : that._sheets.length;\n\t var sheetName;\n\t var sheets = that._sheets;\n\n\t var getUniqueSheetName = function(sheetNameSuffix) {\n\t sheetNameSuffix = sheetNameSuffix ? sheetNameSuffix : 1;\n\n\t var name = kendo.spreadsheet.messages.workbook.defaultSheetName + sheetNameSuffix;\n\n\t if (!that.sheetByName(name)) {\n\t return name;\n\t }\n\n\t return getUniqueSheetName(sheetNameSuffix + 1);\n\t };\n\n\t if (options.name && that.sheetByName(options.name)) {\n\t return;\n\t }\n\n\t this._sheetsSearchCache = {};\n\n\t sheetName = options.name || getUniqueSheetName();\n\n\t var sheet = new kendo.spreadsheet.Sheet(\n\t options.rows || this.options.rows,\n\t options.columns || this.options.columns,\n\t options.rowHeight || this.options.rowHeight,\n\t options.columnWidth || this.options.columnWidth,\n\t options.headerHeight || this.options.headerHeight,\n\t options.headerWidth || this.options.headerWidth,\n\t options.defaultCellStyle || this.options.defaultCellStyle\n\t );\n\n\t sheet._workbook = this;\n\n\t sheet._name(sheetName);\n\n\t this._bindSheetEvents(sheet);\n\n\t sheets.splice(insertIndex, 0, sheet);\n\n\t if (options.data) {\n\t sheet.fromJSON(options.data);\n\t }\n\n\t if (options.dataSource) {\n\t sheet.setDataSource(options.dataSource);\n\t }\n\n\t this.trigger(\"change\", { sheetSelection: true });\n\n\t return sheet;\n\t },\n\n\t _bindSheetEvents: function(sheet) {\n\t sheet.bind(\"changing\", this._sheetChanging.bind(this));\n\t sheet.bind(\"change\", this._sheetChange.bind(this));\n\t sheet.bind(\"insertRow\", this._sheetInsertRow.bind(this));\n\t sheet.bind(\"insertColumn\", this._sheetInsertColumn.bind(this));\n\t sheet.bind(\"deleteRow\", this._sheetDeleteRow.bind(this));\n\t sheet.bind(\"deleteColumn\", this._sheetDeleteColumn.bind(this));\n\t sheet.bind(\"hideRow\", this._sheetHideRow.bind(this));\n\t sheet.bind(\"hideColumn\", this._sheetHideColumn.bind(this));\n\t sheet.bind(\"unhideRow\", this._sheetUnhideRow.bind(this));\n\t sheet.bind(\"unhideColumn\", this._sheetUnhideColumn.bind(this));\n\t sheet.bind(\"select\", this._sheetSelect.bind(this));\n\t sheet.bind(\"commandRequest\", this._sheetCommandRequest.bind(this));\n\t sheet.bind(\"dataBinding\", this._sheetDataBinding.bind(this));\n\t sheet.bind(\"dataBound\", this._sheetDataBound.bind(this));\n\t sheet.bind(\"progress\", this._sheetProgress.bind(this));\n\t },\n\n\t sheets: function() {\n\t return this._sheets.slice();\n\t },\n\n\t sheetByName: function (sheetName) {\n\t return this._sheets[this.sheetIndex(sheetName)];\n\t },\n\n\t sheetByIndex: function(index) {\n\t return this._sheets[index];\n\t },\n\n\t sheetIndex: function(sheet) {\n\t var sheets = this._sheets;\n\t var sheetName = (typeof sheet == \"string\" ? sheet : sheet.name()).toLowerCase();\n\t var idx = this._sheetsSearchCache[sheetName];\n\n\t if (idx >= 0) {\n\t return idx;\n\t }\n\n\t for(idx = 0; idx < sheets.length; idx++) {\n\t var name = sheets[idx].name().toLowerCase();\n\t this._sheetsSearchCache[name] = idx;\n\n\t if (name === sheetName) {\n\t return idx;\n\t }\n\t }\n\n\t return -1;\n\t },\n\n\t renameSheet: function(sheet, newSheetName) {\n\t var oldSheetName = sheet.name().toLowerCase();\n\n\t if (!newSheetName ||\n\t oldSheetName === newSheetName.toLowerCase() ||\n\t this.sheetByName(newSheetName)) {\n\t return;\n\t }\n\n\t sheet = this.sheetByName(oldSheetName);\n\n\t if (!sheet) {\n\t return;\n\t }\n\n\t this._sheetsSearchCache = {};\n\n\t if (this.trigger(\"renameSheet\", {\n\t sheet: sheet,\n\t newSheetName: newSheetName\n\t })) {\n\t return;\n\t }\n\n\t // update references\n\t this._sheets.forEach(function(sheet){\n\t sheet._forFormulas(function(formula){\n\t formula.renameSheet(oldSheetName, newSheetName);\n\t });\n\t });\n\n\t this.forEachName(function(def, name){\n\t // 1. redefine sheet-local names\n\t if (def.nameref.renameSheet(oldSheetName, newSheetName)) {\n\t this.undefineName(name);\n\t def.name = def.nameref.print();\n\t this.nameDefinition(def.name, def);\n\t }\n\t // 2. if the value is reference or formula, update it\n\t if (def.value instanceof Ref || def.value instanceof Formula) {\n\t def.value.renameSheet(oldSheetName, newSheetName);\n\t }\n\t }.bind(this));\n\n\t sheet._name(newSheetName);\n\n\t this.trigger(\"change\", { sheetSelection: true });\n\n\t return sheet;\n\t },\n\n\t removeSheet: function(sheet) {\n\t var that = this;\n\t var sheets = that._sheets;\n\t var name = sheet.name();\n\t var index = that.sheetIndex(sheet);\n\n\t if (sheets.length === 1) {\n\t return;\n\t }\n\n\t if (this.trigger(\"removeSheet\", { sheet: sheet })) {\n\t return;\n\t }\n\n\t this._sheetsSearchCache = {};\n\n\t if (index > -1) {\n\t sheet.unbind();\n\n\t sheets.splice(index, 1);\n\n\t if (that.activeSheet().name() === name) {\n\t var newSheet = sheets[index === sheets.length ? index-1 : index];\n\t that.activeSheet(newSheet);\n\t } else {\n\t this.trigger(\"change\", { recalc: true, sheetSelection: true });\n\t }\n\t }\n\t },\n\n\t _clearSheets: function() {\n\t for (var i = 0; i < this._sheets.length; i++) {\n\t this._sheets[i]._activeDrawing = [];\n\t this._sheets[i]._drawings = [];\n\t this._sheets[i].unbind();\n\t }\n\t this._sheets = [];\n\t this._sheetsSearchCache = {};\n\t this._names = {};\n\t this._images = {};\n\t this._imgID = 0;\n\t },\n\n\t // _loadImages: function() {\n\t // var self = this;\n\t // var ids = Object.keys(self._images);\n\t // var count = ids.length;\n\t // if (count) {\n\t // ids.forEach(function(id){\n\t // var img = self._images[id];\n\t // if (!img.blob) {\n\t // loadBinary(img.url, function(data, type) {\n\t // // XXX: can we do something better in case of error?\n\t // if (data != null) {\n\t // img.blob = new Blob([ data ], { type: type });\n\t // delete img.url;\n\t // }\n\t // next();\n\t // });\n\t // }\n\t // });\n\t // } else {\n\t // next();\n\t // }\n\t // function next() {\n\t // if (--count <= 0) {\n\t // self.activeSheet().triggerChange({ layout: true });\n\t // }\n\t // }\n\t // },\n\n\t fromJSON: function(json) {\n\t if (json.sheets) {\n\t this._clearSheets();\n\n\t if (json.images) {\n\t this._imgID = 0;\n\t this._images = {};\n\t Object.keys(json.images).forEach(function(id){\n\t if (!isNaN(id)) {\n\t var num = parseFloat(id);\n\t if (isFinite(num)) {\n\t this._imgID = Math.max(this._imgID, num);\n\t }\n\t }\n\t this._images[id] = { url: json.images[id] };\n\t }, this);\n\t // this._loadImages();\n\t }\n\n\t for (var idx = 0; idx < json.sheets.length; idx++) {\n\t var data = json.sheets[idx];\n\t var args = sheetParamsFromJSON(data, this.options);\n\t var sheet = this.insertSheet({\n\t rows : args.rowCount,\n\t columns : args.columnCount,\n\t rowHeight : args.rowHeight,\n\t columnWidth : args.columnWidth,\n\t headerHeight : args.headerHeight,\n\t headerWidth : args.headerWidth,\n\t data : data\n\t });\n\n\t if (data.dataSource) {\n\t sheet.setDataSource(data.dataSource);\n\t }\n\t }\n\t }\n\n\t if (json.activeSheet) {\n\t this.activeSheet(this.sheetByName(json.activeSheet));\n\t } else {\n\t this.activeSheet(this._sheets[0]);\n\t }\n\n\t if (json.names) {\n\t json.names.forEach(function(def){\n\t this.defineName(def.name, def.value, def.hidden);\n\t }, this);\n\t }\n\t },\n\n\t toJSON: function() {\n\t this.resetFormulas();\n\t this.resetValidations();\n\t var names = Object.keys(this._names).map(function(name){\n\t var def = this._names[name];\n\t var val = def.value;\n\t if (val instanceof Ref || val instanceof Formula) {\n\t val = val.print(0, 0, true);\n\t } else if (val instanceof CalcError) {\n\t val = val + \"\";\n\t } else {\n\t val = JSON.stringify(val);\n\t }\n\t return {\n\t value : val,\n\t hidden : def.hidden,\n\t name : def.name,\n\n\t // these two are not really useful in\n\t // deserialization, but are handy in OOXML export.\n\t sheet : def.nameref.sheet,\n\t localName : def.nameref.name\n\t };\n\t }, this);\n\t return {\n\t activeSheet: this.activeSheet().name(),\n\t sheets: this._sheets.map(function(sheet) {\n\t sheet.recalc(this._context);\n\t sheet.revalidate(this._validationContext);\n\t return sheet.toJSON();\n\t }, this),\n\t names: names,\n\t columnWidth: this.options.columnWidth,\n\t rowHeight: this.options.rowHeight\n\t };\n\t },\n\n\t saveJSON: function() {\n\t var self = this;\n\t var deferred = new $.Deferred();\n\t var data = self.toJSON();\n\t var ids = Object.keys(self._images).filter(function(id){\n\t return self.usesImage(id) === 1;\n\t });\n\t var count = ids.length;\n\t data.images = {};\n\t if (count) {\n\t ids.forEach(function(id){\n\t var img = self._images[id];\n\t if (img.blob) {\n\t var reader = new FileReader();\n\t reader.onload = function() {\n\t data.images[id] = reader.result;\n\t next();\n\t };\n\t reader.readAsDataURL(img.blob);\n\t } else {\n\t data.images[id] = img.url;\n\t next();\n\t }\n\t });\n\t } else {\n\t next();\n\t }\n\t return deferred.promise();\n\n\t function next() {\n\t if (--count <= 0) {\n\t deferred.resolve(data);\n\t }\n\t }\n\t },\n\n\t fromFile: function(file) {\n\t var deferred = new $.Deferred();\n\t var promise = deferred.promise();\n\t var args = { file: file, promise: promise };\n\n\t if (file && !this.trigger(\"excelImport\", args)) {\n\t this._clearSheets();\n\t kendo.spreadsheet.readExcel(file, this, deferred);\n\t } else {\n\t deferred.reject();\n\t }\n\n\t return promise;\n\t },\n\n\t saveAsExcel: function(options) {\n\t var self = this;\n\t options = $.extend({}, self.options.excel, options);\n\t var data = self.toJSON();\n\n\t if (self.trigger(\"excelExport\", { workbook: data })) {\n\t return;\n\t }\n\n\t var ids = Object.keys(self._images).filter(function(id){\n\t return self.usesImage(id) === 1;\n\t });\n\t var count = ids.length;\n\t var images = count ? {} : null;\n\t if (count) {\n\t ids.forEach(function(id){\n\t var img = self._images[id];\n\t if (img.blob) {\n\t var reader = new FileReader();\n\t reader.onload = function() {\n\t images[id] = {\n\t type: img.blob.type,\n\t name: img.blob.name,\n\t data: reader.result\n\t };\n\t next();\n\t };\n\t reader.readAsArrayBuffer(img.blob);\n\t } else {\n\t loadBinary(img.url, function(data, type){\n\t images[id] = { type: type, data: data };\n\t next();\n\t });\n\t }\n\t });\n\t } else {\n\t next();\n\t }\n\n\t function next() {\n\t if (--count <= 0) {\n\t data.images = images;\n\t var workbook = new kendo.ooxml.Workbook(data);\n\t kendo.saveAs({\n\t dataURI: options.forceProxy ? workbook.toDataURL() : workbook.toBlob(),\n\t fileName: data.fileName || options.fileName,\n\t proxyURL: options.proxyURL,\n\t forceProxy: options.forceProxy\n\t });\n\t }\n\t }\n\t },\n\n\t draw: function(options, callback) {\n\t if (typeof options == \"function\" && !callback) {\n\t callback = options;\n\t options = {};\n\t }\n\t var parts = [], sheets = this._sheets;\n\t (function loop(i){\n\t if (i < sheets.length) {\n\t sheets[i].draw(kendo.spreadsheet.SHEETREF, options, function(group){\n\t parts.push(group);\n\t loop(i + 1);\n\t });\n\t } else {\n\t var group = parts[0];\n\t for (i = 1; i < parts.length; ++i) {\n\t group.children = group.children.concat(parts[i].children);\n\t }\n\t callback(group);\n\t }\n\t })(0);\n\t },\n\n\t nameForRef: function(ref, sheet) {\n\t if (sheet === undefined) {\n\t sheet = ref.sheet;\n\t }\n\t sheet = sheet.toLowerCase();\n\t var str = ref + \"\";\n\t for (var name in this._names) {\n\t var def = this._names[name];\n\t var val = def.value;\n\t if (val instanceof Ref) {\n\t if (!val.sheet || (val.sheet && sheet == val.sheet.toLowerCase())) {\n\t if (val + \"\" == str) {\n\t return def;\n\t }\n\t }\n\t }\n\t }\n\t return { name: str };\n\t },\n\n\t defineName: function(name, value, hidden) {\n\t var x = kendo.spreadsheet.calc.parseNameDefinition(name, value);\n\t name = x.name.print();\n\t this._names[name.toLowerCase()] = {\n\t value : x.value,\n\t hidden : hidden,\n\t name : name,\n\t nameref : x.name\n\t };\n\t },\n\n\t undefineName: function(name) {\n\t delete this._names[name.toLowerCase()];\n\t },\n\n\t nameValue: function(name) {\n\t name = name.toLowerCase();\n\t if (name in this._names) {\n\t return this._names[name].value;\n\t }\n\t return null;\n\t },\n\n\t nameDefinition: function(name, def) {\n\t name = name.toLowerCase();\n\t if (arguments.length > 1) {\n\t if (def === undefined) {\n\t delete this._names[name];\n\t } else {\n\t this._names[name] = def;\n\t }\n\t }\n\t return this._names[name];\n\t },\n\n\t forEachName: function(func) {\n\t Object.keys(this._names).forEach(function(name){\n\t func(this._names[name], name);\n\t }, this);\n\t },\n\n\t adjustNames: function(affectedSheet, forRow, start, delta) {\n\t affectedSheet = affectedSheet.toLowerCase();\n\t Object.keys(this._names).forEach(function(name){\n\t var def = this._names[name];\n\t var x = def.value;\n\t if (x instanceof Ref &&\n\t x.sheet.toLowerCase() == affectedSheet) {\n\t def.value = x.adjust(null, null, null, null, forRow, start, delta);\n\t }\n\t else if (x instanceof Formula) {\n\t x.adjust(affectedSheet, forRow ? \"row\" : \"col\", start, delta);\n\t }\n\t }, this);\n\t },\n\n\t addImage: function(image) {\n\t var id = String(++this._imgID);\n\t if (typeof image == \"string\") {\n\t this._images[id] = { url: image };\n\t } else {\n\t this._images[id] = { blob: image };\n\t }\n\t return id;\n\t },\n\n\t imageUrl: function(id) {\n\t var img = this._images[id];\n\t var url = img.url;\n\t if (!url) {\n\t url = img.url = window.URL.createObjectURL(img.blob);\n\t }\n\t return url;\n\t },\n\n\t cleanupImages: function() {\n\t Object.keys(this._images).forEach(function(id){\n\t if (!this.usesImage(id)) {\n\t var url = this._images[id].url;\n\t if (url) {\n\t window.URL.revokeObjectURL(url);\n\t }\n\t delete this._images[id];\n\t }\n\t }, this);\n\t },\n\n\t usesImage: function(img) {\n\t var i;\n\t var sheets = this._sheets;\n\t for (i = sheets.length; --i >= 0;) {\n\t if (sheets[i].usesImage(img)) {\n\t return 1;\n\t }\n\t }\n\t var stack = this.undoRedoStack.stack;\n\t for (i = stack.length; --i >= 0;) {\n\t if (stack[i].usesImage(img)) {\n\t return 2; // signal that it's only in the undo stack\n\t }\n\t }\n\t return false;\n\t }\n\n\t });\n\n\t function sheetParamsFromJSON(data, options) {\n\t function or(a, b, c) {\n\t return a !== undefined ? a : b !== undefined ? b : c;\n\t }\n\n\t var rowCount = or(data.rowCount, options.rows, 200),\n\t columnCount = or(data.columnCount, options.columns, 50),\n\t rowHeight = or(data.rowHeight, options.rowHeight, 20),\n\t columnWidth = or(data.columnWidth, options.columnWidth, 64),\n\t headerHeight = or(data.headerHeight, options.headerHeight, 20),\n\t headerWidth = or(data.headerWidth, options.headerWidth, 32);\n\n\t if (data.rows !== undefined) {\n\t for (var i = 0; i < data.rows.length; ++i) {\n\t var row = data.rows[i];\n\t var ri = or(row.index, i);\n\t if (ri >= rowCount) { rowCount = ri + 1; }\n\t if (row.cells) {\n\t for (var j = 0; j < row.cells.length; ++j) {\n\t var cell = row.cells[j];\n\t var ci = or(cell.index, j);\n\t if (ci >= columnCount) { columnCount = ci + 1; }\n\t }\n\t }\n\t }\n\t }\n\n\t return {\n\t rowCount : rowCount,\n\t columnCount : columnCount,\n\t rowHeight : rowHeight,\n\t columnWidth : columnWidth,\n\t headerHeight : headerHeight,\n\t headerWidth : headerWidth\n\t };\n\t }\n\n\t kendo.spreadsheet.Workbook = Workbook;\n\t if (kendo.PDFMixin) {\n\t kendo.PDFMixin.extend(Workbook.prototype);\n\n\t Workbook.prototype.saveAsPDF = function(options) {\n\t var progress = new $.Deferred();\n\t var promise = progress.promise();\n\t var args = { promise: promise };\n\t if (this.trigger(\"pdfExport\", args)) {\n\t return;\n\t }\n\n\t this._drawPDF(options, progress)\n\t .then(function(root) {\n\t return options.forceProxy\n\t ? kendo.pdf.exportPDF(root) // produce data URI for proxy\n\t : kendo.pdf.exportPDFToBlob(root);\n\t })\n\t .done(function(dataURI) {\n\t kendo.saveAs({\n\t dataURI: dataURI,\n\t fileName: options.fileName,\n\t proxyURL: options.proxyURL,\n\t forceProxy: options.forceProxy,\n\t proxyTarget: options.proxyTarget\n\t });\n\n\t progress.resolve();\n\t })\n\t .fail(function(err) {\n\t progress.reject(err);\n\t });\n\n\t return promise;\n\t };\n\n\t Workbook.prototype._drawPDF = function(options) {\n\t var result = new $.Deferred();\n\t var callback = function(group) {\n\t result.resolve(group);\n\t };\n\t switch(options.area) {\n\t case \"workbook\":\n\t options.workbook.draw(options, callback);\n\t break;\n\t case \"sheet\":\n\t options.workbook.activeSheet().draw(options, callback);\n\t break;\n\t case \"selection\":\n\t options.workbook.activeSheet().selection().draw(options, callback);\n\t break;\n\t }\n\n\t return result.promise();\n\t };\n\t }\n\t})(kendo);\n\n\t}, __webpack_require__(3));\n\n\n/***/ }),\n\n/***/ 1685:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./excel-reader\");\n\n/***/ })\n\n/******/ });"],"sourceRoot":""}