@syncfusion/ej2-filemanager 20.1.56 → 20.1.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-filemanager.min.js","sources":["../../src/file-manager/common/utility.js","../../src/file-manager/common/operations.js","../../src/file-manager/pop-up/dialog.js","../../src/file-manager/models/ajax-settings.js","../../src/file-manager/models/toolbar-settings.js","../../src/file-manager/models/search-settings.js","../../src/file-manager/models/details-view-settings.js","../../src/file-manager/models/contextMenu-settings.js","../../src/file-manager/models/navigation-pane-settings.js","../../src/file-manager/models/upload-settings.js","../../src/file-manager/models/column.js","../../src/file-manager/base/classes.js","../../src/file-manager/base/constant.js","../../src/file-manager/layout/large-icons-view.js","../../src/file-manager/actions/breadcrumb-bar.js","../../src/file-manager/pop-up/context-menu.js","../../src/file-manager/models/default-locale.js","../../src/file-manager/base/file-manager.js","../../src/file-manager/actions/toolbar.js","../../src/file-manager/layout/navigation-pane.js","../../src/file-manager/layout/details-view.js","../../src/global.js"],"sourcesContent":["import * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { read, paste, Search, filter, Download, Delete } from '../common/operations';\nimport { getValue, setValue, isNullOrUndefined as isNOU, matches, select, createElement } from '@syncfusion/ej2-base';\nimport { closest, detach } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createDialog } from '../pop-up/dialog';\n/**\n * Utility file for common actions\n *\n * @param {HTMLLIElement} node - specifies the node.\n * @param {Object} data - specifies the data.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function updatePath(node, data, instance) {\n var text = getValue('name', data);\n var id = node.getAttribute('data-id');\n var newText = isNOU(id) ? text : id;\n instance.setProperties({ path: getPath(node, newText, instance.hasId) }, true);\n instance.pathId = getPathId(node);\n instance.pathNames = getPathNames(node, text);\n}\n/**\n * Functions for get path in FileManager\n *\n * @param {Element | Node} element - specifies the element.\n * @param {string} text - specifies the text.\n * @param {boolean} hasId - specifies the id.\n * @returns {string} returns the path.\n * @private\n */\nexport function getPath(element, text, hasId) {\n var matched = getParents(element, text, false, hasId);\n var path = hasId ? '' : '/';\n var len = matched.length - (hasId ? 1 : 2);\n for (var i = len; i >= 0; i--) {\n path += matched[i] + '/';\n }\n return path;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} node - specifies the node element.\n * @returns {string[]} returns the path ids.\n * @private\n */\nexport function getPathId(node) {\n var matched = getParents(node, node.getAttribute('data-uid'), true);\n var ids = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n ids.push(matched[i]);\n }\n return ids;\n}\n/**\n * Functions for get path names in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @returns {string[]} returns the path names.\n * @private\n */\nexport function getPathNames(element, text) {\n var matched = getParents(element, text, false);\n var names = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n names.push(matched[i]);\n }\n return names;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @param {boolean} isId - specifies the id.\n * @param {boolean} hasId - checks the id exists.\n * @returns {string[]} returns parent element.\n * @private\n */\nexport function getParents(element, text, isId, hasId) {\n var matched = [text];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, '.' + CLS.LIST_ITEM)) {\n var parentText = isId ? el.getAttribute('data-uid') : (hasId ? el.getAttribute('data-id') :\n select('.' + CLS.LIST_TEXT, el).textContent);\n matched.push(parentText);\n }\n el = el.parentNode;\n if (el.classList.contains(CLS.TREE_VIEW)) {\n break;\n }\n }\n return matched;\n}\n/**\n * Functions for generate path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function generatePath(parent) {\n var key = parent.hasId ? 'id' : 'name';\n var newPath = parent.hasId ? '' : '/';\n var i = parent.hasId ? 0 : 1;\n for (i; i < parent.pathId.length; i++) {\n // eslint-disable-next-line\n var data = getValue(parent.pathId[i], parent.feParent);\n newPath += getValue(key, data) + '/';\n }\n parent.setProperties({ path: newPath }, true);\n}\n/**\n * Functions for remove active element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function removeActive(parent) {\n if (parent.isCut) {\n removeBlur(parent);\n parent.selectedNodes = [];\n parent.actionRecords = [];\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n }\n}\n/**\n * Selects active element in File Manager\n *\n * @param {string} action - specifies the action.\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns active element.\n * @private\n */\nexport function activeElement(action, parent) {\n parent.isSearchCut = false;\n parent.actionRecords = [];\n parent.activeElements = [];\n parent.notify(events.cutCopyInit, {});\n if (parent.activeElements.length === 0) {\n return false;\n }\n removeBlur(parent);\n var blurEle = parent.activeElements;\n if (parent.activeModule !== 'navigationpane') {\n parent.targetPath = parent.path;\n }\n else {\n parent.targetPath = getParentPath(parent.path);\n }\n var i = 0;\n if (blurEle) {\n getModule(parent, blurEle[0]);\n if (action === 'cut') {\n while (i < blurEle.length) {\n addBlur(blurEle[i]);\n i++;\n }\n }\n }\n i = 0;\n parent.selectedNodes = [];\n parent.enablePaste = true;\n parent.notify(events.showPaste, {});\n while (i < parent.activeRecords.length) {\n parent.actionRecords.push(parent.activeRecords[i]);\n parent.selectedNodes.push(getValue('name', parent.activeRecords[i]));\n i++;\n }\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) &&\n parent.activeModule !== 'navigationpane') {\n parent.selectedNodes = [];\n parent.isSearchCut = true;\n var i_1 = 0;\n while (i_1 < parent.selectedItems.length) {\n parent.selectedNodes.push(parent.selectedItems[i_1]);\n i_1++;\n }\n }\n return true;\n}\n/**\n * Adds blur to the elements\n *\n * @param {Element} nodes - specifies the nodes.\n * @returns {void}\n * @private\n */\nexport function addBlur(nodes) {\n nodes.classList.add(CLS.BLUR);\n}\n/**\n * Removes blur from elements\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} hover - specifies the hover string.\n * @returns {void}\n * @private\n */\nexport function removeBlur(parent, hover) {\n var blurEle = (!hover) ? parent.element.querySelectorAll('.' + CLS.BLUR) :\n parent.element.querySelectorAll('.' + CLS.HOVER);\n var i = 0;\n while (i < blurEle.length) {\n blurEle[i].classList.remove((!hover) ? CLS.BLUR : CLS.HOVER);\n i++;\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getModule(parent, element) {\n if (element) {\n if (element.classList.contains(CLS.ROW)) {\n parent.activeModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICON)) {\n parent.activeModule = 'largeiconsview';\n }\n else {\n parent.activeModule = 'navigationpane';\n }\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} value - specifies the value.\n * @param {boolean} isLayoutChange - specifies the layout change.\n * @returns {void}\n * @private\n */\nexport function searchWordHandler(parent, value, isLayoutChange) {\n var searchWord;\n if (value.length === 0 && !parent.isFiltered) {\n parent.notify(events.pathColumn, { args: parent });\n }\n if (parent.searchSettings.filterType === 'startsWith') {\n searchWord = value + '*';\n }\n else if (parent.searchSettings.filterType === 'endsWith') {\n searchWord = '*' + value;\n }\n else {\n searchWord = '*' + value + '*';\n }\n parent.searchWord = searchWord;\n parent.itemData = [getPathObject(parent)];\n if (value.length > 0) {\n var caseSensitive = parent.searchSettings.ignoreCase;\n var hiddenItems = parent.showHiddenItems;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchWord, hiddenItems, !caseSensitive);\n }\n else {\n if (!parent.isFiltered) {\n if (parent.isSortByClicked) {\n parent.notify(events.layoutChange, { files: parent.largeiconsviewModule.items });\n parent.isSortByClicked = false;\n }\n else {\n read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n }\n else {\n filter(parent, events.layoutChange);\n }\n }\n}\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} view - specifies the view.\n * @returns {void}\n * @private\n */\nexport function updateLayout(parent, view) {\n parent.setProperties({ view: view }, true);\n if (parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) {\n parent.layoutSelectedItems = parent.selectedItems;\n }\n var searchWord = '';\n if (parent.breadcrumbbarModule.searchObj.element.value) {\n searchWord = parent.breadcrumbbarModule.searchObj.element.value;\n }\n parent.isLayoutChange = true;\n searchWordHandler(parent, searchWord, true);\n}\n/* istanbul ignore next */\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getTargetModule(parent, element) {\n var tartgetModule = '';\n if (element) {\n if (closest(element, '.' + CLS.ROOT + '.' + CLS.CONTROL + ' .' + CLS.GRID_CONTENT)) {\n tartgetModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICONS)) {\n tartgetModule = 'largeiconsview';\n }\n else if (element.classList.contains('e-fullrow') ||\n element.classList.contains('e-icon-expandable')) {\n tartgetModule = 'navigationpane';\n }\n else if (closest(element, '.e-address-list-item')) {\n tartgetModule = 'breadcrumbbar';\n }\n else {\n tartgetModule = '';\n }\n }\n parent.targetModule = tartgetModule;\n}\n/* istanbul ignore next */\n/**\n * refresh the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function refresh(parent) {\n parent.itemData = [getPathObject(parent)];\n if (!hasReadAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionRead);\n }\n else {\n read(parent, events.refreshEnd, parent.path);\n }\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function openAction(parent) {\n read(parent, events.openEnd, parent.path);\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {Object} - returns the path data.\n * @private\n */\n// eslint-disable-next-line\nexport function getPathObject(parent) {\n return getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n}\n/**\n * Copy files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function copyFiles(parent) {\n if (!activeElement('copy', parent)) {\n return;\n }\n else {\n parent.fileAction = 'copy';\n }\n}\n/**\n * Cut files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function cutFiles(parent) {\n if (!activeElement('cut', parent)) {\n return;\n }\n else {\n parent.isCut = true;\n parent.fileAction = 'move';\n }\n}\n/**\n * To add class for fileType\n *\n * @param {Object} file - specifies the file.\n * @returns {string} - returns the file type.\n * @private\n */\n// eslint-disable-next-line\nexport function fileType(file) {\n var isFile = getValue('isFile', file);\n if (!isFile) {\n return CLS.FOLDER;\n }\n var imageFormat = ['bmp', 'dib', 'jpg', 'jpeg', 'jpe', 'jfif', 'gif', 'tif', 'tiff', 'png', 'ico'];\n var audioFormat = ['mp3', 'wav', 'aac', 'ogg', 'wma', 'aif', 'fla', 'm4a'];\n var videoFormat = ['webm', 'mkv', 'flv', 'vob', 'ogv', 'ogg', 'avi', 'wmv', 'mp4', '3gp'];\n var knownFormat = ['css', 'exe', 'html', 'js', 'msi', 'pdf', 'pptx', 'ppt', 'rar', 'zip', 'txt', 'docx', 'doc',\n 'xlsx', 'xls', 'xml', 'rtf', 'php'];\n var filetype = getValue('type', file);\n filetype = filetype.toLowerCase();\n if (filetype.indexOf('.') !== -1) {\n filetype = filetype.split('.').join('');\n }\n var iconType;\n if (imageFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_IMAGE;\n }\n else if (audioFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_MUSIC;\n }\n else if (videoFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_VIDEO;\n }\n else if (knownFormat.indexOf(filetype) !== -1) {\n iconType = 'e-fe-' + filetype;\n }\n else {\n iconType = 'e-fe-unknown e-fe-' + filetype;\n }\n return iconType;\n}\n/* istanbul ignore next */\n/**\n * To get the image URL\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} item - specifies the item.\n * @returns {string} - returns the image url.\n * @private\n */\n// eslint-disable-next-line\nexport function getImageUrl(parent, item) {\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var imgUrl;\n var fileName = encodeURIComponent(getValue('name', item));\n var fPath = getValue('filterPath', item);\n if (parent.hasId) {\n var imgId = getValue('id', item);\n imgUrl = baseUrl + '?path=' + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + '?path=' + fPath.replace(/\\\\/g, '/') + fileName;\n }\n else {\n imgUrl = baseUrl + '?path=' + parent.path + fileName;\n }\n imgUrl = imgUrl + '&time=' + (new Date().getTime()).toString();\n var eventArgs = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs);\n return eventArgs.imageUrl;\n}\n/* istanbul ignore next */\n/**\n * Gets the full path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} path - specifies the path.\n * @returns {string} - returns the image url.\n * @private\n */\n// eslint-disable-next-line\nexport function getFullPath(parent, data, path) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', data) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', data);\n if (!isNOU(fPath)) {\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return path + filePath;\n }\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @returns {string} - returns the name.\n * @private\n */\n// eslint-disable-next-line\nexport function getName(parent, data) {\n var name = getValue('name', data);\n var fPath = getValue('filterPath', data);\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) && !isNOU(fPath)) {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(parent.path, '') + name;\n }\n return name;\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object[]} items - specifies the item elements.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var query;\n if (parent.sortOrder !== 'None') {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\n // eslint-disable-next-line\n var lists = new DataManager(items).executeLocal(query);\n return getValue('records', lists);\n}\n/**\n * Gets the data object\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} key - specifies the key.\n * @param {string} value - specifies the value.\n * @returns {Object} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getObject(parent, key, value) {\n // eslint-disable-next-line\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var query = new Query().where(key, 'equal', value);\n // eslint-disable-next-line\n var lists = new DataManager(currFiles).executeLocal(query);\n return lists[0];\n}\n/**\n * Creates empty element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLElement} element - specifies the element.\n * @param {ReadArgs | SearchArgs} args - specifies the args.\n * @returns {void}\n * @private\n */\nexport function createEmptyElement(parent, element, args) {\n var top;\n var layoutElement = select('#' + parent.element.id + CLS.LAYOUT_ID, parent.element);\n var addressBarHeight = select('#' + parent.element.id + CLS.BREADCRUMBBAR_ID, layoutElement).offsetHeight;\n top = layoutElement.offsetHeight - addressBarHeight;\n if (parent.view === 'Details') {\n top = top - select('.' + CLS.GRID_HEADER, layoutElement).offsetHeight;\n }\n if (isNOU(element.querySelector('.' + CLS.EMPTY))) {\n var emptyDiv = createElement('div', { className: CLS.EMPTY });\n var emptyFolder = createElement('div', { className: CLS.LARGE_EMPTY_FOLDER });\n var emptyEle = createElement('div', { className: CLS.EMPTY_CONTENT });\n var dragFile = createElement('div', { className: CLS.EMPTY_INNER_CONTENT });\n if (parent.view === 'Details') {\n element.querySelector('.' + CLS.GRID_VIEW).appendChild(emptyDiv);\n }\n else {\n element.appendChild(emptyDiv);\n }\n emptyDiv.appendChild(emptyFolder);\n emptyDiv.appendChild(emptyEle);\n emptyDiv.appendChild(dragFile);\n }\n if (element.querySelector('.' + CLS.EMPTY)) {\n if (!isNOU(args.error)) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Access-Denied');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Access-Details');\n }\n else if (parent.isFiltered) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Key');\n }\n else if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Search-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Search-Key');\n }\n else {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Folder-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'File-Upload');\n }\n }\n var eDiv = select('.' + CLS.EMPTY, element);\n top = (top - eDiv.offsetHeight) / 2;\n eDiv.style.marginTop = top + 'px';\n}\n/**\n * Gets the directories\n *\n * @param {Object[]} files - specifies the file object.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getDirectories(files) {\n return new DataManager(files).executeLocal(new Query().where(events.isFile, 'equal', false, false));\n}\n/**\n * set the Node ID\n *\n * @param {ReadArgs} result - specifies the result.\n * @param {string} rootId - specifies the rootId.\n * @returns {void}\n * @private\n */\nexport function setNodeId(result, rootId) {\n // eslint-disable-next-line\n var dirs = getDirectories(result.files);\n for (var i = 0, len = dirs.length; i < len; i++) {\n setValue('_fm_id', rootId + '_' + i, dirs[i]);\n }\n}\n/**\n * set the date object\n *\n * @param {Object[]} args - specifies the file object.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function setDateObject(args) {\n for (var i = 0; i < args.length; i++) {\n setValue('_fm_created', new Date(getValue('dateCreated', args[i])), args[i]);\n setValue('_fm_modified', new Date(getValue('dateModified', args[i])), args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nexport function getLocaleText(parent, text) {\n var locale = parent.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n}\n/**\n * get the CSS class\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} css - specifies the css.\n * @returns {string} - returns the css classes.\n * @private\n */\nexport function getCssClass(parent, css) {\n var cssClass = parent.cssClass;\n cssClass = (isNOU(cssClass) || cssClass === '') ? css : (cssClass + ' ' + css);\n return cssClass;\n}\n/**\n * sort on click\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {MenuEventArgs} args - specifies the menu event arguements.\n * @returns {void}\n * @private\n */\nexport function sortbyClickHandler(parent, args) {\n var tick;\n parent.isSortByClicked = true;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(events.sortColumn, { module: 'detailsview' });\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(events.sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @returns {string} - returns the sorted fields\n * @private\n */\nexport function getSortField(id) {\n var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n switch (text) {\n case 'date':\n field = '_fm_modified';\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function setNextPath(parent, path) {\n var currfolders = path.split('/');\n var folders = parent.originalPath.split('/');\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n for (var i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n var eventName = (folders[i + 1] === '') ? events.finalizeEnd : events.initialEnd;\n var newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n // eslint-disable-next-line\n var data = getObject(parent, key, folders[i]);\n var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n parent.pathId.push(id);\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n read(parent, eventName, parent.path);\n break;\n }\n}\n/**\n * Opens the searched folder\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function openSearchFolder(parent, data) {\n parent.notify(events.clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n parent.originalPath = getFullPath(parent, data, parent.path);\n read(parent, (parent.path !== parent.originalPath) ? events.initialEnd : events.finalizeEnd, parent.path);\n}\n/**\n * Paste handling function\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function pasteHandler(parent) {\n parent.isDragDrop = false;\n if (parent.selectedNodes.length !== 0 && parent.enablePaste) {\n var path = (parent.folderPath === '') ? parent.path : parent.folderPath;\n // eslint-disable-next-line\n var subFolder = validateSubFolder(parent, parent.actionRecords, path, parent.path);\n if (!subFolder) {\n if ((parent.fileAction === 'move' && parent.targetPath !== path) || parent.fileAction === 'copy') {\n parent.notify(events.pasteInit, {});\n paste(parent, parent.targetPath, parent.selectedNodes, path, parent.fileAction, [], parent.actionRecords);\n }\n else {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n removeBlur(parent);\n }\n }\n }\n}\n/**\n * Validates the sub folders\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {'{ [key: string]: Object; }[]'} data - specifies the data.\n * @param {string} dropPath - specifies the drop path.\n * @param {string} dragPath - specifies the drag path.\n * @returns {boolean} - returns the validated sub folder.\n * @private\n */\n// eslint-disable-next-line\nexport function validateSubFolder(parent, data, dropPath, dragPath) {\n var subFolder = false;\n for (var i = 0; i < data.length; i++) {\n if (!getValue('isFile', data[i])) {\n var tempTarget = getFullPath(parent, data[i], dragPath);\n if (dropPath.indexOf(tempTarget) === 0) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Sub-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n else {\n var srcData = parent.dragNodes[i];\n var len = 0;\n if (srcData) {\n len = srcData.lastIndexOf('/');\n }\n var path = '';\n if (len > 0) {\n path = dragPath + srcData.substring(0, len + 1);\n }\n if (path === dropPath) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n }\n return subFolder;\n}\n/**\n * Validates the drop handler\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function dropHandler(parent) {\n parent.isDragDrop = true;\n if (parent.dragData.length !== 0) {\n parent.dragPath = parent.dragPath.replace(/\\\\/g, '/');\n parent.dropPath = parent.dropPath.replace(/\\\\/g, '/');\n var subFolder = validateSubFolder(parent, parent.dragData, parent.dropPath, parent.dragPath);\n if (!subFolder && (parent.dragPath !== parent.dropPath)) {\n parent.itemData = [parent.dropData];\n paste(parent, parent.dragPath, parent.dragNodes, parent.dropPath, 'move', [], parent.dragData);\n parent.notify(events.pasteInit, {});\n }\n }\n}\n/**\n * Gets the parent path\n *\n * @param {string} oldPath - specifies the old path.\n * @returns {string} - returns the parent path.\n * @private\n */\nexport function getParentPath(oldPath) {\n var path = oldPath.split('/');\n var newPath = path[0] + '/';\n for (var i = 1; i < path.length - 2; i++) {\n newPath += path[i] + '/';\n }\n return newPath;\n}\n/**\n * Gets the directory path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {ReadArgs} args - returns the read arguements.\n * @returns {string} - returns the directory path\n * @private\n */\nexport function getDirectoryPath(parent, args) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', args.cwd) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', args.cwd);\n if (!isNOU(fPath)) {\n if (fPath === '') {\n return parent.hasId ? filePath : '/';\n }\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return parent.path + filePath;\n }\n}\n/**\n * Gets the do paste path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} operation - specifies the operations.\n * @param {ReadArgs} result - returns the result.\n * @returns {void}\n * @private\n */\nexport function doPasteUpdate(parent, operation, result) {\n if (operation === 'move') {\n if (!parent.isDragDrop) {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n parent.notify(events.cutEnd, result);\n }\n else {\n parent.notify(events.dragEnd, result);\n }\n }\n if (parent.duplicateItems.length === 0) {\n parent.pasteNodes = [];\n }\n var flag = false;\n for (var count = 0; (count < result.files.length) && !flag; count++) {\n parent.pasteNodes.push(result.files[count][parent.hasId ? 'id' : 'name']);\n if (parent.isDragDrop) {\n parent.droppedObjects.push(result.files[count]);\n }\n }\n parent.duplicateItems = [];\n parent.duplicateRecords = [];\n if (parent.isDragDrop && !parent.isPasteError) {\n parent.isDropEnd = true;\n }\n else {\n parent.isDropEnd = false;\n }\n if (!parent.isDragDrop || (parent.path === parent.dragPath) || (parent.path === parent.dropPath)\n || parent.isSearchDrag) {\n parent.isPathDrag = false;\n read(parent, events.pasteEnd, parent.path);\n }\n else {\n readDropPath(parent);\n }\n parent.trigger('success', { action: operation, result: result });\n}\n/**\n * Reads the drop path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function readDropPath(parent) {\n var pathId = getValue('_fm_id', parent.dropData);\n parent.expandedId = pathId;\n parent.itemData = [parent.dropData];\n if (parent.isPathDrag) {\n parent.notify(events.pathDrag, parent.itemData);\n }\n else {\n if (parent.navigationpaneModule) {\n var node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n updatePath(node, parent.dropData, parent);\n }\n read(parent, events.dropPath, parent.dropPath);\n }\n}\n/**\n * Gets the duplicated path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} name - specifies the name.\n * @returns {object} - returns the duplicated path.\n * @private\n */\n// eslint-disable-next-line\nexport function getDuplicateData(parent, name) {\n // eslint-disable-next-line\n var data = null;\n // eslint-disable-next-line\n var records = parent.isDragDrop ? parent.dragData : parent.actionRecords;\n for (var i = 0; i < records.length; i++) {\n if (getValue('name', records[i]) === name) {\n data = records[i];\n break;\n }\n }\n return data;\n}\n/**\n * Gets the create the virtual drag element\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createVirtualDragElement(parent) {\n parent.isSearchDrag = false;\n if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n parent.isSearchDrag = true;\n }\n if (parent.activeModule !== 'navigationpane') {\n parent.dragNodes = [];\n var i = 0;\n while (i < parent.selectedItems.length) {\n parent.dragNodes.push(parent.selectedItems[i]);\n i++;\n }\n if (parent.selectedItems.length === 0 && parent.dragData && parent.dragData.length === 1) {\n parent.dragNodes.push(getItemName(parent, parent.dragData[0]));\n }\n }\n var cloneIcon = parent.createElement('div', {\n className: 'e-fe-icon ' + fileType(parent.dragData[0])\n });\n var cloneName = parent.createElement('div', {\n className: 'e-fe-name',\n innerHTML: parent.dragData[0].name\n });\n var virtualEle = parent.createElement('div', {\n className: 'e-fe-content'\n });\n virtualEle.appendChild(cloneIcon);\n virtualEle.appendChild(cloneName);\n var ele = parent.createElement('div', {\n className: CLS.CLONE\n });\n ele.appendChild(virtualEle);\n if (parent.dragNodes.length > 1) {\n var badge = parent.createElement('span', {\n className: 'e-fe-count',\n innerHTML: (parent.dragNodes.length).toString(10)\n });\n ele.appendChild(badge);\n }\n parent.virtualDragElement = ele;\n parent.element.appendChild(parent.virtualDragElement);\n}\n/**\n * Drops the stop handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStopHandler(parent, args) {\n var dragArgs = args;\n dragArgs.cancel = false;\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeDropTarget(parent);\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n removeBlur(parent);\n parent.uploadObj.dropArea = select('#' + parent.element.id + CLS.CONTENT_ID, parent.element);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n getTargetModule(parent, args.target);\n parent.notify(events.dropInit, args);\n removeBlur(parent, 'hover');\n dragArgs.fileDetails = parent.dragData;\n parent.trigger('fileDragStop', dragArgs, function (dragArgs) {\n if (!dragArgs.cancel && !isNOU(parent.targetModule) && parent.targetModule !== '' && parent.dragCount > 2) {\n dropHandler(parent);\n }\n parent.dragCount = 0;\n });\n}\n/**\n * Drag the start handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {'DragEventArgs'} args - specifies the drag event arguements.\n * @param {Draggable} dragObj - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStartHandler(parent, args, dragObj) {\n var dragArgs = args;\n dragArgs.cancel = false;\n dragArgs.fileDetails = parent.dragData;\n parent.dragCount = 0;\n parent.droppedObjects = [];\n if (!parent.allowDragAndDrop || ((parent.activeModule === 'navigationpane') &&\n (closest(args.element, 'li').getAttribute('data-uid') === parent.pathId[0]))) {\n dragArgs.cancel = true;\n }\n if ((parent.activeModule === 'navigationpane') &&\n (parent.pathId.indexOf(closest(args.element, 'li').getAttribute('data-uid')) !== -1)) {\n parent.isPathDrag = true;\n }\n else {\n parent.isPathDrag = false;\n }\n removeBlur(parent);\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else if (!dragArgs.cancel) {\n var i = 0;\n while (i < parent.activeElements.length) {\n addBlur(parent.activeElements[i]);\n i++;\n }\n parent.trigger('fileDragStart', dragArgs, function (dragArgs) {\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else {\n parent.uploadObj.dropArea = null;\n }\n });\n }\n}\n/**\n * Drag the cancel handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function dragCancel(parent) {\n removeBlur(parent);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n}\n/**\n * Remove drop target handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function removeDropTarget(parent) {\n removeItemClass(parent, CLS.DROP_FOLDER);\n removeItemClass(parent, CLS.DROP_FILE);\n}\n/**\n * Remove item class handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} value - specifies the value.\n * @returns {void}\n * @private\n */\nexport function removeItemClass(parent, value) {\n var ele = parent.element.querySelectorAll('.' + value);\n for (var i = 0; i < ele.length; i++) {\n ele[i].classList.remove(value);\n }\n}\n/**\n * Dragging handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nexport function draggingHandler(parent, args) {\n var dragArgs = args;\n dragArgs.fileDetails = parent.dragData;\n var canDrop = false;\n getTargetModule(parent, args.target);\n removeDropTarget(parent);\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeBlur(parent, 'hover');\n var node = null;\n if (parent.targetModule === 'navigationpane') {\n node = closest(args.target, 'li');\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n canDrop = true;\n /* istanbul ignore next */\n parent.treeExpandTimer = window.setTimeout(function () { parent.notify(events.dragging, args); }, 800);\n }\n else if (parent.targetModule === 'detailsview') {\n node = closest(args.target, 'tr');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FOLDER);\n }\n else if (node && !node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FILE);\n }\n canDrop = true;\n }\n else if (parent.targetModule === 'largeiconsview') {\n node = closest(args.target, 'li');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n }\n canDrop = true;\n /* istanbul ignore next */\n }\n else if (parent.targetModule === 'breadcrumbbar') {\n canDrop = true;\n }\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n parent.element.classList.add(canDrop ? 'e-fe-drop' : 'e-no-drop');\n parent.dragCount = parent.dragCount + 1;\n parent.trigger('fileDragging', dragArgs);\n}\n/**\n * Object to string handler\n *\n * @param {Object} data - specifies the data.\n * @returns {string} returns string converted from Object.\n * @private\n */\n// Ignored the message key value in permission object\n// eslint-disable-next-line\nexport function objectToString(data) {\n var str = '';\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] !== 'message') {\n str += (i === 0 ? '' : ', ') + keys[i] + ': ' + getValue(keys[i], data);\n }\n }\n return str;\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {string} returns the item name.\n * @private\n */\n// eslint-disable-next-line\nexport function getItemName(parent, data) {\n if (parent.hasId) {\n return getValue('id', data);\n }\n return getName(parent, data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function updateRenamingData(parent, data) {\n parent.itemData = [data];\n parent.currentItemText = getValue('name', data);\n parent.isFile = getValue('isFile', data);\n parent.filterPath = getValue('filterPath', data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doRename(parent) {\n if (!hasEditAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionEdit);\n }\n else {\n createDialog(parent, 'Rename');\n }\n}\n/* istanbul ignore next */\n/**\n * Download handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doDownload(parent) {\n // eslint-disable-next-line\n var items = parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(parent, items[i], events.permissionDownload);\n return;\n }\n }\n if (parent.selectedItems.length > 0) {\n Download(parent, parent.path, parent.selectedItems);\n }\n}\n/**\n * Delete Files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function doDeleteFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionEdit);\n return;\n }\n }\n parent.itemData = data;\n Delete(parent, newIds, parent.path, 'delete');\n}\n/* istanbul ignore next */\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function doDownloadFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasDownloadAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionDownload);\n return;\n }\n }\n parent.itemData = data;\n if (newIds.length > 0) {\n Download(parent, parent.path, newIds);\n }\n}\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @param {string} action - specifies the actions.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function createDeniedDialog(parent, data, action) {\n var message = getValue('message', getValue('permission', data));\n if (message === '') {\n message = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', data)).replace('{1}', action);\n }\n var response = {\n error: {\n code: '401',\n fileExists: null,\n message: message\n }\n };\n createDialog(parent, 'Error', response);\n}\n/**\n * Get Access Classes\n *\n * @param {Object} data - specifies the data.\n * @returns {string} - returns accesses classes.\n * @private\n */\n// eslint-disable-next-line\nexport function getAccessClass(data) {\n return !hasReadAccess(data) ? 'e-fe-locked e-fe-hidden' : 'e-fe-locked';\n}\n/**\n * Check read access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns read access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasReadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return (permission && !getValue('read', permission)) ? false : true;\n}\n/**\n * Check edit access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns edit access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasEditAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('write', permission))) : true;\n}\n/**\n * Check content access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns content access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasContentAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('writeContents', permission))) : true;\n}\n/**\n * Check upload access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns upload access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasUploadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('upload', permission))) : true;\n}\n/**\n * Check download access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns download access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasDownloadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('download', permission))) : true;\n}\n/**\n * Create new folder handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createNewFolder(parent) {\n // eslint-disable-next-line\n var details = parent.itemData[0];\n if (!hasContentAccess(details)) {\n createDeniedDialog(parent, details, events.permissionEditContents);\n }\n else {\n createDialog(parent, 'NewFolder');\n }\n}\n/**\n * Upload item handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function uploadItem(parent) {\n // eslint-disable-next-line\n var details = parent.itemData[0];\n if (!hasUploadAccess(details)) {\n createDeniedDialog(parent, details, events.permissionUpload);\n }\n else {\n var eleId = '#' + parent.element.id + CLS.UPLOAD_ID;\n var uploadEle = document.querySelector(eleId);\n uploadEle.click();\n }\n}\n","import { Ajax, createElement, select, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, setValue, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate, getParentPath, getPathObject } from '../common/utility';\nimport { generatePath } from '../common/utility';\n/**\n * Function to read the content from given path in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function read(parent, event, path) {\n // eslint-disable-next-line\n var itemData = parent.itemData;\n for (var i = 0; i < itemData.length; i++) {\n if (isNOU(getValue('hasChild', itemData[i]))) {\n setValue('hasChild', false, itemData[i]);\n }\n }\n // eslint-disable-next-line\n var data = { action: 'read', path: path, showHiddenItems: parent.showHiddenItems, data: itemData };\n createAjax(parent, data, readSuccess, event);\n}\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nexport function createFolder(parent, itemName) {\n // eslint-disable-next-line\n var data = { action: 'create', path: parent.path, name: itemName, data: parent.itemData };\n createAjax(parent, data, createSuccess, itemName);\n}\n/**\n * Function to filter the files in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nexport function filter(parent, event) {\n // eslint-disable-next-line\n var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n // eslint-disable-next-line\n var filterData;\n // eslint-disable-next-line\n var filterDataVal = parent.filterData ? extend(filterData, data, parent.filterData) : data;\n createAjax(parent, filterDataVal, filterSuccess, event, getValue('action', filterDataVal));\n}\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string} itemNewName - specifies the item's new name.\n * @returns {void}\n * @private\n */\nexport function rename(parent, path, itemNewName) {\n var name;\n var newName;\n if (parent.breadcrumbbarModule.searchObj.element.value === '' && !parent.isFiltered) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n var fPath = parent.filterPath;\n if (parent.hasId) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(path, '') + parent.currentItemText;\n newName = fPath.replace(path, '') + itemNewName;\n }\n }\n // eslint-disable-next-line\n var data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData\n };\n createAjax(parent, data, renameSuccess, path);\n}\n/**\n * Function to paste file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} names - specifies the names.\n * @param {string} targetPath - specifies the target path.\n * @param {string} pasteOperation - specifies the paste operation.\n * @param {string[]} renameItems - specifies the rename items.\n * @param {Object[]} actionRecords - specifies the action records.\n * @returns {void}\n * @private\n */\nexport function paste(parent, path, names, targetPath, pasteOperation, \n// eslint-disable-next-line\nrenameItems, actionRecords) {\n // eslint-disable-next-line\n var data = {\n action: pasteOperation, path: path, targetData: parent.itemData[0],\n targetPath: targetPath, names: names, renameFiles: renameItems, data: actionRecords\n };\n parent.destinationPath = targetPath;\n createAjax(parent, data, pasteSuccess, path, pasteOperation, targetPath);\n}\n/**\n * Function to delete file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} items - specifies the items.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nexport function Delete(parent, items, path, operation) {\n // eslint-disable-next-line\n var data = { action: operation, path: path, names: items, data: parent.itemData };\n createAjax(parent, data, deleteSuccess, path);\n}\n/* istanbul ignore next */\n/**\n * Function to get details of file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} names - specifies the names.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation data.\n * @returns {void}\n * @private\n */\nexport function GetDetails(parent, names, path, operation) {\n // eslint-disable-next-line\n var data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Function for createAjax in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {Function} fn - specifies the fn.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the target path.\n * @returns {void}\n * @private\n */\nfunction createAjax(\n// eslint-disable-next-line\nparent, data, fn, event, operation, targetPath) {\n // eslint-disable-next-line\n var ajaxSettings = {\n url: parent.ajaxSettings.url,\n type: 'POST',\n mode: true,\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };\n parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\n var ajax = new Ajax({\n url: getValue('url', beforeSendArgs.ajaxSettings),\n type: getValue('type', beforeSendArgs.ajaxSettings),\n mode: getValue('mode', beforeSendArgs.ajaxSettings),\n dataType: getValue('dataType', beforeSendArgs.ajaxSettings),\n contentType: getValue('contentType', beforeSendArgs.ajaxSettings),\n data: getValue('data', beforeSendArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', beforeSendArgs.ajaxSettings),\n onSuccess: function (result) {\n if (isNOU(result)) {\n var result_1 = {\n error: {\n fileExists: null,\n message: getLocaleText(parent, 'Server-Error') + ' ' + parent.ajaxSettings.url,\n code: '406'\n },\n files: null\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result_1, event, operation, targetPath);\n return;\n }\n if (typeof (result) === 'string') {\n result = JSON.parse(result);\n }\n parent.notify(events.afterRequest, { action: 'success' });\n var id = parent.expandedId ? parent.expandedId : parent.pathId[parent.pathId.length - 1];\n if (!isNOU(result.cwd) && (getValue('action', data) === 'read')) {\n result.cwd.name = (parent.pathId.length === 1) ? (parent.rootAliasName || result.cwd.name) : result.cwd.name;\n setValue('_fm_id', id, result.cwd);\n setValue(id, result.cwd, parent.feParent);\n if (!isNOU(result.files) || result.error.code === '401') {\n if ((event === 'finalize-end' || event === 'initial-end') && parent.pathNames.length === 0) {\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n parent.pathNames[0] = getValue('name', root);\n parent.hasId = !isNOU(getValue('id', root));\n }\n if (event === 'finalize-end') {\n generatePath(parent);\n }\n }\n }\n if (!isNOU(result.files)) {\n setDateObject(result.files);\n for (var i = 0, len = result.files.length; i < len; i++) {\n // eslint-disable-next-line\n var item = result.files[i];\n setValue('_fm_iconClass', fileType(item), item);\n }\n if (getValue('action', data) === 'read') {\n setNodeId(result, id);\n setValue(id, result.files, parent.feFiles);\n }\n }\n if (!isNOU(result.details) && !isNOU(parent.rootAliasName)) {\n var rootName = parent.rootAliasName || getValue('name', result.details);\n var location_1 = getValue('location', result.details).replace(new RegExp('/', 'g'), '\\\\');\n if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {\n if (getValue('names', data).length === 0) {\n setValue('name', rootName, result.details);\n location_1 = rootName;\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n setValue('location', location_1, result.details);\n }\n fn(parent, result, event, operation, targetPath);\n if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end')) {\n parent.notify(events.searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\n },\n onFailure: function () {\n var result = {\n files: null,\n error: {\n code: '404',\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.url,\n fileExists: null\n }\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath);\n }\n });\n ajax.send();\n }\n });\n}\n/**\n * Function for trigger Ajax failure in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the beforeSendArgs.\n * @param {Function} fn - specifies the function.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @returns {void}\n * @private\n */\nfunction triggerAjaxFailure(\n// eslint-disable-next-line\nparent, beforeSendArgs, fn, result, event, operation, targetPath) {\n parent.notify(events.afterRequest, { action: 'failure' });\n fn(parent, result, event, operation, targetPath);\n if (typeof getValue('onFailure', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onFailure', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function for read success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction readSuccess(parent, result, event) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n var args = { action: 'read', result: result };\n parent.trigger('success', args);\n }\n else {\n if (result.error.code === '401') {\n result.files = [];\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n }\n onFailure(parent, result, 'read');\n }\n if (parent.isDragDrop && parent.isDropEnd) {\n if (parent.droppedObjects.length !== 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n }\n parent.isDropEnd = parent.isDragDrop = false;\n }\n}\n/**\n * Function for filter success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction filterSuccess(parent, result, event, action) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: action, result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, action);\n }\n}\n/* istanbul ignore next */\n/**\n * Function for create success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction createSuccess(parent, result, itemName) {\n if (!isNOU(result.files)) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n parent.createdItem = result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\n var args = { action: 'create', result: result };\n parent.trigger('success', args);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.createEnd, parent.path);\n }\n else {\n if (result.error.code === '400') {\n if (parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#newname', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n else {\n var result_2 = {\n files: null,\n error: {\n code: '400',\n message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + itemName + '\"'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result_2);\n }\n var args = { action: 'create', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'create');\n }\n }\n}\n/* istanbul ignore next */\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path\n * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result, path) {\n if (!isNOU(result.files)) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n var args = { action: 'rename', result: result };\n parent.trigger('success', args);\n parent.renamedItem = result.files[0];\n if (parent.activeModule === 'navigationpane') {\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n read(parent, events.renameEndParent, getParentPath(parent.path));\n }\n else {\n parent.itemData = [getPathObject(parent)];\n if (parent.breadcrumbbarModule.searchObj.value !== '') {\n Search(parent, events.renameEnd, parent.path, parent.searchWord, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n else {\n if (parent.isFiltered) {\n filter(parent, events.renameEnd);\n }\n else {\n read(parent, events.renameEnd, parent.path);\n }\n }\n }\n }\n else {\n if (result.error.code === '400' && parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#rename', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '\"' + parent.currentItemText + '\"');\n error = error.replace('{1}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n var args = { action: 'rename', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'rename');\n }\n }\n}\n/* istanbul ignore next */\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction pasteSuccess(parent, result, path, operation) {\n if (result.error && result.error.fileExists) {\n parent.fileLength = 0;\n if (!isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n }\n createExtDialog(parent, 'DuplicateItems', result.error.fileExists);\n if (result.error.code === '404') {\n createDialog(parent, 'Error', result);\n }\n }\n else if (!result.error && !isNOU(result.files)) {\n parent.isPasteError = false;\n doPasteUpdate(parent, operation, result);\n }\n else if (result.error && !isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n createDialog(parent, 'Error', result);\n }\n else {\n onFailure(parent, result, operation);\n }\n}\n/**\n * Function to delete success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nfunction deleteSuccess(parent, result, path) {\n if (!isNOU(result.files)) {\n parent.setProperties({ path: path }, true);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.deleteEnd, parent.path);\n if (result.error) {\n onFailure(parent, result, 'delete');\n }\n else {\n var args = { action: 'delete', result: result };\n parent.trigger('success', args);\n }\n }\n else {\n onFailure(parent, result, 'delete');\n }\n}\n/**\n * Function for details success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction detailsSuccess(\n// eslint:disable-next-line\nparent, result, path, operation) {\n if (!isNOU(result.details)) {\n createDialog(parent, operation, null, result.details);\n var args = { action: 'details', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'details');\n }\n}\n/**\n * Function for on failure event in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction onFailure(parent, result, action) {\n createDialog(parent, 'Error', result);\n var args = { action: action, error: result.error };\n parent.trigger('failure', args);\n}\n/**\n * Function for search in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @param {string} searchString - specifies the search string.\n * @param {boolean} showHiddenItems - specifies the hidden items.\n * @param {boolean} caseSensitive - specifies the casing of search text.\n * @returns {void}\n * @private\n */\nexport function Search(\n// eslint:disable-next-line\nparent, event, path, searchString, showHiddenItems, caseSensitive) {\n // eslint-disable-next-line\n var data = {\n action: 'search', path: path, searchString: searchString, showHiddenItems: showHiddenItems, caseSensitive: caseSensitive,\n data: parent.itemData\n };\n createAjax(parent, data, searchSuccess, event);\n}\n/* istanbul ignore next */\n/**\n * Function for search success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction searchSuccess(parent, result, event) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: 'search', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'search');\n }\n}\n/* istanbul ignore next */\n/**\n * Function for download in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} items - specifies the items.\n * @returns {void}\n * @private\n */\nexport function Download(parent, path, items) {\n var downloadUrl = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;\n // eslint-disable-next-line\n var data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n var eventArgs = { data: data, cancel: false };\n parent.trigger('beforeDownload', eventArgs, function (downloadArgs) {\n if (!downloadArgs.cancel) {\n var form = createElement('form', {\n id: parent.element.id + '_downloadForm',\n attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }\n });\n var input = createElement('input', {\n id: parent.element.id + '_hiddenForm',\n attrs: { name: 'downloadInput', value: JSON.stringify(downloadArgs.data), type: 'hidden' }\n });\n form.appendChild(input);\n parent.element.appendChild(form);\n document.forms.namedItem('downloadForm').submit();\n parent.element.removeChild(form);\n }\n });\n}\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { select, isNullOrUndefined as isNOU, createElement, Internationalization } from '@syncfusion/ej2-base';\nimport { getValue, remove, selectAll } from '@syncfusion/ej2-base';\nimport { createFolder } from '../common/operations';\nimport * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { paste, rename } from '../common/operations';\nimport { getLocaleText, getDuplicateData, getParentPath, objectToString, getCssClass } from '../common/utility';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the type of event args.\n * @param {FileDetails} details - specifies the file details.\n * @param {string[]} replaceItems - specifies the replacement.\n * @returns {void}\n * @private\n */\nexport function createDialog(parent, text, e, details, replaceItems) {\n var options = getOptions(parent, text, e, details, replaceItems);\n if (isNOU(parent.dialogObj)) {\n parent.dialogObj = new Dialog({\n beforeOpen: keydownAction.bind(this, parent, options.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n },\n header: options.header,\n content: options.content,\n buttons: options.buttons,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n allowDragging: true,\n isModal: true,\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n width: '350px',\n open: options.open,\n close: options.close,\n enableRtl: parent.enableRtl,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.dialogObj.isStringTemplate = true;\n parent.dialogObj.appendTo('#' + parent.element.id + CLS.DIALOG_ID);\n }\n else {\n changeOptions(parent, options);\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {void}\n * @private\n */\nexport function createExtDialog(parent, text, replaceItems, newPath) {\n var extOptions = getExtOptions(parent, text, replaceItems, newPath);\n parent.isApplySame = false;\n if (isNOU(parent.extDialogObj)) {\n parent.extDialogObj = new Dialog({\n beforeOpen: beforeExtOpen.bind(this, parent, extOptions.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n },\n content: extOptions.content,\n header: extOptions.header,\n closeOnEscape: true,\n allowDragging: true,\n animationSettings: { effect: 'None' },\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n enableRtl: parent.enableRtl,\n showCloseIcon: true,\n isModal: true,\n width: 350,\n buttons: extOptions.buttons,\n open: extOptions.open,\n close: extOptions.close,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.extDialogObj.isStringTemplate = true;\n parent.extDialogObj.appendTo('#' + parent.element.id + CLS.EXTN_DIALOG_ID);\n }\n else {\n parent.extDialogObj.header = extOptions.header;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.open = extOptions.open;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.content = extOptions.content;\n parent.extDialogObj.buttons = extOptions.buttons;\n parent.extDialogObj.enableRtl = parent.enableRtl;\n parent.extDialogObj.locale = parent.locale;\n parent.extDialogObj.beforeOpen = beforeExtOpen.bind(this, parent, extOptions.dialogName);\n parent.extDialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n };\n parent.extDialogObj.dataBind();\n parent.extDialogObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {Dialog} dlgModule - Specifies the dialog module.\n * @param {BeforeOpenEventArgs} args - specifies the before open arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeOpen(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupName: dialogName, popupModule: dlgModule\n };\n parent.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {BeforeCloseEventArgs} args - specifies the before close event arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeClose(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupModule: dlgModule, popupName: dialogName\n };\n parent.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n if (!args.cancel && args.isInteracted && ((dialogName === 'Rename') || (dialogName === 'Create Folder'))) {\n parent.trigger(events.actionFailure, {});\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupOpen(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupOpen', args);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupClose(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupClose', args);\n}\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {DialogOptions} - returns the dialog options.\n * @private\n */\nfunction getExtOptions(parent, text, replaceItems, newPath) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var duplicateContent;\n var item;\n var index;\n options.open = function () { triggerPopupOpen(parent, parent.extDialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.extDialogObj, options.dialogName); };\n switch (text) {\n case 'Extension':\n options.header = getLocaleText(parent, 'Header-Rename-Confirmation');\n options.content = '<div>' + getLocaleText(parent, 'Content-Rename-Confirmation') + '</div>';\n options.buttons = [{\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.extDialogObj.hide();\n rename(parent, newPath, parent.renameText);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.extDialogObj.hide();\n parent.dialogObj.hide();\n }\n }];\n options.dialogName = 'Extension Change';\n break;\n case 'DuplicateItems':\n options.dialogName = 'Duplicate Items';\n parent.replaceItems = replaceItems;\n item = parent.replaceItems[parent.fileLength];\n index = item.lastIndexOf('/');\n item = index === -1 ? item : item.substring(index);\n options.header = getLocaleText(parent, 'Header-Duplicate');\n duplicateContent = '<div>' + getLocaleText(parent, 'Content-Duplicate') + '</div>';\n options.content = (duplicateContent).replace('{0}', item);\n options.close = function () {\n if (!parent.isDropEnd && parent.duplicateItems.length === 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n parent.isDropEnd = parent.isDragDrop = false;\n }\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.duplicateItems.push(parent.replaceItems[parent.fileLength]);\n parent.duplicateRecords.push(getDuplicateData(parent, parent.replaceItems[parent.fileLength]));\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_1 = parent.replaceItems[parent.fileLength];\n var indexval = item_1.lastIndexOf('/');\n item_1 = indexval === -1 ? item_1 : item_1.substring(indexval);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_1);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_2 = parent.replaceItems[parent.fileLength];\n var ind = item_2.lastIndexOf('/');\n item_2 = ind === -1 ? item_2 : item_2.substring(ind);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_2);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n if (parent.duplicateItems.length !== 0) {\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n }\n }\n ];\n break;\n case 'UploadRetry':\n options.dialogName = 'Retry Upload';\n options.header = getLocaleText(parent, 'Header-Retry');\n options.content = parent.retryFiles[0].name + '<div class=\"e-fe-retrycontent\">' +\n (getLocaleText(parent, 'Content-Retry')) + '</div>';\n options.open = onRetryOpen.bind(this, parent);\n options.close = function () {\n parent.isRetryOpened = false;\n retryDlgClose(parent);\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Keep-Both') },\n click: function () {\n retryDlgUpdate(parent, true);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Replace') },\n click: function () {\n retryDlgUpdate(parent, false);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Skip') },\n click: function () {\n var count = 0;\n if (parent.isApplySame) {\n count = parent.retryFiles.length;\n parent.retryFiles = [];\n retryDlgClose(parent);\n }\n else {\n count = 1;\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n parent.notify(events.skipUpload, { count: count });\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {boolean} isKeepBoth - checks the arguement to keep both.\n * @returns {void}\n * @private\n */\nfunction retryDlgUpdate(parent, isKeepBoth) {\n if (parent.isApplySame) {\n if (isKeepBoth) {\n onKeepBothAll(parent);\n }\n else {\n onReplaceAll(parent);\n }\n retryDlgClose(parent);\n }\n else {\n parent.retryArgs.push({\n action: isKeepBoth ? 'keepboth' : 'replace',\n file: parent.retryFiles[0]\n });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction retryDlgClose(parent) {\n var flag = true;\n if (parent.isRetryOpened) {\n parent.isRetryOpened = false;\n }\n else {\n flag = false;\n }\n var ele = select('.e-dlg-checkbox', parent.extDialogObj.element);\n if (ele) {\n remove(ele);\n }\n if (flag) {\n parent.extDialogObj.hide();\n }\n else {\n parent.retryFiles = [];\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {object} args - specifies the arguements.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nfunction onRetryOpen(parent, args) {\n parent.isRetryOpened = true;\n var dialogEle = getValue('element', args);\n var container = select('.e-dlg-content', dialogEle);\n var checkContainer = parent.createElement('div', {\n className: 'e-dlg-checkbox'\n });\n var checkbox = parent.createElement('input', {\n id: parent.element.id + '_applyall'\n });\n checkContainer.appendChild(checkbox);\n container.appendChild(checkContainer);\n var checkBoxObj = new CheckBox({\n label: getLocaleText(parent, 'ApplyAll-Label'),\n change: function (args) {\n parent.isApplySame = args.checked;\n }\n });\n checkBoxObj.appendTo('#' + parent.element.id + '_applyall');\n triggerPopupOpen(parent, parent.extDialogObj, 'Retry Upload');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onKeepBothAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'keepboth', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReplaceAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'replace', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction focusInput(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n ele.focus();\n ele.value = '';\n var len = ele.value.length;\n ele.setSelectionRange(0, len);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onFolderDialogOpen(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n if (!ele.parentElement.classList.contains('e-control-wrapper')) {\n createInput(ele, getLocaleText(parent, 'Content-NewFolder'));\n }\n ele.parentElement.nextElementSibling.innerHTML = '';\n ele.oninput = function () {\n onValidate(parent, ele);\n };\n ele.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onSubmit(parent);\n }\n };\n focusInput(parent);\n triggerPopupOpen(parent, parent.dialogObj, 'Create Folder');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onRenameDialogOpen(parent) {\n var inputEle = select('#rename', parent.dialogObj.element);\n if (!inputEle.parentElement.classList.contains('e-control-wrapper')) {\n createInput(inputEle, getLocaleText(parent, 'Content-Rename'));\n }\n inputEle.parentElement.nextElementSibling.innerHTML = '';\n inputEle.oninput = function () {\n onValidate(parent, inputEle);\n };\n inputEle.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onReSubmit(parent);\n }\n };\n onFocusRenameInput(parent, inputEle);\n triggerPopupOpen(parent, parent.dialogObj, 'Rename');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} inputEle - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onFocusRenameInput(parent, inputEle) {\n inputEle.focus();\n var txt = '';\n if (parent.isFile && !parent.showFileExtension) {\n var index = parent.currentItemText.lastIndexOf('.');\n txt = (index === -1) ? parent.currentItemText : parent.currentItemText.substring(0, index);\n }\n else {\n txt = parent.currentItemText;\n }\n inputEle.value = txt;\n if (parent.isFile && parent.showFileExtension && (inputEle.value.indexOf('.') !== -1)) {\n inputEle.setSelectionRange(0, inputEle.value.lastIndexOf('.'));\n }\n else {\n inputEle.setSelectionRange(0, inputEle.value.length);\n }\n}\n/**\n *\n * @param {HTMLInputElement} ele - specifies the element.\n * @param {string} placeholder - specifies the place holder.\n * @returns {void}\n * @private\n */\nfunction createInput(ele, placeholder) {\n Input.createInput({\n element: ele,\n properties: {\n placeholder: placeholder\n }\n });\n}\n/* istanbul ignore next */\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the event arguements.\n * @param {FileDetails} details - specifies the file details.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details, replaceItems) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var permission;\n var formattedString;\n var intl;\n var strArr;\n var fileType;\n var location;\n options.open = function () { triggerPopupOpen(parent, parent.dialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.dialogObj, options.dialogName); };\n text = (details && details.multipleFiles === true) ? 'MultipleFileDetails' : text;\n switch (text) {\n case 'NewFolder':\n options.dialogName = 'Create Folder';\n options.header = getLocaleText(parent, 'Header-NewFolder');\n options.content = '<input type=\"text\" value=\"New folder\" id=\"newname\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Create') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onSubmit(parent);\n }\n }\n ];\n options.open = onFolderDialogOpen.bind(this, parent);\n break;\n case 'Delete':\n options.dialogName = 'Delete';\n if (parent.selectedItems.length > 1) {\n options.content = ('<div>' + getLocaleText(parent, 'Content-Multiple-Delete') + '</div>')\n .replace('{0}', parent.selectedItems.length.toString());\n options.header = getLocaleText(parent, 'Header-Multiple-Delete');\n }\n else {\n options.content = '<div>' + getLocaleText(parent, parent.isFile ? 'Content-Delete' : 'Content-Folder-Delete') + '</div>';\n options.header = getLocaleText(parent, parent.isFile ? 'Header-Delete' : 'Header-Folder-Delete');\n }\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function (e) {\n onDeleteSubmit(parent);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Rename':\n options.dialogName = 'Rename';\n options.header = getLocaleText(parent, 'Header-Rename');\n options.content = '<input type=\"text\" class=\"e-input\" id=\"rename\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Save') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onReSubmit(parent);\n }\n }\n ];\n options.open = onRenameDialogOpen.bind(this, parent);\n break;\n case 'details':\n options.dialogName = 'File Details';\n intl = new Internationalization(parent.locale);\n formattedString = intl.formatDate(new Date(details.modified), { format: 'MMMM dd, yyyy HH:mm:ss' });\n permission = '';\n if (!isNOU(details.permission)) {\n permission = '<tr><td>' + getLocaleText(parent, 'Permission') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + objectToString(details.permission) + '</td></tr>';\n }\n options.header = details.name;\n options.content = '<table>' +\n '<tr><td>' + getLocaleText(parent, 'Type') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n (details.isFile ? 'File' : 'Folder') + '\">' + (details.isFile ? 'File' : 'Folder') + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + '</td><td><span class=\"' + CLS.VALUE + '\" title =\"' +\n details.size + '\">' + details.size + '</span></td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Location') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n details.location + '\">' + details.location + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Modified') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + formattedString + '</td></tr>'\n + permission + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n options.dialogName = 'File Details';\n strArr = details.name.split(',').map(function (val) {\n var index = val.indexOf('.') + 1;\n return (index === 0) ? 'Folder' : val.substr(index).replace(' ', '');\n });\n fileType = strArr.every(function (val, i, arr) { return val === arr[0]; }) ?\n ((strArr[0] === 'Folder') ? 'Folder' : strArr[0].toLocaleUpperCase() + ' Type') : 'Multiple Types';\n location = details.location;\n options.header = details.name;\n options.content = '<table><tr><td>' + getLocaleText(parent, 'Type')\n + ':</td><td class=\"' + CLS.VALUE + '\">' + fileType + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + ':</td><td>' +\n details.size + '<span class=\"' + CLS.VALUE + '\" title =\"' + details.size\n + '\"></span></td></tr>' + '<tr><td>' + getLocaleText(parent, 'Location') +\n ':</td><td class=\"' + CLS.VALUE + '\" title=\"' + location + '\">'\n + location + '</td></tr>' + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Error':\n parent.notify(events.actionFailure, {});\n options.dialogName = 'Error';\n if (e.error.code === '401') {\n options.header = '<span class=\"e-fe-icon e-fe-access-error\"></span><div class=\"e-fe-access-header\">' +\n getLocaleText(parent, 'Access-Denied') + '</div>';\n }\n else {\n options.header = getLocaleText(parent, 'Error');\n }\n options.content = '<div class=\"' + CLS.ERROR_CONTENT + '\">' + e.error.message + '</div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dialogName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction keydownAction(parent, dialogName, args) {\n var btnElement = selectAll('.e-btn', parent.dialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.dialogObj, args, dialogName);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dlgName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction beforeExtOpen(parent, dlgName, args) {\n var btnElement = selectAll('.e-btn', parent.extDialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.extDialogObj, args, dlgName);\n}\n/**\n *\n * @param {HTMLInputElement[]} btnElement - specifies the button element.\n * @returns {void}\n * @private\n */\nfunction preventKeydown(btnElement) {\n var _loop_1 = function (btnCount) {\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {SelectedEventArgs} data - specifies the data.\n * @returns {HTMLElement} - returns the HTML element.\n * @private\n */\nfunction getFilesName(data) {\n var parent = createElement('div', { id: 'uploadDialog' });\n var ulElement = createElement('ul');\n var filesData = data.isModified ? data.modifiedFilesData : data.filesData;\n for (var fileCount = 0; fileCount < filesData.length; fileCount++) {\n var liElement = createElement('li', { className: 'dialogFiles' });\n liElement.innerHTML = filesData[fileCount].name;\n ulElement.appendChild(liElement);\n }\n parent.appendChild(ulElement);\n var errorTag = createElement('div', { className: 'e-fe-error' });\n parent.appendChild(errorTag);\n return parent;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {DialogOptions} options - specifies the dialog options.\n * @returns {void}\n * @private\n */\nfunction changeOptions(parent, options) {\n parent.dialogObj.header = options.header;\n parent.dialogObj.content = options.content;\n parent.dialogObj.buttons = options.buttons;\n parent.dialogObj.enableRtl = parent.enableRtl;\n parent.dialogObj.open = options.open;\n parent.dialogObj.close = options.close;\n parent.dialogObj.beforeOpen = keydownAction.bind(this, parent, options.dialogName);\n parent.dialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n };\n parent.dialogObj.dataBind();\n parent.dialogObj.show();\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onSubmit(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n createFolder(parent, ele.value);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReSubmit(parent) {\n var ele = select('#rename', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n var text = ele.value;\n var oIndex = parent.currentItemText.lastIndexOf('.');\n if (parent.isFile && !parent.showFileExtension) {\n var extn = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n text += extn;\n }\n parent.renameText = text;\n if (parent.currentItemText === text) {\n parent.dialogObj.hide();\n return;\n }\n var newPath = (parent.activeModule === 'navigationpane') ? getParentPath(parent.path) : parent.path;\n parent.renamedId = getValue('id', parent.itemData[0]);\n if (parent.isFile) {\n var oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n var nIndex = text.lastIndexOf('.');\n var newExtension = (nIndex === -1) ? '' : text.substr(nIndex);\n if (parent.showFileExtension && oldExtension !== newExtension) {\n createExtDialog(parent, 'Extension', null, newPath);\n }\n else {\n rename(parent, newPath, text);\n }\n }\n else {\n rename(parent, newPath, text);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onDeleteSubmit(parent) {\n parent.dialogObj.hide();\n parent.notify(events.deleteInit, {});\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onValidate(parent, ele) {\n if (/[/\\\\|*?\"<>:]/.test(ele.value)) {\n addInvalid(parent, ele);\n }\n else if (ele.value === '') {\n ele.parentElement.nextElementSibling.innerHTML = getLocaleText(parent, 'Validation-Empty');\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = '';\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onSubmitValidate(parent, ele) {\n onValidate(parent, ele);\n var len = ele.value.length - 1;\n if (ele.value !== '' && ((ele.value.lastIndexOf('.') === len) || (ele.value.lastIndexOf(' ') === len)) &&\n (parent.showFileExtension || (parent.currentItemText.lastIndexOf('.') === -1))) {\n addInvalid(parent, ele);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction addInvalid(parent, ele) {\n var error = getLocaleText(parent, 'Validation-Invalid').replace('{0}', '\"' + ele.value + '\"');\n if (parent.enableHtmlSanitizer) {\n ele.parentElement.nextElementSibling.textContent = error;\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n}\n/**\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {number} - returns the key code.\n * @private\n */\nfunction getKeyCode(e) {\n var code;\n if (e.keyCode) {\n code = e.keyCode;\n }\n else if (e.which) {\n code = e.which;\n }\n else {\n code = e.charCode;\n }\n return code;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} header - specifies the header element.\n * @param {string} imageUrl - specifies the image URL.\n * @returns {void}\n * @private\n */\nexport function createImageDialog(parent, header, imageUrl) {\n var content = createElement('div', { className: 'e-image-wrap' });\n var image = createElement('img', { className: 'e-image', attrs: { src: imageUrl, alt: header } });\n content.appendChild(image);\n if (isNOU(parent.viewerObj)) {\n parent.viewerObj = new Dialog({\n header: header,\n content: content,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n isModal: true,\n width: '350px',\n height: '350px',\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: parent.locale,\n enableResize: true,\n allowDragging: true,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n position: { X: 'center', Y: 'center' },\n enableRtl: parent.enableRtl,\n open: openImage.bind(this, parent),\n close: function () { triggerPopupClose(parent, parent.viewerObj, 'Image Preview'); },\n beforeOpen: function (args) {\n triggerPopupBeforeOpen(parent, parent.viewerObj, args, 'Image Preview');\n },\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.viewerObj, args, 'Image Preview');\n },\n resizing: updateImage.bind(this, parent),\n resizeStop: updateImage.bind(this, parent)\n });\n parent.viewerObj.isStringTemplate = true;\n parent.viewerObj.appendTo('#' + parent.element.id + CLS.IMG_DIALOG_ID);\n }\n else {\n parent.viewerObj.refresh();\n parent.viewerObj.header = header;\n parent.viewerObj.content = content;\n parent.viewerObj.enableRtl = parent.enableRtl;\n parent.viewerObj.dataBind();\n parent.viewerObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction openImage(parent) {\n setTimeout(function () {\n if (parent.viewerObj) {\n parent.viewerObj.element.focus();\n }\n });\n updateImage(parent);\n triggerPopupOpen(parent, parent.viewerObj, 'Image Preview');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction updateImage(parent) {\n var content = select('.e-dlg-content', parent.viewerObj.element);\n var imgWrap = select('.e-image-wrap', parent.viewerObj.element);\n var cssObj = window.getComputedStyle(content, null);\n var paddingWidth = cssObj ? (2 * parseFloat(cssObj.paddingRight)) : 36;\n var paddingHeight = cssObj ? (2 * parseFloat(cssObj.paddingBottom)) : 20;\n imgWrap.style.width = (content.offsetWidth - paddingWidth) + 'px';\n imgWrap.style.height = (content.offsetHeight - paddingHeight) + 'px';\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar AjaxSettings = /** @class */ (function (_super) {\n __extends(AjaxSettings, _super);\n function AjaxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"downloadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"getImageUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"uploadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"url\", void 0);\n return AjaxSettings;\n}(ChildProperty));\nexport { AjaxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var toolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(toolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Search settings of the File Manager.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], SearchSettings.prototype, \"placeholder\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the columns in the details view of the file manager.\n */\nexport var columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120,\n template: '<span class=\"e-fe-text\">${name}</span>', customAttributes: { class: 'e-fe-grid-name' }\n },\n {\n field: '_fm_modified', headerText: 'DateModified', type: 'dateTime',\n format: 'MMMM dd, yyyy HH:mm', minWidth: 120, width: '190'\n },\n {\n field: 'size', headerText: 'Size', minWidth: 90, width: '110', template: '<span class=\"e-fe-size\">${size}</span>'\n }\n];\n/**\n * Specifies the grid settings of the File Manager.\n */\nvar DetailsViewSettings = /** @class */ (function (_super) {\n __extends(DetailsViewSettings, _super);\n function DetailsViewSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n __decorate([\n Property(columnArray)\n ], DetailsViewSettings.prototype, \"columns\", void 0);\n return DetailsViewSettings;\n}(ChildProperty));\nexport { DetailsViewSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nexport var folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nexport var layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nvar ContextMenuSettings = /** @class */ (function (_super) {\n __extends(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(fileItems)\n ], ContextMenuSettings.prototype, \"file\", void 0);\n __decorate([\n Property(folderItems)\n ], ContextMenuSettings.prototype, \"folder\", void 0);\n __decorate([\n Property(layoutItems)\n ], ContextMenuSettings.prototype, \"layout\", void 0);\n __decorate([\n Property(true)\n ], ContextMenuSettings.prototype, \"visible\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\nexport { ContextMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the navigationpane settings of the File Manager.\n */\nvar NavigationPaneSettings = /** @class */ (function (_super) {\n __extends(NavigationPaneSettings, _super);\n function NavigationPaneSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('650px')\n ], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('240px')\n ], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(true)\n ], NavigationPaneSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], NavigationPaneSettings.prototype, \"sortOrder\", void 0);\n return NavigationPaneSettings;\n}(ChildProperty));\nexport { NavigationPaneSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar UploadSettings = /** @class */ (function (_super) {\n __extends(UploadSettings, _super);\n function UploadSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], UploadSettings.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(true)\n ], UploadSettings.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"autoClose\", void 0);\n __decorate([\n Property(0)\n ], UploadSettings.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], UploadSettings.prototype, \"maxFileSize\", void 0);\n return UploadSettings;\n}(ChildProperty));\nexport { UploadSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Interface for a class Column\n */\n/* istanbul ignore next */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"headerText\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"minWidth\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('Left')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTextAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customAttributes\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"hideAtMedia\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customFormat\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var TOOLBAR_ID = '_toolbar';\n/** @hidden */\nexport var LAYOUT_ID = '_layout';\n/** @hidden */\nexport var NAVIGATION_ID = '_navigation';\n/** @hidden */\nexport var TREE_ID = '_tree';\n/** @hidden */\nexport var GRID_ID = '_grid';\n/** @hidden */\nexport var LARGEICON_ID = '_largeicons';\n/** @hidden */\nexport var DIALOG_ID = '_dialog';\n/** @hidden */\nexport var ALT_DIALOG_ID = '_alt_dialog';\n/** @hidden */\nexport var IMG_DIALOG_ID = '_img_dialog';\n/** @hidden */\nexport var EXTN_DIALOG_ID = '_extn_dialog';\n/** @hidden */\nexport var UPLOAD_DIALOG_ID = '_upload_dialog';\n/** @hidden */\nexport var RETRY_DIALOG_ID = '_retry_dialog';\n/** @hidden */\nexport var CONTEXT_MENU_ID = '_contextmenu';\n/** @hidden */\nexport var SORTBY_ID = '_sortby';\n/** @hidden */\nexport var VIEW_ID = '_view';\n/** @hidden */\nexport var SPLITTER_ID = '_splitter';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var BREADCRUMBBAR_ID = '_breadcrumbbar';\n/** @hidden */\nexport var UPLOAD_ID = '_upload';\n/** @hidden */\nexport var RETRY_ID = '_retry';\n/** @hidden */\nexport var SEARCH_ID = '_search';\n/**\n * Specifies the File Manager internal class names\n */\n/** @hidden */\nexport var ROOT = 'e-filemanager';\n/** @hidden */\nexport var CONTROL = 'e-control';\n/** @hidden */\nexport var CHECK_SELECT = 'e-fe-cb-select';\n/** @hidden */\nexport var ROOT_POPUP = 'e-fe-popup';\n/** @hidden */\nexport var MOBILE = 'e-fe-mobile';\n/** @hidden */\nexport var MOB_POPUP = 'e-fe-popup e-fe-mobile';\n/** @hidden */\nexport var MULTI_SELECT = 'e-fe-m-select';\n/** @hidden */\nexport var FILTER = 'e-fe-m-filter';\n/** @hidden */\nexport var LAYOUT = 'e-layout';\n/** @hidden */\nexport var NAVIGATION = 'e-navigation';\n/** @hidden */\nexport var LAYOUT_CONTENT = 'e-layout-content';\n/** @hidden */\nexport var LARGE_ICONS = 'e-large-icons';\n/** @hidden */\nexport var TB_ITEM = 'e-toolbar-item';\n/** @hidden */\nexport var LIST_ITEM = 'e-list-item';\n/** @hidden */\nexport var LIST_TEXT = 'e-list-text';\n/** @hidden */\nexport var LIST_PARENT = 'e-list-parent';\n/** @hidden */\nexport var TB_OPTION_TICK = 'e-icons e-fe-tick';\n/** @hidden */\nexport var TB_OPTION_DOT = 'e-icons e-fe-dot';\n/** @hidden */\nexport var BLUR = 'e-blur';\n/** @hidden */\nexport var ACTIVE = 'e-active';\n/** @hidden */\nexport var HOVER = 'e-hover';\n/** @hidden */\nexport var FOCUS = 'e-focus';\n/** @hidden */\nexport var FOCUSED = 'e-focused';\n/** @hidden */\nexport var CHECK = 'e-check';\n/** @hidden */\nexport var FRAME = 'e-frame';\n/** @hidden */\nexport var CB_WRAP = 'e-checkbox-wrapper';\n/** @hidden */\nexport var ROW = 'e-row';\n/** @hidden */\nexport var ROWCELL = 'e-rowcell';\n/** @hidden */\nexport var EMPTY = 'e-empty';\n/** @hidden */\nexport var EMPTY_CONTENT = 'e-empty-content';\n/** @hidden */\nexport var EMPTY_INNER_CONTENT = 'e-empty-inner-content';\n/** @hidden */\nexport var CLONE = 'e-fe-clone';\n/** @hidden */\nexport var DROP_FOLDER = 'e-fe-drop-folder';\n/** @hidden */\nexport var DROP_FILE = 'e-fe-drop-file';\n/** @hidden */\nexport var FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var ICON_IMAGE = 'e-fe-image';\n/** @hidden */\nexport var ICON_MUSIC = 'e-fe-music';\n/** @hidden */\nexport var ICON_VIDEO = 'e-fe-video';\n/** @hidden */\nexport var LARGE_ICON = 'e-large-icon';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER = 'e-empty-icon e-fe-folder';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER_TWO = 'e-empty-icon.e-fe-folder';\n/** @hidden */\nexport var LARGE_ICON_FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var SELECTED_ITEMS = 'e-items';\n/** @hidden */\nexport var TEXT_CONTENT = 'e-text-content';\n/** @hidden */\nexport var GRID_HEADER = 'e-gridheader';\n/** @hidden */\nexport var TEMPLATE_CELL = 'e-templatecell';\n/** @hidden */\nexport var TREE_VIEW = 'e-treeview';\n/** @hidden */\nexport var MENU_ITEM = 'e-menu-item';\n/** @hidden */\nexport var MENU_ICON = 'e-menu-icon';\n/** @hidden */\nexport var SUBMENU_ICON = 'e-caret';\n/** @hidden */\nexport var GRID_VIEW = 'e-content';\n/** @hidden */\nexport var GRID_CONTENT = 'e-gridcontent';\n/** @hidden */\nexport var ICON_VIEW = 'e-list-parent';\n/** @hidden */\nexport var ICON_OPEN = 'e-icons e-fe-open';\n/** @hidden */\nexport var ICON_UPLOAD = 'e-icons e-fe-upload';\n/** @hidden */\nexport var ICON_CUT = 'e-icons e-fe-cut';\n/** @hidden */\nexport var ICON_COPY = 'e-icons e-fe-copy';\n/** @hidden */\nexport var ICON_PASTE = 'e-icons e-fe-paste';\n/** @hidden */\nexport var ICON_DELETE = 'e-icons e-fe-delete';\n/** @hidden */\nexport var ICON_RENAME = 'e-icons e-fe-rename';\n/** @hidden */\nexport var ICON_NEWFOLDER = 'e-icons e-fe-newfolder';\n/** @hidden */\nexport var ICON_DETAILS = 'e-icons e-fe-details';\n/** @hidden */\nexport var ICON_SHORTBY = 'e-icons e-fe-sort';\n/** @hidden */\nexport var ICON_REFRESH = 'e-icons e-fe-refresh';\n/** @hidden */\nexport var ICON_SELECTALL = 'e-icons e-fe-select';\n/** @hidden */\nexport var ICON_DOWNLOAD = 'e-icons e-fe-download';\n/** @hidden */\nexport var ICON_OPTIONS = 'e-icons e-fe-options';\n/** @hidden */\nexport var ICON_GRID = 'e-icons e-fe-grid';\n/** @hidden */\nexport var ICON_LARGE = 'e-icons e-fe-large';\n/** @hidden */\nexport var ICON_BREADCRUMB = 'e-icons e-fe-breadcrumb';\n/** @hidden */\nexport var ICON_CLEAR = 'e-icons e-fe-clear';\n/** @hidden */\nexport var ICON_DROP_IN = 'e-icons e-fe-drop-in';\n/** @hidden */\nexport var ICON_DROP_OUT = 'e-icons e-fe-drop-out';\n/** @hidden */\nexport var ICON_NO_DROP = 'e-icons e-fe-no-drop';\n/** @hidden */\nexport var ICONS = 'e-icons';\n/** @hidden */\nexport var DETAILS_LABEL = 'e-detailslabel';\n/** @hidden */\nexport var ERROR_CONTENT = 'e-fe-errorcontent';\n/** @hidden */\nexport var STATUS = 'e-status';\n/** @hidden */\nexport var BREADCRUMBS = 'e-address';\n/** @hidden */\nexport var RTL = 'e-rtl';\n/** @hidden */\nexport var DISPLAY_NONE = 'e-display-none';\n/** @hidden */\nexport var COLLAPSED = 'e-node-collapsed';\n/** @hidden */\nexport var FULLROW = 'e-fullrow';\n/** @hidden */\nexport var ICON_COLLAPSIBLE = 'e-icon-collapsible';\n/** @hidden */\nexport var SPLIT_BAR = 'e-split-bar';\n/** @hidden */\nexport var HEADER_CHECK = 'e-headercheck';\n/** @hidden */\nexport var OVERLAY = 'e-fe-overlay';\n/** @hidden */\nexport var VALUE = 'e-fe-value';\n","/**\n * Specifies the File Manager internal variables\n */\n/** @hidden */\nexport var isFile = 'isFile';\n/**\n * Specifies the File Manager internal events\n */\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var finalizeEnd = 'finalize-end';\n/** @hidden */\nexport var createEnd = 'create-end';\n/** @hidden */\nexport var filterEnd = 'filter-end';\n/** @hidden */\nexport var beforeDelete = 'before-delete';\n/** @hidden */\nexport var pathDrag = 'path-drag';\n/** @hidden */\nexport var deleteInit = 'delete-init';\n/** @hidden */\nexport var deleteEnd = 'delete-end';\n/** @hidden */\nexport var refreshEnd = 'refresh-end';\n/** @hidden */\nexport var resizeEnd = 'resize-end';\n/** @hidden */\nexport var splitterResize = 'splitter-resize';\n/** @hidden */\nexport var pathChanged = 'path-changed';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var beforeRequest = 'before-request';\n/** @hidden */\nexport var upload = 'upload';\n/** @hidden */\nexport var skipUpload = 'skip-upload';\n/** @hidden */\nexport var afterRequest = 'after-request';\n/** @hidden */\nexport var download = 'download';\n/** @hidden */\nexport var layoutRefresh = 'layout-refresh';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var search = 'search';\n/** @hidden */\nexport var openInit = 'open-init';\n/** @hidden */\nexport var openEnd = 'open-end';\n/** @hidden */\nexport var selectionChanged = 'selection-changed';\n/** @hidden */\nexport var selectAllInit = 'select-all-init';\n/** @hidden */\nexport var clearAllInit = 'clear-all-init';\n/** @hidden */\nexport var clearPathInit = 'clear-path-init';\n/** @hidden */\nexport var layoutChange = 'layout-change';\n/** @hidden */\nexport var sortByChange = 'sort-by-change';\n/** @hidden */\nexport var nodeExpand = 'node-expand';\n/** @hidden */\nexport var detailsInit = 'details-init';\n/** @hidden */\nexport var menuItemData = 'menu-item-data';\n/** @hidden */\nexport var renameInit = 'rename-init';\n/** @hidden */\nexport var renameEndParent = 'rename-end-parent';\n/** @hidden */\nexport var renameEnd = 'rename-end';\n/** @hidden */\nexport var showPaste = 'show-paste';\n/** @hidden */\nexport var hidePaste = 'hide-paste';\n/** @hidden */\nexport var selectedData = 'selected-data';\n/** @hidden */\nexport var cutCopyInit = 'cut-copy-init';\n/** @hidden */\nexport var pasteInit = 'paste-init';\n/** @hidden */\nexport var pasteEnd = 'paste-end';\n/** @hidden */\nexport var cutEnd = 'cut-end';\n/** @hidden */\nexport var hideLayout = 'hide-layout';\n/** @hidden */\nexport var updateTreeSelection = 'update-tree-selection';\n/** @hidden */\nexport var treeSelect = 'select-node';\n/** @hidden */\nexport var sortColumn = 'sort-column';\n/** @hidden */\nexport var pathColumn = 'path-column';\n/** @hidden */\nexport var searchTextChange = 'search-change';\n/** @hidden */\nexport var beforeDownload = 'before-download';\n/** @hidden */\nexport var downloadInit = 'download-init';\n/** @hidden */\nexport var dropInit = 'drop-init';\n/** @hidden */\nexport var dragEnd = 'drag-end';\n/** @hidden */\nexport var dropPath = 'drop-path';\n/** @hidden */\nexport var dragHelper = 'drag-helper';\n/** @hidden */\nexport var dragging = 'dragging';\n/** @hidden */\nexport var updateSelectionData = 'update-selection-data';\n/** @hidden */\nexport var methodCall = 'method-call';\n/** @hidden */\nexport var permissionRead = 'read';\n/** @hidden */\nexport var permissionEdit = 'write';\n/** @hidden */\nexport var permissionEditContents = 'writeContents';\n/** @hidden */\nexport var permissionCopy = 'copy';\n/** @hidden */\nexport var permissionUpload = 'upload';\n/** @hidden */\nexport var permissionDownload = 'download';\n","import { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, select, selectAll, EventHandler, KeyboardEvents, closest, Draggable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, addClass, removeClass, Touch, isVisible } from '@syncfusion/ej2-base';\nimport { getValue, setValue, remove } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { read, GetDetails, Delete } from '../common/operations';\nimport { doRename, getAccessClass, getPathObject, getFullPath, getDirectoryPath, rename, doDownload, getItemName } from '../common/index';\nimport { removeBlur, cutFiles, copyFiles, addBlur, openSearchFolder, removeActive, pasteHandler } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule } from '../common/index';\nimport { updateRenamingData, doDeleteFiles, doDownloadFiles } from '../common/index';\nimport { openAction, fileType, refresh, getImageUrl, getSortedData, createDeniedDialog, updateLayout } from '../common/utility';\nimport { createEmptyElement, hasReadAccess, hasEditAccess } from '../common/utility';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\n/**\n * LargeIconsView module\n */\nvar LargeIconsView = /** @class */ (function () {\n /**\n * Constructor for the LargeIcons module.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function LargeIconsView(parent) {\n this.isInteraction = true;\n this.uploadOperation = false;\n this.count = 0;\n this.isRendered = true;\n this.tapCount = 0;\n this.isPasteOperation = false;\n this.isInteracted = true;\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n addClass([this.element], CLS.LARGE_ICONS);\n this.addEventListener();\n this.keyConfigs = {\n end: 'end',\n home: 'home',\n tab: 'tab',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n ctrlUp: 'ctrl+uparrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftLeft: 'shift+leftarrow',\n shiftRight: 'shift+rightarrow',\n shiftUp: 'shift+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csLeft: 'ctrl+shift+leftarrow',\n csRight: 'ctrl+shift+rightarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: 'ctrl+x',\n ctrlC: 'ctrl+c',\n ctrlV: 'ctrl+v',\n f2: 'f2',\n shiftdel: 'shift+delete',\n back: 'backspace',\n ctrlD: 'ctrl+d'\n };\n }\n LargeIconsView.prototype.render = function (args) {\n this.parent.visitedItem = null;\n this.startItem = null;\n showSpinner(this.parent.element);\n if (this.parent.view === 'LargeIcons') {\n this.resetMultiSelect();\n this.element.setAttribute('tabindex', '0');\n if (this.listObj) {\n this.unWireEvents();\n this.removeEventListener();\n }\n this.parent.notify(events.hideLayout, {});\n var iconsView = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n var ul = select('ul', iconsView);\n if (ul) {\n remove(ul);\n }\n this.listObj = {\n ariaAttributes: {\n itemRole: 'option', listRole: 'listbox', itemText: '',\n groupItemRole: 'group', wrapperRole: ''\n },\n showIcon: true,\n fields: { text: 'name', iconCss: '_fm_icon', imageUrl: '_fm_imageUrl', htmlAttributes: '_fm_htmlAttr' },\n sortOrder: this.parent.sortOrder,\n itemCreated: this.onItemCreated.bind(this),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer\n };\n this.items = [];\n this.items = this.renderList(args);\n this.items = getSortedData(this.parent, this.items);\n // eslint-disable-next-line\n this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.listElements));\n this.element.appendChild(this.listElements);\n this.preventImgDrag();\n this.createDragObj();\n iconsView.classList.remove(CLS.DISPLAY_NONE);\n if (this.itemList.length === 0) {\n var emptyList = this.element.querySelector('.' + CLS.LIST_PARENT);\n this.element.removeChild(emptyList);\n createEmptyElement(this.parent, this.element, args);\n }\n else if (this.itemList.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n if (this.isPasteOperation === true) {\n this.selectItems(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n /* istanbul ignore next */\n if (this.uploadOperation === true) {\n this.selectItems(this.parent.uploadItem);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.count++;\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.parent.activeModule = 'largeiconsview';\n }\n for (var i = 0; i < activeEle.length; i++) {\n activeEle[i].setAttribute('aria-selected', 'true');\n }\n this.adjustHeight();\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\n };\n LargeIconsView.prototype.preventImgDrag = function () {\n var i = 0;\n while (i < this.itemList.length) {\n if (this.itemList[i].querySelector('img')) {\n /* istanbul ignore next */\n this.itemList[i].ondragstart = function () { return false; };\n }\n i++;\n }\n };\n LargeIconsView.prototype.createDragObj = function () {\n var _this = this;\n if (!this.parent.isMobile && this.listObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.listElements, {\n enableTailMode: true,\n distance: 5,\n enableAutoScroll: true,\n dragTarget: '.' + CLS.LARGE_ICON,\n helper: this.dragHelper.bind(this),\n cursorAt: this.parent.dragCursorPosition,\n dragArea: this.parent.element,\n dragStop: dragStopHandler.bind(this, this.parent),\n drag: draggingHandler.bind(this, this.parent),\n clone: true,\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n }\n });\n }\n else if (this.dragObj && !this.parent.allowDragAndDrop) {\n this.dragObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = closest(dragTarget, '.e-list-item');\n if (!dragLi) {\n return null;\n }\n if (dragLi && !dragLi.classList.contains('e-active')) {\n this.setFocus(dragLi);\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n for (var i = 0; i < activeEle.length; i++) {\n // eslint-disable-next-line\n this.parent.dragData.push(this.getItemObject(activeEle[i]));\n this.parent.activeElements.push(activeEle[i]);\n }\n getModule(this.parent, dragLi);\n this.parent.dragPath = this.parent.path;\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n LargeIconsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, '.e-list-item');\n // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n // eslint-disable-next-line\n var info = this.getItemObject(dropLi);\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n else {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n LargeIconsView.prototype.getModuleName = function () {\n return 'largeiconsview';\n };\n LargeIconsView.prototype.adjustHeight = function () {\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n this.element.style.height = (pane.offsetHeight - bar.offsetHeight) + 'px';\n };\n LargeIconsView.prototype.onItemCreated = function (args) {\n args.item.removeAttribute('aria-level');\n if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {\n var textEle = args.item.querySelector('.' + CLS.LIST_TEXT);\n var txt = getValue('name', args.curData);\n var type = getValue('type', args.curData);\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\n this.renderCheckbox(args);\n var eventArgs = {\n element: args.item,\n fileDetails: args.curData,\n module: 'LargeIconsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n LargeIconsView.prototype.renderCheckbox = function (args) {\n if (!this.parent.allowMultiSelection) {\n return;\n }\n var checkElement = createCheckBox(createElement, false, {\n checked: false,\n cssClass: 'e-small'\n });\n checkElement.setAttribute('role', 'checkbox');\n checkElement.setAttribute('aria-checked', 'false');\n args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);\n };\n LargeIconsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.destroy();\n this.render(args);\n /* istanbul ignore next */\n if (getValue('name', args) === 'layout-change' && this.parent.fileAction === 'move' &&\n this.parent.isCut && this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n var indexes = this.getIndexes(this.parent.selectedNodes);\n var length_1 = 0;\n while (length_1 < indexes.length) {\n addBlur(this.itemList[indexes[length_1]]);\n length_1++;\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.element.focus();\n }\n this.checkItem();\n this.parent.isLayoutChange = false;\n }\n else {\n this.element.setAttribute('tabindex', '-1');\n }\n };\n LargeIconsView.prototype.checkItem = function () {\n var checkEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (checkEle) {\n var checkLength = 0;\n while (checkLength < checkEle.length) {\n this.checkState(checkEle[checkLength], true);\n checkLength++;\n }\n }\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\n // eslint-disable-next-line\n var items = JSON.parse(JSON.stringify(args.files));\n while (i < items.length) {\n var icon = fileType(items[i]);\n var name_1 = getValue('name', items[i]);\n var selected = getItemName(this.parent, items[i]);\n var className = ((this.parent.selectedItems &&\n this.parent.selectedItems.indexOf(selected) !== -1)) ?\n CLS.LARGE_ICON + ' e-active' : CLS.LARGE_ICON;\n if (!hasEditAccess(items[i])) {\n className += ' ' + getAccessClass(items[i]);\n }\n if (icon === CLS.ICON_IMAGE && this.parent.showThumbnail && hasReadAccess(items[i])) {\n var imgUrl = getImageUrl(this.parent, items[i]);\n setValue('_fm_imageUrl', imgUrl, items[i]);\n setValue('_fm_imageAttr', { alt: name_1 }, items[i]);\n }\n else {\n setValue('_fm_icon', icon, items[i]);\n }\n setValue('_fm_htmlAttr', { class: className, title: name_1 }, items[i]);\n i++;\n }\n return items;\n };\n LargeIconsView.prototype.onFinalizeEnd = function (args) {\n this.render(args);\n };\n LargeIconsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.clearSelect();\n this.selectItems([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n this.parent.largeiconsviewModule.element.focus();\n };\n LargeIconsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n this.updateSelectedData();\n }\n };\n LargeIconsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.clearSelect();\n };\n LargeIconsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n };\n LargeIconsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'largeiconsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n LargeIconsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n /* istanbul ignore next */\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '') {\n this.parent.searchedItems = [];\n }\n if (this.parent.view === 'LargeIcons') {\n removeBlur(this.parent);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onLayoutChange(args);\n if (this.parent.renamedItem) {\n this.clearSelect();\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n }\n };\n LargeIconsView.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'largeiconsview') {\n this.doOpenAction(args.target);\n }\n };\n LargeIconsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'LargeIcons' && this.element) {\n this.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n LargeIconsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.startItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n var eveArgs = { ctrlKey: true, shiftKey: true };\n this.doSelection(lastItem, eveArgs);\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.clearSelection();\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n LargeIconsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onSearch = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n this.parent.searchedItems = args.files;\n this.onLayoutChange(args);\n }\n };\n LargeIconsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.adjustHeight();\n };\n LargeIconsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.updateSelectedData();\n };\n LargeIconsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'LargeIcons' && !isNOU(this.listObj) &&\n this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered\n && this.parent.sortBy === 'filterPath') {\n this.parent.sortBy = 'name';\n this.parent.notify(events.sortByChange, {});\n }\n };\n LargeIconsView.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.search, this.onSearch);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.splitterResize, this.splitterResizeHandler);\n this.parent.off(events.resizeEnd, this.resizeHandler);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n this.parent.off(events.filterEnd, this.onPathChanged);\n };\n LargeIconsView.prototype.addEventListener = function () {\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.search, this.onSearch, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.splitterResize, this.splitterResizeHandler, this);\n this.parent.on(events.resizeEnd, this.resizeHandler, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n };\n LargeIconsView.prototype.onActionFailure = function () { this.isInteraction = true; this.isInteracted = true; };\n // eslint-disable-next-line\n LargeIconsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var ele = closest(args.target, 'li');\n this.parent.itemData = [this.getItemObject(ele)];\n }\n };\n LargeIconsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.updateSelectedData();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n LargeIconsView.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath === '') ? [getPathObject(this.parent)] :\n [this.getItemObject(select('.e-active', this.element))];\n }\n };\n LargeIconsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeRecords = [];\n this.parent.activeElements = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.activeElements.push(activeEle[i]);\n this.parent.activeRecords.push(this.getItemObject(activeEle[i]));\n }\n }\n };\n LargeIconsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {\n this.onPathChanged(args);\n }\n }\n };\n LargeIconsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n LargeIconsView.prototype.onPropertyChanged = function (e) {\n var currentSelected;\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'selectedItems':\n this.isInteraction = false;\n this.isInteracted = false;\n currentSelected = isNOU(this.parent.selectedItems) ? [] : this.parent.selectedItems.slice(0);\n currentSelected = this.parent.allowMultiSelection ? currentSelected :\n currentSelected.slice(currentSelected.length - 1);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onClearAllInit();\n if (currentSelected.length) {\n this.selectItems(currentSelected);\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n this.isInteraction = true;\n this.isInteracted = true;\n break;\n case 'showThumbnail':\n refresh(this.parent);\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (this.parent.view !== 'LargeIcons') {\n break;\n }\n refresh(this.parent);\n break;\n case 'view':\n updateLayout(this.parent, 'LargeIcons');\n break;\n }\n }\n };\n LargeIconsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.listObj) {\n this.unWireEvents();\n }\n };\n LargeIconsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n };\n LargeIconsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onMouseOver = function (e) {\n var targetEle = closest(e.target, '.e-list-item');\n removeBlur(this.parent, 'hover');\n if (targetEle !== null) {\n targetEle.classList.add(CLS.HOVER);\n }\n };\n LargeIconsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n eve.originalEvent.preventDefault();\n if (proxy_1.parent.isDevice) {\n proxy_1.tapCount = eve.tapCount;\n proxy_1.tapEvent = eve;\n setTimeout(function () {\n if (proxy_1.tapCount > 0) {\n proxy_1.doTapAction(proxy_1.tapEvent);\n }\n proxy_1.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n proxy_1.dblClickHandler(eve);\n }\n else {\n proxy_1.clickHandler(eve);\n }\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n proxy_1.multiSelect = proxy_1.parent.allowMultiSelection ? true : false;\n if (proxy_1.parent.allowMultiSelection) {\n addClass([proxy_1.parent.element], CLS.MULTI_SELECT);\n }\n proxy_1.clickHandler(e);\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.doTapAction = function (eve) {\n var target = eve.originalEvent.target;\n var item = closest(target, '.' + CLS.LIST_ITEM);\n if (this.multiSelect || target.classList.contains(CLS.LIST_PARENT) || isNOU(item)) {\n this.clickHandler(eve);\n }\n else {\n this.parent.isFile = false;\n this.updateType(item);\n if (!this.parent.isFile) {\n this.dblClickHandler(eve);\n }\n else if (eve.tapCount === 2) {\n this.clickHandler(eve);\n this.dblClickHandler(eve);\n }\n else {\n this.clickHandler(eve);\n }\n }\n };\n LargeIconsView.prototype.clickHandler = function (e) {\n var target = e.originalEvent.target;\n removeBlur(this.parent, 'hover');\n this.doSelection(target, e.originalEvent);\n this.parent.activeModule = 'largeiconsview';\n };\n /**\n *\n * @param {Element} target - specifies the target element.\n * @param {TouchEventArgs | MouseEventArgs | KeyboardEventArgs} e - specifies event arguements.\n * @returns {void}\n * @hidden\n */\n LargeIconsView.prototype.doSelection = function (target, e) {\n var item = closest(target, '.' + CLS.LIST_ITEM);\n var cList = target.classList;\n this.parent.isFile = false;\n var action = 'select';\n if (e.which === 3 && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {\n this.updateType(item);\n return;\n }\n else if (!isNOU(item)) {\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)\n && (e.ctrlKey || target.classList.contains(CLS.CHECK))) {\n action = 'unselect';\n }\n var fileSelectionArgs = this.triggerSelection(action, item);\n if (fileSelectionArgs.cancel !== true) {\n if ((!this.parent.allowMultiSelection || (!this.multiSelect && (e && !e.ctrlKey)))\n && !cList.contains(CLS.FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey) {\n if (!(e && e.ctrlKey)) {\n this.clearSelect();\n }\n if (!this.startItem) {\n this.startItem = item;\n }\n var startIndex = this.itemList.indexOf(this.startItem);\n var endIndex = this.itemList.indexOf(item);\n if (startIndex > endIndex) {\n for (var i = startIndex; i >= endIndex; i--) {\n this.addActive(this.itemList[i]);\n }\n }\n else {\n for (var i = startIndex; i <= endIndex; i++) {\n this.addActive(this.itemList[i]);\n }\n }\n this.addFocus(this.itemList[endIndex]);\n }\n else {\n this.startItem = item;\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)) {\n this.removeActive(item);\n }\n else {\n this.addActive(item);\n }\n this.addFocus(item);\n }\n if (this.parent.selectedItems.length === 0) {\n this.resetMultiSelect();\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect(action, item);\n }\n }\n else {\n this.clearSelection();\n }\n if (!isNOU(item)) {\n this.updateType(item);\n }\n };\n LargeIconsView.prototype.dblClickHandler = function (e) {\n this.parent.activeModule = 'largeiconsview';\n var target = e.originalEvent.target;\n this.doOpenAction(target);\n };\n LargeIconsView.prototype.clearSelection = function () {\n this.clearSelect();\n this.resetMultiSelect();\n this.parent.notify(events.selectionChanged, {});\n };\n LargeIconsView.prototype.resetMultiSelect = function () {\n this.multiSelect = false;\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n };\n LargeIconsView.prototype.doOpenAction = function (target) {\n var _this = this;\n if (isNOU(target)) {\n return;\n }\n var item = closest(target, '.' + CLS.LIST_ITEM);\n this.parent.isFile = false;\n if (!isNOU(item)) {\n this.updateType(item);\n // eslint-disable-next-line\n var details_1 = this.getItemObject(item);\n if (!hasReadAccess(details_1)) {\n createDeniedDialog(this.parent, details_1, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: details_1, module: 'LargeIconsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var text = getValue('name', details_1);\n if (!_this.parent.isFile) {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', details_1);\n var newPath = _this.parent.path + (isNOU(id) ? text : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(text);\n _this.parent.pathId.push(getValue('_fm_id', details_1));\n _this.parent.itemData = [details_1];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, details_1);\n }\n _this.parent.isFiltered = false;\n _this.parent.setProperties({ selectedItems: [] }, true);\n }\n else {\n var icon = fileType(details_1);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, details_1);\n createImageDialog(_this.parent, text, imgUrl);\n }\n }\n }\n });\n }\n };\n LargeIconsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n LargeIconsView.prototype.keydownActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'moveDown':\n case 'moveLeft':\n case 'moveRight':\n case 'moveUp':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n LargeIconsView.prototype.keyActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n var fItem = this.getFocusedItem();\n var firstItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n switch (e.action) {\n case 'end':\n this.navigateItem(lastItem);\n break;\n case 'home':\n this.navigateItem(firstItem);\n break;\n case 'tab':\n if (!isNOU(fItem)) {\n this.addFocus(fItem);\n }\n else if (!isNOU(firstItem)) {\n this.addFocus(firstItem);\n }\n break;\n case 'moveDown':\n this.navigateDown(fItem, true);\n break;\n case 'moveLeft':\n this.navigateRight(fItem, false);\n break;\n case 'moveRight':\n this.navigateRight(fItem, true);\n break;\n case 'moveUp':\n this.navigateDown(fItem, false);\n break;\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n this.csEndKey(lastItem, e);\n break;\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n this.csHomeKey(firstItem, e);\n break;\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n this.csDownKey(fItem, e);\n break;\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n this.csLeftKey(fItem, e);\n break;\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n this.csRightKey(fItem, e);\n break;\n case 'ctrlUp':\n case 'shiftUp':\n case 'csUp':\n this.csUpKey(fItem, e);\n break;\n case 'space':\n this.spaceKey(fItem);\n break;\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n if (!isNOU(fItem)) {\n this.doSelection(fItem, e);\n }\n break;\n case 'ctrlA':\n this.ctrlAKey(firstItem, lastItem);\n break;\n case 'enter':\n this.doOpenAction(this.parent.visitedItem ? this.parent.visitedItem : this.getVisitedItem());\n break;\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n }\n };\n LargeIconsView.prototype.doDownload = function () {\n this.updateSelectedData();\n doDownload(this.parent);\n };\n LargeIconsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.updateSelectedData();\n // eslint-disable-next-line\n var data = this.parent.itemData;\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(this.parent, data[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n LargeIconsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n LargeIconsView.prototype.updateRenameData = function () {\n var item = select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n updateRenamingData(this.parent, data);\n };\n LargeIconsView.prototype.getVisitedItem = function () {\n var item = this.parent.selectedItems[this.parent.selectedItems.length - 1];\n var indexes = this.getIndexes([item], this.parent.hasId);\n return this.itemList[indexes[0]];\n };\n LargeIconsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.FOCUS, this.element);\n };\n LargeIconsView.prototype.getActiveItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n };\n LargeIconsView.prototype.getFirstItem = function () {\n return this.itemList[0];\n };\n LargeIconsView.prototype.getLastItem = function () {\n return this.itemList[this.itemList.length - 1];\n };\n LargeIconsView.prototype.navigateItem = function (item) {\n this.setFocus(item);\n };\n LargeIconsView.prototype.navigateDown = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards, this.perRow);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.navigateRight = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.getNextItem = function (li, isTowards, perRow) {\n if (isNOU(li)) {\n return this.getFocusedItem() || this.getActiveItem() || this.getFirstItem();\n }\n var index = this.itemList.indexOf(li);\n var nextItem;\n do {\n if (isTowards) {\n index = perRow ? index + perRow : index + 1;\n }\n else {\n index = perRow ? index - perRow : index - 1;\n }\n nextItem = this.itemList[index];\n if (isNOU(nextItem)) {\n return li;\n }\n } while (!isVisible(nextItem));\n return nextItem;\n };\n LargeIconsView.prototype.setFocus = function (nextItem) {\n if (!isNOU(nextItem)) {\n var fileSelectionArgs = this.triggerSelection('select', nextItem);\n if (fileSelectionArgs.cancel !== true) {\n this.startItem = nextItem;\n this.clearSelect();\n this.addActive(nextItem);\n this.addFocus(nextItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', nextItem);\n }\n }\n };\n LargeIconsView.prototype.spaceKey = function (fItem) {\n if (!isNOU(fItem) && !fItem.classList.contains(CLS.ACTIVE)) {\n var fileSelectionArgs = this.triggerSelection('select', fItem);\n if (fileSelectionArgs.cancel !== true) {\n this.addActive(fItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', fItem);\n }\n }\n };\n LargeIconsView.prototype.ctrlAKey = function (firstItem, lastItem) {\n if (this.parent.allowMultiSelection && !isNOU(firstItem)) {\n this.startItem = firstItem;\n var eveArgs = { ctrlKey: true, shiftKey: true };\n var liParent = this.element.querySelector('.' + CLS.LIST_PARENT);\n var liScrPos = liParent.scrollTop;\n var getCurFocusedItem = this.getFocusedItem();\n this.doSelection(lastItem, eveArgs);\n liParent.scrollTop = liScrPos;\n if (!isNOU(getCurFocusedItem)) {\n this.addFocus(getCurFocusedItem);\n }\n }\n };\n LargeIconsView.prototype.csEndKey = function (lastItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(lastItem);\n }\n else if (!isNOU(lastItem)) {\n if (e.action === 'ctrlEnd') {\n this.addFocus(lastItem);\n }\n else {\n this.doSelection(lastItem, e);\n }\n }\n };\n LargeIconsView.prototype.csHomeKey = function (firstItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(firstItem);\n }\n else if (!isNOU(firstItem)) {\n if (e.action === 'ctrlHome') {\n this.addFocus(firstItem);\n }\n else {\n this.doSelection(firstItem, e);\n }\n }\n };\n LargeIconsView.prototype.csDownKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, true);\n }\n else {\n var dItem = this.getNextItem(fItem, true, this.perRow);\n if (!isNOU(dItem)) {\n if (e.action === 'ctrlDown') {\n this.addFocus(dItem);\n }\n else {\n this.doSelection(dItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csLeftKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, false);\n }\n else {\n var lItem = this.getNextItem(fItem, false);\n if (!isNOU(lItem)) {\n if (e.action === 'ctrlLeft') {\n this.addFocus(lItem);\n }\n else {\n this.doSelection(lItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csRightKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, true);\n }\n else {\n var rItem = this.getNextItem(fItem, true);\n if (!isNOU(rItem)) {\n if (e.action === 'ctrlRight') {\n this.addFocus(rItem);\n }\n else {\n this.doSelection(rItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csUpKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, false);\n }\n else {\n var uItem = this.getNextItem(fItem, false, this.perRow);\n if (!isNOU(uItem)) {\n if (e.action === 'ctrlUp') {\n this.addFocus(uItem);\n }\n else {\n this.doSelection(uItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.addActive = function (nextItem) {\n if (!isNOU(nextItem)) {\n if (!nextItem.classList.contains(CLS.ACTIVE)) {\n this.parent.selectedItems.push(this.getDataName(nextItem));\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n addClass([nextItem], [CLS.ACTIVE]);\n nextItem.setAttribute('aria-selected', 'true');\n this.checkState(nextItem, true);\n }\n this.parent.visitedItem = nextItem;\n }\n };\n LargeIconsView.prototype.removeActive = function (preItem) {\n if (!isNOU(preItem)) {\n removeClass([preItem], [CLS.ACTIVE]);\n if (this.parent.allowMultiSelection) {\n preItem.setAttribute('aria-selected', 'false');\n }\n else {\n preItem.removeAttribute('aria-selected');\n }\n this.checkState(preItem, false);\n var index = this.parent.selectedItems.indexOf(this.getDataName(preItem));\n if (index > -1) {\n this.parent.selectedItems.splice(index, 1);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n this.parent.visitedItem = null;\n }\n };\n LargeIconsView.prototype.getDataName = function (item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n return getItemName(this.parent, data);\n };\n LargeIconsView.prototype.addFocus = function (item) {\n this.element.setAttribute('tabindex', '-1');\n var fItem = this.getFocusedItem();\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS]);\n }\n addClass([item], [CLS.FOCUS]);\n item.setAttribute('tabindex', '0');\n item.focus();\n };\n LargeIconsView.prototype.checkState = function (item, toCheck) {\n if (!this.parent.allowMultiSelection) {\n return;\n }\n var checkEle = select('.' + CLS.FRAME, item);\n if (isNOU(checkEle)) {\n return;\n }\n if (toCheck) {\n if (!checkEle.classList.contains(CLS.CHECK)) {\n addClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'true');\n }\n }\n else {\n if (checkEle.classList.contains(CLS.CHECK)) {\n removeClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'false');\n }\n }\n };\n LargeIconsView.prototype.clearSelect = function () {\n var eles = Array.prototype.slice.call(selectAll('.' + CLS.ACTIVE, this.listElements));\n var fileSelectionArgs;\n if (eles.length !== 0) {\n fileSelectionArgs = this.triggerSelection('unselect', eles[0]);\n if (fileSelectionArgs.cancel !== true) {\n for (var i = 0, len = eles.length; i < len; i++) {\n this.removeActive(eles[i]);\n }\n }\n this.triggerSelect('unselect', eles[0]);\n }\n };\n LargeIconsView.prototype.resizeHandler = function () {\n this.getItemCount();\n if (!isNOU(this.listObj)) {\n this.adjustHeight();\n }\n };\n LargeIconsView.prototype.splitterResizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.getItemCount = function () {\n var perRow = 1;\n if (this.itemList) {\n for (var i = 0, len = this.itemList.length - 1; i < len; i++) {\n if (this.itemList[i].getBoundingClientRect().top === this.itemList[i + 1].getBoundingClientRect().top) {\n perRow++;\n }\n else {\n break;\n }\n }\n }\n this.perRow = perRow;\n };\n LargeIconsView.prototype.triggerSelection = function (action, item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n var eventArgs = {\n action: action, fileDetails: data, isInteracted: this.isInteraction, cancel: false, target: item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n };\n LargeIconsView.prototype.triggerSelect = function (action, item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n this.parent.visitedData = data;\n var eventArgs = { action: action, fileDetails: data, isInteracted: this.isInteracted };\n this.parent.trigger('fileSelect', eventArgs);\n this.isInteracted = true;\n };\n LargeIconsView.prototype.selectItems = function (items) {\n var indexes = this.getIndexes(items, this.parent.hasId);\n for (var j = 0, len = indexes.length; j < len; j++) {\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[indexes[j]], eveArgs);\n }\n };\n LargeIconsView.prototype.getIndexes = function (items, byId) {\n var indexes = [];\n var filter = byId ? 'id' : 'name';\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filter, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n return indexes;\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var newData = new DataManager(this.items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (newData.length > 0) {\n resultData = new DataManager(newData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n var index = this.items.indexOf(resultData[0]);\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[index], eveArgs);\n }\n };\n LargeIconsView.prototype.updateSelectedData = function () {\n // eslint-disable-next-line\n var data = [];\n var items = selectAll('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n for (var i = 0; i < items.length; i++) {\n data[i] = this.getItemObject(items[i]);\n }\n this.parent.itemData = data;\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.onMethodCall = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n var action = getValue('action', args);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', args));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', args));\n break;\n case 'openFile':\n this.openFile(getValue('id', args));\n break;\n case 'renameFile':\n this.isInteraction = false;\n this.isInteracted = false;\n this.renameFile(getValue('id', args), getValue('newName', args));\n break;\n case 'createFolder':\n this.isInteraction = false;\n this.isInteracted = false;\n break;\n case 'clearSelection':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onClearAllInit();\n break;\n case 'selectAll':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onSelectAllInit();\n break;\n }\n };\n LargeIconsView.prototype.getItemsIndex = function (items) {\n var indexes = [];\n var isFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filterName = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !isFilter) {\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filterName, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n }\n else {\n for (var i = 0, len = this.items.length; i < len; i++) {\n var name_2 = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);\n if ((items.indexOf(name_2) !== -1) || (items.indexOf(getValue(filterName, this.items[i])) !== -1)) {\n indexes.push(i);\n }\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n var indexes = this.getItemsIndex(ids);\n if (indexes.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < indexes.length; i++) {\n data[i] = this.items[indexes[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n var index = this.getItemsIndex(ids);\n if (index.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < index.length; i++) {\n data[i] = this.items[index[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n this.doOpenAction(this.itemList[indexes[0]]);\n }\n };\n LargeIconsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n updateRenamingData(this.parent, this.items[indexes[0]]);\n if (isNOU(name)) {\n doRename(this.parent);\n }\n else {\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n rename(this.parent, this.parent.path, name);\n }\n }\n }\n };\n return LargeIconsView;\n}());\nexport { LargeIconsView };\n","import { EventHandler, closest, isNullOrUndefined, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, addClass, removeClass, remove, createElement } from '@syncfusion/ej2-base';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { read } from '../common/operations';\nimport { getLocaleText, searchWordHandler } from '../common/utility';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * BreadCrumbBar module\n */\nvar BreadCrumbBar = /** @class */ (function () {\n /**\n * constructor for addressbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies parent element.\n * @private\n *\n */\n function BreadCrumbBar(parent) {\n this.addressPath = '';\n this.addressBarLink = '';\n this.searchTimer = null;\n this.searchWrapWidth = null;\n this.parent = parent;\n this.keyConfigs = {\n enter: 'enter'\n };\n this.render();\n }\n BreadCrumbBar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var value = e.newProp.searchSettings;\n switch (prop) {\n case 'searchSettings':\n if (!isNullOrUndefined(value.allowSearchOnTyping)) {\n this.searchEventBind(value.allowSearchOnTyping);\n }\n if (this.parent.breadcrumbbarModule.searchObj.value && this.parent.breadcrumbbarModule.searchObj.value !== '' &&\n !(!isNullOrUndefined(value.allowSearchOnTyping) && isNullOrUndefined(value.filterType) &&\n isNullOrUndefined(value.ignoreCase))) {\n searchWordHandler(this.parent, this.parent.breadcrumbbarModule.searchObj.value, false);\n }\n break;\n }\n }\n };\n BreadCrumbBar.prototype.render = function () {\n this.addEventListener();\n };\n BreadCrumbBar.prototype.onPathChange = function () {\n var pathNames = this.parent.pathNames;\n var paths = this.parent.path.split('/');\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var addressbarLI = null;\n var pathNamesLen = pathNames.length;\n if (pathNames.length > 0) {\n var id = '';\n for (var i = 0; i < pathNamesLen; i++) {\n var addressATag = null;\n addressbarLI = this.parent.createElement('li', { className: 'e-address-list-item' });\n for (var j = 0; j <= i; j++) {\n id = id + paths[j] + '/';\n }\n addressbarLI.setAttribute('data-utext', id);\n if (i !== 0) {\n var icon = createElement('span', { className: CLS.ICONS });\n addressbarLI.appendChild(icon);\n }\n if (pathNamesLen - i !== 1) {\n addressATag = createElement('a', { className: CLS.LIST_TEXT });\n addressbarLI.setAttribute('tabindex', '0');\n }\n else {\n addressATag = createElement('span', { className: CLS.LIST_TEXT });\n }\n id = '';\n addressATag.innerText = pathNames[i];\n addressbarLI.appendChild(addressATag);\n addressbarUL.appendChild(addressbarLI);\n }\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n if (!isNullOrUndefined(ulElement)) {\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n remove(ulElement);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n if (!searchWrap) {\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.appendChild(addressbarUL);\n }\n this.updateBreadCrumbBar(addressbarUL);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.updateBreadCrumbBar = function (addresBarUL) {\n var liElements = addresBarUL.querySelectorAll('li');\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n var style = window.getComputedStyle(ulElement, null);\n var pRight = parseFloat(style.getPropertyValue('padding-right'));\n var pLeft = parseFloat(style.getPropertyValue('padding-left'));\n var breadCrumbBarWidth = ulElement.offsetWidth - pRight - pLeft;\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var liElementsWidth = 0;\n var liElementsWidths = [];\n for (var i = 0; i < liElements.length; i++) {\n var width = liElements[i].clientWidth;\n liElementsWidths.push(width);\n liElementsWidth = liElementsWidth + width;\n }\n if (!isNullOrUndefined(ulElement)) {\n remove(ulElement);\n }\n var searchContainer = this.parent.createElement('div');\n searchContainer.setAttribute('class', 'e-search-wrap');\n var id = this.parent.element.id + CLS.SEARCH_ID;\n var searchInput = createElement('input', { id: id,\n attrs: { autocomplete: 'off', 'aria-label': getLocaleText(this.parent, 'Search') } });\n searchContainer.appendChild(searchInput);\n var searchEle = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap .e-input');\n if (isNullOrUndefined(searchEle)) {\n this.parent.breadCrumbBarNavigation.appendChild(searchContainer);\n var span = createElement('span', { className: 'e-icons e-fe-search' });\n EventHandler.add(span, 'click', this.onShowInput, this);\n searchInput.parentElement.insertBefore(span, searchInput);\n this.searchObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: getLocaleText(this.parent, 'Search'),\n focus: this.onFocus.bind(this),\n blur: this.onBlur.bind(this)\n });\n this.searchObj.appendTo('#' + this.parent.element.id + CLS.SEARCH_ID);\n this.searchEventBind(this.parent.searchSettings.allowSearchOnTyping);\n var search = this.searchObj.element.nextElementSibling;\n EventHandler.add(search, 'mousedown', this.searchChangeHandler.bind(this), this);\n EventHandler.add(this.searchObj.element, 'keyup', this.onKeyUp.bind(this), this);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n breadCrumbBarWidth = breadCrumbBarWidth - (this.searchWrapWidth ? this.searchWrapWidth : searchWrap.offsetWidth);\n if (liElementsWidth > breadCrumbBarWidth) {\n var i = liElements.length;\n while (i--) {\n var diff = breadCrumbBarWidth - liElementsWidths[i];\n if (diff > 40) {\n addressbarUL.insertBefore(liElements[i], addressbarUL.querySelector('li'));\n breadCrumbBarWidth = diff;\n }\n else {\n // eslint-disable-next-line\n var items = [];\n for (var j = 0; j <= i; j++) {\n var liElement = liElements[j];\n items.push({\n text: liElement.innerText,\n utext: liElement.getAttribute('data-utext')\n });\n }\n var subMenuLi = this.parent.createElement('li', { className: 'e-breadcrumb-menu' });\n // eslint-disable-next-line\n var attributes = { className: 'e-breadcrumb-submenu' };\n var subMenuSpan = this.parent.createElement('button', attributes);\n subMenuLi.appendChild(subMenuSpan);\n addressbarUL.insertBefore(subMenuLi, addressbarUL.querySelector('li'));\n this.subMenuObj = new DropDownButton({\n items: items,\n cssClass: 'e-caret-hide e-submenu',\n iconCss: CLS.ICON_BREADCRUMB,\n iconPosition: 'Top',\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.addSubMenuAttributes.bind(this),\n select: this.subMenuSelectOperations.bind(this)\n });\n this.subMenuObj.isStringTemplate = true;\n this.subMenuObj.appendTo(subMenuSpan);\n break;\n }\n }\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.insertBefore(addresBarUL, searchWrap);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onFocus = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.add('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onKeyUp = function () {\n this.parent.notify(events.pathColumn, { args: this.parent });\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onBlur = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.remove('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.subMenuSelectOperations = function (event) {\n // eslint-disable-next-line\n var args = { target: event.element };\n this.addressPathClickHandler(args);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.addSubMenuAttributes = function (args) {\n args.element.setAttribute('data-utext', getValue('utext', args.item));\n var anchor = this.parent.createElement('a', { className: 'e-list-text' });\n args.element.appendChild(anchor);\n };\n BreadCrumbBar.prototype.searchEventBind = function (allow) {\n if (allow) {\n this.searchObj.input = this.searchChangeHandler.bind(this);\n this.searchObj.change = null;\n }\n else {\n this.searchObj.change = this.searchChangeHandler.bind(this);\n this.searchObj.input = null;\n }\n };\n BreadCrumbBar.prototype.searchChangeHandler = function (args) {\n var _this = this;\n if (!isNullOrUndefined(args.value)) {\n this.parent.isFiltered = false;\n if (this.parent.searchSettings.allowSearchOnTyping) {\n window.clearTimeout(this.searchTimer);\n this.searchTimer = window.setTimeout(function () { searchWordHandler(_this.parent, args.value, false); }, 300);\n }\n else {\n searchWordHandler(this.parent, args.value, false);\n }\n }\n };\n BreadCrumbBar.prototype.addressPathClickHandler = function (e) {\n var li = e.target;\n if (li.nodeName === 'LI' || li.nodeName === 'A') {\n var node = li.nodeName === 'LI' ? li.children[0] : li;\n if (!isNullOrUndefined(node)) {\n this.parent.isFiltered = false;\n var currentPath = this.updatePath(node);\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n this.triggerFileOpen(this.parent.itemData[0]);\n read(this.parent, events.pathChanged, currentPath);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n }\n };\n // eslint-disable-next-line\n BreadCrumbBar.prototype.triggerFileOpen = function (data) {\n var eventArgs = { cancel: false, fileDetails: data, module: 'BreadCrumbBar' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onShowInput = function () {\n if (this.parent.isMobile) {\n if (this.parent.element.classList.contains(CLS.FILTER)) {\n removeClass([this.parent.element], CLS.FILTER);\n this.searchWrapWidth = null;\n }\n else {\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n this.searchWrapWidth = searchWrap.offsetWidth;\n addClass([this.parent.element], CLS.FILTER);\n this.searchObj.element.focus();\n }\n }\n };\n BreadCrumbBar.prototype.updatePath = function (list) {\n var li = closest(list, 'li');\n var liElementId = li.getAttribute('data-utext');\n this.addressBarLink = liElementId;\n var link = this.addressBarLink.split('/');\n var ids = this.parent.pathId;\n var names = this.parent.pathNames;\n this.parent.pathId = [];\n this.parent.pathNames = [];\n var newpath = '';\n for (var i = 0, len = link.length - 1; i < len; i++) {\n this.parent.pathId.push(ids[i]);\n this.parent.pathNames.push(names[i]);\n newpath += link[i] + '/';\n }\n this.parent.setProperties({ path: newpath }, true);\n return newpath;\n };\n BreadCrumbBar.prototype.onUpdatePath = function () {\n this.onPathChange();\n this.removeSearchValue();\n };\n BreadCrumbBar.prototype.onCreateEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onRenameEnd = function () {\n this.onPathChange();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDeleteEnd = function () {\n this.onUpdatePath();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.removeSearchValue = function () {\n this.parent.isFiltered = false;\n if (this.searchObj && (this.searchObj.value !== '' || this.searchObj.element.value !== '')) {\n this.searchObj.value = '';\n this.searchObj.element.value = '';\n this.searchObj.dataBind();\n }\n };\n BreadCrumbBar.prototype.onResize = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onPasteEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.addEventListener = function () {\n this.keyboardModule = new KeyboardEvents(this.parent.breadCrumbBarNavigation, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n EventHandler.add(this.parent.breadCrumbBarNavigation, 'click', this.addressPathClickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.pathChanged, this.onUpdatePath, this);\n this.parent.on(events.finalizeEnd, this.onUpdatePath, this);\n this.parent.on(events.refreshEnd, this.onUpdatePath, this);\n this.parent.on(events.openEnd, this.onUpdatePath, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.splitterResize, this.onResize, this);\n this.parent.on(events.pasteEnd, this.onPasteEnd, this);\n this.parent.on(events.resizeEnd, this.onResize, this);\n this.parent.on(events.searchTextChange, this.onSearchTextChange, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.layoutRefresh, this.onResize, this);\n this.parent.on(events.dropPath, this.onPathChange, this);\n };\n BreadCrumbBar.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'enter':\n this.addressPathClickHandler(e);\n break;\n }\n };\n BreadCrumbBar.prototype.removeEventListener = function () {\n this.keyboardModule.destroy();\n this.parent.off(events.pathChanged, this.onUpdatePath);\n this.parent.off(events.finalizeEnd, this.onUpdatePath);\n this.parent.off(events.refreshEnd, this.onUpdatePath);\n this.parent.off(events.openEnd, this.onUpdatePath);\n this.parent.off(events.pasteEnd, this.onPasteEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.splitterResize, this.onResize);\n this.parent.off(events.resizeEnd, this.onResize);\n this.parent.off(events.searchTextChange, this.onSearchTextChange);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.layoutRefresh, this.onResize);\n this.parent.off(events.dropPath, this.onPathChange);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var liEle = args.target.closest('li');\n this.parent.dropPath = this.updatePath((liEle.children[0]));\n this.parent.dropData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n this.triggerFileOpen(this.parent.dropData);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n BreadCrumbBar.prototype.getModuleName = function () {\n return 'breadcrumbbar';\n };\n BreadCrumbBar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n if (!isNullOrUndefined(this.searchObj)) {\n this.searchObj.destroy();\n }\n };\n BreadCrumbBar.prototype.onSearchTextChange = function (args) {\n this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + args.cwd.name;\n };\n return BreadCrumbBar;\n}());\nexport { BreadCrumbBar };\n","import { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, createElement, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, select } from '@syncfusion/ej2-base';\nimport { Download, GetDetails } from './../common/operations';\nimport { createDialog } from './dialog';\nimport { cutFiles, copyFiles, refresh, getPathObject, getLocaleText, updateLayout, getFullPath } from './../common/utility';\nimport { getCssClass, sortbyClickHandler, pasteHandler } from './../common/utility';\nimport { createDeniedDialog, createNewFolder, uploadItem, hasEditAccess, hasDownloadAccess } from './../common/utility';\nimport * as events from './../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * ContextMenu module\n */\nvar ContextMenu = /** @class */ (function () {\n /**\n * Constructor for the ContextMenu module\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @hidden\n */\n function ContextMenu(parent) {\n this.currentItems = [];\n this.currentElement = null;\n this.disabledItems = [];\n this.parent = parent;\n this.render();\n }\n ContextMenu.prototype.render = function () {\n this.keyConfigs = {\n downarrow: 'downarrow',\n uparrow: 'uparrown'\n };\n this.contextMenu = new Menu({\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n target: '#' + this.parent.element.id,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.onBeforeItemRender.bind(this),\n select: this.onSelect.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this),\n cssClass: getCssClass(this.parent, CLS.ROOT_POPUP)\n });\n this.contextMenu.isStringTemplate = true;\n this.contextMenu.appendTo('#' + this.parent.element.id + CLS.CONTEXT_MENU_ID);\n this.addEventListener();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeItemRender = function (args) {\n if (args.item.id === this.getMenuId('largeiconsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'LargeIcons' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_LARGE + ' ' + CLS.MENU_ICON);\n }\n if (args.item.id === this.getMenuId('detailsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'Details' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_GRID + ' ' + CLS.MENU_ICON);\n }\n };\n ContextMenu.prototype.onBeforeClose = function () {\n this.menuTarget = null;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeOpen = function (args) {\n var _this = this;\n this.disabledItems = [];\n var selected = false;\n var uid;\n // eslint-disable-next-line\n var data;\n var treeFolder = false;\n var target = args.event.target;\n this.menuTarget = this.targetNodeElement = target;\n this.currentElement = args.element;\n if (target.classList.contains('e-spinner-pane')) {\n target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(CLS.FULLROW)[0];\n this.menuTarget = this.targetNodeElement = target;\n }\n this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr.e-row') : target;\n var view = this.getTargetView(target);\n this.updateActiveModule();\n /* istanbul ignore next */\n if (target.classList.contains(CLS.TREE_VIEW) || closest(target, 'th') ||\n (closest(target, '#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID)) ||\n (closest(target, '#' + this.parent.element.id + CLS.TOOLBAR_ID))) {\n args.cancel = true;\n // eslint:disable-next-line\n }\n else if (!(this.parent.view === 'LargeIcons') && this.targetElement &&\n this.targetElement.classList.contains('e-emptyrow')) {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else if (closest(target, '.' + CLS.EMPTY)) {\n this.setLayoutItem(target);\n // eslint:disable-next-line\n }\n else if (!target.classList.contains(CLS.MENU_ITEM) &&\n !target.classList.contains(CLS.MENU_ICON) && !target.classList.contains(CLS.SUBMENU_ICON)) {\n /* istanbul ignore next */\n // eslint:disable-next-line\n if (this.parent.view === 'LargeIcons' && !isNOU(closest(target, 'li')) && !closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n var eveArgs = { ctrlKey: true, shiftKey: true };\n if (!closest(target, 'li').classList.contains('e-active')) {\n this.parent.largeiconsviewModule.doSelection(target, eveArgs);\n }\n // eslint-disable-next-line\n data = this.parent.visitedData;\n selected = true;\n }\n else if (!isNOU(closest(target, 'tr.e-row'))) {\n uid = this.targetElement.getAttribute('data-uid');\n // eslint-disable-next-line\n data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;\n if (isNOU(this.targetElement.getAttribute('aria-selected'))) {\n /* istanbul ignore next */\n this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('aria-rowindex'), 10)]);\n }\n selected = true;\n /* istanbul ignore next */\n }\n else if (closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n uid = closest(target, 'li').getAttribute('data-uid');\n treeFolder = true;\n }\n /* istanbul ignore next */\n if (selected) {\n if (getValue('isFile', data) === true) {\n this.setFileItem();\n }\n else {\n this.setFolderItem(false);\n }\n /* istanbul ignore next */\n }\n else if (treeFolder) {\n this.setFolderItem(true);\n if (uid === this.parent.pathId[0]) {\n this.disabledItems.push('Delete', 'Rename', 'Cut', 'Copy');\n }\n /* istanbul ignore next */\n // eslint:disable-next-line\n }\n else if (view === 'TreeView' || view === 'GridView' || view === 'LargeIcon') {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else {\n args.cancel = true;\n }\n }\n var pasteEle = select('#' + this.getMenuId('Paste'), this.contextMenu.element);\n if (!args.cancel && !this.parent.enablePaste &&\n pasteEle && !pasteEle.classList.contains('e-disabled')) {\n this.disabledItems.push('Paste');\n }\n if (args.cancel) {\n this.menuTarget = this.currentElement = null;\n return;\n }\n this.contextMenu.dataBind();\n var isSubMenu = false;\n if (target.classList.contains(CLS.MENU_ITEM) ||\n target.classList.contains(CLS.MENU_ICON) || target.classList.contains(CLS.SUBMENU_ICON)) {\n isSubMenu = true;\n }\n this.menuItemData = isSubMenu ? this.menuItemData : this.getMenuItemData();\n var eventArgs = {\n fileDetails: [this.menuItemData],\n element: args.element,\n target: target,\n items: isSubMenu ? args.items : this.contextMenu.items,\n menuModule: this.contextMenu,\n cancel: false,\n menuType: this.menuType,\n isSubMenu: isSubMenu\n };\n this.currentItems = eventArgs.items;\n this.parent.trigger('menuOpen', eventArgs, function (menuOpenArgs) {\n if (!isSubMenu) {\n _this.contextMenu.dataBind();\n _this.contextMenu.items = menuOpenArgs.items;\n _this.contextMenu.dataBind();\n }\n _this.enableItems(_this.disabledItems, false, true);\n args.cancel = menuOpenArgs.cancel;\n if (menuOpenArgs.cancel) {\n _this.menuTarget = _this.targetNodeElement = _this.currentElement = null;\n }\n });\n };\n ContextMenu.prototype.updateActiveModule = function () {\n this.parent.activeModule = closest(this.menuTarget, '#' + this.parent.element.id + CLS.TREE_ID) ?\n 'navigationpane' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.GRID_ID) ?\n 'detailsview' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.LARGEICON_ID) ?\n 'largeiconsview' : this.parent.activeModule;\n };\n /* istanbul ignore next */\n /**\n *\n * @param {Element} target - specifies the target element.\n * @returns {string} -returns the target view.\n * @hidden\n */\n ContextMenu.prototype.getTargetView = function (target) {\n return target.classList.contains(CLS.TREE_VIEW) ?\n 'TreeView' : target.classList.contains(CLS.GRID_VIEW) ?\n 'GridView' : target.classList.contains(CLS.ICON_VIEW) ?\n 'LargeIcon' : target.classList.contains(CLS.LARGE_ICONS) ?\n 'LargeIcon' : '';\n };\n ContextMenu.prototype.getItemIndex = function (item) {\n var itemId = this.getMenuId(item);\n for (var i = 0; i < this.currentItems.length; i++) {\n if ((this.currentItems[i].id === itemId) || (this.currentItems[i].id === item)) {\n return i;\n }\n }\n return -1;\n };\n ContextMenu.prototype.disableItem = function (items) {\n if (items.length !== 0) {\n this.disabledItems = this.disabledItems.concat(items);\n }\n };\n ContextMenu.prototype.enableItems = function (items, enable, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n if (this.checkValidItem(items[i]) === 1) {\n this.contextMenu.enableItems([this.getMenuId(items[i])], enable, isUniqueId);\n }\n else if (this.checkValidItem(items[i]) === 2) {\n this.contextMenu.enableItems([items[i]], enable, isUniqueId);\n }\n }\n };\n ContextMenu.prototype.setFolderItem = function (isTree) {\n this.menuType = 'folder';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (isTree) {\n this.disabledItems.push('Open');\n }\n else if (this.parent.selectedItems.length !== 1) {\n this.disabledItems.push('Rename', 'Paste');\n }\n };\n ContextMenu.prototype.setFileItem = function () {\n this.menuType = 'file';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.file.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (this.parent.selectedItems.length !== 1) {\n this.disabledItems.push('Rename');\n }\n };\n ContextMenu.prototype.setLayoutItem = function (target) {\n this.menuType = 'layout';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' &&\n (closest(target, '#' + this.parent.element.id + CLS.LARGEICON_ID).getElementsByClassName(CLS.EMPTY).length !== 0))\n || (this.parent.view === 'Details' &&\n (closest(target, '#' + this.parent.element.id + CLS.GRID_ID).getElementsByClassName(CLS.EMPTY).length !== 0)))) {\n this.disabledItems.push('SelectAll');\n }\n if (this.parent.selectedNodes.length === 0) {\n this.disabledItems.push('Paste');\n }\n this.contextMenu.dataBind();\n };\n ContextMenu.prototype.checkValidItem = function (nameEle) {\n if (!isNOU(select('#' + this.getMenuId(nameEle), this.currentElement))) {\n return 1;\n }\n else if (!isNOU(select('#' + nameEle, this.currentElement))) {\n return 2;\n }\n else {\n return -1;\n }\n };\n // eslint-disable-next-line\n ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n // eslint-disable-next-line\n var args = { target: this.menuTarget };\n this.parent.notify(events.menuItemData, args);\n return this.parent.itemData[0];\n }\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onSelect = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var itemText = args.item.id.substr((this.parent.element.id + '_cm_').length);\n // eslint-disable-next-line\n var details;\n if (itemText === 'refresh' || itemText === 'newfolder' || itemText === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n if (this.parent.activeModule === 'navigationpane' && itemText === 'open') {\n details = [this.menuItemData];\n }\n else {\n details = this.parent.itemData;\n }\n }\n var eventArgs = {\n cancel: false,\n element: args.element,\n fileDetails: details,\n item: args.item\n };\n this.parent.trigger('menuClick', eventArgs, function (menuClickArgs) {\n var sItems;\n if (!menuClickArgs.cancel) {\n // eslint:disable-next-line\n switch (itemText) {\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'paste':\n if (_this.menuType === 'folder') {\n if ((_this.parent.activeModule === 'largeiconsview') || (_this.parent.activeModule === 'detailsview')) {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\n }\n else {\n _this.parent.folderPath = '';\n }\n }\n else {\n _this.parent.folderPath = '';\n }\n pasteHandler(_this.parent);\n break;\n case 'delete':\n for (var j = 0; j < details.length; j++) {\n if (!hasEditAccess(details[j])) {\n createDeniedDialog(_this.parent, details[j], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n /* istanbul ignore next */\n case 'download':\n for (var i = 0; i < details.length; i++) {\n if (!hasDownloadAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionDownload);\n return;\n }\n }\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.notify(events.downloadInit, {});\n }\n else if (_this.parent.selectedItems.length > 0) {\n Download(_this.parent, _this.parent.path, _this.parent.selectedItems);\n }\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'selectall':\n /* istanbul ignore next */\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'open':\n if (_this.parent.visitedItem) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n else if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n /* istanbul ignore next */\n case 'name':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'size':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'date':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'ascending':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'descending':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n case 'none':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'largeiconsview':\n updateLayout(_this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'detailsview':\n updateLayout(_this.parent, 'Details');\n break;\n }\n }\n });\n };\n ContextMenu.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.contextMenu.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n break;\n }\n }\n };\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.keyboardModule = new KeyboardEvents(this.contextMenu.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n ContextMenu.prototype.removeEventListener = function () {\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.keyboardModule.destroy();\n };\n ContextMenu.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n e.preventDefault();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n ContextMenu.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.contextMenu.destroy();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.getItemData = function (data) {\n var items = [];\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getMenuId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n switch (data[i]) {\n case '|':\n item = { separator: true };\n break;\n case 'Open':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_OPEN };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_UPLOAD };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_CUT };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_COPY };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_PASTE };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DELETE };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_RENAME };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_NEWFOLDER };\n break;\n case 'Details':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DETAILS };\n break;\n case 'SortBy':\n item = {\n id: itemId, text: itemText, iconCss: CLS.ICON_SHORTBY,\n items: [\n {\n id: this.getMenuId('Name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : null\n },\n { separator: true },\n {\n id: this.getMenuId('Ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('Descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('None'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n /* istanbul ignore next */\n case 'View':\n item = {\n id: itemId, text: itemText, iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n items: [\n {\n id: this.getMenuId('largeiconsview'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? null : CLS.TB_OPTION_TICK\n },\n {\n id: this.getMenuId('detailsview'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_REFRESH };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_SELECTALL };\n break;\n /* istanbul ignore next */\n case 'Download':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DOWNLOAD };\n break;\n /* istanbul ignore next */\n default:\n item = { id: itemId, text: itemText };\n break;\n }\n items.push(item);\n }\n return items;\n };\n ContextMenu.prototype.getMenuId = function (id) {\n return this.parent.element.id + '_cm_' + id.toLowerCase();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","/**\n * Specifies the default locale of FileManager component\n */\n// eslint-disable-next-line\nexport var defaultLocale = {\n 'NewFolder': 'New folder',\n 'Upload': 'Upload',\n 'Delete': 'Delete',\n 'Rename': 'Rename',\n 'Download': 'Download',\n 'Cut': 'Cut',\n 'Copy': 'Copy',\n 'Paste': 'Paste',\n 'SortBy': 'Sort by',\n 'Refresh': 'Refresh',\n 'Item-Selection': 'item selected',\n 'Items-Selection': 'items selected',\n 'View': 'View',\n 'Details': 'Details',\n 'SelectAll': 'Select all',\n 'Open': 'Open',\n 'Tooltip-NewFolder': 'New folder',\n 'Tooltip-Upload': 'Upload',\n 'Tooltip-Delete': 'Delete',\n 'Tooltip-Rename': 'Rename',\n 'Tooltip-Download': 'Download',\n 'Tooltip-Cut': 'Cut',\n 'Tooltip-Copy': 'Copy',\n 'Tooltip-Paste': 'Paste',\n 'Tooltip-SortBy': 'Sort by',\n 'Tooltip-Refresh': 'Refresh',\n 'Tooltip-Selection': 'Clear selection',\n 'Tooltip-View': 'View',\n 'Tooltip-Details': 'Details',\n 'Tooltip-SelectAll': 'Select all',\n 'Name': 'Name',\n 'Size': 'Size',\n 'DateModified': 'Modified',\n 'DateCreated': 'Date created',\n 'Path': 'Path',\n 'Modified': 'Modified',\n 'Created': 'Created',\n 'Location': 'Location',\n 'Type': 'Type',\n 'Permission': 'Permission',\n 'Ascending': 'Ascending',\n 'Descending': 'Descending',\n 'None': 'None',\n 'View-LargeIcons': 'Large icons',\n 'View-Details': 'Details',\n 'Search': 'Search',\n 'Button-Ok': 'OK',\n 'Button-Cancel': 'Cancel',\n 'Button-Yes': 'Yes',\n 'Button-No': 'No',\n 'Button-Create': 'Create',\n 'Button-Save': 'Save',\n 'Header-NewFolder': 'Folder',\n 'Content-NewFolder': 'Enter your folder name',\n 'Header-Rename': 'Rename',\n 'Content-Rename': 'Enter your new name',\n 'Header-Rename-Confirmation': 'Rename Confirmation',\n 'Content-Rename-Confirmation': 'If you change a file name extension, the file might become unstable. ' +\n 'Are you sure you want to change it?',\n 'Header-Delete': 'Delete File',\n 'Content-Delete': 'Are you sure you want to delete this file?',\n 'Header-Folder-Delete': 'Delete Folder',\n 'Content-Folder-Delete': 'Are you sure you want to delete this folder?',\n 'Header-Multiple-Delete': 'Delete Multiple Items',\n 'Content-Multiple-Delete': 'Are you sure you want to delete these {0} items?',\n 'Header-Duplicate': 'File/Folder exists',\n 'Content-Duplicate': '{0} already exists. Do you want to rename and paste?',\n 'Header-Upload': 'Upload Files',\n 'Error': 'Error',\n 'Validation-Empty': 'The file or folder name cannot be empty.',\n 'Validation-Invalid': 'The file or folder name {0} contains invalid characters. Please use a different name. ' +\n // eslint-disable-next-line no-useless-escape\n 'Valid file or folder names cannot end with a dot or space, and cannot contain any of the following characters: \\\\/:*?\\\"<>|',\n 'Validation-NewFolder-Exists': 'A file or folder with the name {0} already exists.',\n 'Validation-Rename-Exists': 'Cannot rename {0} to {1}: destination already exists.',\n 'Folder-Empty': 'This folder is empty',\n 'File-Upload': 'Drag files here to upload',\n 'Search-Empty': 'No results found',\n 'Search-Key': 'Try with different keywords',\n 'Filter-Empty': 'No results found',\n 'Filter-Key': 'Try with different filter',\n 'Sub-Folder-Error': 'The destination folder is the subfolder of the source folder.',\n 'Same-Folder-Error': 'The destination folder is the same as the source folder.',\n 'Access-Denied': 'Access Denied',\n 'Access-Details': 'You don\"t have permission to access this folder.',\n 'Header-Retry': 'File Already Exists',\n 'Content-Retry': 'A file with this name already exists in this folder. What would you like to do?',\n 'Button-Keep-Both': 'Keep both',\n 'Button-Replace': 'Replace',\n 'Button-Skip': 'Skip',\n 'ApplyAll-Label': 'Do this for all current items',\n 'KB': 'KB',\n 'Access-Message': '{0} is not accessible. You need permission to perform the {1} action.',\n 'Network-Error': 'NetworkError: Failed to send on XMLHTTPRequest: Failed to load',\n 'Server-Error': 'ServerError: Invalid response from'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isNullOrUndefined, L10n, closest } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Complex, select } from '@syncfusion/ej2-base';\nimport { createElement, addClass, removeClass, setStyleAttribute as setAttr, getUniqueID } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Splitter } from '@syncfusion/ej2-layouts';\nimport { Dialog, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { ToolbarSettings, AjaxSettings, NavigationPaneSettings, DetailsViewSettings } from '../models/index';\nimport { SearchSettings } from '../models/index';\nimport { LargeIconsView } from '../layout/large-icons-view';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { UploadSettings } from '../models/upload-settings';\nimport * as events from './constant';\nimport * as CLS from './classes';\nimport { read, filter, createFolder } from '../common/operations';\nimport { refresh, getPathObject, getLocaleText, setNextPath, createDeniedDialog, getCssClass } from '../common/utility';\nimport { hasContentAccess, hasUploadAccess, updateLayout, createNewFolder, uploadItem } from '../common/utility';\nimport { ContextMenuSettings } from '../models/contextMenu-settings';\nimport { BreadCrumbBar } from '../actions/breadcrumb-bar';\nimport { ContextMenu } from '../pop-up/context-menu';\nimport { defaultLocale } from '../models/default-locale';\n/**\n * The FileManager component allows users to access and manage the file system through the web browser. It can performs the\n * functionalities like add, rename, search, sort, upload and delete files or folders. And also it\n * provides an easy way of dynamic injectable modules like toolbar, navigationpane, detailsview, largeiconsview.\n * ```html\n * <div id=\"file\"></div>\n * ```\n * ```typescript,\n * let feObj: FileManager = new FileManager();\n * feObj.appendTo('#file');\n * ```\n */\nvar FileManager = /** @class */ (function (_super) {\n __extends(FileManager, _super);\n function FileManager(options, element) {\n var _this = _super.call(this, options, element) || this;\n // eslint-disable-next-line\n _this.filterData = null;\n _this.selectedNodes = [];\n _this.duplicateItems = [];\n // eslint-disable-next-line\n _this.duplicateRecords = [];\n _this.previousPath = [];\n _this.nextPath = [];\n _this.isLayoutChange = false;\n _this.layoutSelectedItems = [];\n _this.renamedId = null;\n _this.uploadItem = [];\n _this.deleteRecords = [];\n _this.isFile = false;\n _this.isCut = false;\n _this.isSearchCut = false;\n _this.isSearchDrag = false;\n _this.isPasteError = false;\n _this.folderPath = '';\n _this.isSameAction = false;\n _this.isFiltered = false;\n // Specifies whether the sort by option is clicked or not.\n _this.isSortByClicked = false;\n _this.enablePaste = false;\n _this.persistData = false;\n _this.retryArgs = [];\n _this.isOpened = false;\n _this.isRetryOpened = false;\n _this.isPathDrag = false;\n // eslint-disable-next-line\n _this.searchedItems = [];\n _this.retryFiles = [];\n _this.isApplySame = false;\n // eslint-disable-next-line\n _this.dragData = [];\n _this.dragNodes = [];\n _this.dragPath = '';\n _this.dropPath = '';\n _this.isDragDrop = false;\n _this.treeExpandTimer = null;\n _this.dragCursorPosition = { left: 44, top: 18 };\n _this.isDropEnd = false;\n _this.dragCount = 0;\n // eslint-disable-next-line\n _this.droppedObjects = [];\n _this.uploadingCount = 0;\n _this.uploadedCount = 0;\n FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu);\n return _this;\n }\n FileManager_1 = FileManager;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n FileManager.prototype.getModuleName = function () {\n return 'filemanager';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n FileManager.prototype.preRender = function () {\n if (isNOU(this.element.id) || this.element.id === '') {\n this.element.setAttribute('id', getUniqueID('filemanager'));\n }\n this.ensurePath();\n this.feParent = [];\n this.feFiles = [];\n setAttr(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.isDevice = Browser.isDevice;\n this.isMobile = this.checkMobile();\n if (this.isMobile) {\n this.setProperties({ navigationPaneSettings: { visible: false } }, true);\n }\n var ele = closest(this.element, '.e-bigger');\n this.isBigger = ele ? true : false;\n this.activeModule = (this.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n createSpinner({ target: this.element }, createElement);\n this.addWrapper();\n this.keyConfigs = {\n altN: 'alt+n',\n f5: 'f5',\n ctrlShift1: 'ctrl+shift+1',\n ctrlShift2: 'ctrl+shift+2',\n ctrlU: 'ctrl+u'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string} - returns the persisted data.\n * @hidden\n */\n FileManager.prototype.getPersistData = function () {\n var keyEntity = ['view', 'path', 'selectedItems'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n FileManager.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'breadcrumbbar',\n args: [this]\n });\n modules.push({\n member: 'largeiconsview',\n args: [this]\n });\n if (this.toolbarSettings.visible) {\n modules.push({\n member: 'toolbar',\n args: [this]\n });\n }\n if (this.navigationPaneSettings.visible) {\n modules.push({\n member: 'navigationpane',\n args: [this]\n });\n }\n if (this.view) {\n modules.push({\n member: 'detailsview',\n args: [this]\n });\n }\n if (this.contextMenuSettings.visible && !this.isDevice) {\n modules.push({\n member: 'contextmenu',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n FileManager.prototype.render = function () {\n this.initialize();\n var slItems = isNOU(this.selectedItems) ? [] :\n this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);\n this.setProperties({ selectedItems: slItems }, true);\n this.fileView = this.view;\n this.setRtl(this.enableRtl);\n this.addEventListeners();\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n this.adjustHeight();\n if (isNOU(this.navigationpaneModule)) {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n this.wireEvents();\n this.renderComplete();\n };\n FileManager.prototype.ensurePath = function () {\n var currentPath = this.path;\n if (isNOU(currentPath)) {\n currentPath = '/';\n }\n if (currentPath.lastIndexOf('/') !== (currentPath.length - 1)) {\n currentPath = currentPath + '/';\n }\n this.originalPath = currentPath;\n var paths = currentPath.split('/');\n this.setProperties({ path: paths[0] + '/' }, true);\n this.pathNames = [];\n this.pathId = ['fe_tree'];\n this.itemData = [];\n };\n FileManager.prototype.initialize = function () {\n if (this.isMobile) {\n addClass([this.element], CLS.MOBILE);\n }\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n this.addCssClass(null, this.cssClass);\n this.renderFileUpload();\n };\n FileManager.prototype.addWrapper = function () {\n var headerWrap = this.createElement('div', { id: this.element.id + CLS.TOOLBAR_ID });\n this.element.appendChild(headerWrap);\n var layoutWrap = this.createElement('div', {\n id: this.element.id + CLS.LAYOUT_ID, className: CLS.LAYOUT\n });\n this.element.appendChild(layoutWrap);\n var navigationWrap = this.createElement('div', {\n id: this.element.id + CLS.NAVIGATION_ID, className: CLS.NAVIGATION\n });\n var treeWrap = this.createElement('div', {\n id: this.element.id + CLS.TREE_ID\n });\n navigationWrap.appendChild(treeWrap);\n var contentWrap = this.createElement('div', {\n id: this.element.id + CLS.CONTENT_ID, className: CLS.LAYOUT_CONTENT\n });\n this.breadCrumbBarNavigation = this.createElement('div', {\n id: this.element.id + CLS.BREADCRUMBBAR_ID,\n className: CLS.BREADCRUMBS\n });\n contentWrap.appendChild(this.breadCrumbBarNavigation);\n var gridWrap = this.createElement('div', {\n id: this.element.id + CLS.GRID_ID\n });\n contentWrap.appendChild(gridWrap);\n var largeiconWrap = this.createElement('div', {\n id: this.element.id + CLS.LARGEICON_ID,\n className: CLS.LARGE_ICONS, attrs: { 'role': 'group' }\n });\n contentWrap.appendChild(largeiconWrap);\n var overlay = this.createElement('span', { className: CLS.OVERLAY });\n contentWrap.appendChild(overlay);\n var paneSettings;\n if (!this.enableRtl) {\n layoutWrap.appendChild(navigationWrap);\n layoutWrap.appendChild(contentWrap);\n paneSettings = [\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n },\n { size: '75%', min: '270px' }\n ];\n }\n else {\n layoutWrap.appendChild(contentWrap);\n layoutWrap.appendChild(navigationWrap);\n paneSettings = [\n { size: '75%', min: '270px' },\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n }\n ];\n }\n this.splitterObj = new Splitter({\n paneSettings: paneSettings,\n width: '100%',\n enableRtl: false,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n resizing: this.splitterResize.bind(this)\n });\n this.splitterObj.isStringTemplate = true;\n this.splitterObj.appendTo(layoutWrap);\n var dialogWrap = this.createElement('div', { id: this.element.id + CLS.DIALOG_ID });\n this.element.appendChild(dialogWrap);\n var menuWrap = this.createElement('ul', { id: this.element.id + CLS.CONTEXT_MENU_ID });\n this.element.appendChild(menuWrap);\n var dialogImgWrap = this.createElement('div', { id: this.element.id + CLS.IMG_DIALOG_ID });\n this.element.appendChild(dialogImgWrap);\n var extnDialogWrap = this.createElement('div', { id: this.element.id + CLS.EXTN_DIALOG_ID });\n this.element.appendChild(extnDialogWrap);\n var uploadDialogWrap = this.createElement('div', { id: this.element.id + CLS.UPLOAD_DIALOG_ID });\n this.element.appendChild(uploadDialogWrap);\n };\n FileManager.prototype.adjustHeight = function () {\n var toolbar = select('#' + this.element.id + CLS.TOOLBAR_ID, this.element);\n var toolBarHeight = toolbar ? toolbar.offsetHeight : 0;\n if (this.splitterObj) {\n this.splitterObj.height = (this.element.clientHeight - toolBarHeight).toString();\n this.splitterObj.dataBind();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.splitterResize = function () {\n this.notify(events.splitterResize, {});\n };\n FileManager.prototype.splitterAdjust = function () {\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n if (this.navigationPaneSettings.visible) {\n this.splitterObj.expand(this.enableRtl ? 1 : 0);\n bar.classList.remove(CLS.DISPLAY_NONE);\n }\n else {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n };\n FileManager.prototype.addCssClass = function (oldOne, newOne) {\n if (!isNOU(oldOne) && oldOne !== '') {\n removeClass([this.element], oldOne.split(' '));\n }\n if (!isNOU(newOne) && newOne !== '') {\n addClass([this.element], newOne.split(' '));\n }\n };\n FileManager.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n FileManager.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n FileManager.prototype.onContextMenu = function (e) {\n e.preventDefault();\n };\n FileManager.prototype.checkMobile = function () {\n return (/iphone|ipod|android|blackberry|opera|mini|windows\\sce|palm|smartphone|iemobile/i.test(Browser.userAgent.toLowerCase())\n && /mobile/i.test(Browser.userAgent.toLowerCase()));\n };\n FileManager.prototype.renderFileUpload = function () {\n var id = this.element.id + CLS.UPLOAD_ID;\n var uploadEle = this.createElement('input', { id: id, attrs: { name: 'uploadFiles', type: 'file' } });\n this.element.appendChild(uploadEle);\n this.uploadDialogObj = new Dialog({\n header: getLocaleText(this, 'Header-Upload'),\n content: uploadEle,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: false,\n isModal: true,\n width: '350px',\n target: this.popupTarget ? this.popupTarget : '#' + this.element.id,\n cssClass: getCssClass(this, this.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: this.locale,\n allowDragging: true,\n position: { X: 'center', Y: 'center' },\n enableRtl: this.enableRtl,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n open: this.onOpen.bind(this),\n close: this.onClose.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n });\n this.uploadDialogObj.appendTo('#' + this.element.id + CLS.UPLOAD_DIALOG_ID);\n this.renderUploadBox();\n };\n FileManager.prototype.renderUploadBox = function () {\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n this.uploadObj = new Uploader({\n dropArea: select('#' + this.element.id + CLS.CONTENT_ID, this.element),\n asyncSettings: {\n saveUrl: uploadUrl,\n removeUrl: uploadUrl\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n removing: this.onRemoving.bind(this),\n canceling: this.onCancel.bind(this),\n clearing: this.onClearing.bind(this),\n selected: this.onSelected.bind(this),\n success: this.onUploadSuccess.bind(this),\n failure: this.onUploadFailure.bind(this),\n autoUpload: this.uploadSettings.autoUpload,\n minFileSize: this.uploadSettings.minFileSize,\n maxFileSize: this.uploadSettings.maxFileSize,\n allowedExtensions: this.uploadSettings.allowedExtensions,\n fileListRendering: this.onFileListRender.bind(this)\n });\n this.uploadObj.appendTo('#' + this.element.id + CLS.UPLOAD_ID);\n };\n FileManager.prototype.onFileListRender = function (args) {\n this.trigger('uploadListCreate', args);\n };\n FileManager.prototype.updateUploader = function () {\n this.uploadObj.autoUpload = this.uploadSettings.autoUpload;\n this.uploadObj.minFileSize = this.uploadSettings.minFileSize;\n this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;\n this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;\n this.uploadObj.dataBind();\n };\n FileManager.prototype.onBeforeOpen = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onOpen = function () {\n this.isOpened = true;\n this.uploadDialogObj.element.focus();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupOpen', args);\n };\n FileManager.prototype.onClose = function () {\n this.isOpened = false;\n this.uploadObj.clearAll();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupClose', args);\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploading = function (args) {\n var action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n if (args.fileData.name === this.retryArgs[i].file.name) {\n action = this.retryArgs[i].action;\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }];\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n // eslint-disable-next-line\n var ajaxSettings = {\n url: uploadUrl,\n type: 'POST',\n mode: true,\n dataType: null,\n contentType: null,\n data: JSON.stringify(args.customFormData),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n this.uploadEventArgs = { action: 'Upload', ajaxSettings: ajaxSettings, cancel: false };\n this.trigger('beforeSend', this.uploadEventArgs, function (uploadEventArgs) {\n args.customFormData = JSON.parse(getValue('data', uploadEventArgs.ajaxSettings));\n args.cancel = uploadEventArgs.cancel;\n // eslint-disable-next-line\n var eventArgs = {\n cancel: false,\n httpRequest: args.currentRequest\n };\n if (typeof getValue('beforeSend', uploadEventArgs.ajaxSettings) === 'function') {\n getValue('beforeSend', uploadEventArgs.ajaxSettings)(eventArgs);\n if (getValue('cancel', eventArgs)) {\n args.cancel = getValue('cancel', eventArgs);\n }\n }\n });\n };\n FileManager.prototype.onRemoving = function () {\n this.onFileUploadSuccess({ count: 1 });\n if (this.uploadObj.getFilesData().length === 1) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onCancel = function (args) {\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': 'remove' }, { 'data': data }];\n };\n /* istanbul ignore next */\n FileManager.prototype.onClearing = function () {\n if (this.isOpened) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onSelected = function (args) {\n if (args.filesData.length === 0) {\n return;\n }\n this.uploadingCount = args.filesData.length;\n this.uploadedCount = 0;\n // eslint-disable-next-line\n var details = getPathObject(this);\n if (!hasUploadAccess(details)) {\n args.cancel = true;\n createDeniedDialog(this, details, events.permissionUpload);\n return;\n }\n this.uploadDialogObj.show();\n };\n // eslint-disable-next-line\n FileManager.prototype.onFileUploadSuccess = function (args) {\n this.uploadedCount = this.uploadedCount + args.count;\n if (this.uploadSettings.autoClose && (this.uploadingCount === this.uploadedCount)) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadSuccess = function (files) {\n var args = { action: 'Upload', result: files };\n this.trigger('success', args);\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n read(this, events.pathChanged, this.path);\n this.onFileUploadSuccess({ count: 1 });\n if (typeof getValue('onSuccess', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', this.uploadEventArgs.ajaxSettings)();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadFailure = function (files) {\n // eslint-disable-next-line\n var response = getValue('response', files);\n var statusText = getValue('statusText', response);\n if (statusText !== '') {\n setValue('statusText', statusText, files);\n }\n var args = { action: 'Upload', error: files };\n this.trigger('failure', args);\n if (getValue('statusCode', response) === 400) {\n this.retryFiles.push(getValue('file', files));\n if (!this.isRetryOpened) {\n createExtDialog(this, 'UploadRetry');\n }\n }\n if (typeof getValue('onFailure', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onFailure', this.uploadEventArgs.ajaxSettings)();\n }\n };\n FileManager.prototype.onInitialEnd = function () {\n setNextPath(this, this.path);\n };\n FileManager.prototype.addEventListeners = function () {\n this.on(events.beforeRequest, this.showSpinner, this);\n this.on(events.afterRequest, this.hideSpinner, this);\n this.on(events.initialEnd, this.onInitialEnd, this);\n this.on(events.detailsInit, this.onDetailsInit, this);\n this.on(events.skipUpload, this.onFileUploadSuccess, this);\n EventHandler.add(this.element, 'contextmenu', this.onContextMenu, this);\n };\n FileManager.prototype.removeEventListeners = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.beforeRequest, this.showSpinner);\n this.off(events.afterRequest, this.hideSpinner);\n this.off(events.initialEnd, this.onInitialEnd);\n this.off(events.detailsInit, this.onDetailsInit);\n this.off(events.skipUpload, this.onFileUploadSuccess);\n EventHandler.remove(this.element, 'contextmenu', this.onContextMenu);\n };\n FileManager.prototype.onDetailsInit = function () {\n if (isNOU(this.activeModule)) {\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n }\n };\n FileManager.prototype.resizeHandler = function () {\n this.adjustHeight();\n this.notify(events.resizeEnd, {});\n };\n FileManager.prototype.keyActionHandler = function (e) {\n var uploadEle;\n switch (e.action) {\n case 'altN':\n e.preventDefault();\n this.itemData = [getPathObject(this)];\n if (!hasContentAccess(this.itemData[0])) {\n createDeniedDialog(this, this.itemData[0], events.permissionEditContents);\n }\n else {\n createDialog(this, 'NewFolder');\n }\n break;\n case 'f5':\n e.preventDefault();\n refresh(this);\n break;\n /* istanbul ignore next */\n case 'ctrlShift1':\n e.preventDefault();\n this.fileView = 'Details';\n this.setProperties({ view: 'Details' }, true);\n showSpinner(this.element);\n updateLayout(this, 'Details');\n break;\n /* istanbul ignore next */\n case 'ctrlShift2':\n e.preventDefault();\n this.fileView = 'LargeIcons';\n this.setProperties({ view: 'LargeIcons' }, true);\n showSpinner(this.element);\n updateLayout(this, 'LargeIcons');\n break;\n case 'ctrlU':\n e.preventDefault();\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n break;\n }\n };\n FileManager.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n FileManager.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\n };\n FileManager.prototype.setPath = function () {\n this.setProperties({ selectedItems: [] }, true);\n this.ensurePath();\n this.notify(events.clearPathInit, { selectedNode: this.pathId[0] });\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FileManager} newProp\n * @param {FileManager} oldProp\n * @returns void\n * @private\n */\n /* istanbul ignore next */\n // eslint:disable-next-line\n FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var height;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'ajaxSettings':\n this.ajaxSettingSetModel(newProp);\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'allowMultiSelection':\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n else {\n if (this.selectedItems.length > 1) {\n this.setProperties({ selectedItems: this.selectedItems.slice(this.selectedItems.length - 1) }, true);\n }\n removeClass([this.element], CLS.CHECK_SELECT);\n }\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'cssClass':\n this.addCssClass(oldProp.cssClass, newProp.cssClass);\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'detailsViewSettings':\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n this.refresh();\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n this.refresh();\n break;\n case 'height':\n height = !isNOU(newProp.height) ? formatUnit(newProp.height) : newProp.height;\n setAttr(this.element, { 'height': height });\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'locale':\n if (!isNOU(newProp.enableRtl)) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n }\n this.localeSetModelOption(newProp);\n break;\n case 'navigationPaneSettings':\n this.splitterAdjust();\n this.notify(events.modelChanged, { module: 'navigationpane', newProp: newProp, oldProp: oldProp });\n break;\n case 'path':\n this.setPath();\n break;\n case 'searchSettings':\n if (!isNullOrUndefined(newProp.searchSettings.allowSearchOnTyping)) {\n this.setProperties({ searchSettings: { allowSearchOnTyping: newProp.searchSettings.allowSearchOnTyping } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.ignoreCase)) {\n this.setProperties({ searchSettings: { ignoreCase: newProp.searchSettings.ignoreCase } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.filterType)) {\n this.setProperties({ searchSettings: { filterType: newProp.searchSettings.filterType } }, true);\n }\n this.notify(events.modelChanged, { module: 'breadcrumbbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'selectedItems':\n if (this.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (this.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'showFileExtension':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showHiddenItems':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showThumbnail':\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'toolbarSettings':\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'uploadSettings':\n this.updateUploader();\n break;\n case 'view':\n if (newProp.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (newProp.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'width':\n setAttr(this.element, { 'width': !isNOU(newProp.width) ? formatUnit(newProp.width) : newProp.width });\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'sortOrder':\n refresh(this);\n this.notify(events.sortByChange, {});\n break;\n case 'sortBy':\n refresh(this);\n this.notify(events.sortByChange, {});\n if (this.view === 'Details') {\n this.notify(events.sortColumn, {});\n }\n break;\n case 'popupTarget':\n if (this.uploadDialogObj) {\n this.uploadDialogObj.target = newProp.popupTarget;\n }\n if (this.dialogObj) {\n this.dialogObj.target = newProp.popupTarget;\n }\n if (this.extDialogObj) {\n this.extDialogObj.target = newProp.popupTarget;\n }\n if (this.viewerObj) {\n this.viewerObj.target = newProp.popupTarget;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.ajaxSettingSetModel = function (newProp) {\n if (!isNullOrUndefined(newProp.ajaxSettings.url)) {\n this.setProperties({ ajaxSettings: { url: newProp.ajaxSettings.url } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.uploadUrl)) {\n this.setProperties({ ajaxSettings: { uploadUrl: newProp.ajaxSettings.uploadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.downloadUrl)) {\n this.setProperties({ ajaxSettings: { downloadUrl: newProp.ajaxSettings.downloadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.getImageUrl)) {\n this.setProperties({ ajaxSettings: { getImageUrl: newProp.ajaxSettings.getImageUrl } }, true);\n }\n this.setProperties({ path: '/' }, true);\n this.setProperties({ selectedItems: [] }, true);\n _super.prototype.refresh.call(this);\n };\n /* istanbul ignore next */\n FileManager.prototype.localeSetModelOption = function (newProp) {\n this.uploadObj.locale = newProp.locale;\n _super.prototype.refresh.call(this);\n };\n /**\n * Triggers when the component is destroyed.\n *\n * @returns {void}\n */\n FileManager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.refreshing) {\n this.notify(events.destroy, {});\n }\n this.uploadObj.destroy();\n this.uploadObj = null;\n this.uploadDialogObj.destroy();\n this.uploadDialogObj = null;\n this.splitterObj.destroy();\n this.splitterObj = null;\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.dialogObj = null;\n }\n if (this.viewerObj) {\n this.viewerObj.destroy();\n this.viewerObj = null;\n }\n if (this.extDialogObj) {\n this.extDialogObj.destroy();\n this.extDialogObj = null;\n }\n this.element.removeAttribute('style');\n this.element.removeAttribute('tabindex');\n this.removeEventListeners();\n this.unWireEvents();\n this.addCssClass(this.cssClass, null);\n removeClass([this.element], [CLS.RTL, CLS.MOBILE, CLS.CHECK_SELECT]);\n this.element.innerHTML = '';\n _super.prototype.destroy.call(this);\n };\n /**\n * Creates a new folder in file manager.\n *\n * @param {string} name – Specifies the name of new folder in current path.\n * If it is not specified, then the default new folder dialog will be opened.\n * @returns {void}\n */\n FileManager.prototype.createFolder = function (name) {\n this.notify(events.methodCall, { action: 'createFolder' });\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n if (name) {\n if (/[/\\\\|*?\"<>:]/.test(name)) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(this, 'Validation-Invalid').replace('{0}', '\"' + name + '\"'),\n fileExists: null\n }\n };\n createDialog(this, 'Error', result);\n }\n else {\n if (!hasContentAccess(details[0])) {\n createDeniedDialog(this, details[0], events.permissionEditContents);\n }\n else {\n createFolder(this, name);\n }\n }\n }\n else {\n createNewFolder(this);\n }\n };\n /**\n * Deletes the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to delete the nested level folders or\n * files, then specify the filter path along with name of the folders or files when performing the search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then delete confirmation dialog will be opened for selected item.\n *\n * @returns {void}\n */\n FileManager.prototype.deleteFiles = function (ids) {\n this.notify(events.methodCall, { action: 'deleteFiles', ids: ids });\n };\n /**\n * Disables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableToolbarItems = function (items) {\n if (!isNOU(items)) {\n this.toolbarModule.enableItems(items, false);\n }\n };\n /**\n * Downloads the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to download the nested level folders\n * or files, then specify the filter path along with name of the folders or files when performing search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then the selected items will be downloaded.\n *\n * @returns {void}\n */\n FileManager.prototype.downloadFiles = function (ids) {\n this.notify(events.methodCall, { action: 'downloadFiles', ids: ids });\n };\n /**\n * Enables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be enabled.\n * @returns {void}\n */\n FileManager.prototype.enableToolbarItems = function (items) {\n if (!isNOU(items)) {\n this.toolbarModule.enableItems(items, true);\n }\n };\n /**\n * Disables the specified context menu items in file manager. This method is used only in the menuOpen event.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.disableItem(items);\n }\n };\n /**\n * Returns the index position of given current context menu item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns menu item index.\n */\n FileManager.prototype.getMenuItemIndex = function (item) {\n if (this.contextmenuModule) {\n return this.contextmenuModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Returns the index position of given toolbar item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns toolbar item index.\n */\n FileManager.prototype.getToolbarItemIndex = function (item) {\n if (this.toolbarModule) {\n return this.toolbarModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Display the custom filtering files in file manager.\n *\n * @param {Object} filterData - Specifies the custom filter details along with custom file action name,\n * which needs to be sent to the server side. If you do not specify the details, then default action name will be `filter`.\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n FileManager.prototype.filterFiles = function (filterData) {\n this.filterData = filterData ? filterData : null;\n this.setProperties({ selectedItems: [] }, true);\n this.notify(events.selectionChanged, {});\n this.isFiltered = true;\n if (this.breadcrumbbarModule.searchObj.element.value !== '') {\n this.breadcrumbbarModule.searchObj.element.value = '';\n }\n filter(this, events.filterEnd);\n };\n /**\n * Gets the details of the selected files in the file manager.\n *\n * @returns {Object[]} - returns selected files.\n */\n // eslint-disable-next-line\n FileManager.prototype.getSelectedFiles = function () {\n this.notify(events.updateSelectionData, {});\n return this.itemData;\n };\n /**\n * Opens the corresponding file or folder from the given unique identifier.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to open the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n *\n * @returns {void}\n */\n FileManager.prototype.openFile = function (id) {\n this.notify(events.methodCall, { action: 'openFile', id: id });\n };\n /**\n * Refreshes the folder files of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshFiles = function () {\n refresh(this);\n };\n /**\n * Refreshes the layout of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshLayout = function () {\n this.adjustHeight();\n this.notify(events.layoutRefresh, {});\n };\n /**\n * Selects the entire folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.selectAll = function () {\n this.notify(events.methodCall, { action: 'selectAll' });\n };\n /**\n * Deselects the currently selected folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.clearSelection = function () {\n this.notify(events.methodCall, { action: 'clearSelection' });\n };\n /**\n * Renames the file or folder with given new name in file manager.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to rename the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n * If it is not specified, then rename dialog will be opened for selected item.\n *\n * @param {string} name – Specifies the new name of the file or folder in current path. If it is not specified, then rename dialog\n * will be opened for given identifier.\n *\n * @returns {void}\n */\n FileManager.prototype.renameFile = function (id, name) {\n this.notify(events.methodCall, { action: 'renameFile', id: id, newName: name });\n };\n /**\n * Opens the upload dialog in file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.uploadFiles = function () {\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(this);\n };\n /**\n * Specifies the direction of FileManager\n *\n * @param {boolean} rtl - specifies rtl parameter.\n * @returns {void}\n */\n FileManager.prototype.setRtl = function (rtl) {\n if (rtl) {\n this.addCssClass(null, CLS.RTL);\n }\n else {\n this.addCssClass(CLS.RTL, null);\n }\n if (this.uploadObj) {\n this.uploadDialogObj.enableRtl = rtl;\n this.uploadObj.enableRtl = rtl;\n }\n };\n var FileManager_1;\n __decorate([\n Complex({}, AjaxSettings)\n ], FileManager.prototype, \"ajaxSettings\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Complex({}, ContextMenuSettings)\n ], FileManager.prototype, \"contextMenuSettings\", void 0);\n __decorate([\n Property('')\n ], FileManager.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, DetailsViewSettings)\n ], FileManager.prototype, \"detailsViewSettings\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('400px')\n ], FileManager.prototype, \"height\", void 0);\n __decorate([\n Property('LargeIcons')\n ], FileManager.prototype, \"view\", void 0);\n __decorate([\n Complex({}, NavigationPaneSettings)\n ], FileManager.prototype, \"navigationPaneSettings\", void 0);\n __decorate([\n Property('/')\n ], FileManager.prototype, \"path\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"popupTarget\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], FileManager.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], FileManager.prototype, \"selectedItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showFileExtension\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"rootAliasName\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"showHiddenItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showThumbnail\", void 0);\n __decorate([\n Property('Ascending')\n ], FileManager.prototype, \"sortOrder\", void 0);\n __decorate([\n Property('name')\n ], FileManager.prototype, \"sortBy\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], FileManager.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({}, UploadSettings)\n ], FileManager.prototype, \"uploadSettings\", void 0);\n __decorate([\n Property('100%')\n ], FileManager.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDownload\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeImageLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeSend\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStart\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragging\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStop\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDropped\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelection\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelect\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"uploadListCreate\", void 0);\n FileManager = FileManager_1 = __decorate([\n NotifyPropertyChanges\n ], FileManager);\n return FileManager;\n}(Component));\nexport { FileManager };\n","import { Toolbar as BaseToolbar } from '@syncfusion/ej2-navigations';\nimport { select, isNullOrUndefined as isNOU, closest, selectAll } from '@syncfusion/ej2-base';\nimport { createDialog } from '../pop-up/dialog';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { refresh, getPathObject, getLocaleText, getCssClass, sortbyClickHandler } from '../common/utility';\nimport { createDeniedDialog, updateLayout } from '../common/utility';\nimport { GetDetails } from '../common/operations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { cutFiles, copyFiles, pasteHandler, hasEditAccess } from '../common/index';\nimport { doDownload, createNewFolder, uploadItem } from '../common/index';\n/**\n * Toolbar module\n */\nvar Toolbar = /** @class */ (function () {\n /**\n * Constructor for the Toolbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies the parent element.\n * @private\n */\n function Toolbar(parent) {\n this.default = ['Delete', 'Rename', 'Download', 'Cut', 'Copy', 'Paste'];\n this.single = ['Delete', 'Rename', 'Download', 'Cut', 'Copy'];\n this.multiple = ['Delete', 'Download', 'Cut', 'Copy', 'Refresh'];\n this.selection = ['NewFolder', 'Upload', 'SortBy', 'Refresh'];\n this.parent = parent;\n this.render();\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n var _this = this;\n this.items = this.toolbarItemData(this.getItems(this.parent.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj = new BaseToolbar({\n items: _this.items,\n created: _this.toolbarCreateHandler.bind(_this),\n overflowMode: 'Popup',\n clicked: _this.onClicked.bind(_this),\n enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n enableRtl: _this.parent.enableRtl\n });\n _this.toolbarObj.isStringTemplate = true;\n _this.toolbarObj.appendTo('#' + _this.parent.element.id + CLS.TOOLBAR_ID);\n });\n };\n Toolbar.prototype.getItemIndex = function (item) {\n var itemId = this.getId(item);\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i].id === itemId) {\n return i;\n }\n }\n return -1;\n };\n Toolbar.prototype.getItems = function (items) {\n var currItems = items.slice();\n if (this.parent.isDevice && this.parent.allowMultiSelection) {\n currItems.push('SelectAll');\n }\n return currItems;\n };\n /* istanbul ignore next */\n Toolbar.prototype.onClicked = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var tool = args.item.id.substr((this.parent.element.id + '_tb_').length);\n // eslint-disable-next-line\n var details;\n if (tool === 'refresh' || tool === 'newfolder' || tool === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = { cancel: false, fileDetails: details, item: args.item };\n this.parent.trigger('toolbarClick', eventArgs, function (toolbarClickArgs) {\n var sItems;\n var target;\n if (!toolbarClickArgs.cancel) {\n switch (tool) {\n case 'sortby':\n target = closest(args.originalEvent.target, '.' + CLS.TB_ITEM);\n if (target && target.classList.contains('e-toolbar-popup')) {\n args.cancel = true;\n }\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'delete':\n for (var i = 0; i < details.length; i++) {\n if (!hasEditAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'paste':\n _this.parent.folderPath = '';\n pasteHandler(_this.parent);\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'download':\n doDownload(_this.parent);\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n case 'selectall':\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'selection':\n _this.parent.notify(events.clearAllInit, {});\n break;\n }\n }\n });\n };\n Toolbar.prototype.toolbarCreateHandler = function () {\n if (!isNOU(select('#' + this.getId('SortBy'), this.parent.element))) {\n var items = [\n { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '' },\n { separator: true },\n { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('none'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '' }\n ];\n this.buttonObj = new DropDownButton({\n items: items, cssClass: getCssClass(this.parent, CLS.ROOT_POPUP),\n select: sortbyClickHandler.bind(this, this.parent),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl, iconCss: CLS.ICON_SHORTBY\n });\n this.buttonObj.isStringTemplate = true;\n this.buttonObj.appendTo('#' + this.getId('SortBy'));\n }\n if (!isNOU(select('#' + this.getId('View'), this.parent.element))) {\n var gridSpan = '<span class=\"' + CLS.ICON_GRID + ' ' + CLS.MENU_ICON + '\"></span>';\n var largeIconSpan = '<span class=\"' + CLS.ICON_LARGE + ' ' + CLS.MENU_ICON + '\"></span>';\n var layoutItems = [\n {\n id: this.getPupupId('large'), text: largeIconSpan + getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? '' : CLS.TB_OPTION_TICK\n },\n {\n id: this.getPupupId('details'), text: gridSpan + getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : ''\n }\n ];\n this.layoutBtnObj = new DropDownButton({\n iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n cssClass: getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP),\n items: layoutItems, select: this.layoutChange.bind(this),\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n content: '<span class=\"e-tbar-btn-text\">' + getLocaleText(this.parent, 'View') + '</span>'\n });\n this.layoutBtnObj.isStringTemplate = true;\n this.layoutBtnObj.appendTo('#' + this.getId('View'));\n }\n this.hideItems(this.default, true);\n this.hideStatus();\n var btnElement = selectAll('.e-btn', this.toolbarObj.element);\n var _loop_1 = function (btnCount) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n this.parent.refreshLayout();\n };\n Toolbar.prototype.updateSortByButton = function () {\n if (this.buttonObj) {\n var items = this.buttonObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.getPupupId = function (id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n };\n Toolbar.prototype.layoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (args.item.id === this.getPupupId('large')) {\n updateLayout(this.parent, 'LargeIcons');\n }\n }\n else {\n if (args.item.id === this.getPupupId('details')) {\n updateLayout(this.parent, 'Details');\n }\n }\n };\n Toolbar.prototype.toolbarItemData = function (data) {\n var items = [];\n var mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n var itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n var spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\n switch (data[i]) {\n case '|':\n item = { type: 'Separator' };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_UPLOAD, showTextOn: mode };\n break;\n case 'SortBy':\n item = {\n id: itemId, tooltipText: itemTooltip,\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\">' + spanElement + '</button>'\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: CLS.ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\" aria-label=' +\n getLocaleText(this.parent, 'View') + '></button>'\n };\n break;\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip };\n break;\n }\n items.push(item);\n }\n return items;\n };\n Toolbar.prototype.getId = function (id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n };\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.showPaste, this.showPaste, this);\n this.parent.on(events.hidePaste, this.hidePaste, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.sortByChange, this.updateSortByButton, this);\n };\n Toolbar.prototype.reRenderToolbar = function (e) {\n var _this = this;\n if (e.newProp.toolbarSettings.items !== undefined) {\n this.items = this.toolbarItemData(this.getItems(e.newProp.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n if (_this.buttonObj) {\n _this.buttonObj.destroy();\n }\n if (_this.layoutBtnObj) {\n _this.layoutBtnObj.destroy();\n }\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj.items = _this.items;\n _this.toolbarObj.dataBind();\n _this.toolbarCreateHandler();\n });\n }\n };\n Toolbar.prototype.onSelectionChanged = function () {\n this.hideStatus();\n this.hideItems(this.single, true);\n this.hideItems(this.selection, false);\n if (this.parent.selectedItems.length === 1) {\n this.hideItems(this.single, false);\n this.hideItems(this.selection, true);\n }\n else if (this.parent.selectedItems.length > 1) {\n this.hideItems(this.multiple, false);\n this.hideItems(this.selection, true);\n }\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele) {\n var txt = void 0;\n if (this.parent.selectedItems.length === 1) {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Item-Selection');\n }\n else {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Items-Selection');\n }\n select('.e-tbar-btn-text', ele).textContent = txt;\n this.toolbarObj.hideItem(ele.parentElement, false);\n }\n };\n Toolbar.prototype.hideItems = function (tools, toHide) {\n for (var i = 0; i < tools.length; i++) {\n var ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n };\n Toolbar.prototype.hideStatus = function () {\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n };\n Toolbar.prototype.showPaste = function () {\n this.hideItems(['Paste'], false);\n };\n Toolbar.prototype.hidePaste = function () {\n this.hideItems(['Paste'], true);\n };\n Toolbar.prototype.onLayoutChange = function () {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE;\n var items = this.layoutBtnObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('large')) {\n items[itemCount].iconCss = this.parent.view === 'LargeIcons' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('details')) {\n items[itemCount].iconCss = this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.showPaste, this.showPaste);\n this.parent.off(events.hidePaste, this.hidePaste);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.sortByChange, this.updateSortByButton);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n this.reRenderToolbar(e);\n break;\n }\n }\n };\n Toolbar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.destroy();\n }\n this.toolbarObj.destroy();\n this.parent.refreshLayout();\n };\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n var ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { TreeView as BaseTreeView } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, select, setValue, getValue, Draggable } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, closest } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { createDialog } from '../pop-up/dialog';\nimport { updatePath, getPath, getDirectories } from '../common/utility';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getDirectoryPath, getModule } from '../common/index';\nimport { copyFiles, cutFiles, removeActive, pasteHandler, getParentPath, readDropPath } from '../common/index';\nimport { hasEditAccess, createDeniedDialog, hasDownloadAccess, getAccessClass } from '../common/index';\n/**\n * NavigationPane module\n */\nvar NavigationPane = /** @class */ (function () {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function NavigationPane(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n this.expandTree = false;\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.renameParent = null;\n // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = null;\n // Specifies whether the nodeClicked event of the treeview control is triggered or not.\n this.isNodeClickCalled = false;\n // Specifies whether to restrict node selection in the treeview control.\n this.restrictSelecting = false;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: 'ctrl+x',\n ctrlC: 'ctrl+c',\n ctrlV: 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n NavigationPane.prototype.onInit = function () {\n if (!isNOU(this.treeObj)) {\n return;\n }\n // eslint-disable-next-line\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', rootData);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new BaseTreeView({\n fields: {\n dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name',\n hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'\n },\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n sortOrder: this.parent.navigationPaneSettings.sortOrder,\n nodeSelecting: this.onNodeSelecting.bind(this),\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + CLS.TREE_ID);\n this.wireEvents();\n };\n NavigationPane.prototype.addDragDrop = function () {\n var _this = this;\n if (!this.parent.isMobile && this.treeObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.treeObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n dragTarget: '.' + CLS.FULLROW,\n distance: 5,\n dragArea: this.parent.element,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: true,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n NavigationPane.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(CLS.FULLROW)) {\n return null;\n }\n var dragLi = closest(dragTarget, 'li');\n this.parent.dragPath = '';\n this.parent.dragData = [];\n this.parent.activeElements = [];\n this.parent.activeElements = [dragLi];\n this.parent.dragNodes = [];\n getModule(this.parent, dragLi);\n // eslint-disable-next-line\n this.parent.dragData = this.getTreeData(dragLi);\n this.parent.dragPath = this.getDragPath(dragLi, this.parent.dragData[0].name);\n this.parent.dragNodes.push(this.parent.dragData[0].name);\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n NavigationPane.prototype.getDragPath = function (dragLi, text) {\n var path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n };\n NavigationPane.prototype.getDropPath = function (node, text) {\n var id = node.getAttribute('data-id');\n var newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId);\n };\n NavigationPane.prototype.onDrowNode = function (args) {\n var eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n // eslint-disable-next-line\n var directories = getDirectories(files);\n if (directories.length > 0) {\n var length_1 = 0;\n // eslint-disable-next-line\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line\n folders[length_1]._fm_icon = 'e-fe-folder';\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', folders[length_1]);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length_1])) {\n setValue('class', getAccessClass(folders[length_1]), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length_1]);\n }\n length_1++;\n }\n // eslint-disable-next-line\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n };\n // Node Selecting event handler\n NavigationPane.prototype.onNodeSelecting = function (args) {\n if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {\n this.restrictSelecting = false;\n this.isNodeClickCalled = false;\n return;\n }\n if (!this.renameParent) {\n this.parent.activeModule = 'navigationpane';\n // eslint-disable-next-line\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.treeObj.selectedNodes = this.isNodeClickCalled ? this.previousSelected : this.treeObj.selectedNodes;\n this.previousSelected = this.treeObj.selectedNodes;\n if (!isNOU(this.parent) && !isNOU(this.parent.contextmenuModule)) {\n this.parent.contextmenuModule.contextMenu.enableItems(['Open'], true);\n }\n }\n }\n };\n // Opens the folder while clicking open context menu item in the treeview.\n NavigationPane.prototype.openFileOnContextMenuClick = function (node) {\n var data = this.treeObj.getTreeData(node);\n // eslint-disable-next-line\n this.parent.selectedItems = [];\n this.parent.itemData = data;\n this.activeNode = node;\n this.parent.activeModule = 'navigationpane';\n updatePath(node, this.parent.itemData[0], this.parent);\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n this.treeObj.selectedNodes = [node.getAttribute('data-uid')];\n };\n NavigationPane.prototype.onNodeSelected = function (args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent) {\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n // eslint-disable-next-line\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n var previousPath = this.parent.path;\n updatePath(args.node, this.parent.itemData[0], this.parent);\n if (previousPath !== this.parent.path) {\n this.expandNodeTarget = null;\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.onPathDrag = function (args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpand = function (args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n var text = getValue('text', args.nodeData);\n var id = args.node.getAttribute('data-id');\n var isId = isNOU(id) ? false : true;\n var newText = isNOU(id) ? text : id;\n var path = getPath(args.node, newText, isId);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpanded = function (args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n };\n NavigationPane.prototype.onNodeClicked = function (args) {\n this.parent.activeModule = 'navigationpane';\n this.previousSelected = this.treeObj.selectedNodes;\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n var layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(events.modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeEditing = function (args) {\n if (!isNOU(args.innerHtml)) {\n args.cancel = true;\n }\n };\n NavigationPane.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n // eslint-disable-next-line\n var currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n var ul = select('.' + CLS.LIST_PARENT, sNode);\n if (isNOU(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], !this.expandTree);\n }\n this.expandNodeTarget = '';\n }\n this.expandTree = false;\n if (isNOU(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + CLS.LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.selectedNodes = [sleId];\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + CLS.ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.removeChildNodes(id);\n this.addChild(args.files, id, false);\n this.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n };\n NavigationPane.prototype.onCreateEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n };\n NavigationPane.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n var name_1 = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name_1], this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDeleteEnd = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n var selectedNode = this.treeObj.selectedNodes[0];\n var selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n var selectedNodeEle = closest(selcetedEle, '.' + CLS.LIST_PARENT).parentElement;\n this.treeObj.selectedNodes = [selectedNodeEle.getAttribute('data-uid')];\n this.treeObj.dataBind();\n }\n this.updateTree(args);\n };\n NavigationPane.prototype.onRefreshEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEndParent = function (args) {\n var id = this.renameParent ? this.renameParent : this.parent.pathId[this.parent.pathId.length - 1];\n this.expandTree = this.treeObj.expandedNodes.indexOf(this.treeObj.selectedNodes[0]) !== -1;\n this.updateTreeNode(args, id);\n this.parent.expandedId = null;\n if (this.renameParent) {\n this.renameParent = null;\n }\n else {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.renameText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('_fm_pId', 'equal', id, false));\n }\n }\n if (resultData.length > 0) {\n this.isRenameParent = true;\n var id_1 = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEnd = function (args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData();\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(data).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(data).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.currentItemText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n this.renameParent = getValue(this.treeObj.fields.parentID, resultData[0]);\n this.parent.expandedId = this.renameParent;\n this.parent.itemData = this.getTreeData(this.renameParent);\n read(this.parent, events.renameEndParent, this.parent.filterPath.replace(/\\\\/g, '/'));\n }\n }\n };\n NavigationPane.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, events.finalizeEnd, '/');\n if (e.oldProp.navigationPaneSettings.sortOrder !== e.newProp.navigationPaneSettings.sortOrder) {\n this.treeObj.sortOrder = e.newProp.navigationPaneSettings.sortOrder;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDownLoadInit = function () {\n this.doDownload();\n };\n NavigationPane.prototype.onSelectionChanged = function (e) {\n this.treeObj.selectedNodes = [e.selectedNode];\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchDrag) {\n moveNames = this.getMoveNames(args.files, this.parent.isSearchDrag, this.parent.dragPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getMoveNames = function (files, flag, path) {\n var moveNames = [];\n for (var i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n var name_2 = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n var index = path.lastIndexOf('/');\n name_2 = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n // eslint-disable-next-line\n var resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name_2, false));\n for (var j = 0; j < resultData.length; j++) {\n var fPath = getValue('filterPath', resultData[j]);\n fPath = fPath.replace(/\\\\/g, '/');\n if (fPath === path) {\n moveNames.push(getValue(this.treeObj.fields.id, resultData[j]));\n break;\n }\n }\n }\n }\n }\n return moveNames;\n };\n NavigationPane.prototype.onCutEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchCut) {\n this.moveNames = this.getMoveNames(args.files, this.parent.isSearchCut, this.parent.targetPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n // eslint-disable-next-line\n var data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n // eslint-disable-next-line\n var resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n this.treeObj.selectedNodes = [getValue('_fm_id', resultObj)];\n this.treeObj.dataBind();\n }\n };\n NavigationPane.prototype.onDropPath = function (args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n };\n NavigationPane.prototype.onpasteEnd = function (args) {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', getValue('id', args.cwd), false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', getValue('name', args.cwd), false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', getValue('filterPath', args.cwd), false));\n }\n }\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1;\n this.removeChildNodes(id);\n this.addChild(args.files, id, toExpand);\n }\n this.parent.expandedId = null;\n this.onPathChanged(args);\n if (this.parent.isDragDrop) {\n this.checkDropPath(args);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.checkDropPath = function (args) {\n if (this.parent.hasId) {\n this.parent.isDropEnd = !this.parent.isPasteError;\n readDropPath(this.parent);\n return;\n }\n if ((this.parent.dropPath.indexOf(getDirectoryPath(this.parent, args)) === -1)) {\n this.parent.isDropEnd = false;\n readDropPath(this.parent);\n }\n else {\n this.parent.isDropEnd = !this.parent.isPasteError;\n }\n };\n NavigationPane.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n // eslint-disable-next-line\n var obj = this.parent.isDragDrop ? this.parent.dragData : this.parent.actionRecords;\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n };\n NavigationPane.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.activeElements = [this.activeNode];\n }\n };\n NavigationPane.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.downloadInit, this.onDownLoadInit, this);\n this.parent.on(events.initialEnd, this.onInitialEnd, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutEnd, this.onCutEnd, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.nodeExpand, this.onNodeExpanded, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.updateTreeSelection, this.onSelectionChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.openEnd, this.onOpenEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.renameEndParent, this.onRenameEndParent, this);\n this.parent.on(events.clearPathInit, this.onClearPathInit, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.dragEnd, this.onDragEnd, this);\n this.parent.on(events.dragging, this.onDragging, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.pathDrag, this.onPathDrag, this);\n };\n NavigationPane.prototype.removeEventListener = function () {\n this.parent.off(events.initialEnd, this.onInitialEnd);\n this.parent.off(events.downloadInit, this.onDownLoadInit);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutEnd, this.onCutEnd);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.updateTreeSelection, this.onSelectionChanged);\n this.parent.off(events.nodeExpand, this.onNodeExpanded);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onOpenEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.renameEndParent, this.onRenameEndParent);\n this.parent.off(events.clearPathInit, this.onClearPathInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.dragEnd, this.onDragEnd);\n this.parent.off(events.dragging, this.onDragging);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.pathDrag, this.onPathDrag);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n // eslint-disable-next-line\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDragging = function (args) {\n var ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n var level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n };\n NavigationPane.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, 'li');\n this.parent.dropData = this.getTreeData(dropLi)[0];\n this.parent.dropPath = this.getDropPath(dropLi, getValue('name', this.parent.dropData));\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'navigationpane';\n };\n NavigationPane.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.treeObj) {\n this.unWireEvents();\n this.treeObj.destroy();\n }\n };\n NavigationPane.prototype.wireEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n NavigationPane.prototype.unWireEvents = function () {\n this.keyboardModule.destroy();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.keyDown = function (e) {\n var action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n if (this.parent.pathId[0] !== this.activeNode.getAttribute('data-uid')) {\n this.updateItemData();\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n this.removeNodes = [];\n createDialog(this.parent, 'Delete');\n }\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n if (!hasEditAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionEdit);\n }\n else {\n this.updateRenameData();\n createDialog(this.parent, 'Rename');\n }\n }\n break;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getTreeData = function (args) {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData(args);\n for (var i = 0; i < data.length; i++) {\n if (isNOU(getValue('hasChild', data[i]))) {\n setValue('hasChild', false, data[i]);\n }\n }\n return data;\n };\n NavigationPane.prototype.updateRenameData = function () {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n };\n NavigationPane.prototype.updateItemData = function () {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n };\n NavigationPane.prototype.updateActionData = function () {\n this.updateItemData();\n var newPath = getParentPath(this.parent.path);\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathId.pop();\n this.parent.pathNames.pop();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.doDownload = function () {\n var newPath = getParentPath(this.parent.path);\n var itemId = this.treeObj.selectedNodes[0];\n var name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n };\n return NavigationPane;\n}());\nexport { NavigationPane };\n","import { Grid, Resize, ContextMenu, Sort, VirtualScroll } from '@syncfusion/ej2-grids';\nimport { select, KeyboardEvents, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, Touch, setValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Internationalization, closest, Draggable } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\nimport { removeBlur, openAction, getImageUrl, fileType, getSortedData, getLocaleText, updateLayout } from '../common/utility';\nimport { createEmptyElement } from '../common/utility';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { cutFiles, addBlur, openSearchFolder, copyFiles, removeActive, pasteHandler, getPathObject, getName } from '../common/index';\nimport { hasReadAccess, hasEditAccess, hasDownloadAccess, doRename, getAccessClass, createDeniedDialog, rename } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule, getFullPath } from '../common/index';\nimport { getDirectoryPath, updateRenamingData, getItemName, doDeleteFiles, doDownloadFiles } from '../common/index';\n/**\n * DetailsView module\n */\nvar DetailsView = /** @class */ (function () {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n function DetailsView(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.pasteOperation = false;\n this.uploadOperation = false;\n Grid.Inject(Resize, ContextMenu, Sort, VirtualScroll);\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.GRID_ID, this.parent.element);\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n tab: 'tab',\n moveDown: 'downarrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n ctrlUp: 'ctrl+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n end: 'end',\n home: 'home',\n moveUp: 'uparrow',\n del: 'delete',\n ctrlX: 'ctrl+x',\n ctrlC: 'ctrl+c',\n ctrlV: 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftdel: 'shift+delete',\n ctrlD: 'ctrl+d',\n f2: 'f2',\n ctrlA: 'ctrl+a',\n enter: 'enter'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n if (this.parent.isMobile) {\n sortSettings = [];\n }\n else {\n if (this.parent.sortOrder !== 'None') {\n sortSettings = [{ direction: this.parent.sortOrder, field: this.parent.sortBy }];\n }\n }\n this.gridObj = new Grid({\n dataSource: items,\n allowSorting: true,\n rowSelecting: this.onSelection.bind(this, 'select'),\n rowDeselecting: this.onSelection.bind(this, 'unselect'),\n rowSelected: this.onSelected.bind(this),\n rowDeselected: this.onDeSelection.bind(this),\n allowResizing: this.parent.detailsViewSettings.columnResizing,\n selectionSettings: {\n type: this.parent.allowMultiSelection ? 'Multiple' : 'Single',\n checkboxMode: 'ResetOnRowClick'\n },\n enableRtl: this.parent.enableRtl,\n pageSettings: { pageSize: 20 },\n sortSettings: { allowUnsort: false, columns: sortSettings },\n columns: columns,\n recordDoubleClick: this.DblClickEvents.bind(this),\n beforeDataBound: this.onBeforeDataBound.bind(this),\n dataBound: this.onDataBound.bind(this),\n rowDataBound: this.onRowDataBound.bind(this),\n actionBegin: this.onActionBegin.bind(this),\n headerCellInfo: this.onHeaderCellInfo.bind(this),\n width: '100%',\n beforeCopy: function (args) { args.cancel = true; },\n // eslint-disable-next-line\n load: function (args) {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\n });\n this.gridObj.isStringTemplate = true;\n this.gridObj.appendTo('#' + this.parent.element.id + CLS.GRID_ID);\n this.wireEvents();\n this.adjustHeight();\n this.emptyArgs = args;\n }\n };\n DetailsView.prototype.checkNameWidth = function () {\n var initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (var i = 0; i < initialColumn.length; i++) {\n if (initialColumn[i].field === 'name') {\n this.isNameWidth = !isNOU(initialColumn[i].width);\n return;\n }\n }\n };\n DetailsView.prototype.adjustWidth = function (columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n var nameWidth = void 0;\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n nameWidth = (this.element.clientWidth <= 500) ? '120px' : 'auto';\n }\n else {\n nameWidth = (this.element.clientWidth <= 680) ? ((fieldName === 'name') ? '120px' : '180px') : 'auto';\n }\n columns[i].width = nameWidth;\n }\n }\n };\n DetailsView.prototype.getColumns = function () {\n var columns;\n if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: '<div class=\"e-fe-text\">${name}</div><div class=\"e-fe-date\">${_fm_modified}</div>' +\n '<span class=\"e-fe-size\">${size}</span>'\n }\n ];\n }\n else {\n columns = JSON.parse(JSON.stringify(this.parent.detailsViewSettings.columns));\n this.adjustWidth(columns, 'name');\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].headerText = getLocaleText(this.parent, columns[i].headerText);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth, template: '<span class=\"e-fe-icon ${_fm_iconClass}\"></span>',\n allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: '<span class=\"e-fe-icon e-fe-folder\"></span>'\n };\n columns.unshift(icon);\n if (this.parent.allowMultiSelection) {\n var cWidth = (this.parent.isBigger ? '36' : '26');\n var cBox = {\n type: 'checkbox', width: cWidth, minWidth: cWidth, customAttributes: { class: 'e-fe-checkbox' },\n allowResizing: false, allowSorting: false\n };\n if (this.parent.isMobile) {\n columns.push(cBox);\n }\n else {\n columns.unshift(cBox);\n }\n }\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n return columns;\n };\n DetailsView.prototype.adjustHeight = function () {\n if (!this.gridObj) {\n return;\n }\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n var gridHeader = select('.' + CLS.GRID_HEADER, this.parent.element);\n var height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n };\n DetailsView.prototype.renderCheckBox = function () {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n };\n DetailsView.prototype.onRowDataBound = function (args) {\n var td = select('.e-fe-grid-name', args.row);\n if (!td) {\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'name') {\n td = args.row.children[this.parent.allowMultiSelection ? (i + 2) : (i + 1)];\n break;\n }\n }\n }\n if (td) {\n td.setAttribute('title', getValue('name', args.data));\n }\n if (this.parent.isLayoutChange && this.parent.isCut && this.parent.fileAction === 'move' &&\n this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n if (this.parent.selectedNodes.indexOf(getValue('name', args.data)) !== -1) {\n addBlur(args.row);\n }\n }\n if (!this.parent.showFileExtension && getValue('isFile', args.data)) {\n var textEle = args.row.querySelector('.e-fe-text');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n var sizeEle = args.row.querySelector('.e-fe-size');\n var modifiedSize = void 0;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n var sizeValue = getValue('size', args.data);\n var intl = new Internationalization(this.parent.locale);\n var value = intl.formatNumber((sizeValue / 1024), { format: 'n' });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n var dateEle = args.row.querySelector('.e-fe-date');\n var intl = new Internationalization(this.parent.locale);\n var columns = this.parent.detailsViewSettings.columns;\n // eslint-disable-next-line\n var format = void 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n var formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n var checkWrap = args.row.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n if (!hasEditAccess(args.data)) {\n args.row.className += ' ' + getAccessClass(args.data);\n }\n var eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n DetailsView.prototype.onActionBegin = function (args) {\n if (args.requestType === 'sorting') {\n this.parent.setProperties({ sortOrder: args.direction }, true);\n this.parent.setProperties({ sortBy: args.columnName }, true);\n if (this.parent.selectedItems.length !== 0) {\n this.sortItem = true;\n var rows = this.gridObj.getSelectedRowIndexes();\n var len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.sortSelectedNodes.push(getValue(this.parent.hasId ? 'id' : 'name', data));\n len--;\n }\n }\n this.parent.notify(events.sortByChange, {});\n }\n };\n DetailsView.prototype.onHeaderCellInfo = function (args) {\n var checkWrap = args.node.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n };\n DetailsView.prototype.onBeforeDataBound = function (args) {\n showSpinner(this.parent.element);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, this.gridObj.dataSource);\n args.result = items;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if (this.parent.selectedItems.length !== 0) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem) {\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n var hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n var hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n var hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.classList.remove('e-scrollShow');\n }\n this.isRendered = true;\n this.parent.isLayoutChange = false;\n hideSpinner(this.parent.element);\n this.checkEmptyDiv(this.emptyArgs);\n this.isInteracted = this.isLoaded ? true : this.isInteracted;\n this.isLoaded = false;\n };\n DetailsView.prototype.selectRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var sRecords = [];\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var items = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var rData = [];\n if (this.parent.hasId) {\n rData = new DataManager(items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (nData.length > 0) {\n rData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (rData.length > 0) {\n var index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n };\n DetailsView.prototype.onSortColumn = function () {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n };\n DetailsView.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'detailsViewSettings':\n if (!isNullOrUndefined(this.gridObj)) {\n this.checkNameWidth();\n var columns = this.getColumns();\n this.gridObj.columns = columns;\n this.gridObj.allowResizing = this.parent.detailsViewSettings.columnResizing;\n this.gridObj.dataBind();\n this.gridObj.refreshColumns();\n }\n break;\n case 'selectedItems':\n this.interaction = false;\n if (this.parent.selectedItems.length !== 0) {\n if (!this.parent.allowMultiSelection) {\n var slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNOU(this.gridObj)) {\n this.gridObj.clearSelection();\n }\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n };\n DetailsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) {\n this.parent.searchedItems = [];\n if (!this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n else {\n this.updatePathColumn();\n }\n }\n removeBlur(this.parent);\n if (this.parent.view === 'Details') {\n /* istanbul ignore next */\n this.isInteracted = false;\n showSpinner(this.parent.element);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n }\n this.emptyArgs = args;\n };\n DetailsView.prototype.updatePathColumn = function () {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n var pathColumn = {\n field: 'filterPath', headerText: getLocaleText(this.parent, 'Path'), minWidth: 180, width: 'auto'\n };\n this.gridObj.columns.push(pathColumn);\n this.adjustWidth(this.gridObj.columns, 'filterPath');\n this.adjustWidth(this.gridObj.columns, 'name');\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n };\n DetailsView.prototype.checkEmptyDiv = function (args) {\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n if (items.length === 0 && !isNOU(this.element.querySelector('.' + CLS.GRID_VIEW))) {\n createEmptyElement(this.parent, this.element, args);\n }\n else if (items.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n if (this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY)) {\n var emptyDiv = this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY);\n this.element.querySelector('.' + CLS.GRID_VIEW).removeChild(emptyDiv);\n }\n else {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n }\n };\n DetailsView.prototype.onOpenInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n // eslint-disable-next-line\n var data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n };\n DetailsView.prototype.DblClickEvents = function (args) {\n this.gridObj.selectRows([args.rowIndex]);\n // eslint-disable-next-line\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.openContent = function (data) {\n var _this = this;\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var name_2 = getValue('name', data);\n if (getValue('isFile', data)) {\n var icon = fileType(data);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, data);\n createImageDialog(_this.parent, name_2, imgUrl);\n }\n }\n else {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', data);\n var newPath = _this.parent.path + (isNOU(id) ? name_2 : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(name_2);\n _this.parent.pathId.push(getValue('_fm_id', data));\n _this.parent.itemData = [data];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, data);\n }\n _this.parent.isFiltered = false;\n }\n _this.element.focus();\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(events.hideLayout, {});\n this.gridObj.element.classList.remove(CLS.DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSearchFiles = function (args) {\n if (this.parent.view === 'Details') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (!this.parent.isLayoutChange) {\n this.parent.layoutSelectedItems = [];\n }\n this.updatePathColumn();\n this.parent.searchedItems = args.files;\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.removePathColumn = function (isRefresh) {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath')) {\n /* istanbul ignore next */\n if (this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n this.parent.notify(events.sortByChange, {});\n }\n this.gridObj.columns.pop();\n if (!isRefresh) {\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n }\n };\n DetailsView.prototype.onFinalizeEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n };\n DetailsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n DetailsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n };\n DetailsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n };\n DetailsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.isInteracted = false;\n this.removePathColumn(false);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.emptyArgs = args;\n };\n DetailsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n DetailsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'Details') {\n this.isInteracted = false;\n if (this.parent.allowMultiSelection) {\n this.gridObj.selectionModule.selectRowsByRange(0, this.gridObj.getRows().length);\n }\n else {\n this.gridObj.selectRow(this.gridObj.getRows().length - 1);\n }\n this.isInteracted = true;\n this.interaction = true;\n }\n };\n DetailsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelectionChanged = function () {\n removeClass([this.element], CLS.HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], CLS.HEADER_CHECK);\n }\n };\n DetailsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n };\n DetailsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n DetailsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n DetailsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.addEventListener = function () {\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.search, this.onSearchFiles, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.sortColumn, this.onSortColumn, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n this.parent.on(events.pasteInit, this.onPasteInit, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.resizeEnd, this.onDetailsResizeHandler, this);\n this.parent.on(events.splitterResize, this.onDetailsResize, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n };\n DetailsView.prototype.removeEventListener = function () {\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteInit, this.onPasteInit);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.search, this.onSearchFiles);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.filterEnd, this.onPathChanged);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.sortColumn, this.onSortColumn);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.resizeEnd, this.onDetailsResizeHandler);\n this.parent.off(events.splitterResize, this.onDetailsResize);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n };\n DetailsView.prototype.onActionFailure = function () { this.interaction = true; };\n // eslint-disable-next-line\n DetailsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n };\n DetailsView.prototype.onPasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n };\n DetailsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n DetailsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n var name;\n if (dragLi.getElementsByClassName('e-fe-text')[0]) {\n name = dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName(\"e-rowcell e-templatecell\")[0].nextElementSibling) {\n name = dragLi.getElementsByClassName(\"e-rowcell e-templatecell\")[0].nextElementSibling.innerText;\n }\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n // eslint-disable-next-line\n this.parent.dragData = this.gridObj.getSelectedRecords();\n var dragRow;\n if (this.parent.dragData.length === 0 && dragLi) {\n dragRow = this.gridObj.getRowInfo(dragLi);\n }\n if (dragRow) {\n this.parent.dragData.push(dragRow.rowData);\n }\n this.parent.dragPath = this.parent.path;\n this.parent.activeElements = this.gridObj.getSelectedRows();\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDetailsResize = function () {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n var gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n var gridHeaderColGroup = gridHeader.firstChild.childNodes[0];\n var gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n var gridHeaderColNames = this.gridObj.getColumns();\n for (var i = 0; i < gridHeaderColNames.length; i++) {\n if ((!this.isNameWidth && gridHeaderColNames[i].field === 'name') || gridHeaderColNames[i].field === 'filterPath') {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n if (this.element.clientWidth <= 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 180px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 180px');\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n }\n }\n }\n };\n DetailsView.prototype.onDetailsResizeHandler = function () {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n this.adjustHeight();\n }\n };\n DetailsView.prototype.createDragObj = function () {\n var _this = this;\n if (!this.parent.isMobile && this.gridObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + CLS.ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: true,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (!args.target.closest('tr')) {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n else {\n // eslint-disable-next-line\n var info = null;\n // eslint-disable-next-line\n info = this.gridObj.getRowInfo(args.target).rowData;\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n }\n };\n DetailsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n };\n DetailsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {\n this.onPathChanged(args);\n }\n }\n };\n DetailsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns modules name.\n * @private\n */\n DetailsView.prototype.getModuleName = function () {\n return 'detailsview';\n };\n DetailsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n this.unWireEvents();\n this.gridObj.destroy();\n }\n };\n DetailsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelection = function (action, args) {\n var eventArgs = {\n action: action, fileDetails: args.data, isInteracted: this.interaction, cancel: false, target: args.target\n };\n this.parent.trigger('fileSelection', eventArgs);\n args.cancel = eventArgs.cancel;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelected = function (args) {\n this.parent.activeModule = 'detailsview';\n if (!this.parent.isLayoutChange || this.parent.isFiltered) {\n this.selectedRecords();\n }\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.getSelectedRowIndexes().length === 1) {\n this.firstItemIndex = this.gridObj.selectedRowIndex;\n }\n this.gridObj.element.setAttribute('tabindex', '-1');\n this.triggerSelect('select', args);\n var item = this.gridObj.getRowByIndex(this.gridObj.selectedRowIndex);\n this.updateType(item);\n if (!isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n if (this.gridObj.getSelectedRowIndexes().length !== 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\n item.querySelector('.e-rowcell.e-fe-checkbox').removeAttribute('tabindex');\n }\n if (!isNOU(this.gridObj) && !isNOU(this.gridObj.element.querySelector('.e-checkselectall'))) {\n this.gridObj.element.querySelector('.e-checkselectall').setAttribute('tabindex', '-1');\n }\n var rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i] === this.gridObj.selectedRowIndex) {\n this.gridObj.getRowByIndex(rows[i]).setAttribute('tabindex', '0');\n }\n else {\n this.gridObj.getRowByIndex(rows[i]).removeAttribute('tabindex');\n }\n }\n }\n var len = rows.length;\n if (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n var indexes = getValue('rowIndexes', args);\n var multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNOU(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if (this.parent.allowMultiSelection && !isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n var checkItem = item.querySelector('.e-checkselect');\n checkItem.focus();\n }\n this.addFocus(this.gridObj.selectedRowIndex);\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'Details' && !isNOU(this.gridObj)) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n }\n };\n DetailsView.prototype.selectedRecords = function () {\n this.parent.setProperties({ selectedItems: [] }, true);\n // eslint-disable-next-line\n var selectedRecords = this.gridSelectNodes();\n var selectSize = 0;\n while (selectSize < selectedRecords.length) {\n var record = selectedRecords[selectSize];\n var name_3 = getItemName(this.parent, record);\n this.parent.selectedItems.push(name_3);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n };\n DetailsView.prototype.onDeSelection = function (args) {\n /* istanbul ignore next */\n if (!this.parent.allowMultiSelection && isNOU(args.data)) {\n this.gridObj.getRowByIndex(args.rowIndex).removeAttribute('tabindex');\n }\n else if (this.gridObj.getSelectedRowIndexes().length > 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n this.gridObj.getRowByIndex(lastItemIndex).querySelector('.e-checkselect').removeAttribute('tabindex');\n }\n if (this.gridObj.selectedRowIndex === -1) {\n this.gridObj.element.setAttribute('tabindex', '0');\n }\n if (!this.isInteracted) {\n this.isInteracted = true;\n return;\n }\n this.selectedRecords();\n if (this.parent.selectedItems.length === 0) {\n setValue('enableSelectMultiTouch', false, this.gridObj.selectionModule);\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('unselect', args);\n this.parent.visitedItem = null;\n };\n DetailsView.prototype.triggerSelect = function (action, args) {\n var eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n };\n DetailsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.gridObj.element, {\n keyAction: this.keyupHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.gridObj.element, 'blur', this.removeFocus, this);\n };\n DetailsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n var ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: function (eve) {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n proxy_1.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (proxy_1.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', proxy_1.parent.allowMultiSelection, proxy_1.gridObj.selectionModule);\n addClass([proxy_1.parent.element], CLS.MULTI_SELECT);\n }\n var target = e.originalEvent.target;\n if (target) {\n var row = closest(target, '.' + CLS.ROW);\n var index = proxy_1.gridObj.getRows().indexOf(row);\n proxy_1.gridObj.selectRow(index);\n }\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.removeSelection = function () {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n this.gridObj.clearSelection();\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.selectedRowIndex === -1) {\n this.startIndex = null;\n }\n this.isInteracted = true;\n };\n DetailsView.prototype.removeFocus = function () {\n this.addFocus(null);\n };\n DetailsView.prototype.getFocusedItemIndex = function () {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('aria-rowindex'), 10) : null;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n DetailsView.prototype.keydownHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n // eslint-disable-next-line\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focItem = this.getFocusedItem();\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n // eslint-disable-next-line\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1) {\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n // eslint-disable-next-line\n var data = JSON.parse(JSON.stringify(rowData));\n this.openContent(data);\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlA':\n if (!isNOU(gridItems[0]) && this.parent.allowMultiSelection) {\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n var crtSrlPos = cnTable.scrollTop;\n var crtFocusIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n cnTable.scrollTop = crtSrlPos;\n if (crtFocusIndex !== -1) {\n this.addFocus(crtFocusIndex);\n }\n }\n break;\n case 'ctrlHome':\n case 'tab':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {\n this.gridObj.selectRow(0);\n }\n else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {\n return;\n }\n else {\n this.addFocus(0);\n }\n }\n break;\n case 'ctrlEnd':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow(gridLength - 1);\n }\n else {\n this.addFocus(gridLength - 1);\n }\n }\n break;\n case 'shiftHome':\n case 'shiftEnd':\n case 'csHome':\n case 'csEnd':\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : gridItems.length - 1);\n }\n else {\n if (!isNOU(gridItems[0])) {\n if (!isNOU(selIndex) && selIndex !== -1) {\n this.checkRowsKey(gridItems, selIndex, null, e);\n }\n else {\n if (e.action === 'csHome' || e.action === 'shiftHome') {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n }\n }\n }\n }\n break;\n case 'space':\n case 'csSpace':\n case 'shiftSpace':\n case 'ctrlSpace':\n this.spaceSelection(selRowIndeces, focIndex, selIndex, e);\n break;\n case 'csUp':\n case 'csDown':\n case 'shiftUp':\n case 'shiftDown':\n this.shiftMoveMethod(gridItems, selIndex, focIndex, selRowIndeces, e);\n break;\n case 'ctrlUp':\n case 'ctrlDown':\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n break;\n case 'home':\n firstItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[0])];\n this.parent.setProperties({ selectedItems: firstItem }, true);\n this.selectRecords(firstItem);\n break;\n case 'moveUp':\n case 'moveDown':\n this.moveFunction(gridItems, e, selIndex);\n break;\n case 'end':\n lastItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[gridLength - 1])];\n this.parent.setProperties({ selectedItems: lastItem }, true);\n this.selectRecords(lastItem);\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.gridSelectNodes = function () {\n return this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.doDownload = function () {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionDownload);\n return;\n }\n }\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n };\n DetailsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasEditAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n DetailsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n DetailsView.prototype.updateRenameData = function () {\n // eslint-disable-next-line\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftMoveMethod = function (gridItems, selIndex, focIndex, selRowIndeces, e) {\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n if (selIndex === -1 && (e.action === 'csUp' || e.action === 'csDown')) {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n else if (selIndex !== -1 && focIndex !== selIndex &&\n !((e.action === 'csUp' || e.action === 'csDown') && this.isSelected(selRowIndeces, focIndex))) {\n this.shiftSelectFocusItem(selIndex, focIndex, selRowIndeces, e);\n }\n else {\n this.shiftSelectedItem(selIndex, selRowIndeces, gridItems, e);\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.moveFunction = function (selectedItems, e, rowIndex) {\n if (!isNOU(this.getFocusedItem()) && this.parent.allowMultiSelection) {\n if (e.action === 'moveDown') {\n this.gridObj.selectRow(this.getFocusedItemIndex() + 1);\n }\n else {\n this.gridObj.selectRow(this.getFocusedItemIndex() - 1);\n }\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n if (e.action === 'moveDown' || e.action === 'ctrlDown' || e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectRow(rowIndex + ((rowIndex !== selectedItems.length - 1) ? 1 : 0));\n }\n else {\n this.gridObj.selectRow(rowIndex - ((rowIndex !== 0) ? 1 : 0));\n }\n }\n else {\n if (!isNOU(selectedItems[0])) {\n this.gridObj.selectRow(0);\n }\n }\n };\n DetailsView.prototype.spaceSelection = function (selRowIndeces, focIndex, selIndex, e) {\n if (!this.isSelected(selRowIndeces, focIndex) && selIndex !== -1 && (e.action === 'shiftSpace' || e.action === 'csSpace')) {\n if (focIndex < selIndex) {\n this.gridObj.selectionModule.selectRowsByRange(focIndex, selIndex);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(selIndex, focIndex);\n }\n }\n else if (!isNOU(this.getFocusedItem()) && focIndex !== selIndex) {\n selRowIndeces.push(this.getFocusedItemIndex());\n this.gridObj.selectRows(selRowIndeces);\n }\n else if (selIndex !== -1 && e.action === 'ctrlSpace' && this.parent.allowMultiSelection) {\n var lItem = selIndex;\n selRowIndeces.pop();\n this.gridObj.selectRows(selRowIndeces);\n this.addFocus(lItem);\n }\n else if (e.action === 'shiftSpace') {\n this.gridObj.selectRow(selIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.ctrlMoveFunction = function (items, e, rowIndex) {\n var nextItem;\n if (!isNOU(this.getFocusedItem())) {\n var nextIndex = this.getFocusedItemIndex();\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n nextIndex + ((nextIndex < items.length - 1) ? 1 : 0) : nextIndex - ((nextIndex < 1) ? 0 : 1);\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n rowIndex + ((rowIndex < items.length) ? 1 : 0) : rowIndex - ((rowIndex < 1) ? 0 : 1);\n }\n else {\n if (!isNOU(items[0])) {\n nextItem = 0;\n }\n }\n this.addFocus(nextItem);\n };\n // eslint-disable-next-line\n DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {\n if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {\n if (e.action !== 'csHome' && e.action !== 'csEnd') {\n if (isNOU(this.startIndex) && this.firstItemIndex !== indexValue) {\n this.firstItemIndex = indexValue;\n }\n if (e.action === 'shiftEnd') {\n this.gridObj.selectionModule.selectRowsByRange(this.firstItemIndex, items.length - 1);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, this.firstItemIndex);\n }\n this.startIndex = indexValue;\n }\n else {\n if (e.action === 'csEnd') {\n this.gridObj.\n selectRows(this.InnerItems(isNOU(indexValue) ? 0 : indexValue, isNOU(focIndex) ? items.length - 1 : focIndex, e));\n }\n else {\n if (isNOU(indexValue)) {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectRows(this.InnerItems(isNOU(focIndex) ? 0 : focIndex, indexValue, e));\n }\n }\n }\n }\n else {\n this.gridObj.selectionModule.selectRow(((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : items.length - 1));\n }\n };\n DetailsView.prototype.InnerItems = function (fItem, lItem, e) {\n var itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (var i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (var i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n };\n DetailsView.prototype.shiftSelectFocusItem = function (selIndex, fIndex, selRowIndexes, e) {\n var lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n var fItem = isNOU(this.startIndex) ? selIndex : selRowIndexes[0];\n if (fItem === lItem) {\n this.gridObj.selectRow(fItem);\n }\n else {\n if (fItem < lItem) {\n if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n }\n else if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n }\n this.startIndex = this.gridObj.selectedRowIndex;\n };\n DetailsView.prototype.addFocus = function (item) {\n var fItem = this.getFocusedItem();\n var itemElement = this.gridObj.getRowByIndex(item);\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS, CLS.FOCUSED]);\n }\n if (!isNOU(itemElement)) {\n this.gridObj.element.setAttribute('tabindex', '-1');\n itemElement.setAttribute('tabindex', '0');\n itemElement.focus();\n addClass([itemElement], [CLS.FOCUS, CLS.FOCUSED]);\n }\n };\n DetailsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.FOCUSED, this.element);\n };\n DetailsView.prototype.isSelected = function (selRowIndexes, focIndex) {\n var check = false;\n for (var i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftSelectedItem = function (selIndex, selRowIndexes, gridItems, e) {\n if (selIndex === -1) {\n this.gridObj.selectRow(0);\n }\n else {\n if (isNOU(this.startIndex) && e.shiftKey) {\n this.startIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectRows([selIndex, (e.action === 'shiftDown' || e.action === 'csDown') ?\n (selIndex + ((selIndex !== gridItems.length - 1) ? 1 : 0)) : (selIndex - ((selIndex !== 0) ? 1 : 0))]);\n }\n else {\n if (e.action === 'shiftDown' || e.action === 'shiftUp') {\n if (e.action === 'shiftDown' && selRowIndexes.indexOf(selIndex + 1) === -1) {\n if (selIndex !== gridItems.length - 1) {\n selRowIndexes.push(selIndex + 1);\n }\n }\n else if (e.action === 'shiftUp' && selRowIndexes.indexOf(selIndex - 1) === -1) {\n if (selIndex !== 0) {\n selRowIndexes.push(selIndex - 1);\n }\n }\n else {\n selRowIndexes.pop();\n }\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n if (e.action === 'csDown') {\n if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() + 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() + 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() + 1);\n }\n }\n else if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() - 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() - 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() - 1);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.onMethodCall = function (e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n var action = getValue('action', e);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', e));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', e));\n break;\n case 'openFile':\n this.openFile(getValue('id', e));\n break;\n case 'createFolder':\n this.interaction = false;\n break;\n case 'renameFile':\n this.interaction = false;\n this.renameFile(getValue('id', e), getValue('newName', e));\n break;\n case 'selectAll':\n this.interaction = false;\n this.onSelectAllInit();\n break;\n case 'clearSelection':\n this.interaction = false;\n this.onClearAllInit();\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.getRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var records = [];\n var hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filter = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n if (nodes.indexOf(getValue(filter, gridRecords[i])) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n else {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var name_4 = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name_4) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n };\n DetailsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < records.length; i++) {\n data[i] = records[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n // eslint-disable-next-line\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < dRecords.length; i++) {\n data[i] = dRecords[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n };\n DetailsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n updateRenamingData(this.parent, records[0]);\n if (!isNOU(name)) {\n if (hasEditAccess(this.parent.itemData[0])) {\n rename(this.parent, this.parent.path, name);\n }\n else {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n }\n else {\n doRename(this.parent);\n }\n }\n };\n return DetailsView;\n}());\nexport { DetailsView };\n","import * as index from './index';\nindex.FileManager.Inject(index.DetailsView, index.NavigationPane, index.LargeIconsView, index.Toolbar, index.ContextMenu, index.BreadCrumbBar);\nexport * from './index';\n"],"names":["updatePath","node","data","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","getPathId","pathNames","getPathNames","element","matched","getParents","i","length","ids","push","names","isId","el","parentNode","matches","CLS.LIST_ITEM","parentText","select","CLS.LIST_TEXT","textContent","classList","contains","CLS.TREE_VIEW","generatePath","parent","key","newPath","feParent","removeActive","isCut","removeBlur","selectedNodes","actionRecords","enablePaste","notify","events.hidePaste","activeElement","action","isSearchCut","activeElements","events.cutCopyInit","blurEle","activeModule","targetPath","getParentPath","getModule","addBlur","events.showPaste","activeRecords","breadcrumbbarModule","searchObj","value","isFiltered","i_1","selectedItems","nodes","add","CLS.BLUR","hover","querySelectorAll","CLS.HOVER","remove","CLS.ROW","closest","CLS.LARGE_ICON","searchWordHandler","isLayoutChange","searchWord","events.pathColumn","args","searchSettings","filterType","itemData","getPathObject","caseSensitive","ignoreCase","hiddenItems","showHiddenItems","Search","events.layoutChange","events.search","filter","isSortByClicked","files","largeiconsviewModule","items","read","updateLayout","view","layoutSelectedItems","getTargetModule","tartgetModule","CLS.ROOT","CLS.CONTROL","CLS.GRID_CONTENT","CLS.LARGE_ICONS","targetModule","refresh","hasReadAccess","events.refreshEnd","createDeniedDialog","events.permissionRead","openAction","events.openEnd","copyFiles","fileAction","cutFiles","fileType","file","CLS.FOLDER","imageFormat","audioFormat","videoFormat","knownFormat","filetype","toLowerCase","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","getImageUrl","item","imgUrl","baseUrl","ajaxSettings","url","fileName","encodeURIComponent","fPath","imgId","replace","eventArgs","fileDetails","imageUrl","Date","getTime","toString","trigger","getFullPath","filePath","getName","name","getSortedData","query","sortOrder","Query","sortBy","group","lists","DataManager","executeLocal","getObject","currFiles","feFiles","where","createEmptyElement","top","layoutElement","CLS.LAYOUT_ID","addressBarHeight","CLS.BREADCRUMBBAR_ID","offsetHeight","CLS.GRID_HEADER","querySelector","CLS.EMPTY","emptyDiv","createElement","className","emptyFolder","CLS.LARGE_EMPTY_FOLDER","emptyEle","CLS.EMPTY_CONTENT","dragFile","CLS.EMPTY_INNER_CONTENT","CLS.GRID_VIEW","appendChild","error","innerHTML","getLocaleText","eDiv","style","marginTop","getDirectories","events.isFile","setNodeId","result","rootId","dirs","len","setValue","setDateObject","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","substring","lastIndexOf","field","setNextPath","currfolders","folders","originalPath","root","eventName","events.finalizeEnd","events.initialEnd","openSearchFolder","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","validateSubFolder","events.pasteInit","paste","dropPath","dragPath","subFolder","srcData","dragNodes","code","message","fileExists","createDialog","tempTarget","dropHandler","dragData","dropData","oldPath","getDirectoryPath","cwd","doPasteUpdate","operation","events.dragEnd","events.cutEnd","duplicateItems","pasteNodes","count","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","events.pasteEnd","readDropPath","expandedId","events.pathDrag","navigationpaneModule","treeObj","events.dropPath","getDuplicateData","records","createVirtualDragElement","getItemName","cloneIcon","cloneName","virtualEle","ele","CLS.CLONE","badge","virtualDragElement","dragStopHandler","dragArgs","cancel","treeExpandTimer","window","clearTimeout","removeDropTarget","uploadObj","dropArea","CLS.CONTENT_ID","detach","target","events.dropInit","dragCount","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","draggingHandler","canDrop","setTimeout","events.dragging","objectToString","str","keys","Object","updateRenamingData","currentItemText","isFile","filterPath","doRename","hasEditAccess","events.permissionEdit","doDownload","hasDownloadAccess","events.permissionDownload","Download","doDeleteFiles","newIds","Delete","doDownloadFiles","getAccessClass","permission","hasContentAccess","hasUploadAccess","createNewFolder","details","events.permissionEditContents","uploadItem","eleId","CLS.UPLOAD_ID","document","click","events.permissionUpload","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","fn","type","mode","dataType","contentType","JSON","stringify","onSuccess","onFailure","beforeSend","beforeSendArgs","events.beforeRequest","Ajax","result_1","triggerAjaxFailure","parse","events.afterRequest","rootAliasName","rootName","location_1","RegExp","match","events.searchTextChange","send","events.selectionChanged","dialogObj","visible","parentElement","nextElementSibling","hide","createdItem","events.createEnd","renamedItem","pop","events.renameEndParent","events.renameEnd","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","e","replaceItems","options","getOptions","Dialog","beforeOpen","keydownAction","bind","this","dialogName","beforeClose","triggerPopupBeforeClose","header","content","buttons","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","width","open","close","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","changeOptions","extOptions","getExtOptions","isApplySame","extDialogObj","beforeExtOpen","CLS.EXTN_DIALOG_ID","dataBind","show","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","events.actionFailure","triggerPopupOpen","triggerPopupClose","duplicateContent","index","buttonModel","isPrimary","renameText","item_1","indexval","item_2","ind","retryFiles","onRetryOpen","isRetryOpened","retryDlgClose","retryDlgUpdate","splice","events.skipUpload","isKeepBoth","onKeepBothAll","onReplaceAll","retryArgs","retry","flag","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","checked","focusInput","focus","setSelectionRange","onFolderDialogOpen","createInput","oninput","onValidate","onkeyup","getKeyCode","onSubmit","onRenameDialogOpen","inputEle","onReSubmit","onFocusRenameInput","txt","showFileExtension","placeholder","Input","properties","formattedString","strArr","location","multipleFiles","onDeleteSubmit","Internationalization","formatDate","modified","format","CLS.VALUE","size","map","val","substr","every","arr","toLocaleUpperCase","CLS.ERROR_CONTENT","preventKeydown","selectAll","dlgName","btnElement","btnCount","onkeydown","keyCode","preventDefault","onSubmitValidate","oIndex","renamedId","oldExtension","nIndex","newExtension","events.deleteInit","test","addInvalid","which","charCode","createImageDialog","image","src","alt","viewerObj","height","enableResize","position","X","Y","openImage","resizing","updateImage","resizeStop","CLS.IMG_DIALOG_ID","imgWrap","cssObj","getComputedStyle","paddingWidth","parseFloat","paddingRight","paddingHeight","paddingBottom","offsetWidth","__extends","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","AjaxSettings","_super","apply","Property","ChildProperty","toolbarItems","ToolbarSettings","SearchSettings","columnArray","headerText","minWidth","template","customAttributes","class","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","LAYOUT_ID","GRID_ID","LARGEICON_ID","DIALOG_ID","IMG_DIALOG_ID","EXTN_DIALOG_ID","CONTENT_ID","BREADCRUMBBAR_ID","UPLOAD_ID","ROOT","CONTROL","ROOT_POPUP","MOB_POPUP","FILTER","LARGE_ICONS","LIST_ITEM","LIST_TEXT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","ACTIVE","HOVER","FOCUS","CHECK","CB_WRAP","ROW","EMPTY","EMPTY_CONTENT","EMPTY_INNER_CONTENT","CLONE","DROP_FOLDER","DROP_FILE","FOLDER","ICON_IMAGE","ICON_MUSIC","ICON_VIDEO","LARGE_ICON","LARGE_EMPTY_FOLDER","GRID_HEADER","TREE_VIEW","MENU_ICON","GRID_VIEW","GRID_CONTENT","ICON_CUT","ICON_GRID","ICON_LARGE","ERROR_CONTENT","RTL","DISPLAY_NONE","VALUE","modelChanged","initialEnd","finalizeEnd","createEnd","pathDrag","deleteInit","deleteEnd","refreshEnd","resizeEnd","pathChanged","destroy","beforeRequest","skipUpload","afterRequest","actionFailure","search","openInit","openEnd","selectionChanged","clearPathInit","layoutChange","sortByChange","detailsInit","menuItemData","renameInit","renameEndParent","renameEnd","showPaste","hidePaste","cutCopyInit","pasteInit","pasteEnd","cutEnd","sortColumn","pathColumn","searchTextChange","dropInit","dragEnd","dragging","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","LargeIconsView","isInteraction","uploadOperation","isRendered","tapCount","isPasteOperation","CLS.LARGEICON_ID","addClass","addEventListener","keyConfigs","end","home","tab","moveDown","moveLeft","moveRight","moveUp","ctrlEnd","ctrlHome","ctrlDown","ctrlLeft","ctrlRight","ctrlUp","shiftEnd","shiftHome","shiftDown","shiftLeft","shiftRight","shiftUp","csEnd","csHome","csDown","csLeft","csRight","csUp","space","ctrlSpace","shiftSpace","csSpace","ctrlA","enter","altEnter","esc","del","ctrlX","ctrlC","ctrlV","f2","shiftdel","back","ctrlD","render","visitedItem","startItem","showSpinner","resetMultiSelect","setAttribute","listObj","unWireEvents","removeEventListener","iconsView","ul","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","htmlAttributes","itemCreated","onItemCreated","renderList","listElements","ListBase","createListFromJson","itemList","slice","call","preventImgDrag","createDragObj","CLS.DISPLAY_NONE","emptyList","selectItems","activeEle","CLS.ACTIVE","adjustHeight","maxHeight","getItemCount","wireEvents","hideSpinner","checkItem","ondragstart","_this","Draggable","enableTailMode","distance","enableAutoScroll","dragTarget","helper","dragHelper","cursorAt","dragCursorPosition","dragArea","dragStop","drag","clone","dragStart","sender","dragLi","setFocus","getItemObject","onDropInit","getModuleName","dropLi","cwdData","info","pane","bar","removeAttribute","curData","textEle","renderCheckbox","allowMultiSelection","checkElement","createCheckBox","firstElementChild","insertBefore","childNodes","onLayoutChange","indexes","getIndexes","length_1","checkEle","checkLength","checkState","icon","name_1","selected","showThumbnail","title","onFinalizeEnd","onCreateEnd","clearSelect","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","addSelection","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","getFirstItem","lastItem","getLastItem","eveArgs","ctrlKey","shiftKey","doSelection","onClearAllInit","clearSelection","onBeforeRequest","onAfterRequest","onSearch","onLayoutRefresh","onUpdateSelectionData","onPathColumn","isDestroyed","off","events.pathChanged","events.openInit","events.modelChanged","onPropertyChanged","events.methodCall","onMethodCall","onActionFailure","events.renameInit","events.menuItemData","onMenuItemData","splitterResizeHandler","events.resizeEnd","resizeHandler","onpasteInit","onpasteEnd","oncutCopyInit","events.detailsInit","onDetailsInit","onDropPath","on","currentSelected","_i","_a","newProp","wireClickEvent","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","keyboardDownModule","keydownActionHandler","EventHandler","onMouseOver","targetEle","toBind","proxy_1","clickObj","Touch","tap","eve","originalEvent","isDevice","tapEvent","doTapAction","dblClickHandler","clickHandler","tapHold","multiSelect","updateType","cList","CLS.CHECK","triggerSelection","startIndex","endIndex","addActive","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","folder","fItem","getFocusedItem","firstItem","navigateItem","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","isVisible","liParent","liScrPos","scrollTop","getCurFocusedItem","dItem","lItem","rItem","uItem","getDataName","preItem","toCheck","CLS.CB_WRAP","eles","getBoundingClientRect","visitedData","j","byId","resultData","newData","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","isFilter","filterName","name_2","BreadCrumbBar","addressPath","addressBarLink","searchTimer","searchWrapWidth","prop","isNullOrUndefined","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","innerText","ulElement","breadCrumbBarNavigation","subMenuObj","searchWrap","updateBreadCrumbBar","addresBarUL","liElements","pRight","getPropertyValue","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","diff","liElement","utext","subMenuLi","attributes","subMenuSpan","DropDownButton","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","nodeName","children","currentPath","triggerFileOpen","treeNodeId","CLS.FILTER","list","liElementId","link","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onResize","onPasteEnd","events.destroy","onSearchTextChange","liEle","ContextMenu","currentItems","currentElement","disabledItems","downarrow","uparrow","contextMenu","Menu","onBeforeItemRender","onSelect","onBeforeOpen","onBeforeClose","getMenuId","iconSpan","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","menuTarget","uid","treeFolder","targetNodeElement","activeNode","getElementsByClassName","targetElement","getTargetView","updateActiveModule","setLayoutItem","detailsviewModule","gridObj","getRowObjectFromUID","selectRows","parseInt","setFileItem","setFolderItem","pasteEle","isSubMenu","getMenuItemData","menuModule","menuType","menuOpenArgs","enableItems","CLS.GRID_ID","getItemIndex","itemId","disableItem","concat","enable","isUniqueId","checkValidItem","isTree","getItemData","contextMenuSettings","trim","layout","nameEle","menuClickArgs","sItems","openFileOnContextMenuClick","separator","CLS.ICON_CUT","CLS.TB_OPTION_DOT","CLS.TB_OPTION_TICK","defaultLocale","NewFolder","Upload","Rename","Cut","Copy","Paste","SortBy","Refresh","Item-Selection","Items-Selection","View","Details","SelectAll","Open","Tooltip-NewFolder","Tooltip-Upload","Tooltip-Delete","Tooltip-Rename","Tooltip-Download","Tooltip-Cut","Tooltip-Copy","Tooltip-Paste","Tooltip-SortBy","Tooltip-Refresh","Tooltip-Selection","Tooltip-View","Tooltip-Details","Tooltip-SelectAll","Name","Size","DateModified","DateCreated","Path","Modified","Created","Location","Type","Permission","Ascending","Descending","None","View-LargeIcons","View-Details","Button-Ok","Button-Cancel","Button-Yes","Button-No","Button-Create","Button-Save","Header-NewFolder","Content-NewFolder","Header-Rename","Content-Rename","Header-Rename-Confirmation","Content-Rename-Confirmation","Header-Delete","Content-Delete","Header-Folder-Delete","Content-Folder-Delete","Header-Multiple-Delete","Content-Multiple-Delete","Header-Duplicate","Content-Duplicate","Header-Upload","Error","Validation-Empty","Validation-Invalid","Validation-NewFolder-Exists","Validation-Rename-Exists","Folder-Empty","File-Upload","Search-Empty","Search-Key","Filter-Empty","Filter-Key","Sub-Folder-Error","Same-Folder-Error","Access-Denied","Access-Details","Header-Retry","Content-Retry","Button-Keep-Both","Button-Replace","Button-Skip","ApplyAll-Label","KB","Access-Message","Network-Error","Server-Error","FileManager","previousPath","nextPath","deleteRecords","isSameAction","persistData","isOpened","left","uploadingCount","uploadedCount","FileManager_1","Inject","preRender","getUniqueID","ensurePath","setAttr","formatUnit","Browser","checkMobile","navigationPaneSettings","isBigger","createSpinner","addWrapper","altN","f5","ctrlShift1","ctrlShift2","ctrlU","L10n","getPersistData","keyEntity","addOnPersist","requiredModules","modules","member","toolbarSettings","initialize","slItems","fileView","setRtl","addEventListeners","splitterObj","collapse","renderComplete","addCssClass","renderFileUpload","headerWrap","layoutWrap","navigationWrap","treeWrap","contentWrap","gridWrap","largeiconWrap","role","overlay","paneSettings","min","max","maxWidth","Splitter","splitterResize","dialogWrap","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","toolbar","toolBarHeight","clientHeight","splitterAdjust","expand","oldOne","newOne","onContextMenu","userAgent","uploadEle","uploadDialogObj","onOpen","onClose","renderUploadBox","uploadUrl","Uploader","asyncSettings","saveUrl","removeUrl","uploading","onUploading","removing","onRemoving","canceling","onCancel","clearing","onClearing","onSelected","success","onUploadSuccess","failure","onUploadFailure","autoUpload","uploadSettings","minFileSize","maxFileSize","allowedExtensions","fileListRendering","onFileListRender","updateUploader","clearAll","fileData","customFormData","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","autoClose","response","statusText","onInitialEnd","removeEventListeners","setPath","oldProp","ajaxSettingSetModel","localeSetModelOption","refreshing","CLS.RTL","disableToolbarItems","toolbarModule","enableToolbarItems","disableMenuItems","contextmenuModule","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","rtl","Complex","Event","NotifyPropertyChanges","Component","Toolbar","default","single","multiple","selection","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","created","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","tool","toolbarClickArgs","getPupupId","buttonObj","layoutBtnObj","hideItems","hideStatus","updateSortByButton","itemCount","itemTooltip","spanElement","tooltipText","prefixIcon","showTextOn","suffixIcon","overflow","align","onSelectionChanged","reRenderToolbar","undefined","hideItem","tools","toHide","refreshOverflow","isEnable","NavigationPane","removeNodes","moveNames","expandTree","isDrag","isPathDragged","isRenameParent","isRightClick","renameParent","previousSelected","isNodeClickCalled","restrictSelecting","ctrlShiftN","shiftF10","onInit","rootData","attr","BaseTreeView","dataSource","parentID","expanded","hasChildren","tooltip","nodeSelecting","onNodeSelecting","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","allowEditing","nodeEditing","onNodeEditing","drawNode","onDrowNode","dataBound","addDragDrop","getTreeData","getDragPath","getDropPath","nodeData","addChild","prevent","directories","_fm_icon","addNodes","expandNodeTarget","onPathDrag","selectResultNode","onNodeExpanded","innerHtml","sNode","updateTree","updateTreeNode","toExpand","expandedNodes","removeChildNodes","childs","onOpenEnd","sleId","expandAll","updateItemData","updateActionData","selcetedEle","selectedNodeEle","onRenameEndParent","nData","id_1","onDownLoadInit","onClearPathInit","onDragEnd","getMoveNames","previousName","onCutEnd","resultObj","itemname","checkDropPath","obj","onDragging","dataobj","level","keyDown","DetailsView","interaction","isColumnRefresh","firstItemIndex","isSelectionUpdate","currentSelectedItem","isLoaded","isNameWidth","Grid","Resize","Sort","VirtualScroll","checkNameWidth","columns","getColumns","sortSettings","direction","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","detailsViewSettings","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","beforeCopy","load","focusModule","emptyArgs","initialColumn","adjustWidth","fieldName","nameWidth","headerTextAlign","iWidth","headerTemplate","unshift","cWidth","cBox","disableHtmlEncode","gridHeader","renderCheckBox","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","intl","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","selectRecords","currentViewData","getRowHeight","hdTable","getHeaderContent","paddingLeft","borderRightWidth","cnTable","getContent","overflowY","checkEmptyDiv","gridRecords","getCurrentViewRecords","sRecords","selectedRowIndex","rData","onSortColumn","sortModule","onDetailsResize","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","selectionModule","selectRowsByRange","getRows","selectRow","removeSelection","onPasteInit","onDetailsResizeHandler","getRowInfo","dragRow","getSelectedRows","gridHeaderColGroup","firstChild","gridContentColGroup","gridHeaderColNames","selectedRecords","getRowByIndex","lastItemIndex","gridSelectNodes","selectSize","record","name_3","keyupHandler","keydownHandler","removeFocus","getFocusedItemIndex","gridItems","gridLength","focIndex","selIndex","selRowIndeces","crtSrlPos","crtFocusIndex","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","isSelected","shiftSelectedItem","shiftSelectFocusItem","nextIndex","indexValue","checkAllRows","InnerItems","itemArr","fIndex","selRowIndexes","itemElement","check","getRecords","hasFilter","name_4","dRecords","index.FileManager","index.DetailsView","index.NavigationPane","index.LargeIconsView","index.Toolbar","index.ContextMenu","index.BreadCrumbBar"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-filemanager.min.js","sources":["../../src/file-manager/common/utility.js","../../src/file-manager/common/operations.js","../../src/file-manager/pop-up/dialog.js","../../src/file-manager/models/ajax-settings.js","../../src/file-manager/models/toolbar-settings.js","../../src/file-manager/models/search-settings.js","../../src/file-manager/models/details-view-settings.js","../../src/file-manager/models/contextMenu-settings.js","../../src/file-manager/models/navigation-pane-settings.js","../../src/file-manager/models/upload-settings.js","../../src/file-manager/models/column.js","../../src/file-manager/base/classes.js","../../src/file-manager/base/constant.js","../../src/file-manager/layout/large-icons-view.js","../../src/file-manager/actions/breadcrumb-bar.js","../../src/file-manager/pop-up/context-menu.js","../../src/file-manager/models/default-locale.js","../../src/file-manager/base/file-manager.js","../../src/file-manager/actions/toolbar.js","../../src/file-manager/layout/navigation-pane.js","../../src/file-manager/layout/details-view.js","../../src/global.js"],"sourcesContent":["import * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { read, paste, Search, filter, Download, Delete } from '../common/operations';\nimport { getValue, setValue, isNullOrUndefined as isNOU, matches, select, createElement } from '@syncfusion/ej2-base';\nimport { closest, detach } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createDialog } from '../pop-up/dialog';\n/**\n * Utility file for common actions\n *\n * @param {HTMLLIElement} node - specifies the node.\n * @param {Object} data - specifies the data.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function updatePath(node, data, instance) {\n var text = getValue('name', data);\n var id = node.getAttribute('data-id');\n var newText = isNOU(id) ? text : id;\n instance.setProperties({ path: getPath(node, newText, instance.hasId) }, true);\n instance.pathId = getPathId(node);\n instance.pathNames = getPathNames(node, text);\n}\n/**\n * Functions for get path in FileManager\n *\n * @param {Element | Node} element - specifies the element.\n * @param {string} text - specifies the text.\n * @param {boolean} hasId - specifies the id.\n * @returns {string} returns the path.\n * @private\n */\nexport function getPath(element, text, hasId) {\n var matched = getParents(element, text, false, hasId);\n var path = hasId ? '' : '/';\n var len = matched.length - (hasId ? 1 : 2);\n for (var i = len; i >= 0; i--) {\n path += matched[i] + '/';\n }\n return path;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} node - specifies the node element.\n * @returns {string[]} returns the path ids.\n * @private\n */\nexport function getPathId(node) {\n var matched = getParents(node, node.getAttribute('data-uid'), true);\n var ids = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n ids.push(matched[i]);\n }\n return ids;\n}\n/**\n * Functions for get path names in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @returns {string[]} returns the path names.\n * @private\n */\nexport function getPathNames(element, text) {\n var matched = getParents(element, text, false);\n var names = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n names.push(matched[i]);\n }\n return names;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @param {boolean} isId - specifies the id.\n * @param {boolean} hasId - checks the id exists.\n * @returns {string[]} returns parent element.\n * @private\n */\nexport function getParents(element, text, isId, hasId) {\n var matched = [text];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, '.' + CLS.LIST_ITEM)) {\n var parentText = isId ? el.getAttribute('data-uid') : (hasId ? el.getAttribute('data-id') :\n select('.' + CLS.LIST_TEXT, el).textContent);\n matched.push(parentText);\n }\n el = el.parentNode;\n if (el.classList.contains(CLS.TREE_VIEW)) {\n break;\n }\n }\n return matched;\n}\n/**\n * Functions for generate path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function generatePath(parent) {\n var key = parent.hasId ? 'id' : 'name';\n var newPath = parent.hasId ? '' : '/';\n var i = parent.hasId ? 0 : 1;\n for (i; i < parent.pathId.length; i++) {\n // eslint-disable-next-line\n var data = getValue(parent.pathId[i], parent.feParent);\n newPath += getValue(key, data) + '/';\n }\n parent.setProperties({ path: newPath }, true);\n}\n/**\n * Functions for remove active element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function removeActive(parent) {\n if (parent.isCut) {\n removeBlur(parent);\n parent.selectedNodes = [];\n parent.actionRecords = [];\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n }\n}\n/**\n * Selects active element in File Manager\n *\n * @param {string} action - specifies the action.\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns active element.\n * @private\n */\nexport function activeElement(action, parent) {\n parent.isSearchCut = false;\n parent.actionRecords = [];\n parent.activeElements = [];\n parent.notify(events.cutCopyInit, {});\n if (parent.activeElements.length === 0) {\n return false;\n }\n removeBlur(parent);\n var blurEle = parent.activeElements;\n if (parent.activeModule !== 'navigationpane') {\n parent.targetPath = parent.path;\n }\n else {\n parent.targetPath = getParentPath(parent.path);\n }\n var i = 0;\n if (blurEle) {\n getModule(parent, blurEle[0]);\n if (action === 'cut') {\n while (i < blurEle.length) {\n addBlur(blurEle[i]);\n i++;\n }\n }\n }\n i = 0;\n parent.selectedNodes = [];\n parent.enablePaste = true;\n parent.notify(events.showPaste, {});\n while (i < parent.activeRecords.length) {\n parent.actionRecords.push(parent.activeRecords[i]);\n parent.selectedNodes.push(getValue('name', parent.activeRecords[i]));\n i++;\n }\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) &&\n parent.activeModule !== 'navigationpane') {\n parent.selectedNodes = [];\n parent.isSearchCut = true;\n var i_1 = 0;\n while (i_1 < parent.selectedItems.length) {\n parent.selectedNodes.push(parent.selectedItems[i_1]);\n i_1++;\n }\n }\n return true;\n}\n/**\n * Adds blur to the elements\n *\n * @param {Element} nodes - specifies the nodes.\n * @returns {void}\n * @private\n */\nexport function addBlur(nodes) {\n nodes.classList.add(CLS.BLUR);\n}\n/**\n * Removes blur from elements\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} hover - specifies the hover string.\n * @returns {void}\n * @private\n */\nexport function removeBlur(parent, hover) {\n var blurEle = (!hover) ? parent.element.querySelectorAll('.' + CLS.BLUR) :\n parent.element.querySelectorAll('.' + CLS.HOVER);\n var i = 0;\n while (i < blurEle.length) {\n blurEle[i].classList.remove((!hover) ? CLS.BLUR : CLS.HOVER);\n i++;\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getModule(parent, element) {\n if (element) {\n if (element.classList.contains(CLS.ROW)) {\n parent.activeModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICON)) {\n parent.activeModule = 'largeiconsview';\n }\n else {\n parent.activeModule = 'navigationpane';\n }\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} value - specifies the value.\n * @param {boolean} isLayoutChange - specifies the layout change.\n * @returns {void}\n * @private\n */\nexport function searchWordHandler(parent, value, isLayoutChange) {\n var searchWord;\n if (value.length === 0 && !parent.isFiltered) {\n parent.notify(events.pathColumn, { args: parent });\n }\n if (parent.searchSettings.filterType === 'startsWith') {\n searchWord = value + '*';\n }\n else if (parent.searchSettings.filterType === 'endsWith') {\n searchWord = '*' + value;\n }\n else {\n searchWord = '*' + value + '*';\n }\n parent.searchWord = searchWord;\n parent.itemData = [getPathObject(parent)];\n if (value.length > 0) {\n var caseSensitive = parent.searchSettings.ignoreCase;\n var hiddenItems = parent.showHiddenItems;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchWord, hiddenItems, !caseSensitive);\n }\n else {\n if (!parent.isFiltered) {\n if (parent.isSortByClicked) {\n parent.notify(events.layoutChange, { files: parent.largeiconsviewModule.items });\n parent.isSortByClicked = false;\n }\n else {\n read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n }\n else {\n filter(parent, events.layoutChange);\n }\n }\n}\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} view - specifies the view.\n * @returns {void}\n * @private\n */\nexport function updateLayout(parent, view) {\n parent.setProperties({ view: view }, true);\n if (parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) {\n parent.layoutSelectedItems = parent.selectedItems;\n }\n var searchWord = '';\n if (parent.breadcrumbbarModule.searchObj.element.value) {\n searchWord = parent.breadcrumbbarModule.searchObj.element.value;\n }\n parent.isLayoutChange = true;\n searchWordHandler(parent, searchWord, true);\n}\n/* istanbul ignore next */\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getTargetModule(parent, element) {\n var tartgetModule = '';\n if (element) {\n if (closest(element, '.' + CLS.ROOT + '.' + CLS.CONTROL + ' .' + CLS.GRID_CONTENT)) {\n tartgetModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICONS)) {\n tartgetModule = 'largeiconsview';\n }\n else if (element.classList.contains('e-fullrow') ||\n element.classList.contains('e-icon-expandable')) {\n tartgetModule = 'navigationpane';\n }\n else if (closest(element, '.e-address-list-item')) {\n tartgetModule = 'breadcrumbbar';\n }\n else {\n tartgetModule = '';\n }\n }\n parent.targetModule = tartgetModule;\n}\n/* istanbul ignore next */\n/**\n * refresh the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function refresh(parent) {\n parent.itemData = [getPathObject(parent)];\n if (!hasReadAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionRead);\n }\n else {\n read(parent, events.refreshEnd, parent.path);\n }\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function openAction(parent) {\n read(parent, events.openEnd, parent.path);\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {Object} - returns the path data.\n * @private\n */\n// eslint-disable-next-line\nexport function getPathObject(parent) {\n return getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n}\n/**\n * Copy files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function copyFiles(parent) {\n if (!activeElement('copy', parent)) {\n return;\n }\n else {\n parent.fileAction = 'copy';\n }\n}\n/**\n * Cut files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function cutFiles(parent) {\n if (!activeElement('cut', parent)) {\n return;\n }\n else {\n parent.isCut = true;\n parent.fileAction = 'move';\n }\n}\n/**\n * To add class for fileType\n *\n * @param {Object} file - specifies the file.\n * @returns {string} - returns the file type.\n * @private\n */\n// eslint-disable-next-line\nexport function fileType(file) {\n var isFile = getValue('isFile', file);\n if (!isFile) {\n return CLS.FOLDER;\n }\n var imageFormat = ['bmp', 'dib', 'jpg', 'jpeg', 'jpe', 'jfif', 'gif', 'tif', 'tiff', 'png', 'ico'];\n var audioFormat = ['mp3', 'wav', 'aac', 'ogg', 'wma', 'aif', 'fla', 'm4a'];\n var videoFormat = ['webm', 'mkv', 'flv', 'vob', 'ogv', 'ogg', 'avi', 'wmv', 'mp4', '3gp'];\n var knownFormat = ['css', 'exe', 'html', 'js', 'msi', 'pdf', 'pptx', 'ppt', 'rar', 'zip', 'txt', 'docx', 'doc',\n 'xlsx', 'xls', 'xml', 'rtf', 'php'];\n var filetype = getValue('type', file);\n filetype = filetype.toLowerCase();\n if (filetype.indexOf('.') !== -1) {\n filetype = filetype.split('.').join('');\n }\n var iconType;\n if (imageFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_IMAGE;\n }\n else if (audioFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_MUSIC;\n }\n else if (videoFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_VIDEO;\n }\n else if (knownFormat.indexOf(filetype) !== -1) {\n iconType = 'e-fe-' + filetype;\n }\n else {\n iconType = 'e-fe-unknown e-fe-' + filetype;\n }\n return iconType;\n}\n/* istanbul ignore next */\n/**\n * To get the image URL\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} item - specifies the item.\n * @returns {string} - returns the image url.\n * @private\n */\n// eslint-disable-next-line\nexport function getImageUrl(parent, item) {\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var imgUrl;\n var fileName = encodeURIComponent(getValue('name', item));\n var fPath = getValue('filterPath', item);\n if (parent.hasId) {\n var imgId = getValue('id', item);\n imgUrl = baseUrl + '?path=' + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + '?path=' + fPath.replace(/\\\\/g, '/') + fileName;\n }\n else {\n imgUrl = baseUrl + '?path=' + parent.path + fileName;\n }\n imgUrl = imgUrl + '&time=' + (new Date().getTime()).toString();\n var eventArgs = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs);\n return eventArgs.imageUrl;\n}\n/* istanbul ignore next */\n/**\n * Gets the full path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} path - specifies the path.\n * @returns {string} - returns the image url.\n * @private\n */\n// eslint-disable-next-line\nexport function getFullPath(parent, data, path) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', data) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', data);\n if (!isNOU(fPath)) {\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return path + filePath;\n }\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @returns {string} - returns the name.\n * @private\n */\n// eslint-disable-next-line\nexport function getName(parent, data) {\n var name = getValue('name', data);\n var fPath = getValue('filterPath', data);\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) && !isNOU(fPath)) {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(parent.path, '') + name;\n }\n return name;\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object[]} items - specifies the item elements.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var query;\n if (parent.sortOrder !== 'None') {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\n // eslint-disable-next-line\n var lists = new DataManager(items).executeLocal(query);\n return getValue('records', lists);\n}\n/**\n * Gets the data object\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} key - specifies the key.\n * @param {string} value - specifies the value.\n * @returns {Object} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getObject(parent, key, value) {\n // eslint-disable-next-line\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var query = new Query().where(key, 'equal', value);\n // eslint-disable-next-line\n var lists = new DataManager(currFiles).executeLocal(query);\n return lists[0];\n}\n/**\n * Creates empty element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLElement} element - specifies the element.\n * @param {ReadArgs | SearchArgs} args - specifies the args.\n * @returns {void}\n * @private\n */\nexport function createEmptyElement(parent, element, args) {\n var top;\n var layoutElement = select('#' + parent.element.id + CLS.LAYOUT_ID, parent.element);\n var addressBarHeight = select('#' + parent.element.id + CLS.BREADCRUMBBAR_ID, layoutElement).offsetHeight;\n top = layoutElement.offsetHeight - addressBarHeight;\n if (parent.view === 'Details') {\n top = top - select('.' + CLS.GRID_HEADER, layoutElement).offsetHeight;\n }\n if (isNOU(element.querySelector('.' + CLS.EMPTY))) {\n var emptyDiv = createElement('div', { className: CLS.EMPTY });\n var emptyFolder = createElement('div', { className: CLS.LARGE_EMPTY_FOLDER });\n var emptyEle = createElement('div', { className: CLS.EMPTY_CONTENT });\n var dragFile = createElement('div', { className: CLS.EMPTY_INNER_CONTENT });\n if (parent.view === 'Details') {\n element.querySelector('.' + CLS.GRID_VIEW).appendChild(emptyDiv);\n }\n else {\n element.appendChild(emptyDiv);\n }\n emptyDiv.appendChild(emptyFolder);\n emptyDiv.appendChild(emptyEle);\n emptyDiv.appendChild(dragFile);\n }\n if (element.querySelector('.' + CLS.EMPTY)) {\n if (!isNOU(args.error)) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Access-Denied');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Access-Details');\n }\n else if (parent.isFiltered) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Key');\n }\n else if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Search-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Search-Key');\n }\n else {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Folder-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'File-Upload');\n }\n }\n var eDiv = select('.' + CLS.EMPTY, element);\n top = (top - eDiv.offsetHeight) / 2;\n eDiv.style.marginTop = top + 'px';\n}\n/**\n * Gets the directories\n *\n * @param {Object[]} files - specifies the file object.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getDirectories(files) {\n return new DataManager(files).executeLocal(new Query().where(events.isFile, 'equal', false, false));\n}\n/**\n * set the Node ID\n *\n * @param {ReadArgs} result - specifies the result.\n * @param {string} rootId - specifies the rootId.\n * @returns {void}\n * @private\n */\nexport function setNodeId(result, rootId) {\n // eslint-disable-next-line\n var dirs = getDirectories(result.files);\n for (var i = 0, len = dirs.length; i < len; i++) {\n setValue('_fm_id', rootId + '_' + i, dirs[i]);\n }\n}\n/**\n * set the date object\n *\n * @param {Object[]} args - specifies the file object.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function setDateObject(args) {\n for (var i = 0; i < args.length; i++) {\n setValue('_fm_created', new Date(getValue('dateCreated', args[i])), args[i]);\n setValue('_fm_modified', new Date(getValue('dateModified', args[i])), args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nexport function getLocaleText(parent, text) {\n var locale = parent.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n}\n/**\n * get the CSS class\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} css - specifies the css.\n * @returns {string} - returns the css classes.\n * @private\n */\nexport function getCssClass(parent, css) {\n var cssClass = parent.cssClass;\n cssClass = (isNOU(cssClass) || cssClass === '') ? css : (cssClass + ' ' + css);\n return cssClass;\n}\n/**\n * sort on click\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {MenuEventArgs} args - specifies the menu event arguements.\n * @returns {void}\n * @private\n */\nexport function sortbyClickHandler(parent, args) {\n var tick;\n parent.isSortByClicked = true;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id, parent);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(events.sortColumn, { module: 'detailsview' });\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(events.sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @returns {string} - returns the sorted fields\n * @private\n */\nexport function getSortField(id, parent) {\n var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n var column;\n if (parent) {\n column = parent.detailsViewSettings.columns;\n }\n switch (text) {\n case 'date':\n for (var i = 0; i < column.length; i++) {\n if (column[i].field === 'dateModified' || column[i].field === 'dateCreated') {\n field = column[i].field;\n break;\n }\n else {\n field = '_fm_modified';\n }\n }\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function setNextPath(parent, path) {\n var currfolders = path.split('/');\n var folders = parent.originalPath.split('/');\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n for (var i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n var eventName = (folders[i + 1] === '') ? events.finalizeEnd : events.initialEnd;\n var newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n // eslint-disable-next-line\n var data = getObject(parent, key, folders[i]);\n var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n parent.pathId.push(id);\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n read(parent, eventName, parent.path);\n break;\n }\n}\n/**\n * Opens the searched folder\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function openSearchFolder(parent, data) {\n parent.notify(events.clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n parent.originalPath = getFullPath(parent, data, parent.path);\n read(parent, (parent.path !== parent.originalPath) ? events.initialEnd : events.finalizeEnd, parent.path);\n}\n/**\n * Paste handling function\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function pasteHandler(parent) {\n parent.isDragDrop = false;\n if (parent.selectedNodes.length !== 0 && parent.enablePaste) {\n var path = (parent.folderPath === '') ? parent.path : parent.folderPath;\n // eslint-disable-next-line\n var subFolder = validateSubFolder(parent, parent.actionRecords, path, parent.path);\n if (!subFolder) {\n if ((parent.fileAction === 'move' && parent.targetPath !== path) || parent.fileAction === 'copy') {\n parent.notify(events.pasteInit, {});\n paste(parent, parent.targetPath, parent.selectedNodes, path, parent.fileAction, [], parent.actionRecords);\n }\n else {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n removeBlur(parent);\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n }\n }\n }\n}\n/**\n * Validates the sub folders\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {'{ [key: string]: Object; }[]'} data - specifies the data.\n * @param {string} dropPath - specifies the drop path.\n * @param {string} dragPath - specifies the drag path.\n * @returns {boolean} - returns the validated sub folder.\n * @private\n */\n// eslint-disable-next-line\nexport function validateSubFolder(parent, data, dropPath, dragPath) {\n var subFolder = false;\n for (var i = 0; i < data.length; i++) {\n if (!getValue('isFile', data[i])) {\n var tempTarget = getFullPath(parent, data[i], dragPath);\n if (dropPath.indexOf(tempTarget) === 0) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Sub-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n else {\n var srcData = parent.dragNodes[i];\n var len = 0;\n if (srcData) {\n len = srcData.lastIndexOf('/');\n }\n var path = '';\n if (len > 0) {\n path = dragPath + srcData.substring(0, len + 1);\n }\n if (path === dropPath) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n }\n return subFolder;\n}\n/**\n * Validates the drop handler\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function dropHandler(parent) {\n parent.isDragDrop = true;\n if (parent.dragData.length !== 0) {\n parent.dragPath = parent.dragPath.replace(/\\\\/g, '/');\n parent.dropPath = parent.dropPath.replace(/\\\\/g, '/');\n var subFolder = validateSubFolder(parent, parent.dragData, parent.dropPath, parent.dragPath);\n if (!subFolder && (parent.dragPath !== parent.dropPath)) {\n parent.itemData = [parent.dropData];\n paste(parent, parent.dragPath, parent.dragNodes, parent.dropPath, 'move', [], parent.dragData);\n parent.notify(events.pasteInit, {});\n }\n }\n}\n/**\n * Gets the parent path\n *\n * @param {string} oldPath - specifies the old path.\n * @returns {string} - returns the parent path.\n * @private\n */\nexport function getParentPath(oldPath) {\n var path = oldPath.split('/');\n var newPath = path[0] + '/';\n for (var i = 1; i < path.length - 2; i++) {\n newPath += path[i] + '/';\n }\n return newPath;\n}\n/**\n * Gets the directory path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {ReadArgs} args - returns the read arguements.\n * @returns {string} - returns the directory path\n * @private\n */\nexport function getDirectoryPath(parent, args) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', args.cwd) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', args.cwd);\n if (!isNOU(fPath)) {\n if (fPath === '') {\n return parent.hasId ? filePath : '/';\n }\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return parent.path + filePath;\n }\n}\n/**\n * Gets the do paste path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} operation - specifies the operations.\n * @param {ReadArgs} result - returns the result.\n * @returns {void}\n * @private\n */\nexport function doPasteUpdate(parent, operation, result) {\n if (operation === 'move') {\n if (!parent.isDragDrop) {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n parent.notify(events.cutEnd, result);\n }\n else {\n parent.notify(events.dragEnd, result);\n }\n }\n if (parent.duplicateItems.length === 0) {\n parent.pasteNodes = [];\n }\n var flag = false;\n for (var count = 0; (count < result.files.length) && !flag; count++) {\n parent.pasteNodes.push(result.files[count][parent.hasId ? 'id' : 'name']);\n if (parent.isDragDrop) {\n parent.droppedObjects.push(result.files[count]);\n }\n }\n parent.duplicateItems = [];\n parent.duplicateRecords = [];\n if (parent.isDragDrop && !parent.isPasteError) {\n parent.isDropEnd = true;\n }\n else {\n parent.isDropEnd = false;\n }\n if (!parent.isDragDrop || (parent.path === parent.dragPath) || (parent.path === parent.dropPath)\n || parent.isSearchDrag) {\n parent.isPathDrag = false;\n read(parent, events.pasteEnd, parent.path);\n }\n else {\n readDropPath(parent);\n }\n parent.trigger('success', { action: operation, result: result });\n}\n/**\n * Reads the drop path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function readDropPath(parent) {\n var pathId = getValue('_fm_id', parent.dropData);\n parent.expandedId = pathId;\n parent.itemData = [parent.dropData];\n if (parent.isPathDrag) {\n parent.notify(events.pathDrag, parent.itemData);\n }\n else {\n if (parent.navigationpaneModule) {\n var node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n updatePath(node, parent.dropData, parent);\n }\n read(parent, events.dropPath, parent.dropPath);\n }\n}\n/**\n * Gets the duplicated path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} name - specifies the name.\n * @returns {object} - returns the duplicated path.\n * @private\n */\n// eslint-disable-next-line\nexport function getDuplicateData(parent, name) {\n // eslint-disable-next-line\n var data = null;\n // eslint-disable-next-line\n var records = parent.isDragDrop ? parent.dragData : parent.actionRecords;\n for (var i = 0; i < records.length; i++) {\n if (getValue('name', records[i]) === name) {\n data = records[i];\n break;\n }\n }\n return data;\n}\n/**\n * Gets the create the virtual drag element\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createVirtualDragElement(parent) {\n parent.isSearchDrag = false;\n if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n parent.isSearchDrag = true;\n }\n if (parent.activeModule !== 'navigationpane') {\n parent.dragNodes = [];\n var i = 0;\n while (i < parent.selectedItems.length) {\n parent.dragNodes.push(parent.selectedItems[i]);\n i++;\n }\n if (parent.selectedItems.length === 0 && parent.dragData && parent.dragData.length === 1) {\n parent.dragNodes.push(getItemName(parent, parent.dragData[0]));\n }\n }\n var cloneIcon = parent.createElement('div', {\n className: 'e-fe-icon ' + fileType(parent.dragData[0])\n });\n var cloneName = parent.createElement('div', {\n className: 'e-fe-name',\n innerHTML: parent.dragData[0].name\n });\n var virtualEle = parent.createElement('div', {\n className: 'e-fe-content'\n });\n virtualEle.appendChild(cloneIcon);\n virtualEle.appendChild(cloneName);\n var ele = parent.createElement('div', {\n className: CLS.CLONE\n });\n ele.appendChild(virtualEle);\n if (parent.dragNodes.length > 1) {\n var badge = parent.createElement('span', {\n className: 'e-fe-count',\n innerHTML: (parent.dragNodes.length).toString(10)\n });\n ele.appendChild(badge);\n }\n parent.virtualDragElement = ele;\n parent.element.appendChild(parent.virtualDragElement);\n}\n/**\n * Drops the stop handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStopHandler(parent, args) {\n var dragArgs = args;\n dragArgs.cancel = false;\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeDropTarget(parent);\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n removeBlur(parent);\n parent.uploadObj.dropArea = select('#' + parent.element.id + CLS.CONTENT_ID, parent.element);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n getTargetModule(parent, args.target);\n parent.notify(events.dropInit, args);\n removeBlur(parent, 'hover');\n dragArgs.fileDetails = parent.dragData;\n parent.trigger('fileDragStop', dragArgs, function (dragArgs) {\n if (!dragArgs.cancel && !isNOU(parent.targetModule) && parent.targetModule !== '' && parent.dragCount > 2) {\n dropHandler(parent);\n }\n parent.dragCount = 0;\n });\n}\n/**\n * Drag the start handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {'DragEventArgs'} args - specifies the drag event arguements.\n * @param {Draggable} dragObj - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStartHandler(parent, args, dragObj) {\n var dragArgs = args;\n dragArgs.cancel = false;\n dragArgs.fileDetails = parent.dragData;\n parent.dragCount = 0;\n parent.droppedObjects = [];\n if (!parent.allowDragAndDrop || ((parent.activeModule === 'navigationpane') &&\n (closest(args.element, 'li').getAttribute('data-uid') === parent.pathId[0]))) {\n dragArgs.cancel = true;\n }\n if ((parent.activeModule === 'navigationpane') &&\n (parent.pathId.indexOf(closest(args.element, 'li').getAttribute('data-uid')) !== -1)) {\n parent.isPathDrag = true;\n }\n else {\n parent.isPathDrag = false;\n }\n removeBlur(parent);\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else if (!dragArgs.cancel) {\n var i = 0;\n while (i < parent.activeElements.length) {\n addBlur(parent.activeElements[i]);\n i++;\n }\n parent.trigger('fileDragStart', dragArgs, function (dragArgs) {\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else {\n parent.uploadObj.dropArea = null;\n }\n });\n }\n}\n/**\n * Drag the cancel handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function dragCancel(parent) {\n removeBlur(parent);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n}\n/**\n * Remove drop target handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function removeDropTarget(parent) {\n removeItemClass(parent, CLS.DROP_FOLDER);\n removeItemClass(parent, CLS.DROP_FILE);\n}\n/**\n * Remove item class handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} value - specifies the value.\n * @returns {void}\n * @private\n */\nexport function removeItemClass(parent, value) {\n var ele = parent.element.querySelectorAll('.' + value);\n for (var i = 0; i < ele.length; i++) {\n ele[i].classList.remove(value);\n }\n}\n/**\n * Dragging handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nexport function draggingHandler(parent, args) {\n var dragArgs = args;\n dragArgs.fileDetails = parent.dragData;\n var canDrop = false;\n getTargetModule(parent, args.target);\n removeDropTarget(parent);\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeBlur(parent, 'hover');\n var node = null;\n if (parent.targetModule === 'navigationpane') {\n node = closest(args.target, 'li');\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n canDrop = true;\n /* istanbul ignore next */\n parent.treeExpandTimer = window.setTimeout(function () { parent.notify(events.dragging, args); }, 800);\n }\n else if (parent.targetModule === 'detailsview') {\n node = closest(args.target, 'tr');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FOLDER);\n }\n else if (node && !node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FILE);\n }\n canDrop = true;\n }\n else if (parent.targetModule === 'largeiconsview') {\n node = closest(args.target, 'li');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n }\n canDrop = true;\n /* istanbul ignore next */\n }\n else if (parent.targetModule === 'breadcrumbbar') {\n canDrop = true;\n }\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n parent.element.classList.add(canDrop ? 'e-fe-drop' : 'e-no-drop');\n parent.dragCount = parent.dragCount + 1;\n parent.trigger('fileDragging', dragArgs);\n}\n/**\n * Object to string handler\n *\n * @param {Object} data - specifies the data.\n * @returns {string} returns string converted from Object.\n * @private\n */\n// Ignored the message key value in permission object\n// eslint-disable-next-line\nexport function objectToString(data) {\n var str = '';\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] !== 'message') {\n str += (i === 0 ? '' : ', ') + keys[i] + ': ' + getValue(keys[i], data);\n }\n }\n return str;\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {string} returns the item name.\n * @private\n */\n// eslint-disable-next-line\nexport function getItemName(parent, data) {\n if (parent.hasId) {\n return getValue('id', data);\n }\n return getName(parent, data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function updateRenamingData(parent, data) {\n parent.itemData = [data];\n parent.currentItemText = getValue('name', data);\n parent.isFile = getValue('isFile', data);\n parent.filterPath = getValue('filterPath', data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doRename(parent) {\n if (!hasEditAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionEdit);\n }\n else {\n createDialog(parent, 'Rename');\n }\n}\n/* istanbul ignore next */\n/**\n * Download handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doDownload(parent) {\n // eslint-disable-next-line\n var items = parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(parent, items[i], events.permissionDownload);\n return;\n }\n }\n if (parent.selectedItems.length > 0) {\n Download(parent, parent.path, parent.selectedItems);\n }\n}\n/**\n * Delete Files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function doDeleteFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionEdit);\n return;\n }\n }\n parent.itemData = data;\n Delete(parent, newIds, parent.path, 'delete');\n}\n/* istanbul ignore next */\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function doDownloadFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasDownloadAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionDownload);\n return;\n }\n }\n parent.itemData = data;\n if (newIds.length > 0) {\n Download(parent, parent.path, newIds);\n }\n}\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @param {string} action - specifies the actions.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function createDeniedDialog(parent, data, action) {\n var message = getValue('message', getValue('permission', data));\n if (message === '') {\n message = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', data)).replace('{1}', action);\n }\n var response = {\n error: {\n code: '401',\n fileExists: null,\n message: message\n }\n };\n createDialog(parent, 'Error', response);\n}\n/**\n * Get Access Classes\n *\n * @param {Object} data - specifies the data.\n * @returns {string} - returns accesses classes.\n * @private\n */\n// eslint-disable-next-line\nexport function getAccessClass(data) {\n return !hasReadAccess(data) ? 'e-fe-locked e-fe-hidden' : 'e-fe-locked';\n}\n/**\n * Check read access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns read access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasReadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return (permission && !getValue('read', permission)) ? false : true;\n}\n/**\n * Check edit access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns edit access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasEditAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('write', permission))) : true;\n}\n/**\n * Check content access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns content access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasContentAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('writeContents', permission))) : true;\n}\n/**\n * Check upload access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns upload access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasUploadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('upload', permission))) : true;\n}\n/**\n * Check download access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns download access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasDownloadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('download', permission))) : true;\n}\n/**\n * Create new folder handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createNewFolder(parent) {\n // eslint-disable-next-line\n var details = parent.itemData[0];\n if (!hasContentAccess(details)) {\n createDeniedDialog(parent, details, events.permissionEditContents);\n }\n else {\n createDialog(parent, 'NewFolder');\n }\n}\n/**\n * Upload item handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function uploadItem(parent) {\n // eslint-disable-next-line\n var details = parent.itemData[0];\n if (!hasUploadAccess(details)) {\n createDeniedDialog(parent, details, events.permissionUpload);\n }\n else {\n var eleId = '#' + parent.element.id + CLS.UPLOAD_ID;\n var uploadEle = document.querySelector(eleId);\n uploadEle.click();\n }\n}\n","import { Ajax, createElement, select, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, setValue, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate, getParentPath, getPathObject } from '../common/utility';\nimport { generatePath } from '../common/utility';\n/**\n * Function to read the content from given path in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function read(parent, event, path) {\n // eslint-disable-next-line\n var itemData = parent.itemData;\n for (var i = 0; i < itemData.length; i++) {\n if (isNOU(getValue('hasChild', itemData[i]))) {\n setValue('hasChild', false, itemData[i]);\n }\n }\n // eslint-disable-next-line\n var data = { action: 'read', path: path, showHiddenItems: parent.showHiddenItems, data: itemData };\n createAjax(parent, data, readSuccess, event);\n}\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nexport function createFolder(parent, itemName) {\n // eslint-disable-next-line\n var data = { action: 'create', path: parent.path, name: itemName, data: parent.itemData };\n createAjax(parent, data, createSuccess, itemName);\n}\n/**\n * Function to filter the files in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nexport function filter(parent, event) {\n // eslint-disable-next-line\n var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n // eslint-disable-next-line\n var filterData;\n // eslint-disable-next-line\n var filterDataVal = parent.filterData ? extend(filterData, data, parent.filterData) : data;\n createAjax(parent, filterDataVal, filterSuccess, event, getValue('action', filterDataVal));\n}\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string} itemNewName - specifies the item's new name.\n * @returns {void}\n * @private\n */\nexport function rename(parent, path, itemNewName) {\n var name;\n var newName;\n if (parent.breadcrumbbarModule.searchObj.element.value === '' && !parent.isFiltered) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n var fPath = parent.filterPath;\n if (parent.hasId) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(path, '') + parent.currentItemText;\n newName = fPath.replace(path, '') + itemNewName;\n }\n }\n // eslint-disable-next-line\n var data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData\n };\n createAjax(parent, data, renameSuccess, path);\n}\n/**\n * Function to paste file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} names - specifies the names.\n * @param {string} targetPath - specifies the target path.\n * @param {string} pasteOperation - specifies the paste operation.\n * @param {string[]} renameItems - specifies the rename items.\n * @param {Object[]} actionRecords - specifies the action records.\n * @returns {void}\n * @private\n */\nexport function paste(parent, path, names, targetPath, pasteOperation, \n// eslint-disable-next-line\nrenameItems, actionRecords) {\n // eslint-disable-next-line\n var data = {\n action: pasteOperation, path: path, targetData: parent.itemData[0],\n targetPath: targetPath, names: names, renameFiles: renameItems, data: actionRecords\n };\n parent.destinationPath = targetPath;\n createAjax(parent, data, pasteSuccess, path, pasteOperation, targetPath);\n}\n/**\n * Function to delete file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} items - specifies the items.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nexport function Delete(parent, items, path, operation) {\n // eslint-disable-next-line\n var data = { action: operation, path: path, names: items, data: parent.itemData };\n createAjax(parent, data, deleteSuccess, path);\n}\n/* istanbul ignore next */\n/**\n * Function to get details of file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} names - specifies the names.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation data.\n * @returns {void}\n * @private\n */\nexport function GetDetails(parent, names, path, operation) {\n // eslint-disable-next-line\n var data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Function for createAjax in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {Function} fn - specifies the fn.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the target path.\n * @returns {void}\n * @private\n */\nfunction createAjax(\n// eslint-disable-next-line\nparent, data, fn, event, operation, targetPath) {\n // eslint-disable-next-line\n var ajaxSettings = {\n url: parent.ajaxSettings.url,\n type: 'POST',\n mode: true,\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };\n parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\n var ajax = new Ajax({\n url: getValue('url', beforeSendArgs.ajaxSettings),\n type: getValue('type', beforeSendArgs.ajaxSettings),\n mode: getValue('mode', beforeSendArgs.ajaxSettings),\n dataType: getValue('dataType', beforeSendArgs.ajaxSettings),\n contentType: getValue('contentType', beforeSendArgs.ajaxSettings),\n data: getValue('data', beforeSendArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', beforeSendArgs.ajaxSettings),\n onSuccess: function (result) {\n if (isNOU(result)) {\n var result_1 = {\n error: {\n fileExists: null,\n message: getLocaleText(parent, 'Server-Error') + ' ' + parent.ajaxSettings.url,\n code: '406'\n },\n files: null\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result_1, event, operation, targetPath);\n return;\n }\n if (typeof (result) === 'string') {\n result = JSON.parse(result);\n }\n parent.notify(events.afterRequest, { action: 'success' });\n var id = parent.expandedId ? parent.expandedId : parent.pathId[parent.pathId.length - 1];\n if (!isNOU(result.cwd) && (getValue('action', data) === 'read')) {\n result.cwd.name = (parent.pathId.length === 1) ? (parent.rootAliasName || result.cwd.name) : result.cwd.name;\n setValue('_fm_id', id, result.cwd);\n setValue(id, result.cwd, parent.feParent);\n if (!isNOU(result.files) || result.error.code === '401') {\n if ((event === 'finalize-end' || event === 'initial-end') && parent.pathNames.length === 0) {\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n parent.pathNames[0] = getValue('name', root);\n parent.hasId = !isNOU(getValue('id', root));\n }\n if (event === 'finalize-end') {\n generatePath(parent);\n }\n }\n }\n if (!isNOU(result.files)) {\n setDateObject(result.files);\n for (var i = 0, len = result.files.length; i < len; i++) {\n // eslint-disable-next-line\n var item = result.files[i];\n setValue('_fm_iconClass', fileType(item), item);\n }\n if (getValue('action', data) === 'read') {\n setNodeId(result, id);\n setValue(id, result.files, parent.feFiles);\n }\n }\n if (!isNOU(result.details) && !isNOU(parent.rootAliasName)) {\n var rootName = parent.rootAliasName || getValue('name', result.details);\n var location_1 = getValue('location', result.details).replace(new RegExp('/', 'g'), '\\\\');\n if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {\n if (getValue('names', data).length === 0) {\n setValue('name', rootName, result.details);\n location_1 = rootName;\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n setValue('location', location_1, result.details);\n }\n fn(parent, result, event, operation, targetPath);\n if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end')) {\n parent.notify(events.searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\n },\n onFailure: function () {\n var result = {\n files: null,\n error: {\n code: '404',\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.url,\n fileExists: null\n }\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath);\n }\n });\n ajax.send();\n }\n });\n}\n/**\n * Function for trigger Ajax failure in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the beforeSendArgs.\n * @param {Function} fn - specifies the function.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @returns {void}\n * @private\n */\nfunction triggerAjaxFailure(\n// eslint-disable-next-line\nparent, beforeSendArgs, fn, result, event, operation, targetPath) {\n parent.notify(events.afterRequest, { action: 'failure' });\n fn(parent, result, event, operation, targetPath);\n if (typeof getValue('onFailure', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onFailure', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function for read success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction readSuccess(parent, result, event) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n var args = { action: 'read', result: result };\n parent.trigger('success', args);\n }\n else {\n if (result.error.code === '401') {\n result.files = [];\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n }\n onFailure(parent, result, 'read');\n }\n if (parent.isDragDrop && parent.isDropEnd) {\n if (parent.droppedObjects.length !== 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n }\n parent.isDropEnd = parent.isDragDrop = false;\n }\n}\n/**\n * Function for filter success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction filterSuccess(parent, result, event, action) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: action, result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, action);\n }\n}\n/* istanbul ignore next */\n/**\n * Function for create success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction createSuccess(parent, result, itemName) {\n if (!isNOU(result.files)) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n parent.createdItem = result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\n var args = { action: 'create', result: result };\n parent.trigger('success', args);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.createEnd, parent.path);\n }\n else {\n if (result.error.code === '400') {\n if (parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#newname', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n else {\n var result_2 = {\n files: null,\n error: {\n code: '400',\n message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + itemName + '\"'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result_2);\n }\n var args = { action: 'create', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'create');\n }\n }\n}\n/* istanbul ignore next */\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path\n * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result, path) {\n if (!isNOU(result.files)) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n var args = { action: 'rename', result: result };\n parent.trigger('success', args);\n parent.renamedItem = result.files[0];\n if (parent.activeModule === 'navigationpane') {\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n read(parent, events.renameEndParent, getParentPath(parent.path));\n }\n else {\n parent.itemData = [getPathObject(parent)];\n if (parent.breadcrumbbarModule.searchObj.value !== '') {\n Search(parent, events.renameEnd, parent.path, parent.searchWord, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n else {\n if (parent.isFiltered) {\n filter(parent, events.renameEnd);\n }\n else {\n read(parent, events.renameEnd, parent.path);\n }\n }\n }\n }\n else {\n if (result.error.code === '400' && parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#rename', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '\"' + parent.currentItemText + '\"');\n error = error.replace('{1}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n var args = { action: 'rename', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'rename');\n }\n }\n}\n/* istanbul ignore next */\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction pasteSuccess(parent, result, path, operation) {\n if (result.error && result.error.fileExists) {\n parent.fileLength = 0;\n if (!isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n }\n createExtDialog(parent, 'DuplicateItems', result.error.fileExists);\n if (result.error.code === '404') {\n createDialog(parent, 'Error', result);\n }\n }\n else if (!result.error && !isNOU(result.files)) {\n parent.isPasteError = false;\n doPasteUpdate(parent, operation, result);\n }\n else if (result.error && !isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n createDialog(parent, 'Error', result);\n }\n else {\n onFailure(parent, result, operation);\n }\n}\n/**\n * Function to delete success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nfunction deleteSuccess(parent, result, path) {\n if (!isNOU(result.files)) {\n parent.setProperties({ path: path }, true);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.deleteEnd, parent.path);\n if (result.error) {\n onFailure(parent, result, 'delete');\n }\n else {\n var args = { action: 'delete', result: result };\n parent.trigger('success', args);\n }\n }\n else {\n onFailure(parent, result, 'delete');\n }\n}\n/**\n * Function for details success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction detailsSuccess(\n// eslint:disable-next-line\nparent, result, path, operation) {\n if (!isNOU(result.details)) {\n createDialog(parent, operation, null, result.details);\n var args = { action: 'details', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'details');\n }\n}\n/**\n * Function for on failure event in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction onFailure(parent, result, action) {\n createDialog(parent, 'Error', result);\n var args = { action: action, error: result.error };\n parent.trigger('failure', args);\n}\n/**\n * Function for search in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @param {string} searchString - specifies the search string.\n * @param {boolean} showHiddenItems - specifies the hidden items.\n * @param {boolean} caseSensitive - specifies the casing of search text.\n * @returns {void}\n * @private\n */\nexport function Search(\n// eslint:disable-next-line\nparent, event, path, searchString, showHiddenItems, caseSensitive) {\n // eslint-disable-next-line\n var data = {\n action: 'search', path: path, searchString: searchString, showHiddenItems: showHiddenItems, caseSensitive: caseSensitive,\n data: parent.itemData\n };\n createAjax(parent, data, searchSuccess, event);\n}\n/* istanbul ignore next */\n/**\n * Function for search success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction searchSuccess(parent, result, event) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: 'search', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'search');\n }\n}\n/* istanbul ignore next */\n/**\n * Function for download in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} items - specifies the items.\n * @returns {void}\n * @private\n */\nexport function Download(parent, path, items) {\n var downloadUrl = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;\n // eslint-disable-next-line\n var data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n var eventArgs = { data: data, cancel: false };\n parent.trigger('beforeDownload', eventArgs, function (downloadArgs) {\n if (!downloadArgs.cancel) {\n var form = createElement('form', {\n id: parent.element.id + '_downloadForm',\n attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }\n });\n var input = createElement('input', {\n id: parent.element.id + '_hiddenForm',\n attrs: { name: 'downloadInput', value: JSON.stringify(downloadArgs.data), type: 'hidden' }\n });\n form.appendChild(input);\n parent.element.appendChild(form);\n document.forms.namedItem('downloadForm').submit();\n parent.element.removeChild(form);\n }\n });\n}\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { select, isNullOrUndefined as isNOU, createElement, Internationalization } from '@syncfusion/ej2-base';\nimport { getValue, remove, selectAll } from '@syncfusion/ej2-base';\nimport { createFolder } from '../common/operations';\nimport * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { paste, rename } from '../common/operations';\nimport { getLocaleText, getDuplicateData, getParentPath, objectToString, getCssClass } from '../common/utility';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the type of event args.\n * @param {FileDetails} details - specifies the file details.\n * @param {string[]} replaceItems - specifies the replacement.\n * @returns {void}\n * @private\n */\nexport function createDialog(parent, text, e, details, replaceItems) {\n var options = getOptions(parent, text, e, details, replaceItems);\n if (isNOU(parent.dialogObj)) {\n parent.dialogObj = new Dialog({\n beforeOpen: keydownAction.bind(this, parent, options.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n },\n header: options.header,\n content: options.content,\n buttons: options.buttons,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n allowDragging: true,\n isModal: true,\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n width: '350px',\n open: options.open,\n close: options.close,\n enableRtl: parent.enableRtl,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.dialogObj.isStringTemplate = true;\n parent.dialogObj.appendTo('#' + parent.element.id + CLS.DIALOG_ID);\n }\n else {\n changeOptions(parent, options);\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {void}\n * @private\n */\nexport function createExtDialog(parent, text, replaceItems, newPath) {\n var extOptions = getExtOptions(parent, text, replaceItems, newPath);\n parent.isApplySame = false;\n if (isNOU(parent.extDialogObj)) {\n parent.extDialogObj = new Dialog({\n beforeOpen: beforeExtOpen.bind(this, parent, extOptions.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n },\n content: extOptions.content,\n header: extOptions.header,\n closeOnEscape: true,\n allowDragging: true,\n animationSettings: { effect: 'None' },\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n enableRtl: parent.enableRtl,\n showCloseIcon: true,\n isModal: true,\n width: 350,\n buttons: extOptions.buttons,\n open: extOptions.open,\n close: extOptions.close,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.extDialogObj.isStringTemplate = true;\n parent.extDialogObj.appendTo('#' + parent.element.id + CLS.EXTN_DIALOG_ID);\n }\n else {\n parent.extDialogObj.header = extOptions.header;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.open = extOptions.open;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.content = extOptions.content;\n parent.extDialogObj.buttons = extOptions.buttons;\n parent.extDialogObj.enableRtl = parent.enableRtl;\n parent.extDialogObj.locale = parent.locale;\n parent.extDialogObj.beforeOpen = beforeExtOpen.bind(this, parent, extOptions.dialogName);\n parent.extDialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n };\n parent.extDialogObj.dataBind();\n parent.extDialogObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {Dialog} dlgModule - Specifies the dialog module.\n * @param {BeforeOpenEventArgs} args - specifies the before open arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeOpen(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupName: dialogName, popupModule: dlgModule\n };\n parent.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {BeforeCloseEventArgs} args - specifies the before close event arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeClose(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupModule: dlgModule, popupName: dialogName\n };\n parent.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n if (!args.cancel && args.isInteracted && ((dialogName === 'Rename') || (dialogName === 'Create Folder'))) {\n parent.trigger(events.actionFailure, {});\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupOpen(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupOpen', args);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupClose(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupClose', args);\n}\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {DialogOptions} - returns the dialog options.\n * @private\n */\nfunction getExtOptions(parent, text, replaceItems, newPath) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var duplicateContent;\n var item;\n var index;\n options.open = function () { triggerPopupOpen(parent, parent.extDialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.extDialogObj, options.dialogName); };\n switch (text) {\n case 'Extension':\n options.header = getLocaleText(parent, 'Header-Rename-Confirmation');\n options.content = '<div>' + getLocaleText(parent, 'Content-Rename-Confirmation') + '</div>';\n options.buttons = [{\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.extDialogObj.hide();\n rename(parent, newPath, parent.renameText);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.extDialogObj.hide();\n parent.dialogObj.hide();\n }\n }];\n options.dialogName = 'Extension Change';\n break;\n case 'DuplicateItems':\n options.dialogName = 'Duplicate Items';\n parent.replaceItems = replaceItems;\n item = parent.replaceItems[parent.fileLength];\n index = item.lastIndexOf('/');\n item = index === -1 ? item : item.substring(index);\n options.header = getLocaleText(parent, 'Header-Duplicate');\n duplicateContent = '<div>' + getLocaleText(parent, 'Content-Duplicate') + '</div>';\n options.content = (duplicateContent).replace('{0}', item);\n options.close = function () {\n if (!parent.isDropEnd && parent.duplicateItems.length === 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n parent.isDropEnd = parent.isDragDrop = false;\n }\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.duplicateItems.push(parent.replaceItems[parent.fileLength]);\n parent.duplicateRecords.push(getDuplicateData(parent, parent.replaceItems[parent.fileLength]));\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_1 = parent.replaceItems[parent.fileLength];\n var indexval = item_1.lastIndexOf('/');\n item_1 = indexval === -1 ? item_1 : item_1.substring(indexval);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_1);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_2 = parent.replaceItems[parent.fileLength];\n var ind = item_2.lastIndexOf('/');\n item_2 = ind === -1 ? item_2 : item_2.substring(ind);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_2);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n if (parent.duplicateItems.length !== 0) {\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n }\n }\n ];\n break;\n case 'UploadRetry':\n options.dialogName = 'Retry Upload';\n options.header = getLocaleText(parent, 'Header-Retry');\n options.content = parent.retryFiles[0].name + '<div class=\"e-fe-retrycontent\">' +\n (getLocaleText(parent, 'Content-Retry')) + '</div>';\n options.open = onRetryOpen.bind(this, parent);\n options.close = function () {\n parent.isRetryOpened = false;\n retryDlgClose(parent);\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Keep-Both') },\n click: function () {\n retryDlgUpdate(parent, true);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Replace') },\n click: function () {\n retryDlgUpdate(parent, false);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Skip') },\n click: function () {\n var count = 0;\n if (parent.isApplySame) {\n count = parent.retryFiles.length;\n parent.retryFiles = [];\n retryDlgClose(parent);\n }\n else {\n count = 1;\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n parent.notify(events.skipUpload, { count: count });\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {boolean} isKeepBoth - checks the arguement to keep both.\n * @returns {void}\n * @private\n */\nfunction retryDlgUpdate(parent, isKeepBoth) {\n if (parent.isApplySame) {\n if (isKeepBoth) {\n onKeepBothAll(parent);\n }\n else {\n onReplaceAll(parent);\n }\n retryDlgClose(parent);\n }\n else {\n parent.retryArgs.push({\n action: isKeepBoth ? 'keepboth' : 'replace',\n file: parent.retryFiles[0]\n });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction retryDlgClose(parent) {\n var flag = true;\n if (parent.isRetryOpened) {\n parent.isRetryOpened = false;\n }\n else {\n flag = false;\n }\n var ele = select('.e-dlg-checkbox', parent.extDialogObj.element);\n if (ele) {\n remove(ele);\n }\n if (flag) {\n parent.extDialogObj.hide();\n }\n else {\n parent.retryFiles = [];\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {object} args - specifies the arguements.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nfunction onRetryOpen(parent, args) {\n parent.isRetryOpened = true;\n var dialogEle = getValue('element', args);\n var container = select('.e-dlg-content', dialogEle);\n var checkContainer = parent.createElement('div', {\n className: 'e-dlg-checkbox'\n });\n var checkbox = parent.createElement('input', {\n id: parent.element.id + '_applyall'\n });\n checkContainer.appendChild(checkbox);\n container.appendChild(checkContainer);\n var checkBoxObj = new CheckBox({\n label: getLocaleText(parent, 'ApplyAll-Label'),\n change: function (args) {\n parent.isApplySame = args.checked;\n }\n });\n checkBoxObj.appendTo('#' + parent.element.id + '_applyall');\n triggerPopupOpen(parent, parent.extDialogObj, 'Retry Upload');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onKeepBothAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'keepboth', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReplaceAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'replace', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction focusInput(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n ele.focus();\n ele.value = '';\n var len = ele.value.length;\n ele.setSelectionRange(0, len);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onFolderDialogOpen(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n if (!ele.parentElement.classList.contains('e-control-wrapper')) {\n createInput(ele, getLocaleText(parent, 'Content-NewFolder'));\n }\n ele.parentElement.nextElementSibling.innerHTML = '';\n ele.oninput = function () {\n onValidate(parent, ele);\n };\n ele.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onSubmit(parent);\n }\n };\n focusInput(parent);\n triggerPopupOpen(parent, parent.dialogObj, 'Create Folder');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onRenameDialogOpen(parent) {\n var inputEle = select('#rename', parent.dialogObj.element);\n if (!inputEle.parentElement.classList.contains('e-control-wrapper')) {\n createInput(inputEle, getLocaleText(parent, 'Content-Rename'));\n }\n inputEle.parentElement.nextElementSibling.innerHTML = '';\n inputEle.oninput = function () {\n onValidate(parent, inputEle);\n };\n inputEle.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onReSubmit(parent);\n }\n };\n onFocusRenameInput(parent, inputEle);\n triggerPopupOpen(parent, parent.dialogObj, 'Rename');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} inputEle - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onFocusRenameInput(parent, inputEle) {\n inputEle.focus();\n var txt = '';\n if (parent.isFile && !parent.showFileExtension) {\n var index = parent.currentItemText.lastIndexOf('.');\n txt = (index === -1) ? parent.currentItemText : parent.currentItemText.substring(0, index);\n }\n else {\n txt = parent.currentItemText;\n }\n inputEle.value = txt;\n if (parent.isFile && parent.showFileExtension && (inputEle.value.indexOf('.') !== -1)) {\n inputEle.setSelectionRange(0, inputEle.value.lastIndexOf('.'));\n }\n else {\n inputEle.setSelectionRange(0, inputEle.value.length);\n }\n}\n/**\n *\n * @param {HTMLInputElement} ele - specifies the element.\n * @param {string} placeholder - specifies the place holder.\n * @returns {void}\n * @private\n */\nfunction createInput(ele, placeholder) {\n Input.createInput({\n element: ele,\n properties: {\n placeholder: placeholder\n }\n });\n}\n/* istanbul ignore next */\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the event arguements.\n * @param {FileDetails} details - specifies the file details.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details, replaceItems) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var permission;\n var formattedString;\n var intl;\n var strArr;\n var fileType;\n var location;\n options.open = function () { triggerPopupOpen(parent, parent.dialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.dialogObj, options.dialogName); };\n text = (details && details.multipleFiles === true) ? 'MultipleFileDetails' : text;\n switch (text) {\n case 'NewFolder':\n options.dialogName = 'Create Folder';\n options.header = getLocaleText(parent, 'Header-NewFolder');\n options.content = '<input type=\"text\" value=\"New folder\" id=\"newname\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Create') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onSubmit(parent);\n }\n }\n ];\n options.open = onFolderDialogOpen.bind(this, parent);\n break;\n case 'Delete':\n options.dialogName = 'Delete';\n if (parent.selectedItems.length > 1) {\n options.content = ('<div>' + getLocaleText(parent, 'Content-Multiple-Delete') + '</div>')\n .replace('{0}', parent.selectedItems.length.toString());\n options.header = getLocaleText(parent, 'Header-Multiple-Delete');\n }\n else {\n options.content = '<div>' + getLocaleText(parent, parent.isFile ? 'Content-Delete' : 'Content-Folder-Delete') + '</div>';\n options.header = getLocaleText(parent, parent.isFile ? 'Header-Delete' : 'Header-Folder-Delete');\n }\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function (e) {\n onDeleteSubmit(parent);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Rename':\n options.dialogName = 'Rename';\n options.header = getLocaleText(parent, 'Header-Rename');\n options.content = '<input type=\"text\" class=\"e-input\" id=\"rename\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Save') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onReSubmit(parent);\n }\n }\n ];\n options.open = onRenameDialogOpen.bind(this, parent);\n break;\n case 'details':\n options.dialogName = 'File Details';\n intl = new Internationalization(parent.locale);\n formattedString = intl.formatDate(new Date(details.modified), { format: 'MMMM dd, yyyy HH:mm:ss' });\n permission = '';\n if (!isNOU(details.permission)) {\n permission = '<tr><td>' + getLocaleText(parent, 'Permission') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + objectToString(details.permission) + '</td></tr>';\n }\n options.header = details.name;\n options.content = '<table>' +\n '<tr><td>' + getLocaleText(parent, 'Type') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n (details.isFile ? 'File' : 'Folder') + '\">' + (details.isFile ? 'File' : 'Folder') + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + '</td><td><span class=\"' + CLS.VALUE + '\" title =\"' +\n details.size + '\">' + details.size + '</span></td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Location') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n details.location + '\">' + details.location + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Modified') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + formattedString + '</td></tr>'\n + permission + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n options.dialogName = 'File Details';\n strArr = details.name.split(',').map(function (val) {\n var index = val.indexOf('.') + 1;\n return (index === 0) ? 'Folder' : val.substr(index).replace(' ', '');\n });\n fileType = strArr.every(function (val, i, arr) { return val === arr[0]; }) ?\n ((strArr[0] === 'Folder') ? 'Folder' : strArr[0].toLocaleUpperCase() + ' Type') : 'Multiple Types';\n location = details.location;\n options.header = details.name;\n options.content = '<table><tr><td>' + getLocaleText(parent, 'Type')\n + ':</td><td class=\"' + CLS.VALUE + '\">' + fileType + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + ':</td><td>' +\n details.size + '<span class=\"' + CLS.VALUE + '\" title =\"' + details.size\n + '\"></span></td></tr>' + '<tr><td>' + getLocaleText(parent, 'Location') +\n ':</td><td class=\"' + CLS.VALUE + '\" title=\"' + location + '\">'\n + location + '</td></tr>' + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Error':\n parent.notify(events.actionFailure, {});\n options.dialogName = 'Error';\n if (e.error.code === '401') {\n options.header = '<span class=\"e-fe-icon e-fe-access-error\"></span><div class=\"e-fe-access-header\">' +\n getLocaleText(parent, 'Access-Denied') + '</div>';\n }\n else {\n options.header = getLocaleText(parent, 'Error');\n }\n options.content = '<div class=\"' + CLS.ERROR_CONTENT + '\">' + e.error.message + '</div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dialogName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction keydownAction(parent, dialogName, args) {\n var btnElement = selectAll('.e-btn', parent.dialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.dialogObj, args, dialogName);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dlgName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction beforeExtOpen(parent, dlgName, args) {\n var btnElement = selectAll('.e-btn', parent.extDialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.extDialogObj, args, dlgName);\n}\n/**\n *\n * @param {HTMLInputElement[]} btnElement - specifies the button element.\n * @returns {void}\n * @private\n */\nfunction preventKeydown(btnElement) {\n var _loop_1 = function (btnCount) {\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {SelectedEventArgs} data - specifies the data.\n * @returns {HTMLElement} - returns the HTML element.\n * @private\n */\nfunction getFilesName(data) {\n var parent = createElement('div', { id: 'uploadDialog' });\n var ulElement = createElement('ul');\n var filesData = data.isModified ? data.modifiedFilesData : data.filesData;\n for (var fileCount = 0; fileCount < filesData.length; fileCount++) {\n var liElement = createElement('li', { className: 'dialogFiles' });\n liElement.innerHTML = filesData[fileCount].name;\n ulElement.appendChild(liElement);\n }\n parent.appendChild(ulElement);\n var errorTag = createElement('div', { className: 'e-fe-error' });\n parent.appendChild(errorTag);\n return parent;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {DialogOptions} options - specifies the dialog options.\n * @returns {void}\n * @private\n */\nfunction changeOptions(parent, options) {\n parent.dialogObj.header = options.header;\n parent.dialogObj.content = options.content;\n parent.dialogObj.buttons = options.buttons;\n parent.dialogObj.enableRtl = parent.enableRtl;\n parent.dialogObj.open = options.open;\n parent.dialogObj.close = options.close;\n parent.dialogObj.beforeOpen = keydownAction.bind(this, parent, options.dialogName);\n parent.dialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n };\n parent.dialogObj.dataBind();\n parent.dialogObj.show();\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onSubmit(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n createFolder(parent, ele.value);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReSubmit(parent) {\n var ele = select('#rename', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n var text = ele.value;\n var oIndex = parent.currentItemText.lastIndexOf('.');\n if (parent.isFile && !parent.showFileExtension) {\n var extn = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n text += extn;\n }\n parent.renameText = text;\n if (parent.currentItemText === text) {\n parent.dialogObj.hide();\n return;\n }\n var newPath = (parent.activeModule === 'navigationpane') ? getParentPath(parent.path) : parent.path;\n parent.renamedId = getValue('id', parent.itemData[0]);\n if (parent.isFile) {\n var oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n var nIndex = text.lastIndexOf('.');\n var newExtension = (nIndex === -1) ? '' : text.substr(nIndex);\n if (parent.showFileExtension && oldExtension !== newExtension) {\n createExtDialog(parent, 'Extension', null, newPath);\n }\n else {\n rename(parent, newPath, text);\n }\n }\n else {\n rename(parent, newPath, text);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onDeleteSubmit(parent) {\n parent.dialogObj.hide();\n parent.notify(events.deleteInit, {});\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onValidate(parent, ele) {\n if (/[/\\\\|*?\"<>:]/.test(ele.value)) {\n addInvalid(parent, ele);\n }\n else if (ele.value === '') {\n ele.parentElement.nextElementSibling.innerHTML = getLocaleText(parent, 'Validation-Empty');\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = '';\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onSubmitValidate(parent, ele) {\n onValidate(parent, ele);\n var len = ele.value.length - 1;\n if (ele.value !== '' && ((ele.value.lastIndexOf('.') === len) || (ele.value.lastIndexOf(' ') === len)) &&\n (parent.showFileExtension || (parent.currentItemText.lastIndexOf('.') === -1))) {\n addInvalid(parent, ele);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction addInvalid(parent, ele) {\n var error = getLocaleText(parent, 'Validation-Invalid').replace('{0}', '\"' + ele.value + '\"');\n if (parent.enableHtmlSanitizer) {\n ele.parentElement.nextElementSibling.textContent = error;\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n}\n/**\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {number} - returns the key code.\n * @private\n */\nfunction getKeyCode(e) {\n var code;\n if (e.keyCode) {\n code = e.keyCode;\n }\n else if (e.which) {\n code = e.which;\n }\n else {\n code = e.charCode;\n }\n return code;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} header - specifies the header element.\n * @param {string} imageUrl - specifies the image URL.\n * @returns {void}\n * @private\n */\nexport function createImageDialog(parent, header, imageUrl) {\n var content = createElement('div', { className: 'e-image-wrap' });\n var image = createElement('img', { className: 'e-image', attrs: { src: imageUrl, alt: header } });\n content.appendChild(image);\n if (isNOU(parent.viewerObj)) {\n parent.viewerObj = new Dialog({\n header: header,\n content: content,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n isModal: true,\n width: '350px',\n height: '350px',\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: parent.locale,\n enableResize: true,\n allowDragging: true,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n position: { X: 'center', Y: 'center' },\n enableRtl: parent.enableRtl,\n open: openImage.bind(this, parent),\n close: function () { triggerPopupClose(parent, parent.viewerObj, 'Image Preview'); },\n beforeOpen: function (args) {\n triggerPopupBeforeOpen(parent, parent.viewerObj, args, 'Image Preview');\n },\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.viewerObj, args, 'Image Preview');\n },\n resizing: updateImage.bind(this, parent),\n resizeStop: updateImage.bind(this, parent)\n });\n parent.viewerObj.isStringTemplate = true;\n parent.viewerObj.appendTo('#' + parent.element.id + CLS.IMG_DIALOG_ID);\n }\n else {\n parent.viewerObj.refresh();\n parent.viewerObj.header = header;\n parent.viewerObj.content = content;\n parent.viewerObj.enableRtl = parent.enableRtl;\n parent.viewerObj.dataBind();\n parent.viewerObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction openImage(parent) {\n setTimeout(function () {\n if (parent.viewerObj) {\n parent.viewerObj.element.focus();\n }\n });\n updateImage(parent);\n triggerPopupOpen(parent, parent.viewerObj, 'Image Preview');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction updateImage(parent) {\n var content = select('.e-dlg-content', parent.viewerObj.element);\n var imgWrap = select('.e-image-wrap', parent.viewerObj.element);\n var cssObj = window.getComputedStyle(content, null);\n var paddingWidth = cssObj ? (2 * parseFloat(cssObj.paddingRight)) : 36;\n var paddingHeight = cssObj ? (2 * parseFloat(cssObj.paddingBottom)) : 20;\n imgWrap.style.width = (content.offsetWidth - paddingWidth) + 'px';\n imgWrap.style.height = (content.offsetHeight - paddingHeight) + 'px';\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar AjaxSettings = /** @class */ (function (_super) {\n __extends(AjaxSettings, _super);\n function AjaxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"downloadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"getImageUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"uploadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"url\", void 0);\n return AjaxSettings;\n}(ChildProperty));\nexport { AjaxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var toolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(toolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Search settings of the File Manager.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], SearchSettings.prototype, \"placeholder\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the columns in the details view of the file manager.\n */\nexport var columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120,\n template: '<span class=\"e-fe-text\">${name}</span>', customAttributes: { class: 'e-fe-grid-name' }\n },\n {\n field: '_fm_modified', headerText: 'DateModified', type: 'dateTime',\n format: 'MMMM dd, yyyy HH:mm', minWidth: 120, width: '190'\n },\n {\n field: 'size', headerText: 'Size', minWidth: 90, width: '110', template: '<span class=\"e-fe-size\">${size}</span>'\n }\n];\n/**\n * Specifies the grid settings of the File Manager.\n */\nvar DetailsViewSettings = /** @class */ (function (_super) {\n __extends(DetailsViewSettings, _super);\n function DetailsViewSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n __decorate([\n Property(columnArray)\n ], DetailsViewSettings.prototype, \"columns\", void 0);\n return DetailsViewSettings;\n}(ChildProperty));\nexport { DetailsViewSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nexport var folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nexport var layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nvar ContextMenuSettings = /** @class */ (function (_super) {\n __extends(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(fileItems)\n ], ContextMenuSettings.prototype, \"file\", void 0);\n __decorate([\n Property(folderItems)\n ], ContextMenuSettings.prototype, \"folder\", void 0);\n __decorate([\n Property(layoutItems)\n ], ContextMenuSettings.prototype, \"layout\", void 0);\n __decorate([\n Property(true)\n ], ContextMenuSettings.prototype, \"visible\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\nexport { ContextMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the navigationpane settings of the File Manager.\n */\nvar NavigationPaneSettings = /** @class */ (function (_super) {\n __extends(NavigationPaneSettings, _super);\n function NavigationPaneSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('650px')\n ], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('240px')\n ], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(true)\n ], NavigationPaneSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], NavigationPaneSettings.prototype, \"sortOrder\", void 0);\n return NavigationPaneSettings;\n}(ChildProperty));\nexport { NavigationPaneSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar UploadSettings = /** @class */ (function (_super) {\n __extends(UploadSettings, _super);\n function UploadSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], UploadSettings.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(true)\n ], UploadSettings.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"autoClose\", void 0);\n __decorate([\n Property(0)\n ], UploadSettings.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], UploadSettings.prototype, \"maxFileSize\", void 0);\n return UploadSettings;\n}(ChildProperty));\nexport { UploadSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Interface for a class Column\n */\n/* istanbul ignore next */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"headerText\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"minWidth\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('Left')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTextAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customAttributes\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"hideAtMedia\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customFormat\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var TOOLBAR_ID = '_toolbar';\n/** @hidden */\nexport var LAYOUT_ID = '_layout';\n/** @hidden */\nexport var NAVIGATION_ID = '_navigation';\n/** @hidden */\nexport var TREE_ID = '_tree';\n/** @hidden */\nexport var GRID_ID = '_grid';\n/** @hidden */\nexport var LARGEICON_ID = '_largeicons';\n/** @hidden */\nexport var DIALOG_ID = '_dialog';\n/** @hidden */\nexport var ALT_DIALOG_ID = '_alt_dialog';\n/** @hidden */\nexport var IMG_DIALOG_ID = '_img_dialog';\n/** @hidden */\nexport var EXTN_DIALOG_ID = '_extn_dialog';\n/** @hidden */\nexport var UPLOAD_DIALOG_ID = '_upload_dialog';\n/** @hidden */\nexport var RETRY_DIALOG_ID = '_retry_dialog';\n/** @hidden */\nexport var CONTEXT_MENU_ID = '_contextmenu';\n/** @hidden */\nexport var SORTBY_ID = '_sortby';\n/** @hidden */\nexport var VIEW_ID = '_view';\n/** @hidden */\nexport var SPLITTER_ID = '_splitter';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var BREADCRUMBBAR_ID = '_breadcrumbbar';\n/** @hidden */\nexport var UPLOAD_ID = '_upload';\n/** @hidden */\nexport var RETRY_ID = '_retry';\n/** @hidden */\nexport var SEARCH_ID = '_search';\n/**\n * Specifies the File Manager internal class names\n */\n/** @hidden */\nexport var ROOT = 'e-filemanager';\n/** @hidden */\nexport var CONTROL = 'e-control';\n/** @hidden */\nexport var CHECK_SELECT = 'e-fe-cb-select';\n/** @hidden */\nexport var ROOT_POPUP = 'e-fe-popup';\n/** @hidden */\nexport var MOBILE = 'e-fe-mobile';\n/** @hidden */\nexport var MOB_POPUP = 'e-fe-popup e-fe-mobile';\n/** @hidden */\nexport var MULTI_SELECT = 'e-fe-m-select';\n/** @hidden */\nexport var FILTER = 'e-fe-m-filter';\n/** @hidden */\nexport var LAYOUT = 'e-layout';\n/** @hidden */\nexport var NAVIGATION = 'e-navigation';\n/** @hidden */\nexport var LAYOUT_CONTENT = 'e-layout-content';\n/** @hidden */\nexport var LARGE_ICONS = 'e-large-icons';\n/** @hidden */\nexport var TB_ITEM = 'e-toolbar-item';\n/** @hidden */\nexport var LIST_ITEM = 'e-list-item';\n/** @hidden */\nexport var LIST_TEXT = 'e-list-text';\n/** @hidden */\nexport var LIST_PARENT = 'e-list-parent';\n/** @hidden */\nexport var TB_OPTION_TICK = 'e-icons e-fe-tick';\n/** @hidden */\nexport var TB_OPTION_DOT = 'e-icons e-fe-dot';\n/** @hidden */\nexport var BLUR = 'e-blur';\n/** @hidden */\nexport var ACTIVE = 'e-active';\n/** @hidden */\nexport var HOVER = 'e-hover';\n/** @hidden */\nexport var FOCUS = 'e-focus';\n/** @hidden */\nexport var FOCUSED = 'e-focused';\n/** @hidden */\nexport var CHECK = 'e-check';\n/** @hidden */\nexport var FRAME = 'e-frame';\n/** @hidden */\nexport var CB_WRAP = 'e-checkbox-wrapper';\n/** @hidden */\nexport var ROW = 'e-row';\n/** @hidden */\nexport var ROWCELL = 'e-rowcell';\n/** @hidden */\nexport var EMPTY = 'e-empty';\n/** @hidden */\nexport var EMPTY_CONTENT = 'e-empty-content';\n/** @hidden */\nexport var EMPTY_INNER_CONTENT = 'e-empty-inner-content';\n/** @hidden */\nexport var CLONE = 'e-fe-clone';\n/** @hidden */\nexport var DROP_FOLDER = 'e-fe-drop-folder';\n/** @hidden */\nexport var DROP_FILE = 'e-fe-drop-file';\n/** @hidden */\nexport var FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var ICON_IMAGE = 'e-fe-image';\n/** @hidden */\nexport var ICON_MUSIC = 'e-fe-music';\n/** @hidden */\nexport var ICON_VIDEO = 'e-fe-video';\n/** @hidden */\nexport var LARGE_ICON = 'e-large-icon';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER = 'e-empty-icon e-fe-folder';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER_TWO = 'e-empty-icon.e-fe-folder';\n/** @hidden */\nexport var LARGE_ICON_FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var SELECTED_ITEMS = 'e-items';\n/** @hidden */\nexport var TEXT_CONTENT = 'e-text-content';\n/** @hidden */\nexport var GRID_HEADER = 'e-gridheader';\n/** @hidden */\nexport var TEMPLATE_CELL = 'e-templatecell';\n/** @hidden */\nexport var TREE_VIEW = 'e-treeview';\n/** @hidden */\nexport var MENU_ITEM = 'e-menu-item';\n/** @hidden */\nexport var MENU_ICON = 'e-menu-icon';\n/** @hidden */\nexport var SUBMENU_ICON = 'e-caret';\n/** @hidden */\nexport var GRID_VIEW = 'e-content';\n/** @hidden */\nexport var GRID_CONTENT = 'e-gridcontent';\n/** @hidden */\nexport var ICON_VIEW = 'e-list-parent';\n/** @hidden */\nexport var ICON_OPEN = 'e-icons e-fe-open';\n/** @hidden */\nexport var ICON_UPLOAD = 'e-icons e-fe-upload';\n/** @hidden */\nexport var ICON_CUT = 'e-icons e-fe-cut';\n/** @hidden */\nexport var ICON_COPY = 'e-icons e-fe-copy';\n/** @hidden */\nexport var ICON_PASTE = 'e-icons e-fe-paste';\n/** @hidden */\nexport var ICON_DELETE = 'e-icons e-fe-delete';\n/** @hidden */\nexport var ICON_RENAME = 'e-icons e-fe-rename';\n/** @hidden */\nexport var ICON_NEWFOLDER = 'e-icons e-fe-newfolder';\n/** @hidden */\nexport var ICON_DETAILS = 'e-icons e-fe-details';\n/** @hidden */\nexport var ICON_SHORTBY = 'e-icons e-fe-sort';\n/** @hidden */\nexport var ICON_REFRESH = 'e-icons e-fe-refresh';\n/** @hidden */\nexport var ICON_SELECTALL = 'e-icons e-fe-select';\n/** @hidden */\nexport var ICON_DOWNLOAD = 'e-icons e-fe-download';\n/** @hidden */\nexport var ICON_OPTIONS = 'e-icons e-fe-options';\n/** @hidden */\nexport var ICON_GRID = 'e-icons e-fe-grid';\n/** @hidden */\nexport var ICON_LARGE = 'e-icons e-fe-large';\n/** @hidden */\nexport var ICON_BREADCRUMB = 'e-icons e-fe-breadcrumb';\n/** @hidden */\nexport var ICON_CLEAR = 'e-icons e-fe-clear';\n/** @hidden */\nexport var ICON_DROP_IN = 'e-icons e-fe-drop-in';\n/** @hidden */\nexport var ICON_DROP_OUT = 'e-icons e-fe-drop-out';\n/** @hidden */\nexport var ICON_NO_DROP = 'e-icons e-fe-no-drop';\n/** @hidden */\nexport var ICONS = 'e-icons';\n/** @hidden */\nexport var DETAILS_LABEL = 'e-detailslabel';\n/** @hidden */\nexport var ERROR_CONTENT = 'e-fe-errorcontent';\n/** @hidden */\nexport var STATUS = 'e-status';\n/** @hidden */\nexport var BREADCRUMBS = 'e-address';\n/** @hidden */\nexport var RTL = 'e-rtl';\n/** @hidden */\nexport var DISPLAY_NONE = 'e-display-none';\n/** @hidden */\nexport var COLLAPSED = 'e-node-collapsed';\n/** @hidden */\nexport var FULLROW = 'e-fullrow';\n/** @hidden */\nexport var ICON_COLLAPSIBLE = 'e-icon-collapsible';\n/** @hidden */\nexport var SPLIT_BAR = 'e-split-bar';\n/** @hidden */\nexport var HEADER_CHECK = 'e-headercheck';\n/** @hidden */\nexport var OVERLAY = 'e-fe-overlay';\n/** @hidden */\nexport var VALUE = 'e-fe-value';\n","/**\n * Specifies the File Manager internal variables\n */\n/** @hidden */\nexport var isFile = 'isFile';\n/**\n * Specifies the File Manager internal events\n */\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var finalizeEnd = 'finalize-end';\n/** @hidden */\nexport var createEnd = 'create-end';\n/** @hidden */\nexport var filterEnd = 'filter-end';\n/** @hidden */\nexport var beforeDelete = 'before-delete';\n/** @hidden */\nexport var pathDrag = 'path-drag';\n/** @hidden */\nexport var deleteInit = 'delete-init';\n/** @hidden */\nexport var deleteEnd = 'delete-end';\n/** @hidden */\nexport var refreshEnd = 'refresh-end';\n/** @hidden */\nexport var resizeEnd = 'resize-end';\n/** @hidden */\nexport var splitterResize = 'splitter-resize';\n/** @hidden */\nexport var pathChanged = 'path-changed';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var beforeRequest = 'before-request';\n/** @hidden */\nexport var upload = 'upload';\n/** @hidden */\nexport var skipUpload = 'skip-upload';\n/** @hidden */\nexport var afterRequest = 'after-request';\n/** @hidden */\nexport var download = 'download';\n/** @hidden */\nexport var layoutRefresh = 'layout-refresh';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var search = 'search';\n/** @hidden */\nexport var openInit = 'open-init';\n/** @hidden */\nexport var openEnd = 'open-end';\n/** @hidden */\nexport var selectionChanged = 'selection-changed';\n/** @hidden */\nexport var selectAllInit = 'select-all-init';\n/** @hidden */\nexport var clearAllInit = 'clear-all-init';\n/** @hidden */\nexport var clearPathInit = 'clear-path-init';\n/** @hidden */\nexport var layoutChange = 'layout-change';\n/** @hidden */\nexport var sortByChange = 'sort-by-change';\n/** @hidden */\nexport var nodeExpand = 'node-expand';\n/** @hidden */\nexport var detailsInit = 'details-init';\n/** @hidden */\nexport var menuItemData = 'menu-item-data';\n/** @hidden */\nexport var renameInit = 'rename-init';\n/** @hidden */\nexport var renameEndParent = 'rename-end-parent';\n/** @hidden */\nexport var renameEnd = 'rename-end';\n/** @hidden */\nexport var showPaste = 'show-paste';\n/** @hidden */\nexport var hidePaste = 'hide-paste';\n/** @hidden */\nexport var selectedData = 'selected-data';\n/** @hidden */\nexport var cutCopyInit = 'cut-copy-init';\n/** @hidden */\nexport var pasteInit = 'paste-init';\n/** @hidden */\nexport var pasteEnd = 'paste-end';\n/** @hidden */\nexport var cutEnd = 'cut-end';\n/** @hidden */\nexport var hideLayout = 'hide-layout';\n/** @hidden */\nexport var updateTreeSelection = 'update-tree-selection';\n/** @hidden */\nexport var treeSelect = 'select-node';\n/** @hidden */\nexport var sortColumn = 'sort-column';\n/** @hidden */\nexport var pathColumn = 'path-column';\n/** @hidden */\nexport var searchTextChange = 'search-change';\n/** @hidden */\nexport var beforeDownload = 'before-download';\n/** @hidden */\nexport var downloadInit = 'download-init';\n/** @hidden */\nexport var dropInit = 'drop-init';\n/** @hidden */\nexport var dragEnd = 'drag-end';\n/** @hidden */\nexport var dropPath = 'drop-path';\n/** @hidden */\nexport var dragHelper = 'drag-helper';\n/** @hidden */\nexport var dragging = 'dragging';\n/** @hidden */\nexport var updateSelectionData = 'update-selection-data';\n/** @hidden */\nexport var methodCall = 'method-call';\n/** @hidden */\nexport var permissionRead = 'read';\n/** @hidden */\nexport var permissionEdit = 'write';\n/** @hidden */\nexport var permissionEditContents = 'writeContents';\n/** @hidden */\nexport var permissionCopy = 'copy';\n/** @hidden */\nexport var permissionUpload = 'upload';\n/** @hidden */\nexport var permissionDownload = 'download';\n","import { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, select, selectAll, EventHandler, KeyboardEvents, closest, Draggable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, addClass, removeClass, Touch, isVisible } from '@syncfusion/ej2-base';\nimport { getValue, setValue, remove } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { read, GetDetails, Delete } from '../common/operations';\nimport { doRename, getAccessClass, getPathObject, getFullPath, getDirectoryPath, rename, doDownload, getItemName } from '../common/index';\nimport { removeBlur, cutFiles, copyFiles, addBlur, openSearchFolder, removeActive, pasteHandler } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule } from '../common/index';\nimport { updateRenamingData, doDeleteFiles, doDownloadFiles } from '../common/index';\nimport { openAction, fileType, refresh, getImageUrl, getSortedData, createDeniedDialog, updateLayout } from '../common/utility';\nimport { createEmptyElement, hasReadAccess, hasEditAccess } from '../common/utility';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\n/**\n * LargeIconsView module\n */\nvar LargeIconsView = /** @class */ (function () {\n /**\n * Constructor for the LargeIcons module.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function LargeIconsView(parent) {\n this.isInteraction = true;\n this.uploadOperation = false;\n this.count = 0;\n this.isRendered = true;\n this.tapCount = 0;\n this.isPasteOperation = false;\n this.isInteracted = true;\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n addClass([this.element], CLS.LARGE_ICONS);\n this.addEventListener();\n this.keyConfigs = {\n end: 'end',\n home: 'home',\n tab: 'tab',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n ctrlUp: 'ctrl+uparrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftLeft: 'shift+leftarrow',\n shiftRight: 'shift+rightarrow',\n shiftUp: 'shift+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csLeft: 'ctrl+shift+leftarrow',\n csRight: 'ctrl+shift+rightarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n f2: 'f2',\n shiftdel: 'shift+delete',\n back: 'backspace',\n ctrlD: 'ctrl+d'\n };\n }\n LargeIconsView.prototype.render = function (args) {\n this.parent.visitedItem = null;\n this.startItem = null;\n showSpinner(this.parent.element);\n if (this.parent.view === 'LargeIcons') {\n this.resetMultiSelect();\n this.element.setAttribute('tabindex', '0');\n if (this.listObj) {\n this.unWireEvents();\n this.removeEventListener();\n }\n this.parent.notify(events.hideLayout, {});\n var iconsView = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n var ul = select('ul', iconsView);\n if (ul) {\n remove(ul);\n }\n this.listObj = {\n ariaAttributes: {\n itemRole: 'option', listRole: 'listbox', itemText: '',\n groupItemRole: 'group', wrapperRole: ''\n },\n showIcon: true,\n fields: { text: 'name', iconCss: '_fm_icon', imageUrl: '_fm_imageUrl', htmlAttributes: '_fm_htmlAttr' },\n sortOrder: this.parent.sortOrder,\n itemCreated: this.onItemCreated.bind(this),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer\n };\n this.items = [];\n this.items = this.renderList(args);\n this.items = getSortedData(this.parent, this.items);\n // eslint-disable-next-line\n this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.listElements));\n this.element.appendChild(this.listElements);\n this.preventImgDrag();\n this.createDragObj();\n iconsView.classList.remove(CLS.DISPLAY_NONE);\n if (this.itemList.length === 0) {\n var emptyList = this.element.querySelector('.' + CLS.LIST_PARENT);\n this.element.removeChild(emptyList);\n createEmptyElement(this.parent, this.element, args);\n }\n else if (this.itemList.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n if (this.isPasteOperation === true) {\n this.selectItems(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n /* istanbul ignore next */\n if (this.uploadOperation === true) {\n this.selectItems(this.parent.uploadItem);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.count++;\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.parent.activeModule = 'largeiconsview';\n }\n for (var i = 0; i < activeEle.length; i++) {\n activeEle[i].setAttribute('aria-selected', 'true');\n }\n this.adjustHeight();\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\n };\n LargeIconsView.prototype.preventImgDrag = function () {\n var i = 0;\n while (i < this.itemList.length) {\n if (this.itemList[i].querySelector('img')) {\n /* istanbul ignore next */\n this.itemList[i].ondragstart = function () { return false; };\n }\n i++;\n }\n };\n LargeIconsView.prototype.createDragObj = function () {\n var _this = this;\n if (!this.parent.isMobile && this.listObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.listElements, {\n enableTailMode: true,\n distance: 5,\n enableAutoScroll: true,\n dragTarget: '.' + CLS.LARGE_ICON,\n helper: this.dragHelper.bind(this),\n cursorAt: this.parent.dragCursorPosition,\n dragArea: this.parent.element,\n dragStop: dragStopHandler.bind(this, this.parent),\n drag: draggingHandler.bind(this, this.parent),\n clone: true,\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n }\n });\n }\n else if (this.dragObj && !this.parent.allowDragAndDrop) {\n this.dragObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = closest(dragTarget, '.e-list-item');\n if (!dragLi) {\n return null;\n }\n if (dragLi && !dragLi.classList.contains('e-active')) {\n this.setFocus(dragLi);\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n for (var i = 0; i < activeEle.length; i++) {\n // eslint-disable-next-line\n this.parent.dragData.push(this.getItemObject(activeEle[i]));\n this.parent.activeElements.push(activeEle[i]);\n }\n getModule(this.parent, dragLi);\n this.parent.dragPath = this.parent.path;\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n LargeIconsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, '.e-list-item');\n // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n // eslint-disable-next-line\n var info = this.getItemObject(dropLi);\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n else {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n LargeIconsView.prototype.getModuleName = function () {\n return 'largeiconsview';\n };\n LargeIconsView.prototype.adjustHeight = function () {\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n this.element.style.height = (pane.offsetHeight - bar.offsetHeight) + 'px';\n };\n LargeIconsView.prototype.onItemCreated = function (args) {\n args.item.removeAttribute('aria-level');\n if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {\n var textEle = args.item.querySelector('.' + CLS.LIST_TEXT);\n var txt = getValue('name', args.curData);\n var type = getValue('type', args.curData);\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\n this.renderCheckbox(args);\n var eventArgs = {\n element: args.item,\n fileDetails: args.curData,\n module: 'LargeIconsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n LargeIconsView.prototype.renderCheckbox = function (args) {\n if (!this.parent.allowMultiSelection) {\n return;\n }\n var checkElement = createCheckBox(createElement, false, {\n checked: false,\n cssClass: 'e-small'\n });\n checkElement.setAttribute('role', 'checkbox');\n checkElement.setAttribute('aria-checked', 'false');\n args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);\n };\n LargeIconsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.destroy();\n this.render(args);\n /* istanbul ignore next */\n if (getValue('name', args) === 'layout-change' && this.parent.fileAction === 'move' &&\n this.parent.isCut && this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n var indexes = this.getIndexes(this.parent.selectedNodes);\n var length_1 = 0;\n while (length_1 < indexes.length) {\n addBlur(this.itemList[indexes[length_1]]);\n length_1++;\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.element.focus();\n }\n this.checkItem();\n this.parent.isLayoutChange = false;\n }\n else {\n this.element.setAttribute('tabindex', '-1');\n }\n };\n LargeIconsView.prototype.checkItem = function () {\n var checkEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (checkEle) {\n var checkLength = 0;\n while (checkLength < checkEle.length) {\n this.checkState(checkEle[checkLength], true);\n checkLength++;\n }\n }\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\n // eslint-disable-next-line\n var items = JSON.parse(JSON.stringify(args.files));\n while (i < items.length) {\n var icon = fileType(items[i]);\n var name_1 = getValue('name', items[i]);\n var selected = getItemName(this.parent, items[i]);\n var className = ((this.parent.selectedItems &&\n this.parent.selectedItems.indexOf(selected) !== -1)) ?\n CLS.LARGE_ICON + ' e-active' : CLS.LARGE_ICON;\n if (!hasEditAccess(items[i])) {\n className += ' ' + getAccessClass(items[i]);\n }\n if (icon === CLS.ICON_IMAGE && this.parent.showThumbnail && hasReadAccess(items[i])) {\n var imgUrl = getImageUrl(this.parent, items[i]);\n setValue('_fm_imageUrl', imgUrl, items[i]);\n setValue('_fm_imageAttr', { alt: name_1 }, items[i]);\n }\n else {\n setValue('_fm_icon', icon, items[i]);\n }\n setValue('_fm_htmlAttr', { class: className, title: name_1 }, items[i]);\n i++;\n }\n return items;\n };\n LargeIconsView.prototype.onFinalizeEnd = function (args) {\n this.render(args);\n };\n LargeIconsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.clearSelect();\n this.selectItems([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n this.parent.largeiconsviewModule.element.focus();\n };\n LargeIconsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n this.updateSelectedData();\n }\n };\n LargeIconsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.clearSelect();\n };\n LargeIconsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n };\n LargeIconsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'largeiconsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n LargeIconsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n /* istanbul ignore next */\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '') {\n this.parent.searchedItems = [];\n }\n if (this.parent.view === 'LargeIcons') {\n removeBlur(this.parent);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onLayoutChange(args);\n if (this.parent.renamedItem) {\n this.clearSelect();\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n }\n };\n LargeIconsView.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'largeiconsview') {\n this.doOpenAction(args.target);\n }\n };\n LargeIconsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'LargeIcons' && this.element) {\n this.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n LargeIconsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.startItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n var eveArgs = { ctrlKey: true, shiftKey: true };\n this.doSelection(lastItem, eveArgs);\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.clearSelection();\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n LargeIconsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onSearch = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n this.parent.searchedItems = args.files;\n this.onLayoutChange(args);\n }\n };\n LargeIconsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.adjustHeight();\n };\n LargeIconsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.updateSelectedData();\n };\n LargeIconsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'LargeIcons' && !isNOU(this.listObj) &&\n this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered\n && this.parent.sortBy === 'filterPath') {\n this.parent.sortBy = 'name';\n this.parent.notify(events.sortByChange, {});\n }\n };\n LargeIconsView.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.search, this.onSearch);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.splitterResize, this.splitterResizeHandler);\n this.parent.off(events.resizeEnd, this.resizeHandler);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n this.parent.off(events.filterEnd, this.onPathChanged);\n };\n LargeIconsView.prototype.addEventListener = function () {\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.search, this.onSearch, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.splitterResize, this.splitterResizeHandler, this);\n this.parent.on(events.resizeEnd, this.resizeHandler, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n };\n LargeIconsView.prototype.onActionFailure = function () { this.isInteraction = true; this.isInteracted = true; };\n // eslint-disable-next-line\n LargeIconsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var ele = closest(args.target, 'li');\n this.parent.itemData = [this.getItemObject(ele)];\n }\n };\n LargeIconsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.updateSelectedData();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n LargeIconsView.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath === '') ? [getPathObject(this.parent)] :\n [this.getItemObject(select('.e-active', this.element))];\n }\n };\n LargeIconsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeRecords = [];\n this.parent.activeElements = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.activeElements.push(activeEle[i]);\n this.parent.activeRecords.push(this.getItemObject(activeEle[i]));\n }\n }\n };\n LargeIconsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {\n this.onPathChanged(args);\n }\n }\n };\n LargeIconsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n LargeIconsView.prototype.onPropertyChanged = function (e) {\n var currentSelected;\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'selectedItems':\n this.isInteraction = false;\n this.isInteracted = false;\n currentSelected = isNOU(this.parent.selectedItems) ? [] : this.parent.selectedItems.slice(0);\n currentSelected = this.parent.allowMultiSelection ? currentSelected :\n currentSelected.slice(currentSelected.length - 1);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onClearAllInit();\n if (currentSelected.length) {\n this.selectItems(currentSelected);\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n this.isInteraction = true;\n this.isInteracted = true;\n break;\n case 'showThumbnail':\n refresh(this.parent);\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (this.parent.view !== 'LargeIcons') {\n break;\n }\n refresh(this.parent);\n break;\n case 'view':\n updateLayout(this.parent, 'LargeIcons');\n break;\n }\n }\n };\n LargeIconsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.listObj) {\n this.unWireEvents();\n }\n };\n LargeIconsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n };\n LargeIconsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onMouseOver = function (e) {\n var targetEle = closest(e.target, '.e-list-item');\n removeBlur(this.parent, 'hover');\n if (targetEle !== null) {\n targetEle.classList.add(CLS.HOVER);\n }\n };\n LargeIconsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n eve.originalEvent.preventDefault();\n if (proxy_1.parent.isDevice) {\n proxy_1.tapCount = eve.tapCount;\n proxy_1.tapEvent = eve;\n setTimeout(function () {\n if (proxy_1.tapCount > 0) {\n proxy_1.doTapAction(proxy_1.tapEvent);\n }\n proxy_1.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n proxy_1.dblClickHandler(eve);\n }\n else {\n proxy_1.clickHandler(eve);\n }\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n proxy_1.multiSelect = proxy_1.parent.allowMultiSelection ? true : false;\n if (proxy_1.parent.allowMultiSelection) {\n addClass([proxy_1.parent.element], CLS.MULTI_SELECT);\n }\n proxy_1.clickHandler(e);\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.doTapAction = function (eve) {\n var target = eve.originalEvent.target;\n var item = closest(target, '.' + CLS.LIST_ITEM);\n if (this.multiSelect || target.classList.contains(CLS.LIST_PARENT) || isNOU(item)) {\n this.clickHandler(eve);\n }\n else {\n this.parent.isFile = false;\n this.updateType(item);\n if (!this.parent.isFile) {\n this.dblClickHandler(eve);\n }\n else if (eve.tapCount === 2) {\n this.clickHandler(eve);\n this.dblClickHandler(eve);\n }\n else {\n this.clickHandler(eve);\n }\n }\n };\n LargeIconsView.prototype.clickHandler = function (e) {\n var target = e.originalEvent.target;\n removeBlur(this.parent, 'hover');\n this.doSelection(target, e.originalEvent);\n this.parent.activeModule = 'largeiconsview';\n };\n /**\n *\n * @param {Element} target - specifies the target element.\n * @param {TouchEventArgs | MouseEventArgs | KeyboardEventArgs} e - specifies event arguements.\n * @returns {void}\n * @hidden\n */\n LargeIconsView.prototype.doSelection = function (target, e) {\n var item = closest(target, '.' + CLS.LIST_ITEM);\n var cList = target.classList;\n this.parent.isFile = false;\n var action = 'select';\n if (e.which === 3 && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {\n this.updateType(item);\n return;\n }\n else if (!isNOU(item)) {\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)\n && (e.ctrlKey || target.classList.contains(CLS.CHECK))) {\n action = 'unselect';\n }\n var fileSelectionArgs = this.triggerSelection(action, item);\n if (fileSelectionArgs.cancel !== true) {\n if ((!this.parent.allowMultiSelection || (!this.multiSelect && (e && !e.ctrlKey)))\n && !cList.contains(CLS.FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey) {\n if (!(e && e.ctrlKey)) {\n this.clearSelect();\n }\n if (!this.startItem) {\n this.startItem = item;\n }\n var startIndex = this.itemList.indexOf(this.startItem);\n var endIndex = this.itemList.indexOf(item);\n if (startIndex > endIndex) {\n for (var i = startIndex; i >= endIndex; i--) {\n this.addActive(this.itemList[i]);\n }\n }\n else {\n for (var i = startIndex; i <= endIndex; i++) {\n this.addActive(this.itemList[i]);\n }\n }\n this.addFocus(this.itemList[endIndex]);\n }\n else {\n this.startItem = item;\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)) {\n this.removeActive(item);\n }\n else {\n this.addActive(item);\n }\n this.addFocus(item);\n }\n if (this.parent.selectedItems.length === 0) {\n this.resetMultiSelect();\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect(action, item);\n }\n }\n else {\n this.clearSelection();\n }\n if (!isNOU(item)) {\n this.updateType(item);\n }\n };\n LargeIconsView.prototype.dblClickHandler = function (e) {\n this.parent.activeModule = 'largeiconsview';\n var target = e.originalEvent.target;\n this.doOpenAction(target);\n };\n LargeIconsView.prototype.clearSelection = function () {\n this.clearSelect();\n this.resetMultiSelect();\n this.parent.notify(events.selectionChanged, {});\n };\n LargeIconsView.prototype.resetMultiSelect = function () {\n this.multiSelect = false;\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n };\n LargeIconsView.prototype.doOpenAction = function (target) {\n var _this = this;\n if (isNOU(target)) {\n return;\n }\n var item = closest(target, '.' + CLS.LIST_ITEM);\n this.parent.isFile = false;\n if (!isNOU(item)) {\n this.updateType(item);\n // eslint-disable-next-line\n var details_1 = this.getItemObject(item);\n if (!hasReadAccess(details_1)) {\n createDeniedDialog(this.parent, details_1, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: details_1, module: 'LargeIconsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var text = getValue('name', details_1);\n if (!_this.parent.isFile) {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', details_1);\n var newPath = _this.parent.path + (isNOU(id) ? text : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(text);\n _this.parent.pathId.push(getValue('_fm_id', details_1));\n _this.parent.itemData = [details_1];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, details_1);\n }\n _this.parent.isFiltered = false;\n _this.parent.setProperties({ selectedItems: [] }, true);\n }\n else {\n var icon = fileType(details_1);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, details_1);\n createImageDialog(_this.parent, text, imgUrl);\n }\n }\n }\n });\n }\n };\n LargeIconsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n LargeIconsView.prototype.keydownActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'moveDown':\n case 'moveLeft':\n case 'moveRight':\n case 'moveUp':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n LargeIconsView.prototype.keyActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n var fItem = this.getFocusedItem();\n var firstItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n switch (e.action) {\n case 'end':\n this.navigateItem(lastItem);\n break;\n case 'home':\n this.navigateItem(firstItem);\n break;\n case 'tab':\n if (!isNOU(fItem)) {\n this.addFocus(fItem);\n }\n else if (!isNOU(firstItem)) {\n this.addFocus(firstItem);\n }\n break;\n case 'moveDown':\n this.navigateDown(fItem, true);\n break;\n case 'moveLeft':\n this.navigateRight(fItem, false);\n break;\n case 'moveRight':\n this.navigateRight(fItem, true);\n break;\n case 'moveUp':\n this.navigateDown(fItem, false);\n break;\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n this.csEndKey(lastItem, e);\n break;\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n this.csHomeKey(firstItem, e);\n break;\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n this.csDownKey(fItem, e);\n break;\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n this.csLeftKey(fItem, e);\n break;\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n this.csRightKey(fItem, e);\n break;\n case 'ctrlUp':\n case 'shiftUp':\n case 'csUp':\n this.csUpKey(fItem, e);\n break;\n case 'space':\n this.spaceKey(fItem);\n break;\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n if (!isNOU(fItem)) {\n this.doSelection(fItem, e);\n }\n break;\n case 'ctrlA':\n this.ctrlAKey(firstItem, lastItem);\n break;\n case 'enter':\n this.doOpenAction(this.parent.visitedItem ? this.parent.visitedItem : this.getVisitedItem());\n break;\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n }\n };\n LargeIconsView.prototype.doDownload = function () {\n this.updateSelectedData();\n doDownload(this.parent);\n };\n LargeIconsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.updateSelectedData();\n // eslint-disable-next-line\n var data = this.parent.itemData;\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(this.parent, data[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n LargeIconsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n LargeIconsView.prototype.updateRenameData = function () {\n var item = select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n updateRenamingData(this.parent, data);\n };\n LargeIconsView.prototype.getVisitedItem = function () {\n var item = this.parent.selectedItems[this.parent.selectedItems.length - 1];\n var indexes = this.getIndexes([item], this.parent.hasId);\n return this.itemList[indexes[0]];\n };\n LargeIconsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.FOCUS, this.element);\n };\n LargeIconsView.prototype.getActiveItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n };\n LargeIconsView.prototype.getFirstItem = function () {\n return this.itemList[0];\n };\n LargeIconsView.prototype.getLastItem = function () {\n return this.itemList[this.itemList.length - 1];\n };\n LargeIconsView.prototype.navigateItem = function (item) {\n this.setFocus(item);\n };\n LargeIconsView.prototype.navigateDown = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards, this.perRow);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.navigateRight = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.getNextItem = function (li, isTowards, perRow) {\n if (isNOU(li)) {\n return this.getFocusedItem() || this.getActiveItem() || this.getFirstItem();\n }\n var index = this.itemList.indexOf(li);\n var nextItem;\n do {\n if (isTowards) {\n index = perRow ? index + perRow : index + 1;\n }\n else {\n index = perRow ? index - perRow : index - 1;\n }\n nextItem = this.itemList[index];\n if (isNOU(nextItem)) {\n return li;\n }\n } while (!isVisible(nextItem));\n return nextItem;\n };\n LargeIconsView.prototype.setFocus = function (nextItem) {\n if (!isNOU(nextItem)) {\n var fileSelectionArgs = this.triggerSelection('select', nextItem);\n if (fileSelectionArgs.cancel !== true) {\n this.startItem = nextItem;\n this.clearSelect();\n this.addActive(nextItem);\n this.addFocus(nextItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', nextItem);\n }\n }\n };\n LargeIconsView.prototype.spaceKey = function (fItem) {\n if (!isNOU(fItem) && !fItem.classList.contains(CLS.ACTIVE)) {\n var fileSelectionArgs = this.triggerSelection('select', fItem);\n if (fileSelectionArgs.cancel !== true) {\n this.addActive(fItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', fItem);\n }\n }\n };\n LargeIconsView.prototype.ctrlAKey = function (firstItem, lastItem) {\n if (this.parent.allowMultiSelection && !isNOU(firstItem)) {\n this.startItem = firstItem;\n var eveArgs = { ctrlKey: true, shiftKey: true };\n var liParent = this.element.querySelector('.' + CLS.LIST_PARENT);\n var liScrPos = liParent.scrollTop;\n var getCurFocusedItem = this.getFocusedItem();\n this.doSelection(lastItem, eveArgs);\n liParent.scrollTop = liScrPos;\n if (!isNOU(getCurFocusedItem)) {\n this.addFocus(getCurFocusedItem);\n }\n }\n };\n LargeIconsView.prototype.csEndKey = function (lastItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(lastItem);\n }\n else if (!isNOU(lastItem)) {\n if (e.action === 'ctrlEnd') {\n this.addFocus(lastItem);\n }\n else {\n this.doSelection(lastItem, e);\n }\n }\n };\n LargeIconsView.prototype.csHomeKey = function (firstItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(firstItem);\n }\n else if (!isNOU(firstItem)) {\n if (e.action === 'ctrlHome') {\n this.addFocus(firstItem);\n }\n else {\n this.doSelection(firstItem, e);\n }\n }\n };\n LargeIconsView.prototype.csDownKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, true);\n }\n else {\n var dItem = this.getNextItem(fItem, true, this.perRow);\n if (!isNOU(dItem)) {\n if (e.action === 'ctrlDown') {\n this.addFocus(dItem);\n }\n else {\n this.doSelection(dItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csLeftKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, false);\n }\n else {\n var lItem = this.getNextItem(fItem, false);\n if (!isNOU(lItem)) {\n if (e.action === 'ctrlLeft') {\n this.addFocus(lItem);\n }\n else {\n this.doSelection(lItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csRightKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, true);\n }\n else {\n var rItem = this.getNextItem(fItem, true);\n if (!isNOU(rItem)) {\n if (e.action === 'ctrlRight') {\n this.addFocus(rItem);\n }\n else {\n this.doSelection(rItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csUpKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, false);\n }\n else {\n var uItem = this.getNextItem(fItem, false, this.perRow);\n if (!isNOU(uItem)) {\n if (e.action === 'ctrlUp') {\n this.addFocus(uItem);\n }\n else {\n this.doSelection(uItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.addActive = function (nextItem) {\n if (!isNOU(nextItem)) {\n if (!nextItem.classList.contains(CLS.ACTIVE)) {\n this.parent.selectedItems.push(this.getDataName(nextItem));\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n addClass([nextItem], [CLS.ACTIVE]);\n nextItem.setAttribute('aria-selected', 'true');\n this.checkState(nextItem, true);\n }\n this.parent.visitedItem = nextItem;\n }\n };\n LargeIconsView.prototype.removeActive = function (preItem) {\n if (!isNOU(preItem)) {\n removeClass([preItem], [CLS.ACTIVE]);\n if (this.parent.allowMultiSelection) {\n preItem.setAttribute('aria-selected', 'false');\n }\n else {\n preItem.removeAttribute('aria-selected');\n }\n this.checkState(preItem, false);\n var index = this.parent.selectedItems.indexOf(this.getDataName(preItem));\n if (index > -1) {\n this.parent.selectedItems.splice(index, 1);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n this.parent.visitedItem = null;\n }\n };\n LargeIconsView.prototype.getDataName = function (item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n return getItemName(this.parent, data);\n };\n LargeIconsView.prototype.addFocus = function (item) {\n this.element.setAttribute('tabindex', '-1');\n var fItem = this.getFocusedItem();\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS]);\n }\n addClass([item], [CLS.FOCUS]);\n item.setAttribute('tabindex', '0');\n item.focus();\n };\n LargeIconsView.prototype.checkState = function (item, toCheck) {\n if (!this.parent.allowMultiSelection) {\n return;\n }\n var checkEle = select('.' + CLS.FRAME, item);\n if (isNOU(checkEle)) {\n return;\n }\n if (toCheck) {\n if (!checkEle.classList.contains(CLS.CHECK)) {\n addClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'true');\n }\n }\n else {\n if (checkEle.classList.contains(CLS.CHECK)) {\n removeClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'false');\n }\n }\n };\n LargeIconsView.prototype.clearSelect = function () {\n var eles = Array.prototype.slice.call(selectAll('.' + CLS.ACTIVE, this.listElements));\n var fileSelectionArgs;\n if (eles.length !== 0) {\n fileSelectionArgs = this.triggerSelection('unselect', eles[0]);\n if (fileSelectionArgs.cancel !== true) {\n for (var i = 0, len = eles.length; i < len; i++) {\n this.removeActive(eles[i]);\n }\n }\n this.triggerSelect('unselect', eles[0]);\n }\n };\n LargeIconsView.prototype.resizeHandler = function () {\n this.getItemCount();\n if (!isNOU(this.listObj)) {\n this.adjustHeight();\n }\n };\n LargeIconsView.prototype.splitterResizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.getItemCount = function () {\n var perRow = 1;\n if (this.itemList) {\n for (var i = 0, len = this.itemList.length - 1; i < len; i++) {\n if (this.itemList[i].getBoundingClientRect().top === this.itemList[i + 1].getBoundingClientRect().top) {\n perRow++;\n }\n else {\n break;\n }\n }\n }\n this.perRow = perRow;\n };\n LargeIconsView.prototype.triggerSelection = function (action, item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n var eventArgs = {\n action: action, fileDetails: data, isInteracted: this.isInteraction, cancel: false, target: item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n };\n LargeIconsView.prototype.triggerSelect = function (action, item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n this.parent.visitedData = data;\n var eventArgs = { action: action, fileDetails: data, isInteracted: this.isInteracted };\n this.parent.trigger('fileSelect', eventArgs);\n this.isInteracted = true;\n };\n LargeIconsView.prototype.selectItems = function (items) {\n var indexes = this.getIndexes(items, this.parent.hasId);\n for (var j = 0, len = indexes.length; j < len; j++) {\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[indexes[j]], eveArgs);\n }\n };\n LargeIconsView.prototype.getIndexes = function (items, byId) {\n var indexes = [];\n var filter = byId ? 'id' : 'name';\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filter, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n return indexes;\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var newData = new DataManager(this.items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (newData.length > 0) {\n resultData = new DataManager(newData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n var index = this.items.indexOf(resultData[0]);\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[index], eveArgs);\n }\n };\n LargeIconsView.prototype.updateSelectedData = function () {\n // eslint-disable-next-line\n var data = [];\n var items = selectAll('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n for (var i = 0; i < items.length; i++) {\n data[i] = this.getItemObject(items[i]);\n }\n this.parent.itemData = data;\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.onMethodCall = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n var action = getValue('action', args);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', args));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', args));\n break;\n case 'openFile':\n this.openFile(getValue('id', args));\n break;\n case 'renameFile':\n this.isInteraction = false;\n this.isInteracted = false;\n this.renameFile(getValue('id', args), getValue('newName', args));\n break;\n case 'createFolder':\n this.isInteraction = false;\n this.isInteracted = false;\n break;\n case 'clearSelection':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onClearAllInit();\n break;\n case 'selectAll':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onSelectAllInit();\n break;\n }\n };\n LargeIconsView.prototype.getItemsIndex = function (items) {\n var indexes = [];\n var isFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filterName = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !isFilter) {\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filterName, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n }\n else {\n for (var i = 0, len = this.items.length; i < len; i++) {\n var name_2 = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);\n if ((items.indexOf(name_2) !== -1) || (items.indexOf(getValue(filterName, this.items[i])) !== -1)) {\n indexes.push(i);\n }\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n var indexes = this.getItemsIndex(ids);\n if (indexes.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < indexes.length; i++) {\n data[i] = this.items[indexes[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n var index = this.getItemsIndex(ids);\n if (index.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < index.length; i++) {\n data[i] = this.items[index[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n this.doOpenAction(this.itemList[indexes[0]]);\n }\n };\n LargeIconsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n updateRenamingData(this.parent, this.items[indexes[0]]);\n if (isNOU(name)) {\n doRename(this.parent);\n }\n else {\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n rename(this.parent, this.parent.path, name);\n }\n }\n }\n };\n return LargeIconsView;\n}());\nexport { LargeIconsView };\n","import { EventHandler, closest, isNullOrUndefined, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, addClass, removeClass, remove, createElement } from '@syncfusion/ej2-base';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { read } from '../common/operations';\nimport { getLocaleText, searchWordHandler } from '../common/utility';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * BreadCrumbBar module\n */\nvar BreadCrumbBar = /** @class */ (function () {\n /**\n * constructor for addressbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies parent element.\n * @private\n *\n */\n function BreadCrumbBar(parent) {\n this.addressPath = '';\n this.addressBarLink = '';\n this.searchTimer = null;\n this.searchWrapWidth = null;\n this.parent = parent;\n this.keyConfigs = {\n enter: 'enter'\n };\n this.render();\n }\n BreadCrumbBar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var value = e.newProp.searchSettings;\n switch (prop) {\n case 'searchSettings':\n if (!isNullOrUndefined(value.allowSearchOnTyping)) {\n this.searchEventBind(value.allowSearchOnTyping);\n }\n if (this.parent.breadcrumbbarModule.searchObj.value && this.parent.breadcrumbbarModule.searchObj.value !== '' &&\n !(!isNullOrUndefined(value.allowSearchOnTyping) && isNullOrUndefined(value.filterType) &&\n isNullOrUndefined(value.ignoreCase))) {\n searchWordHandler(this.parent, this.parent.breadcrumbbarModule.searchObj.value, false);\n }\n break;\n }\n }\n };\n BreadCrumbBar.prototype.render = function () {\n this.addEventListener();\n };\n BreadCrumbBar.prototype.onPathChange = function () {\n var pathNames = this.parent.pathNames;\n var paths = this.parent.path.split('/');\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var addressbarLI = null;\n var pathNamesLen = pathNames.length;\n if (pathNames.length > 0) {\n var id = '';\n for (var i = 0; i < pathNamesLen; i++) {\n var addressATag = null;\n addressbarLI = this.parent.createElement('li', { className: 'e-address-list-item' });\n for (var j = 0; j <= i; j++) {\n id = id + paths[j] + '/';\n }\n addressbarLI.setAttribute('data-utext', id);\n if (i !== 0) {\n var icon = createElement('span', { className: CLS.ICONS });\n addressbarLI.appendChild(icon);\n }\n if (pathNamesLen - i !== 1) {\n addressATag = createElement('a', { className: CLS.LIST_TEXT });\n addressbarLI.setAttribute('tabindex', '0');\n }\n else {\n addressATag = createElement('span', { className: CLS.LIST_TEXT });\n }\n id = '';\n addressATag.innerText = pathNames[i];\n addressbarLI.appendChild(addressATag);\n addressbarUL.appendChild(addressbarLI);\n }\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n if (!isNullOrUndefined(ulElement)) {\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n remove(ulElement);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n if (!searchWrap) {\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.appendChild(addressbarUL);\n }\n this.updateBreadCrumbBar(addressbarUL);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.updateBreadCrumbBar = function (addresBarUL) {\n var liElements = addresBarUL.querySelectorAll('li');\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n var style = window.getComputedStyle(ulElement, null);\n var pRight = parseFloat(style.getPropertyValue('padding-right'));\n var pLeft = parseFloat(style.getPropertyValue('padding-left'));\n var breadCrumbBarWidth = ulElement.offsetWidth - pRight - pLeft;\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var liElementsWidth = 0;\n var liElementsWidths = [];\n for (var i = 0; i < liElements.length; i++) {\n var width = liElements[i].clientWidth;\n liElementsWidths.push(width);\n liElementsWidth = liElementsWidth + width;\n }\n if (!isNullOrUndefined(ulElement)) {\n remove(ulElement);\n }\n var searchContainer = this.parent.createElement('div');\n searchContainer.setAttribute('class', 'e-search-wrap');\n var id = this.parent.element.id + CLS.SEARCH_ID;\n var searchInput = createElement('input', { id: id,\n attrs: { autocomplete: 'off', 'aria-label': getLocaleText(this.parent, 'Search') } });\n searchContainer.appendChild(searchInput);\n var searchEle = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap .e-input');\n if (isNullOrUndefined(searchEle)) {\n this.parent.breadCrumbBarNavigation.appendChild(searchContainer);\n var span = createElement('span', { className: 'e-icons e-fe-search' });\n EventHandler.add(span, 'click', this.onShowInput, this);\n searchInput.parentElement.insertBefore(span, searchInput);\n this.searchObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: getLocaleText(this.parent, 'Search'),\n focus: this.onFocus.bind(this),\n blur: this.onBlur.bind(this)\n });\n this.searchObj.appendTo('#' + this.parent.element.id + CLS.SEARCH_ID);\n this.searchEventBind(this.parent.searchSettings.allowSearchOnTyping);\n var search = this.searchObj.element.nextElementSibling;\n EventHandler.add(search, 'mousedown', this.searchChangeHandler.bind(this), this);\n EventHandler.add(this.searchObj.element, 'keyup', this.onKeyUp.bind(this), this);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n breadCrumbBarWidth = breadCrumbBarWidth - (this.searchWrapWidth ? this.searchWrapWidth : searchWrap.offsetWidth);\n if (liElementsWidth > breadCrumbBarWidth) {\n var i = liElements.length;\n while (i--) {\n var diff = breadCrumbBarWidth - liElementsWidths[i];\n if (diff > 40) {\n addressbarUL.insertBefore(liElements[i], addressbarUL.querySelector('li'));\n breadCrumbBarWidth = diff;\n }\n else {\n // eslint-disable-next-line\n var items = [];\n for (var j = 0; j <= i; j++) {\n var liElement = liElements[j];\n items.push({\n text: liElement.innerText,\n utext: liElement.getAttribute('data-utext')\n });\n }\n var subMenuLi = this.parent.createElement('li', { className: 'e-breadcrumb-menu' });\n // eslint-disable-next-line\n var attributes = { className: 'e-breadcrumb-submenu' };\n var subMenuSpan = this.parent.createElement('button', attributes);\n subMenuLi.appendChild(subMenuSpan);\n addressbarUL.insertBefore(subMenuLi, addressbarUL.querySelector('li'));\n this.subMenuObj = new DropDownButton({\n items: items,\n cssClass: 'e-caret-hide e-submenu',\n iconCss: CLS.ICON_BREADCRUMB,\n iconPosition: 'Top',\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.addSubMenuAttributes.bind(this),\n select: this.subMenuSelectOperations.bind(this)\n });\n this.subMenuObj.isStringTemplate = true;\n this.subMenuObj.appendTo(subMenuSpan);\n break;\n }\n }\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.insertBefore(addresBarUL, searchWrap);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onFocus = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.add('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onKeyUp = function () {\n this.parent.notify(events.pathColumn, { args: this.parent });\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onBlur = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.remove('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.subMenuSelectOperations = function (event) {\n // eslint-disable-next-line\n var args = { target: event.element };\n this.addressPathClickHandler(args);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.addSubMenuAttributes = function (args) {\n args.element.setAttribute('data-utext', getValue('utext', args.item));\n var anchor = this.parent.createElement('a', { className: 'e-list-text' });\n args.element.appendChild(anchor);\n };\n BreadCrumbBar.prototype.searchEventBind = function (allow) {\n if (allow) {\n this.searchObj.input = this.searchChangeHandler.bind(this);\n this.searchObj.change = null;\n }\n else {\n this.searchObj.change = this.searchChangeHandler.bind(this);\n this.searchObj.input = null;\n }\n };\n BreadCrumbBar.prototype.searchChangeHandler = function (args) {\n var _this = this;\n if (!isNullOrUndefined(args.value)) {\n this.parent.isFiltered = false;\n if (this.parent.searchSettings.allowSearchOnTyping) {\n window.clearTimeout(this.searchTimer);\n this.searchTimer = window.setTimeout(function () { searchWordHandler(_this.parent, args.value, false); }, 300);\n }\n else {\n searchWordHandler(this.parent, args.value, false);\n }\n }\n };\n BreadCrumbBar.prototype.addressPathClickHandler = function (e) {\n var li = e.target;\n if (li.nodeName === 'LI' || li.nodeName === 'A') {\n var node = li.nodeName === 'LI' ? li.children[0] : li;\n if (!isNullOrUndefined(node)) {\n this.parent.isFiltered = false;\n var currentPath = this.updatePath(node);\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n this.triggerFileOpen(this.parent.itemData[0]);\n read(this.parent, events.pathChanged, currentPath);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n }\n };\n // eslint-disable-next-line\n BreadCrumbBar.prototype.triggerFileOpen = function (data) {\n var eventArgs = { cancel: false, fileDetails: data, module: 'BreadCrumbBar' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onShowInput = function () {\n if (this.parent.isMobile) {\n if (this.parent.element.classList.contains(CLS.FILTER)) {\n removeClass([this.parent.element], CLS.FILTER);\n this.searchWrapWidth = null;\n }\n else {\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n this.searchWrapWidth = searchWrap.offsetWidth;\n addClass([this.parent.element], CLS.FILTER);\n this.searchObj.element.focus();\n }\n }\n };\n BreadCrumbBar.prototype.updatePath = function (list) {\n var li = closest(list, 'li');\n var liElementId = li.getAttribute('data-utext');\n this.addressBarLink = liElementId;\n var link = this.addressBarLink.split('/');\n var ids = this.parent.pathId;\n var names = this.parent.pathNames;\n this.parent.pathId = [];\n this.parent.pathNames = [];\n var newpath = '';\n for (var i = 0, len = link.length - 1; i < len; i++) {\n this.parent.pathId.push(ids[i]);\n this.parent.pathNames.push(names[i]);\n newpath += link[i] + '/';\n }\n this.parent.setProperties({ path: newpath }, true);\n return newpath;\n };\n BreadCrumbBar.prototype.onUpdatePath = function () {\n this.onPathChange();\n this.removeSearchValue();\n };\n BreadCrumbBar.prototype.onCreateEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onRenameEnd = function () {\n this.onPathChange();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDeleteEnd = function () {\n this.onUpdatePath();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.removeSearchValue = function () {\n this.parent.isFiltered = false;\n if (this.searchObj && (this.searchObj.value !== '' || this.searchObj.element.value !== '')) {\n this.searchObj.value = '';\n this.searchObj.element.value = '';\n this.searchObj.dataBind();\n }\n };\n BreadCrumbBar.prototype.onResize = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onPasteEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.addEventListener = function () {\n this.keyboardModule = new KeyboardEvents(this.parent.breadCrumbBarNavigation, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n EventHandler.add(this.parent.breadCrumbBarNavigation, 'click', this.addressPathClickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.pathChanged, this.onUpdatePath, this);\n this.parent.on(events.finalizeEnd, this.onUpdatePath, this);\n this.parent.on(events.refreshEnd, this.onUpdatePath, this);\n this.parent.on(events.openEnd, this.onUpdatePath, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.splitterResize, this.onResize, this);\n this.parent.on(events.pasteEnd, this.onPasteEnd, this);\n this.parent.on(events.resizeEnd, this.onResize, this);\n this.parent.on(events.searchTextChange, this.onSearchTextChange, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.layoutRefresh, this.onResize, this);\n this.parent.on(events.dropPath, this.onPathChange, this);\n };\n BreadCrumbBar.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'enter':\n this.addressPathClickHandler(e);\n break;\n }\n };\n BreadCrumbBar.prototype.removeEventListener = function () {\n this.keyboardModule.destroy();\n this.parent.off(events.pathChanged, this.onUpdatePath);\n this.parent.off(events.finalizeEnd, this.onUpdatePath);\n this.parent.off(events.refreshEnd, this.onUpdatePath);\n this.parent.off(events.openEnd, this.onUpdatePath);\n this.parent.off(events.pasteEnd, this.onPasteEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.splitterResize, this.onResize);\n this.parent.off(events.resizeEnd, this.onResize);\n this.parent.off(events.searchTextChange, this.onSearchTextChange);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.layoutRefresh, this.onResize);\n this.parent.off(events.dropPath, this.onPathChange);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var liEle = args.target.closest('li');\n this.parent.dropPath = this.updatePath((liEle.children[0]));\n this.parent.dropData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n this.triggerFileOpen(this.parent.dropData);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n BreadCrumbBar.prototype.getModuleName = function () {\n return 'breadcrumbbar';\n };\n BreadCrumbBar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n if (!isNullOrUndefined(this.searchObj)) {\n this.searchObj.destroy();\n }\n };\n BreadCrumbBar.prototype.onSearchTextChange = function (args) {\n this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + args.cwd.name;\n };\n return BreadCrumbBar;\n}());\nexport { BreadCrumbBar };\n","import { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, createElement, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, select } from '@syncfusion/ej2-base';\nimport { Download, GetDetails } from './../common/operations';\nimport { createDialog } from './dialog';\nimport { cutFiles, copyFiles, refresh, getPathObject, getLocaleText, updateLayout, getFullPath } from './../common/utility';\nimport { getCssClass, sortbyClickHandler, pasteHandler } from './../common/utility';\nimport { createDeniedDialog, createNewFolder, uploadItem, hasEditAccess, hasDownloadAccess } from './../common/utility';\nimport * as events from './../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * ContextMenu module\n */\nvar ContextMenu = /** @class */ (function () {\n /**\n * Constructor for the ContextMenu module\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @hidden\n */\n function ContextMenu(parent) {\n this.currentItems = [];\n this.currentElement = null;\n this.disabledItems = [];\n this.parent = parent;\n this.render();\n }\n ContextMenu.prototype.render = function () {\n this.keyConfigs = {\n downarrow: 'downarrow',\n uparrow: 'uparrown'\n };\n this.contextMenu = new Menu({\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n target: '#' + this.parent.element.id,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.onBeforeItemRender.bind(this),\n select: this.onSelect.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this),\n cssClass: getCssClass(this.parent, CLS.ROOT_POPUP)\n });\n this.contextMenu.isStringTemplate = true;\n this.contextMenu.appendTo('#' + this.parent.element.id + CLS.CONTEXT_MENU_ID);\n this.addEventListener();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeItemRender = function (args) {\n if (args.item.id === this.getMenuId('largeiconsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'LargeIcons' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_LARGE + ' ' + CLS.MENU_ICON);\n }\n if (args.item.id === this.getMenuId('detailsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'Details' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_GRID + ' ' + CLS.MENU_ICON);\n }\n };\n ContextMenu.prototype.onBeforeClose = function () {\n this.menuTarget = null;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeOpen = function (args) {\n var _this = this;\n this.disabledItems = [];\n var selected = false;\n var uid;\n // eslint-disable-next-line\n var data;\n var treeFolder = false;\n var target = args.event.target;\n this.menuTarget = this.targetNodeElement = target;\n this.currentElement = args.element;\n if (target.classList.contains('e-spinner-pane')) {\n target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(CLS.FULLROW)[0];\n this.menuTarget = this.targetNodeElement = target;\n }\n this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr.e-row') : target;\n var view = this.getTargetView(target);\n this.updateActiveModule();\n /* istanbul ignore next */\n if (target.classList.contains(CLS.TREE_VIEW) || closest(target, 'th') ||\n (closest(target, '#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID)) ||\n (closest(target, '#' + this.parent.element.id + CLS.TOOLBAR_ID))) {\n args.cancel = true;\n // eslint:disable-next-line\n }\n else if (!(this.parent.view === 'LargeIcons') && this.targetElement &&\n this.targetElement.classList.contains('e-emptyrow')) {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else if (closest(target, '.' + CLS.EMPTY)) {\n this.setLayoutItem(target);\n // eslint:disable-next-line\n }\n else if (!target.classList.contains(CLS.MENU_ITEM) &&\n !target.classList.contains(CLS.MENU_ICON) && !target.classList.contains(CLS.SUBMENU_ICON)) {\n /* istanbul ignore next */\n // eslint:disable-next-line\n if (this.parent.view === 'LargeIcons' && !isNOU(closest(target, 'li')) && !closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n var eveArgs = { ctrlKey: true, shiftKey: true };\n if (!closest(target, 'li').classList.contains('e-active')) {\n this.parent.largeiconsviewModule.doSelection(target, eveArgs);\n }\n // eslint-disable-next-line\n data = this.parent.visitedData;\n selected = true;\n }\n else if (!isNOU(closest(target, 'tr.e-row'))) {\n uid = this.targetElement.getAttribute('data-uid');\n // eslint-disable-next-line\n data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;\n if (isNOU(this.targetElement.getAttribute('aria-selected'))) {\n /* istanbul ignore next */\n this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('aria-rowindex'), 10)]);\n }\n selected = true;\n /* istanbul ignore next */\n }\n else if (closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n uid = closest(target, 'li').getAttribute('data-uid');\n treeFolder = true;\n }\n /* istanbul ignore next */\n if (selected) {\n if (getValue('isFile', data) === true) {\n this.setFileItem();\n }\n else {\n this.setFolderItem(false);\n }\n /* istanbul ignore next */\n }\n else if (treeFolder) {\n this.setFolderItem(true);\n if (uid === this.parent.pathId[0]) {\n this.disabledItems.push('Delete', 'Rename', 'Cut', 'Copy');\n }\n /* istanbul ignore next */\n // eslint:disable-next-line\n }\n else if (view === 'TreeView' || view === 'GridView' || view === 'LargeIcon') {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else {\n args.cancel = true;\n }\n }\n var pasteEle = select('#' + this.getMenuId('Paste'), this.contextMenu.element);\n if (!args.cancel && !this.parent.enablePaste &&\n pasteEle && !pasteEle.classList.contains('e-disabled')) {\n this.disabledItems.push('Paste');\n }\n if (args.cancel) {\n this.menuTarget = this.currentElement = null;\n return;\n }\n this.contextMenu.dataBind();\n var isSubMenu = false;\n if (target.classList.contains(CLS.MENU_ITEM) ||\n target.classList.contains(CLS.MENU_ICON) || target.classList.contains(CLS.SUBMENU_ICON)) {\n isSubMenu = true;\n }\n this.menuItemData = isSubMenu ? this.menuItemData : this.getMenuItemData();\n var eventArgs = {\n fileDetails: [this.menuItemData],\n element: args.element,\n target: target,\n items: isSubMenu ? args.items : this.contextMenu.items,\n menuModule: this.contextMenu,\n cancel: false,\n menuType: this.menuType,\n isSubMenu: isSubMenu\n };\n this.currentItems = eventArgs.items;\n this.parent.trigger('menuOpen', eventArgs, function (menuOpenArgs) {\n if (!isSubMenu) {\n _this.contextMenu.dataBind();\n _this.contextMenu.items = menuOpenArgs.items;\n _this.contextMenu.dataBind();\n }\n _this.enableItems(_this.disabledItems, false, true);\n args.cancel = menuOpenArgs.cancel;\n if (menuOpenArgs.cancel) {\n _this.menuTarget = _this.targetNodeElement = _this.currentElement = null;\n }\n });\n };\n ContextMenu.prototype.updateActiveModule = function () {\n this.parent.activeModule = closest(this.menuTarget, '#' + this.parent.element.id + CLS.TREE_ID) ?\n 'navigationpane' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.GRID_ID) ?\n 'detailsview' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.LARGEICON_ID) ?\n 'largeiconsview' : this.parent.activeModule;\n };\n /* istanbul ignore next */\n /**\n *\n * @param {Element} target - specifies the target element.\n * @returns {string} -returns the target view.\n * @hidden\n */\n ContextMenu.prototype.getTargetView = function (target) {\n return target.classList.contains(CLS.TREE_VIEW) ?\n 'TreeView' : target.classList.contains(CLS.GRID_VIEW) ?\n 'GridView' : target.classList.contains(CLS.ICON_VIEW) ?\n 'LargeIcon' : target.classList.contains(CLS.LARGE_ICONS) ?\n 'LargeIcon' : '';\n };\n ContextMenu.prototype.getItemIndex = function (item) {\n var itemId = this.getMenuId(item);\n for (var i = 0; i < this.currentItems.length; i++) {\n if ((this.currentItems[i].id === itemId) || (this.currentItems[i].id === item)) {\n return i;\n }\n }\n return -1;\n };\n ContextMenu.prototype.disableItem = function (items) {\n if (items.length !== 0) {\n this.disabledItems = this.disabledItems.concat(items);\n }\n };\n ContextMenu.prototype.enableItems = function (items, enable, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n if (this.checkValidItem(items[i]) === 1) {\n this.contextMenu.enableItems([this.getMenuId(items[i])], enable, isUniqueId);\n }\n else if (this.checkValidItem(items[i]) === 2) {\n this.contextMenu.enableItems([items[i]], enable, isUniqueId);\n }\n }\n };\n ContextMenu.prototype.setFolderItem = function (isTree) {\n this.menuType = 'folder';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (isTree) {\n this.disabledItems.push('Open');\n }\n else if (this.parent.selectedItems.length !== 1) {\n this.disabledItems.push('Rename', 'Paste');\n }\n };\n ContextMenu.prototype.setFileItem = function () {\n this.menuType = 'file';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.file.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (this.parent.selectedItems.length !== 1) {\n this.disabledItems.push('Rename');\n }\n };\n ContextMenu.prototype.setLayoutItem = function (target) {\n this.menuType = 'layout';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' &&\n (closest(target, '#' + this.parent.element.id + CLS.LARGEICON_ID).getElementsByClassName(CLS.EMPTY).length !== 0))\n || (this.parent.view === 'Details' &&\n (closest(target, '#' + this.parent.element.id + CLS.GRID_ID).getElementsByClassName(CLS.EMPTY).length !== 0)))) {\n this.disabledItems.push('SelectAll');\n }\n if (this.parent.selectedNodes.length === 0) {\n this.disabledItems.push('Paste');\n }\n this.contextMenu.dataBind();\n };\n ContextMenu.prototype.checkValidItem = function (nameEle) {\n if (!isNOU(select('#' + this.getMenuId(nameEle), this.currentElement))) {\n return 1;\n }\n else if (!isNOU(select('#' + nameEle, this.currentElement))) {\n return 2;\n }\n else {\n return -1;\n }\n };\n // eslint-disable-next-line\n ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n // eslint-disable-next-line\n var args = { target: this.menuTarget };\n this.parent.notify(events.menuItemData, args);\n return this.parent.itemData[0];\n }\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onSelect = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var itemText = args.item.id.substr((this.parent.element.id + '_cm_').length);\n // eslint-disable-next-line\n var details;\n if (itemText === 'refresh' || itemText === 'newfolder' || itemText === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n if (this.parent.activeModule === 'navigationpane' && itemText === 'open') {\n details = [this.menuItemData];\n }\n else {\n details = this.parent.itemData;\n }\n }\n var eventArgs = {\n cancel: false,\n element: args.element,\n fileDetails: details,\n item: args.item\n };\n this.parent.trigger('menuClick', eventArgs, function (menuClickArgs) {\n var sItems;\n if (!menuClickArgs.cancel) {\n // eslint:disable-next-line\n switch (itemText) {\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'paste':\n if (_this.menuType === 'folder') {\n if ((_this.parent.activeModule === 'largeiconsview') || (_this.parent.activeModule === 'detailsview')) {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\n }\n else {\n _this.parent.folderPath = '';\n }\n }\n else {\n _this.parent.folderPath = '';\n }\n pasteHandler(_this.parent);\n break;\n case 'delete':\n for (var j = 0; j < details.length; j++) {\n if (!hasEditAccess(details[j])) {\n createDeniedDialog(_this.parent, details[j], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n /* istanbul ignore next */\n case 'download':\n for (var i = 0; i < details.length; i++) {\n if (!hasDownloadAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionDownload);\n return;\n }\n }\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.notify(events.downloadInit, {});\n }\n else if (_this.parent.selectedItems.length > 0) {\n Download(_this.parent, _this.parent.path, _this.parent.selectedItems);\n }\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'selectall':\n /* istanbul ignore next */\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'open':\n if (_this.parent.visitedItem) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n else if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n /* istanbul ignore next */\n case 'name':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'size':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'date':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'ascending':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'descending':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n case 'none':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'largeiconsview':\n updateLayout(_this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'detailsview':\n updateLayout(_this.parent, 'Details');\n break;\n }\n }\n });\n };\n ContextMenu.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.contextMenu.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n break;\n }\n }\n };\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.keyboardModule = new KeyboardEvents(this.contextMenu.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n ContextMenu.prototype.removeEventListener = function () {\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.keyboardModule.destroy();\n };\n ContextMenu.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n e.preventDefault();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n ContextMenu.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.contextMenu.destroy();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.getItemData = function (data) {\n var items = [];\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getMenuId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n switch (data[i]) {\n case '|':\n item = { separator: true };\n break;\n case 'Open':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_OPEN };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_UPLOAD };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_CUT };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_COPY };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_PASTE };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DELETE };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_RENAME };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_NEWFOLDER };\n break;\n case 'Details':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DETAILS };\n break;\n case 'SortBy':\n item = {\n id: itemId, text: itemText, iconCss: CLS.ICON_SHORTBY,\n items: [\n {\n id: this.getMenuId('Name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : null\n },\n { separator: true },\n {\n id: this.getMenuId('Ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('Descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('None'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n /* istanbul ignore next */\n case 'View':\n item = {\n id: itemId, text: itemText, iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n items: [\n {\n id: this.getMenuId('largeiconsview'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? null : CLS.TB_OPTION_TICK\n },\n {\n id: this.getMenuId('detailsview'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_REFRESH };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_SELECTALL };\n break;\n /* istanbul ignore next */\n case 'Download':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DOWNLOAD };\n break;\n /* istanbul ignore next */\n default:\n item = { id: itemId, text: itemText };\n break;\n }\n items.push(item);\n }\n return items;\n };\n ContextMenu.prototype.getMenuId = function (id) {\n return this.parent.element.id + '_cm_' + id.toLowerCase();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","/**\n * Specifies the default locale of FileManager component\n */\n// eslint-disable-next-line\nexport var defaultLocale = {\n 'NewFolder': 'New folder',\n 'Upload': 'Upload',\n 'Delete': 'Delete',\n 'Rename': 'Rename',\n 'Download': 'Download',\n 'Cut': 'Cut',\n 'Copy': 'Copy',\n 'Paste': 'Paste',\n 'SortBy': 'Sort by',\n 'Refresh': 'Refresh',\n 'Item-Selection': 'item selected',\n 'Items-Selection': 'items selected',\n 'View': 'View',\n 'Details': 'Details',\n 'SelectAll': 'Select all',\n 'Open': 'Open',\n 'Tooltip-NewFolder': 'New folder',\n 'Tooltip-Upload': 'Upload',\n 'Tooltip-Delete': 'Delete',\n 'Tooltip-Rename': 'Rename',\n 'Tooltip-Download': 'Download',\n 'Tooltip-Cut': 'Cut',\n 'Tooltip-Copy': 'Copy',\n 'Tooltip-Paste': 'Paste',\n 'Tooltip-SortBy': 'Sort by',\n 'Tooltip-Refresh': 'Refresh',\n 'Tooltip-Selection': 'Clear selection',\n 'Tooltip-View': 'View',\n 'Tooltip-Details': 'Details',\n 'Tooltip-SelectAll': 'Select all',\n 'Name': 'Name',\n 'Size': 'Size',\n 'DateModified': 'Modified',\n 'DateCreated': 'Date created',\n 'Path': 'Path',\n 'Modified': 'Modified',\n 'Created': 'Created',\n 'Location': 'Location',\n 'Type': 'Type',\n 'Permission': 'Permission',\n 'Ascending': 'Ascending',\n 'Descending': 'Descending',\n 'None': 'None',\n 'View-LargeIcons': 'Large icons',\n 'View-Details': 'Details',\n 'Search': 'Search',\n 'Button-Ok': 'OK',\n 'Button-Cancel': 'Cancel',\n 'Button-Yes': 'Yes',\n 'Button-No': 'No',\n 'Button-Create': 'Create',\n 'Button-Save': 'Save',\n 'Header-NewFolder': 'Folder',\n 'Content-NewFolder': 'Enter your folder name',\n 'Header-Rename': 'Rename',\n 'Content-Rename': 'Enter your new name',\n 'Header-Rename-Confirmation': 'Rename Confirmation',\n 'Content-Rename-Confirmation': 'If you change a file name extension, the file might become unstable. ' +\n 'Are you sure you want to change it?',\n 'Header-Delete': 'Delete File',\n 'Content-Delete': 'Are you sure you want to delete this file?',\n 'Header-Folder-Delete': 'Delete Folder',\n 'Content-Folder-Delete': 'Are you sure you want to delete this folder?',\n 'Header-Multiple-Delete': 'Delete Multiple Items',\n 'Content-Multiple-Delete': 'Are you sure you want to delete these {0} items?',\n 'Header-Duplicate': 'File/Folder exists',\n 'Content-Duplicate': '{0} already exists. Do you want to rename and paste?',\n 'Header-Upload': 'Upload Files',\n 'Error': 'Error',\n 'Validation-Empty': 'The file or folder name cannot be empty.',\n 'Validation-Invalid': 'The file or folder name {0} contains invalid characters. Please use a different name. ' +\n // eslint-disable-next-line no-useless-escape\n 'Valid file or folder names cannot end with a dot or space, and cannot contain any of the following characters: \\\\/:*?\\\"<>|',\n 'Validation-NewFolder-Exists': 'A file or folder with the name {0} already exists.',\n 'Validation-Rename-Exists': 'Cannot rename {0} to {1}: destination already exists.',\n 'Folder-Empty': 'This folder is empty',\n 'File-Upload': 'Drag files here to upload',\n 'Search-Empty': 'No results found',\n 'Search-Key': 'Try with different keywords',\n 'Filter-Empty': 'No results found',\n 'Filter-Key': 'Try with different filter',\n 'Sub-Folder-Error': 'The destination folder is the subfolder of the source folder.',\n 'Same-Folder-Error': 'The destination folder is the same as the source folder.',\n 'Access-Denied': 'Access Denied',\n 'Access-Details': 'You don\"t have permission to access this folder.',\n 'Header-Retry': 'File Already Exists',\n 'Content-Retry': 'A file with this name already exists in this folder. What would you like to do?',\n 'Button-Keep-Both': 'Keep both',\n 'Button-Replace': 'Replace',\n 'Button-Skip': 'Skip',\n 'ApplyAll-Label': 'Do this for all current items',\n 'KB': 'KB',\n 'Access-Message': '{0} is not accessible. You need permission to perform the {1} action.',\n 'Network-Error': 'NetworkError: Failed to send on XMLHTTPRequest: Failed to load',\n 'Server-Error': 'ServerError: Invalid response from'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isNullOrUndefined, L10n, closest } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Complex, select } from '@syncfusion/ej2-base';\nimport { createElement, addClass, removeClass, setStyleAttribute as setAttr, getUniqueID } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Splitter } from '@syncfusion/ej2-layouts';\nimport { Dialog, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { ToolbarSettings, AjaxSettings, NavigationPaneSettings, DetailsViewSettings } from '../models/index';\nimport { SearchSettings } from '../models/index';\nimport { LargeIconsView } from '../layout/large-icons-view';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { UploadSettings } from '../models/upload-settings';\nimport * as events from './constant';\nimport * as CLS from './classes';\nimport { read, filter, createFolder } from '../common/operations';\nimport { refresh, getPathObject, getLocaleText, setNextPath, createDeniedDialog, getCssClass } from '../common/utility';\nimport { hasContentAccess, hasUploadAccess, updateLayout, createNewFolder, uploadItem } from '../common/utility';\nimport { ContextMenuSettings } from '../models/contextMenu-settings';\nimport { BreadCrumbBar } from '../actions/breadcrumb-bar';\nimport { ContextMenu } from '../pop-up/context-menu';\nimport { defaultLocale } from '../models/default-locale';\n/**\n * The FileManager component allows users to access and manage the file system through the web browser. It can performs the\n * functionalities like add, rename, search, sort, upload and delete files or folders. And also it\n * provides an easy way of dynamic injectable modules like toolbar, navigationpane, detailsview, largeiconsview.\n * ```html\n * <div id=\"file\"></div>\n * ```\n * ```typescript,\n * let feObj: FileManager = new FileManager();\n * feObj.appendTo('#file');\n * ```\n */\nvar FileManager = /** @class */ (function (_super) {\n __extends(FileManager, _super);\n function FileManager(options, element) {\n var _this = _super.call(this, options, element) || this;\n // eslint-disable-next-line\n _this.filterData = null;\n _this.selectedNodes = [];\n _this.duplicateItems = [];\n // eslint-disable-next-line\n _this.duplicateRecords = [];\n _this.previousPath = [];\n _this.nextPath = [];\n _this.isLayoutChange = false;\n _this.layoutSelectedItems = [];\n _this.renamedId = null;\n _this.uploadItem = [];\n _this.deleteRecords = [];\n _this.isFile = false;\n _this.isCut = false;\n _this.isSearchCut = false;\n _this.isSearchDrag = false;\n _this.isPasteError = false;\n _this.folderPath = '';\n _this.isSameAction = false;\n _this.isFiltered = false;\n // Specifies whether the sort by option is clicked or not.\n _this.isSortByClicked = false;\n _this.enablePaste = false;\n _this.persistData = false;\n _this.retryArgs = [];\n _this.isOpened = false;\n _this.isRetryOpened = false;\n _this.isPathDrag = false;\n // eslint-disable-next-line\n _this.searchedItems = [];\n _this.retryFiles = [];\n _this.isApplySame = false;\n // eslint-disable-next-line\n _this.dragData = [];\n _this.dragNodes = [];\n _this.dragPath = '';\n _this.dropPath = '';\n _this.isDragDrop = false;\n _this.treeExpandTimer = null;\n _this.dragCursorPosition = { left: 44, top: 18 };\n _this.isDropEnd = false;\n _this.dragCount = 0;\n // eslint-disable-next-line\n _this.droppedObjects = [];\n _this.uploadingCount = 0;\n _this.uploadedCount = 0;\n //Specifies whether the operating system is MAC or not\n _this.isMac = false;\n FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu);\n return _this;\n }\n FileManager_1 = FileManager;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n FileManager.prototype.getModuleName = function () {\n return 'filemanager';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n FileManager.prototype.preRender = function () {\n if (isNOU(this.element.id) || this.element.id === '') {\n this.element.setAttribute('id', getUniqueID('filemanager'));\n }\n this.ensurePath();\n this.feParent = [];\n this.feFiles = [];\n setAttr(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.isDevice = Browser.isDevice;\n this.isMobile = this.checkMobile();\n if (this.isMobile) {\n this.setProperties({ navigationPaneSettings: { visible: false } }, true);\n }\n var ele = closest(this.element, '.e-bigger');\n this.isBigger = ele ? true : false;\n this.activeModule = (this.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n createSpinner({ target: this.element }, createElement);\n this.addWrapper();\n this.keyConfigs = {\n altN: 'alt+n',\n f5: 'f5',\n ctrlShift1: 'ctrl+shift+1',\n ctrlShift2: 'ctrl+shift+2',\n ctrlU: 'ctrl+u'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string} - returns the persisted data.\n * @hidden\n */\n FileManager.prototype.getPersistData = function () {\n var keyEntity = ['view', 'path', 'selectedItems'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n FileManager.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'breadcrumbbar',\n args: [this]\n });\n modules.push({\n member: 'largeiconsview',\n args: [this]\n });\n if (this.toolbarSettings.visible) {\n modules.push({\n member: 'toolbar',\n args: [this]\n });\n }\n if (this.navigationPaneSettings.visible) {\n modules.push({\n member: 'navigationpane',\n args: [this]\n });\n }\n if (this.view) {\n modules.push({\n member: 'detailsview',\n args: [this]\n });\n }\n if (this.contextMenuSettings.visible && !this.isDevice) {\n modules.push({\n member: 'contextmenu',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n FileManager.prototype.render = function () {\n this.initialize();\n var slItems = isNOU(this.selectedItems) ? [] :\n this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);\n this.setProperties({ selectedItems: slItems }, true);\n this.fileView = this.view;\n this.isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n this.setRtl(this.enableRtl);\n this.addEventListeners();\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n this.adjustHeight();\n if (isNOU(this.navigationpaneModule)) {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n this.wireEvents();\n this.renderComplete();\n };\n FileManager.prototype.ensurePath = function () {\n var currentPath = this.path;\n if (isNOU(currentPath)) {\n currentPath = '/';\n }\n if (currentPath.lastIndexOf('/') !== (currentPath.length - 1)) {\n currentPath = currentPath + '/';\n }\n this.originalPath = currentPath;\n var paths = currentPath.split('/');\n this.setProperties({ path: paths[0] + '/' }, true);\n this.pathNames = [];\n this.pathId = ['fe_tree'];\n this.itemData = [];\n };\n FileManager.prototype.initialize = function () {\n if (this.isMobile) {\n addClass([this.element], CLS.MOBILE);\n }\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n this.addCssClass(null, this.cssClass);\n this.renderFileUpload();\n };\n FileManager.prototype.addWrapper = function () {\n var headerWrap = this.createElement('div', { id: this.element.id + CLS.TOOLBAR_ID });\n this.element.appendChild(headerWrap);\n var layoutWrap = this.createElement('div', {\n id: this.element.id + CLS.LAYOUT_ID, className: CLS.LAYOUT\n });\n this.element.appendChild(layoutWrap);\n var navigationWrap = this.createElement('div', {\n id: this.element.id + CLS.NAVIGATION_ID, className: CLS.NAVIGATION\n });\n var treeWrap = this.createElement('div', {\n id: this.element.id + CLS.TREE_ID\n });\n navigationWrap.appendChild(treeWrap);\n var contentWrap = this.createElement('div', {\n id: this.element.id + CLS.CONTENT_ID, className: CLS.LAYOUT_CONTENT\n });\n this.breadCrumbBarNavigation = this.createElement('div', {\n id: this.element.id + CLS.BREADCRUMBBAR_ID,\n className: CLS.BREADCRUMBS\n });\n contentWrap.appendChild(this.breadCrumbBarNavigation);\n var gridWrap = this.createElement('div', {\n id: this.element.id + CLS.GRID_ID\n });\n contentWrap.appendChild(gridWrap);\n var largeiconWrap = this.createElement('div', {\n id: this.element.id + CLS.LARGEICON_ID,\n className: CLS.LARGE_ICONS, attrs: { 'role': 'group' }\n });\n contentWrap.appendChild(largeiconWrap);\n var overlay = this.createElement('span', { className: CLS.OVERLAY });\n contentWrap.appendChild(overlay);\n var paneSettings;\n if (!this.enableRtl) {\n layoutWrap.appendChild(navigationWrap);\n layoutWrap.appendChild(contentWrap);\n paneSettings = [\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n },\n { size: '75%', min: '270px' }\n ];\n }\n else {\n layoutWrap.appendChild(contentWrap);\n layoutWrap.appendChild(navigationWrap);\n paneSettings = [\n { size: '75%', min: '270px' },\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n }\n ];\n }\n this.splitterObj = new Splitter({\n paneSettings: paneSettings,\n width: '100%',\n enableRtl: false,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n resizing: this.splitterResize.bind(this)\n });\n this.splitterObj.isStringTemplate = true;\n this.splitterObj.appendTo(layoutWrap);\n var dialogWrap = this.createElement('div', { id: this.element.id + CLS.DIALOG_ID });\n this.element.appendChild(dialogWrap);\n var menuWrap = this.createElement('ul', { id: this.element.id + CLS.CONTEXT_MENU_ID });\n this.element.appendChild(menuWrap);\n var dialogImgWrap = this.createElement('div', { id: this.element.id + CLS.IMG_DIALOG_ID });\n this.element.appendChild(dialogImgWrap);\n var extnDialogWrap = this.createElement('div', { id: this.element.id + CLS.EXTN_DIALOG_ID });\n this.element.appendChild(extnDialogWrap);\n var uploadDialogWrap = this.createElement('div', { id: this.element.id + CLS.UPLOAD_DIALOG_ID });\n this.element.appendChild(uploadDialogWrap);\n };\n FileManager.prototype.adjustHeight = function () {\n var toolbar = select('#' + this.element.id + CLS.TOOLBAR_ID, this.element);\n var toolBarHeight = toolbar ? toolbar.offsetHeight : 0;\n if (this.splitterObj) {\n this.splitterObj.height = (this.element.clientHeight - toolBarHeight).toString();\n this.splitterObj.dataBind();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.splitterResize = function () {\n this.notify(events.splitterResize, {});\n };\n FileManager.prototype.splitterAdjust = function () {\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n if (this.navigationPaneSettings.visible) {\n this.splitterObj.expand(this.enableRtl ? 1 : 0);\n bar.classList.remove(CLS.DISPLAY_NONE);\n }\n else {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n };\n FileManager.prototype.addCssClass = function (oldOne, newOne) {\n if (!isNOU(oldOne) && oldOne !== '') {\n removeClass([this.element], oldOne.split(' '));\n }\n if (!isNOU(newOne) && newOne !== '') {\n addClass([this.element], newOne.split(' '));\n }\n };\n FileManager.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n FileManager.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n FileManager.prototype.onContextMenu = function (e) {\n e.preventDefault();\n };\n FileManager.prototype.checkMobile = function () {\n return (/iphone|ipod|android|blackberry|opera|mini|windows\\sce|palm|smartphone|iemobile/i.test(Browser.userAgent.toLowerCase())\n && /mobile/i.test(Browser.userAgent.toLowerCase()));\n };\n FileManager.prototype.renderFileUpload = function () {\n var id = this.element.id + CLS.UPLOAD_ID;\n var uploadEle = this.createElement('input', { id: id, attrs: { name: 'uploadFiles', type: 'file' } });\n this.element.appendChild(uploadEle);\n this.uploadDialogObj = new Dialog({\n header: getLocaleText(this, 'Header-Upload'),\n content: uploadEle,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: false,\n isModal: true,\n width: '350px',\n target: this.popupTarget ? this.popupTarget : '#' + this.element.id,\n cssClass: getCssClass(this, this.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: this.locale,\n allowDragging: true,\n position: { X: 'center', Y: 'center' },\n enableRtl: this.enableRtl,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n open: this.onOpen.bind(this),\n close: this.onClose.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n });\n this.uploadDialogObj.appendTo('#' + this.element.id + CLS.UPLOAD_DIALOG_ID);\n this.renderUploadBox();\n };\n FileManager.prototype.renderUploadBox = function () {\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n this.uploadObj = new Uploader({\n dropArea: select('#' + this.element.id + CLS.CONTENT_ID, this.element),\n asyncSettings: {\n saveUrl: uploadUrl,\n removeUrl: uploadUrl\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n removing: this.onRemoving.bind(this),\n canceling: this.onCancel.bind(this),\n clearing: this.onClearing.bind(this),\n selected: this.onSelected.bind(this),\n success: this.onUploadSuccess.bind(this),\n failure: this.onUploadFailure.bind(this),\n autoUpload: this.uploadSettings.autoUpload,\n minFileSize: this.uploadSettings.minFileSize,\n maxFileSize: this.uploadSettings.maxFileSize,\n allowedExtensions: this.uploadSettings.allowedExtensions,\n fileListRendering: this.onFileListRender.bind(this)\n });\n this.uploadObj.appendTo('#' + this.element.id + CLS.UPLOAD_ID);\n };\n FileManager.prototype.onFileListRender = function (args) {\n this.trigger('uploadListCreate', args);\n };\n FileManager.prototype.updateUploader = function () {\n this.uploadObj.autoUpload = this.uploadSettings.autoUpload;\n this.uploadObj.minFileSize = this.uploadSettings.minFileSize;\n this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;\n this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;\n this.uploadObj.dataBind();\n };\n FileManager.prototype.onBeforeOpen = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onOpen = function () {\n this.isOpened = true;\n this.uploadDialogObj.element.focus();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupOpen', args);\n };\n FileManager.prototype.onClose = function () {\n this.isOpened = false;\n this.uploadObj.clearAll();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupClose', args);\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploading = function (args) {\n var action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n if (args.fileData.name === this.retryArgs[i].file.name) {\n action = this.retryArgs[i].action;\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }];\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n // eslint-disable-next-line\n var ajaxSettings = {\n url: uploadUrl,\n type: 'POST',\n mode: true,\n dataType: null,\n contentType: null,\n data: JSON.stringify(args.customFormData),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n this.uploadEventArgs = { action: 'Upload', ajaxSettings: ajaxSettings, cancel: false };\n this.trigger('beforeSend', this.uploadEventArgs, function (uploadEventArgs) {\n args.customFormData = JSON.parse(getValue('data', uploadEventArgs.ajaxSettings));\n args.cancel = uploadEventArgs.cancel;\n // eslint-disable-next-line\n var eventArgs = {\n cancel: false,\n httpRequest: args.currentRequest\n };\n if (typeof getValue('beforeSend', uploadEventArgs.ajaxSettings) === 'function') {\n getValue('beforeSend', uploadEventArgs.ajaxSettings)(eventArgs);\n if (getValue('cancel', eventArgs)) {\n args.cancel = getValue('cancel', eventArgs);\n }\n }\n });\n };\n FileManager.prototype.onRemoving = function () {\n this.onFileUploadSuccess({ count: 1 });\n if (this.uploadObj.getFilesData().length === 1) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onCancel = function (args) {\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': 'remove' }, { 'data': data }];\n };\n /* istanbul ignore next */\n FileManager.prototype.onClearing = function () {\n if (this.isOpened) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onSelected = function (args) {\n if (args.filesData.length === 0) {\n return;\n }\n this.uploadingCount = args.filesData.length;\n this.uploadedCount = 0;\n // eslint-disable-next-line\n var details = getPathObject(this);\n if (!hasUploadAccess(details)) {\n args.cancel = true;\n createDeniedDialog(this, details, events.permissionUpload);\n return;\n }\n this.uploadDialogObj.show();\n };\n // eslint-disable-next-line\n FileManager.prototype.onFileUploadSuccess = function (args) {\n this.uploadedCount = this.uploadedCount + args.count;\n if (this.uploadSettings.autoClose && (this.uploadingCount === this.uploadedCount)) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadSuccess = function (files) {\n var args = { action: 'Upload', result: files };\n this.trigger('success', args);\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n read(this, events.pathChanged, this.path);\n this.onFileUploadSuccess({ count: 1 });\n if (typeof getValue('onSuccess', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', this.uploadEventArgs.ajaxSettings)();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadFailure = function (files) {\n // eslint-disable-next-line\n var response = getValue('response', files);\n var statusText = getValue('statusText', response);\n if (statusText !== '') {\n setValue('statusText', statusText, files);\n }\n var args = { action: 'Upload', error: files };\n this.trigger('failure', args);\n if (getValue('statusCode', response) === 400) {\n this.retryFiles.push(getValue('file', files));\n if (!this.isRetryOpened) {\n createExtDialog(this, 'UploadRetry');\n }\n }\n if (typeof getValue('onFailure', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onFailure', this.uploadEventArgs.ajaxSettings)();\n }\n };\n FileManager.prototype.onInitialEnd = function () {\n setNextPath(this, this.path);\n };\n FileManager.prototype.addEventListeners = function () {\n this.on(events.beforeRequest, this.showSpinner, this);\n this.on(events.afterRequest, this.hideSpinner, this);\n this.on(events.initialEnd, this.onInitialEnd, this);\n this.on(events.detailsInit, this.onDetailsInit, this);\n this.on(events.skipUpload, this.onFileUploadSuccess, this);\n EventHandler.add(this.element, 'contextmenu', this.onContextMenu, this);\n };\n FileManager.prototype.removeEventListeners = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.beforeRequest, this.showSpinner);\n this.off(events.afterRequest, this.hideSpinner);\n this.off(events.initialEnd, this.onInitialEnd);\n this.off(events.detailsInit, this.onDetailsInit);\n this.off(events.skipUpload, this.onFileUploadSuccess);\n EventHandler.remove(this.element, 'contextmenu', this.onContextMenu);\n };\n FileManager.prototype.onDetailsInit = function () {\n if (isNOU(this.activeModule)) {\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n }\n };\n FileManager.prototype.resizeHandler = function () {\n this.adjustHeight();\n this.notify(events.resizeEnd, {});\n };\n FileManager.prototype.keyActionHandler = function (e) {\n var uploadEle;\n switch (e.action) {\n case 'altN':\n e.preventDefault();\n this.itemData = [getPathObject(this)];\n if (!hasContentAccess(this.itemData[0])) {\n createDeniedDialog(this, this.itemData[0], events.permissionEditContents);\n }\n else {\n createDialog(this, 'NewFolder');\n }\n break;\n case 'f5':\n e.preventDefault();\n refresh(this);\n break;\n /* istanbul ignore next */\n case 'ctrlShift1':\n e.preventDefault();\n this.fileView = 'Details';\n this.setProperties({ view: 'Details' }, true);\n showSpinner(this.element);\n updateLayout(this, 'Details');\n break;\n /* istanbul ignore next */\n case 'ctrlShift2':\n e.preventDefault();\n this.fileView = 'LargeIcons';\n this.setProperties({ view: 'LargeIcons' }, true);\n showSpinner(this.element);\n updateLayout(this, 'LargeIcons');\n break;\n case 'ctrlU':\n e.preventDefault();\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n break;\n }\n };\n FileManager.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n FileManager.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\n };\n FileManager.prototype.setPath = function () {\n this.setProperties({ selectedItems: [] }, true);\n this.ensurePath();\n this.notify(events.clearPathInit, { selectedNode: this.pathId[0] });\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FileManager} newProp\n * @param {FileManager} oldProp\n * @returns void\n * @private\n */\n /* istanbul ignore next */\n // eslint:disable-next-line\n FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var height;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'ajaxSettings':\n this.ajaxSettingSetModel(newProp);\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'allowMultiSelection':\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n else {\n if (this.selectedItems.length > 1) {\n this.setProperties({ selectedItems: this.selectedItems.slice(this.selectedItems.length - 1) }, true);\n }\n removeClass([this.element], CLS.CHECK_SELECT);\n }\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'cssClass':\n this.addCssClass(oldProp.cssClass, newProp.cssClass);\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'detailsViewSettings':\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n this.refresh();\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n this.refresh();\n break;\n case 'height':\n height = !isNOU(newProp.height) ? formatUnit(newProp.height) : newProp.height;\n setAttr(this.element, { 'height': height });\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'locale':\n if (!isNOU(newProp.enableRtl)) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n }\n this.localeSetModelOption(newProp);\n break;\n case 'navigationPaneSettings':\n this.splitterAdjust();\n this.notify(events.modelChanged, { module: 'navigationpane', newProp: newProp, oldProp: oldProp });\n break;\n case 'path':\n this.setPath();\n break;\n case 'searchSettings':\n if (!isNullOrUndefined(newProp.searchSettings.allowSearchOnTyping)) {\n this.setProperties({ searchSettings: { allowSearchOnTyping: newProp.searchSettings.allowSearchOnTyping } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.ignoreCase)) {\n this.setProperties({ searchSettings: { ignoreCase: newProp.searchSettings.ignoreCase } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.filterType)) {\n this.setProperties({ searchSettings: { filterType: newProp.searchSettings.filterType } }, true);\n }\n this.notify(events.modelChanged, { module: 'breadcrumbbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'selectedItems':\n if (this.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (this.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'showFileExtension':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showHiddenItems':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showThumbnail':\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'toolbarSettings':\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'uploadSettings':\n this.updateUploader();\n break;\n case 'view':\n if (newProp.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (newProp.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'width':\n setAttr(this.element, { 'width': !isNOU(newProp.width) ? formatUnit(newProp.width) : newProp.width });\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'sortOrder':\n refresh(this);\n this.notify(events.sortByChange, {});\n break;\n case 'sortBy':\n refresh(this);\n this.notify(events.sortByChange, {});\n if (this.view === 'Details') {\n this.notify(events.sortColumn, {});\n }\n break;\n case 'popupTarget':\n if (this.uploadDialogObj) {\n this.uploadDialogObj.target = newProp.popupTarget;\n }\n if (this.dialogObj) {\n this.dialogObj.target = newProp.popupTarget;\n }\n if (this.extDialogObj) {\n this.extDialogObj.target = newProp.popupTarget;\n }\n if (this.viewerObj) {\n this.viewerObj.target = newProp.popupTarget;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.ajaxSettingSetModel = function (newProp) {\n if (!isNullOrUndefined(newProp.ajaxSettings.url)) {\n this.setProperties({ ajaxSettings: { url: newProp.ajaxSettings.url } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.uploadUrl)) {\n this.setProperties({ ajaxSettings: { uploadUrl: newProp.ajaxSettings.uploadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.downloadUrl)) {\n this.setProperties({ ajaxSettings: { downloadUrl: newProp.ajaxSettings.downloadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.getImageUrl)) {\n this.setProperties({ ajaxSettings: { getImageUrl: newProp.ajaxSettings.getImageUrl } }, true);\n }\n this.setProperties({ path: '/' }, true);\n this.setProperties({ selectedItems: [] }, true);\n _super.prototype.refresh.call(this);\n };\n /* istanbul ignore next */\n FileManager.prototype.localeSetModelOption = function (newProp) {\n this.uploadObj.locale = newProp.locale;\n _super.prototype.refresh.call(this);\n };\n /**\n * Triggers when the component is destroyed.\n *\n * @returns {void}\n */\n FileManager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.refreshing) {\n this.notify(events.destroy, {});\n }\n this.uploadObj.destroy();\n this.uploadObj = null;\n this.uploadDialogObj.destroy();\n this.uploadDialogObj = null;\n this.splitterObj.destroy();\n this.splitterObj = null;\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.dialogObj = null;\n }\n if (this.viewerObj) {\n this.viewerObj.destroy();\n this.viewerObj = null;\n }\n if (this.extDialogObj) {\n this.extDialogObj.destroy();\n this.extDialogObj = null;\n }\n this.element.removeAttribute('style');\n this.element.removeAttribute('tabindex');\n this.removeEventListeners();\n this.unWireEvents();\n this.addCssClass(this.cssClass, null);\n removeClass([this.element], [CLS.RTL, CLS.MOBILE, CLS.CHECK_SELECT]);\n this.element.innerHTML = '';\n _super.prototype.destroy.call(this);\n };\n /**\n * Creates a new folder in file manager.\n *\n * @param {string} name – Specifies the name of new folder in current path.\n * If it is not specified, then the default new folder dialog will be opened.\n * @returns {void}\n */\n FileManager.prototype.createFolder = function (name) {\n this.notify(events.methodCall, { action: 'createFolder' });\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n if (name) {\n if (/[/\\\\|*?\"<>:]/.test(name)) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(this, 'Validation-Invalid').replace('{0}', '\"' + name + '\"'),\n fileExists: null\n }\n };\n createDialog(this, 'Error', result);\n }\n else {\n if (!hasContentAccess(details[0])) {\n createDeniedDialog(this, details[0], events.permissionEditContents);\n }\n else {\n createFolder(this, name);\n }\n }\n }\n else {\n createNewFolder(this);\n }\n };\n /**\n * Deletes the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to delete the nested level folders or\n * files, then specify the filter path along with name of the folders or files when performing the search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then delete confirmation dialog will be opened for selected item.\n *\n * @returns {void}\n */\n FileManager.prototype.deleteFiles = function (ids) {\n this.notify(events.methodCall, { action: 'deleteFiles', ids: ids });\n };\n /**\n * Disables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableToolbarItems = function (items) {\n if (!isNOU(items)) {\n this.toolbarModule.enableItems(items, false);\n }\n };\n /**\n * Downloads the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to download the nested level folders\n * or files, then specify the filter path along with name of the folders or files when performing search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then the selected items will be downloaded.\n *\n * @returns {void}\n */\n FileManager.prototype.downloadFiles = function (ids) {\n this.notify(events.methodCall, { action: 'downloadFiles', ids: ids });\n };\n /**\n * Enables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be enabled.\n * @returns {void}\n */\n FileManager.prototype.enableToolbarItems = function (items) {\n if (!isNOU(items)) {\n this.toolbarModule.enableItems(items, true);\n }\n };\n /**\n * Disables the specified context menu items in file manager. This method is used only in the menuOpen event.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.disableItem(items);\n }\n };\n /**\n * Returns the index position of given current context menu item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns menu item index.\n */\n FileManager.prototype.getMenuItemIndex = function (item) {\n if (this.contextmenuModule) {\n return this.contextmenuModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Returns the index position of given toolbar item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns toolbar item index.\n */\n FileManager.prototype.getToolbarItemIndex = function (item) {\n if (this.toolbarModule) {\n return this.toolbarModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Display the custom filtering files in file manager.\n *\n * @param {Object} filterData - Specifies the custom filter details along with custom file action name,\n * which needs to be sent to the server side. If you do not specify the details, then default action name will be `filter`.\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n FileManager.prototype.filterFiles = function (filterData) {\n this.filterData = filterData ? filterData : null;\n this.setProperties({ selectedItems: [] }, true);\n this.notify(events.selectionChanged, {});\n this.isFiltered = true;\n if (this.breadcrumbbarModule.searchObj.element.value !== '') {\n this.breadcrumbbarModule.searchObj.element.value = '';\n }\n filter(this, events.filterEnd);\n };\n /**\n * Gets the details of the selected files in the file manager.\n *\n * @returns {Object[]} - returns selected files.\n */\n // eslint-disable-next-line\n FileManager.prototype.getSelectedFiles = function () {\n this.notify(events.updateSelectionData, {});\n return this.itemData;\n };\n /**\n * Opens the corresponding file or folder from the given unique identifier.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to open the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n *\n * @returns {void}\n */\n FileManager.prototype.openFile = function (id) {\n this.notify(events.methodCall, { action: 'openFile', id: id });\n };\n /**\n * Refreshes the folder files of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshFiles = function () {\n refresh(this);\n };\n /**\n * Refreshes the layout of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshLayout = function () {\n this.adjustHeight();\n this.notify(events.layoutRefresh, {});\n };\n /**\n * Selects the entire folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.selectAll = function () {\n this.notify(events.methodCall, { action: 'selectAll' });\n };\n /**\n * Deselects the currently selected folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.clearSelection = function () {\n this.notify(events.methodCall, { action: 'clearSelection' });\n };\n /**\n * Renames the file or folder with given new name in file manager.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to rename the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n * If it is not specified, then rename dialog will be opened for selected item.\n *\n * @param {string} name – Specifies the new name of the file or folder in current path. If it is not specified, then rename dialog\n * will be opened for given identifier.\n *\n * @returns {void}\n */\n FileManager.prototype.renameFile = function (id, name) {\n this.notify(events.methodCall, { action: 'renameFile', id: id, newName: name });\n };\n /**\n * Opens the upload dialog in file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.uploadFiles = function () {\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(this);\n };\n /**\n * Specifies the direction of FileManager\n *\n * @param {boolean} rtl - specifies rtl parameter.\n * @returns {void}\n */\n FileManager.prototype.setRtl = function (rtl) {\n if (rtl) {\n this.addCssClass(null, CLS.RTL);\n }\n else {\n this.addCssClass(CLS.RTL, null);\n }\n if (this.uploadObj) {\n this.uploadDialogObj.enableRtl = rtl;\n this.uploadObj.enableRtl = rtl;\n }\n };\n var FileManager_1;\n __decorate([\n Complex({}, AjaxSettings)\n ], FileManager.prototype, \"ajaxSettings\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Complex({}, ContextMenuSettings)\n ], FileManager.prototype, \"contextMenuSettings\", void 0);\n __decorate([\n Property('')\n ], FileManager.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, DetailsViewSettings)\n ], FileManager.prototype, \"detailsViewSettings\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('400px')\n ], FileManager.prototype, \"height\", void 0);\n __decorate([\n Property('LargeIcons')\n ], FileManager.prototype, \"view\", void 0);\n __decorate([\n Complex({}, NavigationPaneSettings)\n ], FileManager.prototype, \"navigationPaneSettings\", void 0);\n __decorate([\n Property('/')\n ], FileManager.prototype, \"path\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"popupTarget\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], FileManager.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], FileManager.prototype, \"selectedItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showFileExtension\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"rootAliasName\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"showHiddenItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showThumbnail\", void 0);\n __decorate([\n Property('Ascending')\n ], FileManager.prototype, \"sortOrder\", void 0);\n __decorate([\n Property('name')\n ], FileManager.prototype, \"sortBy\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], FileManager.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({}, UploadSettings)\n ], FileManager.prototype, \"uploadSettings\", void 0);\n __decorate([\n Property('100%')\n ], FileManager.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDownload\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeImageLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeSend\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStart\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragging\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStop\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDropped\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelection\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelect\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"uploadListCreate\", void 0);\n FileManager = FileManager_1 = __decorate([\n NotifyPropertyChanges\n ], FileManager);\n return FileManager;\n}(Component));\nexport { FileManager };\n","import { Toolbar as BaseToolbar } from '@syncfusion/ej2-navigations';\nimport { select, isNullOrUndefined as isNOU, closest, selectAll } from '@syncfusion/ej2-base';\nimport { createDialog } from '../pop-up/dialog';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { refresh, getPathObject, getLocaleText, getCssClass, sortbyClickHandler } from '../common/utility';\nimport { createDeniedDialog, updateLayout } from '../common/utility';\nimport { GetDetails } from '../common/operations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { cutFiles, copyFiles, pasteHandler, hasEditAccess } from '../common/index';\nimport { doDownload, createNewFolder, uploadItem } from '../common/index';\n/**\n * Toolbar module\n */\nvar Toolbar = /** @class */ (function () {\n /**\n * Constructor for the Toolbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies the parent element.\n * @private\n */\n function Toolbar(parent) {\n this.default = ['Delete', 'Rename', 'Download', 'Cut', 'Copy', 'Paste'];\n this.single = ['Delete', 'Rename', 'Download', 'Cut', 'Copy'];\n this.multiple = ['Delete', 'Download', 'Cut', 'Copy', 'Refresh'];\n this.selection = ['NewFolder', 'Upload', 'SortBy', 'Refresh'];\n this.parent = parent;\n this.render();\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n var _this = this;\n this.items = this.toolbarItemData(this.getItems(this.parent.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj = new BaseToolbar({\n items: _this.items,\n created: _this.toolbarCreateHandler.bind(_this),\n overflowMode: 'Popup',\n clicked: _this.onClicked.bind(_this),\n enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n enableRtl: _this.parent.enableRtl\n });\n _this.toolbarObj.isStringTemplate = true;\n _this.toolbarObj.appendTo('#' + _this.parent.element.id + CLS.TOOLBAR_ID);\n });\n };\n Toolbar.prototype.getItemIndex = function (item) {\n var itemId = this.getId(item);\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i].id === itemId) {\n return i;\n }\n }\n return -1;\n };\n Toolbar.prototype.getItems = function (items) {\n var currItems = items.slice();\n if (this.parent.isDevice && this.parent.allowMultiSelection) {\n currItems.push('SelectAll');\n }\n return currItems;\n };\n /* istanbul ignore next */\n Toolbar.prototype.onClicked = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var tool = args.item.id.substr((this.parent.element.id + '_tb_').length);\n // eslint-disable-next-line\n var details;\n if (tool === 'refresh' || tool === 'newfolder' || tool === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = { cancel: false, fileDetails: details, item: args.item };\n this.parent.trigger('toolbarClick', eventArgs, function (toolbarClickArgs) {\n var sItems;\n var target;\n if (!toolbarClickArgs.cancel) {\n switch (tool) {\n case 'sortby':\n target = closest(args.originalEvent.target, '.' + CLS.TB_ITEM);\n if (target && target.classList.contains('e-toolbar-popup')) {\n args.cancel = true;\n }\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'delete':\n for (var i = 0; i < details.length; i++) {\n if (!hasEditAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'paste':\n _this.parent.folderPath = '';\n pasteHandler(_this.parent);\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'download':\n doDownload(_this.parent);\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n case 'selectall':\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'selection':\n _this.parent.notify(events.clearAllInit, {});\n break;\n }\n }\n });\n };\n Toolbar.prototype.toolbarCreateHandler = function () {\n if (!isNOU(select('#' + this.getId('SortBy'), this.parent.element))) {\n var items = [\n { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '' },\n { separator: true },\n { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('none'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '' }\n ];\n this.buttonObj = new DropDownButton({\n items: items, cssClass: getCssClass(this.parent, CLS.ROOT_POPUP),\n select: sortbyClickHandler.bind(this, this.parent),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl, iconCss: CLS.ICON_SHORTBY\n });\n this.buttonObj.isStringTemplate = true;\n this.buttonObj.appendTo('#' + this.getId('SortBy'));\n }\n if (!isNOU(select('#' + this.getId('View'), this.parent.element))) {\n var gridSpan = '<span class=\"' + CLS.ICON_GRID + ' ' + CLS.MENU_ICON + '\"></span>';\n var largeIconSpan = '<span class=\"' + CLS.ICON_LARGE + ' ' + CLS.MENU_ICON + '\"></span>';\n var layoutItems = [\n {\n id: this.getPupupId('large'), text: largeIconSpan + getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? '' : CLS.TB_OPTION_TICK\n },\n {\n id: this.getPupupId('details'), text: gridSpan + getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : ''\n }\n ];\n this.layoutBtnObj = new DropDownButton({\n iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n cssClass: getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP),\n items: layoutItems, select: this.layoutChange.bind(this),\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n content: '<span class=\"e-tbar-btn-text\">' + getLocaleText(this.parent, 'View') + '</span>'\n });\n this.layoutBtnObj.isStringTemplate = true;\n this.layoutBtnObj.appendTo('#' + this.getId('View'));\n }\n this.hideItems(this.default, true);\n this.hideStatus();\n var btnElement = selectAll('.e-btn', this.toolbarObj.element);\n var _loop_1 = function (btnCount) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n this.parent.refreshLayout();\n };\n Toolbar.prototype.updateSortByButton = function () {\n if (this.buttonObj) {\n var items = this.buttonObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n if (this.parent.sortBy === 'dateModified' || this.parent.sortBy === 'dateCreated') {\n items[itemCount].iconCss = this.parent.sortBy === this.parent.sortBy ? CLS.TB_OPTION_DOT : '';\n }\n else {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.getPupupId = function (id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n };\n Toolbar.prototype.layoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (args.item.id === this.getPupupId('large')) {\n updateLayout(this.parent, 'LargeIcons');\n }\n }\n else {\n if (args.item.id === this.getPupupId('details')) {\n updateLayout(this.parent, 'Details');\n }\n }\n };\n Toolbar.prototype.toolbarItemData = function (data) {\n var items = [];\n var mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n var itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n var spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\n switch (data[i]) {\n case '|':\n item = { type: 'Separator' };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_UPLOAD, showTextOn: mode };\n break;\n case 'SortBy':\n item = {\n id: itemId, tooltipText: itemTooltip,\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\">' + spanElement + '</button>'\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: CLS.ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\" aria-label=' +\n getLocaleText(this.parent, 'View') + '></button>'\n };\n break;\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip };\n break;\n }\n items.push(item);\n }\n return items;\n };\n Toolbar.prototype.getId = function (id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n };\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.showPaste, this.showPaste, this);\n this.parent.on(events.hidePaste, this.hidePaste, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.sortByChange, this.updateSortByButton, this);\n };\n Toolbar.prototype.reRenderToolbar = function (e) {\n var _this = this;\n if (e.newProp.toolbarSettings.items !== undefined) {\n this.items = this.toolbarItemData(this.getItems(e.newProp.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n if (_this.buttonObj) {\n _this.buttonObj.destroy();\n }\n if (_this.layoutBtnObj) {\n _this.layoutBtnObj.destroy();\n }\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj.items = _this.items;\n _this.toolbarObj.dataBind();\n _this.toolbarCreateHandler();\n });\n }\n };\n Toolbar.prototype.onSelectionChanged = function () {\n this.hideStatus();\n this.hideItems(this.single, true);\n this.hideItems(this.selection, false);\n if (this.parent.selectedItems.length === 1) {\n this.hideItems(this.single, false);\n this.hideItems(this.selection, true);\n }\n else if (this.parent.selectedItems.length > 1) {\n this.hideItems(this.multiple, false);\n this.hideItems(this.selection, true);\n }\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele) {\n var txt = void 0;\n if (this.parent.selectedItems.length === 1) {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Item-Selection');\n }\n else {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Items-Selection');\n }\n select('.e-tbar-btn-text', ele).textContent = txt;\n this.toolbarObj.hideItem(ele.parentElement, false);\n }\n };\n Toolbar.prototype.hideItems = function (tools, toHide) {\n for (var i = 0; i < tools.length; i++) {\n var ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n };\n Toolbar.prototype.hideStatus = function () {\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n };\n Toolbar.prototype.showPaste = function () {\n this.hideItems(['Paste'], false);\n };\n Toolbar.prototype.hidePaste = function () {\n this.hideItems(['Paste'], true);\n };\n Toolbar.prototype.onLayoutChange = function () {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE;\n var items = this.layoutBtnObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('large')) {\n items[itemCount].iconCss = this.parent.view === 'LargeIcons' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('details')) {\n items[itemCount].iconCss = this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.showPaste, this.showPaste);\n this.parent.off(events.hidePaste, this.hidePaste);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.sortByChange, this.updateSortByButton);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n this.reRenderToolbar(e);\n break;\n }\n }\n };\n Toolbar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.destroy();\n }\n this.toolbarObj.destroy();\n this.parent.refreshLayout();\n };\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n var ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { TreeView as BaseTreeView } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, select, setValue, getValue, Draggable } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, closest } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { createDialog } from '../pop-up/dialog';\nimport { updatePath, getPath, getDirectories } from '../common/utility';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getDirectoryPath, getModule } from '../common/index';\nimport { copyFiles, cutFiles, removeActive, pasteHandler, getParentPath, readDropPath } from '../common/index';\nimport { hasEditAccess, createDeniedDialog, hasDownloadAccess, getAccessClass } from '../common/index';\n/**\n * NavigationPane module\n */\nvar NavigationPane = /** @class */ (function () {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n /* istanbul ignore next */\n function NavigationPane(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n this.expandTree = false;\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.renameParent = null;\n // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = null;\n // Specifies whether the nodeClicked event of the treeview control is triggered or not.\n this.isNodeClickCalled = false;\n // Specifies whether to restrict node selection in the treeview control.\n this.restrictSelecting = false;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n NavigationPane.prototype.onInit = function () {\n if (!isNOU(this.treeObj)) {\n return;\n }\n // eslint-disable-next-line\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', rootData);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new BaseTreeView({\n fields: {\n dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name',\n hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'\n },\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n sortOrder: this.parent.navigationPaneSettings.sortOrder,\n nodeSelecting: this.onNodeSelecting.bind(this),\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + CLS.TREE_ID);\n this.wireEvents();\n };\n NavigationPane.prototype.addDragDrop = function () {\n var _this = this;\n if (!this.parent.isMobile && this.treeObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.treeObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n dragTarget: '.' + CLS.FULLROW,\n distance: 5,\n dragArea: this.parent.element,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: true,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n NavigationPane.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(CLS.FULLROW)) {\n return null;\n }\n var dragLi = closest(dragTarget, 'li');\n this.parent.dragPath = '';\n this.parent.dragData = [];\n this.parent.activeElements = [];\n this.parent.activeElements = [dragLi];\n this.parent.dragNodes = [];\n getModule(this.parent, dragLi);\n // eslint-disable-next-line\n this.parent.dragData = this.getTreeData(dragLi);\n this.parent.dragPath = this.getDragPath(dragLi, this.parent.dragData[0].name);\n this.parent.dragNodes.push(this.parent.dragData[0].name);\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n NavigationPane.prototype.getDragPath = function (dragLi, text) {\n var path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n };\n NavigationPane.prototype.getDropPath = function (node, text) {\n var id = node.getAttribute('data-id');\n var newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId);\n };\n NavigationPane.prototype.onDrowNode = function (args) {\n var eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n // eslint-disable-next-line\n var directories = getDirectories(files);\n if (directories.length > 0) {\n var length_1 = 0;\n // eslint-disable-next-line\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line\n folders[length_1]._fm_icon = 'e-fe-folder';\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', folders[length_1]);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length_1])) {\n setValue('class', getAccessClass(folders[length_1]), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length_1]);\n }\n length_1++;\n }\n // eslint-disable-next-line\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n };\n // Node Selecting event handler\n NavigationPane.prototype.onNodeSelecting = function (args) {\n if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {\n this.restrictSelecting = false;\n this.isNodeClickCalled = false;\n return;\n }\n if (!this.renameParent) {\n this.parent.activeModule = 'navigationpane';\n // eslint-disable-next-line\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.treeObj.selectedNodes = this.isNodeClickCalled ? this.previousSelected : this.treeObj.selectedNodes;\n this.previousSelected = this.treeObj.selectedNodes;\n if (!isNOU(this.parent) && !isNOU(this.parent.contextmenuModule)) {\n this.parent.contextmenuModule.contextMenu.enableItems(['Open'], true);\n }\n }\n }\n };\n // Opens the folder while clicking open context menu item in the treeview.\n NavigationPane.prototype.openFileOnContextMenuClick = function (node) {\n var data = this.treeObj.getTreeData(node);\n // eslint-disable-next-line\n this.parent.selectedItems = [];\n this.parent.itemData = data;\n this.activeNode = node;\n this.parent.activeModule = 'navigationpane';\n updatePath(node, this.parent.itemData[0], this.parent);\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n this.treeObj.selectedNodes = [node.getAttribute('data-uid')];\n };\n NavigationPane.prototype.onNodeSelected = function (args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent) {\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n // eslint-disable-next-line\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n var previousPath = this.parent.path;\n updatePath(args.node, this.parent.itemData[0], this.parent);\n if (previousPath !== this.parent.path) {\n this.expandNodeTarget = null;\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.onPathDrag = function (args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpand = function (args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n var text = getValue('text', args.nodeData);\n var id = args.node.getAttribute('data-id');\n var isId = isNOU(id) ? false : true;\n var newText = isNOU(id) ? text : id;\n var path = getPath(args.node, newText, isId);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpanded = function (args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n };\n NavigationPane.prototype.onNodeClicked = function (args) {\n this.parent.activeModule = 'navigationpane';\n this.previousSelected = this.treeObj.selectedNodes;\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n var layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(events.modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeEditing = function (args) {\n if (!isNOU(args.innerHtml)) {\n args.cancel = true;\n }\n };\n NavigationPane.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n // eslint-disable-next-line\n var currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n var ul = select('.' + CLS.LIST_PARENT, sNode);\n if (isNOU(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], !this.expandTree);\n }\n this.expandNodeTarget = '';\n }\n this.expandTree = false;\n if (isNOU(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + CLS.LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.selectedNodes = [sleId];\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + CLS.ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.removeChildNodes(id);\n this.addChild(args.files, id, false);\n this.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n };\n NavigationPane.prototype.onCreateEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n };\n NavigationPane.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n var name_1 = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name_1], this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDeleteEnd = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n var selectedNode = this.treeObj.selectedNodes[0];\n var selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n var selectedNodeEle = closest(selcetedEle, '.' + CLS.LIST_PARENT).parentElement;\n this.treeObj.selectedNodes = [selectedNodeEle.getAttribute('data-uid')];\n this.treeObj.dataBind();\n }\n this.updateTree(args);\n };\n NavigationPane.prototype.onRefreshEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEndParent = function (args) {\n var id = this.renameParent ? this.renameParent : this.parent.pathId[this.parent.pathId.length - 1];\n this.expandTree = this.treeObj.expandedNodes.indexOf(this.treeObj.selectedNodes[0]) !== -1;\n this.updateTreeNode(args, id);\n this.parent.expandedId = null;\n if (this.renameParent) {\n this.renameParent = null;\n }\n else {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.renameText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('_fm_pId', 'equal', id, false));\n }\n }\n if (resultData.length > 0) {\n this.isRenameParent = true;\n var id_1 = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEnd = function (args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData();\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(data).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(data).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.currentItemText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n this.renameParent = getValue(this.treeObj.fields.parentID, resultData[0]);\n this.parent.expandedId = this.renameParent;\n this.parent.itemData = this.getTreeData(this.renameParent);\n read(this.parent, events.renameEndParent, this.parent.filterPath.replace(/\\\\/g, '/'));\n }\n }\n };\n NavigationPane.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, events.finalizeEnd, '/');\n if (e.oldProp.navigationPaneSettings.sortOrder !== e.newProp.navigationPaneSettings.sortOrder) {\n this.treeObj.sortOrder = e.newProp.navigationPaneSettings.sortOrder;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDownLoadInit = function () {\n this.doDownload();\n };\n NavigationPane.prototype.onSelectionChanged = function (e) {\n this.treeObj.selectedNodes = [e.selectedNode];\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchDrag) {\n moveNames = this.getMoveNames(args.files, this.parent.isSearchDrag, this.parent.dragPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getMoveNames = function (files, flag, path) {\n var moveNames = [];\n for (var i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n var name_2 = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n var index = path.lastIndexOf('/');\n name_2 = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n // eslint-disable-next-line\n var resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name_2, false));\n for (var j = 0; j < resultData.length; j++) {\n var fPath = getValue('filterPath', resultData[j]);\n fPath = fPath.replace(/\\\\/g, '/');\n if (fPath === path) {\n moveNames.push(getValue(this.treeObj.fields.id, resultData[j]));\n break;\n }\n }\n }\n }\n }\n return moveNames;\n };\n NavigationPane.prototype.onCutEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchCut) {\n this.moveNames = this.getMoveNames(args.files, this.parent.isSearchCut, this.parent.targetPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n // eslint-disable-next-line\n var data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n // eslint-disable-next-line\n var resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n this.treeObj.selectedNodes = [getValue('_fm_id', resultObj)];\n this.treeObj.dataBind();\n }\n };\n NavigationPane.prototype.onDropPath = function (args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n };\n NavigationPane.prototype.onpasteEnd = function (args) {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', getValue('id', args.cwd), false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', getValue('name', args.cwd), false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', getValue('filterPath', args.cwd), false));\n }\n }\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1;\n this.removeChildNodes(id);\n this.addChild(args.files, id, toExpand);\n }\n this.parent.expandedId = null;\n this.onPathChanged(args);\n if (this.parent.isDragDrop) {\n this.checkDropPath(args);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.checkDropPath = function (args) {\n if (this.parent.hasId) {\n this.parent.isDropEnd = !this.parent.isPasteError;\n readDropPath(this.parent);\n return;\n }\n if ((this.parent.dropPath.indexOf(getDirectoryPath(this.parent, args)) === -1)) {\n this.parent.isDropEnd = false;\n readDropPath(this.parent);\n }\n else {\n this.parent.isDropEnd = !this.parent.isPasteError;\n }\n };\n NavigationPane.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n // eslint-disable-next-line\n var obj = this.parent.isDragDrop ? this.parent.dragData : this.parent.actionRecords;\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n };\n NavigationPane.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.activeElements = [this.activeNode];\n }\n };\n NavigationPane.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.downloadInit, this.onDownLoadInit, this);\n this.parent.on(events.initialEnd, this.onInitialEnd, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutEnd, this.onCutEnd, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.nodeExpand, this.onNodeExpanded, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.updateTreeSelection, this.onSelectionChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.openEnd, this.onOpenEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.renameEndParent, this.onRenameEndParent, this);\n this.parent.on(events.clearPathInit, this.onClearPathInit, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.dragEnd, this.onDragEnd, this);\n this.parent.on(events.dragging, this.onDragging, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.pathDrag, this.onPathDrag, this);\n };\n NavigationPane.prototype.removeEventListener = function () {\n this.parent.off(events.initialEnd, this.onInitialEnd);\n this.parent.off(events.downloadInit, this.onDownLoadInit);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutEnd, this.onCutEnd);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.updateTreeSelection, this.onSelectionChanged);\n this.parent.off(events.nodeExpand, this.onNodeExpanded);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onOpenEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.renameEndParent, this.onRenameEndParent);\n this.parent.off(events.clearPathInit, this.onClearPathInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.dragEnd, this.onDragEnd);\n this.parent.off(events.dragging, this.onDragging);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.pathDrag, this.onPathDrag);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n // eslint-disable-next-line\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDragging = function (args) {\n var ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n var level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n };\n NavigationPane.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, 'li');\n this.parent.dropData = this.getTreeData(dropLi)[0];\n this.parent.dropPath = this.getDropPath(dropLi, getValue('name', this.parent.dropData));\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'navigationpane';\n };\n NavigationPane.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.treeObj) {\n this.unWireEvents();\n this.treeObj.destroy();\n }\n };\n NavigationPane.prototype.wireEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n NavigationPane.prototype.unWireEvents = function () {\n this.keyboardModule.destroy();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.keyDown = function (e) {\n var action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n if (this.parent.pathId[0] !== this.activeNode.getAttribute('data-uid')) {\n this.updateItemData();\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n this.removeNodes = [];\n createDialog(this.parent, 'Delete');\n }\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n if (!hasEditAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionEdit);\n }\n else {\n this.updateRenameData();\n createDialog(this.parent, 'Rename');\n }\n }\n break;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getTreeData = function (args) {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData(args);\n for (var i = 0; i < data.length; i++) {\n if (isNOU(getValue('hasChild', data[i]))) {\n setValue('hasChild', false, data[i]);\n }\n }\n return data;\n };\n NavigationPane.prototype.updateRenameData = function () {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n };\n NavigationPane.prototype.updateItemData = function () {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n };\n NavigationPane.prototype.updateActionData = function () {\n this.updateItemData();\n var newPath = getParentPath(this.parent.path);\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathId.pop();\n this.parent.pathNames.pop();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.doDownload = function () {\n var newPath = getParentPath(this.parent.path);\n var itemId = this.treeObj.selectedNodes[0];\n var name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n };\n return NavigationPane;\n}());\nexport { NavigationPane };\n","import { Grid, Resize, ContextMenu, Sort, VirtualScroll } from '@syncfusion/ej2-grids';\nimport { select, KeyboardEvents, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, Touch, setValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Internationalization, closest, Draggable } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\nimport { removeBlur, openAction, getImageUrl, fileType, getSortedData, getLocaleText, updateLayout } from '../common/utility';\nimport { createEmptyElement } from '../common/utility';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { cutFiles, addBlur, openSearchFolder, copyFiles, removeActive, pasteHandler, getPathObject, getName } from '../common/index';\nimport { hasReadAccess, hasEditAccess, hasDownloadAccess, doRename, getAccessClass, createDeniedDialog, rename } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule, getFullPath } from '../common/index';\nimport { getDirectoryPath, updateRenamingData, getItemName, doDeleteFiles, doDownloadFiles } from '../common/index';\n/**\n * DetailsView module\n */\nvar DetailsView = /** @class */ (function () {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n function DetailsView(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.pasteOperation = false;\n this.uploadOperation = false;\n Grid.Inject(Resize, ContextMenu, Sort, VirtualScroll);\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.GRID_ID, this.parent.element);\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n tab: 'tab',\n moveDown: 'downarrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n ctrlUp: 'ctrl+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n end: 'end',\n home: 'home',\n moveUp: 'uparrow',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftdel: 'shift+delete',\n ctrlD: 'ctrl+d',\n f2: 'f2',\n ctrlA: 'ctrl+a',\n enter: 'enter'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n if (this.parent.isMobile) {\n sortSettings = [];\n }\n else {\n if (this.parent.sortOrder !== 'None') {\n sortSettings = [{ direction: this.parent.sortOrder, field: this.parent.sortBy }];\n }\n }\n this.gridObj = new Grid({\n dataSource: items,\n allowSorting: true,\n rowSelecting: this.onSelection.bind(this, 'select'),\n rowDeselecting: this.onSelection.bind(this, 'unselect'),\n rowSelected: this.onSelected.bind(this),\n rowDeselected: this.onDeSelection.bind(this),\n allowResizing: this.parent.detailsViewSettings.columnResizing,\n selectionSettings: {\n type: this.parent.allowMultiSelection ? 'Multiple' : 'Single',\n checkboxMode: 'ResetOnRowClick'\n },\n enableRtl: this.parent.enableRtl,\n pageSettings: { pageSize: 20 },\n sortSettings: { allowUnsort: false, columns: sortSettings },\n columns: columns,\n recordDoubleClick: this.DblClickEvents.bind(this),\n beforeDataBound: this.onBeforeDataBound.bind(this),\n dataBound: this.onDataBound.bind(this),\n rowDataBound: this.onRowDataBound.bind(this),\n actionBegin: this.onActionBegin.bind(this),\n headerCellInfo: this.onHeaderCellInfo.bind(this),\n width: '100%',\n beforeCopy: function (args) { args.cancel = true; },\n // eslint-disable-next-line\n load: function (args) {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\n });\n this.gridObj.isStringTemplate = true;\n this.gridObj.appendTo('#' + this.parent.element.id + CLS.GRID_ID);\n this.wireEvents();\n this.adjustHeight();\n this.emptyArgs = args;\n }\n };\n DetailsView.prototype.checkNameWidth = function () {\n var initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (var i = 0; i < initialColumn.length; i++) {\n if (initialColumn[i].field === 'name') {\n this.isNameWidth = !isNOU(initialColumn[i].width);\n return;\n }\n }\n };\n DetailsView.prototype.adjustWidth = function (columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n var nameWidth = void 0;\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n nameWidth = (this.element.clientWidth <= 500) ? '120px' : 'auto';\n }\n else {\n nameWidth = (this.element.clientWidth <= 680) ? ((fieldName === 'name') ? '120px' : '180px') : 'auto';\n }\n columns[i].width = nameWidth;\n }\n }\n };\n DetailsView.prototype.getColumns = function () {\n var columns;\n if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: '<div class=\"e-fe-text\">${name}</div><div class=\"e-fe-date\">${_fm_modified}</div>' +\n '<span class=\"e-fe-size\">${size}</span>'\n }\n ];\n }\n else {\n columns = JSON.parse(JSON.stringify(this.parent.detailsViewSettings.columns));\n this.adjustWidth(columns, 'name');\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].headerText = getLocaleText(this.parent, columns[i].headerText);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth, template: '<span class=\"e-fe-icon ${_fm_iconClass}\"></span>',\n allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: '<span class=\"e-fe-icon e-fe-folder\"></span>'\n };\n columns.unshift(icon);\n if (this.parent.allowMultiSelection) {\n var cWidth = (this.parent.isBigger ? '36' : '26');\n var cBox = {\n type: 'checkbox', width: cWidth, minWidth: cWidth, customAttributes: { class: 'e-fe-checkbox' },\n allowResizing: false, allowSorting: false\n };\n if (this.parent.isMobile) {\n columns.push(cBox);\n }\n else {\n columns.unshift(cBox);\n }\n }\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n return columns;\n };\n DetailsView.prototype.adjustHeight = function () {\n if (!this.gridObj) {\n return;\n }\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n var gridHeader = select('.' + CLS.GRID_HEADER, this.parent.element);\n var height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n };\n DetailsView.prototype.renderCheckBox = function () {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n };\n DetailsView.prototype.onRowDataBound = function (args) {\n var td = select('.e-fe-grid-name', args.row);\n if (!td) {\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'name') {\n td = args.row.children[this.parent.allowMultiSelection ? (i + 2) : (i + 1)];\n break;\n }\n }\n }\n if (td) {\n td.setAttribute('title', getValue('name', args.data));\n }\n if (this.parent.isLayoutChange && this.parent.isCut && this.parent.fileAction === 'move' &&\n this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n if (this.parent.selectedNodes.indexOf(getValue('name', args.data)) !== -1) {\n addBlur(args.row);\n }\n }\n if (!this.parent.showFileExtension && getValue('isFile', args.data)) {\n var textEle = args.row.querySelector('.e-fe-text');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n var sizeEle = args.row.querySelector('.e-fe-size');\n var modifiedSize = void 0;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n var sizeValue = getValue('size', args.data);\n var intl = new Internationalization(this.parent.locale);\n var value = intl.formatNumber((sizeValue / 1024), { format: 'n' });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n var dateEle = args.row.querySelector('.e-fe-date');\n var intl = new Internationalization(this.parent.locale);\n var columns = this.parent.detailsViewSettings.columns;\n // eslint-disable-next-line\n var format = void 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n var formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n var checkWrap = args.row.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n if (!hasEditAccess(args.data)) {\n args.row.className += ' ' + getAccessClass(args.data);\n }\n var eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n DetailsView.prototype.onActionBegin = function (args) {\n if (args.requestType === 'sorting') {\n this.parent.setProperties({ sortOrder: args.direction }, true);\n this.parent.setProperties({ sortBy: args.columnName }, true);\n if (this.parent.selectedItems.length !== 0) {\n this.sortItem = true;\n var rows = this.gridObj.getSelectedRowIndexes();\n var len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.sortSelectedNodes.push(getValue(this.parent.hasId ? 'id' : 'name', data));\n len--;\n }\n }\n this.parent.notify(events.sortByChange, {});\n }\n };\n DetailsView.prototype.onHeaderCellInfo = function (args) {\n var checkWrap = args.node.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n };\n DetailsView.prototype.onBeforeDataBound = function (args) {\n showSpinner(this.parent.element);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, this.gridObj.dataSource);\n args.result = items;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if (this.parent.selectedItems.length !== 0) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem) {\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n var hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n var hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n var hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.classList.remove('e-scrollShow');\n }\n this.isRendered = true;\n this.parent.isLayoutChange = false;\n hideSpinner(this.parent.element);\n this.checkEmptyDiv(this.emptyArgs);\n this.isInteracted = this.isLoaded ? true : this.isInteracted;\n this.isLoaded = false;\n };\n DetailsView.prototype.selectRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var sRecords = [];\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var items = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var rData = [];\n if (this.parent.hasId) {\n rData = new DataManager(items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (nData.length > 0) {\n rData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (rData.length > 0) {\n var index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n };\n DetailsView.prototype.onSortColumn = function () {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n };\n DetailsView.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'detailsViewSettings':\n if (!isNullOrUndefined(this.gridObj)) {\n this.checkNameWidth();\n var columns = this.getColumns();\n this.gridObj.columns = columns;\n this.gridObj.allowResizing = this.parent.detailsViewSettings.columnResizing;\n this.gridObj.dataBind();\n this.gridObj.refreshColumns();\n }\n break;\n case 'selectedItems':\n this.interaction = false;\n if (this.parent.selectedItems.length !== 0) {\n if (!this.parent.allowMultiSelection) {\n var slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNOU(this.gridObj)) {\n this.gridObj.clearSelection();\n }\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n };\n DetailsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) {\n this.parent.searchedItems = [];\n if (!this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n else {\n this.updatePathColumn();\n }\n }\n removeBlur(this.parent);\n if (this.parent.view === 'Details') {\n /* istanbul ignore next */\n this.isInteracted = false;\n showSpinner(this.parent.element);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n }\n this.emptyArgs = args;\n };\n DetailsView.prototype.updatePathColumn = function () {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n var pathColumn = {\n field: 'filterPath', headerText: getLocaleText(this.parent, 'Path'), minWidth: 180, width: 'auto'\n };\n this.gridObj.columns.push(pathColumn);\n this.adjustWidth(this.gridObj.columns, 'filterPath');\n this.adjustWidth(this.gridObj.columns, 'name');\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n };\n DetailsView.prototype.checkEmptyDiv = function (args) {\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n if (items.length === 0 && !isNOU(this.element.querySelector('.' + CLS.GRID_VIEW))) {\n createEmptyElement(this.parent, this.element, args);\n }\n else if (items.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n if (this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY)) {\n var emptyDiv = this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY);\n this.element.querySelector('.' + CLS.GRID_VIEW).removeChild(emptyDiv);\n }\n else {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n }\n };\n DetailsView.prototype.onOpenInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n // eslint-disable-next-line\n var data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n };\n DetailsView.prototype.DblClickEvents = function (args) {\n this.gridObj.selectRows([args.rowIndex]);\n // eslint-disable-next-line\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.openContent = function (data) {\n var _this = this;\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var name_2 = getValue('name', data);\n if (getValue('isFile', data)) {\n var icon = fileType(data);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, data);\n createImageDialog(_this.parent, name_2, imgUrl);\n }\n }\n else {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', data);\n var newPath = _this.parent.path + (isNOU(id) ? name_2 : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(name_2);\n _this.parent.pathId.push(getValue('_fm_id', data));\n _this.parent.itemData = [data];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, data);\n }\n _this.parent.isFiltered = false;\n }\n _this.element.focus();\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(events.hideLayout, {});\n this.gridObj.element.classList.remove(CLS.DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSearchFiles = function (args) {\n if (this.parent.view === 'Details') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (!this.parent.isLayoutChange) {\n this.parent.layoutSelectedItems = [];\n }\n this.updatePathColumn();\n this.parent.searchedItems = args.files;\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.removePathColumn = function (isRefresh) {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath')) {\n /* istanbul ignore next */\n if (this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n this.parent.notify(events.sortByChange, {});\n }\n this.gridObj.columns.pop();\n if (!isRefresh) {\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n }\n };\n DetailsView.prototype.onFinalizeEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n };\n DetailsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n DetailsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n };\n DetailsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n };\n DetailsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.isInteracted = false;\n this.removePathColumn(false);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.emptyArgs = args;\n };\n DetailsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n DetailsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'Details') {\n this.isInteracted = false;\n if (this.parent.allowMultiSelection) {\n this.gridObj.selectionModule.selectRowsByRange(0, this.gridObj.getRows().length);\n }\n else {\n this.gridObj.selectRow(this.gridObj.getRows().length - 1);\n }\n this.isInteracted = true;\n this.interaction = true;\n }\n };\n DetailsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelectionChanged = function () {\n removeClass([this.element], CLS.HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], CLS.HEADER_CHECK);\n }\n };\n DetailsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n };\n DetailsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n DetailsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n DetailsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.addEventListener = function () {\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.search, this.onSearchFiles, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.sortColumn, this.onSortColumn, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n this.parent.on(events.pasteInit, this.onPasteInit, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.resizeEnd, this.onDetailsResizeHandler, this);\n this.parent.on(events.splitterResize, this.onDetailsResize, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n };\n DetailsView.prototype.removeEventListener = function () {\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteInit, this.onPasteInit);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.search, this.onSearchFiles);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.filterEnd, this.onPathChanged);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.sortColumn, this.onSortColumn);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.resizeEnd, this.onDetailsResizeHandler);\n this.parent.off(events.splitterResize, this.onDetailsResize);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n };\n DetailsView.prototype.onActionFailure = function () { this.interaction = true; };\n // eslint-disable-next-line\n DetailsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n };\n DetailsView.prototype.onPasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n };\n DetailsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n DetailsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n var name;\n if (dragLi.getElementsByClassName('e-fe-text')[0]) {\n name = dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName(\"e-rowcell e-templatecell\")[0].nextElementSibling) {\n name = dragLi.getElementsByClassName(\"e-rowcell e-templatecell\")[0].nextElementSibling.innerText;\n }\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n // eslint-disable-next-line\n this.parent.dragData = this.gridObj.getSelectedRecords();\n var dragRow;\n if (this.parent.dragData.length === 0 && dragLi) {\n dragRow = this.gridObj.getRowInfo(dragLi);\n }\n if (dragRow) {\n this.parent.dragData.push(dragRow.rowData);\n }\n this.parent.dragPath = this.parent.path;\n this.parent.activeElements = this.gridObj.getSelectedRows();\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDetailsResize = function () {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n var gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n var gridHeaderColGroup = gridHeader.firstChild.childNodes[0];\n var gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n var gridHeaderColNames = this.gridObj.getColumns();\n for (var i = 0; i < gridHeaderColNames.length; i++) {\n if ((!this.isNameWidth && gridHeaderColNames[i].field === 'name') || gridHeaderColNames[i].field === 'filterPath') {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n if (this.element.clientWidth <= 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 180px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 180px');\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n }\n }\n }\n };\n DetailsView.prototype.onDetailsResizeHandler = function () {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n this.adjustHeight();\n }\n };\n DetailsView.prototype.createDragObj = function () {\n var _this = this;\n if (!this.parent.isMobile && this.gridObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + CLS.ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: true,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (!args.target.closest('tr')) {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n else {\n // eslint-disable-next-line\n var info = null;\n // eslint-disable-next-line\n info = this.gridObj.getRowInfo(args.target).rowData;\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n }\n };\n DetailsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n };\n DetailsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {\n this.onPathChanged(args);\n }\n }\n };\n DetailsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns modules name.\n * @private\n */\n DetailsView.prototype.getModuleName = function () {\n return 'detailsview';\n };\n DetailsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n this.unWireEvents();\n this.gridObj.destroy();\n }\n };\n DetailsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelection = function (action, args) {\n var eventArgs = {\n action: action, fileDetails: args.data, isInteracted: this.interaction, cancel: false, target: args.target\n };\n this.parent.trigger('fileSelection', eventArgs);\n args.cancel = eventArgs.cancel;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelected = function (args) {\n this.parent.activeModule = 'detailsview';\n if (!this.parent.isLayoutChange || this.parent.isFiltered) {\n this.selectedRecords();\n }\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.getSelectedRowIndexes().length === 1) {\n this.firstItemIndex = this.gridObj.selectedRowIndex;\n }\n this.gridObj.element.setAttribute('tabindex', '-1');\n this.triggerSelect('select', args);\n var item = this.gridObj.getRowByIndex(this.gridObj.selectedRowIndex);\n this.updateType(item);\n if (!isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n if (this.gridObj.getSelectedRowIndexes().length !== 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\n item.querySelector('.e-rowcell.e-fe-checkbox').removeAttribute('tabindex');\n }\n if (!isNOU(this.gridObj) && !isNOU(this.gridObj.element.querySelector('.e-checkselectall'))) {\n this.gridObj.element.querySelector('.e-checkselectall').setAttribute('tabindex', '-1');\n }\n var rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i] === this.gridObj.selectedRowIndex) {\n this.gridObj.getRowByIndex(rows[i]).setAttribute('tabindex', '0');\n }\n else {\n this.gridObj.getRowByIndex(rows[i]).removeAttribute('tabindex');\n }\n }\n }\n var len = rows.length;\n if (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n var indexes = getValue('rowIndexes', args);\n var multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNOU(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if (this.parent.allowMultiSelection && !isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n var checkItem = item.querySelector('.e-checkselect');\n checkItem.focus();\n }\n this.addFocus(this.gridObj.selectedRowIndex);\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'Details' && !isNOU(this.gridObj)) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n }\n };\n DetailsView.prototype.selectedRecords = function () {\n this.parent.setProperties({ selectedItems: [] }, true);\n // eslint-disable-next-line\n var selectedRecords = this.gridSelectNodes();\n var selectSize = 0;\n while (selectSize < selectedRecords.length) {\n var record = selectedRecords[selectSize];\n var name_3 = getItemName(this.parent, record);\n this.parent.selectedItems.push(name_3);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n };\n DetailsView.prototype.onDeSelection = function (args) {\n /* istanbul ignore next */\n if (!this.parent.allowMultiSelection && isNOU(args.data)) {\n this.gridObj.getRowByIndex(args.rowIndex).removeAttribute('tabindex');\n }\n else if (this.gridObj.getSelectedRowIndexes().length > 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n this.gridObj.getRowByIndex(lastItemIndex).querySelector('.e-checkselect').removeAttribute('tabindex');\n }\n if (this.gridObj.selectedRowIndex === -1) {\n this.gridObj.element.setAttribute('tabindex', '0');\n }\n if (!this.isInteracted) {\n this.isInteracted = true;\n return;\n }\n this.selectedRecords();\n if (this.parent.selectedItems.length === 0) {\n setValue('enableSelectMultiTouch', false, this.gridObj.selectionModule);\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('unselect', args);\n this.parent.visitedItem = null;\n };\n DetailsView.prototype.triggerSelect = function (action, args) {\n var eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n };\n DetailsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.gridObj.element, {\n keyAction: this.keyupHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.gridObj.element, 'blur', this.removeFocus, this);\n };\n DetailsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n var ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: function (eve) {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n proxy_1.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (proxy_1.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', proxy_1.parent.allowMultiSelection, proxy_1.gridObj.selectionModule);\n addClass([proxy_1.parent.element], CLS.MULTI_SELECT);\n }\n var target = e.originalEvent.target;\n if (target) {\n var row = closest(target, '.' + CLS.ROW);\n var index = proxy_1.gridObj.getRows().indexOf(row);\n proxy_1.gridObj.selectRow(index);\n }\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.removeSelection = function () {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n this.gridObj.clearSelection();\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.selectedRowIndex === -1) {\n this.startIndex = null;\n }\n this.isInteracted = true;\n };\n DetailsView.prototype.removeFocus = function () {\n this.addFocus(null);\n };\n DetailsView.prototype.getFocusedItemIndex = function () {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('aria-rowindex'), 10) : null;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n DetailsView.prototype.keydownHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n // eslint-disable-next-line\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focItem = this.getFocusedItem();\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n // eslint-disable-next-line\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1) {\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n // eslint-disable-next-line\n var data = JSON.parse(JSON.stringify(rowData));\n this.openContent(data);\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlA':\n if (!isNOU(gridItems[0]) && this.parent.allowMultiSelection) {\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n var crtSrlPos = cnTable.scrollTop;\n var crtFocusIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n cnTable.scrollTop = crtSrlPos;\n if (crtFocusIndex !== -1) {\n this.addFocus(crtFocusIndex);\n }\n }\n break;\n case 'ctrlHome':\n case 'tab':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {\n this.gridObj.selectRow(0);\n }\n else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {\n return;\n }\n else {\n this.addFocus(0);\n }\n }\n break;\n case 'ctrlEnd':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow(gridLength - 1);\n }\n else {\n this.addFocus(gridLength - 1);\n }\n }\n break;\n case 'shiftHome':\n case 'shiftEnd':\n case 'csHome':\n case 'csEnd':\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : gridItems.length - 1);\n }\n else {\n if (!isNOU(gridItems[0])) {\n if (!isNOU(selIndex) && selIndex !== -1) {\n this.checkRowsKey(gridItems, selIndex, null, e);\n }\n else {\n if (e.action === 'csHome' || e.action === 'shiftHome') {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n }\n }\n }\n }\n break;\n case 'space':\n case 'csSpace':\n case 'shiftSpace':\n case 'ctrlSpace':\n this.spaceSelection(selRowIndeces, focIndex, selIndex, e);\n break;\n case 'csUp':\n case 'csDown':\n case 'shiftUp':\n case 'shiftDown':\n this.shiftMoveMethod(gridItems, selIndex, focIndex, selRowIndeces, e);\n break;\n case 'ctrlUp':\n case 'ctrlDown':\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n break;\n case 'home':\n firstItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[0])];\n this.parent.setProperties({ selectedItems: firstItem }, true);\n this.selectRecords(firstItem);\n break;\n case 'moveUp':\n case 'moveDown':\n this.moveFunction(gridItems, e, selIndex);\n break;\n case 'end':\n lastItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[gridLength - 1])];\n this.parent.setProperties({ selectedItems: lastItem }, true);\n this.selectRecords(lastItem);\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.gridSelectNodes = function () {\n return this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.doDownload = function () {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionDownload);\n return;\n }\n }\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n };\n DetailsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasEditAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n DetailsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n DetailsView.prototype.updateRenameData = function () {\n // eslint-disable-next-line\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftMoveMethod = function (gridItems, selIndex, focIndex, selRowIndeces, e) {\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n if (selIndex === -1 && (e.action === 'csUp' || e.action === 'csDown')) {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n else if (selIndex !== -1 && focIndex !== selIndex &&\n !((e.action === 'csUp' || e.action === 'csDown') && this.isSelected(selRowIndeces, focIndex))) {\n this.shiftSelectFocusItem(selIndex, focIndex, selRowIndeces, e);\n }\n else {\n this.shiftSelectedItem(selIndex, selRowIndeces, gridItems, e);\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.moveFunction = function (selectedItems, e, rowIndex) {\n if (!isNOU(this.getFocusedItem()) && this.parent.allowMultiSelection) {\n if (e.action === 'moveDown') {\n this.gridObj.selectRow(this.getFocusedItemIndex() + 1);\n }\n else {\n this.gridObj.selectRow(this.getFocusedItemIndex() - 1);\n }\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n if (e.action === 'moveDown' || e.action === 'ctrlDown' || e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectRow(rowIndex + ((rowIndex !== selectedItems.length - 1) ? 1 : 0));\n }\n else {\n this.gridObj.selectRow(rowIndex - ((rowIndex !== 0) ? 1 : 0));\n }\n }\n else {\n if (!isNOU(selectedItems[0])) {\n this.gridObj.selectRow(0);\n }\n }\n };\n DetailsView.prototype.spaceSelection = function (selRowIndeces, focIndex, selIndex, e) {\n if (!this.isSelected(selRowIndeces, focIndex) && selIndex !== -1 && (e.action === 'shiftSpace' || e.action === 'csSpace')) {\n if (focIndex < selIndex) {\n this.gridObj.selectionModule.selectRowsByRange(focIndex, selIndex);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(selIndex, focIndex);\n }\n }\n else if (!isNOU(this.getFocusedItem()) && focIndex !== selIndex) {\n selRowIndeces.push(this.getFocusedItemIndex());\n this.gridObj.selectRows(selRowIndeces);\n }\n else if (selIndex !== -1 && e.action === 'ctrlSpace' && this.parent.allowMultiSelection) {\n var lItem = selIndex;\n selRowIndeces.pop();\n this.gridObj.selectRows(selRowIndeces);\n this.addFocus(lItem);\n }\n else if (e.action === 'shiftSpace') {\n this.gridObj.selectRow(selIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.ctrlMoveFunction = function (items, e, rowIndex) {\n var nextItem;\n if (!isNOU(this.getFocusedItem())) {\n var nextIndex = this.getFocusedItemIndex();\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n nextIndex + ((nextIndex < items.length - 1) ? 1 : 0) : nextIndex - ((nextIndex < 1) ? 0 : 1);\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n rowIndex + ((rowIndex < items.length) ? 1 : 0) : rowIndex - ((rowIndex < 1) ? 0 : 1);\n }\n else {\n if (!isNOU(items[0])) {\n nextItem = 0;\n }\n }\n this.addFocus(nextItem);\n };\n // eslint-disable-next-line\n DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {\n if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {\n if (e.action !== 'csHome' && e.action !== 'csEnd') {\n if (isNOU(this.startIndex) && this.firstItemIndex !== indexValue) {\n this.firstItemIndex = indexValue;\n }\n if (e.action === 'shiftEnd') {\n this.gridObj.selectionModule.selectRowsByRange(this.firstItemIndex, items.length - 1);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, this.firstItemIndex);\n }\n this.startIndex = indexValue;\n }\n else {\n if (e.action === 'csEnd') {\n this.gridObj.\n selectRows(this.InnerItems(isNOU(indexValue) ? 0 : indexValue, isNOU(focIndex) ? items.length - 1 : focIndex, e));\n }\n else {\n if (isNOU(indexValue)) {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectRows(this.InnerItems(isNOU(focIndex) ? 0 : focIndex, indexValue, e));\n }\n }\n }\n }\n else {\n this.gridObj.selectionModule.selectRow(((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : items.length - 1));\n }\n };\n DetailsView.prototype.InnerItems = function (fItem, lItem, e) {\n var itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (var i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (var i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n };\n DetailsView.prototype.shiftSelectFocusItem = function (selIndex, fIndex, selRowIndexes, e) {\n var lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n var fItem = isNOU(this.startIndex) ? selIndex : selRowIndexes[0];\n if (fItem === lItem) {\n this.gridObj.selectRow(fItem);\n }\n else {\n if (fItem < lItem) {\n if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n }\n else if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n }\n this.startIndex = this.gridObj.selectedRowIndex;\n };\n DetailsView.prototype.addFocus = function (item) {\n var fItem = this.getFocusedItem();\n var itemElement = this.gridObj.getRowByIndex(item);\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS, CLS.FOCUSED]);\n }\n if (!isNOU(itemElement)) {\n this.gridObj.element.setAttribute('tabindex', '-1');\n itemElement.setAttribute('tabindex', '0');\n itemElement.focus();\n addClass([itemElement], [CLS.FOCUS, CLS.FOCUSED]);\n }\n };\n DetailsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.FOCUSED, this.element);\n };\n DetailsView.prototype.isSelected = function (selRowIndexes, focIndex) {\n var check = false;\n for (var i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftSelectedItem = function (selIndex, selRowIndexes, gridItems, e) {\n if (selIndex === -1) {\n this.gridObj.selectRow(0);\n }\n else {\n if (isNOU(this.startIndex) && e.shiftKey) {\n this.startIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectRows([selIndex, (e.action === 'shiftDown' || e.action === 'csDown') ?\n (selIndex + ((selIndex !== gridItems.length - 1) ? 1 : 0)) : (selIndex - ((selIndex !== 0) ? 1 : 0))]);\n }\n else {\n if (e.action === 'shiftDown' || e.action === 'shiftUp') {\n if (e.action === 'shiftDown' && selRowIndexes.indexOf(selIndex + 1) === -1) {\n if (selIndex !== gridItems.length - 1) {\n selRowIndexes.push(selIndex + 1);\n }\n }\n else if (e.action === 'shiftUp' && selRowIndexes.indexOf(selIndex - 1) === -1) {\n if (selIndex !== 0) {\n selRowIndexes.push(selIndex - 1);\n }\n }\n else {\n selRowIndexes.pop();\n }\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n if (e.action === 'csDown') {\n if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() + 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() + 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() + 1);\n }\n }\n else if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() - 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() - 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() - 1);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.onMethodCall = function (e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n var action = getValue('action', e);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', e));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', e));\n break;\n case 'openFile':\n this.openFile(getValue('id', e));\n break;\n case 'createFolder':\n this.interaction = false;\n break;\n case 'renameFile':\n this.interaction = false;\n this.renameFile(getValue('id', e), getValue('newName', e));\n break;\n case 'selectAll':\n this.interaction = false;\n this.onSelectAllInit();\n break;\n case 'clearSelection':\n this.interaction = false;\n this.onClearAllInit();\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.getRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var records = [];\n var hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filter = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n if (nodes.indexOf(getValue(filter, gridRecords[i])) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n else {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var name_4 = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name_4) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n };\n DetailsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < records.length; i++) {\n data[i] = records[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n // eslint-disable-next-line\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < dRecords.length; i++) {\n data[i] = dRecords[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n };\n DetailsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n updateRenamingData(this.parent, records[0]);\n if (!isNOU(name)) {\n if (hasEditAccess(this.parent.itemData[0])) {\n rename(this.parent, this.parent.path, name);\n }\n else {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n }\n else {\n doRename(this.parent);\n }\n }\n };\n return DetailsView;\n}());\nexport { DetailsView };\n","import * as index from './index';\nindex.FileManager.Inject(index.DetailsView, index.NavigationPane, index.LargeIconsView, index.Toolbar, index.ContextMenu, index.BreadCrumbBar);\nexport * from './index';\n"],"names":["updatePath","node","data","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","getPathId","pathNames","getPathNames","element","matched","getParents","i","length","ids","push","names","isId","el","parentNode","matches","CLS.LIST_ITEM","parentText","select","CLS.LIST_TEXT","textContent","classList","contains","CLS.TREE_VIEW","generatePath","parent","key","newPath","feParent","removeActive","isCut","removeBlur","selectedNodes","actionRecords","enablePaste","notify","events.hidePaste","activeElement","action","isSearchCut","activeElements","events.cutCopyInit","blurEle","activeModule","targetPath","getParentPath","getModule","addBlur","events.showPaste","activeRecords","breadcrumbbarModule","searchObj","value","isFiltered","i_1","selectedItems","nodes","add","CLS.BLUR","hover","querySelectorAll","CLS.HOVER","remove","CLS.ROW","closest","CLS.LARGE_ICON","searchWordHandler","isLayoutChange","searchWord","events.pathColumn","args","searchSettings","filterType","itemData","getPathObject","caseSensitive","ignoreCase","hiddenItems","showHiddenItems","Search","events.layoutChange","events.search","filter","isSortByClicked","files","largeiconsviewModule","items","read","updateLayout","view","layoutSelectedItems","getTargetModule","tartgetModule","CLS.ROOT","CLS.CONTROL","CLS.GRID_CONTENT","CLS.LARGE_ICONS","targetModule","refresh","hasReadAccess","events.refreshEnd","createDeniedDialog","events.permissionRead","openAction","events.openEnd","copyFiles","fileAction","cutFiles","fileType","file","CLS.FOLDER","imageFormat","audioFormat","videoFormat","knownFormat","filetype","toLowerCase","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","getImageUrl","item","imgUrl","baseUrl","ajaxSettings","url","fileName","encodeURIComponent","fPath","imgId","replace","eventArgs","fileDetails","imageUrl","Date","getTime","toString","trigger","getFullPath","filePath","getName","name","getSortedData","query","sortOrder","Query","sortBy","group","lists","DataManager","executeLocal","getObject","currFiles","feFiles","where","createEmptyElement","top","layoutElement","CLS.LAYOUT_ID","addressBarHeight","CLS.BREADCRUMBBAR_ID","offsetHeight","CLS.GRID_HEADER","querySelector","CLS.EMPTY","emptyDiv","createElement","className","emptyFolder","CLS.LARGE_EMPTY_FOLDER","emptyEle","CLS.EMPTY_CONTENT","dragFile","CLS.EMPTY_INNER_CONTENT","CLS.GRID_VIEW","appendChild","error","innerHTML","getLocaleText","eDiv","style","marginTop","getDirectories","events.isFile","setNodeId","result","rootId","dirs","len","setValue","setDateObject","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","column","substring","lastIndexOf","field","detailsViewSettings","columns","setNextPath","currfolders","folders","originalPath","root","eventName","events.finalizeEnd","events.initialEnd","openSearchFolder","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","validateSubFolder","events.pasteInit","paste","createDialog","code","message","fileExists","dropPath","dragPath","subFolder","srcData","dragNodes","tempTarget","dropHandler","dragData","dropData","oldPath","getDirectoryPath","cwd","doPasteUpdate","operation","events.dragEnd","events.cutEnd","duplicateItems","pasteNodes","count","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","events.pasteEnd","readDropPath","expandedId","events.pathDrag","navigationpaneModule","treeObj","events.dropPath","getDuplicateData","records","createVirtualDragElement","getItemName","cloneIcon","cloneName","virtualEle","ele","CLS.CLONE","badge","virtualDragElement","dragStopHandler","dragArgs","cancel","treeExpandTimer","window","clearTimeout","removeDropTarget","uploadObj","dropArea","CLS.CONTENT_ID","detach","target","events.dropInit","dragCount","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","draggingHandler","canDrop","setTimeout","events.dragging","objectToString","str","keys","Object","updateRenamingData","currentItemText","isFile","filterPath","doRename","hasEditAccess","events.permissionEdit","doDownload","hasDownloadAccess","events.permissionDownload","Download","doDeleteFiles","newIds","Delete","doDownloadFiles","getAccessClass","permission","hasContentAccess","hasUploadAccess","createNewFolder","details","events.permissionEditContents","uploadItem","eleId","CLS.UPLOAD_ID","document","click","events.permissionUpload","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","fn","type","mode","dataType","contentType","JSON","stringify","onSuccess","onFailure","beforeSend","beforeSendArgs","events.beforeRequest","Ajax","result_1","triggerAjaxFailure","parse","events.afterRequest","rootAliasName","rootName","location_1","RegExp","match","events.searchTextChange","send","events.selectionChanged","dialogObj","visible","parentElement","nextElementSibling","hide","createdItem","events.createEnd","renamedItem","pop","events.renameEndParent","events.renameEnd","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","e","replaceItems","options","getOptions","Dialog","beforeOpen","keydownAction","bind","this","dialogName","beforeClose","triggerPopupBeforeClose","header","content","buttons","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","width","open","close","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","changeOptions","extOptions","getExtOptions","isApplySame","extDialogObj","beforeExtOpen","CLS.EXTN_DIALOG_ID","dataBind","show","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","events.actionFailure","triggerPopupOpen","triggerPopupClose","duplicateContent","index","buttonModel","isPrimary","renameText","item_1","indexval","item_2","ind","retryFiles","onRetryOpen","isRetryOpened","retryDlgClose","retryDlgUpdate","splice","events.skipUpload","isKeepBoth","onKeepBothAll","onReplaceAll","retryArgs","retry","flag","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","checked","focusInput","focus","setSelectionRange","onFolderDialogOpen","createInput","oninput","onValidate","onkeyup","getKeyCode","onSubmit","onRenameDialogOpen","inputEle","onReSubmit","onFocusRenameInput","txt","showFileExtension","placeholder","Input","properties","formattedString","strArr","location","multipleFiles","onDeleteSubmit","Internationalization","formatDate","modified","format","CLS.VALUE","size","map","val","substr","every","arr","toLocaleUpperCase","CLS.ERROR_CONTENT","preventKeydown","selectAll","dlgName","btnElement","btnCount","onkeydown","keyCode","preventDefault","onSubmitValidate","oIndex","renamedId","oldExtension","nIndex","newExtension","events.deleteInit","test","addInvalid","which","charCode","createImageDialog","image","src","alt","viewerObj","height","enableResize","position","X","Y","openImage","resizing","updateImage","resizeStop","CLS.IMG_DIALOG_ID","imgWrap","cssObj","getComputedStyle","paddingWidth","parseFloat","paddingRight","paddingHeight","paddingBottom","offsetWidth","__extends","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","AjaxSettings","_super","apply","Property","ChildProperty","toolbarItems","ToolbarSettings","SearchSettings","columnArray","headerText","minWidth","template","customAttributes","class","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","LAYOUT_ID","GRID_ID","LARGEICON_ID","DIALOG_ID","IMG_DIALOG_ID","EXTN_DIALOG_ID","CONTENT_ID","BREADCRUMBBAR_ID","UPLOAD_ID","ROOT","CONTROL","ROOT_POPUP","MOB_POPUP","FILTER","LARGE_ICONS","LIST_ITEM","LIST_TEXT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","ACTIVE","HOVER","FOCUS","CHECK","CB_WRAP","ROW","EMPTY","EMPTY_CONTENT","EMPTY_INNER_CONTENT","CLONE","DROP_FOLDER","DROP_FILE","FOLDER","ICON_IMAGE","ICON_MUSIC","ICON_VIDEO","LARGE_ICON","LARGE_EMPTY_FOLDER","GRID_HEADER","TREE_VIEW","MENU_ICON","GRID_VIEW","GRID_CONTENT","ICON_CUT","ICON_GRID","ICON_LARGE","ERROR_CONTENT","RTL","DISPLAY_NONE","VALUE","modelChanged","initialEnd","finalizeEnd","createEnd","pathDrag","deleteInit","deleteEnd","refreshEnd","resizeEnd","pathChanged","destroy","beforeRequest","skipUpload","afterRequest","actionFailure","search","openInit","openEnd","selectionChanged","clearPathInit","layoutChange","sortByChange","detailsInit","menuItemData","renameInit","renameEndParent","renameEnd","showPaste","hidePaste","cutCopyInit","pasteInit","pasteEnd","cutEnd","sortColumn","pathColumn","searchTextChange","dropInit","dragEnd","dragging","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","LargeIconsView","isInteraction","uploadOperation","isRendered","tapCount","isPasteOperation","CLS.LARGEICON_ID","addClass","addEventListener","keyConfigs","end","home","tab","moveDown","moveLeft","moveRight","moveUp","ctrlEnd","ctrlHome","ctrlDown","ctrlLeft","ctrlRight","ctrlUp","shiftEnd","shiftHome","shiftDown","shiftLeft","shiftRight","shiftUp","csEnd","csHome","csDown","csLeft","csRight","csUp","space","ctrlSpace","shiftSpace","csSpace","ctrlA","enter","altEnter","esc","del","ctrlX","isMac","ctrlC","ctrlV","f2","shiftdel","back","ctrlD","render","visitedItem","startItem","showSpinner","resetMultiSelect","setAttribute","listObj","unWireEvents","removeEventListener","iconsView","ul","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","htmlAttributes","itemCreated","onItemCreated","renderList","listElements","ListBase","createListFromJson","itemList","slice","call","preventImgDrag","createDragObj","CLS.DISPLAY_NONE","emptyList","selectItems","activeEle","CLS.ACTIVE","adjustHeight","maxHeight","getItemCount","wireEvents","hideSpinner","checkItem","ondragstart","_this","Draggable","enableTailMode","distance","enableAutoScroll","dragTarget","helper","dragHelper","cursorAt","dragCursorPosition","dragArea","dragStop","drag","clone","dragStart","sender","dragLi","setFocus","getItemObject","onDropInit","getModuleName","dropLi","cwdData","info","pane","bar","removeAttribute","curData","textEle","renderCheckbox","allowMultiSelection","checkElement","createCheckBox","firstElementChild","insertBefore","childNodes","onLayoutChange","indexes","getIndexes","length_1","checkEle","checkLength","checkState","icon","name_1","selected","showThumbnail","title","onFinalizeEnd","onCreateEnd","clearSelect","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","addSelection","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","getFirstItem","lastItem","getLastItem","eveArgs","ctrlKey","shiftKey","doSelection","onClearAllInit","clearSelection","onBeforeRequest","onAfterRequest","onSearch","onLayoutRefresh","onUpdateSelectionData","onPathColumn","isDestroyed","off","events.pathChanged","events.openInit","events.modelChanged","onPropertyChanged","events.methodCall","onMethodCall","onActionFailure","events.renameInit","events.menuItemData","onMenuItemData","splitterResizeHandler","events.resizeEnd","resizeHandler","onpasteInit","onpasteEnd","oncutCopyInit","events.detailsInit","onDetailsInit","onDropPath","on","currentSelected","_i","_a","newProp","wireClickEvent","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","keyboardDownModule","keydownActionHandler","EventHandler","onMouseOver","targetEle","toBind","proxy_1","clickObj","Touch","tap","eve","originalEvent","isDevice","tapEvent","doTapAction","dblClickHandler","clickHandler","tapHold","multiSelect","updateType","cList","CLS.CHECK","triggerSelection","startIndex","endIndex","addActive","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","folder","fItem","getFocusedItem","firstItem","navigateItem","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","isVisible","liParent","liScrPos","scrollTop","getCurFocusedItem","dItem","lItem","rItem","uItem","getDataName","preItem","toCheck","CLS.CB_WRAP","eles","getBoundingClientRect","visitedData","j","byId","resultData","newData","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","isFilter","filterName","name_2","BreadCrumbBar","addressPath","addressBarLink","searchTimer","searchWrapWidth","prop","isNullOrUndefined","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","innerText","ulElement","breadCrumbBarNavigation","subMenuObj","searchWrap","updateBreadCrumbBar","addresBarUL","liElements","pRight","getPropertyValue","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","diff","liElement","utext","subMenuLi","attributes","subMenuSpan","DropDownButton","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","nodeName","children","currentPath","triggerFileOpen","treeNodeId","CLS.FILTER","list","liElementId","link","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onResize","onPasteEnd","events.destroy","onSearchTextChange","liEle","ContextMenu","currentItems","currentElement","disabledItems","downarrow","uparrow","contextMenu","Menu","onBeforeItemRender","onSelect","onBeforeOpen","onBeforeClose","getMenuId","iconSpan","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","menuTarget","uid","treeFolder","targetNodeElement","activeNode","getElementsByClassName","targetElement","getTargetView","updateActiveModule","setLayoutItem","detailsviewModule","gridObj","getRowObjectFromUID","selectRows","parseInt","setFileItem","setFolderItem","pasteEle","isSubMenu","getMenuItemData","menuModule","menuType","menuOpenArgs","enableItems","CLS.GRID_ID","getItemIndex","itemId","disableItem","concat","enable","isUniqueId","checkValidItem","isTree","getItemData","contextMenuSettings","trim","layout","nameEle","menuClickArgs","sItems","openFileOnContextMenuClick","separator","CLS.ICON_CUT","CLS.TB_OPTION_DOT","CLS.TB_OPTION_TICK","defaultLocale","NewFolder","Upload","Rename","Cut","Copy","Paste","SortBy","Refresh","Item-Selection","Items-Selection","View","Details","SelectAll","Open","Tooltip-NewFolder","Tooltip-Upload","Tooltip-Delete","Tooltip-Rename","Tooltip-Download","Tooltip-Cut","Tooltip-Copy","Tooltip-Paste","Tooltip-SortBy","Tooltip-Refresh","Tooltip-Selection","Tooltip-View","Tooltip-Details","Tooltip-SelectAll","Name","Size","DateModified","DateCreated","Path","Modified","Created","Location","Type","Permission","Ascending","Descending","None","View-LargeIcons","View-Details","Button-Ok","Button-Cancel","Button-Yes","Button-No","Button-Create","Button-Save","Header-NewFolder","Content-NewFolder","Header-Rename","Content-Rename","Header-Rename-Confirmation","Content-Rename-Confirmation","Header-Delete","Content-Delete","Header-Folder-Delete","Content-Folder-Delete","Header-Multiple-Delete","Content-Multiple-Delete","Header-Duplicate","Content-Duplicate","Header-Upload","Error","Validation-Empty","Validation-Invalid","Validation-NewFolder-Exists","Validation-Rename-Exists","Folder-Empty","File-Upload","Search-Empty","Search-Key","Filter-Empty","Filter-Key","Sub-Folder-Error","Same-Folder-Error","Access-Denied","Access-Details","Header-Retry","Content-Retry","Button-Keep-Both","Button-Replace","Button-Skip","ApplyAll-Label","KB","Access-Message","Network-Error","Server-Error","FileManager","previousPath","nextPath","deleteRecords","isSameAction","persistData","isOpened","left","uploadingCount","uploadedCount","FileManager_1","Inject","preRender","getUniqueID","ensurePath","setAttr","formatUnit","Browser","checkMobile","navigationPaneSettings","isBigger","createSpinner","addWrapper","altN","f5","ctrlShift1","ctrlShift2","ctrlU","L10n","getPersistData","keyEntity","addOnPersist","requiredModules","modules","member","toolbarSettings","initialize","slItems","fileView","navigator","platform","toUpperCase","setRtl","addEventListeners","splitterObj","collapse","renderComplete","addCssClass","renderFileUpload","headerWrap","layoutWrap","navigationWrap","treeWrap","contentWrap","gridWrap","largeiconWrap","role","overlay","paneSettings","min","max","maxWidth","Splitter","splitterResize","dialogWrap","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","toolbar","toolBarHeight","clientHeight","splitterAdjust","expand","oldOne","newOne","onContextMenu","userAgent","uploadEle","uploadDialogObj","onOpen","onClose","renderUploadBox","uploadUrl","Uploader","asyncSettings","saveUrl","removeUrl","uploading","onUploading","removing","onRemoving","canceling","onCancel","clearing","onClearing","onSelected","success","onUploadSuccess","failure","onUploadFailure","autoUpload","uploadSettings","minFileSize","maxFileSize","allowedExtensions","fileListRendering","onFileListRender","updateUploader","clearAll","fileData","customFormData","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","autoClose","response","statusText","onInitialEnd","removeEventListeners","setPath","oldProp","ajaxSettingSetModel","localeSetModelOption","refreshing","CLS.RTL","disableToolbarItems","toolbarModule","enableToolbarItems","disableMenuItems","contextmenuModule","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","rtl","Complex","Event","NotifyPropertyChanges","Component","Toolbar","default","single","multiple","selection","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","created","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","tool","toolbarClickArgs","getPupupId","buttonObj","layoutBtnObj","hideItems","hideStatus","updateSortByButton","itemCount","itemTooltip","spanElement","tooltipText","prefixIcon","showTextOn","suffixIcon","overflow","align","onSelectionChanged","reRenderToolbar","undefined","hideItem","tools","toHide","refreshOverflow","isEnable","NavigationPane","removeNodes","moveNames","expandTree","isDrag","isPathDragged","isRenameParent","isRightClick","renameParent","previousSelected","isNodeClickCalled","restrictSelecting","ctrlShiftN","shiftF10","onInit","rootData","attr","BaseTreeView","dataSource","parentID","expanded","hasChildren","tooltip","nodeSelecting","onNodeSelecting","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","allowEditing","nodeEditing","onNodeEditing","drawNode","onDrowNode","dataBound","addDragDrop","getTreeData","getDragPath","getDropPath","nodeData","addChild","prevent","directories","_fm_icon","addNodes","expandNodeTarget","onPathDrag","selectResultNode","onNodeExpanded","innerHtml","sNode","updateTree","updateTreeNode","toExpand","expandedNodes","removeChildNodes","childs","onOpenEnd","sleId","expandAll","updateItemData","updateActionData","selcetedEle","selectedNodeEle","onRenameEndParent","nData","id_1","onDownLoadInit","onClearPathInit","onDragEnd","getMoveNames","previousName","onCutEnd","resultObj","itemname","checkDropPath","obj","onDragging","dataobj","level","keyDown","DetailsView","interaction","isColumnRefresh","firstItemIndex","isSelectionUpdate","currentSelectedItem","isLoaded","isNameWidth","Grid","Resize","Sort","VirtualScroll","checkNameWidth","getColumns","sortSettings","direction","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","beforeCopy","load","focusModule","emptyArgs","initialColumn","adjustWidth","fieldName","nameWidth","headerTextAlign","iWidth","headerTemplate","unshift","cWidth","cBox","disableHtmlEncode","gridHeader","renderCheckBox","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","intl","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","selectRecords","currentViewData","getRowHeight","hdTable","getHeaderContent","paddingLeft","borderRightWidth","cnTable","getContent","overflowY","checkEmptyDiv","gridRecords","getCurrentViewRecords","sRecords","selectedRowIndex","rData","onSortColumn","sortModule","onDetailsResize","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","selectionModule","selectRowsByRange","getRows","selectRow","removeSelection","onPasteInit","onDetailsResizeHandler","getRowInfo","dragRow","getSelectedRows","gridHeaderColGroup","firstChild","gridContentColGroup","gridHeaderColNames","selectedRecords","getRowByIndex","lastItemIndex","gridSelectNodes","selectSize","record","name_3","keyupHandler","keydownHandler","removeFocus","getFocusedItemIndex","gridItems","gridLength","focIndex","selIndex","selRowIndeces","crtSrlPos","crtFocusIndex","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","isSelected","shiftSelectedItem","shiftSelectFocusItem","nextIndex","indexValue","checkAllRows","InnerItems","itemArr","fIndex","selRowIndexes","itemElement","check","getRecords","hasFilter","name_4","dRecords","index.FileManager","index.DetailsView","index.NavigationPane","index.LargeIconsView","index.Toolbar","index.ContextMenu","index.BreadCrumbBar"],"mappings":"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"}