{"version":3,"sources":["webpack:///./node_modules/@progress/kendo-ui/js/orgchart/view.js","webpack:///./node_modules/@progress/kendo-ui/js/ooxml/utils.js","webpack:///./node_modules/@progress/kendo-ui/js/ooxml/main.js","webpack:///./node_modules/@progress/kendo-ui/js/orgchart/data.js","webpack:///./node_modules/@progress/kendo-ui/js/ooxml/kendo-ooxml.js"],"names":["module","exports","modules","installedModules","__webpack_require__","moduleId","id","loaded","call","m","c","p","0","3","Error","20","1059","1605","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","jQuery","f","define","apply","undefined","$","kendo","window","keys","extend","proxy","NS","BLUR","CLICK","COLLAPSE","EXPAND","FOCUS","KEYDOWN","MENU","SELECT","DOT","SPACE","COMMA","HASH","STRING","TABINDEX","ID","UID","PX","PLUS","MINUS","ARIA_OWNS","ARIA_SELECTED","ORGCHART_STYLES","wrapper","container","line","lineVertical","lineHorizontal","lineVerticalTop","group","groupVertical","groupHorizontal","nodesGroup","nodesGroupContainer","nodeContainer","node","card","cardMenu","button","focused","plusIcon","menuItem","avatarPreview","update","cancel","vstack","hstack","ROOT_TEMPLATE","GROUP_TEMPLATE","NODE_GROUP_CONTAINER","NODE_CONTAINER","NODE_CONTAINER_GROUPED","ITEM_TEMPLATE","BUTTON_TEMPLATE","CARD_TEMPLATE","CARD_WRAPPER","GROUPED_CARD_WRAPPER","View","Observable","init","element","options","this","fn","_attachEvents","events","destroy","ui","Widget","off","collapse","expand","jqueryGroupElement","jQueryElement","_processItem","hasClass","closest","length","jqueryItemElement","item","refresh","_cacheFocused","_clearContent","_generateItemsTree","_calculateLevels","_render","select","$item","_getToSelect","previousSelection","find","removeAttr","removeClass","attr","addClass","trigger","itemsSelector","on","_onKeyDown","_onSelect","_onButtonClick","_onFocus","_onBlur","focusableItem","focusableDataItem","_dataItems","_idTabIndex","get","_shouldRestoreSelection","_calculateDimensions","itemElement","_selector","first","_buttonHeight","outerHeight","_spacing","_itemWidth","_calculateItemWidth","_itemHeight","_calculateLevel","empty","_dataItem","data","dataSource","getByUid","_groupIsVertical","_keyCollapse","_keyExpand","_keyNext","_keyPrev","_keyEnter","_keyEscape","_keyEnd","target","last","previous","dataItems","_keyHome","e","groupIsVertical","key","keyCode","isRtl","support","nextKey","LEFT","RIGHT","prevKey","expandKey","DOWN","collapseKey","UP","push","HOME","END","indexOf","preventDefault","stopPropagation","ENTER","ESC","i","that","currentTarget","shouldExpand","el","siblings","items","toggleChildren","then","_orientation","type","isElement","totalWidth","_itemsTree","root","template","label","messages","wrapperContainer","total","_total","widgetPadding","css","append","_renderGroup","width","Number","split","_setHeight","_restoreSelection","_renderNode","cardWrapperTemplate","contentTemplate","level","guid","content","cardWrapper","borderColors","cardsColors","getSeriesColors","menuLabel","editable","color","attributes","JSON","parse","stringify","toFocusItem","toFocus","_getToFocus","_preventTriggerSelect","buttonHeight","selector","elements","min","MAX_VALUE","max","height","each","top","offset","bottom","SingleView","outerWidth","previousMax","itemsLength","maxColumnsPerLevel","_maxColumnsPerLevel","nestedChildren","shouldReset","hasChildren","expanded","children","itemsTree","itemGroup","parentUid","parentItem","dataItem","parentId","childItem","ownedGroup","next","parent","prev","menuButtonTarget","vertical","vLine","before","clone","parentColumns","parentLeft","_renderInner","innerGroup","itemWidth","spacing","buttonTemplate","numberOfColumns","hLine","buttonSign","_renderInnerGroup","after","left","groupTemplate","offsetDirection","GroupedView","$group","current","ds","_groupFocused","getAttribute","cardWidth","padding","border","groups","currentLength","groupsLength","maxColumns","_maxGroups","currentTotal","maxGroups","groupedItemsTree","groupField","some","toSelect","ownedGroupId","_renderChildren","index","nodesGroupWidth","currentVertical","_renderNodesContainer","_renderItems","groupHeaderTemplate","nodeGroupContainerTemplate","nodeGroup","nodeGroupContainer","value","field","orgChart","1602","ooxml","createZip","JSZip","1600","Workbook","IntlService","register","toString","toDataURL","result","toDataURLAsync","deferred","Deferred","resolve","dataURI","reject","promise","1601","5","1603","Query","DataSource","TreeListDataSource","Model","ObservableArray","OrgChartModel","fields","nullable","name","validation","required","title","avatar","_loaded","parentIdField","nameField","titleField","avatarField","accept","set","initiator","shouldSerialize","base","model","OrgChartDataSource","schema","modelBase","map","_childrenMap","view","defaultParentId","_defaultParentId","currentChildren","grouped","toArray","_innerGroupedItemsTree","itemChildren","fromView","itemId","filter","operator","order","_sort","sort","prospectParents","skippedItem","concat","read","_loadExpanded","defaultPromise","_error","load","j","innerGrouped","_byParentId","create","isArray","toJSON","1604","912","1599","Class","dateToJulianDays","y","d","userImplementation","format","BASE_DATE","packDate","year","month","date","packTime","hh","mm","ss","ms","dateToSerial","time","getHours","getMinutes","getSeconds","getMilliseconds","serial","getFullYear","getMonth","getDate","MIME_TYPE","DATA_URL_PREFIX","DATA_URL_OPTIONS","compression","BLOB_OPTIONS","ARRAYBUFFER_OPTIONS","toDataURI","thing","array","parseJSON","bind","val","String","replace","repeat","count","func","str","foreach","arr","Array","Object","forEach","XMLHEAD","RELS","CORE","ref","creator","lastModifiedBy","created","modified","APP","sheets","sheet","CONTENT_TYPES","sheetCount","commentFiles","drawingFiles","idx","filename","WORKBOOK","filterNames","userNames","quoteSheet","from","to","hidden","localSheetId","WORKSHEET","ref$1","frozenColumns","frozenRows","columns","defaults","mergeCells","autoFilter","showGridLines","hyperlinks","validations","defaultCellStyleId","rtl","legacyDrawing","drawing","lastRow","lastCol","fromCharCode","skipCustomHeight","rowHeight","columnWidth","toWidth","column","ci","columnIndex","autoWidth","row","ri","rowIndex","toHeight","cell","style","formula","writeFormula","spreadsheetFilters","sqref","join","error","errorTitle","formula1","formula2","link","WORKBOOK_RELS","WORKSHEET_RELS","comments","sheetIndex","drawings","COMMENTS_XML","comment","text","LEGACY_DRAWING","DRAWINGS_XML","DRAWINGS_RELS_XML","rels","rel","SHARED_STRINGS","uniqueCount","indexes","substring","STYLES","formats","fonts","fills","borders","styles","fi","font","bold","italic","underline","fontSize","fontFamily","fill","background","borderTemplate","fontId","fillId","numFmtId","textAlign","verticalAlign","wrap","borderId","indent","src","numChar","colIndex","letter","Math","floor","$ref","filterRowIndex","freezePane","rowSplit","px","maximumDigitWidth","stripFunnyChars","Worksheet","sharedStrings","_strings","_styles","_borders","_validations","_comments","_drawings","_hyperlinks","rId","relsToXML","toXML","this$1","mergedCells","rows","inflate","_readCells","prototype","hasOwnProperty","defaultCellStyle","_lookupStyle","_getLastRow","_getLastCol","colSplit","commentsXML","drawingsXML","images","main","drw","parseRef","topLeftCell","img","image","col","colOffset","pixelsToExcel","offsetX","rowOffset","offsetY","imageId","_lookupString","json","_lookupBorder","rowData","cells","cellData","_cell","cellIndex","EMPTY_CELL","borderLeft","borderRight","right","borderTop","borderBottom","defStyle","add","prop","colSpan","displayValue","getTime","cellName","_addValidation","anchor","v","tmp","showErrorMessage","MAP_EXCEL_TYPE","dataType","MAP_EXCEL_OPERATOR","comparerType","allowBlank","allowNulls","showDropDown","showButton","messageTemplate","titleTemplate","countData","greaterThanOrEqualTo","lessThanOrEqualTo","number","defaultFormats","convertColor","$0","$1","toUpperCase","_images","_imgId","_sheets","imageFilename","mimeType","toZIP","zip","docProps","folder","file","Date","xl","xlRels","media","sheetIds","sheetName","toLowerCase","a","names","def","localName","worksheets","drawingsRels","sheetRels","sheetXML","relsXML","name$1","hasFont","convertFontSize","fontInPt","fontInPx","generateAsync","generate","toBlob","Blob","borderStyle","alias","borderSideTemplate","size","rowsByIndex","indexRows","_source","sorted","sortByIndex","slice","ctx","fillCells","callback","b","pushUnique","getSpan","range","topLeft","bottomRight","rowSpan","getcol","upperStr","charCodeAt","getrow","parseInt","exec","round","insertCell","topLeftRef","spanCell","nextRow","insertCellAt","appendCell","startIndex","SPREADSHEET_FILTERS","generators","SPREADSHEET_CUSTOM_FILTER","logic","criteria","op","customOperator","customValue","SPREADSHEET_DYNAMIC_FILTER","dynamicFilterType","SPREADSHEET_TOP_FILTER","test","SPREADSHEET_VALUE_FILTER","blanks","values","custom","dynamic","eq","gt","gte","lt","lte","ne","doesnotstartwith","doesnotendwith","doesnotcontain","doesnotmatch","esc","quarter1","quarter2","quarter3","quarter4","january","february","march","april","may","june","july","august","september","october","november","december","deepExtend"],"mappings":"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","file":"js/chunk-vendors~a1df7b8a.e41fbcd8.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__(1605);\n\tmodule.exports = __webpack_require__(1605);\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/***/ 1059:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"jquery\");\n\n/***/ }),\n\n/***/ 1605:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(jQuery) {(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(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($, undefined) {\n\t var kendo = window.kendo,\n\t keys = kendo.keys,\n\t extend = $.extend,\n\t proxy = $.proxy,\n\n\t NS = \".kendoOrgChartView\",\n\n\t BLUR = \"blur\",\n\t CLICK = \"click\",\n\t COLLAPSE = \"collapse\",\n\t EXPAND = \"expand\",\n\t FOCUS = \"focus\",\n\t KEYDOWN = \"keydown\",\n\t MENU = \"menu\",\n\t SELECT = \"select\",\n\n\t DOT = \".\",\n\t SPACE = \" \",\n\t COMMA = \",\",\n\t HASH = \"#\",\n\t STRING = \"string\",\n\t TABINDEX = \"tabindex\",\n\t ID = \"id\",\n\t UID = \"uid\",\n\t PX = \"px\",\n\t PLUS = \"plus\",\n\t MINUS = \"minus\",\n\n\t ARIA_OWNS = \"aria-owns\",\n\t ARIA_SELECTED = \"aria-selected\";\n\n\t var ORGCHART_STYLES = {\n\t wrapper: \"k-orgchart\",\n\t container: \"k-orgchart-container\",\n\t line: \"k-orgchart-line\",\n\t lineVertical: \"k-orgchart-line-v\",\n\t lineHorizontal: \"k-orgchart-line-h\",\n\t lineVerticalTop: \"k-orgchart-line-v-top\",\n\t group: \"k-orgchart-group\",\n\t groupVertical: \"k-orgchart-group-v\",\n\t groupHorizontal: \"k-orgchart-group-h\",\n\t nodesGroup: \"k-orgchart-node-group\",\n\t nodesGroupContainer: \"k-orgchart-node-group-container\",\n\t nodeContainer: \"k-orgchart-node-container\",\n\t node: \"k-orgchart-node\",\n\t card: \"k-orgchart-card\",\n\t cardMenu: \"k-orgchart-card-menu\",\n\t button: \"k-orgchart-button\",\n\t focused: \"k-state-focus\",\n\t plusIcon: \"k-i-plus\",\n\t menuItem: \"k-item\",\n\t avatarPreview: \"k-orgchart-avatar-preview\",\n\t update: \"k-orgchart-update\",\n\t cancel: \"k-orgchart-cancel\",\n\t vstack: \"k-vstack\",\n\t hstack: \"k-hstack\"\n\t };\n\n\t var ROOT_TEMPLATE = '
';\n\n\t var GROUP_TEMPLATE = '
';\n\n\t var NODE_GROUP_CONTAINER = '
';\n\n\t var NODE_CONTAINER = '
';\n\n\t var NODE_CONTAINER_GROUPED = '
';\n\n\t var ITEM_TEMPLATE = '
';\n\n\t var BUTTON_TEMPLATE = '';\n\n\t var CARD_TEMPLATE = '
' +\n\t '# if(!!data.avatar) { #' +\n\t '
' +\n\t '
' +\n\t '\"#:' +\n\t '
' +\n\t '
' +\n\t '# } #' +\n\t '
' +\n\t '
#: name #
' +\n\t '# if(data.title) { #' +\n\t '' +\n\t '
#: title #
' +\n\t '# } #' +\n\t '
' +\n\t '# if(editable) { #' +\n\t '' +\n\t '
' +\n\t '' +\n\t '
' +\n\t '# } #' +\n\t '
';\n\n\t var CARD_WRAPPER = '
' +\n\t '
';\n\n\t var GROUPED_CARD_WRAPPER = '
';\n\n\t var View = kendo.Observable.extend({\n\t init: function(element, options) {\n\t this.element = element;\n\t this.options = options || {};\n\n\t kendo.Observable.fn.init.call(this);\n\n\t this._attachEvents();\n\t },\n\n\t events: [\n\t COLLAPSE,\n\t EXPAND,\n\t SELECT,\n\t MENU\n\t ],\n\n\t destroy: function() {\n\t kendo.ui.Widget.fn.destroy.call(this);\n\t this.element.off(NS);\n\t },\n\n\t collapse: function() {\n\t return false;\n\t },\n\n\t expand: function() {\n\t return false;\n\t },\n\n\t jqueryGroupElement: function(group) {\n\t if(!group) {\n\t return;\n\t }\n\n\t var jQueryElement = this._processItem(group);\n\n\t if(!jQueryElement.hasClass(ORGCHART_STYLES.nodesGroupContainer)) {\n\t jQueryElement = jQueryElement.closest(DOT + ORGCHART_STYLES.nodesGroupContainer);\n\t }\n\n\t return jQueryElement && jQueryElement.length ? jQueryElement : null;\n\t },\n\n\t jqueryItemElement: function(item) {\n\t if(!item) {\n\t return;\n\t }\n\n\t var jQueryElement = this._processItem(item);\n\n\t if(!jQueryElement.hasClass(ORGCHART_STYLES.card)) {\n\t jQueryElement = jQueryElement.closest(DOT + ORGCHART_STYLES.card);\n\t }\n\n\t return jQueryElement && jQueryElement.length ? jQueryElement : null;\n\t },\n\n\t refresh: function() {\n\t this._cacheFocused();\n\t this._clearContent();\n\t this._generateItemsTree();\n\t this._calculateLevels();\n\t this._render();\n\t },\n\n\t select: function(item) {\n\t var $item = this._getToSelect(item),\n\t previousSelection = this.element.find(\"[tabindex=0]\");\n\n\t if(!$item) {\n\t return;\n\t }\n\n\t previousSelection.removeAttr(TABINDEX)\n\t .removeClass(ORGCHART_STYLES.focused)\n\t .attr(ARIA_SELECTED, false);\n\n\t $item.attr(TABINDEX, \"0\")\n\t .addClass(ORGCHART_STYLES.focused)\n\t .trigger(\"focus\")\n\t .attr(ARIA_SELECTED, true);\n\t },\n\n\t _attachEvents: function() {\n\t var itemsSelector = DOT + ORGCHART_STYLES.card + COMMA + DOT + ORGCHART_STYLES.nodesGroupContainer;\n\n\t this.element.on(KEYDOWN + NS, itemsSelector, proxy(this._onKeyDown, this))\n\t .on(CLICK + NS, itemsSelector, proxy(this._onSelect, this))\n\t .on(CLICK + NS, DOT + ORGCHART_STYLES.button, proxy(this._onButtonClick, this))\n\t .on(FOCUS + NS, itemsSelector, proxy(this._onFocus, this))\n\t .on(BLUR + NS, DOT + ORGCHART_STYLES.focused, proxy(this._onBlur, this));\n\t },\n\n\t _cacheFocused: function() {\n\t var focusableItem = this.element.find(\"[tabindex='0']\"),\n\t focusableDataItem = this._dataItems(focusableItem);\n\n\t if(!focusableItem.length || !focusableDataItem || !focusableDataItem.length || !!this._idTabIndex) {\n\t return;\n\t }\n\n\t this._idTabIndex = focusableDataItem[0].get(ID);\n\n\t if(focusableItem.hasClass(ORGCHART_STYLES.focused)) {\n\t this._shouldRestoreSelection = true;\n\t } else {\n\t this._shouldRestoreSelection = false;\n\t }\n\t },\n\n\t _calculateDimensions: function() {\n\t var itemElement = this.element.find(DOT + this._selector).first();\n\n\t if(!this._buttonHeight) {\n\t this._buttonHeight = this.element.find(DOT + ORGCHART_STYLES.button).first().outerHeight();\n\t }\n\n\t if(!this._spacing) {\n\t this._spacing = this.element.find(DOT + ORGCHART_STYLES.lineVertical).first().outerHeight();\n\t }\n\n\t if(!this._itemWidth) {\n\t this._itemWidth = this._calculateItemWidth();\n\t }\n\n\t if(!this._itemHeight) {\n\t this._itemHeight = itemElement.outerHeight(true);\n\t }\n\t },\n\n\t _calculateItemWidth: function() {\n\t return false;\n\t },\n\n\t _calculateLevel: function() {\n\t return false;\n\t },\n\n\t _calculateLevels: function() {\n\t return false;\n\t },\n\n\t _clearContent: function() {\n\t this.element.empty();\n\t },\n\n\t _dataItem: function(item) {\n\t var $item = this.jqueryItemElement(item);\n\n\t if(!$item || !$item.data(UID)) {\n\t return;\n\t }\n\n\t return this.dataSource.getByUid($item.data(UID));\n\t },\n\n\t _dataItems: function() {\n\t return false;\n\t },\n\n\t _generateItemsTree: function() {\n\t return false;\n\t },\n\n\t _getToSelect: function() {\n\t return false;\n\t },\n\n\t _groupIsVertical: function() {\n\t return false;\n\t },\n\n\t _keyCollapse: function() {\n\t return false;\n\t },\n\n\t _keyExpand: function() {\n\t return false;\n\t },\n\n\t _keyNext: function() {\n\t return false;\n\t },\n\n\t _keyPrev: function() {\n\t return false;\n\t },\n\n\t _keyEnter: function() {\n\t return false;\n\t },\n\n\t _keyEscape: function() {\n\t return false;\n\t },\n\n\t _keyEnd: function() {\n\t var target = this.element.find(DOT + ORGCHART_STYLES.card).last(),\n\t previous = this.element.find(\"[tabindex=0]\");\n\n\n\t if(previous[0] === target[0]) {\n\t return;\n\t }\n\n\t this.trigger(SELECT, {\n\t item: target,\n\t dataItems: [this._dataItem(target)]\n\t });\n\t },\n\n\t _keyHome: function() {\n\t var target = this.element.find(DOT + ORGCHART_STYLES.card).first(),\n\t previous = this.element.find(\"[tabindex=0]\");\n\n\n\t if(previous[0] === target[0]) {\n\t return;\n\t }\n\n\t this.trigger(SELECT, {\n\t item: target,\n\t dataItems: [this._dataItem(target)]\n\t });\n\t },\n\n\t _onBlur: function() {\n\t this.element.find(DOT + ORGCHART_STYLES.focused).removeClass(ORGCHART_STYLES.focused);\n\t },\n\n\t _onKeyDown: function(e) {\n\t var key = e.keyCode,\n\t focused = this.element.find(\"[tabindex=0]\"),\n\t isRtl = kendo.support.isRtl(this.element),\n\t nextKey = isRtl ? [ keys.LEFT ] : [ keys.RIGHT ],\n\t prevKey = isRtl ? [ keys.RIGHT ] : [ keys.LEFT ],\n\t expandKey = keys.DOWN,\n\t collapseKey = keys.UP,\n\t groupIsVertical;\n\n\t if(!focused) {\n\t return;\n\t }\n\n\t groupIsVertical = this._groupIsVertical(focused);\n\n\t if(groupIsVertical) {\n\t nextKey.push(keys.DOWN);\n\t prevKey.push(keys.UP);\n\t }\n\n\t if(key === keys.HOME) {\n\t this._keyHome();\n\t } else if(key === keys.END) {\n\t this._keyEnd();\n\t } else if(nextKey.indexOf(key) > -1) {\n\t e.preventDefault();\n\t e.stopPropagation();\n\n\t this._keyNext(focused);\n\t } else if(prevKey.indexOf(key) > -1) {\n\t e.preventDefault();\n\t e.stopPropagation();\n\n\t this._keyPrev(focused);\n\t } else if(key === expandKey) {\n\t e.preventDefault();\n\t e.stopPropagation();\n\n\t this._keyExpand(focused);\n\t } else if(key === collapseKey) {\n\t e.preventDefault();\n\t e.stopPropagation();\n\n\t this._keyCollapse(focused);\n\t } else if(key === keys.ENTER) {\n\t this._keyEnter(focused);\n\t } else if(key === keys.ESC) {\n\t this._keyEscape(focused);\n\t }\n\t },\n\n\t _onButtonClick: function(e) {\n\t var that = this,\n\t target = $(e.currentTarget),\n\t shouldExpand = target.find(DOT + ORGCHART_STYLES.plusIcon).length > 0 ? true : false,\n\t el = target.siblings(DOT + this._selector),\n\t items = this._dataItems(el),\n\t i;\n\n\t if(shouldExpand) {\n\t if(that.trigger(EXPAND, { item: el, dataItems: items })) {\n\t return;\n\t }\n\t } else {\n\t if(that.trigger(COLLAPSE, { item: el, dataItems: items })) {\n\t return;\n\t }\n\t }\n\n\t for(i = 0; i < items.length; i++) {\n\t that.dataSource.toggleChildren(items[i], shouldExpand).then(proxy(this.refresh, this));\n\t }\n\t },\n\n\t _onFocus: function() {\n\t return false;\n\t },\n\n\t _onSelect: function() {\n\t return false;\n\t },\n\n\t _orientation: function() {\n\t return false;\n\t },\n\n\t _processItem: function(el) {\n\t var jQueryElement;\n\n\t // Substitute with kendo.type() when merged and taken from master\n\t if($.type(el) === STRING) {\n\t jQueryElement = this.element.find(el);\n\t } else if(kendo.isElement(el)) {\n\t jQueryElement = $(el);\n\t } else if(el instanceof jQuery) {\n\t jQueryElement = el;\n\t }\n\n\t return jQueryElement;\n\t },\n\n\t _render: function() {\n\t var items = this._itemsTree,\n\t root = $(kendo.template(ROOT_TEMPLATE)({ label: this.options.messages.label })),\n\t wrapperContainer = this.element,\n\t total = this._total,\n\t widgetPadding = wrapperContainer.closest(DOT + ORGCHART_STYLES.wrapper).css(\"padding-left\"),\n\t totalWidth;\n\n\t wrapperContainer.append(root);\n\n\t this._renderGroup(root, items, 1, this._total, 0);\n\t totalWidth = total * this._itemWidth + (total - 1) * this._spacing;\n\t root.width(totalWidth);\n\t wrapperContainer.width(totalWidth + Number(widgetPadding.split(PX)[0]));\n\n\t this._setHeight();\n\t this._restoreSelection();\n\t },\n\n\t _renderNode: function(cardWrapperTemplate, contentTemplate, item, level, guid) {\n\t var messages = this.options.messages,\n\t borderColors = this.options.cardsColors || kendo.getSeriesColors(),\n\t node = $(ITEM_TEMPLATE),\n\t content, cardWrapper;\n\n\t cardWrapper = $(cardWrapperTemplate(extend(true, {}, item, {\n\t menuLabel: messages.menuLabel,\n\t level: level,\n\t guid: guid,\n\t editable: !!this.options.editable,\n\t color: borderColors[level - 1] || borderColors[0]\n\t })));\n\n\t if(item.attributes) {\n\t cardWrapper.attr(JSON.parse(JSON.stringify(item.attributes)));\n\t }\n\n\t content = $(contentTemplate(extend(true, {}, item, {\n\t menuLabel: messages.menuLabel,\n\t level: level,\n\t guid: guid,\n\t editable: !!this.options.editable,\n\t color: borderColors[level - 1] || borderColors[0]\n\t })));\n\n\t cardWrapper.append(content);\n\t node.append(cardWrapper);\n\n\t return node;\n\t },\n\n\t _renderGroup: function() {\n\t return false;\n\t },\n\n\t _restoreSelection: function() {\n\t var toFocusItem, toFocus;\n\n\t if(!this._idTabIndex) {\n\t toFocus = this.element.find(DOT + this._selector).first();\n\n\t toFocus.attr(TABINDEX, \"0\");\n\t } else {\n\t toFocusItem = this.dataSource.get(this._idTabIndex);\n\t toFocus = toFocusItem ? this._getToFocus(toFocusItem) : this.element.find(DOT + this._selector).first();\n\t toFocus.attr(TABINDEX, \"0\");\n\n\t this._idTabIndex = null;\n\t }\n\n\t if(this._shouldRestoreSelection) {\n\t this._shouldRestoreSelection = false;\n\t this._preventTriggerSelect = true;\n\t toFocus.trigger(\"focus\");\n\t toFocus.addClass(ORGCHART_STYLES.focused);\n\t }\n\t },\n\n\t _setHeight: function() {\n\t var selector = this._selector,\n\t elements = this.element.find(DOT + ORGCHART_STYLES.button + COMMA + DOT + selector),\n\t min = Number.MAX_VALUE, max = 0,\n\t buttonHeight;\n\n\t this._calculateDimensions();\n\n\t buttonHeight = this._buttonHeight;\n\t this.element.find(DOT + ORGCHART_STYLES.lineVerticalTop).height(this._spacing + buttonHeight / 2);\n\n\t elements.each(function(i, el) {\n\t var top = $(el).offset().top,\n\t bottom = top + $(el).outerHeight(true);\n\n\t if(top < min) {\n\t min = top;\n\t }\n\n\t if(bottom > max) {\n\t max = bottom;\n\t }\n\t });\n\n\t this.element.height(max - min);\n\t }\n\t });\n\n\t var SingleView = View.extend({\n\t init: function(element, options) {\n\t View.fn.init.call(this, element, options);\n\n\t this._selector = ORGCHART_STYLES.card;\n\t },\n\n\t collapse: function(item) {\n\t var $item = this.jqueryItemElement(item);\n\n\t if(!$item) {\n\t return;\n\t }\n\n\t this.dataSource.toggleChildren(this._dataItem($item), false).then(proxy(this.refresh, this));\n\t },\n\n\t expand: function(item) {\n\t var $item = this.jqueryItemElement(item);\n\n\t if(!$item) {\n\t return;\n\t }\n\n\t this.dataSource.toggleChildren(this._dataItem($item), true).then(proxy(this.refresh, this));\n\t },\n\n\t _calculateItemWidth: function() {\n\t return this.element.find(DOT + this._selector).first().outerWidth(true);\n\t },\n\n\t _calculateLevel: function(items, level) {\n\t var itemsLength = items.length,\n\t maxColumnsPerLevel = this._maxColumnsPerLevel,\n\t nestedChildren = false,\n\t shouldReset = false,\n\t previousMax, i, item;\n\n\t if(!maxColumnsPerLevel[level] || maxColumnsPerLevel[level] < itemsLength) {\n\t previousMax = maxColumnsPerLevel[level];\n\t shouldReset = true;\n\t maxColumnsPerLevel[level] = itemsLength;\n\t }\n\n\t for(i = 0; i < itemsLength; i++) {\n\t item = items[i];\n\n\t if(item.hasChildren) {\n\t nestedChildren = true;\n\n\t if(item.expanded) {\n\t this._calculateLevel(item.children, level + 1);\n\t }\n\t }\n\t }\n\n\t if(!nestedChildren && shouldReset && level > 0) {\n\t shouldReset = false;\n\t maxColumnsPerLevel[level] = previousMax || 1;\n\t }\n\t },\n\n\t _calculateLevels: function() {\n\t var items = this._itemsTree,\n\t maxColumnsPerLevel = this._maxColumnsPerLevel = [],\n\t total = 1,\n\t i;\n\n\t this._calculateLevel(items, 0);\n\n\t for(i = 0; i < maxColumnsPerLevel.length; i++) {\n\t total = total * maxColumnsPerLevel[i];\n\t }\n\n\t this._total = total;\n\t },\n\n\t _dataItems: function(container) {\n\t var item = this.dataSource.getByUid(container.data(UID));\n\n\t if(item) {\n\t return [item];\n\t } else {\n\t return null;\n\t }\n\t },\n\n\t _generateItemsTree: function() {\n\t this._itemsTree = this.dataSource.itemsTree();\n\t },\n\n\t _getToFocus: function(item) {\n\t return this.element.find(\"[data-uid='\" + item.get(UID) + \"']\");\n\t },\n\n\t _getToSelect: function(el) {\n\t return this.jqueryItemElement(el);\n\t },\n\n\t _groupIsVertical: function(focused) {\n\t var itemGroup = focused.closest(DOT + ORGCHART_STYLES.group);\n\n\t return itemGroup.hasClass(ORGCHART_STYLES.groupVertical);\n\t },\n\n\t _keyCollapse: function(focused) {\n\t var dataItem = this._dataItem(focused),\n\t parentUid, parentItem;\n\n\t if(dataItem.expanded) {\n\t if(!this.trigger(COLLAPSE, { item: focused, dataItems: [dataItem] })) {\n\t this.collapse(focused);\n\t }\n\t } else if(dataItem.parentId) {\n\t parentUid = this.dataSource.get(dataItem.parentId).get(UID);\n\t parentItem = this.element.find(\"[data-uid='\" + parentUid + \"']\");\n\n\t this.trigger(SELECT, {\n\t item: parentItem,\n\t dataItems: [this._dataItem(parentItem)]\n\t });\n\t }\n\t },\n\n\t _keyEnter: function(focused) {\n\t if(focused.find(DOT + ORGCHART_STYLES.cardMenu).length > 0) {\n\t this.trigger(MENU, focused);\n\t }\n\t },\n\n\t _keyExpand: function(focused) {\n\t var dataItem = this._dataItem(focused),\n\t ownedGroup = this.element.find(HASH + focused.attr(ARIA_OWNS)),\n\t childItem;\n\n\t if(!dataItem.hasChildren) {\n\t return;\n\t }\n\n\t if(!dataItem.expanded) {\n\t if(!this.trigger(EXPAND, { item: focused, dataItems: [dataItem] })) {\n\t this.expand(focused);\n\t }\n\t } else {\n\t childItem = ownedGroup.find(DOT + this._selector).first();\n\n\t this.trigger(SELECT, {\n\t item: childItem,\n\t dataItems: [this._dataItem(childItem)]\n\t });\n\t }\n\t },\n\n\t _keyNext: function(focused) {\n\t var dataItem = this._dataItem(focused),\n\t next = focused.parent().next(DOT + ORGCHART_STYLES.node).find(DOT + ORGCHART_STYLES.card),\n\t ownedGroup = this.element.find(HASH + focused.attr(ARIA_OWNS));\n\n\t if(!next.length && dataItem.hasChildren && dataItem.expanded) {\n\t next = ownedGroup.find(DOT + ORGCHART_STYLES.card).first();\n\t }\n\n\t if(next.length === 0 || next.hasClass(ORGCHART_STYLES.focused)) {\n\t return;\n\t }\n\n\t this.trigger(SELECT, {\n\t item: next,\n\t dataItems: [this._dataItem(next)]\n\t });\n\t },\n\n\t _keyPrev: function(focused) {\n\t var dataItem = this._dataItem(focused),\n\t prev = focused.parent().prev(DOT + ORGCHART_STYLES.node).find(DOT + ORGCHART_STYLES.card),\n\t parentUid;\n\n\t if(!prev.length && dataItem.parentId) {\n\t parentUid = this.dataSource.get(dataItem.parentId).get(UID);\n\t prev = this.element.find(\"[data-uid='\" + parentUid + \"']\");\n\t }\n\n\t if(prev.length === 0 || prev.hasClass(ORGCHART_STYLES.focused)) {\n\t return;\n\t }\n\n\t this.trigger(SELECT, {\n\t item: prev,\n\t dataItems: [this._dataItem(prev)]\n\t });\n\t },\n\n\t _onFocus: function(e) {\n\t var currentTarget = $(e.currentTarget),\n\t target = $(e.target);\n\n\t if(this._preventTriggerSelect) {\n\t e.stopPropagation();\n\t this._preventTriggerSelect = false;\n\t return;\n\t }\n\n\t if(target.hasClass(ORGCHART_STYLES.cardMenu)) {\n\t if(target.closest(\"[tabindex='0']\").length > 0) {\n\t e.stopPropagation();\n\t return;\n\t } else {\n\t this._preventTriggerSelect = true;\n\t }\n\t }\n\n\t if(!currentTarget.hasClass(ORGCHART_STYLES.card)) {\n\t currentTarget = currentTarget.closest(DOT + ORGCHART_STYLES.card);\n\t }\n\n\t if(!currentTarget.hasClass(ORGCHART_STYLES.focused)) {\n\t this.trigger(SELECT, {\n\t item: currentTarget,\n\t dataItems: [this._dataItem(currentTarget)]\n\t });\n\t }\n\t },\n\n\t _onSelect: function(e) {\n\t var target = $(e.currentTarget),\n\t item = target.hasClass(ORGCHART_STYLES.card) ? target : target.closest(DOT + ORGCHART_STYLES.card),\n\t menuButtonTarget = $(e.target).hasClass(ORGCHART_STYLES.cardMenu) ? $(e.target) : $(e.target).closest(DOT + ORGCHART_STYLES.cardMenu);\n\n\t if(menuButtonTarget.length > 0) {\n\t return;\n\t }\n\n\t if(!target.hasClass(ORGCHART_STYLES.focused)) {\n\t this.trigger(SELECT, {\n\t item: item,\n\t dataItems: [this._dataItem(item)]\n\t });\n\t }\n\t },\n\n\t _orientation: function(group, level, vertical) {\n\t var vLine = $(\"
\").addClass(ORGCHART_STYLES.line + SPACE + ORGCHART_STYLES.lineVertical);\n\n\t if(vertical && level > 1) {\n\t group.addClass(ORGCHART_STYLES.groupVertical + SPACE + ORGCHART_STYLES.vstack);\n\t group.find(DOT + ORGCHART_STYLES.nodeContainer).addClass(ORGCHART_STYLES.vstack);\n\n\t if(group.find(DOT + ORGCHART_STYLES.button).length === 0 || group.find(DOT + ORGCHART_STYLES.card).length === 1) {\n\t group.find(DOT + ORGCHART_STYLES.card).before(vLine.clone());\n\t group.find(DOT + ORGCHART_STYLES.node).first().find(DOT + ORGCHART_STYLES.lineVertical).addClass(ORGCHART_STYLES.lineVerticalTop);\n\t } else if(level > 1) {\n\t group.find(DOT + ORGCHART_STYLES.card).first().before(vLine.clone());\n\t }\n\t } else {\n\t group.addClass(ORGCHART_STYLES.groupHorizontal + SPACE + ORGCHART_STYLES.hstack);\n\t group.find(DOT + ORGCHART_STYLES.nodeContainer).addClass(ORGCHART_STYLES.hstack);\n\n\t if(level > 1) {\n\t group.find(DOT + ORGCHART_STYLES.card).before(vLine.clone().addClass(ORGCHART_STYLES.lineVerticalTop));\n\t }\n\t }\n\t },\n\n\t _renderGroup: function(group, items, level, parentColumns, parentLeft) {\n\t var vertical = true,\n\t nodeContainer;\n\n\t nodeContainer = $(NODE_CONTAINER);\n\t group.append(nodeContainer);\n\t vertical = this._renderInner(nodeContainer, items, level, parentColumns, parentLeft);\n\n\t this._orientation(group, level, vertical);\n\t },\n\n\t _renderInner: function(nodeContainer, items, level, parentColumns, parentLeft) {\n\t var buttonTemplate = kendo.template(BUTTON_TEMPLATE),\n\t cardWrapperTemplate = kendo.template(CARD_WRAPPER),\n\t numberOfColumns = parentColumns / items.length,\n\t vertical = true,\n\t vLine = $(\"
\").addClass(ORGCHART_STYLES.line + SPACE + ORGCHART_STYLES.lineVertical),\n\t hLine = $(\"
\").addClass(ORGCHART_STYLES.line + SPACE + ORGCHART_STYLES.lineHorizontal),\n\t messages = this.options.messages,\n\t i, item, guid, node, button, innerGroup, itemWidth, spacing, contentTemplate;\n\n\t if(!this.options.template) {\n\t contentTemplate = kendo.template(CARD_TEMPLATE);\n\t } else if (typeof this.options.template === \"function\") {\n\t contentTemplate = this.options.template;\n\t } else {\n\t contentTemplate = kendo.template(this.options.template);\n\t }\n\n\t for(i = 0; i < items.length; i++) {\n\t item = items[i];\n\t guid = kendo.guid();\n\n\t node = this._renderNode(cardWrapperTemplate, contentTemplate, item, level, guid);\n\n\t if(item.hasChildren) {\n\t node.append(vLine.clone());\n\t button = $(buttonTemplate({ buttonSign: item.expanded ? MINUS : PLUS, label: item.expanded ? messages.collapse : messages.expand }));\n\t node.append(button);\n\t }\n\n\t nodeContainer.append(node);\n\n\t this._calculateDimensions();\n\n\t itemWidth = this._itemWidth;\n\t spacing = this._spacing;\n\n\t if(item.hasChildren) {\n\t vertical = false;\n\n\t if(item.expanded) {\n\t innerGroup = this._renderInnerGroup(item, numberOfColumns, parentLeft, i, level, guid);\n\t }\n\t }\n\n\t if(!!innerGroup && innerGroup.hasClass(ORGCHART_STYLES.groupHorizontal) && item.expanded && !!item.children && item.children.length > 1) {\n\t button.after(hLine.clone().css({\n\t width: (numberOfColumns - numberOfColumns / item.children.length) * (itemWidth + spacing) + PX,\n\t \"margin-top\": this._buttonHeight / -2 + PX\n\t }));\n\t }\n\t }\n\n\t if(numberOfColumns > 1 && !vertical) {\n\t nodeContainer.find(DOT + ORGCHART_STYLES.node).width((numberOfColumns - 1) * (spacing + itemWidth));\n\t }\n\n\t return vertical;\n\t },\n\n\t _renderInnerGroup: function(item, numberOfColumns, parentLeft, i, level, guid) {\n\t var itemWidth = this._itemWidth,\n\t spacing = this._spacing,\n\t width = numberOfColumns * itemWidth + (numberOfColumns - 1) * spacing,\n\t left = (i * numberOfColumns * itemWidth) + parentLeft,\n\t groupTemplate = kendo.template(GROUP_TEMPLATE),\n\t offsetDirection = kendo.support.isRtl(this.element) ? \"right\" : \"left\",\n\t top = level * (this._itemHeight + this._buttonHeight + spacing) + spacing * (level - 1) - this._buttonHeight / 2,\n\t innerGroup;\n\n\t if(i > 0) {\n\t left += (i * numberOfColumns * spacing);\n\t }\n\n\t innerGroup = $(groupTemplate({\n\t guid: guid,\n\t level: level + 1\n\t }));\n\n\t innerGroup.css({\n\t width: width + PX,\n\t top: top + PX\n\t });\n\n\t innerGroup.css(offsetDirection, left + PX);\n\n\t this.element.append(innerGroup);\n\t this._renderGroup(innerGroup, item.children, level + 1, numberOfColumns, left);\n\n\t return innerGroup;\n\t }\n\t });\n\n\t var GroupedView = View.extend({\n\t init: function(element, options) {\n\t View.fn.init.call(this, element, options);\n\n\t this._selector = ORGCHART_STYLES.nodesGroupContainer;\n\t },\n\n\t collapse: function(group) {\n\t var $group = this.jqueryGroupElement(group),\n\t dataItems, i;\n\n\t if(!$group) {\n\t return;\n\t }\n\n\t dataItems = this._dataItems($group);\n\n\t for(i = 0; i < dataItems.length; i++) {\n\t this.dataSource.toggleChildren(dataItems[i], false).then(proxy(this.refresh, this));\n\t }\n\t },\n\n\t expand: function(group) {\n\t var $group = this.jqueryGroupElement(group),\n\t dataItems, i;\n\n\t if(!$group) {\n\t return;\n\t }\n\n\t dataItems = this._dataItems($group);\n\n\t for(i = 0; i < dataItems.length; i++) {\n\t this.dataSource.toggleChildren(dataItems[i], true).then(proxy(this.refresh, this));\n\t }\n\t },\n\n\t _dataItems: function(container) {\n\t var ds = this.dataSource,\n\t dataItems = [],\n\t items, item, current;\n\n\t if(container.hasClass(ORGCHART_STYLES.card)) {\n\t item = ds.getByUid(container.data(UID));\n\n\t if(item) {\n\t dataItems.push(item);\n\t }\n\t } else if(container.hasClass(ORGCHART_STYLES.nodesGroupContainer)) {\n\t this._groupFocused = true;\n\n\t items = container.find(DOT + ORGCHART_STYLES.card);\n\n\t items.each(function(i, item) {\n\t current = ds.getByUid(item.getAttribute(\"data-uid\"));\n\n\t if(current) {\n\t dataItems.push(current);\n\t }\n\t });\n\t }\n\n\t return dataItems;\n\t },\n\n\t _calculateItemWidth: function() {\n\t var itemElement = this.element.find(DOT + this._selector).first(),\n\t cardWidth = this.element.find(DOT + ORGCHART_STYLES.card).first().outerWidth(true),\n\t padding = Number(itemElement.css(\"padding-left\").split(PX)[0]),\n\t border = Number(itemElement.css(\"border-left\").split(PX)[0]);\n\n\t return cardWidth+ 2 * padding + 2* border;\n\t },\n\n\t _calculateLevel: function(groups, level) {\n\t var groupsLength = groups.length,\n\t nestedChildren = false,\n\t maxColumns = 0,\n\t currentLength, i, group;\n\n\t this._maxColumnsPerLevel[level] = this._maxColumnsPerLevel[level] || 0;\n\t this._maxGroups[level] = this._maxGroups[level] || 0;\n\n\t for(i = 0; i < groupsLength; i++) {\n\t group = groups[i];\n\t currentLength = group.items.length;\n\n\t if (currentLength > maxColumns) {\n\t maxColumns = currentLength;\n\t }\n\n\t group = groups[i];\n\n\t if(group.hasChildren) {\n\t nestedChildren = true;\n\n\t if(group.expanded) {\n\t this._calculateLevel(group.children, level + 1);\n\t }\n\t }\n\t }\n\n\t if(groupsLength > this._maxGroups[level]) {\n\t this._maxGroups[level] = groupsLength;\n\t }\n\n\t if(!nestedChildren) {\n\t maxColumns = 1;\n\t }\n\n\t if(maxColumns > this._maxColumnsPerLevel[level]) {\n\t this._maxColumnsPerLevel[level] = maxColumns;\n\t }\n\t },\n\n\t _calculateLevels: function() {\n\t var items = this._itemsTree,\n\t maxColumnsPerLevel = this._maxColumnsPerLevel = [],\n\t maxGroups = this._maxGroups = [],\n\t total = 1,\n\t i, currentTotal;\n\n\t this._calculateLevel(items, 0);\n\n\t for(i = maxColumnsPerLevel.length - 1; i >= 0; i--) {\n\t currentTotal = maxColumnsPerLevel[i] * maxGroups[i];\n\n\t if(total > maxColumnsPerLevel[i]) {\n\t total = total * maxGroups[i];\n\t } else if(total < currentTotal) {\n\t total = currentTotal;\n\t }\n\t }\n\n\t this._total = total;\n\t },\n\n\t _generateItemsTree: function() {\n\t this._itemsTree = this.dataSource.groupedItemsTree(this.options.groupField);\n\t },\n\n\t _getToFocus: function(item) {\n\t if(!this._groupFocused) {\n\t return this.element.find(\"[data-uid='\" + item.get(UID) + \"']\");\n\t } else {\n\t this._groupFocused = false;\n\t return this.element.find(\"[data-uid='\" + item.get(UID) + \"']\").closest(DOT + ORGCHART_STYLES.nodesGroupContainer);\n\t }\n\t },\n\n\t _getToSelect: function(el) {\n\t var item = this.jqueryItemElement(el);\n\n\t return item || this.jqueryGroupElement(el);\n\t },\n\n\t _groupIsVertical: function(focused) {\n\t var itemGroup = focused.closest(DOT + ORGCHART_STYLES.nodeContainer);\n\n\t return itemGroup.hasClass(ORGCHART_STYLES.vstack);\n\t },\n\n\t _keyCollapse: function(focused) {\n\t var dataItems = [],\n\t parentUid, expanded;\n\n\t dataItems = this._dataItems(focused);\n\n\t expanded = dataItems.some(function(item) {\n\t return item.expanded;\n\t });\n\n\t if(expanded) {\n\t if(focused.hasClass(ORGCHART_STYLES.card)) {\n\t focused = focused.closest(DOT + ORGCHART_STYLES.nodesGroupContainer);\n\t dataItems = this._dataItems(focused);\n\t }\n\n\t if(!this.trigger(COLLAPSE, { item: focused, dataItems: dataItems })) {\n\t this.collapse(focused);\n\t }\n\t } else if(dataItems[0].parentId) {\n\t parentUid = this.dataSource.get(dataItems[0].parentId).get(UID);\n\n\t this.trigger(SELECT, {\n\t item: this.element.find(\"[data-uid='\" + parentUid + \"']\").closest(DOT + this._selector),\n\t dataItems: dataItems\n\t });\n\t }\n\t },\n\n\t _keyEnter: function(focused) {\n\t var toSelect,\n\t dataItems = [];\n\n\t if(focused.hasClass(ORGCHART_STYLES.card) && focused.find(DOT + ORGCHART_STYLES.cardMenu).length > 0) {\n\t this.trigger(MENU, focused);\n\t } else {\n\t toSelect = focused.find(DOT + ORGCHART_STYLES.card).first();\n\t dataItems = this._dataItems(toSelect);\n\n\t this.trigger(SELECT, {\n\t item: toSelect,\n\t dataItems: dataItems\n\t });\n\t }\n\t },\n\n\t _keyEscape: function(focused) {\n\t if(!focused.hasClass(ORGCHART_STYLES.card)) {\n\t return;\n\t }\n\n\t var group = focused.closest(DOT + ORGCHART_STYLES.nodesGroupContainer),\n\t dataItems = this._dataItems(group);\n\n\t this.trigger(SELECT, {\n\t item: group,\n\t dataItems: dataItems\n\t });\n\t },\n\n\t _keyExpand: function(focused) {\n\t var ownedGroupId = focused.attr(ARIA_OWNS) || focused.closest(DOT + this._selector).attr(ARIA_OWNS),\n\t ownedGroup = this.element.find(HASH + ownedGroupId),\n\t dataItems = this._dataItems(focused),\n\t hasChildren, expanded, item;\n\n\t hasChildren = dataItems.some(function(item) {\n\t return item.hasChildren;\n\t });\n\n\t if(!hasChildren) {\n\t return;\n\t }\n\n\t expanded = dataItems.some(function(item) {\n\t return item.expanded;\n\t });\n\n\t if(!expanded) {\n\t if(focused.hasClass(ORGCHART_STYLES.card)) {\n\t focused = focused.closest(DOT + ORGCHART_STYLES.nodesGroupContainer);\n\t dataItems = this._dataItems(focused);\n\t }\n\n\t if(!this.trigger(EXPAND, { item: focused, dataItems: dataItems })) {\n\t this.expand(focused);\n\t }\n\t } else {\n\t item = ownedGroup.find(DOT + this._selector).first();\n\n\t this.trigger(SELECT, {\n\t item: item,\n\t dataItems: this._dataItems(item)\n\t });\n\t }\n\t },\n\n\t _keyNext: function(focused) {\n\t var ownedGroup = this.element.find(HASH + focused.attr(ARIA_OWNS)),\n\t dataItems = this._dataItems(focused),\n\t hasChildren = dataItems.some(function(item) {\n\t return item.hasChildren;\n\t }),\n\t expanded = dataItems.some(function(item) {\n\t return item.expanded;\n\t }),\n\t next;\n\n\t if(focused.hasClass(ORGCHART_STYLES.card)) {\n\t next = focused.parent().next(DOT + ORGCHART_STYLES.node).find(DOT + ORGCHART_STYLES.card);\n\t } else {\n\t next = focused.parent().next(DOT + ORGCHART_STYLES.nodesGroup).find(DOT + ORGCHART_STYLES.nodesGroupContainer);\n\t }\n\n\t if(!next.length && hasChildren && expanded) {\n\t next = ownedGroup.find(DOT + this._selector).first();\n\t }\n\n\t if(next.length === 0) {\n\t return;\n\t }\n\n\t this.trigger(SELECT, {\n\t item: next,\n\t dataItems: this._dataItems(next)\n\t });\n\t },\n\n\t _keyPrev: function(focused) {\n\t var dataItems = this._dataItems(focused),\n\t parentUid, prev;\n\n\t if(focused.hasClass(ORGCHART_STYLES.card)) {\n\t prev = focused.parent().prev(DOT + ORGCHART_STYLES.node).find(DOT + ORGCHART_STYLES.card);\n\t } else {\n\t prev = focused.parent().prev(DOT + ORGCHART_STYLES.nodesGroup).find(DOT + ORGCHART_STYLES.nodesGroupContainer);\n\t }\n\n\t if(!prev.length && dataItems[0].parentId) {\n\t parentUid = this.dataSource.get(dataItems[0].parentId).get(UID);\n\t prev = this.element.find(\"[data-uid='\" + parentUid + \"']\").closest(DOT + this._selector);\n\t }\n\n\t if(prev.length === 0) {\n\t return;\n\t }\n\n\t this.trigger(SELECT, {\n\t item: prev,\n\t dataItems: this._dataItems(prev)\n\t });\n\t },\n\n\t _onFocus: function(e) {\n\t var target = $(e.target),\n\t items, current;\n\n\t if(this._preventTriggerSelect) {\n\t e.stopPropagation();\n\t this._preventTriggerSelect = false;\n\t return;\n\t }\n\n\t if(target.hasClass(ORGCHART_STYLES.cardMenu)) {\n\t if(target.closest(\"[tabindex='0']\").length > 0) {\n\t e.stopPropagation();\n\t return;\n\t } else {\n\t this._preventTriggerSelect = true;\n\t }\n\t }\n\n\t if(!target.hasClass(ORGCHART_STYLES.card) && !target.hasClass(ORGCHART_STYLES.nodesGroupContainer)) {\n\t current = target.closest(DOT + ORGCHART_STYLES.card);\n\n\t if(!current.length) {\n\t current = target.closest(DOT + ORGCHART_STYLES.nodesGroupContainer);\n\t }\n\n\t target = current;\n\t }\n\n\t if(target.length === 0) {\n\t return;\n\t }\n\n\t items = this._dataItems(target);\n\n\t if(!target.hasClass(ORGCHART_STYLES.focused)) {\n\t e.stopPropagation();\n\t this.trigger(SELECT, {\n\t item: target,\n\t dataItems: items\n\t });\n\t }\n\t },\n\n\t _onSelect: function(e) {\n\t var target = $(e.target),\n\t previousSelection = this.element.find(\"[tabindex=0]\"),\n\t items, current;\n\n\t if(!target.hasClass(ORGCHART_STYLES.card) && !target.hasClass(ORGCHART_STYLES.nodesGroupContainer)) {\n\t current = target.closest(DOT + ORGCHART_STYLES.card);\n\n\t if(!current.length) {\n\t current = target.closest(DOT + ORGCHART_STYLES.nodesGroupContainer);\n\t }\n\n\t target = current;\n\t }\n\n\t if(target.length === 0 || previousSelection[0] === target[0]) {\n\t return;\n\t }\n\n\t items = this._dataItems(target);\n\n\t this.trigger(SELECT, {\n\t item: target,\n\t dataItems: items\n\t });\n\t },\n\n\t _orientation: function(group, level, vertical) {\n\t var vLine = $(\"
\").addClass(ORGCHART_STYLES.line + SPACE + ORGCHART_STYLES.lineVertical + SPACE + ORGCHART_STYLES.lineVerticalTop);\n\n\t group.addClass(ORGCHART_STYLES.hstack);\n\n\t if(level > 1) {\n\t group.find(DOT + ORGCHART_STYLES.nodesGroupContainer).before(vLine.clone());\n\t }\n\n\t if(vertical && level > 1) {\n\t group.find(DOT + ORGCHART_STYLES.nodeContainer).removeClass(ORGCHART_STYLES.hstack);\n\t group.find(DOT + ORGCHART_STYLES.nodeContainer).addClass(ORGCHART_STYLES.vstack);\n\t } else {\n\t group.addClass(ORGCHART_STYLES.groupHorizontal);\n\t }\n\t },\n\n\t _renderChildren: function(item, index, numberOfColumns, level, nodesGroup, parentLeft, guid) {\n\t var buttonTemplate = kendo.template(BUTTON_TEMPLATE),\n\t groupTemplate = kendo.template(GROUP_TEMPLATE),\n\t vLine = $(\"
\").addClass(ORGCHART_STYLES.line + SPACE + ORGCHART_STYLES.lineVertical),\n\t hLine = $(\"
\").addClass(ORGCHART_STYLES.line + SPACE + ORGCHART_STYLES.lineHorizontal),\n\t messages = this.options.messages,\n\t vertical = true,\n\t offsetDirection = kendo.support.isRtl(this.element) ? \"right\" : \"left\",\n\t innerGroup, button, left, top, width, nodesGroupWidth, spacing;\n\n\t if(item.hasChildren) {\n\t vertical = false;\n\t nodesGroup.append(vLine.clone());\n\t button = $(buttonTemplate({ buttonSign: item.expanded ? MINUS : PLUS, label: item.expanded ? messages.collapse : messages.expand }));\n\n\t nodesGroup.append(button);\n\n\t this._calculateDimensions();\n\n\t nodesGroupWidth = this._itemWidth;\n\t spacing = this._spacing;\n\n\t if(item.expanded) {\n\t width = nodesGroupWidth * numberOfColumns + (numberOfColumns - 1) * spacing;\n\t left = (index * numberOfColumns * nodesGroupWidth) + parentLeft;\n\t top = level * (this._itemHeight + this._buttonHeight + spacing) + spacing * (level - 1) - this._buttonHeight / 2;\n\n\t if(index > 0) {\n\t left += (index * numberOfColumns * spacing);\n\t }\n\n\t innerGroup = $(groupTemplate({\n\t guid: guid,\n\t level: level + 1\n\t }));\n\n\t innerGroup.css({\n\t width: width + PX,\n\t top: top + PX\n\t });\n\n\t innerGroup.css(offsetDirection, left + PX);\n\n\t this.element.append(innerGroup);\n\t this._renderGroup(innerGroup, item.children, level + 1, numberOfColumns, left);\n\t }\n\t }\n\n\t if(!!innerGroup && item.expanded && !!item.children && item.children.length > 1) {\n\t button.after(hLine.clone().css({\n\t width: (numberOfColumns - numberOfColumns / item.children.length) * (nodesGroupWidth + spacing) + PX,\n\t \"margin-top\": this._buttonHeight / -2 + PX\n\t }));\n\t }\n\n\t return vertical;\n\t },\n\n\t _renderGroup: function(group, items, level, parentColumns, parentLeft) {\n\t var vertical = true,\n\t numberOfColumns = parentColumns / items.length,\n\t nodeContainer, nodesGroup, i, guid, currentVertical, item;\n\n\t for(i = 0; i < items.length; i++) {\n\t guid = kendo.guid();\n\t item = items[i];\n\t nodeContainer = this._renderNodesContainer(group, extend(true, {}, item, {\n\t guid: guid,\n\t level: level\n\t }));\n\t nodesGroup = nodeContainer.closest(DOT + ORGCHART_STYLES.nodesGroup);\n\n\t this._renderItems(nodeContainer, item.items, level, guid);\n\t currentVertical = this._renderChildren(item, i, numberOfColumns, level, nodesGroup, parentLeft, guid);\n\n\t if(vertical) {\n\t vertical = currentVertical;\n\t }\n\t }\n\n\t var width = this._itemWidth * numberOfColumns + (numberOfColumns - 1) * this._spacing;\n\t group.find(DOT + ORGCHART_STYLES.nodesGroup).width(width);\n\n\t this._orientation(group, level, vertical);\n\t },\n\n\t _renderItems: function(nodeContainer, items, level, guid) {\n\t var cardWrapperTemplate = kendo.template(GROUPED_CARD_WRAPPER),\n\t i, item, node, contentTemplate;\n\n\t if(!this.options.template) {\n\t contentTemplate = kendo.template(CARD_TEMPLATE);\n\t } else if (typeof this.options.template === \"function\") {\n\t contentTemplate = this.options.template;\n\t } else {\n\t contentTemplate = kendo.template(this.options.template);\n\t }\n\n\t for(i = 0; i < items.length; i++) {\n\t item = items[i];\n\t node = this._renderNode(cardWrapperTemplate, contentTemplate, item, level, guid);\n\t nodeContainer.append(node);\n\t }\n\t },\n\n\t _renderNodesContainer: function(group, data) {\n\t var nodeGroupContainerTemplate = kendo.template(NODE_GROUP_CONTAINER),\n\t nodeGroup = $('
'),\n\t nodeContainer = $(NODE_CONTAINER_GROUPED),\n\t nodeGroupContainer = $(nodeGroupContainerTemplate(data)),\n\t groupHeaderTemplate;\n\n\t if (typeof this.options.groupHeaderTemplate === \"function\") {\n\t groupHeaderTemplate = this.options.groupHeaderTemplate;\n\t } else {\n\t groupHeaderTemplate = kendo.template(this.options.groupHeaderTemplate);\n\t }\n\n\t nodeGroupContainer.append(groupHeaderTemplate({\n\t value: data.value,\n\t field: data.field\n\t }));\n\t nodeGroupContainer.append(nodeContainer);\n\n\t nodeGroup.append(nodeGroupContainer);\n\t group.append(nodeGroup);\n\n\t return nodeContainer;\n\t }\n\t });\n\n\t kendo.orgChart = {\n\t View: View,\n\t SingleView: SingleView,\n\t GroupedView: GroupedView\n\t };\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1059)))\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(1602);\n\tmodule.exports = __webpack_require__(1602);\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/***/ 1602:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n\t __webpack_require__(20)\n\t ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\t(function () {\n\n\t/* global JSZip */\n\n\tkendo.ooxml = kendo.ooxml || {};\n\n\tkendo.ooxml.createZip = function() {\n\t if (typeof JSZip === \"undefined\") {\n\t throw new Error(\"JSZip not found. Check http://docs.telerik.com/kendo-ui/framework/excel/introduction#requirements for more details.\");\n\t }\n\n\t return new JSZip();\n\t};\n\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__(1600);\n\tmodule.exports = __webpack_require__(1600);\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/***/ 1600:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n\t __webpack_require__(20),\n\t __webpack_require__(1601)\n\t ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\t(function ($) {\n\n\tvar Workbook = kendo.ooxml.Workbook;\n\n\tkendo.ooxml.IntlService.register({\n\t toString: kendo.toString\n\t});\n\n\tkendo.ooxml.Workbook = Workbook.extend({\n\t toDataURL: function() {\n\t var result = Workbook.fn.toDataURL.call(this);\n\t if (typeof result !== 'string') {\n\t throw new Error('The toDataURL method can be used only with jsZip 2. Either include jsZip 2 or use the toDataURLAsync method.');\n\t }\n\n\t return result;\n\t },\n\n\t toDataURLAsync: function() {\n\t var deferred = $.Deferred();\n\t var result = Workbook.fn.toDataURL.call(this);\n\t if (typeof result === 'string') {\n\t result = deferred.resolve(result);\n\t } else if (result && result.then){\n\t result.then(function(dataURI) {\n\t deferred.resolve(dataURI);\n\t }, function() {\n\t deferred.reject();\n\t });\n\t }\n\n\t return deferred.promise();\n\t }\n\t});\n\n\t})(window.kendo.jQuery);\n\n\t}, __webpack_require__(3));\n\n\n/***/ }),\n\n/***/ 1601:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo-ooxml\");\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__(1603);\n\tmodule.exports = __webpack_require__(1603);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 5:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"../kendo.data\");\n\n/***/ }),\n\n/***/ 1603:\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__(5), __webpack_require__(1604)], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\t(function($, undefined) {\n\t var extend = $.extend,\n\t proxy = $.proxy,\n\n\t data = kendo.data,\n\t Query = data.Query,\n\t DataSource = data.DataSource,\n\t TreeListDataSource = data.TreeListDataSource,\n\t Model = data.Model,\n\t ObservableArray = data.ObservableArray;\n\n\t var OrgChartModel = Model.define({\n\t id: \"id\",\n\t parentId: \"parentId\",\n\n\t fields: {\n\t id: { type: \"number\", editable: false },\n\t parentId: { type: \"number\", nullable: true },\n\t name: { type: \"string\", validation: { required: true } },\n\t title: { type: \"string\" },\n\t avatar: { type: \"string\" }\n\t },\n\n\t init: function(value) {\n\t Model.fn.init.call(this, value);\n\n\t this._loaded = false;\n\n\t if (!this.parentIdField) {\n\t this.parentIdField = \"parentId\";\n\t }\n\t if (!this.nameField) {\n\t this.nameField = \"name\";\n\t }\n\t if (!this.titleField) {\n\t this.titleField = \"title\";\n\t }\n\t if (!this.avatarField) {\n\t this.avatarField = \"avatar\";\n\t }\n\n\t this.parentId = this.get(this.parentIdField);\n\t this.name = this.get(this.nameField);\n\t this.title = this.get(this.titleField);\n\t this.avatar = this.get(this.avatarField);\n\t },\n\n\t accept: function(data) {\n\t Model.fn.accept.call(this, data);\n\n\t this.parentId = this.get(this.parentIdField);\n\t this.name = this.get(this.nameField);\n\t this.title = this.get(this.titleField);\n\t this.avatar = this.get(this.avatarField);\n\t },\n\n\t set: function(field, value, initiator) {\n\t if (field == \"parentId\" && this.nameField != \"parentId\") {\n\t this[this.parentIdField] = value;\n\t }\n\t if (field == \"name\" && this.nameField != \"name\") {\n\t this[this.nameField] = value;\n\t }\n\t if (field == \"title\" && this.titleField != \"title\") {\n\t this[this.titleField] = value;\n\t }\n\t if (field == \"avatar\" && this.avatarField != \"avatar\") {\n\t this[this.avatarField] = value;\n\t }\n\n\t Model.fn.set.call(this, field, value, initiator);\n\n\t if (field == this.parentIdField) {\n\t this.parentId = this.get(this.parentIdField);\n\t }\n\t if (field == this.nameField) {\n\t this.name = this.get(this.nameField);\n\t }\n\t if (field == this.titleField) {\n\t this.title = this.get(this.titleField);\n\t }\n\t if (field == this.avatarField) {\n\t this.avatar = this.get(this.avatarField);\n\t }\n\t },\n\n\t loaded: function(value) {\n\t if (value !== undefined) {\n\t this._loaded = value;\n\t } else {\n\t return this._loaded;\n\t }\n\t },\n\n\t shouldSerialize: function(field) {\n\t return Model.fn.shouldSerialize.call(this, field) && field !== \"_loaded\" && field != \"_error\" && field != \"_edit\" && !(this.parentIdField !== \"parentId\" && field === \"parentId\");\n\t }\n\t });\n\n\t OrgChartModel.parentIdField = \"parentId\";\n\t OrgChartModel.nameField = \"name\";\n\t OrgChartModel.titleField = \"title\";\n\t OrgChartModel.avatarField = \"avatar\";\n\n\t OrgChartModel.define = function(base, options) {\n\t if (options === undefined) {\n\t options = base;\n\t base = OrgChartModel;\n\t }\n\n\t var parentId = options.parentId || \"parentId\";\n\t var name = options.name || \"name\";\n\t var title = options.title || \"title\";\n\t var avatar = options.avatar || \"avatar\";\n\n\t options.parentIdField = parentId;\n\t options.nameField = name;\n\t options.titleField = title;\n\t options.avatarField = avatar;\n\n\t var model = Model.define(base, options);\n\n\t if (parentId) {\n\t model.parentIdField = parentId;\n\t }\n\t if (name) {\n\t model.nameField = name;\n\t }\n\t if (title) {\n\t model.titleField = title;\n\t }\n\t if (avatar) {\n\t model.avatarField = avatar;\n\t }\n\n\t return model;\n\t };\n\n\t var OrgChartDataSource = TreeListDataSource.extend({\n\t init: function(options) {\n\t TreeListDataSource.fn.init.call(this, extend(true, {}, {\n\t schema: {\n\t modelBase: OrgChartModel,\n\t model: OrgChartModel\n\t }\n\t }, options));\n\t },\n\n\t groupedItemsTree: function(field) {\n\t var map = this._childrenMap(this.view()),\n\t defaultParentId = this._defaultParentId(),\n\t currentChildren = map[defaultParentId] || [],\n\t grouped = new Query(currentChildren).group({ field: field }).toArray();\n\n\t return this._innerGroupedItemsTree(field, grouped, map);\n\t },\n\n\t itemChildren: function(item, fromView) {\n\t var filter = {\n\t field: \"parentId\",\n\t operator: \"eq\",\n\t value: null\n\t };\n\n\t var order = (this._sort && this._sort.length) ? this._sort : {};\n\t var itemId, data;\n\n\t if(fromView) {\n\t data = this.view();\n\t } else {\n\t data = this.data();\n\t }\n\n\t if (!!item) {\n\t itemId = item.get(\"id\");\n\n\t if (itemId === undefined || itemId === null || itemId === \"\") {\n\t return [];\n\t }\n\n\t filter.value = itemId;\n\t }\n\n\t data = new Query(data).filter(filter).sort(order).toArray();\n\n\t return data;\n\t },\n\n\t itemsTree: function(item, field) {\n\t var data = [],\n\t current,\n\t items = this.itemChildren(item, true),\n\t children, i;\n\n\t for (i = 0; i < items.length; i++) {\n\t current = items[i];\n\n\t if (current.get(\"expanded\")) {\n\t children = this.itemsTree(current, field);\n\n\t current = extend(true, {}, current);\n\t current.children = children;\n\t }\n\n\t current = extend(true, {}, current);\n\t data.push(current);\n\t }\n\n\t if(field !== null && field !== undefined) {\n\t data = new Query(data).group({ field: field }).toArray();\n\t }\n\n\t return data;\n\t },\n\n\t prospectParents: function(skippedItem, item) {\n\t var data = [],\n\t current,\n\t items = this.itemChildren(item, false),\n\t children, i;\n\n\t for (i = 0; i < items.length; i++) {\n\t current = items[i];\n\n\t if(current.get(\"id\") === skippedItem.get(\"id\")) {\n\t continue;\n\t }\n\n\t data.push(current);\n\n\t if (current.get(\"hasChildren\")) {\n\t children = this.prospectParents(skippedItem, current);\n\n\t data = data.concat(children);\n\t }\n\t }\n\n\t return data;\n\t },\n\n\t read: function(data) {\n\t return DataSource.fn.read.call(this, data).then(proxy(this._loadExpanded, this, data));\n\t },\n\n\t toggleChildren: function(item, expand) {\n\t var defaultPromise = $.Deferred().resolve().promise(),\n\t loaded = item.loaded();\n\n\t // reset error state\n\t if (item._error) {\n\t item.expanded = false;\n\t item._error = undefined;\n\t }\n\n\t // toggle expanded state\n\t if (typeof expand == \"undefined\") {\n\t expand = !item.expanded;\n\t }\n\n\t item.expanded = expand;\n\n\t if (!loaded) {\n\t defaultPromise = this.load(item);\n\t }\n\n\t return defaultPromise;\n\t },\n\n\t _innerGroupedItemsTree: function(field, grouped, map) {\n\t var group, i, j, itemId, innerGrouped, children, current, hasChildren;\n\n\n\t for(i = 0; i < grouped.length; i++) {\n\t group = grouped[i];\n\t children = [];\n\t hasChildren = false;\n\n\t for(j = 0; j < group.items.length; j++) {\n\t current = group.items[j];\n\n\t if(!group.hasChildren && current.hasChildren) {\n\t group.hasChildren = true;\n\t }\n\n\t if(current.expanded) {\n\t group.expanded = true;\n\t }\n\n\t itemId = group.items[j].get(\"id\");\n\t children = children.concat(map[itemId]);\n\t }\n\n\t if(group.expanded) {\n\t innerGrouped = new Query(children).group({ field: field }).toArray();\n\t group.children = this._innerGroupedItemsTree(field, innerGrouped, map);\n\t }\n\n\t if(!group.hasChildren && children.length > 0) {\n\t group.hasChildren = true;\n\t }\n\t }\n\n\t return grouped;\n\t },\n\n\t _loadExpanded: function(data) {\n\t var items, i, current;\n\n\t if(!data) {\n\t return;\n\t }\n\n\t if(data.id !== null && data.id !== undefined) {\n\t items = this._byParentId(data.id);\n\t } else {\n\t items = this._byParentId(this._defaultParentId());\n\t }\n\n\t for(i = 0; i < items.length; i++) {\n\t current = items[i];\n\n\t if(current.expanded && !current.loaded()) {\n\t this.toggleChildren(current, true);\n\t }\n\t }\n\t }\n\t });\n\n\t OrgChartDataSource.create = function(options) {\n\t if ($.isArray(options)) {\n\t options = { data: options };\n\t } else if (options instanceof ObservableArray) {\n\t options = { data: options.toJSON() };\n\t }\n\n\t if (!(options instanceof OrgChartDataSource) && options instanceof DataSource) {\n\t throw new Error(\"Incorrect DataSource type. Only OrgChartDataSource instances are supported\");\n\t }\n\n\t return options instanceof OrgChartDataSource ? options : new OrgChartDataSource(options);\n\t };\n\n\t extend(true, kendo.data, {\n\t OrgChartModel: OrgChartModel,\n\t OrgChartDataSource: OrgChartDataSource\n\t });\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ }),\n\n/***/ 1604:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"../kendo.treelist\");\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__(1599);\n\tmodule.exports = __webpack_require__(1599);\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/***/ 912:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./utils\");\n\n/***/ }),\n\n/***/ 1599:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/***********************************************************************\n\t * WARNING: this file is auto-generated. If you change it directly,\n\t * your modifications will eventually be lost. The source code is in\n\t * `kendo-ooxml` repository, you should make your changes there and\n\t * run `src-modules/sync.sh` in this repository.\n\t */\n\t(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n\t __webpack_require__(20),\n\t __webpack_require__(912)\n\t ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\t(function ($) {\n\t/* jshint eqnull:true */\n\t/* jshint laxbreak:true */\n\n\twindow.kendo.ooxml = window.kendo.ooxml || {};\n\tvar ooxml = kendo.ooxml;\n\n\tvar map = $.map;\n\tvar createZip = ooxml.createZip;\n\n\tvar current = {\n\t toString: function (value) { return value; }\n\t};\n\n\tvar IntlService = kendo.Class.extend({\n\n\t});\n\n\tIntlService.register = function(userImplementation) {\n\t current = userImplementation;\n\t};\n\n\tIntlService.toString = function(value, format) {\n\t return current.toString(value, format);\n\t};\n\n\t// date packing utilities from Kendo Spreadsheet\n\n\t// Julian days algorithms from http://www.hermetic.ch/cal_stud/jdn.htm#comp\n\tfunction dateToJulianDays(y, m, d) {\n\t return ((1461 * (y + 4800 + ((m - 13) / 12 | 0))) / 4 | 0) +\n\t ((367 * (m - 1 - 12 * ((m - 13) / 12 | 0))) / 12 | 0) -\n\t ((3 * (((y + 4900 + ((m - 13) / 12 | 0)) / 100 | 0))) / 4 | 0) +\n\t d - 32075;\n\t}\n\n\t// This uses the Google Spreadsheet approach: treat 1899-12-31 as day 1, allowing to avoid\n\t// implementing the \"Leap Year Bug\" yet still be Excel compatible for dates starting 1900-03-01.\n\tvar BASE_DATE = dateToJulianDays(1900, 0, -1);\n\n\tfunction packDate(year, month, date) {\n\t return dateToJulianDays(year, month, date) - BASE_DATE;\n\t}\n\n\tfunction packTime(hh, mm, ss, ms) {\n\t return (hh + (mm + (ss + ms / 1000) / 60) / 60) / 24;\n\t}\n\n\tfunction dateToSerial(date) {\n\t var time = packTime(date.getHours(),\n\t date.getMinutes(),\n\t date.getSeconds(),\n\t date.getMilliseconds());\n\t var serial = packDate(date.getFullYear(),\n\t date.getMonth(),\n\t date.getDate());\n\t return serial < 0 ? serial - 1 + time : serial + time;\n\t}\n\n\tvar MIME_TYPE = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\n\tvar DATA_URL_PREFIX = \"data:\" + MIME_TYPE + \";base64,\";\n\tvar DATA_URL_OPTIONS = { compression: \"DEFLATE\", type: \"base64\" };\n\tvar BLOB_OPTIONS = { compression: \"DEFLATE\", type: \"blob\" };\n\tvar ARRAYBUFFER_OPTIONS = { compression: \"DEFLATE\", type: \"arraybuffer\" };\n\n\t/* eslint-disable key-spacing, no-arrow-condition, indent, no-nested-ternary, consistent-return */\n\n\tfunction toDataURI(content) {\n\t return DATA_URL_PREFIX + content;\n\t}\n\n\tfunction indexOf(thing, array) {\n\t return array.indexOf(thing);\n\t}\n\n\tvar parseJSON = JSON.parse.bind(JSON);\n\n\tfunction ESC(val) {\n\t return String(val)\n\t .replace(/&/g, \"&\")\n\t .replace(//g, \">\")\n\t .replace(/\\\"/g, \""\")\n\t .replace(/\\'/g, \"'\");\n\t}\n\n\tfunction repeat(count, func) {\n\t var str = \"\";\n\t for (var i = 0; i < count; ++i) {\n\t str += func(i);\n\t }\n\t return str;\n\t}\n\n\tfunction foreach(arr, func) {\n\t var str = \"\";\n\t if (arr != null) {\n\t if (Array.isArray(arr)) {\n\t for (var i = 0; i < arr.length; ++i) {\n\t str += func(arr[i], i);\n\t }\n\t } else if (typeof arr == \"object\") {\n\t Object.keys(arr).forEach(function (key, i) {\n\t str += func(arr[key], key, i);\n\t });\n\t }\n\t }\n\t return str;\n\t}\n\n\tvar XMLHEAD = '\\r';\n\n\tvar RELS = XMLHEAD + \"\\n \\n \\n \\n \\n \";\n\n\tvar CORE = function (ref) {\n\t var creator = ref.creator;\n\t var lastModifiedBy = ref.lastModifiedBy;\n\t var created = ref.created;\n\t var modified = ref.modified;\n\n\t return (XMLHEAD + \"\\n \\n \" + (ESC(creator)) + \"\\n \" + (ESC(lastModifiedBy)) + \"\\n \" + (ESC(created)) + \"\\n \" + (ESC(modified)) + \"\\n\");\n\t};\n\n\tvar APP = function (ref) {\n\t var sheets = ref.sheets;\n\n\t return (XMLHEAD + \"\\n\\n Microsoft Excel\\n 0\\n false\\n \\n \\n \\n Worksheets\\n \\n \\n \" + (sheets.length) + \"\\n \\n \\n \\n \\n \" + (foreach(sheets, function (sheet, i) { return sheet.options.title\n\t ? (\"\" + (ESC(sheet.options.title)) + \"\")\n\t : (\"Sheet\" + (i + 1) + \"\"); }\n\t )) + \"\\n \\n false\\n false\\n false\\n 14.0300\\n\");\n\t};\n\n\tvar CONTENT_TYPES = function (ref) {\n\t var sheetCount = ref.sheetCount;\n\t var commentFiles = ref.commentFiles;\n\t var drawingFiles = ref.drawingFiles;\n\n\t return (XMLHEAD + \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \" + (repeat(sheetCount, function (idx) { return (\"\"); })) + \"\\n \" + (foreach(commentFiles, function (filename) { return (\"\"); })) + \"\\n \" + (foreach(drawingFiles, function (filename) { return (\"\"); })) + \"\\n \\n \\n\");\n\t};\n\n\tvar WORKBOOK = function (ref) {\n\t var sheets = ref.sheets;\n\t var filterNames = ref.filterNames;\n\t var userNames = ref.userNames;\n\n\t return (XMLHEAD + \"\\n\\n \\n \\n \\n \\n \\n \\n \" + (foreach(sheets, function (ref, i) {\n\t var options = ref.options;\n\n\t var name = options.name || options.title || (\"Sheet\" + (i + 1));\n\t return (\"\");\n\t })) + \"\\n \\n \" + (filterNames.length || userNames.length ? (\"\\n \\n \" + (foreach(filterNames, function (f) { return (\"\\n \"); })) + \"\\n \" + (foreach(userNames, function (f) { return (\"\\n \"); })) + \"\\n \") : '') + \"\\n \\n\");\n\t};\n\n\tvar WORKSHEET = function (ref$1) {\n\t var frozenColumns = ref$1.frozenColumns;\n\t var frozenRows = ref$1.frozenRows;\n\t var columns = ref$1.columns;\n\t var defaults = ref$1.defaults;\n\t var data = ref$1.data;\n\t var index = ref$1.index;\n\t var mergeCells = ref$1.mergeCells;\n\t var autoFilter = ref$1.autoFilter;\n\t var filter = ref$1.filter;\n\t var showGridLines = ref$1.showGridLines;\n\t var hyperlinks = ref$1.hyperlinks;\n\t var validations = ref$1.validations;\n\t var defaultCellStyleId = ref$1.defaultCellStyleId;\n\t var rtl = ref$1.rtl;\n\t var legacyDrawing = ref$1.legacyDrawing;\n\t var drawing = ref$1.drawing;\n\t var lastRow = ref$1.lastRow;\n\t var lastCol = ref$1.lastCol;\n\n\t return (XMLHEAD + \"\\n\\n \" + (lastRow && lastCol ? (\"\") : \"\") + \"\\n\\n \\n \\n \" + (frozenRows || frozenColumns ? (\"\\n \") : '') + \"\\n \\n \\n\\n \\n\\n \" + (defaultCellStyleId != null || (columns && columns.length > 0) ? (\"\\n \\n \" + (!columns || !columns.length ? (\"\\n \") : '') + \"\\n \" + (foreach(columns, function (column, ci) {\n\t var columnIndex = typeof column.index === \"number\" ? column.index + 1 : (ci + 1);\n\t if (column.width === 0) {\n\t return (\"\");\n\t }\n\t return (\"\");\n\t })) + \"\\n \") : '') + \"\\n\\n \\n \" + (foreach(data, function (row, ri) {\n\t var rowIndex = typeof row.index === \"number\" ? row.index + 1 : (ri + 1);\n\t return (\"\\n \\n \" + (foreach(row.data, function (cell) { return (\"\\n \\n \" + (cell.formula != null ? writeFormula(cell.formula) : '') + \"\\n \" + (cell.value != null ? (\"\" + (ESC(cell.value)) + \"\") : '') + \"\\n \"); })) + \"\\n \\n \");})) + \"\\n \\n\\n \" + (autoFilter ? (\"\")\n\t : filter ? spreadsheetFilters(filter) : '') + \"\\n\\n \" + (mergeCells.length ? (\"\\n \\n \" + (foreach(mergeCells, function (ref) { return (\"\"); })) + \"\\n \") : '') + \"\\n\\n \" + (validations.length ? (\"\\n \\n \" + (foreach(validations, function (val) { return (\"\\n \\n \" + (val.formula1 ? (\"\" + (ESC(val.formula1)) + \"\") : '') + \"\\n \" + (val.formula2 ? (\"\" + (ESC(val.formula2)) + \"\") : '') + \"\\n \"); })) + \"\\n \") : '') + \"\\n\\n \" + (hyperlinks.length ? (\"\\n \\n \" + (foreach(hyperlinks, function (link) { return (\"\\n \"); })) + \"\\n \") : '') + \"\\n\\n \\n \" + (drawing ? (\"\") : '') + \"\\n \" + (legacyDrawing ? (\"\") : '') + \"\\n\");\n\t};\n\n\tvar WORKBOOK_RELS = function (ref) {\n\t var count = ref.count;\n\n\t return (XMLHEAD + \"\\n\\n \" + (repeat(count, function (idx) { return (\"\\n \"); })) + \"\\n \\n \\n\");\n\t};\n\n\tvar WORKSHEET_RELS = function (ref) {\n\t var hyperlinks = ref.hyperlinks;\n\t var comments = ref.comments;\n\t var sheetIndex = ref.sheetIndex;\n\t var drawings = ref.drawings;\n\n\t return (XMLHEAD + \"\\n\\n \" + (foreach(hyperlinks, function (link) { return (\"\\n \"); })) + \"\\n \" + (!comments.length ? '' : (\"\\n \\n \")) + \"\\n \" + (!drawings.length ? '' : (\"\\n \")) + \"\\n\");\n\t};\n\n\tvar COMMENTS_XML = function (ref) {\n\t var comments = ref.comments;\n\n\t return (XMLHEAD + \"\\n\\n \\n \\n \\n \\n \" + (foreach(comments, function (comment) { return (\"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \" + (ESC(comment.text)) + \"\\n \\n \\n \"); })) + \"\\n \\n\");\n\t};\n\n\tvar LEGACY_DRAWING = function (ref) {\n\t var comments = ref.comments;\n\n\t return (\"\\n \\n \\n \\n \\n \" + (foreach(comments, function (comment) { return (\"\\n \\n \\n \\n \\n \\n \" + (comment.anchor) + \"\\n False\\n \" + (comment.row) + \"\\n \" + (comment.col) + \"\\n \\n \"); })) + \"\\n\");\n\t};\n\n\tvar DRAWINGS_XML = function (drawings) { return (XMLHEAD + \"\\n\\n \" + (foreach(drawings, function (drawing, index) { return (\"\\n \\n \\n \" + (drawing.col) + \"\\n \" + (drawing.colOffset) + \"\\n \" + (drawing.row) + \"\\n \" + (drawing.rowOffset) + \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \"); })) + \"\\n\"); };\n\n\tvar DRAWINGS_RELS_XML = function (rels) { return (XMLHEAD + \"\\n\\n \" + (foreach(rels, function (rel) { return (\"\\n \"); })) + \"\\n\"); };\n\n\tvar SHARED_STRINGS = function (ref) {\n\t var count = ref.count;\n\t var uniqueCount = ref.uniqueCount;\n\t var indexes = ref.indexes;\n\n\t return (XMLHEAD + \"\\n\\n \" + (foreach(Object.keys(indexes), function (index) { return (\"\\n \" + (ESC(index.substring(1))) + \"\"); })) + \"\\n\");\n\t};\n\n\tvar STYLES = function (ref) {\n\t var formats = ref.formats;\n\t var fonts = ref.fonts;\n\t var fills = ref.fills;\n\t var borders = ref.borders;\n\t var styles = ref.styles;\n\n\t return (XMLHEAD + \"\\n\\n \\n \" + (foreach(formats, function (format, fi) { return (\"\\n \"); })) + \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \" + (foreach(fonts, function (font) { return (\"\\n \\n \" + (font.bold ? '' : '') + \"\\n \" + (font.italic ? '' : '') + \"\\n \" + (font.underline ? '' : '') + \"\\n \\n \" + (font.color ? (\"\") : '') + \"\\n \" + (font.fontFamily ? (\"\\n \\n \\n \") : \"\\n \\n \\n \\n \") + \"\\n \"); })) + \"\\n \\n \\n \\n \\n \" + (foreach(fills, function (fill) { return (\"\\n \" + (fill.background ? (\"\\n \\n \\n \\n \\n \\n \") : '')); })) + \"\\n \\n \\n \\n \" + (foreach(borders, borderTemplate)) + \"\\n \\n \\n \\n \\n \\n \\n \" + (foreach(styles, function (style) { return (\"\\n \\n \" + (style.textAlign || style.verticalAlign || style.wrap ? (\"\\n \\n \") : '') + \"\\n \\n \"); })) + \"\\n \\n \\n \\n \\n \\n \\n\");\n\t};\n\n\tfunction writeFormula(formula) {\n\t if (typeof formula == \"string\") {\n\t return (\"\" + (ESC(formula)) + \"\");\n\t }\n\t // array formulas\n\t return (\"\" + (ESC(formula.src)) + \"\");\n\t}\n\n\tfunction numChar(colIndex) {\n\t var letter = Math.floor(colIndex / 26) - 1;\n\n\t return (letter >= 0 ? numChar(letter) : \"\") + String.fromCharCode(65 + (colIndex % 26));\n\t}\n\n\tfunction ref(rowIndex, colIndex) {\n\t return numChar(colIndex) + (rowIndex + 1);\n\t}\n\n\tfunction $ref(rowIndex, colIndex) {\n\t return \"$\" + numChar(colIndex) + \"$\" + (rowIndex + 1);\n\t}\n\n\tfunction filterRowIndex(options) {\n\t var frozenRows = options.frozenRows || (options.freezePane || {}).rowSplit || 1;\n\t return frozenRows - 1;\n\t}\n\n\tfunction toWidth(px) {\n\t var maximumDigitWidth = 7;\n\t return (px / maximumDigitWidth) - (Math.floor(128 / maximumDigitWidth) / 256);\n\t}\n\n\tfunction toHeight(px) {\n\t return px * 0.75;\n\t}\n\n\tfunction stripFunnyChars(value) {\n\t return String(value)\n\t .replace(/[\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F]/g, \"\") // leave CRLF in\n\t .replace(/\\r?\\n/g, \"\\r\\n\"); // make sure LF is preceded by CR\n\t}\n\n\tvar Worksheet = kendo.Class.extend({\n\t init: function(options, sharedStrings, styles, borders) {\n\t this.options = options;\n\t this._strings = sharedStrings;\n\t this._styles = styles;\n\t this._borders = borders;\n\t this._validations = {};\n\t this._comments = [];\n\t this._drawings = options.drawings || [];\n\t this._hyperlinks = (this.options.hyperlinks || []).map(\n\t function (link, i) { return $.extend({}, link, { rId: (\"link\" + i) }); });\n\t },\n\n\t relsToXML: function() {\n\t var hyperlinks = this._hyperlinks;\n\t var comments = this._comments;\n\t var drawings = this._drawings;\n\n\t if (hyperlinks.length || comments.length || drawings.length) {\n\t return WORKSHEET_RELS({\n\t hyperlinks : hyperlinks,\n\t comments : comments,\n\t sheetIndex : this.options.sheetIndex,\n\t drawings : drawings\n\t });\n\t }\n\t },\n\n\t toXML: function(index) {\n\t var this$1 = this;\n\n\t var mergeCells = this.options.mergedCells || [];\n\t var rows = this.options.rows || [];\n\t var data = inflate(rows, mergeCells);\n\n\t this._readCells(data);\n\n\t var autoFilter = this.options.filter;\n\t var filter;\n\t if (autoFilter && (typeof autoFilter.from === \"number\") && (typeof autoFilter.to === \"number\")) {\n\t // Grid enables auto filter\n\t autoFilter = {\n\t from: ref(filterRowIndex(this.options), autoFilter.from),\n\t to: ref(filterRowIndex(this.options), autoFilter.to)\n\t };\n\t } else if (autoFilter && autoFilter.ref && autoFilter.columns) {\n\t // this is probably from the Spreadsheet\n\t filter = autoFilter;\n\t autoFilter = null;\n\t }\n\n\t var validations = [];\n\t for (var i in this._validations) {\n\t if (Object.prototype.hasOwnProperty.call(this$1._validations, i)) {\n\t validations.push(this$1._validations[i]);\n\t }\n\t }\n\n\t var defaultCellStyleId = null;\n\t if (this.options.defaultCellStyle) {\n\t defaultCellStyleId = this._lookupStyle(this.options.defaultCellStyle);\n\t }\n\n\t var freezePane = this.options.freezePane || {};\n\t var defaults = this.options.defaults || {};\n\t var lastRow = this.options.rows ? this._getLastRow() : 1;\n\t var lastCol = this.options.rows ? this._getLastCol() : 1;\n\n\t return WORKSHEET({\n\t frozenColumns: this.options.frozenColumns || freezePane.colSplit,\n\t frozenRows: this.options.frozenRows || freezePane.rowSplit,\n\t columns: this.options.columns,\n\t defaults: defaults,\n\t data: data,\n\t index: index,\n\t mergeCells: mergeCells,\n\t autoFilter: autoFilter,\n\t filter: filter,\n\t showGridLines: this.options.showGridLines,\n\t hyperlinks: this._hyperlinks,\n\t validations: validations,\n\t defaultCellStyleId: defaultCellStyleId,\n\t rtl: this.options.rtl !== undefined ? this.options.rtl : defaults.rtl,\n\t legacyDrawing: this._comments.length ? (\"vml\" + (this.options.sheetIndex)) : null,\n\t drawing: this._drawings.length ? (\"drw\" + (this.options.sheetIndex)) : null,\n\t lastRow: lastRow,\n\t lastCol: lastCol\n\t });\n\t },\n\n\t commentsXML: function() {\n\t if (this._comments.length) {\n\t return COMMENTS_XML({ comments: this._comments });\n\t }\n\t },\n\n\t drawingsXML: function(images) {\n\t if (this._drawings.length) {\n\t var rels = {};\n\t var main = this._drawings.map(function (drw) {\n\t var ref = parseRef(drw.topLeftCell);\n\t var img = rels[drw.image];\n\t if (!img) {\n\t img = rels[drw.image] = {\n\t rId: (\"img\" + (drw.image)),\n\t target: images[drw.image].target\n\t };\n\t }\n\t return {\n\t col : ref.col,\n\t colOffset : pixelsToExcel(drw.offsetX),\n\t row : ref.row,\n\t rowOffset : pixelsToExcel(drw.offsetY),\n\t width : pixelsToExcel(drw.width),\n\t height : pixelsToExcel(drw.height),\n\t imageId : img.rId\n\t };\n\t });\n\t return {\n\t main: DRAWINGS_XML(main),\n\t rels: DRAWINGS_RELS_XML(rels)\n\t };\n\t }\n\t },\n\n\t legacyDrawing: function() {\n\t if (this._comments.length) {\n\t return LEGACY_DRAWING({ comments: this._comments });\n\t }\n\t },\n\n\t _lookupString: function(value) {\n\t var key = \"$\" + value;\n\t var index = this._strings.indexes[key];\n\t var result;\n\n\t if (index !== undefined) {\n\t result = index;\n\t } else {\n\t result = this._strings.indexes[key] = this._strings.uniqueCount;\n\t this._strings.uniqueCount ++;\n\t }\n\n\t this._strings.count ++;\n\n\t return result;\n\t },\n\n\t _lookupStyle: function(style) {\n\t var json = JSON.stringify(style);\n\n\t if (json === \"{}\") {\n\t return 0;\n\t }\n\n\t var index = indexOf(json, this._styles);\n\n\t if (index < 0) {\n\t index = this._styles.push(json) - 1;\n\t }\n\n\t // There is one default style\n\t return index + 1;\n\t },\n\n\t _lookupBorder: function(border) {\n\t var json = JSON.stringify(border);\n\t if (json === \"{}\") {\n\t return;\n\t }\n\n\t var index = indexOf(json, this._borders);\n\t if (index < 0) {\n\t index = this._borders.push(json) - 1;\n\t }\n\n\t // There is one default border\n\t return index + 1;\n\t },\n\n\t _readCells: function(rowData) {\n\t var this$1 = this;\n\n\t for (var i = 0; i < rowData.length; i++) {\n\t var row = rowData[i];\n\t var cells = row.cells;\n\n\t row.data = [];\n\n\t for (var j = 0; j < cells.length; j++) {\n\t var cellData = this$1._cell(cells[j], row.index, j);\n\t if (cellData) {\n\t row.data.push(cellData);\n\t }\n\t }\n\t }\n\t },\n\n\t _cell: function(data, rowIndex, cellIndex) {\n\t if (!data || data === EMPTY_CELL) {\n\t return null;\n\t }\n\n\t var value = data.value;\n\n\t var border = {};\n\n\t if (data.borderLeft) {\n\t border.left = data.borderLeft;\n\t }\n\n\t if (data.borderRight) {\n\t border.right = data.borderRight;\n\t }\n\n\t if (data.borderTop) {\n\t border.top = data.borderTop;\n\t }\n\n\t if (data.borderBottom) {\n\t border.bottom = data.borderBottom;\n\t }\n\n\t border = this._lookupBorder(border);\n\n\t var defStyle = this.options.defaultCellStyle || {};\n\t var style = { borderId: border };\n\n\t (function(add) {\n\t add(\"color\");\n\t add(\"background\");\n\t add(\"bold\");\n\t add(\"italic\");\n\t add(\"underline\");\n\t if (!add(\"fontFamily\")) { add(\"fontName\", \"fontFamily\"); }\n\t add(\"fontSize\");\n\t add(\"format\");\n\t if (!add(\"textAlign\")) { add(\"hAlign\", \"textAlign\"); }\n\t if (!add(\"verticalAlign\")) { add(\"vAlign\", \"verticalAlign\"); }\n\t add(\"wrap\");\n\t add(\"indent\");\n\t })(\n\t function(prop, target) {\n\t var val = data[prop];\n\t if (val === undefined) {\n\t val = defStyle[prop];\n\t }\n\t if (val !== undefined) {\n\t style[target || prop] = val;\n\t return true;\n\t }\n\t }\n\t );\n\n\t var columns = this.options.columns || [];\n\n\t var column = columns[cellIndex];\n\t var type = typeof value;\n\n\t if (column && column.autoWidth && (!data.colSpan || data.colSpan === 1)) {\n\t var displayValue = value;\n\n\t // XXX: let's not bring kendo.toString in only for this.\n\t // better wait until the spreadsheet engine is available as a separate\n\t // component, then we can use a real Excel-like formatter.\n\t //\n\t if (type === \"number\") {\n\t // kendo.toString will not behave exactly like the Excel format\n\t // Still, it's the best we have available for estimating the character count.\n\t displayValue = IntlService.toString(value, data.format);\n\t }\n\n\t column.width = Math.max(column.width || 0, String(displayValue).length);\n\t }\n\n\t if (type === \"string\") {\n\t value = stripFunnyChars(value);\n\t value = this._lookupString(value);\n\t type = \"s\";\n\t } else if (type === \"number\") {\n\t type = \"n\";\n\t } else if (type === \"boolean\") {\n\t type = \"b\";\n\t value = Number(value);\n\t } else if (value && value.getTime) {\n\t type = null;\n\t value = dateToSerial(value);\n\t if (!style.format) {\n\t style.format = \"mm-dd-yy\";\n\t }\n\t } else {\n\t type = null;\n\t value = null;\n\t }\n\n\t style = this._lookupStyle(style);\n\n\t var cellName = ref(rowIndex, cellIndex);\n\n\t if (data.validation) {\n\t this._addValidation(data.validation, cellName);\n\t }\n\n\t if (data.comment) {\n\t var anchor = [\n\t cellIndex + 1, // start column\n\t 15, // start column offset\n\t rowIndex, // start row\n\t 10, // start row offset\n\t cellIndex + 3, // end column\n\t 15, // end column offset\n\t rowIndex + 3, // end row\n\t 4 // end row offset\n\t ];\n\t this._comments.push({\n\t ref : cellName,\n\t text : data.comment,\n\t row : rowIndex,\n\t col : cellIndex,\n\t anchor : anchor.join(\", \")\n\t });\n\t }\n\n\t return {\n\t value: value,\n\t formula: data.formula,\n\t type: type,\n\t style: style,\n\t ref: cellName\n\t };\n\t },\n\n\t _addValidation: function(v, ref) {\n\t var tmp = {\n\t showErrorMessage : v.type === \"reject\" ? 1 : 0,\n\t formula1 : v.from,\n\t formula2 : v.to,\n\t type : MAP_EXCEL_TYPE[v.dataType] || v.dataType,\n\t operator : MAP_EXCEL_OPERATOR[v.comparerType] || v.comparerType,\n\t allowBlank : v.allowNulls ? 1 : 0,\n\t showDropDown : v.showButton ? 0 : 1, // LOL, Excel!\n\t error : v.messageTemplate,\n\t errorTitle : v.titleTemplate\n\t };\n\t var json = JSON.stringify(tmp);\n\t if (!this._validations[json]) {\n\t this._validations[json] = tmp;\n\t tmp.sqref = [];\n\t }\n\t this._validations[json].sqref.push(ref);\n\t },\n\n\t _getLastRow: function() {\n\t return countData(this.options.rows);\n\t },\n\n\t _getLastCol: function() {\n\t var last = 0;\n\t this.options.rows.forEach(function(row) {\n\t if (row.cells) {\n\t last = Math.max(last, countData(row.cells));\n\t }\n\t });\n\t return last;\n\t }\n\t});\n\n\tfunction countData(data) {\n\t var last = data.length;\n\t data.forEach(function(el) {\n\t if (el.index && el.index >= last) {\n\t last = el.index + 1;\n\t }\n\t });\n\t return last;\n\t}\n\n\tvar MAP_EXCEL_OPERATOR = {\n\t // includes only what differs; key is our operator, value is Excel\n\t // operator.\n\t greaterThanOrEqualTo : \"greaterThanOrEqual\",\n\t lessThanOrEqualTo : \"lessThanOrEqual\"\n\t};\n\n\tvar MAP_EXCEL_TYPE = {\n\t number: \"decimal\"\n\t};\n\n\tvar defaultFormats = {\n\t \"General\": 0,\n\t \"0\": 1,\n\t \"0.00\": 2,\n\t \"#,##0\": 3,\n\t \"#,##0.00\": 4,\n\t \"0%\": 9,\n\t \"0.00%\": 10,\n\t \"0.00E+00\": 11,\n\t \"# ?/?\": 12,\n\t \"# ??/??\": 13,\n\t \"mm-dd-yy\": 14,\n\t \"d-mmm-yy\": 15,\n\t \"d-mmm\": 16,\n\t \"mmm-yy\": 17,\n\t \"h:mm AM/PM\": 18,\n\t \"h:mm:ss AM/PM\": 19,\n\t \"h:mm\": 20,\n\t \"h:mm:ss\": 21,\n\t \"m/d/yy h:mm\": 22,\n\t \"#,##0 ;(#,##0)\": 37,\n\t \"#,##0 ;[Red](#,##0)\": 38,\n\t \"#,##0.00;(#,##0.00)\": 39,\n\t \"#,##0.00;[Red](#,##0.00)\": 40,\n\t \"mm:ss\": 45,\n\t \"[h]:mm:ss\": 46,\n\t \"mmss.0\": 47,\n\t \"##0.0E+0\": 48,\n\t \"@\": 49,\n\t \"[$-404]e/m/d\": 27,\n\t \"m/d/yy\": 30,\n\t \"t0\": 59,\n\t \"t0.00\": 60,\n\t \"t#,##0\": 61,\n\t \"t#,##0.00\": 62,\n\t \"t0%\": 67,\n\t \"t0.00%\": 68,\n\t \"t# ?/?\": 69,\n\t \"t# ??/??\": 70\n\t};\n\n\tfunction convertColor(value) {\n\t var color = value;\n\t if (color.length < 6) {\n\t color = color.replace(/(\\w)/g, function($0, $1) {\n\t return $1 + $1;\n\t });\n\t }\n\n\t color = color.substring(1).toUpperCase();\n\n\t if (color.length < 8) {\n\t color = \"FF\" + color;\n\t }\n\n\t return color;\n\t}\n\n\tvar Workbook = kendo.Class.extend({\n\t init: function(options) {\n\t var this$1 = this;\n\n\t this.options = options || {};\n\t this._strings = {\n\t indexes: {},\n\t count: 0,\n\t uniqueCount: 0\n\t };\n\t this._styles = [];\n\t this._borders = [];\n\t this._images = this.options.images;\n\t this._imgId = 0;\n\n\t this._sheets = map(this.options.sheets || [], function (options, i) {\n\t options.defaults = this$1.options;\n\t options.sheetIndex = i + 1;\n\t return new Worksheet(options, this$1._strings, this$1._styles, this$1._borders);\n\t });\n\t },\n\n\t imageFilename: function(mimeType) {\n\t var id = ++this._imgId;\n\t switch (mimeType) {\n\t case \"image/jpg\":\n\t case \"image/jpeg\":\n\t return (\"image\" + id + \".jpg\");\n\t case \"image/png\":\n\t return (\"image\" + id + \".png\");\n\t case \"image/gif\":\n\t return (\"image\" + id + \".gif\");\n\t default:\n\t return (\"image\" + id + \".bin\"); // XXX: anything better to do here?\n\t }\n\t },\n\n\t toZIP: function() {\n\t var this$1 = this;\n\n\t var zip = createZip();\n\n\t var docProps = zip.folder(\"docProps\");\n\n\t docProps.file(\"core.xml\", CORE({\n\t creator: this.options.creator || \"Kendo UI\",\n\t lastModifiedBy: this.options.creator || \"Kendo UI\",\n\t created: this.options.date || new Date().toJSON(),\n\t modified: this.options.date || new Date().toJSON()\n\t }));\n\n\t var sheetCount = this._sheets.length;\n\n\t docProps.file(\"app.xml\", APP({ sheets: this._sheets }));\n\n\t var rels = zip.folder(\"_rels\");\n\t rels.file(\".rels\", RELS);\n\n\t var xl = zip.folder(\"xl\");\n\n\t var xlRels = xl.folder(\"_rels\");\n\t xlRels.file(\"workbook.xml.rels\", WORKBOOK_RELS({ count: sheetCount }));\n\n\t if (this._images) {\n\t var media = xl.folder(\"media\");\n\t Object.keys(this._images).forEach(function (id) {\n\t var img = this$1._images[id];\n\t var filename = this$1.imageFilename(img.type);\n\t media.file(filename, img.data);\n\t img.target = \"../media/\" + filename;\n\t });\n\t }\n\n\t var sheetIds = {};\n\t xl.file(\"workbook.xml\", WORKBOOK({\n\t sheets: this._sheets,\n\t filterNames: map(this._sheets, function(sheet, index) {\n\t var options = sheet.options;\n\t var sheetName = (options.name || options.title || \"Sheet\" + (index + 1));\n\t sheetIds[sheetName.toLowerCase()] = index;\n\t var filter = options.filter;\n\t if (filter) {\n\t if (filter.ref) {\n\t // spreadsheet provides `ref`\n\t var a = filter.ref.split(\":\");\n\t var from = parseRef(a[0]);\n\t var to = parseRef(a[1]);\n\t return {\n\t localSheetId: index,\n\t name: sheetName,\n\t from: $ref(from.row, from.col),\n\t to: $ref(to.row, to.col)\n\t };\n\t } else if (typeof filter.from !== \"undefined\" && typeof filter.to !== \"undefined\") {\n\t // grid does this\n\t return {\n\t localSheetId: index,\n\t name: sheetName,\n\t from: $ref(filterRowIndex(options), filter.from),\n\t to: $ref(filterRowIndex(options), filter.to)\n\t };\n\t }\n\t }\n\t }),\n\t userNames: map(this.options.names || [], function(def) {\n\t return {\n\t name: def.localName,\n\t localSheetId: def.sheet ? sheetIds[def.sheet.toLowerCase()] : null,\n\t value: def.value,\n\t hidden: def.hidden\n\t };\n\t })\n\t }));\n\n\t var worksheets = xl.folder(\"worksheets\");\n\t var drawings = xl.folder(\"drawings\");\n\t var drawingsRels = drawings.folder(\"_rels\");\n\t var sheetRels = worksheets.folder(\"_rels\");\n\t var commentFiles = [];\n\t var drawingFiles = [];\n\n\t for (var idx = 0; idx < sheetCount; idx++) {\n\t var sheet = this$1._sheets[idx];\n\t var sheetName = \"sheet\" + (idx + 1) + \".xml\";\n\t var sheetXML = sheet.toXML(idx); // must be called before relsToXML\n\t var relsXML = sheet.relsToXML();\n\t var commentsXML = sheet.commentsXML();\n\t var legacyDrawing = sheet.legacyDrawing();\n\t var drawingsXML = sheet.drawingsXML(this$1._images);\n\n\t if (relsXML) {\n\t sheetRels.file(sheetName + \".rels\", relsXML);\n\t }\n\t if (commentsXML) {\n\t var name = \"comments\" + (sheet.options.sheetIndex) + \".xml\";\n\t xl.file(name, commentsXML);\n\t commentFiles.push(name);\n\t }\n\t if (legacyDrawing) {\n\t drawings.file((\"vmlDrawing\" + (sheet.options.sheetIndex) + \".vml\"), legacyDrawing);\n\t }\n\t if (drawingsXML) {\n\t var name$1 = \"drawing\" + (sheet.options.sheetIndex) + \".xml\";\n\t drawings.file(name$1, drawingsXML.main);\n\t drawingsRels.file((name$1 + \".rels\"), drawingsXML.rels);\n\t drawingFiles.push(name$1);\n\t }\n\n\t worksheets.file(sheetName, sheetXML);\n\t }\n\n\t var borders = map(this._borders, parseJSON);\n\n\t var styles = map(this._styles, parseJSON);\n\n\t var hasFont = function(style) {\n\t return style.underline || style.bold || style.italic || style.color || style.fontFamily || style.fontSize;\n\t };\n\n\t var convertFontSize = function(value) {\n\t var fontInPx = Number(value);\n\t var fontInPt;\n\n\t if (fontInPx) {\n\t fontInPt = fontInPx * 3 / 4;\n\t }\n\n\t return fontInPt;\n\t };\n\n\t var fonts = map(styles, function(style) {\n\t if (style.fontSize) {\n\t style.fontSize = convertFontSize(style.fontSize);\n\t }\n\n\t if (style.color) {\n\t style.color = convertColor(style.color);\n\t }\n\n\t if (hasFont(style)) {\n\t return style;\n\t }\n\t });\n\n\t var formats = map(styles, function(style) {\n\t if (style.format && defaultFormats[style.format] === undefined) {\n\t return style;\n\t }\n\t });\n\n\t var fills = map(styles, function(style) {\n\t if (style.background) {\n\t style.background = convertColor(style.background);\n\t return style;\n\t }\n\t });\n\n\t xl.file(\"styles.xml\", STYLES({\n\t fonts: fonts,\n\t fills: fills,\n\t formats: formats,\n\t borders: borders,\n\t styles: map(styles, function(style) {\n\t var result = {};\n\n\t if (hasFont(style)) {\n\t result.fontId = indexOf(style, fonts) + 1;\n\t }\n\n\t if (style.background) {\n\t result.fillId = indexOf(style, fills) + 2;\n\t }\n\n\t result.textAlign = style.textAlign;\n\t result.indent = style.indent;\n\t result.verticalAlign = style.verticalAlign;\n\t result.wrap = style.wrap;\n\t result.borderId = style.borderId;\n\n\t if (style.format) {\n\t if (defaultFormats[style.format] !== undefined) {\n\t result.numFmtId = defaultFormats[style.format];\n\t } else {\n\t result.numFmtId = 165 + indexOf(style, formats);\n\t }\n\t }\n\n\t return result;\n\t })\n\t }));\n\n\t xl.file(\"sharedStrings.xml\", SHARED_STRINGS(this._strings));\n\n\t zip.file(\"[Content_Types].xml\", CONTENT_TYPES({\n\t sheetCount: sheetCount,\n\t commentFiles: commentFiles,\n\t drawingFiles: drawingFiles\n\t }));\n\n\t return zip;\n\t },\n\n\t toDataURL: function() {\n\t var zip = this.toZIP();\n\n\t return zip.generateAsync ? zip.generateAsync(DATA_URL_OPTIONS).then(toDataURI) : toDataURI(zip.generate(DATA_URL_OPTIONS));\n\t },\n\n\t toBlob: function() {\n\t var zip = this.toZIP();\n\t if (zip.generateAsync) {\n\t return zip.generateAsync(BLOB_OPTIONS);\n\t }\n\t return new Blob([ zip.generate(ARRAYBUFFER_OPTIONS) ], { type: MIME_TYPE });\n\t }\n\t});\n\n\tfunction borderStyle(width) {\n\t var alias = \"thin\";\n\n\t if (width === 2) {\n\t alias = \"medium\";\n\t } else if (width === 3) {\n\t alias = \"thick\";\n\t }\n\n\t return alias;\n\t}\n\n\tfunction borderSideTemplate(name, style) {\n\t var result = \"\";\n\n\t if (style) {\n\t result += \"<\" + name + \" style=\\\"\" + borderStyle(style.size) + \"\\\">\";\n\t if (style.color) {\n\t result += \"\";\n\t }\n\t result += \"\";\n\t }\n\n\t return result;\n\t}\n\n\tfunction borderTemplate(border) {\n\t return \"\" +\n\t borderSideTemplate(\"left\", border.left) +\n\t borderSideTemplate(\"right\", border.right) +\n\t borderSideTemplate(\"top\", border.top) +\n\t borderSideTemplate(\"bottom\", border.bottom) +\n\t \"\";\n\t}\n\n\tvar EMPTY_CELL = {};\n\tfunction inflate(rows, mergedCells) {\n\t var rowData = [];\n\t var rowsByIndex = [];\n\n\t indexRows(rows, function(row, index) {\n\t var data = {\n\t _source: row,\n\t index: index,\n\t height: row.height,\n\t level: row.level,\n\t cells: []\n\t };\n\n\t rowData.push(data);\n\t rowsByIndex[index] = data;\n\t });\n\n\t var sorted = sortByIndex(rowData).slice(0);\n\t var ctx = {\n\t rowData: rowData,\n\t rowsByIndex: rowsByIndex,\n\t mergedCells: mergedCells\n\t };\n\n\t for (var i = 0; i < sorted.length; i++) {\n\t fillCells(sorted[i], ctx);\n\t delete sorted[i]._source;\n\t }\n\n\t return sortByIndex(rowData);\n\t}\n\n\tfunction indexRows(rows, callback) {\n\t for (var i = 0; i < rows.length; i++) {\n\t var row = rows[i];\n\t if (!row) {\n\t continue;\n\t }\n\n\t var index = row.index;\n\t if (typeof index !== \"number\") {\n\t index = i;\n\t }\n\n\t callback(row, index);\n\t }\n\t}\n\n\tfunction sortByIndex(items) {\n\t return items.sort(function(a, b) {\n\t return a.index - b.index;\n\t });\n\t}\n\n\tfunction pushUnique(array, el) {\n\t if (array.indexOf(el) < 0) {\n\t array.push(el);\n\t }\n\t}\n\n\tfunction getSpan(mergedCells, ref) {\n\t for (var i = 0; i < mergedCells.length; ++i) {\n\t var range = mergedCells[i];\n\t var a = range.split(\":\");\n\t var topLeft = a[0];\n\t if (topLeft === ref) {\n\t var bottomRight = a[1];\n\t topLeft = parseRef(topLeft);\n\t bottomRight = parseRef(bottomRight);\n\t return {\n\t rowSpan: bottomRight.row - topLeft.row + 1,\n\t colSpan: bottomRight.col - topLeft.col + 1\n\t };\n\t }\n\t }\n\t}\n\n\tfunction parseRef(ref) {\n\t function getcol(str) {\n\t var upperStr = str.toUpperCase();\n\t var col = 0;\n\t for (var i = 0; i < upperStr.length; ++i) {\n\t col = col * 26 + upperStr.charCodeAt(i) - 64;\n\t }\n\t return col - 1;\n\t }\n\n\t function getrow(str) {\n\t return parseInt(str, 10) - 1;\n\t }\n\n\t var m = /^([a-z]+)(\\d+)$/i.exec(ref);\n\t return {\n\t row: getrow(m[2]),\n\t col: getcol(m[1])\n\t };\n\t}\n\n\tfunction pixelsToExcel(px) {\n\t return Math.round(px * 9525);\n\t}\n\n\tfunction fillCells(data, ctx) {\n\t var row = data._source;\n\t var rowIndex = data.index;\n\t var cells = row.cells;\n\t var cellData = data.cells;\n\n\t if (!cells) {\n\t return;\n\t }\n\n\t for (var i = 0; i < cells.length; i++) {\n\t var cell = cells[i] || EMPTY_CELL;\n\n\t var rowSpan = cell.rowSpan || 1;\n\t var colSpan = cell.colSpan || 1;\n\n\t var cellIndex = insertCell(cellData, cell);\n\t var topLeftRef = ref(rowIndex, cellIndex);\n\n\t if (rowSpan === 1 && colSpan === 1) {\n\t // could still be merged: the spreadsheet does not send\n\t // rowSpan/colSpan, but mergedCells is already populated.\n\t // https://github.com/telerik/kendo-ui-core/issues/2401\n\t var tmp = getSpan(ctx.mergedCells, topLeftRef);\n\t if (tmp) {\n\t colSpan = tmp.colSpan;\n\t rowSpan = tmp.rowSpan;\n\t }\n\t }\n\n\t spanCell(cell, cellData, cellIndex, colSpan);\n\n\t if (rowSpan > 1 || colSpan > 1) {\n\t pushUnique(ctx.mergedCells,\n\t topLeftRef + \":\" + ref(rowIndex + rowSpan - 1,\n\t cellIndex + colSpan - 1));\n\t }\n\n\t if (rowSpan > 1) {\n\t for (var ri = rowIndex + 1; ri < rowIndex + rowSpan; ri++) {\n\t var nextRow = ctx.rowsByIndex[ri];\n\t if (!nextRow) {\n\t nextRow = ctx.rowsByIndex[ri] = { index: ri, cells: [] };\n\t ctx.rowData.push(nextRow);\n\t }\n\n\t spanCell(cell, nextRow.cells, cellIndex - 1, colSpan + 1);\n\t }\n\t }\n\t }\n\t}\n\n\tfunction insertCell(data, cell) {\n\t var index;\n\n\t if (typeof cell.index === \"number\") {\n\t index = cell.index;\n\t insertCellAt(data, cell, cell.index);\n\t } else {\n\t index = appendCell(data, cell);\n\t }\n\n\t return index;\n\t}\n\n\tfunction insertCellAt(data, cell, index) {\n\t data[index] = cell;\n\t}\n\n\tfunction appendCell(data, cell) {\n\t var index = data.length;\n\n\t for (var i = 0; i < data.length + 1; i++) {\n\t if (!data[i]) {\n\t data[i] = cell;\n\t index = i;\n\t break;\n\t }\n\t }\n\n\t return index;\n\t}\n\n\tfunction spanCell(cell, row, startIndex, colSpan) {\n\t for (var i = 1; i < colSpan; i++) {\n\t var tmp = {\n\t borderTop : cell.borderTop,\n\t borderRight : cell.borderRight,\n\t borderBottom : cell.borderBottom,\n\t borderLeft : cell.borderLeft\n\t };\n\t insertCellAt(row, tmp, startIndex + i);\n\t }\n\t}\n\n\tvar SPREADSHEET_FILTERS = function (ref$1) {\n\t var ref = ref$1.ref;\n\t var columns = ref$1.columns;\n\t var generators = ref$1.generators;\n\n\t return (\"\\n\\n \" + (foreach(columns, function (col) { return (\"\\n \\n \" + (generators[col.filter](col)) + \"\\n \\n \"); })) + \"\\n\");\n\t};\n\n\tvar SPREADSHEET_CUSTOM_FILTER = function (ref) {\n\t var logic = ref.logic;\n\t var criteria = ref.criteria;\n\n\t return (\"\\n\\n\" + (foreach(criteria, function (f) {\n\t var op = spreadsheetFilters.customOperator(f);\n\t var val = spreadsheetFilters.customValue(f);\n\t return (\"\");\n\t})) + \"\\n\");\n\t};\n\n\tvar SPREADSHEET_DYNAMIC_FILTER = function (ref) {\n\t var type = ref.type;\n\n\t return (\"\");\n\t};\n\n\tvar SPREADSHEET_TOP_FILTER = function (ref) {\n\t var type = ref.type;\n\t var value = ref.value;\n\n\t return (\"\");\n\t};\n\n\tvar SPREADSHEET_VALUE_FILTER = function (ref) {\n\t var blanks = ref.blanks;\n\t var values = ref.values;\n\n\t return (\"\\n \" + (foreach(values, function (value) { return (\"\\n \"); })) + \"\\n \");\n\t};\n\n\tfunction spreadsheetFilters(filter) {\n\t return SPREADSHEET_FILTERS({\n\t ref: filter.ref,\n\t columns: filter.columns,\n\t generators: {\n\t custom : SPREADSHEET_CUSTOM_FILTER,\n\t dynamic : SPREADSHEET_DYNAMIC_FILTER,\n\t top : SPREADSHEET_TOP_FILTER,\n\t value : SPREADSHEET_VALUE_FILTER\n\t }\n\t });\n\t}\n\n\tspreadsheetFilters.customOperator = function(f) {\n\t return {\n\t eq : \"equal\",\n\t gt : \"greaterThan\",\n\t gte : \"greaterThanOrEqual\",\n\t lt : \"lessThan\",\n\t lte : \"lessThanOrEqual\",\n\t ne : \"notEqual\",\n\n\t // These are not in the spec, but seems to be how Excel does\n\t // it (see customValue below). For the non-negated versions,\n\t // the operator attribute is missing completely.\n\t doesnotstartwith: \"notEqual\",\n\t doesnotendwith: \"notEqual\",\n\t doesnotcontain: \"notEqual\",\n\t doesnotmatch: \"notEqual\"\n\t }[f.operator.toLowerCase()];\n\t};\n\n\tfunction quoteSheet(name) {\n\t if (/^\\'/.test(name)) { // assume already quoted, the Spreadsheet does it.\n\t return name;\n\t }\n\t if (/^[a-z_][a-z0-9_]*$/i.test(name)) {\n\t return name; // no need to quote it\n\t }\n\t return \"'\" + name.replace(/\\x27/g, \"\\\\'\") + \"'\";\n\t}\n\n\tspreadsheetFilters.customValue = function(f) {\n\t function esc(str) {\n\t return str.replace(/([*?])/g, \"~$1\");\n\t }\n\n\t switch (f.operator.toLowerCase()) {\n\t case \"startswith\":\n\t case \"doesnotstartwith\":\n\t return esc(f.value) + \"*\";\n\n\t case \"endswith\":\n\t case \"doesnotendwith\":\n\t return \"*\" + esc(f.value);\n\n\t case \"contains\":\n\t case \"doesnotcontain\":\n\t return \"*\" + esc(f.value) + \"*\";\n\n\t default:\n\t return f.value;\n\t }\n\t};\n\n\tspreadsheetFilters.dynamicFilterType = function(type) {\n\t return {\n\t quarter1 : \"Q1\",\n\t quarter2 : \"Q2\",\n\t quarter3 : \"Q3\",\n\t quarter4 : \"Q4\",\n\t january : \"M1\",\n\t february : \"M2\",\n\t march : \"M3\",\n\t april : \"M4\",\n\t may : \"M5\",\n\t june : \"M6\",\n\t july : \"M7\",\n\t august : \"M8\",\n\t september : \"M9\",\n\t october : \"M10\",\n\t november : \"M11\",\n\t december : \"M12\"\n\t }[type.toLowerCase()] || type;\n\t};\n\n\tkendo.deepExtend(kendo.ooxml, {\n\t IntlService: IntlService,\n\t Workbook: Workbook,\n\t Worksheet: Worksheet\n\t});\n\n\t})(window.kendo.jQuery);\n\n\t}, __webpack_require__(3));\n\n/***/ })\n\n/******/ });"],"sourceRoot":""}