@syncfusion/ej2-filemanager 20.3.47 → 20.3.49
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.
- package/CHANGELOG.md +8 -0
- package/dist/ej2-filemanager.min.js +2 -2
- package/dist/ej2-filemanager.umd.min.js +2 -2
- package/dist/ej2-filemanager.umd.min.js.map +1 -1
- package/dist/es6/ej2-filemanager.es2015.js +20 -2
- package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
- package/dist/es6/ej2-filemanager.es5.js +20 -2
- package/dist/es6/ej2-filemanager.es5.js.map +1 -1
- package/dist/global/ej2-filemanager.min.js +2 -2
- package/dist/global/ej2-filemanager.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +12 -12
- package/src/file-manager/layout/details-view.d.ts +2 -0
- package/src/file-manager/layout/details-view.js +20 -2
@@ -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.oldView === 'Details') ? parent.detailsviewModule.gridObj.dataSource : 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.oldView = 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=' + encodeURIComponent(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 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 if (!node) {\n var liElement = document.querySelector('[data-id = \"' + getValue('id', parent.dropData) + '\"]');\n pathId = liElement.getAttribute(\"data-uid\");\n node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n }\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 parent.setProperties({ path: parent.oldPath }, true);\n parent.pathNames.pop();\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 var index_1;\n options.dialogName = 'File Details';\n strArr = parent.itemData.map(function (val) {\n index_1 = val.name.indexOf('.') + 1;\n return (index_1 === 0 && (!val.isFile)) ? 'Folder' : ((index_1 !== 0) ? val.name.substr(index_1).replace(' ', '') : 'undetermined');\n });\n if (strArr[0] == undefined) {\n strArr = details.name.split(',').map(function (val) {\n index_1 = val.indexOf('.') + 1;\n return (index_1 === 0) ? 'Folder' : val.substr(index_1).replace(' ', '');\n });\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(false)\n ], UploadSettings.prototype, \"directoryUpload\", 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 _this.parent.oldPath = _this.parent.path;\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('data-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 directoryUpload: this.uploadSettings.directoryUpload,\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.directoryUpload = this.uploadSettings.directoryUpload;\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 }, { 'filename': args.fileData.name }];\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 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 /* 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 = (!isNOU(sNode)) ? select('.' + CLS.LIST_PARENT, sNode) : null;\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 if (this.parent.uploadObj.directoryUpload)\n this.updateTree(args);\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 _this.parent.oldPath = _this.parent.path;\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('data-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","oldView","detailsviewModule","gridObj","dataSource","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","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","document","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","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","pop","dialogObj","visible","parentElement","nextElementSibling","hide","createdItem","events.createEnd","renamedItem","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","index_1","undefined","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","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","directoryUpload","fileListRendering","onFileListRender","updateUploader","clearAll","fileData","customFormData","filename","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","hideItem","tools","toHide","refreshOverflow","isEnable","NavigationPane","removeNodes","moveNames","expandTree","isDrag","isPathDragged","isRenameParent","isRightClick","renameParent","previousSelected","isNodeClickCalled","restrictSelecting","ctrlShiftN","shiftF10","onInit","rootData","attr","BaseTreeView","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.oldView === 'Details') ? parent.detailsviewModule.gridObj.dataSource : 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.oldView = 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=' + encodeURIComponent(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 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 if (!node) {\n var liElement = document.querySelector('[data-id = \"' + getValue('id', parent.dropData) + '\"]');\n pathId = liElement.getAttribute(\"data-uid\");\n node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n }\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 parent.setProperties({ path: parent.oldPath }, true);\n parent.pathNames.pop();\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 var index_1;\n options.dialogName = 'File Details';\n strArr = parent.itemData.map(function (val) {\n index_1 = val.name.indexOf('.') + 1;\n return (index_1 === 0 && (!val.isFile)) ? 'Folder' : ((index_1 !== 0) ? val.name.substr(index_1).replace(' ', '') : 'undetermined');\n });\n if (strArr[0] == undefined) {\n strArr = details.name.split(',').map(function (val) {\n index_1 = val.indexOf('.') + 1;\n return (index_1 === 0) ? 'Folder' : val.substr(index_1).replace(' ', '');\n });\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(false)\n ], UploadSettings.prototype, \"directoryUpload\", 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 _this.parent.oldPath = _this.parent.path;\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('data-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 directoryUpload: this.uploadSettings.directoryUpload,\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.directoryUpload = this.uploadSettings.directoryUpload;\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 }, { 'filename': args.fileData.name }];\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 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 /* 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 = (!isNOU(sNode)) ? select('.' + CLS.LIST_PARENT, sNode) : null;\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 if (this.parent.uploadObj.directoryUpload)\n this.updateTree(args);\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 /* istanbul ignore next */\n // eslint:disable-next-line\n this.actionDivert = 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 _this.parent.oldPath = _this.parent.path;\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('data-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 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 if (!this.actionDivert) {\n this.addHeaderFocus();\n this.actionDivert = true;\n }\n else {\n this.addFocus(0);\n this.actionDivert = false;\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.addHeaderFocus = function () {\n var treeFocus = select('.e-row', this.element);\n this.gridObj.element.setAttribute('tabindex', '-1');\n var nameFocus = select('th.e-fe-grid-name', this.element);\n nameFocus.setAttribute('tabindex', '0');\n nameFocus.focus();\n addClass([nameFocus], [CLS.FOCUS, CLS.FOCUSED]);\n treeFocus.setAttribute('tabindex', '0');\n if (treeFocus.tabIndex === 0 && nameFocus.tabIndex === 0) {\n removeClass([treeFocus], [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","oldView","detailsviewModule","gridObj","dataSource","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","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","document","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","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","pop","dialogObj","visible","parentElement","nextElementSibling","hide","createdItem","events.createEnd","renamedItem","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","index_1","undefined","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","FOCUSED","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","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","directoryUpload","fileListRendering","onFileListRender","updateUploader","clearAll","fileData","customFormData","filename","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","hideItem","tools","toHide","refreshOverflow","isEnable","NavigationPane","removeNodes","moveNames","expandTree","isDrag","isPathDragged","isRenameParent","isRightClick","renameParent","previousSelected","isNodeClickCalled","restrictSelecting","ctrlShiftN","shiftF10","onInit","rootData","attr","BaseTreeView","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","actionDivert","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","addHeaderFocus","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","isSelected","shiftSelectedItem","shiftSelectFocusItem","nextIndex","indexValue","checkAllRows","InnerItems","itemArr","fIndex","selRowIndexes","itemElement","CLS.FOCUSED","treeFocus","nameFocus","tabIndex","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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"}
|