@syncfusion/ej2-filemanager 23.2.6 → 24.1.43
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 +74 -120
- 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 +45 -5
- package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
- package/dist/es6/ej2-filemanager.es5.js +45 -5
- 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 +16 -16
- package/src/file-manager/common/utility.d.ts +12 -0
- package/src/file-manager/common/utility.js +31 -0
- package/src/file-manager/layout/details-view.js +1 -1
- package/src/file-manager/layout/large-icons-view.js +3 -1
- package/src/file-manager/layout/navigation-pane.js +2 -3
- package/src/file-manager/pop-up/context-menu.d.ts +1 -0
- package/src/file-manager/pop-up/context-menu.js +8 -0
- package/styles/bootstrap-dark.css +1 -1
- package/styles/bootstrap.css +1 -1
- package/styles/bootstrap4.css +1 -1
- package/styles/bootstrap5-dark.css +1 -1
- package/styles/bootstrap5.css +1 -1
- package/styles/fabric-dark.css +1 -1
- package/styles/fabric.css +1 -1
- package/styles/file-manager/_bootstrap-dark-definition.scss +1 -1
- package/styles/file-manager/_bootstrap-definition.scss +1 -1
- package/styles/file-manager/_bootstrap4-definition.scss +1 -1
- package/styles/file-manager/_bootstrap5-definition.scss +1 -1
- package/styles/file-manager/_fabric-dark-definition.scss +1 -1
- package/styles/file-manager/_fabric-definition.scss +1 -1
- package/styles/file-manager/_fluent-definition.scss +1 -1
- package/styles/file-manager/_fusionnew-definition.scss +1 -1
- package/styles/file-manager/_highcontrast-definition.scss +1 -1
- package/styles/file-manager/_highcontrast-light-definition.scss +1 -1
- package/styles/file-manager/_layout.scss +5 -3
- package/styles/file-manager/_material-dark-definition.scss +1 -1
- package/styles/file-manager/_material-definition.scss +1 -1
- package/styles/file-manager/_material3-definition.scss +6 -6
- package/styles/file-manager/_tailwind-definition.scss +1 -1
- package/styles/file-manager/bootstrap-dark.css +1 -1
- package/styles/file-manager/bootstrap.css +1 -1
- package/styles/file-manager/bootstrap4.css +1 -1
- package/styles/file-manager/bootstrap5-dark.css +1 -1
- package/styles/file-manager/bootstrap5.css +1 -1
- package/styles/file-manager/fabric-dark.css +1 -1
- package/styles/file-manager/fabric.css +1 -1
- package/styles/file-manager/fluent-dark.css +1 -1
- package/styles/file-manager/fluent.css +1 -1
- package/styles/file-manager/highcontrast-light.css +1 -1
- package/styles/file-manager/highcontrast.css +1 -1
- package/styles/file-manager/material-dark.css +1 -1
- package/styles/file-manager/material.css +1 -1
- package/styles/file-manager/material3-dark.css +5 -6
- package/styles/file-manager/material3.css +5 -6
- package/styles/file-manager/tailwind-dark.css +1 -1
- package/styles/file-manager/tailwind.css +1 -1
- package/styles/fluent-dark.css +1 -1
- package/styles/fluent.css +1 -1
- package/styles/highcontrast-light.css +1 -1
- package/styles/highcontrast.css +1 -1
- package/styles/material-dark.css +1 -1
- package/styles/material.css +1 -1
- package/styles/material3-dark.css +5 -6
- package/styles/material3.css +5 -6
- package/styles/tailwind-dark.css +1 -1
- package/styles/tailwind.css +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ej2-filemanager.umd.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/actions/virtualization.js","../src/file-manager/layout/navigation-pane.js","../src/file-manager/layout/details-view.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, isNullOrUndefined } 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.allItems });\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 pathUrl = (baseUrl.indexOf('?') !== -1) ? '&path=' : '?path=';\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 + pathUrl + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + pathUrl + encodeURIComponent(fPath.replace(/\\\\/g, '/')) + fileName;\n }\n else {\n imgUrl = baseUrl + pathUrl + 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, localeString, dateFormat) {\n for (var i = 0; i < args.length; i++) {\n var createdDate = new Date(getValue('dateCreated', args[i]));\n var modifiedDate = new Date(getValue('dateModified', args[i]));\n if (isNOU(dateFormat)) {\n dateFormat = \"MM/dd/yyyy\";\n }\n setValue('_fm_created', localeString.formatDate(createdDate, { format: dateFormat }), args[i]);\n setValue('_fm_modified', localeString.formatDate(modifiedDate, { format: dateFormat }), args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nexport function getLocaleText(parent, text) {\n var locale = parent.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n}\n/**\n * get the CSS class\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} css - specifies the css.\n * @returns {string} - returns the css classes.\n * @private\n */\nexport function getCssClass(parent, css) {\n var cssClass = parent.cssClass;\n cssClass = (isNOU(cssClass) || cssClass === '') ? css : (cssClass + ' ' + css);\n return cssClass;\n}\n/**\n * sort on click\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {MenuEventArgs} args - specifies the menu event arguements.\n * @returns {void}\n * @private\n */\nexport function sortbyClickHandler(parent, args) {\n var tick;\n parent.isSortByClicked = true;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id, parent);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(events.sortColumn, { module: 'detailsview' });\n parent.isSortByClicked = false;\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(events.sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @returns {string} - returns the sorted fields\n * @private\n */\nexport function getSortField(id, parent) {\n var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n var column;\n if (parent) {\n column = parent.detailsViewSettings.columns;\n }\n switch (text) {\n case 'date':\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[i].field === 'dateModified' || column[i].field === 'dateCreated') {\n field = column[i].field;\n break;\n }\n else {\n field = '_fm_modified';\n }\n }\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function setNextPath(parent, path) {\n var currfolders = path.split('/');\n var folders = parent.originalPath.split('/');\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n for (var i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n var eventName = (folders[i + 1] === '') ? events.finalizeEnd : events.initialEnd;\n var newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n // eslint-disable-next-line\n var data = getObject(parent, key, folders[i]);\n var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n parent.pathId.push(id);\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n read(parent, eventName, parent.path);\n break;\n }\n}\n/**\n * Opens the searched folder\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function openSearchFolder(parent, data) {\n parent.originalPath = getFullPath(parent, data, parent.path);\n var root = getValue(parent.pathId[0], parent.feParent);\n var isRoot = getValue('_fm_id', parent.itemData[0]) == 'fe_tree';\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n var searchData = getObject(parent, key, getValue('name', data));\n if (isNullOrUndefined(searchData)) {\n if (!isRoot) {\n parent.notify(events.clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n }\n else {\n setNextPath(parent, parent.path);\n return;\n }\n }\n else {\n var id = getValue('_fm_id', searchData);\n parent.setProperties({ path: parent.originalPath }, true);\n parent.pathId.push(id);\n parent.itemData = [searchData];\n parent.pathNames.push(getValue('name', searchData));\n }\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, Internationalization } 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, 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, showFileExtension: parent.showFileExtension\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 getDateFormat(parent) {\n var columns = parent.detailsViewSettings.columns;\n var dateFormat;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === '_fm_modified') {\n if (!isNOU(columns[i].format)) {\n dateFormat = columns[i].format.toString();\n }\n break;\n }\n }\n return dateFormat;\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 var intl = new Internationalization(parent.locale);\n if (!isNOU(result.files)) {\n setDateObject(result.files, intl, getDateFormat(parent));\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' || event === 'drop-path')) {\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 = Array.isArray(result.files) ? result.files[0] : result.files;\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, getValue('filterPath', parent.renamedItem).replace(/\\\\/g, '/'));\n parent.itemData[0] = parent.renamedItem;\n read(parent, events.pathChanged, parent.path === '/' ? parent.path : getValue('filterPath', parent.renamedItem).replace(/\\\\/g, '/') + parent.renamedItem.name + '/');\n if (getValue('filterPath', parent.renamedItem) === getValue('filterPath', parent.itemData[0]) && parent.pathNames.length > 1) {\n parent.pathNames[parent.pathNames.length - 1] = parent.renameText;\n }\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, objectToString, getCssClass } from '../common/utility';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\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/**\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 */\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/**\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') ? getValue('filterPath', parent.itemData[0]).replace(/\\\\/g, '/') : 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 || (ele.value.lastIndexOf('.') === -1 || ele.value.substring(ele.value.indexOf('.') + 1).length === 0))) {\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 defaultToolbarItems = ['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(defaultToolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\nvar ToolbarItem = /** @class */ (function (_super) {\n __extends(ToolbarItem, _super);\n function ToolbarItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], ToolbarItem.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], ToolbarItem.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], ToolbarItem.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], ToolbarItem.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ToolbarItem.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], ToolbarItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], ToolbarItem.prototype, \"align\", void 0);\n __decorate([\n Property(-1)\n ], ToolbarItem.prototype, \"tabIndex\", void 0);\n __decorate([\n Property()\n ], ToolbarItem.prototype, \"name\", void 0);\n return ToolbarItem;\n}(ChildProperty));\nexport { ToolbarItem };\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, initializeCSPTemplate } 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, isPrimaryKey: true,\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-text\\\">\" + data.name + \"</span>\";\n }),\n 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',\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-size\\\">\" + data.size + \"</span>\";\n }), format: 'n2'\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 __decorate([\n Property(false)\n ], Column.prototype, \"isPrimaryKey\", 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.isSelectAllCalled = false;\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 = this.allItems = getSortedData(this.parent, this.items);\n iconsView.classList.remove(CLS.DISPLAY_NONE);\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n if (!this.element.style.height) {\n this.adjustHeight();\n }\n this.parent.virtualizationModule.setUIVirtualization();\n }\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 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 if (this.parent.enableVirtualization && this.allItems.length > 0) {\n this.parent.virtualizationModule.setUlElementHeight();\n this.parent.virtualizationModule.wireScrollEvent(false);\n }\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.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.showItemCheckBoxes) {\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 if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\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 this.parent.activeModule = 'largeiconsview';\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 this.startItem = null;\n this.listElements = null;\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 if (e.ctrlKey && e.shiftKey) {\n this.isSelectAllCalled = true;\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 if (this.parent.selectedItems.length === this.itemList.length) {\n this.isSelectAllCalled = true;\n }\n this.clearSelection();\n }\n if (!isNOU(item)) {\n this.isSelectAllCalled = false;\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 var _this = this;\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 if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTo(0, this.element.firstElementChild.scrollHeight);\n setTimeout(function () {\n _this.navigateItem(_this.itemList[_this.itemList.length - 1]);\n }, 10);\n }\n else {\n this.navigateItem(lastItem);\n }\n break;\n case 'home':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTop = 0;\n setTimeout(function () {\n _this.navigateItem(_this.itemList[0]);\n }, 10);\n }\n else {\n this.navigateItem(firstItem);\n }\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 (this.parent.enableVirtualization && isNOU(nextItem)) {\n var marginValue = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-bottom'), 10);\n var scrollHeight = this.itemList[0].getBoundingClientRect().height + marginValue;\n this.element.firstElementChild.scrollTo(this.element.firstElementChild.scrollTop, this.element.firstElementChild.scrollTop + scrollHeight);\n }\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.showItemCheckBoxes) {\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 = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n }\n else {\n data[0] = this.getItemObject(item);\n }\n var eventArgs = {\n action: action, fileDetails: data.length > 1 ? data : data[0], isInteracted: this.isInteraction, cancel: false, target: this.isSelectAllCalled ? null : 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 = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n this.isSelectAllCalled = false;\n }\n else {\n data[0] = this.getItemObject(item);\n }\n this.parent.visitedData = data.length > 1 ? data[data.length - 1] : data[0];\n var eventArgs = { action: action, fileDetails: data.length > 1 ? data : data[0], 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') + ' ' + getLocaleText(this.parent, args.cwd.name.toString());\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 if (this.parent.enableVirtualization && (target.classList.contains('e-virtual-bottom') || target.classList.contains('e-virtualtable'))) {\n target = target.parentElement.closest(\"div\");\n }\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 var selectedTreeNode = select('[data-uid=\"' + this.parent.navigationpaneModule.treeObj.selectedNodes[0] + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {\n this.disabledItems.push('Open');\n }\n }\n else if (this.parent.selectedItems.length !== 1 && this.parent.activeModule !== 'navigationpane') {\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 && _this.parent.activeModule !== 'navigationpane') {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n else if (_this.parent.activeModule === 'navigationpane') {\n if (_this.parent.visitedItem) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\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 _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\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 this.targetElement = null;\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, Collection } 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 { ToolbarItem } 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 if (this.enableVirtualization) {\n modules.push({\n member: 'virtualization',\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 if (this.toolbarSettings.items.indexOf('Upload') != -1) {\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n }\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 case 'toolbarItems':\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 this.breadCrumbBarNavigation = null;\n this.activeElements = null;\n this.virtualDragElement = null;\n this.visitedItem = null;\n _super.prototype.destroy.call(this);\n this.virtualizationModule = null;\n this.navigationpaneModule = null;\n this.toolbarModule = null;\n this.contextmenuModule = null;\n this.largeiconsviewModule = null;\n this.detailsviewModule = null;\n this.breadcrumbbarModule = null;\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) && this.toolbarModule) {\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) && this.toolbarModule) {\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 Property(true)\n ], FileManager.prototype, \"showItemCheckBoxes\", 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(false)\n ], FileManager.prototype, \"enableVirtualization\", 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 Collection([], ToolbarItem)\n ], FileManager.prototype, \"toolbarItems\", 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","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { 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.root = _this.parent.root ? _this.parent.root : _this.parent;\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 if (this.parent.toolbarItems.length > 0) {\n currItems = this.parent.toolbarItems.map(function (item) { return item.name; });\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 if (this.parent.portals && this.toolbarObj.portals) {\n this.parent.portals = this.parent.portals.concat(this.toolbarObj.portals);\n this.parent['renderReactTemplates']();\n }\n var btnElement = selectAll('.e-btn', this.toolbarObj.element);\n var _loop_1 = function (btnCount) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n this.parent.refreshLayout();\n };\n Toolbar.prototype.updateSortByButton = function () {\n if (this.buttonObj) {\n var items = this.buttonObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n if (this.parent.sortBy === 'dateModified' || this.parent.sortBy === 'dateCreated') {\n items[itemCount].iconCss = this.parent.sortBy === this.parent.sortBy ? CLS.TB_OPTION_DOT : '';\n }\n else {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.getPupupId = function (id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n };\n Toolbar.prototype.layoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (args.item.id === this.getPupupId('large')) {\n updateLayout(this.parent, 'LargeIcons');\n }\n }\n else {\n if (args.item.id === this.getPupupId('details')) {\n updateLayout(this.parent, 'Details');\n }\n }\n };\n Toolbar.prototype.toolbarItemData = function (data) {\n var items = [];\n var mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var propItem = void 0;\n if (this.parent.toolbarItems.length > 0) {\n propItem = this.getItemModel(this.parent.toolbarItems[parseInt(i.toString(), 10)]);\n }\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 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 var spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\n if (propItem && propItem.text) {\n spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + propItem.text + '</span>';\n }\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 }\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 var viewText = void 0;\n if (propItem && propItem.text) {\n viewText = propItem.text;\n }\n else {\n viewText = getLocaleText(this.parent, 'View');\n }\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 viewText + '></button>'\n };\n break;\n }\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, template: '' };\n break;\n }\n if (this.parent.toolbarItems.length > 0 && propItem) {\n var mergedItems = __assign({}, item, propItem);\n items.push(mergedItems);\n }\n else {\n items.push(item);\n }\n }\n return items;\n };\n Toolbar.prototype.getItemModel = function (propItem) {\n var item = {};\n if (propItem.id) {\n item.id = propItem.id;\n }\n if (propItem.text) {\n item.text = propItem.text;\n }\n if (propItem.tooltipText) {\n item.tooltipText = propItem.tooltipText;\n }\n if (propItem.prefixIcon) {\n item.prefixIcon = propItem.prefixIcon;\n }\n if (propItem.cssClass) {\n item.cssClass = propItem.cssClass;\n }\n if (propItem.showTextOn !== 'Both') {\n item.showTextOn = propItem.showTextOn;\n }\n if (propItem.template) {\n item.template = propItem.template;\n }\n if (propItem.disabled) {\n item.disabled = propItem.disabled;\n }\n if (propItem.width !== 'auto') {\n item.width = propItem.width;\n }\n if (propItem.suffixIcon) {\n item.suffixIcon = propItem.suffixIcon;\n }\n if (propItem.align !== 'Left') {\n item.align = propItem.align;\n }\n if (propItem.overflow !== 'None') {\n item.overflow = propItem.overflow;\n }\n if (propItem.htmlAttributes) {\n item.htmlAttributes = propItem.htmlAttributes;\n }\n if (propItem.type !== 'Button') {\n item.type = propItem.type;\n }\n if (propItem.visible !== true) {\n item.visible = propItem.visible;\n }\n if (propItem.showAlwaysInPopup) {\n item.showAlwaysInPopup = propItem.showAlwaysInPopup;\n }\n if (propItem.tabIndex !== -1) {\n item.tabIndex = propItem.tabIndex;\n }\n return item;\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 var itemsToProcess = [];\n if (this.parent.toolbarItems.length > 0) {\n itemsToProcess = this.parent.toolbarItems.map(function (item) {\n return item.name;\n });\n }\n else if (e.newProp.toolbarSettings.items !== undefined) {\n itemsToProcess = e.newProp.toolbarSettings.items.map(function (item) {\n return item.trim();\n });\n }\n if (itemsToProcess.length > 0) {\n this.items = this.toolbarItemData(this.getItems(itemsToProcess));\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 && !this.parent.enableVirtualization) {\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 case 'toolbarItems':\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 { EventHandler, isNullOrUndefined, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, selectAll } from '@syncfusion/ej2-base';\nimport * as CLS from '../base/classes';\nvar Virtualization = /** @class */ (function () {\n function Virtualization(instance) {\n this.filemanagerInstance = instance;\n this.largeIconInstance = instance.largeiconsviewModule;\n }\n /**\n * Sets up UI virtualization for the large icon view.\n */\n Virtualization.prototype.setUIVirtualization = function () {\n // Get the current view data source\n var currentViewItems = this.largeIconInstance.items;\n // Get the first item in the data source\n var firstItem = currentViewItems.slice(0, 1);\n // Create a list element from the first item in the data source\n var listElements = ListBase.createListFromJson(createElement, firstItem, this.largeIconInstance.listObj);\n // Get the list items from the list element\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Append the list element to the large icon element\n this.largeIconInstance.element.appendChild(listElements);\n // Get the total number of items\n this.itemCount = this.getItemCount(Object.keys(this.largeIconInstance.allItems).length);\n // Remove the first child element from the large icon element\n this.largeIconInstance.element.firstChild.remove();\n // Set the items for the large icon view to the current view data source, limited to the number of items to display\n this.largeIconInstance.items = currentViewItems.slice(0, this.itemCount);\n };\n /**\n * Sets the height of the top and bottom elements that are used for virtualization.\n * These elements are used to give the appearance of an infinitely scrolling list.\n */\n Virtualization.prototype.setUlElementHeight = function () {\n // Calculate the number of items in the last row\n this.lastRowCount = (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount ?\n (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount : this.rowItemCount;\n // Create top and bottom elements\n this.topElement = this.filemanagerInstance.createElement('div');\n this.topElement.classList.add(\"e-virtual-top\");\n this.largeIconInstance.element.firstElementChild.insertBefore(this.topElement, this.largeIconInstance.element.firstElementChild.firstChild);\n this.bottomElement = this.filemanagerInstance.createElement('div');\n this.bottomElement.classList.add(\"e-virtual-bottom\");\n this.largeIconInstance.element.firstElementChild.insertBefore(this.bottomElement, null);\n // Get the margin value for list items\n var marginValue = parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-bottom'), 10);\n // Calculate the height of a single list item\n this.listItemHeight = this.largeIconInstance.itemList[0].getBoundingClientRect().height + marginValue;\n // Calculate the total height of the list\n this.totalHeight = (Object.keys(this.largeIconInstance.allItems).length / this.rowItemCount) * this.listItemHeight;\n // Set the initial height of the top and bottom elements\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n // Initialize the top and bottom element heights\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n // Initialize the list difference variable\n this.listDiff = 0;\n // Set the initial rendered count\n this.renderedCount = this.itemCount;\n };\n /**\n * Calculates the number of items to display in the list based on the available width and height.\n * @param dataSourceLength The length of the data source.\n * @returns The number of items to display.\n */\n Virtualization.prototype.getItemCount = function (dataSourceLength) {\n // Get the margin values for list items\n var widthMargin = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-right'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-left'), 10);\n // Calculate the number of items that can fit in a single row\n this.rowItemCount = Math.floor(parseFloat(formatUnit(this.largeIconInstance.element.firstElementChild.clientWidth)) / (this.itemList[0].offsetWidth + widthMargin));\n // Calculate the number of items that can fit in the available height\n var itemCount = this.rowItemCount * (Math.round(parseFloat(formatUnit(this.largeIconInstance.element.clientHeight)) / this.itemList[0].offsetHeight));\n // If the calculated item count is greater than the data source length, set the item count to the data source length\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n /**\n * Wires or un wires the scroll event for the list element.\n * @param destroy - Set `true` to unwire the scroll event.\n */\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n // Wire the scroll event\n EventHandler.add(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll, this);\n }\n else {\n // Unwire the scroll event\n EventHandler.remove(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll);\n }\n };\n /**\n * Handles the scroll event for the list element.\n * This method updates the top and bottom elements and the displayed items based on the scroll position.\n */\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n // Set the starting height to 0\n var startingHeight = 0;\n // Get the current scroll position\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n // Calculate the height of the top element\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n // Calculate the height of the bottom element\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n // If the scroll position is less than or equal to the total height, set the top and bottom element heights.\n // Otherwise, set the top element height to the total height and the bottom element height to 0.\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n // If the top element height has changed, update the top and bottom element heights and re-render the items.\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n // Check whether the scroll direction is upward or downward\n if (scroll > this.scrollPosition) {\n // Scrolling is upward\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n this.onNormalScroll(listDiff, true);\n }\n else {\n // Scrolling is downward\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n this.onNormalScroll(listDiff, false);\n }\n }\n // Update the list difference and scroll position variables\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n this.scrollPosition = scroll;\n // Update the list of items and the items property of the largeIconInstance\n this.largeIconInstance.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.largeIconInstance.element));\n this.largeIconInstance.items = this.largeIconInstance.allItems.slice(this.renderedCount -\n this.itemCount, this.renderedCount);\n };\n /**\n * Calculates the current scroll position of the list element.\n * @param startingHeight The starting height from which to calculate the scroll position.\n * @returns The current scroll position.\n */\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n // If the scroll position is less than or equal to the starting height, return 0.\n // Otherwise, return the scroll position minus the starting height.\n return ((this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight) <= 0) ? 0 :\n (this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight);\n };\n /**\n * This method updates the displayed items and the selection based on the scroll direction.\n * @param listDiff The number of rows to update.\n * @param isScrollingDown If set to true, the scroll direction is downward.\n */\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n // Update the displayed items\n for (var i = 0; i < listDiff; i++) {\n this.updateUI(isScrollingDown);\n }\n };\n /**\n * Updates the items in the large icons view.\n * @param isScrollingDown If set to true, the scroll direction is downward.\n */\n Virtualization.prototype.updateUI = function (isScrollingDown) {\n var _this = this;\n if (isScrollingDown) {\n // Get the next batch of items to be displayed\n this.items = this.largeIconInstance.allItems.slice(this.renderedCount, this.renderedCount + this.rowItemCount);\n // If there are items to be displayed, create list elements for them and append them to the list\n if (this.items.length > 0) {\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n this.itemList.forEach(function (liEle) {\n _this.largeIconInstance.element.firstElementChild.insertBefore(liEle, _this.bottomElement);\n });\n // Update the rendered count variable\n this.renderedCount = (this.largeIconInstance.allItems.length >= this.renderedCount + this.rowItemCount) ?\n this.renderedCount + this.rowItemCount : this.renderedCount + this.lastRowCount;\n // Remove the first batch of items from the list\n for (var i = 0; i < this.rowItemCount; i++) {\n detach(this.topElement.nextElementSibling);\n }\n }\n }\n else {\n // Scrolling up\n var lastItemIndex = void 0;\n var isAllRendered = void 0;\n if (this.renderedCount === this.largeIconInstance.allItems.length) {\n // Set lastItemIndex to the last item in the last row\n lastItemIndex = this.renderedCount - (this.itemCount - this.rowItemCount + this.lastRowCount);\n // Set renderedCount to the total number of items that have been rendered, except for the items in the last row\n this.renderedCount = ((this.renderedCount - this.lastRowCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.lastRowCount);\n // Set isAllRendered to true to indicate that all items have been rendered\n isAllRendered = true;\n }\n else {\n // Set lastItemIndex to the last item in the current row\n lastItemIndex = this.renderedCount - this.itemCount;\n // Set renderedCount to the total number of items that have been rendered, except for the items in the current row\n this.renderedCount = ((this.renderedCount - this.rowItemCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.rowItemCount);\n }\n // Set startItemIndex to the first item in the current or previous row\n var startItemIndex = (lastItemIndex - this.rowItemCount > 0) ? lastItemIndex - this.rowItemCount : 0;\n // Set the items array to the items in the current or previous row\n this.items = this.largeIconInstance.allItems.slice(startItemIndex, lastItemIndex);\n if (this.items.length > 0) {\n // Create a list of elements from the items array\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n // Set the itemList array to the list items in the list elements\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Add the items to the beginning of the list\n for (var len = this.itemList.length; len > 0; len--) {\n this.largeIconInstance.element.firstElementChild.insertBefore(this.itemList[len - 1], this.topElement.nextElementSibling);\n }\n // Remove the last row of items from the list\n for (var i = 0; i < ((isAllRendered) ? this.lastRowCount : this.rowItemCount); i++) {\n detach(this.bottomElement.previousElementSibling);\n }\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 Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n /**\n * Destroys the component.\n */\n Virtualization.prototype.destroy = function () {\n // If the file manager has already been destroyed, return immediately\n if (this.filemanagerInstance.isDestroyed) {\n return;\n }\n // If the large icon element has a child element, unwire the scroll event\n if (!isNullOrUndefined(this.largeIconInstance.element.firstElementChild)) {\n this.wireScrollEvent(true);\n }\n };\n return Virtualization;\n}());\nexport { Virtualization };\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, getPathId } 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.isSameNodeClicked = false;\n this.isNodeExpandCalled = 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 (directories[0].filterPath == null || this.getTreeData(target)[0].filterPath == null || directories[0].filterPath !== this.getTreeData(target)[0].filterPath)) {\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 var element = select('[data-uid=\"' + target + '\"]', this.treeObj.element);\n var childElements = select('ul', element);\n if (isNOU(childElements)) {\n // eslint-disable-next-line\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n }\n };\n // Node Selecting event handler\n NavigationPane.prototype.onNodeSelecting = function (args) {\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !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 if (args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1] && !this.isRightClick && !this.isNodeClickCalled || this.isSameNodeClicked) {\n this.isNodeClickCalled = false;\n if (!this.isSameNodeClicked) {\n this.isSameNodeClicked = true;\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n if (!this.isRightClick) {\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n }\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.isNodeClickCalled = true;\n this.isSameNodeClicked = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.selectedNodes = [args.node.getAttribute(\"data-uid\")];\n }\n }\n else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: this.isNodeClickCalled };\n this.parent.trigger('fileSelect', selecEventArgs);\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 var eventArgs = { cancel: false, fileDetails: data[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n this.isNodeClickCalled = true;\n if (!eventArgs.cancel) {\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 };\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 this.isNodeClickCalled = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent) {\n this.parent.pathId = getPathId(args.node);\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 var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n if (!this.isRightClick && this.isSameNodeClicked && sNode.querySelector('.e-list-text').innerHTML !== this.parent.pathNames[this.parent.pathNames.length - 1]) {\n updatePath(args.node, this.parent.itemData[0], this.parent);\n }\n else {\n this.parent.pathId = getPathId(args.node);\n this.parent.visitedItem = args.node;\n }\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n if (previousPath !== this.parent.path) {\n if (!this.isRightClick && this.isSameNodeClicked) {\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.isNodeClickCalled = true;\n }\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = this.isSameNodeClicked = 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 this.parent.pathId.push(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n this.isNodeExpandCalled = true;\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 this.isNodeExpandCalled = false;\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 else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && !this.isNodeClickCalled && !this.isNodeExpandCalled) {\n if (args.event.which === 3) {\n this.isRightClick = true;\n }\n this.isSameNodeClicked = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\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 && !(this.parent.hasId)) {\n this.updateTree(args);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + CLS.LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.selectedNodes = [sleId];\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + CLS.ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.removeChildNodes(id);\n this.addChild(args.files, id, false);\n this.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n };\n NavigationPane.prototype.onCreateEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n };\n NavigationPane.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n var name_1 = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name_1], this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDeleteEnd = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n var selectedNode = this.treeObj.selectedNodes[0];\n var selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n var selectedNodeEle = closest(selcetedEle, '.' + CLS.LIST_PARENT).parentElement;\n this.treeObj.selectedNodes = [selectedNodeEle.getAttribute('data-uid')];\n this.treeObj.dataBind();\n }\n this.updateTree(args);\n };\n NavigationPane.prototype.onRefreshEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEndParent = function (args) {\n var id = this.renameParent ? this.renameParent : this.parent.pathId[this.parent.pathId.length - 1];\n this.expandTree = this.treeObj.expandedNodes.indexOf(this.treeObj.selectedNodes[0]) !== -1;\n this.updateTreeNode(args, id);\n this.parent.expandedId = null;\n if (this.renameParent) {\n this.renameParent = null;\n }\n else {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.renameText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('_fm_pId', 'equal', id, false));\n }\n }\n if (resultData.length > 0) {\n 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 var selectedNode = this.treeObj.getTreeData().filter(function (obj) { return obj.name === resultObj.name; })[0];\n this.treeObj.selectedNodes = [getValue('_fm_id', selectedNode)];\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, initializeCSPTemplate, extend } 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 persistSelection: (this.parent.enableVirtualization) ? true : false\n },\n enableRtl: this.parent.enableRtl,\n pageSettings: { pageSize: 20 },\n enableVirtualization: this.parent.enableVirtualization,\n enablePersistence: this.parent.enablePersistence,\n enableVirtualMaskRow: true,\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 height: (this.parent.enableVirtualization) ? this.getGridHeight() : 'auto',\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 if (this.parent.isReact) {\n this.gridObj.isReact = true;\n this.gridObj.portals = [];\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\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.reactTemplateRender = function (args) {\n this.parent[\"portals\"] = args;\n if (this.parent.portals && this.parent.toolbarModule && this.parent.toolbarModule.toolbarObj &&\n this.parent.toolbarModule.toolbarObj.portals) {\n this.parent[\"portals\"] = this.parent[\"portals\"].concat(this.parent.toolbarModule.toolbarObj.portals);\n }\n this.parent.notify('renderReactTemplate', this.parent[\"portals\"]);\n this.parent[\"renderReactTemplates\"]();\n };\n /**\n * Gets the grid height.\n *\n * @returns The grid height.\n * @private\n */\n DetailsView.prototype.getGridHeight = function () {\n // Get the content pane and breadcrumb bar elements\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 // The maximum height of the header is 36\n var headerMaxHeight = 36;\n // Calculate and return the grid height\n return (pane.offsetHeight - bar.offsetHeight - headerMaxHeight);\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: initializeCSPTemplate(function (data) {\n return \"<div class=\\\"e-fe-text\\\">\" + data.name + \"</div><div class=\\\"e-fe-date\\\">\" + data._fm_modified + \"</div>' +\\n '<span class=\\\"e-fe-size\\\">\" + data.size + \"</span>\";\n })\n }\n ];\n }\n else {\n columns = extend([], this.parent.detailsViewSettings.columns, null, true);\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,\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-icon \" + data._fm_iconClass + \"\\\"></span>\";\n }), allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: initializeCSPTemplate(function () {\n return \"<span class=\\\"e-fe-icon e-fe-folder\\\"></span>\";\n })\n };\n columns.unshift(icon);\n if (this.parent.showItemCheckBoxes) {\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 sizeFormat = void 0;\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'size') {\n sizeFormat = !isNullOrUndefined(columns[i].format) ? columns[i].format.toString() : 'n';\n break;\n }\n }\n var value = intl.formatNumber((sizeValue / 1024), { format: sizeFormat });\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.parent.enableVirtualization) ? args.result : 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 && !this.parent.enableVirtualization) ||\n ((this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization &&\n this.element.querySelector('.e-content').scrollTop == 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 else if (!this.parent.showFileExtension && node.includes('.')) {\n var Str2 = node.split('.').slice(0, -1).join('.');\n if (nodes.indexOf(Str2) !== -1) {\n sRecords.push(i);\n }\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 if (this.element.querySelector('.e-content').scrollTop !== 0) {\n this.gridObj.freezeRefresh();\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 this.interaction = true;\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 this.gridObj.freezeRefresh();\n if (this.parent.isReact) {\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\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 if (_this.parent.enableVirtualization) {\n _this.parent.element.querySelector('#' + _this.parent.element.id + CLS.IMG_DIALOG_ID).focus();\n }\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\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 (!isNullOrUndefined(this.gridObj.sortSettings.columns[0]) && 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 = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : 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.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 if (this.parent.isReact) {\n this.gridObj.off('reactTemplateRender', this.reactTemplateRender);\n }\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 (this.parent.enableVirtualization) {\n this.parent.currentItemText = getValue('name', args.data);\n }\n else 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.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {\n this.addFocus(this.gridObj.selectedRowIndex);\n }\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 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 '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"],"names":["updatePath","node","data","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","getPathId","pathNames","element","matched","getParents","names","i","length","push","getPathNames","ids","isId","el","parentNode","matches","CLS.LIST_ITEM","parentText","select","CLS.LIST_TEXT","textContent","classList","contains","CLS.TREE_VIEW","removeActive","parent","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","allItems","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","feParent","copyFiles","fileAction","cutFiles","fileType","file","CLS.FOLDER","filetype","toLowerCase","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","getImageUrl","item","imgUrl","baseUrl","ajaxSettings","url","pathUrl","fileName","encodeURIComponent","fPath","imgId","replace","eventArgs","fileDetails","imageUrl","Date","getTime","toString","trigger","getFullPath","filePath","getName","name","getSortedData","items","query","sortOrder","Query","sortBy","group","lists","DataManager","executeLocal","getObject","key","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","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","column","substring","lastIndexOf","field","detailsViewSettings","columns","len","setNextPath","currfolders","folders","originalPath","root","eventName","events.finalizeEnd","events.initialEnd","newPath","openSearchFolder","isRoot","searchData","isNullOrUndefined","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","validateSubFolder","events.pasteInit","paste","createDialog","code","message","fileExists","dropPath","dragPath","subFolder","srcData","dragNodes","tempTarget","oldPath","getDirectoryPath","cwd","doPasteUpdate","operation","result","events.dragEnd","events.cutEnd","duplicateItems","pasteNodes","count","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","events.pasteEnd","readDropPath","dropData","expandedId","events.pathDrag","navigationpaneModule","treeObj","document","events.dropPath","createVirtualDragElement","dragData","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","dropHandler","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","draggingHandler","canDrop","setTimeout","events.dragging","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","setValue","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","showFileExtension","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","generatePath","intl","Internationalization","localeString","dateFormat","createdDate","modifiedDate","formatDate","format","setDateObject","getDateFormat","rootId","dirs","setNodeId","rootName","location_1","RegExp","match","events.searchTextChange","send","events.selectionChanged","pop","dialogObj","visible","parentElement","nextElementSibling","hide","createdItem","events.createEnd","renamedItem","Array","isArray","events.renameEndParent","events.pathChanged","renameText","events.renameEnd","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","e","replaceItems","options","formattedString","strArr","location","header","content","buttons","dialogName","open","triggerPopupOpen","close","triggerPopupClose","multipleFiles","buttonModel","isPrimary","onSubmit","createInput","oninput","onValidate","onkeyup","getKeyCode","focus","setSelectionRange","focusInput","bind","this","events.deleteInit","onDeleteSubmit","onReSubmit","inputEle","txt","index","onFocusRenameInput","modified","CLS.VALUE","str","keys","Object","objectToString","size","index_1","undefined","map","val","substr","every","arr","toLocaleUpperCase","events.actionFailure","CLS.ERROR_CONTENT","getOptions","Dialog","beforeOpen","keydownAction","beforeClose","triggerPopupBeforeClose","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","width","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","dataBind","show","changeOptions","extOptions","duplicateContent","extDialogObj","records","getDuplicateData","item_1","indexval","item_2","ind","retryFiles","isRetryOpened","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","isApplySame","checked","retryDlgClose","retryDlgUpdate","splice","events.skipUpload","getExtOptions","beforeExtOpen","CLS.EXTN_DIALOG_ID","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","isKeepBoth","retryArgs","retry","onKeepBothAll","onReplaceAll","flag","placeholder","Input","properties","preventKeydown","selectAll","dlgName","btnElement","_loop_1","btnCount","onkeydown","keyCode","preventDefault","onSubmitValidate","oIndex","renamedId","oldExtension","nIndex","newExtension","test","addInvalid","which","charCode","createImageDialog","image","src","alt","viewerObj","height","enableResize","position","X","Y","updateImage","resizing","resizeStop","CLS.IMG_DIALOG_ID","imgWrap","cssObj","getComputedStyle","paddingWidth","parseFloat","paddingRight","paddingHeight","paddingBottom","offsetWidth","__extends","extendStatics","d","b","setPrototypeOf","__proto__","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","AjaxSettings","_super","apply","Property","ChildProperty","defaultToolbarItems","ToolbarSettings","ToolbarItem","SearchSettings","columnArray","headerText","minWidth","isPrimaryKey","template","initializeCSPTemplate","customAttributes","class","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","TOOLBAR_ID","LAYOUT_ID","TREE_ID","GRID_ID","LARGEICON_ID","DIALOG_ID","IMG_DIALOG_ID","EXTN_DIALOG_ID","UPLOAD_DIALOG_ID","CONTEXT_MENU_ID","CONTENT_ID","BREADCRUMBBAR_ID","UPLOAD_ID","ROOT","CONTROL","CHECK_SELECT","ROOT_POPUP","MOBILE","MOB_POPUP","MULTI_SELECT","FILTER","LAYOUT_CONTENT","LARGE_ICONS","TB_ITEM","LIST_ITEM","LIST_TEXT","LIST_PARENT","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_ITEM","MENU_ICON","GRID_VIEW","GRID_CONTENT","ICON_VIEW","ICON_OPEN","ICON_UPLOAD","ICON_CUT","ICON_COPY","ICON_PASTE","ICON_DELETE","ICON_RENAME","ICON_NEWFOLDER","ICON_DETAILS","ICON_SHORTBY","ICON_REFRESH","ICON_SELECTALL","ICON_DOWNLOAD","ICON_GRID","ICON_LARGE","ICON_BREADCRUMB","ICON_CLEAR","ICONS","ERROR_CONTENT","DISPLAY_NONE","FULLROW","SPLIT_BAR","HEADER_CHECK","VALUE","modelChanged","initialEnd","finalizeEnd","createEnd","filterEnd","pathDrag","deleteInit","deleteEnd","refreshEnd","resizeEnd","splitterResize","pathChanged","destroy","beforeRequest","skipUpload","afterRequest","layoutRefresh","actionFailure","search","openInit","openEnd","selectionChanged","selectAllInit","clearAllInit","clearPathInit","layoutChange","sortByChange","nodeExpand","detailsInit","menuItemData","renameInit","renameEndParent","renameEnd","showPaste","hidePaste","selectedData","cutCopyInit","pasteInit","pasteEnd","cutEnd","hideLayout","updateTreeSelection","sortColumn","pathColumn","searchTextChange","downloadInit","dropInit","dragEnd","dragging","updateSelectionData","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","LargeIconsView","isInteraction","uploadOperation","isRendered","tapCount","isSelectAllCalled","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","events.hideLayout","iconsView","ul","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","htmlAttributes","itemCreated","onItemCreated","renderList","CLS.DISPLAY_NONE","enableVirtualization","adjustHeight","virtualizationModule","setUIVirtualization","listElements","ListBase","createListFromJson","itemList","slice","call","preventImgDrag","createDragObj","emptyList","CLS.LIST_PARENT","selectItems","activeEle","CLS.ACTIVE","maxHeight","getItemCount","wireEvents","setUlElementHeight","wireScrollEvent","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","showItemCheckBoxes","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","doSelection","ctrlKey","shiftKey","onClearAllInit","clearSelection","onBeforeRequest","onAfterRequest","onSearch","onLayoutRefresh","onUpdateSelectionData","onPathColumn","isDestroyed","off","events.selectedData","events.openInit","events.modelChanged","onPropertyChanged","events.methodCall","onMethodCall","onActionFailure","events.renameInit","events.selectAllInit","events.clearAllInit","events.menuItemData","onMenuItemData","events.splitterResize","splitterResizeHandler","events.resizeEnd","resizeHandler","onpasteInit","onpasteEnd","oncutCopyInit","events.detailsInit","onDetailsInit","events.layoutRefresh","onDropPath","events.updateSelectionData","events.filterEnd","on","currentSelected","_i","_a","newProp","allowMultiSelection","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","CLS.MULTI_SELECT","updateType","cList","CLS.CHECK","triggerSelection","startIndex","endIndex","addActive","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","folder","fItem","getFocusedItem","firstItem","scrollTo","scrollHeight","navigateItem","scrollTop","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","marginValue","parseInt","getPropertyValue","getBoundingClientRect","isVisible","liParent","liScrPos","getCurFocusedItem","dItem","lItem","rItem","uItem","getDataName","preItem","toCheck","CLS.CB_WRAP","eles","visitedData","j","byId","resultData","newData","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","isFilter","filterName","name_2","BreadCrumbBar","addressPath","addressBarLink","searchTimer","searchWrapWidth","prop","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","CLS.ICONS","innerText","ulElement","breadCrumbBarNavigation","subMenuObj","searchWrap","updateBreadCrumbBar","addresBarUL","liElements","pRight","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","diff","liElement","utext","subMenuLi","subMenuSpan","DropDownButton","CLS.ICON_BREADCRUMB","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","nodeName","children","currentPath","triggerFileOpen","treeNodeId","events.updateTreeSelection","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","CLS.CONTEXT_MENU_ID","getMenuId","iconSpan","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","menuTarget","uid","treeFolder","targetNodeElement","activeNode","getElementsByClassName","CLS.FULLROW","targetElement","getTargetView","updateActiveModule","CLS.TOOLBAR_ID","setLayoutItem","CLS.MENU_ITEM","CLS.TREE_ID","getRowObjectFromUID","selectRows","setFileItem","setFolderItem","pasteEle","isSubMenu","getMenuItemData","menuModule","menuType","menuOpenArgs","enableItems","CLS.GRID_ID","CLS.ICON_VIEW","getItemIndex","itemId","disableItem","concat","enable","isUniqueId","checkValidItem","isTree","getItemData","contextMenuSettings","trim","selectedTreeNode","layout","nameEle","menuClickArgs","sItems","events.downloadInit","openFileOnContextMenuClick","separator","CLS.ICON_OPEN","CLS.ICON_UPLOAD","CLS.ICON_CUT","CLS.ICON_COPY","CLS.ICON_PASTE","CLS.ICON_DELETE","CLS.ICON_RENAME","CLS.ICON_NEWFOLDER","CLS.ICON_DETAILS","CLS.ICON_SHORTBY","CLS.TB_OPTION_DOT","CLS.TB_OPTION_TICK","CLS.ICON_REFRESH","CLS.ICON_SELECTALL","CLS.ICON_DOWNLOAD","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","addOnPersist","requiredModules","modules","member","toolbarSettings","initialize","slItems","fileView","navigator","platform","toUpperCase","setRtl","addEventListeners","splitterObj","collapse","CLS.SPLIT_BAR","renderComplete","CLS.MOBILE","CLS.CHECK_SELECT","addCssClass","renderFileUpload","headerWrap","layoutWrap","navigationWrap","treeWrap","contentWrap","CLS.LAYOUT_CONTENT","gridWrap","largeiconWrap","role","overlay","paneSettings","min","max","maxWidth","Splitter","dialogWrap","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","CLS.UPLOAD_DIALOG_ID","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","toolbarModule","contextmenuModule","disableToolbarItems","enableToolbarItems","disableMenuItems","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","rtl","Complex","Collection","Event","NotifyPropertyChanges","Component","__assign","assign","t","s","n","Toolbar","default","single","multiple","selection","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","created","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","toolbarItems","tool","toolbarClickArgs","CLS.TB_ITEM","getPupupId","buttonObj","layoutBtnObj","hideItems","hideStatus","portals","updateSortByButton","itemCount","propItem","getItemModel","itemTooltip","tooltipText","prefixIcon","showTextOn","spanElement","suffixIcon","CLS.ICON_CLEAR","overflow","align","viewText","mergedItems","disabled","showAlwaysInPopup","tabIndex","onSelectionChanged","reRenderToolbar","itemsToProcess","hideItem","tools","toHide","refreshOverflow","isEnable","Virtualization","filemanagerInstance","largeIconInstance","currentViewItems","firstChild","lastRowCount","rowItemCount","topElement","bottomElement","listItemHeight","totalHeight","topElementHeight","bottomElementHeight","listDiff","renderedCount","dataSourceLength","widthMargin","Math","floor","round","onVirtualUiScroll","scrollPosition","scroll","getscrollerHeight","onNormalScroll","startingHeight","isScrollingDown","updateUI","forEach","lastItemIndex","isAllRendered","startItemIndex","previousElementSibling","NavigationPane","removeNodes","moveNames","expandTree","isDrag","isPathDragged","isRenameParent","isRightClick","isSameNodeClicked","isNodeExpandCalled","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","childElements","addNodes","selecEventArgs","sNode","expandNodeTarget","onPathDrag","selectResultNode","events.nodeExpand","onNodeExpanded","innerHtml","updateTree","updateTreeNode","toExpand","expandedNodes","removeChildNodes","childs","onOpenEnd","sleId","expandAll","updateItemData","updateActionData","selcetedEle","selectedNodeEle","onRenameEndParent","nData","id_1","onDownLoadInit","onClearPathInit","onDragEnd","getMoveNames","previousName","onCutEnd","resultObj","obj","itemname","checkDropPath","onDragging","dataobj","level","keyDown","DetailsView","interaction","isColumnRefresh","firstItemIndex","isSelectionUpdate","currentSelectedItem","isLoaded","isNameWidth","actionDivert","Grid","Resize","Sort","VirtualScroll","checkNameWidth","getColumns","sortSettings","direction","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","columnResizing","selectionSettings","checkboxMode","persistSelection","pageSettings","pageSize","enablePersistence","enableVirtualMaskRow","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","getGridHeight","beforeCopy","load","focusModule","isReact","reactTemplateRender","emptyArgs","initialColumn","adjustWidth","fieldName","nameWidth","headerTextAlign","_fm_modified","iWidth","_fm_iconClass","headerTemplate","unshift","cWidth","cBox","disableHtmlEncode","gridHeader","renderCheckBox","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","sizeFormat","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","selectRecords","currentViewData","getRowHeight","hdTable","getHeaderContent","paddingLeft","borderRightWidth","cnTable","getContent","overflowY","checkEmptyDiv","gridRecords","getCurrentViewRecords","sRecords","includes","Str2","selectedRowIndex","rData","onSortColumn","sortModule","freezeRefresh","onDetailsResize","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","selectionModule","selectRowsByRange","getRows","selectRow","removeSelection","CLS.HEADER_CHECK","onPasteInit","onDetailsResizeHandler","getRowInfo","dragRow","getSelectedRows","gridHeaderColGroup","gridContentColGroup","gridHeaderColNames","selectedRecords","getRowByIndex","isHeaderCheckboxClicked","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","check","getRecords","hasFilter","name_4","dRecords"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ej2-filemanager.umd.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/actions/virtualization.js","../src/file-manager/layout/navigation-pane.js","../src/file-manager/layout/details-view.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, isNullOrUndefined } 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.allItems });\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 pathUrl = (baseUrl.indexOf('?') !== -1) ? '&path=' : '?path=';\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 + pathUrl + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + pathUrl + encodeURIComponent(fPath.replace(/\\\\/g, '/')) + fileName;\n }\n else {\n imgUrl = baseUrl + pathUrl + 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, localeString, dateFormat) {\n for (var i = 0; i < args.length; i++) {\n var createdDate = new Date(getValue('dateCreated', args[i]));\n var modifiedDate = new Date(getValue('dateModified', args[i]));\n if (isNOU(dateFormat)) {\n dateFormat = \"MM/dd/yyyy\";\n }\n setValue('_fm_created', localeString.formatDate(createdDate, { format: dateFormat }), args[i]);\n setValue('_fm_modified', localeString.formatDate(modifiedDate, { format: dateFormat }), args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nexport function getLocaleText(parent, text) {\n var locale = parent.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n}\n/**\n * get the CSS class\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} css - specifies the css.\n * @returns {string} - returns the css classes.\n * @private\n */\nexport function getCssClass(parent, css) {\n var cssClass = parent.cssClass;\n cssClass = (isNOU(cssClass) || cssClass === '') ? css : (cssClass + ' ' + css);\n return cssClass;\n}\n/**\n * sort on click\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {MenuEventArgs} args - specifies the menu event arguements.\n * @returns {void}\n * @private\n */\nexport function sortbyClickHandler(parent, args) {\n var tick;\n parent.isSortByClicked = true;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id, parent);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(events.sortColumn, { module: 'detailsview' });\n parent.isSortByClicked = false;\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(events.sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @returns {string} - returns the sorted fields\n * @private\n */\nexport function getSortField(id, parent) {\n var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n var column;\n if (parent) {\n column = parent.detailsViewSettings.columns;\n }\n switch (text) {\n case 'date':\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[i].field === 'dateModified' || column[i].field === 'dateCreated') {\n field = column[i].field;\n break;\n }\n else {\n field = '_fm_modified';\n }\n }\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function setNextPath(parent, path) {\n var currfolders = path.split('/');\n var folders = parent.originalPath.split('/');\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n for (var i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n var eventName = (folders[i + 1] === '') ? events.finalizeEnd : events.initialEnd;\n var newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n // eslint-disable-next-line\n var data = getObject(parent, key, folders[i]);\n var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n parent.pathId.push(id);\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n read(parent, eventName, parent.path);\n break;\n }\n}\n/**\n * Opens the searched folder\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function openSearchFolder(parent, data) {\n parent.originalPath = getFullPath(parent, data, parent.path);\n var root = getValue(parent.pathId[0], parent.feParent);\n var isRoot = getValue('_fm_id', parent.itemData[0]) == 'fe_tree';\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n var searchData = getObject(parent, key, getValue('name', data));\n if (isNullOrUndefined(searchData)) {\n if (!isRoot) {\n parent.notify(events.clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n }\n else {\n setNextPath(parent, parent.path);\n return;\n }\n }\n else {\n var id = getValue('_fm_id', searchData);\n parent.setProperties({ path: parent.originalPath }, true);\n parent.pathId.push(id);\n parent.itemData = [searchData];\n parent.pathNames.push(getValue('name', searchData));\n }\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 * Remove item class handler\n *\n * @param {Element} scrollParent - specifies the scrolling target.\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} nodeClass - specifies the node class.\n * @param {number} screenY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the entire screen.\n * @param {number} clientY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the target element.\n * @returns {void}\n * @private\n */\nexport function scrollHandler(scrollParent, parent, nodeClass, screenY, clientY) {\n var position;\n var elementData = scrollParent.getBoundingClientRect();\n var node = select(\".\" + nodeClass, scrollParent);\n if ((screenY >= (elementData.top + scrollParent.clientHeight - 30)) && !isNullOrUndefined(node)) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, position);\n }\n if (!isNullOrUndefined(node) && (clientY <= (elementData.top + 30))) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, -position);\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 var scrollParent;\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 scrollParent = parent.navigationpaneModule.treeObj.element.parentElement;\n scrollHandler(scrollParent, parent, 'e-level-2', args.event.screenY, args.event.y);\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 scrollParent = parent.detailsviewModule.gridObj.element.querySelector('.e-content');\n scrollHandler(scrollParent, parent, 'e-row', args.event.screenY, args.event.y);\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 scrollParent = parent.largeiconsviewModule.element.firstElementChild;\n scrollHandler(scrollParent, parent, 'e-large-icon', args.event.screenY, args.event.y);\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, Internationalization } 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, 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, showFileExtension: parent.showFileExtension\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 getDateFormat(parent) {\n var columns = parent.detailsViewSettings.columns;\n var dateFormat;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === '_fm_modified') {\n if (!isNOU(columns[i].format)) {\n dateFormat = columns[i].format.toString();\n }\n break;\n }\n }\n return dateFormat;\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 var intl = new Internationalization(parent.locale);\n if (!isNOU(result.files)) {\n setDateObject(result.files, intl, getDateFormat(parent));\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' || event === 'drop-path')) {\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 = Array.isArray(result.files) ? result.files[0] : result.files;\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, getValue('filterPath', parent.renamedItem).replace(/\\\\/g, '/'));\n parent.itemData[0] = parent.renamedItem;\n read(parent, events.pathChanged, parent.path === '/' ? parent.path : getValue('filterPath', parent.renamedItem).replace(/\\\\/g, '/') + parent.renamedItem.name + '/');\n if (getValue('filterPath', parent.renamedItem) === getValue('filterPath', parent.itemData[0]) && parent.pathNames.length > 1) {\n parent.pathNames[parent.pathNames.length - 1] = parent.renameText;\n }\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, objectToString, getCssClass } from '../common/utility';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\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/**\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 */\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/**\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') ? getValue('filterPath', parent.itemData[0]).replace(/\\\\/g, '/') : 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 || (ele.value.lastIndexOf('.') === -1 || ele.value.substring(ele.value.indexOf('.') + 1).length === 0))) {\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 defaultToolbarItems = ['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(defaultToolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\nvar ToolbarItem = /** @class */ (function (_super) {\n __extends(ToolbarItem, _super);\n function ToolbarItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], ToolbarItem.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], ToolbarItem.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], ToolbarItem.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], ToolbarItem.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ToolbarItem.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], ToolbarItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], ToolbarItem.prototype, \"align\", void 0);\n __decorate([\n Property(-1)\n ], ToolbarItem.prototype, \"tabIndex\", void 0);\n __decorate([\n Property()\n ], ToolbarItem.prototype, \"name\", void 0);\n return ToolbarItem;\n}(ChildProperty));\nexport { ToolbarItem };\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, initializeCSPTemplate } 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, isPrimaryKey: true,\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-text\\\">\" + data.name + \"</span>\";\n }),\n 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',\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-size\\\">\" + data.size + \"</span>\";\n }), format: 'n2'\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 __decorate([\n Property(false)\n ], Column.prototype, \"isPrimaryKey\", 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.isSelectAllCalled = false;\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 = this.allItems = getSortedData(this.parent, this.items);\n iconsView.classList.remove(CLS.DISPLAY_NONE);\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n if (!this.element.style.height) {\n this.adjustHeight();\n }\n this.parent.virtualizationModule.setUIVirtualization();\n }\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.listElements.setAttribute(\"aria-label\", \"listbox\");\n this.preventImgDrag();\n this.createDragObj();\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 if (this.parent.enableVirtualization && this.allItems.length > 0) {\n this.parent.virtualizationModule.setUlElementHeight();\n this.parent.virtualizationModule.wireScrollEvent(false);\n }\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.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: false,\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.showItemCheckBoxes) {\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 checkElement.setAttribute('aria-label', 'checkbox');\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 if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\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 this.parent.activeModule = 'largeiconsview';\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 this.startItem = null;\n this.listElements = null;\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 if (e.ctrlKey && e.shiftKey) {\n this.isSelectAllCalled = true;\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 if (this.parent.selectedItems.length === this.itemList.length) {\n this.isSelectAllCalled = true;\n }\n this.clearSelection();\n }\n if (!isNOU(item)) {\n this.isSelectAllCalled = false;\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 var _this = this;\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 if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTo(0, this.element.firstElementChild.scrollHeight);\n setTimeout(function () {\n _this.navigateItem(_this.itemList[_this.itemList.length - 1]);\n }, 10);\n }\n else {\n this.navigateItem(lastItem);\n }\n break;\n case 'home':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTop = 0;\n setTimeout(function () {\n _this.navigateItem(_this.itemList[0]);\n }, 10);\n }\n else {\n this.navigateItem(firstItem);\n }\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 (this.parent.enableVirtualization && isNOU(nextItem)) {\n var marginValue = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-bottom'), 10);\n var scrollHeight = this.itemList[0].getBoundingClientRect().height + marginValue;\n this.element.firstElementChild.scrollTo(this.element.firstElementChild.scrollTop, this.element.firstElementChild.scrollTop + scrollHeight);\n }\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.showItemCheckBoxes) {\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 = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n }\n else {\n data[0] = this.getItemObject(item);\n }\n var eventArgs = {\n action: action, fileDetails: data.length > 1 ? data : data[0], isInteracted: this.isInteraction, cancel: false, target: this.isSelectAllCalled ? null : 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 = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n this.isSelectAllCalled = false;\n }\n else {\n data[0] = this.getItemObject(item);\n }\n this.parent.visitedData = data.length > 1 ? data[data.length - 1] : data[0];\n var eventArgs = { action: action, fileDetails: data.length > 1 ? data : data[0], 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') + ' ' + getLocaleText(this.parent, args.cwd.name.toString());\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.isMenuItemClicked = false;\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 if (!this.isMenuItemClicked && this.parent.pathId.length > 1) {\n this.parent.pathId.pop();\n this.parent.pathId.push(Object.keys(this.parent.feParent)[Object.keys.length]);\n this.parent.navigationpaneModule.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n }\n this.isMenuItemClicked = false;\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 if (this.parent.enableVirtualization && (target.classList.contains('e-virtual-bottom') || target.classList.contains('e-virtualtable'))) {\n target = target.parentElement.closest(\"div\");\n }\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 var selectedTreeNode = select('[data-uid=\"' + this.parent.navigationpaneModule.treeObj.selectedNodes[0] + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {\n this.disabledItems.push('Open');\n }\n }\n else if (this.parent.selectedItems.length !== 1 && this.parent.activeModule !== 'navigationpane') {\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 _this.isMenuItemClicked = true;\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 && _this.parent.activeModule !== 'navigationpane') {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n else if (_this.parent.activeModule === 'navigationpane') {\n if (_this.parent.visitedItem) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\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 _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\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 this.targetElement = null;\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, Collection } 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 { ToolbarItem } 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 if (this.enableVirtualization) {\n modules.push({\n member: 'virtualization',\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 if (this.toolbarSettings.items.indexOf('Upload') != -1) {\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n }\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 case 'toolbarItems':\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 this.breadCrumbBarNavigation = null;\n this.activeElements = null;\n this.virtualDragElement = null;\n this.visitedItem = null;\n _super.prototype.destroy.call(this);\n this.virtualizationModule = null;\n this.navigationpaneModule = null;\n this.toolbarModule = null;\n this.contextmenuModule = null;\n this.largeiconsviewModule = null;\n this.detailsviewModule = null;\n this.breadcrumbbarModule = null;\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) && this.toolbarModule) {\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) && this.toolbarModule) {\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 Property(true)\n ], FileManager.prototype, \"showItemCheckBoxes\", 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(false)\n ], FileManager.prototype, \"enableVirtualization\", 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 Collection([], ToolbarItem)\n ], FileManager.prototype, \"toolbarItems\", 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","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { 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.root = _this.parent.root ? _this.parent.root : _this.parent;\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 if (this.parent.toolbarItems.length > 0) {\n currItems = this.parent.toolbarItems.map(function (item) { return item.name; });\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 if (this.parent.portals && this.toolbarObj.portals) {\n this.parent.portals = this.parent.portals.concat(this.toolbarObj.portals);\n this.parent['renderReactTemplates']();\n }\n var btnElement = selectAll('.e-btn', this.toolbarObj.element);\n var _loop_1 = function (btnCount) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n this.parent.refreshLayout();\n };\n Toolbar.prototype.updateSortByButton = function () {\n if (this.buttonObj) {\n var items = this.buttonObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n if (this.parent.sortBy === 'dateModified' || this.parent.sortBy === 'dateCreated') {\n items[itemCount].iconCss = this.parent.sortBy === this.parent.sortBy ? CLS.TB_OPTION_DOT : '';\n }\n else {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.getPupupId = function (id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n };\n Toolbar.prototype.layoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (args.item.id === this.getPupupId('large')) {\n updateLayout(this.parent, 'LargeIcons');\n }\n }\n else {\n if (args.item.id === this.getPupupId('details')) {\n updateLayout(this.parent, 'Details');\n }\n }\n };\n Toolbar.prototype.toolbarItemData = function (data) {\n var items = [];\n var mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var propItem = void 0;\n if (this.parent.toolbarItems.length > 0) {\n propItem = this.getItemModel(this.parent.toolbarItems[parseInt(i.toString(), 10)]);\n }\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 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 var spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\n if (propItem && propItem.text) {\n spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + propItem.text + '</span>';\n }\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 }\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 var viewText = void 0;\n if (propItem && propItem.text) {\n viewText = propItem.text;\n }\n else {\n viewText = getLocaleText(this.parent, 'View');\n }\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 viewText + '></button>'\n };\n break;\n }\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, template: '' };\n break;\n }\n if (this.parent.toolbarItems.length > 0 && propItem) {\n var mergedItems = __assign({}, item, propItem);\n items.push(mergedItems);\n }\n else {\n items.push(item);\n }\n }\n return items;\n };\n Toolbar.prototype.getItemModel = function (propItem) {\n var item = {};\n if (propItem.id) {\n item.id = propItem.id;\n }\n if (propItem.text) {\n item.text = propItem.text;\n }\n if (propItem.tooltipText) {\n item.tooltipText = propItem.tooltipText;\n }\n if (propItem.prefixIcon) {\n item.prefixIcon = propItem.prefixIcon;\n }\n if (propItem.cssClass) {\n item.cssClass = propItem.cssClass;\n }\n if (propItem.showTextOn !== 'Both') {\n item.showTextOn = propItem.showTextOn;\n }\n if (propItem.template) {\n item.template = propItem.template;\n }\n if (propItem.disabled) {\n item.disabled = propItem.disabled;\n }\n if (propItem.width !== 'auto') {\n item.width = propItem.width;\n }\n if (propItem.suffixIcon) {\n item.suffixIcon = propItem.suffixIcon;\n }\n if (propItem.align !== 'Left') {\n item.align = propItem.align;\n }\n if (propItem.overflow !== 'None') {\n item.overflow = propItem.overflow;\n }\n if (propItem.htmlAttributes) {\n item.htmlAttributes = propItem.htmlAttributes;\n }\n if (propItem.type !== 'Button') {\n item.type = propItem.type;\n }\n if (propItem.visible !== true) {\n item.visible = propItem.visible;\n }\n if (propItem.showAlwaysInPopup) {\n item.showAlwaysInPopup = propItem.showAlwaysInPopup;\n }\n if (propItem.tabIndex !== -1) {\n item.tabIndex = propItem.tabIndex;\n }\n return item;\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 var itemsToProcess = [];\n if (this.parent.toolbarItems.length > 0) {\n itemsToProcess = this.parent.toolbarItems.map(function (item) {\n return item.name;\n });\n }\n else if (e.newProp.toolbarSettings.items !== undefined) {\n itemsToProcess = e.newProp.toolbarSettings.items.map(function (item) {\n return item.trim();\n });\n }\n if (itemsToProcess.length > 0) {\n this.items = this.toolbarItemData(this.getItems(itemsToProcess));\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 && !this.parent.enableVirtualization) {\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 case 'toolbarItems':\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 { EventHandler, isNullOrUndefined, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, selectAll } from '@syncfusion/ej2-base';\nimport * as CLS from '../base/classes';\nvar Virtualization = /** @class */ (function () {\n function Virtualization(instance) {\n this.filemanagerInstance = instance;\n this.largeIconInstance = instance.largeiconsviewModule;\n }\n /**\n * Sets up UI virtualization for the large icon view.\n */\n Virtualization.prototype.setUIVirtualization = function () {\n // Get the current view data source\n var currentViewItems = this.largeIconInstance.items;\n // Get the first item in the data source\n var firstItem = currentViewItems.slice(0, 1);\n // Create a list element from the first item in the data source\n var listElements = ListBase.createListFromJson(createElement, firstItem, this.largeIconInstance.listObj);\n // Get the list items from the list element\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Append the list element to the large icon element\n this.largeIconInstance.element.appendChild(listElements);\n // Get the total number of items\n this.itemCount = this.getItemCount(Object.keys(this.largeIconInstance.allItems).length);\n // Remove the first child element from the large icon element\n this.largeIconInstance.element.firstChild.remove();\n // Set the items for the large icon view to the current view data source, limited to the number of items to display\n this.largeIconInstance.items = currentViewItems.slice(0, this.itemCount);\n };\n /**\n * Sets the height of the top and bottom elements that are used for virtualization.\n * These elements are used to give the appearance of an infinitely scrolling list.\n */\n Virtualization.prototype.setUlElementHeight = function () {\n // Calculate the number of items in the last row\n this.lastRowCount = (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount ?\n (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount : this.rowItemCount;\n // Create top and bottom elements\n this.topElement = this.filemanagerInstance.createElement('div');\n this.topElement.classList.add(\"e-virtual-top\");\n this.largeIconInstance.element.firstElementChild.insertBefore(this.topElement, this.largeIconInstance.element.firstElementChild.firstChild);\n this.bottomElement = this.filemanagerInstance.createElement('div');\n this.bottomElement.classList.add(\"e-virtual-bottom\");\n this.largeIconInstance.element.firstElementChild.insertBefore(this.bottomElement, null);\n // Get the margin value for list items\n var marginValue = parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-bottom'), 10);\n // Calculate the height of a single list item\n this.listItemHeight = this.largeIconInstance.itemList[0].getBoundingClientRect().height + marginValue;\n // Calculate the total height of the list\n this.totalHeight = (Object.keys(this.largeIconInstance.allItems).length / this.rowItemCount) * this.listItemHeight;\n // Set the initial height of the top and bottom elements\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n // Initialize the top and bottom element heights\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n // Initialize the list difference variable\n this.listDiff = 0;\n // Set the initial rendered count\n this.renderedCount = this.itemCount;\n };\n /**\n * Calculates the number of items to display in the list based on the available width and height.\n * @param dataSourceLength The length of the data source.\n * @returns The number of items to display.\n */\n Virtualization.prototype.getItemCount = function (dataSourceLength) {\n // Get the margin values for list items\n var widthMargin = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-right'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-left'), 10);\n // Calculate the number of items that can fit in a single row\n this.rowItemCount = Math.floor(parseFloat(formatUnit(this.largeIconInstance.element.firstElementChild.clientWidth)) / (this.itemList[0].offsetWidth + widthMargin));\n // Calculate the number of items that can fit in the available height\n var itemCount = this.rowItemCount * (Math.round(parseFloat(formatUnit(this.largeIconInstance.element.clientHeight)) / this.itemList[0].offsetHeight));\n // If the calculated item count is greater than the data source length, set the item count to the data source length\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n /**\n * Wires or un wires the scroll event for the list element.\n * @param destroy - Set `true` to unwire the scroll event.\n */\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n // Wire the scroll event\n EventHandler.add(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll, this);\n }\n else {\n // Unwire the scroll event\n EventHandler.remove(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll);\n }\n };\n /**\n * Handles the scroll event for the list element.\n * This method updates the top and bottom elements and the displayed items based on the scroll position.\n */\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n // Set the starting height to 0\n var startingHeight = 0;\n // Get the current scroll position\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n // Calculate the height of the top element\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n // Calculate the height of the bottom element\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n // If the scroll position is less than or equal to the total height, set the top and bottom element heights.\n // Otherwise, set the top element height to the total height and the bottom element height to 0.\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n // If the top element height has changed, update the top and bottom element heights and re-render the items.\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n // Check whether the scroll direction is upward or downward\n if (scroll > this.scrollPosition) {\n // Scrolling is upward\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n this.onNormalScroll(listDiff, true);\n }\n else {\n // Scrolling is downward\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n this.onNormalScroll(listDiff, false);\n }\n }\n // Update the list difference and scroll position variables\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n this.scrollPosition = scroll;\n // Update the list of items and the items property of the largeIconInstance\n this.largeIconInstance.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.largeIconInstance.element));\n this.largeIconInstance.items = this.largeIconInstance.allItems.slice(this.renderedCount -\n this.itemCount, this.renderedCount);\n };\n /**\n * Calculates the current scroll position of the list element.\n * @param startingHeight The starting height from which to calculate the scroll position.\n * @returns The current scroll position.\n */\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n // If the scroll position is less than or equal to the starting height, return 0.\n // Otherwise, return the scroll position minus the starting height.\n return ((this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight) <= 0) ? 0 :\n (this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight);\n };\n /**\n * This method updates the displayed items and the selection based on the scroll direction.\n * @param listDiff The number of rows to update.\n * @param isScrollingDown If set to true, the scroll direction is downward.\n */\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n // Update the displayed items\n for (var i = 0; i < listDiff; i++) {\n this.updateUI(isScrollingDown);\n }\n };\n /**\n * Updates the items in the large icons view.\n * @param isScrollingDown If set to true, the scroll direction is downward.\n */\n Virtualization.prototype.updateUI = function (isScrollingDown) {\n var _this = this;\n if (isScrollingDown) {\n // Get the next batch of items to be displayed\n this.items = this.largeIconInstance.allItems.slice(this.renderedCount, this.renderedCount + this.rowItemCount);\n // If there are items to be displayed, create list elements for them and append them to the list\n if (this.items.length > 0) {\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n this.itemList.forEach(function (liEle) {\n _this.largeIconInstance.element.firstElementChild.insertBefore(liEle, _this.bottomElement);\n });\n // Update the rendered count variable\n this.renderedCount = (this.largeIconInstance.allItems.length >= this.renderedCount + this.rowItemCount) ?\n this.renderedCount + this.rowItemCount : this.renderedCount + this.lastRowCount;\n // Remove the first batch of items from the list\n for (var i = 0; i < this.rowItemCount; i++) {\n detach(this.topElement.nextElementSibling);\n }\n }\n }\n else {\n // Scrolling up\n var lastItemIndex = void 0;\n var isAllRendered = void 0;\n if (this.renderedCount === this.largeIconInstance.allItems.length) {\n // Set lastItemIndex to the last item in the last row\n lastItemIndex = this.renderedCount - (this.itemCount - this.rowItemCount + this.lastRowCount);\n // Set renderedCount to the total number of items that have been rendered, except for the items in the last row\n this.renderedCount = ((this.renderedCount - this.lastRowCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.lastRowCount);\n // Set isAllRendered to true to indicate that all items have been rendered\n isAllRendered = true;\n }\n else {\n // Set lastItemIndex to the last item in the current row\n lastItemIndex = this.renderedCount - this.itemCount;\n // Set renderedCount to the total number of items that have been rendered, except for the items in the current row\n this.renderedCount = ((this.renderedCount - this.rowItemCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.rowItemCount);\n }\n // Set startItemIndex to the first item in the current or previous row\n var startItemIndex = (lastItemIndex - this.rowItemCount > 0) ? lastItemIndex - this.rowItemCount : 0;\n // Set the items array to the items in the current or previous row\n this.items = this.largeIconInstance.allItems.slice(startItemIndex, lastItemIndex);\n if (this.items.length > 0) {\n // Create a list of elements from the items array\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n // Set the itemList array to the list items in the list elements\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Add the items to the beginning of the list\n for (var len = this.itemList.length; len > 0; len--) {\n this.largeIconInstance.element.firstElementChild.insertBefore(this.itemList[len - 1], this.topElement.nextElementSibling);\n }\n // Remove the last row of items from the list\n for (var i = 0; i < ((isAllRendered) ? this.lastRowCount : this.rowItemCount); i++) {\n detach(this.bottomElement.previousElementSibling);\n }\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 Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n /**\n * Destroys the component.\n */\n Virtualization.prototype.destroy = function () {\n // If the file manager has already been destroyed, return immediately\n if (this.filemanagerInstance.isDestroyed) {\n return;\n }\n // If the large icon element has a child element, unwire the scroll event\n if (!isNullOrUndefined(this.largeIconInstance.element.firstElementChild)) {\n this.wireScrollEvent(true);\n }\n };\n return Virtualization;\n}());\nexport { Virtualization };\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, getPathId } 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.isSameNodeClicked = false;\n this.isNodeExpandCalled = 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: false,\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 (directories[0].filterPath == null || this.getTreeData(target)[0].filterPath == null || directories[0].filterPath !== this.getTreeData(target)[0].filterPath)) {\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 var element = select('[data-uid=\"' + target + '\"]', this.treeObj.element);\n var childElements = select('ul', element);\n if (isNOU(childElements)) {\n // eslint-disable-next-line\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n }\n };\n // Node Selecting event handler\n NavigationPane.prototype.onNodeSelecting = function (args) {\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !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 if (args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1] && !this.isRightClick && !this.isNodeClickCalled || this.isSameNodeClicked) {\n this.isNodeClickCalled = false;\n if (!this.isSameNodeClicked) {\n this.isSameNodeClicked = true;\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n if (!this.isRightClick) {\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n }\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.isNodeClickCalled = true;\n this.isSameNodeClicked = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.selectedNodes = [args.node.getAttribute(\"data-uid\")];\n }\n }\n else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: this.isNodeClickCalled };\n this.parent.trigger('fileSelect', selecEventArgs);\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 var eventArgs = { cancel: false, fileDetails: data[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n this.isNodeClickCalled = true;\n if (!eventArgs.cancel) {\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 };\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 this.isNodeClickCalled = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent) {\n this.parent.pathId = getPathId(args.node);\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 var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n if (!this.isRightClick && this.isSameNodeClicked) {\n updatePath(args.node, this.parent.itemData[0], this.parent);\n }\n else {\n this.parent.pathId = getPathId(args.node);\n this.parent.visitedItem = args.node;\n }\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n if (previousPath !== this.parent.path) {\n if (!this.isRightClick && this.isSameNodeClicked) {\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.isNodeClickCalled = true;\n }\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = this.isSameNodeClicked = 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 this.parent.pathId.push(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n this.isNodeExpandCalled = true;\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 this.isNodeExpandCalled = false;\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 else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && !this.isNodeClickCalled && !this.isNodeExpandCalled) {\n if (args.event.which === 3) {\n this.isRightClick = true;\n }\n this.isSameNodeClicked = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\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 && !(this.parent.hasId)) {\n this.updateTree(args);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + CLS.LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.selectedNodes = [sleId];\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + CLS.ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.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 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 var selectedNode = this.treeObj.getTreeData().filter(function (obj) { return obj.name === resultObj.name; })[0];\n this.treeObj.selectedNodes = [getValue('_fm_id', selectedNode)];\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, initializeCSPTemplate, extend } 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 persistSelection: (this.parent.enableVirtualization) ? true : false\n },\n enableRtl: this.parent.enableRtl,\n pageSettings: { pageSize: 20 },\n enableVirtualization: this.parent.enableVirtualization,\n enablePersistence: this.parent.enablePersistence,\n enableVirtualMaskRow: true,\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 height: (this.parent.enableVirtualization) ? this.getGridHeight() : 'auto',\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 if (this.parent.isReact) {\n this.gridObj.isReact = true;\n this.gridObj.portals = [];\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\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.reactTemplateRender = function (args) {\n this.parent[\"portals\"] = args;\n if (this.parent.portals && this.parent.toolbarModule && this.parent.toolbarModule.toolbarObj &&\n this.parent.toolbarModule.toolbarObj.portals) {\n this.parent[\"portals\"] = this.parent[\"portals\"].concat(this.parent.toolbarModule.toolbarObj.portals);\n }\n this.parent.notify('renderReactTemplate', this.parent[\"portals\"]);\n this.parent[\"renderReactTemplates\"]();\n };\n /**\n * Gets the grid height.\n *\n * @returns The grid height.\n * @private\n */\n DetailsView.prototype.getGridHeight = function () {\n // Get the content pane and breadcrumb bar elements\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 // The maximum height of the header is 36\n var headerMaxHeight = 36;\n // Calculate and return the grid height\n return (pane.offsetHeight - bar.offsetHeight - headerMaxHeight);\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: initializeCSPTemplate(function (data) {\n return \"<div class=\\\"e-fe-text\\\">\" + data.name + \"</div><div class=\\\"e-fe-date\\\">\" + data._fm_modified + \"</div>' +\\n '<span class=\\\"e-fe-size\\\">\" + data.size + \"</span>\";\n })\n }\n ];\n }\n else {\n columns = extend([], this.parent.detailsViewSettings.columns, null, true);\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,\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-icon \" + data._fm_iconClass + \"\\\"></span>\";\n }), allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: initializeCSPTemplate(function () {\n return \"<span class=\\\"e-fe-icon e-fe-folder\\\"></span>\";\n })\n };\n columns.unshift(icon);\n if (this.parent.showItemCheckBoxes) {\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 sizeFormat = void 0;\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'size') {\n sizeFormat = !isNullOrUndefined(columns[i].format) ? columns[i].format.toString() : 'n';\n break;\n }\n }\n var value = intl.formatNumber((sizeValue / 1024), { format: sizeFormat });\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.parent.enableVirtualization) ? args.result : 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 && !this.parent.enableVirtualization) ||\n ((this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization &&\n this.element.querySelector('.e-content').scrollTop == 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 else if (!this.parent.showFileExtension && node.includes('.')) {\n var Str2 = node.split('.').slice(0, -1).join('.');\n if (nodes.indexOf(Str2) !== -1) {\n sRecords.push(i);\n }\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 if (this.element.querySelector('.e-content').scrollTop !== 0) {\n this.gridObj.freezeRefresh();\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 this.interaction = true;\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 this.gridObj.freezeRefresh();\n if (this.parent.isReact) {\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\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 if (_this.parent.enableVirtualization) {\n _this.parent.element.querySelector('#' + _this.parent.element.id + CLS.IMG_DIALOG_ID).focus();\n }\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\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 (!isNullOrUndefined(this.gridObj.sortSettings.columns[0]) && 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 = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : 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.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: false,\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 if (this.parent.isReact) {\n this.gridObj.off('reactTemplateRender', this.reactTemplateRender);\n }\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 (this.parent.enableVirtualization) {\n this.parent.currentItemText = getValue('name', args.data);\n }\n else 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.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {\n this.addFocus(this.gridObj.selectedRowIndex);\n }\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 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 '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"],"names":["updatePath","node","data","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","getPathId","pathNames","element","matched","getParents","names","i","length","push","getPathNames","ids","isId","el","parentNode","matches","CLS.LIST_ITEM","parentText","select","CLS.LIST_TEXT","textContent","classList","contains","CLS.TREE_VIEW","removeActive","parent","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","allItems","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","feParent","copyFiles","fileAction","cutFiles","fileType","file","CLS.FOLDER","filetype","toLowerCase","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","getImageUrl","item","imgUrl","baseUrl","ajaxSettings","url","pathUrl","fileName","encodeURIComponent","fPath","imgId","replace","eventArgs","fileDetails","imageUrl","Date","getTime","toString","trigger","getFullPath","filePath","getName","name","getSortedData","items","query","sortOrder","Query","sortBy","group","lists","DataManager","executeLocal","getObject","key","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","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","column","substring","lastIndexOf","field","detailsViewSettings","columns","len","setNextPath","currfolders","folders","originalPath","root","eventName","events.finalizeEnd","events.initialEnd","newPath","openSearchFolder","isRoot","searchData","isNullOrUndefined","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","validateSubFolder","events.pasteInit","paste","createDialog","code","message","fileExists","dropPath","dragPath","subFolder","srcData","dragNodes","tempTarget","oldPath","getDirectoryPath","cwd","doPasteUpdate","operation","result","events.dragEnd","events.cutEnd","duplicateItems","pasteNodes","count","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","events.pasteEnd","readDropPath","dropData","expandedId","events.pathDrag","navigationpaneModule","treeObj","document","events.dropPath","createVirtualDragElement","dragData","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","dropHandler","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","scrollHandler","scrollParent","nodeClass","screenY","clientY","position","elementData","getBoundingClientRect","clientHeight","scrollBy","draggingHandler","canDrop","setTimeout","events.dragging","parentElement","y","firstElementChild","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","setValue","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","showFileExtension","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","generatePath","intl","Internationalization","localeString","dateFormat","createdDate","modifiedDate","formatDate","format","setDateObject","getDateFormat","rootId","dirs","setNodeId","rootName","location_1","RegExp","match","events.searchTextChange","send","events.selectionChanged","pop","dialogObj","visible","nextElementSibling","hide","createdItem","events.createEnd","renamedItem","Array","isArray","events.renameEndParent","events.pathChanged","renameText","events.renameEnd","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","e","replaceItems","options","formattedString","strArr","location","header","content","buttons","dialogName","open","triggerPopupOpen","close","triggerPopupClose","multipleFiles","buttonModel","isPrimary","onSubmit","createInput","oninput","onValidate","onkeyup","getKeyCode","focus","setSelectionRange","focusInput","bind","this","events.deleteInit","onDeleteSubmit","onReSubmit","inputEle","txt","index","onFocusRenameInput","modified","CLS.VALUE","str","keys","Object","objectToString","size","index_1","undefined","map","val","substr","every","arr","toLocaleUpperCase","events.actionFailure","CLS.ERROR_CONTENT","getOptions","Dialog","beforeOpen","keydownAction","beforeClose","triggerPopupBeforeClose","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","width","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","dataBind","show","changeOptions","extOptions","duplicateContent","extDialogObj","records","getDuplicateData","item_1","indexval","item_2","ind","retryFiles","isRetryOpened","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","isApplySame","checked","retryDlgClose","retryDlgUpdate","splice","events.skipUpload","getExtOptions","beforeExtOpen","CLS.EXTN_DIALOG_ID","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","isKeepBoth","retryArgs","retry","onKeepBothAll","onReplaceAll","flag","placeholder","Input","properties","preventKeydown","selectAll","dlgName","btnElement","_loop_1","btnCount","onkeydown","keyCode","preventDefault","onSubmitValidate","oIndex","renamedId","oldExtension","nIndex","newExtension","test","addInvalid","which","charCode","createImageDialog","image","src","alt","viewerObj","height","enableResize","X","Y","updateImage","resizing","resizeStop","CLS.IMG_DIALOG_ID","imgWrap","cssObj","getComputedStyle","paddingWidth","parseFloat","paddingRight","paddingHeight","paddingBottom","offsetWidth","__extends","extendStatics","d","b","setPrototypeOf","__proto__","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","AjaxSettings","_super","apply","Property","ChildProperty","defaultToolbarItems","ToolbarSettings","ToolbarItem","SearchSettings","columnArray","headerText","minWidth","isPrimaryKey","template","initializeCSPTemplate","customAttributes","class","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","TOOLBAR_ID","LAYOUT_ID","TREE_ID","GRID_ID","LARGEICON_ID","DIALOG_ID","IMG_DIALOG_ID","EXTN_DIALOG_ID","UPLOAD_DIALOG_ID","CONTEXT_MENU_ID","CONTENT_ID","BREADCRUMBBAR_ID","UPLOAD_ID","ROOT","CONTROL","CHECK_SELECT","ROOT_POPUP","MOBILE","MOB_POPUP","MULTI_SELECT","FILTER","LAYOUT_CONTENT","LARGE_ICONS","TB_ITEM","LIST_ITEM","LIST_TEXT","LIST_PARENT","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_ITEM","MENU_ICON","GRID_VIEW","GRID_CONTENT","ICON_VIEW","ICON_OPEN","ICON_UPLOAD","ICON_CUT","ICON_COPY","ICON_PASTE","ICON_DELETE","ICON_RENAME","ICON_NEWFOLDER","ICON_DETAILS","ICON_SHORTBY","ICON_REFRESH","ICON_SELECTALL","ICON_DOWNLOAD","ICON_GRID","ICON_LARGE","ICON_BREADCRUMB","ICON_CLEAR","ICONS","ERROR_CONTENT","DISPLAY_NONE","FULLROW","SPLIT_BAR","HEADER_CHECK","VALUE","modelChanged","initialEnd","finalizeEnd","createEnd","filterEnd","pathDrag","deleteInit","deleteEnd","refreshEnd","resizeEnd","splitterResize","pathChanged","destroy","beforeRequest","skipUpload","afterRequest","layoutRefresh","actionFailure","search","openInit","openEnd","selectionChanged","selectAllInit","clearAllInit","clearPathInit","layoutChange","sortByChange","nodeExpand","detailsInit","menuItemData","renameInit","renameEndParent","renameEnd","showPaste","hidePaste","selectedData","cutCopyInit","pasteInit","pasteEnd","cutEnd","hideLayout","updateTreeSelection","sortColumn","pathColumn","searchTextChange","downloadInit","dropInit","dragEnd","dragging","updateSelectionData","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","LargeIconsView","isInteraction","uploadOperation","isRendered","tapCount","isSelectAllCalled","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","events.hideLayout","iconsView","ul","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","htmlAttributes","itemCreated","onItemCreated","renderList","CLS.DISPLAY_NONE","enableVirtualization","adjustHeight","virtualizationModule","setUIVirtualization","listElements","ListBase","createListFromJson","itemList","slice","call","preventImgDrag","createDragObj","emptyList","CLS.LIST_PARENT","selectItems","activeEle","CLS.ACTIVE","maxHeight","getItemCount","wireEvents","setUlElementHeight","wireScrollEvent","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","showItemCheckBoxes","checkElement","createCheckBox","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","doSelection","ctrlKey","shiftKey","onClearAllInit","clearSelection","onBeforeRequest","onAfterRequest","onSearch","onLayoutRefresh","onUpdateSelectionData","onPathColumn","isDestroyed","off","events.selectedData","events.openInit","events.modelChanged","onPropertyChanged","events.methodCall","onMethodCall","onActionFailure","events.renameInit","events.selectAllInit","events.clearAllInit","events.menuItemData","onMenuItemData","events.splitterResize","splitterResizeHandler","events.resizeEnd","resizeHandler","onpasteInit","onpasteEnd","oncutCopyInit","events.detailsInit","onDetailsInit","events.layoutRefresh","onDropPath","events.updateSelectionData","events.filterEnd","on","currentSelected","_i","_a","newProp","allowMultiSelection","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","CLS.MULTI_SELECT","updateType","cList","CLS.CHECK","triggerSelection","startIndex","endIndex","addActive","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","folder","fItem","getFocusedItem","firstItem","scrollTo","scrollHeight","navigateItem","scrollTop","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","marginValue","parseInt","getPropertyValue","isVisible","liParent","liScrPos","getCurFocusedItem","dItem","lItem","rItem","uItem","getDataName","preItem","toCheck","CLS.CB_WRAP","eles","visitedData","j","byId","resultData","newData","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","isFilter","filterName","name_2","BreadCrumbBar","addressPath","addressBarLink","searchTimer","searchWrapWidth","prop","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","CLS.ICONS","innerText","ulElement","breadCrumbBarNavigation","subMenuObj","searchWrap","updateBreadCrumbBar","addresBarUL","liElements","pRight","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","diff","liElement","utext","subMenuLi","subMenuSpan","DropDownButton","CLS.ICON_BREADCRUMB","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","nodeName","children","currentPath","triggerFileOpen","treeNodeId","events.updateTreeSelection","CLS.FILTER","list","liElementId","link","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onResize","onPasteEnd","events.destroy","onSearchTextChange","liEle","ContextMenu","isMenuItemClicked","currentItems","currentElement","disabledItems","downarrow","uparrow","contextMenu","Menu","onBeforeItemRender","onSelect","onBeforeOpen","onBeforeClose","CLS.CONTEXT_MENU_ID","getMenuId","iconSpan","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","menuTarget","uid","treeFolder","targetNodeElement","activeNode","getElementsByClassName","CLS.FULLROW","targetElement","getTargetView","updateActiveModule","CLS.TOOLBAR_ID","setLayoutItem","CLS.MENU_ITEM","CLS.TREE_ID","getRowObjectFromUID","selectRows","setFileItem","setFolderItem","pasteEle","isSubMenu","getMenuItemData","menuModule","menuType","menuOpenArgs","enableItems","CLS.GRID_ID","CLS.ICON_VIEW","getItemIndex","itemId","disableItem","concat","enable","isUniqueId","checkValidItem","isTree","getItemData","contextMenuSettings","trim","selectedTreeNode","layout","nameEle","menuClickArgs","sItems","events.downloadInit","openFileOnContextMenuClick","separator","CLS.ICON_OPEN","CLS.ICON_UPLOAD","CLS.ICON_CUT","CLS.ICON_COPY","CLS.ICON_PASTE","CLS.ICON_DELETE","CLS.ICON_RENAME","CLS.ICON_NEWFOLDER","CLS.ICON_DETAILS","CLS.ICON_SHORTBY","CLS.TB_OPTION_DOT","CLS.TB_OPTION_TICK","CLS.ICON_REFRESH","CLS.ICON_SELECTALL","CLS.ICON_DOWNLOAD","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","addOnPersist","requiredModules","modules","member","toolbarSettings","initialize","slItems","fileView","navigator","platform","toUpperCase","setRtl","addEventListeners","splitterObj","collapse","CLS.SPLIT_BAR","renderComplete","CLS.MOBILE","CLS.CHECK_SELECT","addCssClass","renderFileUpload","headerWrap","layoutWrap","navigationWrap","treeWrap","contentWrap","CLS.LAYOUT_CONTENT","gridWrap","largeiconWrap","role","overlay","paneSettings","min","max","maxWidth","Splitter","dialogWrap","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","CLS.UPLOAD_DIALOG_ID","toolbar","toolBarHeight","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","toolbarModule","contextmenuModule","disableToolbarItems","enableToolbarItems","disableMenuItems","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","rtl","Complex","Collection","Event","NotifyPropertyChanges","Component","__assign","assign","t","s","n","Toolbar","default","single","multiple","selection","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","created","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","toolbarItems","tool","toolbarClickArgs","CLS.TB_ITEM","getPupupId","buttonObj","layoutBtnObj","hideItems","hideStatus","portals","updateSortByButton","itemCount","propItem","getItemModel","itemTooltip","tooltipText","prefixIcon","showTextOn","spanElement","suffixIcon","CLS.ICON_CLEAR","overflow","align","viewText","mergedItems","disabled","showAlwaysInPopup","tabIndex","onSelectionChanged","reRenderToolbar","itemsToProcess","hideItem","tools","toHide","refreshOverflow","isEnable","Virtualization","filemanagerInstance","largeIconInstance","currentViewItems","firstChild","lastRowCount","rowItemCount","topElement","bottomElement","listItemHeight","totalHeight","topElementHeight","bottomElementHeight","listDiff","renderedCount","dataSourceLength","widthMargin","Math","floor","round","onVirtualUiScroll","scrollPosition","scroll","getscrollerHeight","onNormalScroll","startingHeight","isScrollingDown","updateUI","forEach","lastItemIndex","isAllRendered","startItemIndex","previousElementSibling","NavigationPane","removeNodes","moveNames","expandTree","isDrag","isPathDragged","isRenameParent","isRightClick","isSameNodeClicked","isNodeExpandCalled","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","childElements","addNodes","selecEventArgs","expandNodeTarget","onPathDrag","selectResultNode","events.nodeExpand","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","obj","itemname","checkDropPath","onDragging","dataobj","level","keyDown","DetailsView","interaction","isColumnRefresh","firstItemIndex","isSelectionUpdate","currentSelectedItem","isLoaded","isNameWidth","actionDivert","Grid","Resize","Sort","VirtualScroll","checkNameWidth","getColumns","sortSettings","direction","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","columnResizing","selectionSettings","checkboxMode","persistSelection","pageSettings","pageSize","enablePersistence","enableVirtualMaskRow","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","getGridHeight","beforeCopy","load","focusModule","isReact","reactTemplateRender","emptyArgs","initialColumn","adjustWidth","fieldName","nameWidth","headerTextAlign","_fm_modified","iWidth","_fm_iconClass","headerTemplate","unshift","cWidth","cBox","disableHtmlEncode","gridHeader","renderCheckBox","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","sizeFormat","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","selectRecords","currentViewData","getRowHeight","hdTable","getHeaderContent","paddingLeft","borderRightWidth","cnTable","getContent","overflowY","checkEmptyDiv","gridRecords","getCurrentViewRecords","sRecords","includes","Str2","selectedRowIndex","rData","onSortColumn","sortModule","freezeRefresh","onDetailsResize","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","selectionModule","selectRowsByRange","getRows","selectRow","removeSelection","CLS.HEADER_CHECK","onPasteInit","onDetailsResizeHandler","getRowInfo","dragRow","getSelectedRows","gridHeaderColGroup","gridContentColGroup","gridHeaderColNames","selectedRecords","getRowByIndex","isHeaderCheckboxClicked","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","check","getRecords","hasFilter","name_4","dRecords"],"mappings":"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"}
|