{"version":3,"file":"kendo.filemanager.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendofilemanager","js","this","$","undefined$1","kendo","window","extend","deferred","Deferred","Class","Command","init","options","filemanager","CreateFolderCommand","fn","call","exec","that","commandStack","_commandStack","dataSource","_viewDataSource","removeProxy","_remove","bind","_item","_createNewModel","push","item","toJSON","fail","add","pushDestroy","RenameCommand","target","viewItem","_view","widgetComponent","dataItem","edit","_renameTreeViewItem","uid","data","treeView","getByUid","realItem","get","id","_prompt","type","defaultInput","name","done","newName","set","DeleteCommand","itemsToRemove","items","getSelected","is","length","_confirm","removeItems","_itemsToRemove","Array","isArray","_removeItem","itemToRemove","splice","then","remove","CopyCommand","targetDataSource","children","i","fileManagerNewItem","MoveCommand","promises","cloning","promise","_delete","whenAll","always","SortCommand","sortOptions","defaultSortOption","dir","field","sort","folderSortOption","SearchCommand","filter","operator","value","ChangeViewCommand","view","resize","OpenDialogCommand","dialog","open","console","warn","format","TogglePaneCommand","pane","resizable","getResizable","toggle","wrapper","find","handle","_resizeDraggable","CommandStack","_stack","_keys","guid","next","key","keys","resolve","command","reject","empty","ui","FileManagerCommand","commands","jQuery","Observable","encode","htmlEncode","SELECT","CHANGE","OPEN","KEYDOWN","KEYDOWNACTION","NS","fileManagerDraggables","fileManagerDragOrigin","Component","widget","element","Error","_bindEvents","_binding","_bound","ev","trigger","preventDefault","_setDSOptions","dataSourceOptions","_initDragAndDrop","dropFilter","draggable","kendoDraggable","hint","_hint","cursorOffset","top","left","holdToDrag","ignore","hold","_hold","userEvents","minHold","droptarget","kendoDropTargetArea","drop","_onDrop","dragenter","dropTarget","addClass","dragleave","removeClass","currentTarget","selectable","clear","select","cancel","selectedItems","icon","messages","isDirectory","targetId","itemIds","refresh","setDataSource","destroy","ViewComponent","ViewComponents","registerViewComponent","componentName","component","getViewComponent","ListView","explicitOptions","defaultOptions","ariaLabel","kendoKeydown","_kendoKeydown","listView","isLocalBinding","layout","flex","direction","wrap","support","mobileOS","template","ref","extension","getFileGroup","iconClass","size","editTemplate","navigatable","_select","on","_dblClick","_mousedown","_keydown","_keydownAction","sender","isDirty","_modelFromElement","editable","dirty","_closeEditable","dataItems","entries","keyCode","ESC","node","closest","which","ENTER","preventKendoKeydown","_handleEnterKey","current","_triggerOpen","entry","addFolder","selected","off","TreeView","dataTextField","_refreshDataSource","action","parentNode","treeEl","activeDescendant","attr","map","hasChildren","findByUid","_progress","each","index","append","_shouldFocus","focus","existingItem","_nextVisible","removeAttr","_navigate","_expand","entryId","path","noop","selectedItem","reload","read","Grid","_setupColumns","grid","mode","confirmation","sortable","columns","title","nameField","dateCreatedField","sizeField","getFileSizeMessage","table","_toggleFocusable","saveRow","F2","setTimeout","_editContainer","_tryCancel","cancelChanges","val","state","addBack","toggleClass","container","model","_destroyEditable","_displayRow","addRow","editRow","Node","HierarchicalDataSource","DataSource","schemas","fields","defaultValue","hasDirectories","created","createdUtc","modified","modifiedUtc","FileEntry","getter","isFunction","isDirectoryObject","_initChildren","transport","parameterMap","FileManagerDataSource","_childrenOptions","parent","e","collection","_updateChildrenField","isNew","_defaultId","fileEntry","serverFiltering","_hierarchicalFilter","schema","modelBase","LocalTransport","_attachBubbleHandlers","insert","result","_cleanDestroyed","_hasDirectories","_destroyed","create","_dataSource","observableFileManagerData","array","fetch","_data","ContextMenu","ACTION","FileManagerContextMenu","_overrideTemplates","_restrictDefaultItems","_extendItems","_onSelect","_onOpen","templates","sprite","spriteCssClass","defaultItems","rename","text","delete","events","concat","isPlainObject","Object","_extendItem","isEmptyObject","args","DataBoundWidget","outerHeight","NAVIGATE","ERROR","CLOSE","DATABINDING","DATABOUND","DROP","EXECUTE","COMMAND","DOT","fileManagerStyles","fileManagerTemplateStyles","FileManager","_outerHeight","header","navigation","contentContainer","content","preview","toolbar","treeview","breadcrumb","list","upload","uploadDialog","splitBar","splitBarHorizontal","splitBarHover","splitBarIcon","splitBarNavigation","splitBarPreview","filePreview","fileInfo","fileName","fileMeta","metaLabel","metaValue","deepExtend","_wrapper","_renderHeader","_renderContentContainer","_initContextMenu","_renderNavigation","_renderContent","_renderPreview","_initUploadDialog","_resizable","_attachKeyDown","notify","height","initialView","contextMenu","uploadUrl","views","dialogs","width","moveConfirm","closable","deleteConfirm","renamePrompt","previewPane","metaFields","noFileTemplate","styles","noFileSelected","singleFileTemplate","selection","Date","toString","multipleFilesTemplate","createFolder","sortDirection","sortDirectionAsc","sortDirectionDesc","sortField","typeField","dateModifiedField","gridView","search","details","detailsChecked","detailsUnchecked","listLabel","gridLabel","treeLabel","okText","close","defaultTools","rules","remote","buttons","showText","togglable","group","menuButtons","changeView","spacer","componentOptions","overflow","checked","unchecked","commandOn","placeholder","F10","first","typeSortOrder","nameSortOrder","autoSync","_errorHandler","unbind","_changeHandler","_error","_change","xhr","status","statusText","_resizeHandler","onResize","_initToolbar","_tabIndex","menuOptions","executeCommand","_cacheFocus","_initTreeView","_initBreadcrumb","_initView","_isToolEnabled","_initUpload","hide","previewContainer","_setPreviewPaneContent","previewTemplate","previewPaneMessages","previewPaneOptions","html","toolbarElement","toolbarOptions","tools","_processTools","parentMessages","ToolBar","_toolbarClick","forEach","t","hidden","b","toolName","found","treeViewElement","_load","_drop","indexOf","DELETE","confirm","kendoConfirm","_restoreFocus","prompt","kendoPrompt","activeElement","document","popup","visible","hasClass","_focusElement","_viewType","viewWrapper","breadcrumbElement","breadcrumbOptions","change","_breadcrumbChange","Breadcrumb","substring","shift","uploadInstance","dialogMessages","dialogElement","dialogOptions","modal","actions","primary","_clearUploadFilesList","_shouldInitUpload","Dialog","_toggleUploadDropZone","shouldInit","async","saveUrl","uploadElement","uploadOptions","autoUpload","dropZone","Upload","_sendUploadPathParameter","_success","clearAllFiles","zone","setOptions","source","_createResizableSplitBar","cssClass","hover","_initResizableNavigation","contentWrapperWidth","navigationWrapperWidth","contentWrapper","navigationWrapper","insertAfter","end","kendoResizable","start","delta","x","initialDelta","isRtl","getKendoResizable","_initResizablePreview","previewWrapperWidth","previewWrapper","insertBefore","_open","_cancel","el","join","commandName","commandOptions","navigate","load","sync","res","response","_navigateToParent","loaded","parentNodePath","_buildBreadcrumbPath","reverse","_adjustDimensions","gridSelector","listViewSelector","totalHeight","toolbarHeight","breadcrumbHeight","_resize","getSize","dimensions","_path","replace","isRoot","_sort","unbindResize","plugin"],"sources":["kendo.filemanager.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.core.js'), require('kendo.listview.js'), require('kendo.treeview.js'), require('kendo.icons.js'), require('kendo.data.js'), require('kendo.menu.js'), require('kendo.toolbar.js'), require('kendo.breadcrumb.js'), require('kendo.upload.js'), require('kendo.dialog.js'), require('kendo.resizable.js'), require('kendo.switch.js'), require('kendo.textbox.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.listview', 'kendo.treeview', 'kendo.icons', 'kendo.data', 'kendo.menu', 'kendo.toolbar', 'kendo.breadcrumb', 'kendo.upload', 'kendo.dialog', 'kendo.resizable', 'kendo.switch', 'kendo.textbox'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendofilemanager = global.kendofilemanager || {}, global.kendofilemanager.js = factory()));\n})(this, (function () {\n (function($, undefined$1) {\n var kendo = window.kendo,\n extend = $.extend,\n deferred = $.Deferred,\n Class = kendo.Class;\n\n var Command = Class.extend({\n init: function(options) {\n this.options = options;\n this.filemanager = options.filemanager;\n }\n });\n\n var CreateFolderCommand = Command.extend({\n init: function(options) {\n Command.fn.init.call(this, options);\n },\n exec: function() {\n var that = this,\n filemanager = that.filemanager,\n commandStack = filemanager._commandStack,\n dataSource = filemanager._viewDataSource || filemanager.dataSource,\n removeProxy = that._remove.bind(that);\n\n that._item = dataSource._createNewModel();\n\n commandStack.push({ item: that._item.toJSON() }).fail(removeProxy);\n dataSource.add(that._item);\n },\n _remove: function() {\n var that = this,\n filemanager = that.filemanager,\n dataSource = filemanager._viewDataSource || filemanager.dataSource;\n\n dataSource.pushDestroy(that._item);\n }\n });\n\n var RenameCommand = Command.extend({\n init: function(options) {\n Command.fn.init.call(this, options);\n },\n exec: function() {\n var that = this,\n target = that.options.target,\n filemanager = that.filemanager,\n commandStack = filemanager._commandStack,\n viewItem = filemanager._view.widgetComponent.dataItem(target);\n\n if (target && viewItem) {\n commandStack.push({ target: target, item: viewItem });\n that.filemanager._view.edit(target);\n } else {\n that._renameTreeViewItem(target);\n }\n },\n _renameTreeViewItem: function(target) {\n var that = this,\n filemanager = that.filemanager,\n commandStack = filemanager._commandStack,\n uid = target.data(\"uid\"),\n item = that.filemanager.treeView.widgetComponent.dataSource.getByUid(uid),\n realItem = that.filemanager.dataSource.get(item.id);\n\n that.filemanager._prompt({\n type: \"rename\",\n defaultInput: realItem.name,\n target: target\n }).done(function(newName) {\n commandStack.push({ target: target, item: realItem });\n realItem.set(\"name\", newName);\n });\n }\n });\n\n var DeleteCommand = Command.extend({\n init: function(options) {\n Command.fn.init.call(this, options);\n },\n exec: function() {\n var that = this,\n target = that.options.target,\n filemanager = that.filemanager,\n items = filemanager.getSelected(),\n viewItem = that.filemanager._view.widgetComponent.dataItem(target),\n itemsToRemove;\n\n if (target && target.is(\".k-selected\") && items && items.length) {\n itemsToRemove = items;\n } else if (target && viewItem) {\n itemsToRemove = viewItem;\n } else if (target) {\n var uid = target.data(\"uid\");\n var item = that.filemanager.treeView.widgetComponent.dataSource.getByUid(uid);\n var realItem = that.filemanager.dataSource.get(item.id);\n\n itemsToRemove = realItem;\n }\n\n filemanager._confirm({\n type: \"delete\",\n target: target\n })\n .done(function() {\n that.removeItems(itemsToRemove);\n });\n },\n removeItems: function(items) {\n var that = this;\n\n that._itemsToRemove = Array.isArray(items) ? items : [items];\n\n that._removeItem();\n },\n _removeItem: function() {\n var that = this,\n filemanager = that.filemanager,\n commandStack = filemanager._commandStack,\n dataSource = filemanager.dataSource,\n itemToRemove = !!that._itemsToRemove.length && that._itemsToRemove.splice(0,1)[0];\n\n if (itemToRemove) {\n commandStack.push({ item: itemToRemove })\n .then(that._removeItem.bind(that), that._removeItem.bind(that));\n\n dataSource.remove(itemToRemove);\n }\n }\n });\n\n var CopyCommand = Command.extend({\n init: function(options) {\n Command.fn.init.call(this, options);\n },\n exec: function() {\n var that = this,\n filemanager = that.filemanager,\n dataSource = filemanager.dataSource,\n commandStack = filemanager._commandStack,\n items = that.options.items,\n target = dataSource.get(that.options.target),\n targetDataSource = target.children;\n\n for (var i = 0; i < items.length; i++) {\n var item = dataSource.get(items[i]).toJSON();\n item.fileManagerNewItem = true;\n commandStack.push({ item: item, target: target });\n targetDataSource.add(item);\n }\n }\n });\n\n var MoveCommand = Command.extend({\n init: function(options) {\n var that = this;\n Command.fn.init.call(that, options);\n that._itemsToRemove = [];\n },\n exec: function() {\n var that = this,\n filemanager = that.filemanager,\n commandStack = filemanager._commandStack,\n dataSource = filemanager.dataSource,\n items = that.options.items,\n target = dataSource.get(that.options.target),\n targetDataSource = target.children,\n promises = [];\n\n for (var i = 0; i < items.length; i++) {\n var item = dataSource.get(items[i]);\n var cloning = item.toJSON();\n cloning.fileManagerNewItem = true;\n\n var promise = commandStack.push({ item: item, target: target })\n .then(that._delete.bind(that));\n\n promises.push(promise);\n targetDataSource.add(cloning);\n }\n\n kendo.whenAll(promises).always(that._removeItem.bind(that));\n },\n _delete: function(data) {\n var that = this;\n that._itemsToRemove.push(data.item);\n },\n _removeItem: function() {\n var that = this,\n filemanager = that.filemanager,\n commandStack = filemanager._commandStack,\n dataSource = filemanager.dataSource,\n itemToRemove = !!that._itemsToRemove.length && that._itemsToRemove.splice(0,1)[0];\n\n if (itemToRemove) {\n commandStack.push({ item: itemToRemove })\n .then(that._removeItem.bind(that), that._removeItem.bind(that));\n\n dataSource.remove(itemToRemove);\n }\n }\n });\n\n var SortCommand = Command.extend({\n init: function(options) {\n Command.fn.init.call(this, options);\n },\n exec: function() {\n var that = this,\n options = that.options,\n filemanager = that.filemanager,\n sortOptions = filemanager.defaultSortOption;\n\n extend(sortOptions, {\n dir: options.dir,\n field: options.field\n });\n\n filemanager._view.widgetComponent.dataSource.sort([ filemanager.folderSortOption, sortOptions ]);\n }\n });\n\n var SearchCommand = Command.extend({\n init: function(options) {\n Command.fn.init.call(this, options);\n },\n exec: function() {\n var that = this,\n options = that.options,\n filemanager = that.filemanager,\n filter = {\n field: options.field,\n operator: options.operator,\n value: options.value || \"\"\n };\n\n filemanager._view.widgetComponent.dataSource.filter(filter);\n }\n });\n\n var ChangeViewCommand = Command.extend({\n init: function(options) {\n Command.fn.init.call(this, options);\n },\n exec: function() {\n var that = this,\n options = that.options,\n filemanager = that.filemanager;\n\n filemanager.view(options.value);\n filemanager.resize(true);\n }\n });\n\n var OpenDialogCommand = Command.extend({\n init: function(options) {\n Command.fn.init.call(this, options);\n },\n exec: function() {\n var that = this,\n filemanager = that.filemanager,\n dialog = filemanager[that.options.type];\n\n if (dialog) {\n dialog.open();\n } else {\n window.console.warn(kendo.format(\"The {0} dialog is not available!\", that.options.type));\n }\n }\n });\n\n var TogglePaneCommand = Command.extend({\n init: function(options) {\n Command.fn.init.call(this, options);\n },\n exec: function() {\n var that = this,\n filemanager = that.filemanager,\n pane = filemanager[that.options.type],\n resizable = that.getResizable();\n\n if (pane) {\n pane.toggle();\n\n if (resizable) {\n filemanager.wrapper\n .find(resizable.options.handle)\n .toggle();\n }\n }\n },\n getResizable: function() {\n var that = this,\n filemanager = that.filemanager,\n type = that.options.type;\n\n if (!filemanager._resizeDraggable) {\n return;\n }\n\n return filemanager._resizeDraggable[type];\n }\n });\n\n var CommandStack = Class.extend({\n init: function() {\n var that = this;\n\n that._stack = {};\n that._keys = [];\n },\n push: function(data) {\n var that = this,\n guid = kendo.guid();\n\n that._keys.push(guid);\n that._stack[guid] = {\n guid: guid,\n data: data,\n deferred: deferred()\n };\n\n return that._stack[guid].deferred;\n },\n next: function() {\n var that = this,\n key = that.keys().splice(0,1),\n nextCommand = that._stack[key];\n\n return nextCommand;\n },\n resolve: function(command) {\n var that = this;\n delete that._stack[command.guid];\n command.deferred.resolve(command.data);\n },\n reject: function(command) {\n var that = this;\n delete that._stack[command.guid];\n command.deferred.reject(command.data);\n },\n keys: function() {\n return this._keys;\n },\n empty: function() {\n return this.keys().length === 0;\n }\n });\n\n extend(kendo.ui, {\n filemanager: {\n FileManagerCommand: Command,\n CommandStack: CommandStack,\n commands: {\n CreateFolderCommand: CreateFolderCommand,\n RenameCommand: RenameCommand,\n DeleteCommand: DeleteCommand,\n MoveCommand: MoveCommand,\n CopyCommand: CopyCommand,\n SortCommand: SortCommand,\n SearchCommand: SearchCommand,\n ChangeViewCommand: ChangeViewCommand,\n OpenDialogCommand: OpenDialogCommand,\n TogglePaneCommand: TogglePaneCommand\n }\n }\n });\n\n })(window.kendo.jQuery);\n\n (function($, undefined$1) {\n\n var kendo = window.kendo,\n ui = kendo.ui,\n Observable = kendo.Observable,\n extend = $.extend,\n encode = kendo.htmlEncode,\n keys = kendo.keys,\n\n NAVIGATE = \"navigate\",\n SELECT = \"select\",\n EXPAND = \"expand\",\n CHANGE = \"change\",\n OPEN = \"open\",\n LOAD = \"load\",\n KEYDOWN = \"keydown\",\n KEYDOWNACTION = \"keydownAction\",\n\n NS = \".kendoFileManagerViewComponent\",\n\n fileManagerDraggables = [],\n fileManagerDragOrigin = null;\n\n var registerViewComponent = function(componentName, component) {\n ui.filemanager.ViewComponents[componentName] = component;\n };\n\n var getViewComponent = function(componentName) {\n return ui.filemanager.ViewComponents[componentName] || null;\n };\n\n var Component = Observable.extend({\n init: function(widget, element, options) {\n var that = this;\n\n that.element = element;\n that.options = options;\n\n if (widget) {\n that.widgetComponent = new widget(element, options);\n } else {\n throw new Error(\"The widget for the ViewComponent is not available! Please add the corresponding scripts!\");\n }\n\n Observable.fn.init.call(that);\n },\n\n _bindEvents: function() {\n this.widgetComponent.bind(\"dataBinding\", this._binding.bind(this));\n this.widgetComponent.bind(\"dataBound\", this._bound.bind(this));\n },\n\n _binding: function(ev) {\n if (this.trigger(\"dataBinding\", ev)) {\n ev.preventDefault();\n }\n },\n\n _bound: function() {\n this.trigger(\"dataBound\");\n },\n\n _setDSOptions: function(options, dataSourceOptions) {\n if (!options.dataSource && dataSourceOptions) {\n options.dataSource = dataSourceOptions;\n }\n },\n\n _initDragAndDrop: function(element, filter) {\n var that = this;\n\n filter = filter || that.options.dropFilter;\n element = element || that.element;\n\n that.draggable = element.kendoDraggable({\n filter: filter,\n hint: that._hint.bind(that),\n cursorOffset: { top: -10, left: -50 },\n holdToDrag: true,\n ignore: \"input, .k-focusable\",\n hold: that._hold.bind(that)\n }).data(\"kendoDraggable\");\n\n that.draggable.userEvents.minHold = 150;\n\n that.droptarget = element.kendoDropTargetArea({\n filter: filter,\n drop: that._onDrop.bind(that),\n dragenter: function(ev) {\n ev.dropTarget.addClass(\"k-filemanager-drop-target\");\n },\n dragleave: function(ev) {\n ev.dropTarget.removeClass(\"k-filemanager-drop-target\");\n }\n }).data(\"kendoDraggable\");\n },\n\n _hold: function(ev) {\n var that = this,\n target = ev.currentTarget;\n\n if (!target.is(\".k-selected\")) {\n if (that.widgetComponent.selectable) {\n that.widgetComponent.selectable.clear();\n }\n that.widgetComponent.select(target);\n }\n\n if (that.widgetComponent.selectable) {\n that.widgetComponent.selectable.userEvents.cancel();\n }\n },\n\n _hint: function(target) {\n var that = this,\n item = that.widgetComponent.dataItem(target),\n selectedItems = that.widgetComponent.select();\n\n fileManagerDragOrigin = that.widgetComponent;\n fileManagerDraggables = selectedItems;\n\n if (selectedItems.length > 1) {\n return (\"
\" + (kendo.ui.icon(\"file\")) + \" \" + (selectedItems.length) + \" \" + (that.options.messages.items) + \"
\");\n }\n\n return (\"
\" + (kendo.ui.icon((item.isDirectory ? \"folder\" : \"file\"))) + \" \" + (item.name) + \"
\");\n },\n\n _onDrop: function(ev) {\n var that = this,\n target = that.widgetComponent.dataItem(ev.dropTarget),\n targetId = target.id,\n itemIds = [];\n\n if (!target.isDirectory) {\n return;\n }\n\n for (var i = 0; i < fileManagerDraggables.length; i++) {\n var id = fileManagerDragOrigin.dataItem(fileManagerDraggables[i]).id;\n itemIds.push(id);\n }\n\n this.trigger(\"drop\",{ target: targetId, items: itemIds });\n },\n\n getSelected: function() {\n throw new Error(\"Not Implemented!\");\n },\n\n refresh: function(dataSource) {\n this.widgetComponent.setDataSource(dataSource);\n },\n\n destroy: function() {\n kendo.destroy(this.element);\n }\n });\n\n extend(kendo.ui.filemanager, {\n ViewComponent: Component,\n ViewComponents: {},\n registerViewComponent: registerViewComponent,\n getViewComponent: getViewComponent\n }\n );\n\n var ListView = Component.extend({\n init: function(element, options, explicitOptions) {\n var that = this,\n dataSourceOptions = explicitOptions.dataSource,\n messages = explicitOptions.messages;\n\n options = extend({}, that.defaultOptions, options, {\n messages: messages,\n ariaLabel: explicitOptions.ariaLabel\n });\n\n that._setDSOptions(options, dataSourceOptions);\n options.kendoKeydown = options.kendoKeydown || that._kendoKeydown.bind(that);\n\n Component.fn.init.call(this, ui.ListView, element, options);\n\n that.listView = that.widgetComponent;\n that._bindEvents();\n\n if (explicitOptions.draggable !== false && !dataSourceOptions.isLocalBinding) {\n that._initDragAndDrop();\n }\n },\n\n defaultOptions: {\n layout: \"flex\",\n flex: {\n direction: \"row\",\n wrap: \"wrap\"\n },\n selectable: kendo.support.mobileOS ? \"row\" : \"multiple\",\n template: function (ref) {\n var name = ref.name;\n var extension = ref.extension;\n var isDirectory = ref.isDirectory;\n\n return \"
\" +\n \"
\" + (kendo.ui.icon({ icon: (!isDirectory ? kendo.getFileGroup(extension, true) : 'folder'), iconClass: \"k-file-icon\", size: \"xxxlarge\" })) + \"
\" +\n \"
\" + (encode(name)) + (encode(extension)) + \"
\" +\n \"
\";\n },\n editTemplate: function (ref) {\n var extension = ref.extension;\n var isDirectory = ref.isDirectory;\n\n return \"
\" +\n \"
\" + (kendo.ui.icon({ icon: (!isDirectory ? kendo.getFileGroup(extension, true) : 'folder'), iconClass: \"k-file-icon\", size: \"xxxlarge\" })) + \"
\" +\n \"
\" +\n \"
\";\n },\n dropFilter: \".k-listview-item\",\n navigatable: true\n },\n\n _bindEvents: function() {\n var that = this,\n listView = that.listView;\n\n listView.bind(CHANGE, that._select.bind(that));\n listView.element.on(\"dblclick\" + NS, that._dblClick.bind(that));\n listView.element.on(\"mousedown\" + NS, \".k-listview-item:not(.k-edit-item)\", that._mousedown.bind(that));\n listView.element.on(KEYDOWN + NS, \".k-edit-item\", that._keydown.bind(that));\n listView.element.on(KEYDOWN + NS, that._keydownAction.bind(that));\n\n listView.bind(\"edit\", function(ev) {\n var sender = ev.sender;\n var input = ev.item.find(\"input\");\n\n input.on(\"blur\", function() {\n var isDirty = sender._modelFromElement(sender.editable.element).dirty;\n sender._closeEditable();\n if (!isDirty) {\n that.trigger(\"cancel\");\n }\n });\n });\n\n listView.bind(\"cancel\", function() {\n that.trigger(\"cancel\");\n });\n\n Component.fn._bindEvents.call(this);\n },\n\n _select: function() {\n var that = this,\n dataItems = that.getSelected();\n\n that.trigger(SELECT, { entries: dataItems });\n },\n\n _keydown: function(ev) {\n var that = this;\n if (ev.keyCode === kendo.keys.ESC) {\n that.listView._closeEditable();\n that.trigger(\"cancel\");\n }\n },\n\n _keydownAction: function(ev) {\n var that = this,\n target = $(ev.target).find(\".k-focus\");\n\n if (target.length && !target.is(\".k-edit-item\")) {\n that.trigger(KEYDOWNACTION, { target: target, keyCode: ev.keyCode });\n }\n },\n\n _mousedown: function(ev) {\n var that = this,\n node = $(ev.target).closest(\".k-listview-item\");\n\n if (ev.which === 3 && !node.is(\".k-selected\")) {\n that.listView.selectable.clear();\n that.listView.select(node);\n }\n },\n\n _kendoKeydown: function(ev) {\n var that = this;\n\n if (ev.keyCode === keys.ENTER && !ev.preventKendoKeydown) {\n that._handleEnterKey(ev);\n }\n },\n\n _handleEnterKey: function(ev) {\n var that = this,\n target = $(ev.target),\n node = that.listView.current();\n\n if (that.widgetComponent.editable && target.is(\"input\")) {\n // Force blur to update item and close editable (cross browser)\n target.trigger(\"blur\");\n } else if (!that.widgetComponent.editable) {\n that._triggerOpen(node);\n }\n\n ev.preventKendoKeydown = true;\n },\n\n _dblClick: function(ev) {\n var that = this,\n node = $(ev.target).closest(\".k-listview-item\");\n\n that._triggerOpen(node);\n },\n\n _triggerOpen: function(node) {\n var that = this;\n\n if (node.is(\".k-edit-item\")) {\n return;\n }\n\n var item = that.listView.dataItem(node);\n\n if (item) {\n that.trigger(OPEN, { entry: item });\n }\n },\n\n addFolder: function() {\n this.listView.add();\n },\n\n edit: function(target) {\n var that = this,\n selected = that.listView.select();\n\n that.listView.edit(target || selected);\n },\n\n getSelected: function() {\n var that = this,\n items = that.listView.select(),\n dataItems = [];\n\n for (var i = 0; i < items.length; i++) {\n var item = that.listView.dataItem(items[i]);\n\n if (item) {\n dataItems.push(item);\n }\n }\n\n return dataItems;\n },\n\n destroy: function() {\n this.listView.element.off(NS);\n Component.fn.destroy.call(this);\n }\n });\n\n ui.filemanager.registerViewComponent(\"list\", ListView);\n\n var TreeView = Component.extend({\n init: function(element, options, explicitOptions) {\n var that = this,\n messages = explicitOptions.messages;\n\n options = extend({}, that.defaultOptions, options, {\n messages: messages\n });\n\n Component.fn.init.call(this, ui.TreeView, element, options);\n\n that.treeView = that.widgetComponent;\n that._bindEvents();\n\n if (explicitOptions.draggable !== false && !explicitOptions.isLocalBinding) {\n that._initDragAndDrop();\n }\n },\n\n defaultOptions: {\n dataTextField: \"name\",\n dropFilter: \".k-item\"\n },\n\n _refreshDataSource: function(ev) {\n var that = this,\n treeView = that.treeView,\n action = ev.action,\n node = ev.node,\n parentNode = null,\n treeEl = treeView.element,\n activeDescendant = treeEl.attr(\"aria-activedescendant\"),\n items = ev.items.filter(function(item) {\n return item.isDirectory;\n }).map(function(item) {\n return extend({}, item.toJSON(), {\n id: item.id || kendo.guid(),\n hasChildren: item.hasChildren,\n items: []\n });\n });\n\n if (node) {\n parentNode = treeView.findByUid(treeView.dataSource.get(node.id).uid);\n treeView._progress(parentNode, false);\n }\n\n if (!items.length) {\n return;\n }\n\n if (action == \"itemloaded\" || (parentNode && action === \"sync\")) {\n parentNode.find(\".k-item\").each(function(index, item) {\n treeView.remove(item);\n });\n treeView.append(items, parentNode);\n\n if (that._shouldFocus) {\n treeView.current(parentNode);\n treeView.focus();\n }\n } else if (action == \"remove\") {\n this._remove(items[0].id);\n } else if (action == \"itemchange\") {\n var existingItem = treeView.dataSource.get(items[0].id);\n\n if (existingItem) {\n existingItem.set(ev.field, items[0][ev.field]);\n } else {\n treeView.append(items[0], parentNode);\n }\n } else if (!treeView.dataSource.data().length) {\n treeView.append(items);\n } else if (action === \"sync\" || (action === undefined$1 && !parentNode)) {\n treeView.items().each(function(index, item) {\n treeView.remove(item);\n });\n treeView.append(items);\n\n if (that._shouldFocus) {\n treeView.current(treeView._nextVisible($()));\n treeView.focus();\n }\n }\n\n if (!!activeDescendant && treeEl.find(\"#\" + activeDescendant).length === 0) {\n treeEl.removeAttr(\"aria-activedescendant\");\n }\n },\n\n _remove: function(id) {\n var that = this,\n treeView = that.treeView,\n dataSource = treeView.dataSource,\n item = dataSource.get(id),\n node;\n\n if (item) {\n node = treeView.findByUid(item.uid);\n treeView.remove(node);\n }\n },\n\n _bindEvents: function() {\n var that = this;\n\n that.treeView.bind(SELECT, that._navigate.bind(that));\n that.treeView.bind(EXPAND, that._expand.bind(that));\n that.treeView.element.on(KEYDOWN, that._keydownAction.bind(that));\n },\n\n _keydownAction: function(ev) {\n var that = this,\n target = $(ev.target).find(\".k-focus\").closest(\".k-item\");\n\n that.trigger(KEYDOWNACTION, { target: target, keyCode: ev.keyCode });\n },\n\n _expand: function(ev) {\n var that = this,\n treeView = that.treeView,\n entry = treeView.dataItem(ev.node);\n\n ev.preventDefault();\n that.trigger(LOAD, { entryId: entry.id });\n },\n\n _navigate: function(ev) {\n var that = this,\n node = ev.node,\n entry = that.treeView.dataItem(node),\n path = entry.id;\n\n ev.preventDefault();\n\n that.trigger(NAVIGATE, { path: path, entry: entry.toJSON() });\n },\n\n _hold: $.noop,\n\n getSelected: function() {\n var that = this,\n selectedItem = that.treeView.element.find(\".k-selected\").closest(\".k-item\"),\n item = that.treeView.dataItem(selectedItem);\n\n return item;\n },\n\n refresh: function(id) {\n var that = this,\n treeView = that.treeView,\n entry = treeView.dataSource.get(id),\n node = entry && treeView.findByUid(entry.uid);\n\n if (entry && node) {\n treeView.element.find(\".k-selected\").removeClass(\"k-selected\");\n node.find(\"> div .k-in\").removeClass(\"k-hover\").addClass(\"k-selected\");\n }\n },\n\n reload: function() {\n this.treeView.dataSource.read();\n }\n });\n\n ui.filemanager.registerViewComponent(\"tree\", TreeView);\n\n if (kendo.ui.Grid) {\n var Grid = Component.extend({\n init: function(element, options, explicitOptions) {\n var that = this,\n dataSourceOptions = explicitOptions.dataSource,\n messages = explicitOptions.messages;\n\n options = extend({}, that.defaultOptions, options, {\n messages: messages\n });\n\n that._setDSOptions(options, dataSourceOptions);\n that._setupColumns(options, messages);\n options.kendoKeydown = options.kendoKeydown || that._kendoKeydown.bind(that);\n\n Component.fn.init.call(this, ui.Grid, element, options);\n\n that.grid = that.widgetComponent;\n that._bindEvents();\n\n if (explicitOptions.draggable !== false && !dataSourceOptions.isLocalBinding) {\n that._initDragAndDrop();\n }\n\n if (explicitOptions.ariaLabel) {\n that.element.find(\"[role=grid]\").attr(\"aria-label\", explicitOptions.ariaLabel);\n }\n },\n\n defaultOptions: {\n selectable: kendo.support.mobileOS ? \"row\" : \"multiple\",\n editable: {\n mode: \"inline\",\n confirmation: false\n },\n sortable: true,\n dropFilter: \"tr:not(.k-grid-edit-row)\",\n navigatable: true\n },\n\n _setupColumns: function(options, messages) {\n if (!options.columns) {\n options.columns = [\n { field: \"name\", title: messages.nameField || \"Name\", template: function(item) {\n var icon = !item.isDirectory ? kendo.getFileGroup(item.extension, true) : \"folder\";\n\n var template = \"
\" +\n kendo.ui.icon(icon) +\n \"
\" +\n \"
\" + kendo.htmlEncode(item.name + item.extension) + \"
\";\n\n return template;\n } },\n { field: \"created\", title: messages.dateCreatedField , format: \"{0:G}\" },\n { field: \"size\", title: messages.sizeField, template: function(item) {\n if (item.size > 0) {\n return kendo.getFileSizeMessage(item.size);\n } else {\n return \"\";\n }\n } }\n ];\n }\n },\n\n _bindEvents: function() {\n var that = this,\n grid = that.grid;\n\n grid.bind(CHANGE, that._select.bind(that));\n grid.table.on(\"dblclick\" + NS, that._dblClick.bind(that));\n grid.table.on(\"mousedown\" + NS, \"tr:not(.k-grid-edit-row)\", that._mousedown.bind(that));\n grid.table.on(KEYDOWN + NS, \".k-grid-edit-row\", that._keydown.bind(that));\n grid.table.on(KEYDOWN + NS, that._keydownAction.bind(that));\n\n grid.bind(\"edit\", function() {\n that._toggleFocusable(true);\n });\n\n grid.bind(\"cancel\", function() {\n that.trigger(\"cancel\");\n });\n\n grid.saveRow = $.noop;\n\n Component.fn._bindEvents.call(this);\n },\n\n _kendoKeydown: function(ev) {\n var that = this,\n current = that.grid.current(),\n node = current ? current.closest(\"tr[data-uid]\") : null;\n\n if (node && ev.keyCode === keys.ENTER && !ev.preventKendoKeydown) {\n that._triggerOpen(node);\n ev.preventKendoKeydown = true;\n }\n\n if (ev.keyCode === keys.F2) {\n ev.preventKendoKeydown = true;\n }\n },\n\n _keydownAction: function(ev) {\n var that = this,\n target = $(ev.target).find(\".k-focus\").closest(\"tr\");\n\n if (target.length && !target.is(\".k-grid-edit-row\")) {\n that.trigger(KEYDOWNACTION, { target: target, keyCode: ev.keyCode });\n }\n },\n\n _keydown: function(ev) {\n var that = this,\n grid = that.grid;\n\n if (!$(ev.target).closest(\".k-grid-edit-row\").length) {\n return;\n }\n\n if (ev.keyCode === kendo.keys.ENTER) {\n setTimeout(function() {\n var editorContainer = that.grid._editContainer || $();\n\n // force blur event for inputs\n editorContainer.find(\"input\").trigger(\"blur\");\n\n that._closeEditable();\n });\n\n that._tryCancel();\n }\n\n if (ev.keyCode === kendo.keys.ESC) {\n grid.cancelChanges();\n that.trigger(\"cancel\");\n }\n },\n\n _mousedown: function(ev) {\n var that = this,\n node = $(ev.target).closest(\"tr[data-uid]\");\n\n if (ev.which === 1 && that.grid.editable) {\n setTimeout(function() {\n that._closeEditable();\n });\n\n that._tryCancel();\n }\n\n if (ev.which === 3 && !node.is(\".k-selected\")) {\n that.grid.selectable.clear();\n that.grid.select(node);\n }\n },\n\n _tryCancel: function() {\n var that = this,\n grid = that.grid,\n container;\n\n if (grid.editable) {\n container = grid._editContainer;\n if (!container.find(\"input\").val()) {\n grid.cancelChanges();\n }\n }\n\n setTimeout(function() {\n that._toggleFocusable(false);\n });\n\n },\n\n _toggleFocusable: function(state) {\n var that = this,\n grid = that.grid;\n\n grid.table.find(\"tr,td\").children().addBack().toggleClass(\"k-focusable\", state);\n },\n\n _closeEditable: function() {\n var that = this,\n container;\n\n if (that.grid.editable && !that.grid.editable.options.model.dirty) {\n container = that.grid._editContainer;\n that.grid._destroyEditable();\n that.grid._displayRow(container);\n that.trigger(\"cancel\");\n }\n },\n\n _select: function() {\n var that = this,\n dataItems = that.getSelected();\n\n that.trigger(SELECT, { entries: dataItems });\n },\n\n _dblClick: function(ev) {\n var that = this,\n node = $(ev.target).closest(\"tr[data-uid]\");\n\n that._triggerOpen(node);\n },\n\n _triggerOpen: function(node) {\n var that = this;\n\n if (node.is(\".k-grid-edit-row\")) {\n return;\n }\n\n var item = that.grid.dataItem(node);\n\n if (item) {\n that.trigger(OPEN, { entry: item });\n }\n },\n\n getSelected: function() {\n var that = this,\n items = that.grid.select(),\n dataItems = [];\n\n for (var i = 0; i < items.length; i++) {\n dataItems.push(that.grid.dataItem(items[i]));\n }\n\n return dataItems;\n },\n\n addFolder: function() {\n this.grid.addRow();\n },\n\n edit: function(target) {\n var that = this,\n selected = that.grid.select();\n\n that.grid.editRow(target || selected);\n },\n\n destroy: function() {\n this.grid.table.off(NS);\n this.grid.element.off(NS);\n Component.fn.destroy.call(this);\n }\n });\n\n ui.filemanager.registerViewComponent(\"grid\", Grid);\n }\n\n })(window.kendo.jQuery);\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n extend = $.extend,\n data = kendo.data,\n Node = data.Node,\n HierarchicalDataSource = data.HierarchicalDataSource,\n DataSource = data.DataSource;\n\n extend(true, kendo.data, {\n schemas: {\n \"filemanager\": {\n data: function(data) {\n return data.items || data || [];\n },\n model: {\n id: \"path\",\n hasChildren: \"hasDirectories\",\n fields: {\n name: { editable: true, type: \"string\", defaultValue: \"New Folder\" },\n size: { editable: false, type: \"number\" },\n path: { editable: false, type: \"string\" },\n extension: { editable: false, type: \"string\" },\n isDirectory: { editable: false, defaultValue: true, type: \"boolean\" },\n hasDirectories: { editable: false, defaultValue: false, type: \"boolean\" },\n created: { type: \"date\", editable: false },\n createdUtc: { type: \"date\", editable: false },\n modified: { type: \"date\", editable: false },\n modifiedUtc: { type: \"date\", editable: false }\n }\n }\n }\n }\n });\n\n var FileEntry = Node.define({\n init: function(value) {\n var that = this,\n isDirectory = this.isDirectory;\n\n Node.fn.init.call(this, value);\n\n if (typeof isDirectory === \"string\") {\n isDirectory = kendo.getter(isDirectory);\n }\n\n if (kendo.isFunction(isDirectory)) {\n var isDirectoryObject = isDirectory.call(that, that);\n\n if (isDirectoryObject && isDirectoryObject.length === 0) {\n that.isDirectory = false;\n } else {\n that.isDirectory = !!isDirectoryObject;\n }\n }\n\n if (that.isDirectory) {\n that._initChildren();\n }\n },\n _initChildren: function() {\n var that = this;\n var children, transport, parameterMap;\n\n if (!(that.children instanceof kendo.data.FileManagerDataSource)) {\n children = that.children = new kendo.data.FileManagerDataSource(that._childrenOptions);\n\n transport = children.transport;\n parameterMap = transport.parameterMap;\n\n transport.parameterMap = function(data, type) {\n if (type === \"read\" || type === \"create\") {\n data.target = that.id;\n }\n\n if (parameterMap) {\n data = parameterMap.call(that, data, type);\n }\n\n return data;\n };\n\n children.parent = function() {\n return that;\n };\n\n children.bind(\"change\", function(e) {\n e.node = e.node || that;\n that.trigger(\"change\", e);\n });\n\n children.bind(\"error\", function(e) {\n var collection = that.parent();\n\n if (collection) {\n e.node = e.node || that;\n collection.trigger(\"error\", e);\n }\n });\n\n that._updateChildrenField();\n }\n },\n isNew: function() {\n if (this.fileManagerNewItem) {\n delete this.fileManagerNewItem;\n return true;\n }\n\n return this.id === this._defaultId;\n }\n });\n\n\n var FileManagerDataSource = HierarchicalDataSource.extend({\n init: function(options) {\n var fileEntry = FileEntry.define({\n children: options\n });\n\n if (options.filter && !options.serverFiltering) {\n this._hierarchicalFilter = options.filter;\n options.filter = null;\n }\n\n DataSource.fn.init.call(this, $.extend(true, {}, { schema: { modelBase: fileEntry, model: fileEntry } }, options));\n\n this.isLocalBinding = this.transport instanceof kendo.data.LocalTransport;\n\n this._attachBubbleHandlers();\n },\n insert: function(index, model) {\n var parentNode = this.parent();\n\n if (parentNode && parentNode._initChildren) {\n if (model && model.isDirectory) {\n parentNode.hasDirectories = true;\n }\n parentNode.hasChildren = true;\n parentNode._initChildren();\n }\n\n return DataSource.fn.insert.call(this, index, model);\n },\n remove: function(node) {\n var that = this,\n parentNode = node.parentNode(),\n dataSource = that,\n result;\n\n if (parentNode && parentNode._initChildren) {\n dataSource = parentNode.children;\n }\n\n that._cleanDestroyed(node);\n\n result = DataSource.fn.remove.call(dataSource, node);\n\n if (parentNode && (dataSource.data() && !dataSource.data().length)) {\n parentNode.hasChildren = false;\n } else if (parentNode && !this._hasDirectories(parentNode)) {\n parentNode.hasDirectories = false;\n }\n\n return result;\n },\n _cleanDestroyed: function(node) {\n var that = this,\n dataSource = that;\n\n if (node.parentNode && node.parentNode()) {\n node = node.parentNode();\n dataSource = node.children;\n dataSource._destroyed = [];\n that._cleanDestroyed(node);\n } else {\n dataSource._destroyed = [];\n }\n },\n _hasDirectories: function(node) {\n var result;\n\n if (!node.children.data()) {\n return false;\n }\n\n result = node.children.data().filter(function(item) {\n return item.isDirectory;\n });\n\n return !!result.length;\n }\n });\n\n FileManagerDataSource.create = function(options) {\n options = options && options.push ? { data: options } : options;\n\n var dataSource = options || {},\n data = dataSource.data;\n\n if (data && data._dataSource) {\n return data._dataSource;\n }\n\n dataSource.data = data;\n\n return dataSource instanceof FileManagerDataSource ? dataSource : new FileManagerDataSource(dataSource);\n };\n\n kendo.observableFileManagerData = function(array) {\n var dataSource = FileManagerDataSource.create({\n data: array,\n schema: kendo.data.schemas.filemanager\n });\n\n dataSource.fetch();\n\n dataSource._data._dataSource = dataSource;\n\n return dataSource._data;\n };\n\n extend(kendo.data, {\n FileManagerDataSource: FileManagerDataSource,\n FileEntry: FileEntry\n });\n\n })(window.kendo.jQuery);\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n extend = $.extend,\n template = kendo.template,\n ContextMenu = kendo.ui.ContextMenu,\n\n ACTION = \"action\";\n\n var FileManagerContextMenu = ContextMenu.extend({\n init: function(element, options) {\n var that = this;\n\n ContextMenu.fn.init.call(that, element, options);\n\n that._overrideTemplates();\n that._restrictDefaultItems();\n that._extendItems();\n\n that.bind(\"select\", that._onSelect.bind(that));\n that.bind(\"open\", that._onOpen.bind(that));\n },\n\n _overrideTemplates: function() {\n this.templates.sprite = template(function (ref) {\n var spriteCssClass = ref.spriteCssClass;\n var icon = ref.icon;\n\n // Needed for backwards compatibility in order to not introduce a breaking change.\n if (spriteCssClass) {\n return (\"\");\n }\n\n if (icon) {\n return kendo.ui.icon(icon);\n }\n\n return \"\";\n });\n },\n\n _restrictDefaultItems: function() {\n var that = this;\n\n if (that.options.isLocalBinding) {\n that.defaultItems = {};\n }\n },\n\n defaultItems: {\n \"rename\": { text: \"Rename\", icon: \"pencil\", command: \"RenameCommand\" },\n \"delete\": { text: \"Delete\", icon: \"trash\", command: \"DeleteCommand\" }\n },\n\n events: ContextMenu.fn.events.concat([\n ACTION\n ]),\n\n _extendItems: function() {\n var that = this,\n items = that.options.items,\n item, isBuiltInTool;\n\n if (items && items.length) {\n for (var i = 0; i < items.length; i++) {\n item = items[i];\n isBuiltInTool = $.isPlainObject(item) && Object.keys(item).length === 1 && item.name;\n\n if (isBuiltInTool) {\n item = item.name;\n }\n\n if ($.isPlainObject(item) ) {\n that._extendItem(item);\n that.append(item);\n } else if (that.defaultItems[item]) {\n item = that.defaultItems[item];\n that._extendItem(item);\n that.append(item);\n }\n }\n } else {\n for (var key in that.defaultItems) {\n item = that.defaultItems[key];\n that._extendItem(item);\n that.append(item);\n }\n }\n },\n\n _extendItem: function(item) {\n var that = this,\n messages = that.options.messages;\n\n extend(item, {\n text: messages[item.text],\n spriteCssClass: item.spriteCssClass || \"\",\n attr: {\n \"data-command\": item.command\n }\n });\n },\n\n _onSelect: function(ev) {\n var command = $(ev.item).data(\"command\");\n var target = $(ev.target);\n\n if (!command) {\n return;\n }\n\n this.action({\n command: command,\n options: { target: target }\n });\n },\n\n _onOpen: function(ev) {\n var menu = ev.sender,\n items = menu.options.items;\n\n if (!items && $.isEmptyObject(this.defaultItems)) {\n ev.preventDefault();\n }\n },\n\n action: function(args) {\n this.trigger(ACTION, args);\n }\n });\n\n extend(kendo.ui.filemanager, {\n ContextMenu: FileManagerContextMenu\n });\n\n })(window.kendo.jQuery);\n\n var __meta__ = {\n id: \"filemanager\",\n name: \"FileManager\",\n category: \"web\",\n description: \"The FileManager widget displays offers file management functionality.\",\n depends: [ \"core\", \"data\", \"listview\", \"toolbar\", \"breadcrumb\", \"menu\", \"treeview\", \"upload\", \"dialog\", \"switch\", \"resizable\", \"selectable\", \"editable\", \"textbox\", \"icons\" ],\n features: [{\n id: \"filemanager-grid-view\",\n name: \"GridView\",\n description: \"Support for GridView\",\n depends: [ \"grid\" ]\n }]\n };\n\n (function($, undefined$1) {\n var ui = kendo.ui,\n extend = $.extend,\n encode = kendo.htmlEncode,\n isPlainObject = $.isPlainObject,\n isArray = Array.isArray,\n DataBoundWidget = ui.DataBoundWidget,\n template = kendo.template,\n outerHeight = kendo._outerHeight,\n ns = \".kendoFileManager\",\n\n NAVIGATE = \"navigate\",\n SELECT = \"select\",\n OPEN = \"open\",\n ERROR = \"error\",\n CHANGE = \"change\",\n UPLOAD = \"upload\",\n SUCCESS = \"success\",\n CLICK = \"click\",\n TOGGLE = \"toggle\",\n CLOSE = \"close\",\n HIDE = \"hide\",\n LOAD = \"load\",\n DATABINDING = \"dataBinding\",\n DATABOUND = \"dataBound\",\n DROP = \"drop\",\n EXECUTE = \"execute\",\n COMMAND = \"command\",\n KEYDOWNACTION = \"keydownAction\",\n CANCEL = \"cancel\",\n\n TREE_TYPE = \"tree\",\n DOT = \".\";\n\n var fileManagerStyles = {\n wrapper: \"k-widget k-filemanager\",\n header: \"k-filemanager-header\",\n navigation: \"k-filemanager-navigation\",\n contentContainer: \"k-filemanager-content-container\",\n content: \"k-filemanager-content\",\n preview: \"k-filemanager-preview\",\n toolbar: \"k-filemanager-toolbar\",\n treeview: \"k-filemanager-treeview\",\n breadcrumb: \"k-filemanager-breadcrumb\",\n view: \"k-filemanager-view\",\n grid: \"k-filemanager-grid\",\n list: \"k-filemanager-listview\",\n upload: \"k-filemanager-upload\",\n uploadDialog: \"k-filemanager-upload-dialog\",\n splitBar: \"k-splitbar\",\n splitBarHorizontal: \"k-splitbar-horizontal k-splitbar-draggable-horizontal\",\n splitBarHover: \"k-splitbar-horizontal-hover\",\n splitBarIcon: \"k-icon k-resize-handle\",\n splitBarNavigation: \"k-filemanager-splitbar-navigation\",\n splitBarPreview: \"k-filemanager-splitbar-preview\",\n resizable: \"k-filemanager-resizable\"\n };\n\n var fileManagerTemplateStyles = {\n filePreview: \"k-file-preview\",\n fileInfo: \"k-file-info\",\n fileName: \"k-file-name\",\n fileMeta: \"k-file-meta\",\n metaLabel: \"k-file-meta-label\",\n metaValue: \"k-file-meta-value\",\n extension: \"k-file-type\",\n size: \"k-file-size\",\n created: \"k-file-created\",\n modified: \"k-file-modified\"\n };\n\n var viewTypes = {\n grid: \"grid\",\n list: \"list\"\n };\n\n var NO_FILE_PREVIEW_TEMPLATE = function (ref) {\n var styles = ref.styles;\n var messages = ref.messages;\n\n return \"
\" +\n \"
\" +\n '' +\n '
' +\n \"\" + (encode(messages.noFileSelected)) + \"\" +\n '
';\n };\n\n var SINGLE_FILES_PREVIEW_TEMPLATE = function (ref) {\n var styles = ref.styles;\n var selection = ref.selection;\n var metaFields = ref.metaFields;\n var messages = ref.messages;\n\n var result = '';\n result +=\n \"
\" +\n \"
\" +\n kendo.ui.icon({ icon: (!selection[0].isDirectory ? encode(kendo.getFileGroup(selection[0].extension, true)) : \"folder\"), iconClass: \"k-file-icon\", size: \"xxxlarge\" }) +\n '
' +\n \"\" + (encode(selection[0].name)) + \"\";\n if (metaFields) {\n result += \"
\";\n for (var i = 0; i < metaFields.length; i += 1) {\n var field = metaFields[i];\n result +=\n \"
\" + (encode(messages[field])) + \":
\" +\n \"
\";\n if (field == \"size\") {\n result += \" \" + (encode(kendo.getFileSizeMessage(selection[0][field])));\n } else if (selection[0][field] instanceof Date) {\n result += \" \" + (encode(kendo.toString(selection[0][field], \"G\")));\n } else if (field == \"extension\") {\n result += \" \" + (encode( !selection[0].isDirectory ? kendo.getFileGroup(selection[0].extension) : \"folder\"));\n } else {\n result += \" \" + (encode(selection[0][field]));\n }\n\n result += '
' +\n '
';\n }\n\n result += '
';\n }\n\n result += '
';\n return result;\n };\n\n var MULTIPLE_FILES_PREVIEW_TEMPLATE = function (ref) {\n var styles = ref.styles;\n var selection = ref.selection;\n var messages = ref.messages;\n\n return \"
\" +\n \"
\" +\n kendo.ui.icon({ icon: \"file\", iconClass: \"k-file-icon\", size: \"xxxlarge\" }) +\n '
' +\n \"span class=\\\"\" + (encode(styles.fileName)) + \"\\\">\" +\n (encode(selection.length)) + \" \" +\n \"\" + (encode(messages.items)) +\n '' +\n '
';\n };\n\n var FileManager = DataBoundWidget.extend({\n init: function(element, options) {\n var that = this;\n\n DataBoundWidget.fn.init.call(that, element, options);\n\n that.options = kendo.deepExtend({}, that.options, options);\n\n that.defaultSortOption = { field: \"name\", dir: \"asc\" };\n that.folderSortOption = { field: \"isDirectory\", dir: \"desc\" };\n\n that._commandStack = new ui.filemanager.CommandStack();\n\n that._dataSource();\n\n that._wrapper();\n\n that._renderHeader();\n\n that._renderContentContainer();\n\n that._initContextMenu();\n\n that._renderNavigation();\n\n that._renderContent();\n\n that._renderPreview();\n\n that._initUploadDialog();\n\n that._resizable();\n\n that._attachKeyDown();\n\n that.resize();\n\n kendo.notify(that, kendo.ui);\n },\n\n options: {\n name: \"FileManager\",\n height: 500,\n resizable: true,\n initialView: viewTypes.list,\n toolbar: {\n resizable: true\n },\n contextMenu: {},\n upload: {},\n uploadUrl: \"\",\n views: {},\n breadcrumb: {},\n draggable: true,\n dialogs: {\n upload: {\n width: 530\n },\n moveConfirm: {\n width: 350,\n closable: true\n },\n deleteConfirm: {\n width: 360,\n closable: true\n },\n renamePrompt: {\n width: 350,\n closable: true\n }\n },\n previewPane: {\n metaFields: [\"extension\", \"size\", \"created\", \"modified\"],\n noFileTemplate: NO_FILE_PREVIEW_TEMPLATE,\n singleFileTemplate: SINGLE_FILES_PREVIEW_TEMPLATE,\n multipleFilesTemplate: MULTIPLE_FILES_PREVIEW_TEMPLATE\n },\n messages: {\n toolbar: {\n createFolder: \"New Folder\",\n upload: \"Upload\",\n sortDirection: \"Sort Direction\",\n sortDirectionAsc: \"Sort Direction Ascending\",\n sortDirectionDesc: \"Sort Direction Descending\",\n sortField: \"Sort By\",\n nameField: \"Name\",\n sizeField: \"File Size\",\n typeField: \"Type\",\n dateModifiedField: \"Date Modified\",\n dateCreatedField: \"Date Created\",\n listView: \"List View\",\n gridView: \"Grid View\",\n search: \"Search\",\n details: \"View Details\",\n detailsChecked: \"On\",\n detailsUnchecked: \"Off\",\n \"delete\": \"Delete\",\n rename: \"Rename\"\n },\n views: {\n nameField: \"Name\",\n sizeField: \"File Size\",\n typeField: \"Type\",\n dateModifiedField: \"Date Modified\",\n dateCreatedField: \"Date Created\",\n items: \"items\",\n listLabel: \"FileManager ListView\",\n gridLabel: \"FileManager Grid\",\n treeLabel: \"FileManager TreeView\"\n },\n dialogs: {\n upload: {\n title: \"Upload Files\",\n clear: \"Clear List\",\n done: \"Done\"\n },\n moveConfirm: {\n title: \"Confirm\",\n content: \"

Do you want to move or copy?

\",\n okText: \"Copy\",\n cancel: \"Move\",\n close: \"close\"\n },\n deleteConfirm: {\n title: \"Confirm\",\n content: \"

Are you sure you want to delete the selected file(s)?
You cannot undo this action.

\",\n okText: \"Delete\",\n cancel: \"Cancel\",\n close: \"close\"\n },\n renamePrompt: {\n title: \"Prompt\",\n content: \"

Enter new name for the file.

\",\n okText: \"Rename\",\n cancel: \"Cancel\",\n close: \"close\"\n }\n },\n previewPane: {\n noFileSelected: \"No File Selected\",\n extension: \"Type\",\n size: \"Size\",\n created: \"Date Created\",\n createdUtc: \"Date Created UTC\",\n modified: \"Date Modified\",\n modifiedUtc: \"Date Modified UTC\",\n items: \"items\"\n }\n }\n },\n\n events: [\n NAVIGATE,\n SELECT,\n OPEN,\n DATABINDING,\n DATABOUND,\n ERROR,\n DROP,\n EXECUTE,\n COMMAND\n ],\n\n defaultTools: {\n createFolder: { type: \"button\", name: \"createFolder\", command: \"CreateFolderCommand\", rules: { remote: true } },\n upload: { type: \"button\", name: \"upload\", command: \"OpenDialogCommand\", options: \"{ \\\"type\\\": \\\"uploadDialog\\\" }\", rules: { remote: true } },\n sortDirection: {\n type: \"buttonGroup\",\n buttons: [\n { name: \"sortDirectionAsc\", showText: \"overflow\", icon: \"sort-asc-small\", togglable: true, group: \"sortDirection\", command: \"SortCommand\", options: \"{ \\\"dir\\\": \\\"asc\\\" }\", selected: true },\n { name: \"sortDirectionDesc\", showText: \"overflow\", icon: \"sort-desc-small\", togglable: true, group: \"sortDirection\", command: \"SortCommand\", options: \"{ \\\"dir\\\": \\\"desc\\\" }\" }\n ]\n },\n sortField: {\n type: \"splitButton\",\n name: \"sortField\",\n command: \"SortCommand\",\n menuButtons: [\n { name: \"nameField\", options: \"{\\\"field\\\": \\\"name\\\"}\", command: \"SortCommand\" },\n { name: \"typeField\", options: \"{\\\"field\\\": \\\"extension\\\"}\", command: \"SortCommand\" },\n { name: \"sizeField\", options: \"{\\\"field\\\": \\\"size\\\"}\", command: \"SortCommand\" },\n { name: \"dateCreatedField\", options: \"{\\\"field\\\": \\\"createdUtc\\\"}\", command: \"SortCommand\" },\n { name: \"dateModifiedField\", options: \"{\\\"field\\\": \\\"modifiedUtc\\\"}\", command: \"SortCommand\" }\n ]\n },\n changeView: {\n type: \"buttonGroup\",\n buttons: [\n { name: \"gridView\", showText: \"overflow\", icon: \"grid-layout\", togglable: true, group: \"changeView\", command: \"ChangeViewCommand\", options: \"grid\" },\n { name: \"listView\", showText: \"overflow\", icon: \"grid\", togglable: true, group: \"changeView\", command: \"ChangeViewCommand\", options: \"list\" }\n ]\n },\n spacer: { type: \"spacer\" },\n details: {\n type: \"component\",\n name: \"details\",\n items: [{\n template: function(data) {\n return \"\";\n },\n overflow: \"never\",\n componentOptions: {\n messages: {\n text: \"details\"\n }\n }\n },\n {\n name: \"details\",\n command: \"TogglePaneCommand\",\n options: \"{ \\\"type\\\": \\\"preview\\\" }\",\n overflow: \"never\",\n element: \"\",\n component: \"Switch\",\n componentOptions: {\n messages: {\n checked: \"detailsChecked\",\n unchecked: \"detailsUnchecked\"\n },\n commandOn: \"change\"\n }\n }]\n },\n search: {\n type: \"component\",\n name: \"search\",\n command: \"SearchCommand\",\n options: \"{ \\\"field\\\": \\\"name\\\", \\\"operator\\\": \\\"startswith\\\" }\",\n overflow: \"never\",\n component: \"TextBox\",\n componentOptions: {\n placeholder: \"Search\",\n icon: \"search\",\n commandOn: \"input\"\n }\n }\n },\n\n _attachKeyDown: function() {\n var that = this;\n\n that.wrapper.on(\"keydown\" + ns, function (e) {\n if (e.keyCode === kendo.keys.F10) {\n e.preventDefault();\n that.toolbar.element.find(\"[tabindex=0]\").first().trigger(\"focus\");\n }\n });\n },\n\n _dataSource: function() {\n var that = this,\n options = that.options,\n dataSourceOptions = options.dataSource || {},\n typeSortOrder = that.folderSortOption,\n nameSortOrder = that.defaultSortOption,\n dataSource;\n\n if (!(dataSourceOptions instanceof kendo.data.FileManagerDataSource)) {\n if (isArray(dataSourceOptions)) {\n dataSource = {\n data: dataSourceOptions,\n autoSync: false,\n sort: [typeSortOrder, nameSortOrder]\n };\n } else {\n dataSource = extend(true, dataSourceOptions, {\n autoSync: false,\n sort: [typeSortOrder, nameSortOrder]\n });\n }\n\n if (dataSourceOptions && isPlainObject(dataSourceOptions.schema)) {\n dataSource.schema = dataSourceOptions.schema;\n } else if (isPlainObject(kendo.data.schemas.filemanager)) {\n dataSource.schema = kendo.data.schemas.filemanager;\n }\n } else {\n dataSource = dataSourceOptions;\n }\n\n if (that.dataSource && that._errorHandler) {\n that.dataSource.unbind(ERROR, that._errorHandler);\n that.dataSource.unbind(CHANGE, that._changeHandler);\n } else {\n that._errorHandler = that._error.bind(that);\n that._changeHandler = that._change.bind(that);\n }\n\n that.dataSource = kendo.data.FileManagerDataSource.create(dataSource)\n .bind(ERROR, that._errorHandler)\n .bind(CHANGE, that._changeHandler);\n },\n\n _error: function(ev) {\n if (!this.trigger(ERROR, ev)) {\n window.console.warn('Error! The requested URL returned ' + ev.xhr.status + ' - ' + ev.xhr.statusText);\n }\n },\n\n _wrapper: function() {\n var that = this,\n options = that.options,\n width = options.width,\n height = options.height;\n\n that.wrapper = that.element\n .addClass(fileManagerStyles.wrapper);\n\n if (width) {\n that.wrapper.width(width);\n }\n\n if (height) {\n that.wrapper.height(height);\n }\n\n that._resizeHandler = kendo.onResize(function() {\n that.resize(true);\n });\n },\n\n _renderHeader: function() {\n var that = this,\n options = that.options;\n\n if (options.toolbar) {\n that.header = $(\"
\").addClass(fileManagerStyles.header);\n }\n\n that.wrapper.append(that.header);\n\n if (options.toolbar) {\n that._initToolbar();\n that.toolbar._tabIndex();\n }\n },\n\n _renderContentContainer: function() {\n var that = this,\n container = $(\"
\").addClass(fileManagerStyles.contentContainer);\n\n that.contentContainer = container;\n\n that.wrapper.append(that.contentContainer);\n },\n\n _initContextMenu: function() {\n var that = this,\n options = that.options,\n menuOptions = extend({}, options.contextMenu, {\n filemanager: that,\n messages: options.messages.toolbar,\n target: that.contentContainer,\n filter: \"[data-uid]\",\n action: that.executeCommand.bind(that),\n isLocalBinding: that.dataSource.isLocalBinding\n });\n\n if (options.contextMenu === false) {\n return;\n }\n\n that.contextMenu = new ui.filemanager.ContextMenu(\"
    \", menuOptions);\n\n that.contextMenu.bind(OPEN, that._cacheFocus.bind(that));\n },\n\n _renderNavigation: function() {\n var that = this;\n\n that.navigation = $(\"
    \").addClass(fileManagerStyles.navigation);\n that.navigation.append(that._initTreeView().element);\n\n that.contentContainer.append(that.navigation);\n },\n\n _renderContent: function() {\n var that = this,\n options = that.options,\n toolbar = that.toolbar;\n\n that.content = $(\"
    \").addClass(fileManagerStyles.content);\n\n if (options.breadcrumb) {\n that.content.append(that._initBreadcrumb().element);\n }\n\n that.content.append(that._initView());\n\n if (!toolbar || !that._isToolEnabled(that.defaultTools.upload.name)) {\n that.content.append(that._initUpload().wrapper.hide());\n }\n\n that.contentContainer.append(that.content);\n },\n\n _renderPreview: function() {\n var that = this,\n enablePreview = that.options.previewPane;\n\n if (!enablePreview) {\n return;\n }\n\n that.preview = $(\"
    \").addClass(fileManagerStyles.preview);\n that.previewContainer = $(\"
    \").addClass(fileManagerStyles.previewContainer);\n that.preview.append(that.previewContainer);\n\n that._setPreviewPaneContent();\n\n that.contentContainer.append(that.preview.hide());\n },\n\n _setPreviewPaneContent: function() {\n var that = this,\n options = that.options,\n previewPaneMessages = options.messages.previewPane,\n previewPaneOptions = options.previewPane,\n selection = that.getSelected(),\n previewTemplate;\n\n if (!selection) {\n previewTemplate = template(previewPaneOptions.noFileTemplate)({\n styles: fileManagerTemplateStyles,\n messages: previewPaneMessages\n });\n\n that.previewContainer.html(previewTemplate);\n return;\n }\n\n previewTemplate = selection.length === 1 ?\n previewPaneOptions.singleFileTemplate :\n previewPaneOptions.multipleFilesTemplate;\n\n previewTemplate = template(previewTemplate)({\n styles: fileManagerTemplateStyles,\n messages: previewPaneMessages,\n selection: selection,\n metaFields: previewPaneOptions.metaFields\n });\n\n that.previewContainer.html(previewTemplate);\n },\n\n _initToolbar: function() {\n var that = this,\n options = that.options,\n toolbarElement = $(\"
    \").addClass(fileManagerStyles.toolbar),\n toolbarOptions = extend({}, options.toolbar),\n tools = toolbarOptions.items ? toolbarOptions.items : Object.keys(that.defaultTools);\n\n tools = that._processTools(tools);\n toolbarOptions.tools = tools;\n toolbarOptions.defaultTools = that.defaultTools;\n toolbarOptions.parentMessages = that.options.messages.toolbar;\n\n that.header.append(toolbarElement);\n that.toolbar = new kendo.ui.ToolBar(toolbarElement, toolbarOptions);\n that.options.toolbar = that.toolbar.options;\n\n that.toolbar.bind(TOGGLE, that._toolbarClick.bind(that));\n that.toolbar.bind(CLOSE, that._toolbarClick.bind(that));\n that.toolbar.bind(CLICK, that._toolbarClick.bind(that));\n that.toolbar.bind(CHANGE, that._toolbarClick.bind(that));\n\n return that.toolbar;\n },\n\n _processTools: function(tools) {\n var that = this;\n\n tools.forEach(function (t) {\n var rules = t.rules || that.defaultTools[t] ? that.defaultTools[t].rules : null;\n\n if (rules && rules.remote && that.dataSource.isLocalBinding) {\n if (t.rules) {\n t.hidden = true;\n } else {\n that.defaultTools[t].hidden = true;\n }\n }\n\n if (t.name === \"changeView\") {\n that.defaultTools[t.name].buttons.forEach(function (b, i) {\n if (b.options === that.options.initialView) {\n that.defaultTools[t.name].buttons[i].selected = true;\n }\n });\n } else if (t.buttons && t.buttons[0].group === \"changeView\") {\n t.buttons.forEach(function (b, i) {\n if (b.options === that.options.initialView) {\n t.buttons[i].selected = true;\n }\n });\n }\n });\n\n return tools;\n },\n\n _toolbarClick: function(ev) {\n var command = $(ev.target).data(\"command\"),\n options = $(ev.target).data(\"options\");\n\n if (!!$(ev.target).val()) {\n options = extend({}, options, { value: $(ev.target).val() });\n }\n\n if (!command) {\n return;\n }\n\n this.executeCommand({\n command: command,\n options: options\n });\n },\n\n _isToolEnabled: function(toolName) {\n var that = this,\n options = that.options.toolbar,\n items = options.items || that.defaultTools,\n found = false;\n\n for (var i = 0; i < items.length; i++) {\n if (items[i].name == toolName) {\n found = true;\n break;\n }\n }\n\n return items[toolName] || found;\n },\n\n _initTreeView: function() {\n var that = this,\n treeViewElement = $(\"
    \").addClass(fileManagerStyles.treeview),\n options = that.options.views[TREE_TYPE],\n explicitOptions = extend(true, {}, {\n dataSource: that.options.dataSource,\n messages: that.options.messages.views,\n draggable: that.options.draggable,\n isLocalBinding: that.dataSource.isLocalBinding\n });\n\n that.treeView = new ui.filemanager.ViewComponents[TREE_TYPE](treeViewElement, options, explicitOptions);\n\n that.treeView.bind(NAVIGATE, that._navigate.bind(that))\n .bind(LOAD, that._load.bind(that))\n .bind(DROP, that._drop.bind(that))\n .bind(KEYDOWNACTION, that._keydownAction.bind(that));\n\n return that.treeView;\n },\n\n _drop: function(ev) {\n var that = this;\n\n if (!that.trigger(DROP, ev) && ev.items.indexOf(ev.target) < 0) {\n that._confirm({\n type: \"move\",\n target: ev.target\n }).done(function() {\n that.executeCommand({ command: \"CopyCommand\", options: ev });\n }).fail(function() {\n that.executeCommand({ command: \"MoveCommand\", options: ev });\n });\n }\n },\n\n _keydownAction: function(ev) {\n var that = this,\n keyCode = ev.keyCode,\n keys = kendo.keys;\n\n if (keyCode === keys.DELETE) {\n that.executeCommand({ command: \"DeleteCommand\", options: { target: ev.target } });\n }\n\n if (keyCode === keys.F2) {\n that.executeCommand({ command: \"RenameCommand\", options: { target: ev.target } });\n }\n },\n\n _confirm: function(options) {\n var that = this,\n messages = that.options.messages.dialogs[options.type + \"Confirm\"];\n\n var confirm = $(\"
    \").kendoConfirm(extend({}, {\n title: messages.title,\n content: messages.content,\n messages: messages\n }, that.options.dialogs[options.type + \"Confirm\"])).data(\"kendoConfirm\");\n\n confirm.bind(OPEN, that._cacheFocus.bind(that));\n confirm.bind(HIDE, that._restoreFocus.bind(that, options.target));\n\n confirm.open();\n\n confirm.wrapper.removeClass(\"k-confirm\");\n\n return confirm.result;\n },\n\n _prompt: function(options) {\n var that = this,\n messages = this.options.messages.dialogs[options.type + \"Prompt\"];\n\n var prompt = $(\"
    \").kendoPrompt(extend({}, {\n title: messages.title,\n content: messages.content,\n messages: messages,\n value: options.defaultInput\n },this.options.dialogs[options.type + \"Prompt\"])).data(\"kendoPrompt\");\n\n prompt.bind(OPEN, that._cacheFocus.bind(that));\n prompt.bind(CLOSE, that._restoreFocus.bind(that, options.target));\n\n prompt.open();\n\n prompt.wrapper.removeClass(\"k-prompt\");\n\n return prompt.result;\n },\n\n _cacheFocus: function() {\n var that = this,\n activeElement = $(document.activeElement),\n view = that.view(),\n treeView = that.treeView.widgetComponent;\n\n if (that.contextMenu && that.contextMenu.popup.visible()) {\n return;\n }\n\n that.treeView._shouldFocus = false;\n\n if ((treeView.current() && treeView.current().find(\".k-focus\").length) ||\n activeElement.hasClass(fileManagerStyles.treeview)) {\n that.treeView._shouldFocus = true;\n view._focusElement = activeElement;\n return;\n }\n\n view._focusElement = activeElement.hasClass(fileManagerStyles[that._viewType]) ?\n activeElement :\n null;\n },\n\n _restoreFocus: function(target) {\n var that = this,\n view = that.view();\n\n if (!target) {\n return;\n }\n\n if (view._focusElement) {\n view._focusElement.trigger(\"focus\");\n } else if (target.closest && target.closest(\":kendoFocusable\").length) {\n target.closest(\":kendoFocusable\").trigger(\"focus\");\n }\n },\n\n _initView: function() {\n var that = this,\n viewWrapper = $(\"
    \").addClass(fileManagerStyles.view),\n initialView = that.options.initialView;\n\n that.viewWrapper = viewWrapper;\n that.viewWrapper.append(that.view(initialView));\n\n return viewWrapper;\n },\n\n _initBreadcrumb: function() {\n var that = this,\n options = that.options,\n breadcrumbElement = $(\"