{"version":3,"sources":["webpack:///./node_modules/@progress/kendo-ui/js/spreadsheet/references.js","webpack:///./node_modules/@progress/kendo-ui/js/spreadsheet/range.js","webpack:///./node_modules/@progress/kendo-ui/js/spreadsheet/rangelist.js"],"names":["module","exports","modules","installedModules","__webpack_require__","moduleId","id","loaded","call","m","c","p","0","3","Error","20","1669","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","f","define","apply","undefined","spreadsheet","kendo","Class","columnName","colIndex","letter","Math","floor","String","fromCharCode","displaySheet","sheet","test","replace","displayRef","row","col","rel","aa","isFinite","Ref","extend","type","clone","this","hasSheet","_hasSheet","simplify","setSheet","absolute","relative","adjust","toString","print","forEach","callback","obj","map","intersects","ref","intersect","NULL","isCell","toRow","toColumn","first","lastRange","size","rangeAt","nextRangeIndex","previousRangeIndex","eq","reference","r1","r2","CellRef","RangeRef","topLeft","bottomRight","UnionRef","single","refs","refs1","refs2","length","i","len","concat","replaceAt","index","forEachColumnIndex","forEachAxisIndex","forEachRowIndex","axis","sorted","method","indexOf","push","sort","a","b","valid","renameSheet","oldSheetName","newSheetName","toLowerCase","display","init","NameRef","name","ret","trow","tcol","mod","abs","arow","acol","toRangeRef","height","width","leftColumn","rightColumn","topRow","bottomRow","forEachRow","forEachColumn","forRow","start","delta","tl","br","endSheet","normalize","_containsRange","range","_containsCell","cell","contains","Array","that","some","_ref","_intersectRange","a_left","a_top","a_right","a_bottom","b_left","b_top","b_right","b_bottom","max","min","tmp","c1","c2","rr1","rc1","rr2","rc2","changes","relTL","relBR","collapse","toCell","startRow","endRow","startCol","endCol","intersecting","filter","union","topLeftRow","topLeftCol","bottomRightRow","bottomRightCol","modified","result","resize","options","limit","bind","num","value","top","left","bottom","right","move","rows","cols","tr","slice","x","u","reduce","empty","theRef","join","newRefs","splice","NULLREF","SHEETREF","Infinity","FIRSTREF","957","1662","1667","$","jQuery","PROPERTIES","Range","_sheet","skipHiddenCells","self","skipHiddenRows","isHiddenRow","skipHiddenCols","isHiddenColumn","_normalize","partition","j","begin","end","_grid","_set","noTrigger","valueProp","topLeftRef","forEachMergedCell","triggerChange","recalc","_get","_property","html","direction","_resizedRef","input","arrayFormula","existingFormat","calc","parse","batch","formula","compile","existingFormatType","formatting","format","toExcelFormat","culture","calendar","patterns","d","currency","editorChange","isInEditMode","OUT","t1","text","t2","numberToDate","runtime","limitPrecision","looksLikeANumber","_useCultureDecimals","numberFormat","enable","util","withExit","exit","_","__","data","setArrayFormulaRange","intersectingArrayFormula","_forFormulas","r","arrayFormulaRange","intersection","canEditArrayFormula","validation","toJSON","_getValidationState","ci","ri","_validation","merge","_merge","unmerge","mergedCells","_mergedCells","mergedRef","select","values","vi","_value","_properties","props","isAutofill","line","setProp","propName","propValue","isFilteredRow","Object","keys","clear","clearAll","reason","contentsOnly","formatOnly","keepBorders","fontSize","wrap","clearContent","clearFormat","isSortable","cantSort","code","message","mc","_getMergedCells","primary","secondary","cant","merged","hasMerged","ex","spec","column","_sortBy","ascending","isFilterable","clearFilters","_filterBy","clearFilter","columns","_filter","layout","hasFilter","intersectingMerged","getState","propertyName","properties","state","origRef","_rows","ALL_PROPERTIES","forEachCell","cellState","dr","dc","property","Formula","Validation","deepClone","setState","clipboard","origin","rowDelta","colDelta","internalClipboard","isExternal","externalClipboard","_adjustRowHeight","rowRange","rowHeight","_columns","sum","columnWidth","textHeight","getTextHeight","fontFamily","hasValue","defStyle","_defaultCellStyle","key","val","flag","draw","insideBorders","insideVerticalBorders","insideHorizontalBorders","predicate","str","each","prototype","measureBox","styles","measureText","box","normalizeText","window","1668","RangeTreeNode","level","NilNode","skew","node","temp","split","insert","remove","diff","heir","RangeTree","root","findrange","ranges","tree","last","RangeList","firstRange","shift","pop","rangeValue","rangeStart","rangeEnd","expandedValues","rangeIndex","sortedIndices","valueComparer","indices","comparer","y","copy","sourceStart","sourceEnd","targetStart","iterator","Iterator","fromJSON","v","unique","at","SparseRangeList","lastRangeStart","ValueRange"],"mappings":"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","file":"js/chunk-vendors~8e730fad.056944f9.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__(1669);\n\tmodule.exports = __webpack_require__(1669);\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/***/ 1669:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// -*- fill-column: 100 -*-\n\n\t(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(20)], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\t // WARNING: removing the following jshint declaration and turning\n\t // == into === to make JSHint happy will break functionality.\n\t /* jshint eqnull:true, laxbreak:true */\n\n\t \"use strict\";\n\n\t var spreadsheet = kendo.spreadsheet;\n\t var Class = kendo.Class;\n\n\t function columnName(colIndex) {\n\t var letter = Math.floor(colIndex / 26) - 1;\n\t return (letter >= 0 ? columnName(letter) : \"\") + String.fromCharCode(65 + (colIndex % 26));\n\t }\n\n\t function displaySheet(sheet) {\n\t if (/^[a-z_][a-z0-9_]*$/i.test(sheet)) {\n\t return sheet;\n\t }\n\t return \"'\" + sheet.replace(/\\x27/g, \"\\\\'\") + \"'\";\n\t }\n\n\t function displayRef(sheet, row, col, rel) {\n\t var aa = \"\";\n\n\t ++row;\n\n\t if (!isFinite(row)) {\n\t row = \"\";\n\t }\n\t else if (rel != null && !(rel & 2)) {\n\t row = \"$\" + row;\n\t }\n\n\t if (!isFinite(col)) {\n\t col = \"\";\n\t }\n\t else {\n\t aa = columnName(col);\n\t if (rel != null && !(rel & 1)) {\n\t aa = \"$\" + aa;\n\t }\n\t }\n\n\t if (sheet) {\n\t return displaySheet(sheet) + \"!\" + aa + row;\n\t } else {\n\t return aa + row;\n\t }\n\t }\n\n\t /* -----[ References ]----- */\n\n\t var Ref = Class.extend({\n\t type: \"ref\",\n\t sheet: \"\",\n\t clone: function() {\n\t return this;\n\t },\n\t hasSheet: function() {\n\t return this._hasSheet;\n\t },\n\t simplify: function() {\n\t return this;\n\t },\n\t setSheet: function(sheet, hasSheet) {\n\t this.sheet = sheet;\n\t if (hasSheet != null) {\n\t this._hasSheet = hasSheet;\n\t }\n\t return this;\n\t },\n\t absolute: function(){\n\t return this;\n\t },\n\t relative: function(){\n\t return this;\n\t },\n\t adjust: function(){\n\t return this;\n\t },\n\t toString: function() {\n\t return this.relative(0, 0, 3, 3).print(0, 0);\n\t },\n\t forEach: function(callback, obj) {\n\t callback.call(obj, this);\n\t },\n\t map: function(callback, obj) {\n\t return callback.call(obj, this);\n\t },\n\t intersects: function(ref) {\n\t return this.intersect(ref) !== NULL;\n\t },\n\t isCell: function() {\n\t return false;\n\t },\n\t toRow: function() {\n\t return this;\n\t },\n\t toColumn: function() {\n\t return this;\n\t },\n\n\t // UnionRef overrides these, to access its subranges.\n\t first: function() {\n\t return this;\n\t },\n\t lastRange: function() {\n\t return this;\n\t },\n\t size: function() {\n\t return 1;\n\t },\n\t rangeAt: function() {\n\t return this;\n\t },\n\t nextRangeIndex: function() {\n\t return 0;\n\t },\n\t previousRangeIndex: function() {\n\t return 0;\n\t },\n\t eq: function(reference) {\n\t var r1 = this;\n\t var r2 = reference;\n\n\t if (r1 === NULL || r2 === NULL) {\n\t return r1 === r2;\n\t }\n\n\t // make positions consistent\n\t if ((r2 instanceof CellRef) || (r2 instanceof RangeRef && !(r1 instanceof CellRef))) {\n\t r1 = reference;\n\t r2 = this;\n\t }\n\n\t if (r1 instanceof CellRef) { // cell eq *\n\t r2 = r2.simplify();\n\t return r2 instanceof CellRef && r1.row == r2.row && r1.col == r2.col && r1.sheet == r2.sheet;\n\t }\n\t else if (r1 instanceof RangeRef) { // range eq range/union\n\t if (r2 instanceof RangeRef) {\n\t return r2.topLeft.eq(r1.topLeft) && r2.bottomRight.eq(r1.bottomRight);\n\t }\n\t if (r2 instanceof UnionRef) {\n\t return r2.single() && r1.eq(r2.refs[0]);\n\t }\n\t }\n\t else if (r1 instanceof UnionRef && r2 instanceof UnionRef) { // union eq union\n\t var refs1 = r1.refs;\n\t var refs2 = r2.refs;\n\t if (refs1.length != refs2.length) {\n\t return false;\n\t }\n\n\t for (var i = 0, len = refs1.length; i < len; i++) {\n\t if (!refs1[i].eq(refs2[i])) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t return r1 === r2; // XXX: possibly NameRef when we'll support it.\n\t },\n\n\t concat: function(ref) {\n\t return new UnionRef([this, ref]);\n\t },\n\n\t replaceAt: function(index, ref) {\n\t return ref;\n\t },\n\n\t forEachColumnIndex: function(callback) {\n\t this.forEachAxisIndex('col', callback);\n\t },\n\n\t forEachRowIndex: function(callback) {\n\t this.forEachAxisIndex('row', callback);\n\t },\n\n\t forEachAxisIndex: function(axis, callback) {\n\t var sorted = [];\n\n\t var method = axis === 'row' ? 'forEachRow' : 'forEachColumn';\n\n\t this[method](function(ref) {\n\t var index = ref.first()[axis];\n\t if (sorted.indexOf(index) === -1) {\n\t sorted.push(index);\n\t }\n\t });\n\n\t sorted.sort(function(a,b) {\n\t return a > b ? 1 : (a < b ? -1 : 0);\n\t }).forEach(callback);\n\t },\n\n\t valid: function() {\n\t return false;\n\t },\n\n\t renameSheet: function(oldSheetName, newSheetName) {\n\t if (this.sheet && this.sheet.toLowerCase() == oldSheetName.toLowerCase()) {\n\t this.sheet = newSheetName;\n\t return true;\n\t }\n\t }\n\t });\n\n\t Ref.display = displayRef;\n\n\t /* -----[ Null reference ]----- */\n\n\t var NULL = new (Ref.extend({\n\t init: function NullRef(){},\n\t print: function() {\n\t return \"#NULL!\";\n\t },\n\t eq: function(ref) {\n\t return ref === this;\n\t },\n\t forEach: function() {}\n\t }))();\n\n\t /* -----[ Name reference ]----- */\n\n\t var NameRef = Ref.extend({\n\t ref: \"name\",\n\t init: function NameRef(name){\n\t this.name = name;\n\t },\n\t clone: function() {\n\t return new NameRef(this.name)\n\t .setSheet(this.sheet, this.hasSheet());\n\t },\n\t print: function() {\n\t var ret = displaySheet(this.name);\n\t if (this.hasSheet()) {\n\t ret = displaySheet(this.sheet) + \"!\" + ret;\n\t }\n\t return ret;\n\t }\n\t });\n\n\t /* -----[ Cell reference ]----- */\n\n\t var CellRef = Ref.extend({\n\t ref: \"cell\",\n\t init: function CellRef(row, col, rel) {\n\t this.row = row;\n\t this.col = col;\n\t this.rel = rel || 0;\n\t },\n\t clone: function() {\n\t return new CellRef(this.row, this.col, this.rel)\n\t .setSheet(this.sheet, this.hasSheet());\n\t },\n\t intersect: function(ref) {\n\t if (ref instanceof CellRef) {\n\t if (this.eq(ref)) {\n\t return this;\n\t } else {\n\t return NULL;\n\t }\n\t }\n\t return ref.intersect(this);\n\t },\n\t print: function(trow, tcol, mod) {\n\t var col = this.col, row = this.row, rel = this.rel, abs;\n\t if (trow == null && rel) {\n\t var sheet = this.hasSheet() ? displaySheet(this.sheet) + \"!\" : \"\";\n\t if (isFinite(col)) {\n\t col = rel & 1 ? (\"C[\" + col + \"]\") : (\"C\" + (col + 1));\n\t } else {\n\t col = \"\";\n\t }\n\t if (isFinite(row)) {\n\t row = rel & 2 ? (\"R[\" + row + \"]\") : (\"R\" + (row + 1));\n\t } else {\n\t row = \"\";\n\t }\n\t return sheet + row + col;\n\t } else {\n\t abs = this.absolute(trow, tcol);\n\t if (mod) {\n\t // Hacks: see the big comment below in `absolute()`\n\t row = abs.row % 0x100000;\n\t col = abs.col % 0x4000;\n\t if (row < 0) {\n\t row += 0x100000;\n\t }\n\t if (col < 0) {\n\t col += 0x4000;\n\t }\n\t return displayRef(this._hasSheet && this.sheet, row, col, rel);\n\t }\n\t return abs.valid() ? displayRef(this._hasSheet && this.sheet, abs.row, abs.col, rel) : \"#REF!\";\n\t }\n\t },\n\t absolute: function(arow, acol) {\n\t var ret = this.clone();\n\t if (ret.rel & 3 === 0) {\n\t return ret; // already absolute\n\t }\n\n\t // Hacks: we make coordinates modulo 0x4000 (max col) and 0x100000 (max row). This\n\t // fixes importing relative references in definedName-s from Excel. Example in\n\t // Excel: select cell E3, open the Name Manager (in Formula tab) and define name\n\t // TEST with value Sheet1!A1:C3. The serialization of this name in XLSX is:\n\t //\n\t // Sheet1!XFA1048575:XFC1\n\t //\n\t // This is insane, of course, but oh well. Excel. If you type in E3 =SUM(TEST) it\n\t // works (it actually sums the cells), but if you type =SUM(Sheet1!XFA1048575:XFC1)\n\t // you get back zero. Let's see why SUM(TEST) works:\n\t //\n\t // XFA1048575:XFC1 E3\n\t // (zero-based indexes below)\n\t //\n\t // R[1048574]C[16380]:R[0]C[16382] + R2C4 = R1048576C16384:R2C16386\n\t // % (0x100000, 0x4000)\n\t // = R0C0:R2C2 (== A1:C3)\n\t //\n\t // So XFA1048575:XFC1 is relocated to E3 at evaluation time, and because we take\n\t // rows modulo 0x100000 and cols modulo 0x4000, we get back the correct range.\n\t //\n\t // IMO Excel should disallow A1-style relative references in name definitions\n\t // (simply because the meaning of the A1:C3 you type in Name Manager depends on the\n\t // active cell) and only allow R1C1 notation — that's unambiguous. But it doesn't.\n\t // Moreover, R1C1-style refs in XLSX are explicitly forbidden by the spec, and the\n\t // hacks above are not documented — how else could we have fun implementing a XLSX\n\t // reader?\n\t if (ret.rel & 1) {\n\t // relative col, add anchor\n\t ret.col = (ret.col + acol) % 0x4000;\n\t }\n\t if (ret.rel & 2) {\n\t // relative row, add anchor\n\t ret.row = (ret.row + arow) % 0x100000;\n\t }\n\n\t ret.rel = 0;\n\t return ret;\n\t },\n\t toRangeRef: function() {\n\t return new RangeRef(this, this);\n\t },\n\t relative: function(arow, acol, rel) {\n\t if (rel == null) {\n\t rel = this.rel;\n\t }\n\t var row = rel & 2 ? this.row - arow : this.row;\n\t var col = rel & 1 ? this.col - acol : this.col;\n\t return new CellRef(row, col, rel)\n\t .setSheet(this.sheet, this.hasSheet());\n\t },\n\t height: function() {\n\t return 1;\n\t },\n\t width: function() {\n\t return 1;\n\t },\n\t toString: function() {\n\t return displayRef(null, this.row, this.col, 3);\n\t },\n\t isCell: function() {\n\t return true;\n\t },\n\t leftColumn: function() {\n\t return this;\n\t },\n\t rightColumn: function() {\n\t return this;\n\t },\n\t topRow: function() {\n\t return this;\n\t },\n\t bottomRow: function() {\n\t return this;\n\t },\n\t forEachRow: function(callback) {\n\t callback(this.toRangeRef());\n\t },\n\t forEachColumn: function(callback) {\n\t callback(this.toRangeRef());\n\t },\n\t adjust: function(row, col, trow, tcol, forRow, start, delta) {\n\t var ref = this.absolute(row, col);\n\t if (forRow) {\n\t if (ref.row >= start) {\n\t if (delta < 0 && ref.row < start - delta) {\n\t return NULL;\n\t }\n\t ref.row += delta;\n\t }\n\t } else {\n\t if (ref.col >= start) {\n\t if (delta < 0 && ref.col < start - delta) {\n\t return NULL;\n\t }\n\t ref.col += delta;\n\t }\n\t }\n\t if (trow != null && tcol != null) {\n\t ref = ref.relative(trow, tcol, this.rel);\n\t }\n\t return ref;\n\t },\n\t valid: function() {\n\t if (this.rel) {\n\t throw new Error(\"valid() called on relative reference\");\n\t }\n\t var col = this.col, row = this.row;\n\t return !((isFinite(col) && col < 0) || (isFinite(row) && row < 0));\n\t }\n\t });\n\n\t /* -----[ Range reference ]----- */\n\n\t var RangeRef = Ref.extend({\n\t ref: \"range\",\n\t init: function RangeRef(tl, br) {\n\t if (tl._hasSheet && br._hasSheet && tl.sheet.toLowerCase() != br.sheet.toLowerCase()) {\n\t // \"3D\" reference\n\t this.endSheet = br.sheet;\n\t }\n\t // we want to drop any sheet information from the cells here.\n\t this.topLeft = new CellRef(tl.row, tl.col, tl.rel);\n\t this.bottomRight = new CellRef(br.row, br.col, br.rel);\n\t this.normalize();\n\t },\n\t clone: function() {\n\t return new RangeRef(this.topLeft.clone(), this.bottomRight.clone()).setSheet(this.sheet, this.hasSheet());\n\t },\n\t _containsRange: function(range) {\n\t return this._containsCell(range.topLeft)\n\t && this._containsCell(range.bottomRight);\n\t },\n\t _containsCell: function(cell) {\n\t return cell.sheet == this.sheet\n\t && cell.row >= this.topLeft.row\n\t && cell.col >= this.topLeft.col\n\t && cell.row <= this.bottomRight.row\n\t && cell.col <= this.bottomRight.col;\n\t },\n\t contains: function(ref) {\n\t if (ref instanceof Array) {\n\t var that = this;\n\n\t return ref.some(function(_ref) { return that.contains(_ref); });\n\t }\n\t if (ref instanceof CellRef) {\n\t return this._containsCell(ref);\n\t }\n\t if (ref instanceof RangeRef) {\n\t return this._containsRange(ref);\n\t }\n\t return false;\n\t },\n\t _intersectRange: function(ref) {\n\t if (this.sheet != ref.sheet) {\n\t return NULL;\n\t }\n\t var a_left = this.topLeft.col;\n\t var a_top = this.topLeft.row;\n\t var a_right = this.bottomRight.col;\n\t var a_bottom = this.bottomRight.row;\n\t var b_left = ref.topLeft.col;\n\t var b_top = ref.topLeft.row;\n\t var b_right = ref.bottomRight.col;\n\t var b_bottom = ref.bottomRight.row;\n\t if (a_left <= b_right &&\n\t b_left <= a_right &&\n\t a_top <= b_bottom &&\n\t b_top <= a_bottom)\n\t {\n\t return new RangeRef(\n\t // topLeft\n\t new CellRef(Math.max(a_top, b_top),\n\t Math.max(a_left, b_left)),\n\t // bottomRight\n\t new CellRef(Math.min(a_bottom, b_bottom),\n\t Math.min(a_right, b_right))\n\t ).setSheet(this.sheet, this.hasSheet());\n\t } else {\n\t return NULL;\n\t }\n\t },\n\t intersect: function(ref) {\n\t if (ref instanceof CellRef) {\n\t return this._containsCell(ref) ? ref : NULL;\n\t }\n\t if (ref instanceof RangeRef) {\n\t return this._intersectRange(ref).simplify();\n\t }\n\t if (ref instanceof UnionRef) {\n\t return ref.intersect(this);\n\t }\n\t return NULL; // can't handle NameRef-s here.\n\t },\n\t simplify: function() {\n\t if (this.isCell()) {\n\t return new CellRef(\n\t this.topLeft.row,\n\t this.topLeft.col,\n\t this.topLeft.rel\n\t ).setSheet(this.sheet, this.hasSheet());\n\t }\n\t return this;\n\t },\n\t normalize: function() {\n\t var a = this.topLeft, b = this.bottomRight;\n\t var r1 = a.row, c1 = a.col, r2 = b.row, c2 = b.col;\n\t var rr1 = a.rel & 2, rc1 = a.rel & 1;\n\t var rr2 = b.rel & 2, rc2 = b.rel & 1;\n\t var tmp, changes = false;\n\t // do not attempt to normalize unless relativeness of rows and cols are the same.\n\t // https://github.com/telerik/kendo-ui-core/issues/4278\n\t if (rr1 === rr2 && rc1 === rc2) {\n\t if (r1 > r2) {\n\t changes = true;\n\t tmp = r1; r1 = r2; r2 = tmp;\n\t tmp = rr1; rr1 = rr2; rr2 = tmp;\n\t }\n\t if (c1 > c2) {\n\t changes = true;\n\t tmp = c1; c1 = c2; c2 = tmp;\n\t tmp = rc1; rc1 = rc2; rc2 = tmp;\n\t }\n\t if (changes) {\n\t this.topLeft = new CellRef(r1, c1, rc1 | rr1);\n\t this.bottomRight = new CellRef(r2, c2, rc2 | rr2);\n\t }\n\t }\n\t return this;\n\t },\n\t print: function(trow, tcol, mod) {\n\t if (mod || this.absolute(trow, tcol).valid()) {\n\t var ret = this.topLeft.print(trow, tcol, mod)\n\t + \":\"\n\t + this.bottomRight.print(trow, tcol, mod);\n\t if (this.hasSheet()) {\n\t ret = displaySheet(this.sheet)\n\t + (this.endSheet ? \":\" + displaySheet(this.endSheet) : \"\")\n\t + \"!\" + ret;\n\t }\n\t return ret;\n\t }\n\t return \"#REF!\";\n\t },\n\t absolute: function(arow, acol) {\n\t return new RangeRef(\n\t this.topLeft.absolute(arow, acol),\n\t this.bottomRight.absolute(arow, acol)\n\t ).setSheet(this.sheet, this.hasSheet());\n\t },\n\t relative: function(arow, acol, relTL, relBR) {\n\t if (relBR == null) {\n\t relBR = relTL;\n\t }\n\t return new RangeRef(\n\t this.topLeft.relative(arow, acol, relTL),\n\t this.bottomRight.relative(arow, acol, relBR)\n\t ).setSheet(this.sheet, this.hasSheet());\n\t },\n\t height: function() {\n\t if (this.topLeft.rel != this.bottomRight.rel) {\n\t throw new Error(\"Mixed relative/absolute references\");\n\t }\n\t return this.bottomRight.row - this.topLeft.row + 1;\n\t },\n\t width: function() {\n\t if (this.topLeft.rel != this.bottomRight.rel) {\n\t throw new Error(\"Mixed relative/absolute references\");\n\t }\n\t return this.bottomRight.col - this.topLeft.col + 1;\n\t },\n\t collapse: function() {\n\t return this.topLeft.toRangeRef();\n\t },\n\t leftColumn: function() {\n\t return new RangeRef(this.topLeft, new CellRef(this.bottomRight.row, this.topLeft.col));\n\t },\n\t rightColumn: function() {\n\t return new RangeRef(new CellRef(this.topLeft.row, this.bottomRight.col), this.bottomRight);\n\t },\n\t topRow: function() {\n\t return new RangeRef(this.topLeft, new CellRef(this.topLeft.row, this.bottomRight.col));\n\t },\n\t bottomRow: function() {\n\t return new RangeRef(new CellRef(this.bottomRight.row, this.topLeft.col), this.bottomRight);\n\t },\n\t toRangeRef: function() {\n\t return this;\n\t },\n\t toRow: function(row) {\n\t row += Math.max(0, this.topLeft.row);\n\t return new RangeRef(\n\t new CellRef(row, this.topLeft.col),\n\t new CellRef(row, this.bottomRight.col)\n\t ).setSheet(this.sheet, this.hasSheet());\n\t },\n\t toColumn: function(col) {\n\t col += Math.max(0, this.topLeft.col);\n\t return new RangeRef(\n\t new CellRef(this.topLeft.row, col),\n\t new CellRef(this.bottomRight.row, col)\n\t ).setSheet(this.sheet, this.hasSheet());\n\t },\n\t toCell: function(row, col) {\n\t row += Math.max(0, this.topLeft.row);\n\t col += Math.max(0, this.topLeft.col);\n\t return new CellRef(row, col, 0)\n\t .setSheet(this.sheet, this.hasSheet());\n\t },\n\t forEachRow: function(callback) {\n\t var startRow = this.topLeft.row;\n\t var endRow = this.bottomRight.row;\n\t var startCol = this.topLeft.col;\n\t var endCol = this.bottomRight.col;\n\n\t for (var i = startRow; i <= endRow; i++) {\n\t callback(new RangeRef(\n\t new CellRef(i, startCol),\n\t new CellRef(i, endCol)\n\t ));\n\t }\n\t },\n\t forEachColumn: function(callback) {\n\t var startRow = this.topLeft.row;\n\t var endRow = this.bottomRight.row;\n\t var startCol = this.topLeft.col;\n\t var endCol = this.bottomRight.col;\n\n\t for (var i = startCol; i <= endCol; i++) {\n\t callback(new RangeRef(\n\t new CellRef(startRow, i),\n\t new CellRef(endRow, i)\n\t ));\n\t }\n\t },\n\t intersecting: function(refs) {\n\t return refs.filter(function(ref) {\n\t return ref.toRangeRef().intersects(this);\n\t }, this);\n\t },\n\n\t union: function(refs, callback) {\n\t var intersecting = this.intersecting(refs);\n\n\t var topLeftRow = this.topLeft.row;\n\t var topLeftCol = this.topLeft.col;\n\t var bottomRightRow = this.bottomRight.row;\n\t var bottomRightCol = this.bottomRight.col;\n\n\t var modified = false;\n\n\t intersecting.forEach(function(ref) {\n\t ref = ref.toRangeRef();\n\t if (ref.topLeft.row < topLeftRow) {\n\t modified = true;\n\t topLeftRow = ref.topLeft.row;\n\t }\n\n\t if (ref.topLeft.col < topLeftCol) {\n\t modified = true;\n\t topLeftCol = ref.topLeft.col;\n\t }\n\n\t if (ref.bottomRight.row > bottomRightRow) {\n\t modified = true;\n\t bottomRightRow = ref.bottomRight.row;\n\t }\n\n\t if (ref.bottomRight.col > bottomRightCol) {\n\t modified = true;\n\t bottomRightCol = ref.bottomRight.col;\n\t }\n\n\t if (callback) {\n\t callback(ref);\n\t }\n\t });\n\n\t var result = new RangeRef(\n\t new CellRef(topLeftRow, topLeftCol),\n\t new CellRef(bottomRightRow, bottomRightCol)\n\t );\n\n\t if (modified) {\n\t return result.union(refs, callback);\n\t } else {\n\t return result;\n\t }\n\t },\n\t resize: function(options) {\n\t var limit = Math.max.bind(Math, 0);\n\t function num(value) { return value || 0; }\n\n\t var top = this.topLeft.row + num(options.top);\n\t var left = this.topLeft.col + num(options.left);\n\t var bottom = this.bottomRight.row + num(options.bottom);\n\t var right = this.bottomRight.col + num(options.right);\n\n\t if (left < 0 && right < 0 || top < 0 && bottom < 0) {\n\t return NULL;\n\t } else if (top <= bottom && left <= right) {\n\t return new RangeRef(new CellRef(limit(top), limit(left)),\n\t new CellRef(limit(bottom), limit(right)));\n\t } else {\n\t return NULL;\n\t }\n\t },\n\t move: function(rows, cols) {\n\t return new RangeRef(\n\t new CellRef(this.topLeft.row + rows,\n\t this.topLeft.col + cols),\n\t new CellRef(this.bottomRight.row + rows,\n\t this.bottomRight.col + cols)\n\t );\n\t },\n\t first: function() {\n\t return this.topLeft.clone().setSheet(this.sheet, this.hasSheet());\n\t },\n\t isCell: function() {\n\t return !this.endSheet && this.topLeft.eq(this.bottomRight);\n\t },\n\t toString: function() {\n\t return this.topLeft + \":\" + this.bottomRight;\n\t },\n\t adjust: function(row, col, trow, tcol, forRow, start, delta) {\n\t var tl = this.topLeft.adjust(row, col, trow, tcol, forRow, start, delta);\n\t var tr = this.bottomRight.adjust(row, col, trow, tcol, forRow, start, delta);\n\t if (tl === NULL && tr === NULL) {\n\t return NULL;\n\t }\n\t if (tl === NULL) {\n\t tl = this.topLeft.absolute(row, col);\n\t if (forRow) {\n\t tl.row = start;\n\t } else {\n\t tl.col = start;\n\t }\n\t if (trow != null && tcol != null) {\n\t tl = tl.relative(trow, tcol, this.topLeft.rel);\n\t }\n\t }\n\t else if (tr === NULL) {\n\t tr = this.bottomRight.absolute(row, col);\n\t if (forRow) {\n\t tr.row = start - 1;\n\t } else {\n\t tr.col = start - 1;\n\t }\n\t if (trow != null && tcol != null) {\n\t tr = tr.relative(trow, tcol, this.bottomRight.rel);\n\t }\n\t }\n\t return new RangeRef(tl, tr)\n\t .setSheet(this.sheet, this.hasSheet())\n\t .simplify();\n\t },\n\t valid: function() {\n\t return this.topLeft.valid() && this.bottomRight.valid();\n\t }\n\t });\n\n\t /* -----[ Union reference ]----- */\n\n\t var UnionRef = Ref.extend({\n\t init: function UnionRef(refs){\n\t this.refs = refs;\n\t this.length = refs.length;\n\t },\n\t clone: function() {\n\t return new UnionRef(this.refs.slice());\n\t },\n\t intersect: function(ref) {\n\t var a = [];\n\t for (var i = 0; i < this.length; ++i) {\n\t var x = ref.intersect(this.refs[i]);\n\t if (x !== NULL) {\n\t a.push(x);\n\t }\n\t }\n\t if (a.length > 0) {\n\t return new UnionRef(a).simplify();\n\t }\n\t return NULL;\n\t },\n\t simplify: function() {\n\t var u = new UnionRef(this.refs.reduce(function(a, ref){\n\t ref = ref.simplify();\n\t if (ref !== NULL) {\n\t a.push(ref);\n\t }\n\t return a;\n\t }, []));\n\t if (u.empty()) {\n\t return NULL;\n\t }\n\t if (u.single()) {\n\t return u.refs[0];\n\t }\n\t return u;\n\t },\n\t absolute: function(arow, acol) {\n\t return new UnionRef(this.refs.map(function(ref){\n\t return ref.absolute(arow, acol);\n\t }));\n\t },\n\t forEach: function(callback, obj) {\n\t this.refs.forEach(function(ref){\n\t if (ref instanceof UnionRef) {\n\t ref.forEach(callback, obj);\n\t } else {\n\t callback.call(obj, ref);\n\t }\n\t }, obj);\n\t },\n\t toRangeRef: function() {\n\t return this.refs[0].toRangeRef();\n\t },\n\t contains: function(theRef) {\n\t return this.refs.some(function(ref) { return ref.contains(theRef); });\n\t },\n\t map: function(callback, obj) {\n\t var refs = [];\n\t this.forEach(function(ref){\n\t refs.push(callback.call(obj, ref));\n\t });\n\t return new UnionRef(refs);\n\t },\n\t first: function() {\n\t return this.refs[0].first();\n\t },\n\t lastRange: function() {\n\t return this.refs[this.length - 1];\n\t },\n\t size: function() {\n\t return this.length;\n\t },\n\t single: function() {\n\t return this.length == 1;\n\t },\n\t empty: function() {\n\t return this.length === 0;\n\t },\n\t isCell: function() {\n\t return this.single() && this.refs[0].isCell();\n\t },\n\t rangeAt: function(index) {\n\t return this.refs[index];\n\t },\n\t nextRangeIndex: function(index) {\n\t if (index === this.length - 1) {\n\t return 0;\n\t } else {\n\t return index + 1;\n\t }\n\t },\n\t previousRangeIndex: function(index) {\n\t if (index === 0) {\n\t return this.length - 1;\n\t } else {\n\t return index - 1;\n\t }\n\t },\n\t concat: function(ref) {\n\t return new UnionRef(this.refs.concat([ref]));\n\t },\n\t print: function(row, col, mod) {\n\t return this.refs.map(function(ref) { return ref.print(row, col, mod); }).join(\",\");\n\t },\n\n\t replaceAt: function(index, ref) {\n\t var newRefs = this.refs.slice();\n\t newRefs.splice(index, 1, ref);\n\t return new UnionRef(newRefs);\n\t },\n\n\t leftColumn: function() {\n\t return this.map(function(ref) {\n\t return ref.leftColumn();\n\t });\n\t },\n\t rightColumn: function() {\n\t return this.map(function(ref) {\n\t return ref.rightColumn();\n\t });\n\t },\n\t topRow: function() {\n\t return this.map(function(ref) {\n\t return ref.topRow();\n\t });\n\t },\n\t bottomRow: function() {\n\t return this.map(function(ref) {\n\t return ref.bottomRow();\n\t });\n\t },\n\t forEachRow: function(callback) {\n\t this.forEach(function(ref) {\n\t ref.forEachRow(callback);\n\t });\n\t },\n\t forEachColumn: function(callback) {\n\t this.forEach(function(ref) {\n\t ref.forEachColumn(callback);\n\t });\n\t },\n\t adjust: function(row, col, trow, tcol, forRow, start, delta) {\n\t return this.map(function(ref){\n\t return ref.adjust(row, col, trow, tcol, forRow, start, delta);\n\t }).simplify();\n\t },\n\t toString: function() {\n\t return this.refs.map(function(ref){\n\t return ref.toString();\n\t }).join(\", \");\n\t },\n\t valid: function() {\n\t for (var i = this.refs.length; --i >= 0;) {\n\t if (this.refs[i].valid()) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t },\n\t renameSheet: function(oldSheetName, newSheetName) {\n\t this.refs.forEach(function(ref){\n\t ref.renameSheet(oldSheetName, newSheetName);\n\t });\n\t }\n\t });\n\n\t /* -----[ exports ]----- */\n\n\t spreadsheet.NULLREF = NULL;\n\t spreadsheet.SHEETREF = new RangeRef(new CellRef(0, 0), new CellRef(Infinity, Infinity));\n\t spreadsheet.FIRSTREF = new CellRef(0, 0);\n\t spreadsheet.Ref = Ref;\n\t spreadsheet.NameRef = NameRef;\n\t spreadsheet.CellRef = CellRef;\n\t spreadsheet.RangeRef = RangeRef;\n\t spreadsheet.UnionRef = UnionRef;\n\n\t spreadsheet.SHEETREF.print = function() {\n\t return \"#SHEET\";\n\t };\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(1667);\n\tmodule.exports = __webpack_require__(1667);\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/***/ 957:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"../util/text-metrics\");\n\n/***/ }),\n\n/***/ 1662:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"../util/main\");\n\n/***/ }),\n\n/***/ 1667:\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__(957), __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\n\t var UnionRef = kendo.spreadsheet.UnionRef;\n\t var CellRef = kendo.spreadsheet.CellRef;\n\t var RangeRef = kendo.spreadsheet.RangeRef;\n\n\t var PROPERTIES = [\n\t \"color\", \"fontFamily\", \"underline\",\n\t \"italic\", \"bold\", \"textAlign\", \"indent\",\n\t \"verticalAlign\", \"background\", \"format\", \"link\", \"editor\",\n\t \"borderTop\", \"borderRight\", \"borderBottom\", \"borderLeft\",\n\t \"comment\", \"html\"\n\t ];\n\n\t var Range = kendo.Class.extend({\n\t init: function(ref, sheet) {\n\t this._sheet = sheet;\n\t this._ref = ref;\n\t },\n\n\t clone: function() {\n\t return new Range(this._ref.clone(), this._sheet);\n\t },\n\n\t skipHiddenCells: function() {\n\t var refs = [];\n\t var self = this, sheet = self._sheet;\n\t var skipHiddenRows = sheet.isHiddenRow.bind(sheet);\n\t var skipHiddenCols = sheet.isHiddenColumn.bind(sheet);\n\t self._ref.forEach(function(ref){\n\t ref = self._normalize(ref.toRangeRef());\n\t var tl = ref.topLeft, br = ref.bottomRight;\n\t var rows = partition(tl.row, br.row, skipHiddenRows);\n\t var cols = partition(tl.col, br.col, skipHiddenCols);\n\t for (var i = 0; i < rows.length; ++i) {\n\t for (var j = 0; j < cols.length; ++j) {\n\t refs.push(new RangeRef(\n\t new CellRef(rows[i].begin, cols[j].begin),\n\t new CellRef(rows[i].end, cols[j].end)\n\t ));\n\t }\n\t }\n\t });\n\t return sheet.range(refs.length > 1 ? new UnionRef(refs) : refs[0]);\n\t },\n\n\t _normalize: function(ref) {\n\t return this._sheet._grid.normalize(ref);\n\t },\n\n\t _set: function(name, value, noTrigger) {\n\t var self = this;\n\t var sheet = self._sheet;\n\t self._ref.forEach(function(ref) {\n\t var result = ref;\n\t var valueProp = name === \"value\" || name === \"formula\" || name === \"link\";\n\n\t // Set values/formulas/links only to the topLeft cell when merged\n\t if(valueProp && ref.topLeft) {\n\t var topLeftRef = new CellRef(ref.topLeft.row, ref.topLeft.col);\n\n\t sheet.forEachMergedCell(function(f){\n\t if(f.intersects(topLeftRef)) {\n\t result = topLeftRef;\n\t }\n\t });\n\t }\n\n\t sheet._set(result.toRangeRef(), name, value);\n\t });\n\t if (!noTrigger) {\n\t sheet.triggerChange({\n\t recalc : name == \"formula\" || name == \"value\" || name == \"validation\",\n\t value : value,\n\t range : self,\n\t ref : self._ref\n\t });\n\t }\n\t return self;\n\t },\n\n\t _get: function(name) {\n\t return this._sheet._get(this._ref.toRangeRef(), name);\n\t },\n\n\t _property: function(name, value) {\n\t if (value === undefined) {\n\t return this._get(name);\n\t } else {\n\t return this._set(name, value);\n\t }\n\t },\n\n\t value: function(value) {\n\t if (value !== undefined) {\n\t // When value is set through the public API we must clear the\n\t // formula. Don't trigger change (third parameter), it'll be\n\t // done when setting the value below\n\t this._set(\"formula\", null, true);\n\t }\n\t return this._property(\"value\", value);\n\t },\n\n\t html: function(value) {\n\t return this._property(\"html\", value);\n\t },\n\n\t resize: function(direction) {\n\t var ref = this._resizedRef(direction);\n\t return new Range(ref, this._sheet);\n\t },\n\n\t _resizedRef: function(direction) {\n\t return this._ref.map(function(ref) {\n\t return ref.toRangeRef().resize(direction);\n\t });\n\t },\n\n\t input: function(value, options) {\n\t options = $.extend({\n\t arrayFormula: false\n\t }, options);\n\t var existingFormat = this._get(\"format\"), x;\n\t if (value !== undefined) {\n\t var tl = this._ref.toRangeRef().topLeft;\n\t x = kendo.spreadsheet.calc.parse(this._sheet.name(), tl.row, tl.col, value, existingFormat);\n\t this._sheet.batch(function() {\n\t var formula = null;\n\t if (x.type == \"exp\") {\n\t formula = kendo.spreadsheet.calc.compile(x);\n\t } else if (existingFormat != \"@\") {\n\t var existingFormatType = existingFormat &&\n\t kendo.spreadsheet.formatting.type(x.value, existingFormat);\n\t if (x.type == \"date\" && existingFormatType != \"date\") {\n\t this.format(x.format || toExcelFormat(kendo.culture().calendar.patterns.d));\n\t } else if (x.type == \"percent\" && existingFormatType != \"percent\") {\n\t this.format(x.value*100 == (x.value*100|0) ? \"0%\" : \"0.00%\");\n\t } else if (x.format) {\n\t if (!existingFormat || x.currency ||\n\t (existingFormatType == \"number\" && x.type == \"number\" &&\n\t x.format.length > existingFormat.length)) {\n\t this.format(x.format);\n\t }\n\t }\n\t } else if (x.type != \"string\") {\n\t x.value = value;\n\t }\n\t this.formula(formula, options.arrayFormula);\n\t if (!formula) {\n\t // value() will clear the formula. Lucky for us,\n\t // x.value is undefined so it actually won't, but let's\n\t // be explicit and only set value if formula is not\n\t // present.\n\t this.value(x.value);\n\t }\n\t }.bind(this), { recalc: true, value: value, ref: this._ref, editorChange: this._sheet.isInEditMode() });\n\n\t return this;\n\t } else {\n\t value = this._get(\"value\");\n\t var formula = this._get(\"formula\");\n\t var type = existingFormat && !formula && kendo.spreadsheet.formatting.type(value, existingFormat);\n\n\t if (formula) {\n\t // it's a Formula object which stringifies to the\n\t // formula as text (without the starting `=`).\n\t value = \"=\" + formula;\n\t } else OUT: { // jshint ignore:line\n\t if (existingFormat && type == \"date\") {\n\t // check if we could parse back the displayed value.\n\t // https://github.com/telerik/kendo/issues/5335\n\t var t1 = kendo.spreadsheet.formatting.text(value, existingFormat);\n\t x = kendo.spreadsheet.calc.parse(null, null, null, t1, existingFormat); // it's not a formula so we don't need sheet/row/col\n\t var t2 = kendo.spreadsheet.formatting.text(x.value, existingFormat);\n\t if (t1 == t2) {\n\t value = t1;\n\t break OUT; // jshint ignore:line\n\t }\n\t }\n\t if (type === \"date\") {\n\t value = kendo.toString(kendo.spreadsheet.numberToDate(value), kendo.culture().calendar.patterns.d);\n\t } else if (type === \"percent\") {\n\t value = kendo.spreadsheet.calc.runtime.limitPrecision(value * 100) + \"%\";\n\t } else if (typeof value == \"string\" &&\n\t (/^[=']/.test(value) ||\n\t (/^(?:true|false)$/i).test(value) ||\n\t looksLikeANumber(value))) {\n\t value = \"'\" + value;\n\t } else if (this._sheet._useCultureDecimals() &&\n\t typeof value == \"number\" &&\n\t value != Math.floor(value)) {\n\t value = String(value).replace(\".\", kendo.culture().numberFormat[\".\"]);\n\t }\n\t }\n\n\t return value;\n\t }\n\t },\n\n\t enable: function(value) {\n\t if (value === undefined) {\n\t return !kendo.util.withExit(function(exit){\n\t this._sheet.forEach(this._ref, function(_, __, data) {\n\t if (data.enable === false) {\n\t exit(true);\n\t }\n\t });\n\t }, this);\n\t }\n\n\t return this._property(\"enable\", value);\n\t },\n\n\t formula: function(value, arrayFormula) {\n\t var self = this;\n\t if (value === undefined) {\n\t var f = self._get(\"formula\");\n\t return f ? \"\" + f : null; // stringify if present\n\t }\n\t if (arrayFormula) {\n\t // when setting an array formula, we want to set it on\n\t // the first cell only, as it will fill the whole\n\t // range.\n\t var ref = this._ref.toRangeRef();\n\t value = self._sheet.range(ref.topLeft)\n\t ._set(\"formula\", value)\n\t ._get(\"formula\"); // make sure we get the compiled Formula, not a string\n\n\t if (value) { // could be null.\n\t // this will be used in FormulaContext -- it's the\n\t // range that the formula must populate.\n\t value.setArrayFormulaRange(ref);\n\t }\n\t } else {\n\t self._set(\"formula\", value);\n\t }\n\t return self;\n\t },\n\n\t intersectingArrayFormula: function() {\n\t var ref = this._ref.clone().simplify().setSheet(this._sheet.name());\n\t return kendo.util.withExit(function(exit){\n\t this._sheet._forFormulas(function(f){\n\t var r = f.arrayFormulaRange;\n\t if (r && (r = ref.intersect(r)) !== kendo.spreadsheet.NULLREF) {\n\t exit({ formula: f, intersection: r });\n\t }\n\t });\n\t }, this);\n\t },\n\n\t canEditArrayFormula: function() {\n\t var x = this.intersectingArrayFormula();\n\t if (x) {\n\t // we want to allow editing only when the new range is\n\t // at least as big as the original range (i.e. no\n\t // cells removed)\n\t return x.formula.arrayFormulaRange.eq(x.intersection);\n\t }\n\t return true;\n\t },\n\n\t validation: function(value) {\n\t //TODO: Accept objects only?\n\n\t if (value === undefined) {\n\t var f = this._get(\"validation\");\n\n\t return f ? f.toJSON() : null; // stringify if present\n\t }\n\t return this._property(\"validation\", value);\n\t },\n\n\t _getValidationState: function() {\n\t var ref = this._ref.toRangeRef();\n\t var topLeftRow = ref.topLeft.row;\n\t var topLeftCol = ref.topLeft.col;\n\t var bottomRightRow = ref.bottomRight.row;\n\t var bottomRightCol = ref.bottomRight.col;\n\t var ci, ri;\n\n\t for (ci = topLeftCol; ci <= bottomRightCol; ci ++) {\n\t for (ri = topLeftRow; ri <= bottomRightRow; ri ++) {\n\t var validation = this._sheet._validation(ri, ci);\n\n\t if (validation && validation.type === \"reject\" && validation.value === false) {\n\t return validation;\n\t }\n\t }\n\t }\n\n\t return false;\n\t },\n\n\t merge: function() {\n\t this._ref = this._sheet._merge(this._ref);\n\t return this;\n\t },\n\n\t unmerge: function() {\n\t var mergedCells = this._sheet._mergedCells;\n\n\t this._ref.forEach(function(ref) {\n\t ref.toRangeRef().intersecting(mergedCells).forEach(function(mergedRef) {\n\t mergedCells.splice(mergedCells.indexOf(mergedRef), 1);\n\t });\n\t });\n\n\t this._sheet.triggerChange({});\n\n\t return this;\n\t },\n\n\t select: function() {\n\t this._sheet.select(this._ref);\n\n\t return this;\n\t },\n\n\t values: function(values) {\n\t if (this._ref instanceof UnionRef) {\n\t throw new Error(\"Unsupported for multiple ranges.\");\n\t }\n\n\t if (this._ref === kendo.spreadsheet.NULLREF) {\n\t if (values !== undefined) {\n\t throw new Error(\"Unsupported for NULLREF.\");\n\t } else {\n\t return [];\n\t }\n\t }\n\n\t var ref = this._ref.toRangeRef();\n\t var topLeftRow = ref.topLeft.row;\n\t var topLeftCol = ref.topLeft.col;\n\t var bottomRightRow = ref.bottomRight.row;\n\t var bottomRightCol = ref.bottomRight.col;\n\t var ci, ri;\n\n\t if (values === undefined) {\n\t values = new Array(ref.height());\n\n\t for (var vi = 0; vi < values.length; vi++) {\n\t values[vi] = new Array(ref.width());\n\t }\n\n\t for (ci = topLeftCol; ci <= bottomRightCol; ci ++) {\n\t for (ri = topLeftRow; ri <= bottomRightRow; ri ++) {\n\t values[ri - topLeftRow][ci - topLeftCol] = this._sheet._value(ri, ci);\n\t }\n\t }\n\n\t return values;\n\t } else {\n\t this._sheet._set(ref, \"formula\", null);\n\n\t for (ci = topLeftCol; ci <= bottomRightCol; ci ++) {\n\t for (ri = topLeftRow; ri <= bottomRightRow; ri ++) {\n\t var row = values[ri - topLeftRow];\n\n\t if (row) {\n\t var value = row[ci - topLeftCol];\n\n\t if (value !== undefined) {\n\t this._sheet._value(ri, ci, value);\n\t }\n\t }\n\t }\n\t }\n\n\t this._sheet.triggerChange({ recalc: true, ref: ref });\n\n\t return this;\n\t }\n\t },\n\n\t _properties: function(props, isAutofill) {\n\t if (this._ref instanceof UnionRef) {\n\t throw new Error(\"Unsupported for multiple ranges.\");\n\t }\n\n\t if (this._ref === kendo.spreadsheet.NULLREF) {\n\t if (props !== undefined) {\n\t throw new Error(\"Unsupported for NULLREF.\");\n\t } else {\n\t return [];\n\t }\n\t }\n\n\t var ref = this._ref.toRangeRef();\n\t var topLeftRow = ref.topLeft.row;\n\t var topLeftCol = ref.topLeft.col;\n\t var bottomRightRow = ref.bottomRight.row;\n\t var bottomRightCol = ref.bottomRight.col;\n\t var ci, ri;\n\t var sheet = this._sheet;\n\n\t if (props === undefined) {\n\t props = new Array(ref.height());\n\t sheet.forEach(ref, function(row, col, data){\n\t row -= topLeftRow;\n\t col -= topLeftCol;\n\t var line = props[row] || (props[row] = []);\n\t line[col] = data;\n\t });\n\t return props;\n\t }\n\t else {\n\t var data;\n\t ref = ref.clone();\n\t var setProp = function(propName) {\n\t var propValue = data[propName];\n\t ref.topLeft.row = ref.bottomRight.row = ri;\n\t ref.topLeft.col = ref.bottomRight.col = ci;\n\n\t if (propName == \"value\") {\n\t sheet._set(ref, \"formula\", null);\n\t }\n\n\t sheet._set(ref, propName, propValue);\n\t };\n\n\t for (ci = topLeftCol; ci <= bottomRightCol; ci ++) {\n\t if (!isAutofill && sheet.isHiddenColumn(ci)) {\n\t continue;\n\t }\n\t for (ri = topLeftRow; ri <= bottomRightRow; ri ++) {\n\t if (!isAutofill && sheet.isHiddenRow(ri)) {\n\t continue;\n\t }\n\t if (isAutofill && sheet.isFilteredRow(ri)) {\n\t continue;\n\t }\n\t var row = props[ri - topLeftRow];\n\t if (row) {\n\t data = row[ci - topLeftCol];\n\t if (data) {\n\t Object.keys(data).forEach(setProp);\n\t }\n\t }\n\t }\n\t }\n\t sheet.triggerChange({ recalc: true, ref: this._ref });\n\t return this;\n\t }\n\t },\n\n\t clear: function(options) {\n\t options = options || {};\n\t var clearAll = options.clearAll || !Object.keys(options).length;\n\n\t var sheet = this._sheet;\n\n\t var reason = {\n\t recalc: clearAll || options.contentsOnly,\n\t ref: this._ref\n\t };\n\n\t sheet.batch(function() {\n\n\t if (reason.recalc) {\n\t this.formula(null);\n\t }\n\n\t if (clearAll) {\n\t this.validation(null);\n\t }\n\n\t if (clearAll || options.formatOnly) {\n\t PROPERTIES.forEach(function(x) {\n\t if (!(options.keepBorders && /^border/i.test(x))) {\n\t this[x](null);\n\t }\n\t }.bind(this));\n\t this.fontSize(null);\n\t this.wrap(null);\n\t this.unmerge();\n\t }\n\n\t }.bind(this), reason);\n\n\t return this;\n\t },\n\n\t clearContent: function() {\n\t return this.clear({ contentsOnly: true });\n\t },\n\n\t clearFormat: function() {\n\t return this.clear({ formatOnly: true });\n\t },\n\n\t isSortable: function() {\n\t return !this.cantSort();\n\t },\n\n\t cantSort: function() {\n\t if (this._ref instanceof UnionRef) {\n\t return { code: \"cantSortMultipleSelection\",\n\t message: \"Unsupported for multiple ranges.\" };\n\t }\n\t if (this._ref === kendo.spreadsheet.NULLREF) {\n\t return { code: \"cantSortNullRef\",\n\t message: \"Unsupported for NULLREF.\" };\n\t }\n\t var mc = this._sheet._getMergedCells(this._ref.toRangeRef());\n\t var primary = mc.primary;\n\t var secondary = mc.secondary;\n\t var width = null, height = null;\n\t var cant = {};\n\t try {\n\t this._sheet.forEach(this, function(row, col){\n\t var id = new CellRef(row, col).print();\n\t var merged = primary[id];\n\t if (merged) {\n\t if (width === null) {\n\t width = merged.width();\n\t height = merged.height();\n\t } else if (!(width == merged.width() && height == merged.height())) {\n\t throw cant;\n\t }\n\t }\n\t else if (!secondary[id] && mc.hasMerged) {\n\t throw cant;\n\t }\n\t });\n\t } catch(ex) {\n\t if (ex !== cant) {\n\t throw ex;\n\t }\n\t return {\n\t code: \"cantSortMixedCells\",\n\t message: \"Unsupported for range containing cells of different shapes.\"\n\t };\n\t }\n\t return false;\n\t },\n\n\t sort: function(spec) {\n\t var reason = this.cantSort();\n\t if (reason) {\n\t throw new Error(reason.message);\n\t }\n\n\t if (spec === undefined) {\n\t spec = { column: 0 };\n\t }\n\n\t spec = spec instanceof Array ? spec : [spec];\n\n\t this._sheet._sortBy(this._ref.toRangeRef(), spec.map(function(spec, index) {\n\t if (typeof spec === \"number\") {\n\t spec = { column: spec };\n\t }\n\n\t return {\n\t index: spec.column === undefined ? index : spec.column,\n\t ascending: spec.ascending === undefined ? true : spec.ascending\n\t };\n\t }));\n\n\t return this;\n\t },\n\n\t isFilterable: function() {\n\t return !(this._ref instanceof UnionRef);\n\t },\n\n\t filter: function(spec) {\n\t if (this._ref instanceof UnionRef) {\n\t throw new Error(\"Unsupported for multiple ranges.\");\n\t }\n\n\t if (spec === false) {\n\t this.clearFilters();\n\t } else {\n\t spec = spec === true ? [] : spec instanceof Array ? spec : [spec];\n\n\t this._sheet._filterBy(this._ref.toRangeRef(), spec.map(function(spec, index) {\n\t return {\n\t index: spec.column === undefined ? index : spec.column,\n\t filter: spec.filter\n\t };\n\t }));\n\t }\n\n\t return this;\n\t },\n\n\t clearFilter: function(spec) {\n\t this._sheet.clearFilter(spec);\n\t },\n\n\t clearFilters: function() {\n\t var filter = this._sheet.filter();\n\t var spec = [];\n\n\t if (filter) {\n\t for (var i = 0; i < filter.columns.length; i++) {\n\t spec.push(filter.columns[i].index);\n\t }\n\n\t this._sheet.batch(function() {\n\t this.clearFilter(spec);\n\t this._filter = null;\n\t }, { layout: true, filter: true });\n\t }\n\t },\n\n\t hasFilter: function() {\n\t var filter = this._sheet.filter();\n\t return !!filter;\n\t },\n\n\t leftColumn: function() {\n\t return new Range(this._ref.leftColumn(), this._sheet);\n\t },\n\n\t rightColumn: function() {\n\t return new Range(this._ref.rightColumn(), this._sheet);\n\t },\n\n\t topRow: function() {\n\t return new Range(this._ref.topRow(), this._sheet);\n\t },\n\n\t bottomRow: function() {\n\t return new Range(this._ref.bottomRow(), this._sheet);\n\t },\n\n\t column: function(column) {\n\t return new Range(this._ref.toColumn(column), this._sheet);\n\t },\n\n\t row: function(row) {\n\t return new Range(this._ref.toRow(row), this._sheet);\n\t },\n\n\t forEachRow: function(callback) {\n\t this._ref.forEachRow(function(ref) {\n\t callback(new Range(ref, this._sheet));\n\t }.bind(this));\n\t },\n\n\t forEachColumn: function(callback) {\n\t this._ref.forEachColumn(function(ref) {\n\t callback(new Range(ref, this._sheet));\n\t }.bind(this));\n\t },\n\n\t sheet: function() {\n\t return this._sheet;\n\t },\n\n\t topLeft: function() {\n\t return this._ref.toRangeRef().topLeft;\n\t },\n\n\t intersectingMerged: function() {\n\t var sheet = this._sheet;\n\t var mergedCells = [];\n\n\t sheet._mergedCells.forEach(function(ref) {\n\t if (ref.intersects(this._ref)) {\n\t mergedCells.push(ref.toString());\n\t }\n\t }.bind(this));\n\n\t return mergedCells;\n\t },\n\n\t getState: function(propertyName) {\n\t var topLeft = this._ref.first();\n\t var state = {\n\t ref : topLeft,\n\t data : [],\n\t origRef : this._ref,\n\n\t // save row heights\n\t rows : this._sheet._rows.getState()\n\t };\n\t var properties;\n\t if (!propertyName) {\n\t properties = kendo.spreadsheet.ALL_PROPERTIES;\n\t state.mergedCells = this.intersectingMerged();\n\t } else if (propertyName === \"input\") {\n\t properties = [\"value\", \"formula\"];\n\t } else if (propertyName === \"border\") {\n\t properties = [\"borderLeft\", \"borderTop\", \"borderRight\", \"borderBottom\"];\n\t } else {\n\t properties = [propertyName];\n\t }\n\n\t var data = state.data;\n\t this.forEachCell(function(row, col, cell) {\n\t var cellState = {};\n\t var dr = row - topLeft.row;\n\t var dc = col - topLeft.col;\n\t if (!data[dr]) {\n\t data[dr] = [];\n\t }\n\t data[dr][dc] = cellState;\n\n\t properties.forEach(function(property) {\n\t var value = typeof cell[property] == \"undefined\" ? null : cell[property];\n\t if (value instanceof kendo.spreadsheet.calc.runtime.Formula ||\n\t value instanceof kendo.spreadsheet.validation.Validation)\n\t {\n\t value = value.deepClone();\n\t }\n\t cellState[property] = value;\n\t });\n\t });\n\n\t return state;\n\t },\n\n\t setState: function(state, clipboard) {\n\t var sheet = this._sheet;\n\t var origin = this._ref.first();\n\t var rowDelta = state.ref.row - origin.row;\n\t var colDelta = state.ref.col - origin.col;\n\t var internalClipboard = clipboard && !clipboard.isExternal();\n\t var externalClipboard = clipboard && !internalClipboard;\n\n\t sheet.batch(function() {\n\t if (state.mergedCells) {\n\t this.unmerge();\n\t }\n\n\t if (!clipboard) {\n\t // restore row heights. they won't be available\n\t // when this function is called from the clipboard\n\t // code.\n\t this._sheet._rows.setState(state.rows);\n\t }\n\n\t var row = origin.row;\n\t var hasFilter = this.hasFilter();\n\t state.data.forEach(function(data, dr){\n\t if (hasFilter && internalClipboard && sheet.isHiddenRow(state.ref.row + dr)) {\n\t return;\n\t }\n\t var col = origin.col;\n\t data.forEach(function(cellState, dc){\n\t if (hasFilter && internalClipboard && sheet.isHiddenColumn(state.ref.col + dc)) {\n\t return;\n\t }\n\t var range = clipboard ? sheet.range(row, col)\n\t : sheet.range(origin.row + dr, origin.col + dc);\n\t if (range.enable()) {\n\t for (var property in cellState) {\n\t if (property != \"value\") {\n\t // make sure value comes last (after the loop),\n\t // because if we set value here and get get to\n\t // formula later and cellState.formula is null,\n\t // it'll clear the value.\n\n\t // when pasting, do not copy \"disabled\" state\n\t if (!(clipboard && property == \"enable\")) {\n\t range._set(property, cellState[property]);\n\t }\n\t }\n\t }\n\t if (!cellState.formula) {\n\t // only need to set the value if we don't have a\n\t // formula. Go through the lower level setter rather\n\t // than range.value(...), because range.value will clear\n\t // the formula! chicken and egg issues.\n\t if (externalClipboard) {\n\t // https://github.com/telerik/kendo-ui-core/issues/1688\n\t // if we have a paste from external source, we should parse the\n\t // value as if it were inputted. This allows to treat numbers\n\t // as numbers, or `=sum(a1:b2)` as formula (Google Sheets does\n\t // the same). A difference though is that we can't store an\n\t // invalid Formula and display #ERROR, like G.S. does, so in\n\t // case of a parse error we'll just set the value as string.\n\t try {\n\t if (cellState.value == null) { // jshint ignore:line\n\t range._set(\"value\", null);\n\t } else {\n\t range.input(cellState.value);\n\t }\n\t } catch(ex) {\n\t range._set(\"value\", cellState.value);\n\t }\n\t } else {\n\t range._set(\"value\", cellState.value);\n\t }\n\t }\n\t }\n\t col++;\n\t });\n\t row++;\n\t });\n\n\t if (state.mergedCells) {\n\t state.mergedCells.forEach(function(merged) {\n\t merged = sheet._ref(merged).relative(rowDelta, colDelta, 3);\n\t sheet.range(merged).merge();\n\t }, this);\n\t }\n\t }.bind(this), { recalc: true, ref: this._ref });\n\t },\n\n\t _adjustRowHeight: function() {\n\t var that = this;\n\t var sheet = that._sheet;\n\t var mc = sheet._getMergedCells(that._ref.toRangeRef());\n\t var primary = mc.primary;\n\t var secondary = mc.secondary;\n\n\t sheet.batch(function() {\n\t that.forEachRow(function(rowRange){\n\t var row = rowRange._ref.topLeft.row;\n\t var height = sheet.rowHeight(row);\n\t if (!height) {\n\t // do not adjust if hidden.\n\t // https://github.com/telerik/kendo-ui-core/issues/6272\n\t // (case 2)\n\t return;\n\t }\n\t rowRange.forEachCell(function(row, col, cell){\n\t var id = new CellRef(row, col).print();\n\t if (secondary[id]) {\n\t return;\n\t }\n\t var merged = primary[id];\n\t var width;\n\t if (merged) {\n\t width = sheet._columns.sum(merged.topLeft.col,\n\t merged.bottomRight.col);\n\t } else {\n\t width = sheet.columnWidth(col);\n\t }\n\t var data = cell.value;\n\t if (cell.format && data != null) { // jshint ignore:line\n\t data = kendo.spreadsheet.formatting.format(data, cell.format);\n\t }\n\t var textHeight = kendo.spreadsheet.util.getTextHeight(\n\t data, width, cell.fontFamily, cell.fontSize, cell.wrap);\n\t height = Math.max(height, textHeight);\n\t });\n\t sheet.rowHeight(row, height);\n\t });\n\t }, { layout: true });\n\t },\n\n\t forEachCell: function(callback) {\n\t this._ref.forEach(function(ref) {\n\t this._sheet.forEach(ref.toRangeRef(), callback.bind(this));\n\t }.bind(this));\n\t },\n\n\t hasValue: function() {\n\t var defStyle = this._sheet._defaultCellStyle;\n\t return kendo.util.withExit(function(exit){\n\t this.forEachCell(function(row, col, cell) {\n\t // we must not consider cells that only have same values\n\t // as defaultCellStyle, or otherwise we will forbid\n\t // inserting rows/cols in an empty sheet.\n\t for (var key in cell) {\n\t var val = cell[key];\n\t if (val !== undefined && val !== null && val !== defStyle[key]) {\n\t exit(true);\n\t }\n\t }\n\t });\n\t }, this);\n\t },\n\n\t wrap: function(flag) {\n\t if (flag === undefined) {\n\t return !!this._property(\"wrap\");\n\t }\n\t this._property(\"wrap\", flag);\n\t if (flag !== null) {\n\t this._adjustRowHeight();\n\t }\n\t return this;\n\t },\n\n\t fontSize: function(size) {\n\t if (size === undefined) {\n\t return this._property(\"fontSize\");\n\t }\n\t this._property(\"fontSize\", size);\n\t if (size !== null) {\n\t this._adjustRowHeight();\n\t }\n\t return this;\n\t },\n\n\t draw: function(options, callback) {\n\t this._sheet.draw(this, options, callback);\n\t },\n\n\t insideBorders: function(value) {\n\t return this.insideVerticalBorders(value).insideHorizontalBorders(value);\n\t },\n\n\t insideVerticalBorders: function(value) {\n\t this._ref.forEach(function(ref){\n\t if (ref instanceof RangeRef && ref.width() > 1) {\n\t ref = ref.clone();\n\t ref.topLeft.col++;\n\t this._sheet.range(ref)._set(\"vBorders\", value);\n\t }\n\t }, this);\n\t return this;\n\t },\n\n\t insideHorizontalBorders: function(value) {\n\t this._ref.forEach(function(ref){\n\t if (ref instanceof RangeRef && ref.height() > 1) {\n\t ref = ref.clone();\n\t ref.topLeft.row++;\n\t this._sheet.range(ref)._set(\"hBorders\", value);\n\t }\n\t }, this);\n\t return this;\n\t }\n\t });\n\n\t function partition(begin, end, predicate) {\n\t while (begin <= end && predicate(begin)) {\n\t begin++;\n\t }\n\t if (begin > end) {\n\t return [];\n\t }\n\t for (var i = begin + 1; i <= end; ++i) {\n\t if (predicate(i)) {\n\t return [\n\t { begin: begin, end: i - 1 }\n\t ].concat(partition(i + 1, end, predicate));\n\t }\n\t }\n\t return [{ begin: begin, end: end }];\n\t }\n\n\t // use $.each instead of forEach to work in oldIE\n\t $.each(PROPERTIES, function(i, property) {\n\t Range.prototype[property] = function(value) {\n\t return this._property(property, value);\n\t };\n\t });\n\n\t function toExcelFormat(format) {\n\t return format.replace(/M/g, \"m\").replace(/'/g, '\"').replace(/tt/, \"am/pm\");\n\t }\n\n\t function looksLikeANumber(str) {\n\t // XXX: could do with just a regexp instead of calling parse.\n\t return !(/^=/.test(str)) && (/number|percent/).test(kendo.spreadsheet.calc.parse(null, 0, 0, str).type);\n\t }\n\n\t var measureBox = $(''\n\t )[0];\n\n\t function getTextHeight(text, width, fontFamily, fontSize, wrap) {\n\t var styles = {\n\t \"baselineMarkerSize\" : 0,\n\t \"width\" : (wrap === true) ? width + \"px\" : \"auto\",\n\t \"font-size\" : (fontSize || 12) + \"px\",\n\t \"font-family\" : fontFamily || \"Arial\",\n\t \"white-space\" : (wrap === true) ? \"pre-wrap\" : \"pre\",\n\t \"overflow-wrap\" : (wrap === true) ? \"break-word\" : \"normal\",\n\t \"word-wrap\" : (wrap === true) ? \"break-word\" : \"normal\"\n\t };\n\n\t return kendo.util.measureText(text, styles, { box: measureBox, normalizeText: false }).height;\n\t }\n\n\t kendo.spreadsheet.util = { getTextHeight: getTextHeight };\n\t kendo.spreadsheet.Range = Range;\n\t})(window.kendo);\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(1668);\n\tmodule.exports = __webpack_require__(1668);\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/***/ 1668:\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_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 RangeTreeNode = kendo.Class.extend({\n\t init: function Node(level, value, left, right) {\n\t this.level = level;\n\t this.value = value;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t });\n\n\t var NilNode = new (function NIL() { // jshint ignore:line\n\t this.left = this;\n\t this.right = this;\n\t this.level = 0;\n\t })();\n\n\t function skew(node) {\n\t if (node.left.level === node.level) {\n\t var temp = node;\n\t node = node.left;\n\t temp.left = node.right;\n\t node.right = temp;\n\t }\n\n\t return node;\n\t }\n\n\t function split(node) {\n\t if (node.right.right.level === node.level) {\n\t var temp = node;\n\t node = node.right;\n\t temp.right = node.left;\n\t node.left = temp;\n\t node.level += 1;\n\t }\n\n\t return node;\n\t }\n\n\t function insert(node, value) {\n\t if (node === NilNode) {\n\t return new RangeTreeNode(1, value, NilNode, NilNode);\n\t } else if (node.value.start > value.start) {\n\t node.left = insert(node.left, value);\n\t } else {\n\t node.right = insert(node.right, value);\n\t }\n\n\t return split(skew(node));\n\t }\n\n\t function remove(node, value) {\n\t if (node === NilNode) {\n\t return node;\n\t }\n\n\t var diff = node.value.start - value.start;\n\t if (diff === 0) {\n\t if (node.left !== NilNode && node.right !== NilNode) {\n\t var heir = node.left;\n\n\t while (heir.right !== NilNode) {\n\t heir = heir.right;\n\t }\n\n\t node.value = heir.value;\n\t node.left = remove(node.left, node.value);\n\t } else if (node.left === NilNode) {\n\t node = node.right;\n\t } else {\n\t node = node.left;\n\t }\n\t } else if (diff > 0) {\n\t node.left = remove(node.left, value);\n\t } else {\n\t node.right = remove(node.right, value);\n\t }\n\n\t if (node.left.level < (node.level - 1) || node.right.level < (node.level - 1)) {\n\t node.level -= 1;\n\t if (node.right.level > node.level) {\n\t node.right.level = node.level;\n\t }\n\n\t node = skew(node);\n\t node.right = skew(node.right);\n\t node.right.right = skew(node.right.right);\n\t node = split(node);\n\t node.right = split(node.right);\n\t }\n\n\t return node;\n\t }\n\n\t var Range = kendo.Class.extend({\n\t init: function ValueRange(start, end, value) {\n\t this.start = start;\n\t this.end = end;\n\t this.value = value;\n\t },\n\n\t intersects: function(range) {\n\t return range.start <= this.end && range.end >= this.start;\n\t },\n\n\t clone: function() {\n\t return new Range(this.start, this.end, this.value);\n\t }\n\t });\n\n\t var RangeTree = kendo.Class.extend({\n\t init: function() {\n\t this.root = NilNode;\n\t },\n\n\t insert: function(value) {\n\t this.root = insert(this.root, value);\n\t },\n\n\t remove: function(value) {\n\t this.root = remove(this.root, value);\n\t },\n\n\t findrange: function(value) {\n\t var node = this.root;\n\n\t while (node != NilNode) {\n\t if (value < node.value.start) {\n\t node = node.left;\n\t } else if (value > node.value.end) {\n\t node = node.right;\n\t } else {\n\t return node.value;\n\t }\n\t }\n\n\t return null;\n\t },\n\n\t values: function() {\n\t var result = [];\n\t values(this.root, result);\n\t return result;\n\t },\n\n\t intersecting: function(start, end) {\n\t var ranges = [];\n\t intersecting(this.root, new Range(start, end), ranges);\n\t return ranges;\n\t },\n\n\t map: function(callback) {\n\t var tree = new RangeTree();\n\t map(tree, this.root, callback);\n\t return tree;\n\t },\n\n\t clone: function() {\n\t return this.map(function(value) {\n\t return value.clone();\n\t });\n\t },\n\n\t first: function() {\n\t var first = this.root;\n\t while(first.left != NilNode) {\n\t first = first.left;\n\t }\n\n\t return first;\n\t },\n\n\t last: function() {\n\t var last = this.root;\n\t while(last.right != NilNode) {\n\t last = last.right;\n\t }\n\n\t return last;\n\t }\n\t });\n\n\t function values(node, result) {\n\t if (node === NilNode) {\n\t return;\n\t }\n\n\t values(node.left, result);\n\t result.push(node.value);\n\t values(node.right, result);\n\t }\n\n\t function intersecting(node, range, ranges) {\n\t if (node === NilNode) {\n\t return;\n\t }\n\n\t var value = node.value;\n\n\t if (range.start < value.start) {\n\t intersecting(node.left, range, ranges);\n\t }\n\n\t if (value.intersects(range)) {\n\t ranges.push(value);\n\t }\n\n\t if (range.end > value.end) {\n\t intersecting(node.right, range, ranges);\n\t }\n\t }\n\n\t function map(tree, root, callback) {\n\t if (root === NilNode) {\n\t return;\n\t }\n\n\t map(tree, root.left, callback);\n\t tree.insert(callback(root.value));\n\t map(tree, root.right, callback);\n\t }\n\n\t var RangeList = kendo.Class.extend({\n\t init: function(start, end, value) {\n\t if (end === undefined) {\n\t this.tree = start;\n\t } else {\n\t this.tree = new RangeTree();\n\t this.tree.insert(new Range(start, end, value));\n\t }\n\t },\n\n\t values: function() {\n\t return this.tree.values();\n\t },\n\n\t map: function(callback) {\n\t return new RangeList(this.tree.map(callback));\n\t },\n\n\t intersecting: function(start, end) {\n\t return this.tree.intersecting(start, end);\n\t },\n\n\t first: function() {\n\t return this.tree.first().value;\n\t },\n\n\t last: function() {\n\t return this.tree.last().value;\n\t },\n\n\t insert: function(start, end, value) {\n\t return this.tree.insert(new Range(start, end, value));\n\t },\n\n\t value: function(start, end, value) {\n\t if (value === undefined) {\n\t if (end === undefined) {\n\t end = start;\n\t }\n\t return this.intersecting(start, end)[0].value;\n\t }\n\n\t var ranges = this.tree.intersecting(start - 1, end + 1);\n\n\t if (ranges.length) {\n\t var firstRange = ranges[0], lastRange = ranges[ranges.length - 1];\n\n\t if (firstRange.end < start) {\n\t if (firstRange.value === value) {\n\t start = firstRange.start;\n\t } else {\n\t ranges.shift();\n\t }\n\t }\n\n\t if (lastRange.start > end) {\n\t if (lastRange.value === value) {\n\t end = lastRange.end;\n\t } else {\n\t ranges.pop();\n\t }\n\t }\n\n\t for (var i = 0, length = ranges.length; i < length; i++) {\n\t var range = ranges[i];\n\t var rangeValue = range.value;\n\t var rangeStart = range.start;\n\t var rangeEnd = range.end;\n\n\t this.tree.remove(range);\n\n\t if (rangeStart < start) {\n\t if (rangeValue !== value) {\n\t this.insert(rangeStart, start - 1, rangeValue);\n\t } else {\n\t start = rangeStart;\n\t }\n\t }\n\n\t if (rangeEnd > end) {\n\t if (rangeValue !== value) {\n\t this.insert(end + 1, rangeEnd, rangeValue);\n\t } else {\n\t end = rangeEnd;\n\t }\n\t }\n\t }\n\t }\n\n\t this.insert(start, end, value);\n\t },\n\n\t expandedValues: function(start, end) {\n\t var ranges = this.intersecting(start, end);\n\t var result = [];\n\n\t var rangeIndex = 0;\n\n\t for (var i = start; i <= end; i++) {\n\t if (ranges[rangeIndex].end < i) {\n\t rangeIndex ++;\n\t }\n\n\t result.push({ index: i - start, value: ranges[rangeIndex].value });\n\t }\n\n\t return result;\n\t },\n\n\t sortedIndices: function(start, end, valueComparer, indices) {\n\t var result = this.expandedValues(start, end);\n\n\t var comparer = function(a, b) {\n\t if (a.value === b.value) {\n\t return a.index - b.index;\n\t }\n\n\t return valueComparer(a.value, b.value);\n\t };\n\n\t if (indices) {\n\t comparer = function(a, b) {\n\t var x = indices[a.index];\n\t var y = indices[b.index];\n\n\t if (x.value === y.value) {\n\t return valueComparer(a.value, b.value);\n\t }\n\n\t return a.index - b.index;\n\t };\n\t }\n\n\t result.sort(comparer);\n\n\t return result;\n\t },\n\n\t sort: function(start, end, indices) {\n\t if (this.intersecting(start, end).length === 1) {\n\t return;\n\t }\n\n\t var values = this.expandedValues(start, end);\n\n\t for (var i = 0, len = indices.length; i < len; i++) {\n\t this.value(i + start, i + start, values[indices[i].index].value);\n\t }\n\t },\n\n\t copy: function(sourceStart, sourceEnd, targetStart) {\n\t var values = this.intersecting(sourceStart, sourceEnd);\n\n\t var start = targetStart;\n\t var end;\n\n\t for (var i = 0, len = values.length; i < len; i++) {\n\t var rangeStart = values[i].start;\n\n\t if (rangeStart < sourceStart) {\n\t rangeStart = sourceStart;\n\t }\n\n\t var rangeEnd = values[i].end;\n\n\t if (rangeEnd > sourceEnd) {\n\t rangeEnd = sourceEnd;\n\t }\n\n\t end = start + (rangeEnd - rangeStart);\n\n\t this.value(start, end, values[i].value);\n\n\t start = ++end;\n\t }\n\t },\n\n\t iterator: function(start, end) {\n\t return new Iterator(start, end, this.intersecting(start, end));\n\t },\n\n\t getState: function() {\n\t return this.tree.clone();\n\t },\n\n\t setState: function(state) {\n\t this.tree = state.clone();\n\t },\n\n\t toJSON: function() {\n\t return this.values();\n\t },\n\n\t fromJSON: function(values) {\n\t values.forEach(function(v){\n\t this.value(v.start, v.end, v.value);\n\t }, this);\n\t }\n\t });\n\n\t var Iterator = kendo.Class.extend({\n\t init: function(start, end, ranges) {\n\t this.start = start;\n\t this.end = end;\n\t this.index = 0;\n\t this.ranges = ranges;\n\t },\n\n\t unique: function() {\n\t return this.ranges.map(function(range) {\n\t return range.value;\n\t });\n\t },\n\n\t at: function(index) {\n\t while (this.ranges[this.index] && this.ranges[this.index].end < index) {\n\t this.index ++;\n\t }\n\n\t return this.ranges[this.index] && this.ranges[this.index].value;\n\t },\n\n\t forEach: function(callback) {\n\t for (var i = this.start; i <= this.end; i++) {\n\t callback(this.at(i), i);\n\t }\n\n\t this.index = 0;\n\t }\n\t });\n\n\t var SparseRangeList = RangeList.extend({\n\t init: function(start, end, value) {\n\t this.tree = new RangeTree();\n\t this.range = new Range(start, end, value);\n\t },\n\n\t intersecting: function(start, end) {\n\t var ranges = this.tree.intersecting(start, end);\n\t var result = [];\n\t var range;\n\n\t if (!ranges.length) {\n\t return [this.range];\n\t }\n\n\t for (var i = 0, len = ranges.length; i < len; i++) {\n\t range = ranges[i];\n\t if (range.start > start) {\n\t result.push(new Range(start, range.start - 1, this.range.value));\n\t }\n\n\t result.push(range);\n\t start = range.end + 1;\n\t }\n\n\t if (range.end < end) {\n\t result.push(new Range(range.end + 1, end, this.range.value));\n\t }\n\n\t return result;\n\t },\n\n\t insert: function(start, end, value) {\n\t if (value !== this.range.value) {\n\t this.tree.insert(new Range(start, end, value));\n\t }\n\t },\n\n\t lastRangeStart: function() {\n\t var node = this.tree.root;\n\n\t if (node === NilNode) {\n\t return this.range.start;\n\t }\n\n\t while(node.right !== NilNode) {\n\t node = node.right;\n\t }\n\n\t return node.value.end + 1;\n\t }\n\t });\n\n\n\t kendo.spreadsheet.RangeTree = RangeTree;\n\t kendo.spreadsheet.RangeList = RangeList;\n\t kendo.spreadsheet.SparseRangeList = SparseRangeList;\n\t kendo.spreadsheet.ValueRange = Range;\n\t})(kendo);\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });"],"sourceRoot":""}