@syncfusion/ej2-filemanager 19.2.60 → 19.3.55
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/.eslintrc.json +1 -1
- package/CHANGELOG.md +16 -0
- 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 +9 -4
- package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
- package/dist/es6/ej2-filemanager.es5.js +9 -4
- 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 +15 -15
- package/src/file-manager/base/file-manager-model.d.ts +1 -1
- package/src/file-manager/common/utility.js +1 -1
- package/src/file-manager/layout/details-view.js +1 -1
- package/src/file-manager/models/default-locale.js +1 -1
- package/src/file-manager/pop-up/dialog.js +6 -1
- package/styles/bootstrap-dark.css +6 -2
- package/styles/bootstrap.css +8 -4
- package/styles/bootstrap4.css +10 -2
- package/styles/bootstrap5-dark.css +1973 -0
- package/styles/bootstrap5-dark.scss +1 -0
- package/styles/bootstrap5.css +1973 -0
- package/styles/bootstrap5.scss +1 -0
- package/styles/fabric-dark.css +8 -4
- package/styles/fabric.css +6 -2
- package/styles/file-manager/_bootstrap-dark-definition.scss +1 -1
- package/styles/file-manager/_bootstrap-definition.scss +2 -2
- package/styles/file-manager/_bootstrap4-definition.scss +1 -1
- package/styles/file-manager/_bootstrap5-dark-definition.scss +1 -0
- package/styles/file-manager/_bootstrap5-definition.scss +237 -0
- package/styles/file-manager/_fabric-dark-definition.scss +1 -1
- package/styles/file-manager/_fabric-definition.scss +1 -1
- package/styles/file-manager/_highcontrast-definition.scss +3 -3
- package/styles/file-manager/_highcontrast-light-definition.scss +1 -1
- package/styles/file-manager/_layout.scss +86 -52
- package/styles/file-manager/_tailwind-dark-definition.scss +1 -232
- package/styles/file-manager/_theme.scss +17 -11
- package/styles/file-manager/bootstrap-dark.css +6 -2
- package/styles/file-manager/bootstrap.css +8 -4
- package/styles/file-manager/bootstrap4.css +10 -2
- package/styles/file-manager/bootstrap5-dark.css +1973 -0
- package/styles/file-manager/bootstrap5-dark.scss +16 -0
- package/styles/file-manager/bootstrap5.css +1973 -0
- package/styles/file-manager/bootstrap5.scss +16 -0
- package/styles/file-manager/fabric-dark.css +8 -4
- package/styles/file-manager/fabric.css +6 -2
- package/styles/file-manager/highcontrast-light.css +6 -2
- package/styles/file-manager/highcontrast.css +8 -4
- package/styles/file-manager/icons/_bootstrap5-dark.scss +1 -0
- package/styles/file-manager/icons/_bootstrap5.scss +235 -0
- package/styles/file-manager/icons/_tailwind-dark.scss +1 -235
- package/styles/file-manager/material-dark.css +21 -17
- package/styles/file-manager/material.css +5 -1
- package/styles/file-manager/tailwind-dark.css +12 -5
- package/styles/file-manager/tailwind.css +10 -3
- package/styles/highcontrast-light.css +6 -2
- package/styles/highcontrast.css +8 -4
- package/styles/material-dark.css +21 -17
- package/styles/material.css +5 -1
- package/styles/tailwind-dark.css +12 -5
- package/styles/tailwind.css +10 -3
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ej2-filemanager.min.js","sources":["../../src/file-manager/common/utility.js","../../src/file-manager/common/operations.js","../../src/file-manager/pop-up/dialog.js","../../src/file-manager/models/ajax-settings.js","../../src/file-manager/models/toolbar-settings.js","../../src/file-manager/models/search-settings.js","../../src/file-manager/models/details-view-settings.js","../../src/file-manager/models/contextMenu-settings.js","../../src/file-manager/models/navigation-pane-settings.js","../../src/file-manager/models/upload-settings.js","../../src/file-manager/models/column.js","../../src/file-manager/base/classes.js","../../src/file-manager/base/constant.js","../../src/file-manager/layout/large-icons-view.js","../../src/file-manager/actions/breadcrumb-bar.js","../../src/file-manager/pop-up/context-menu.js","../../src/file-manager/models/default-locale.js","../../src/file-manager/base/file-manager.js","../../src/file-manager/actions/toolbar.js","../../src/file-manager/layout/navigation-pane.js","../../src/file-manager/layout/details-view.js","../../src/global.js"],"sourcesContent":["import * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { read, paste, Search, filter, Download, Delete } from '../common/operations';\nimport { getValue, setValue, isNullOrUndefined as isNOU, matches, select, createElement } from '@syncfusion/ej2-base';\nimport { closest, detach } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createDialog } from '../pop-up/dialog';\n/**\n * Utility file for common actions\n *\n * @param {HTMLLIElement} node - specifies the node.\n * @param {Object} data - specifies the data.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function updatePath(node, data, instance) {\n var text = getValue('name', data);\n var id = node.getAttribute('data-id');\n var newText = isNOU(id) ? text : id;\n instance.setProperties({ path: getPath(node, newText, instance.hasId) }, true);\n instance.pathId = getPathId(node);\n instance.pathNames = getPathNames(node, text);\n}\n/**\n * Functions for get path in FileManager\n *\n * @param {Element | Node} element - specifies the element.\n * @param {string} text - specifies the text.\n * @param {boolean} hasId - specifies the id.\n * @returns {string} returns the path.\n * @private\n */\nexport function getPath(element, text, hasId) {\n var matched = getParents(element, text, false, hasId);\n var path = hasId ? '' : '/';\n var len = matched.length - (hasId ? 1 : 2);\n for (var i = len; i >= 0; i--) {\n path += matched[i] + '/';\n }\n return path;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} node - specifies the node element.\n * @returns {string[]} returns the path ids.\n * @private\n */\nexport function getPathId(node) {\n var matched = getParents(node, node.getAttribute('data-uid'), true);\n var ids = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n ids.push(matched[i]);\n }\n return ids;\n}\n/**\n * Functions for get path names in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @returns {string[]} returns the path names.\n * @private\n */\nexport function getPathNames(element, text) {\n var matched = getParents(element, text, false);\n var names = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n names.push(matched[i]);\n }\n return names;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @param {boolean} isId - specifies the id.\n * @param {boolean} hasId - checks the id exists.\n * @returns {string[]} returns parent element.\n * @private\n */\nexport function getParents(element, text, isId, hasId) {\n var matched = [text];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, '.' + CLS.LIST_ITEM)) {\n var parentText = isId ? el.getAttribute('data-uid') : (hasId ? el.getAttribute('data-id') :\n select('.' + CLS.LIST_TEXT, el).textContent);\n matched.push(parentText);\n }\n el = el.parentNode;\n if (el.classList.contains(CLS.TREE_VIEW)) {\n break;\n }\n }\n return matched;\n}\n/**\n * Functions for generate path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function generatePath(parent) {\n var key = parent.hasId ? 'id' : 'name';\n var newPath = parent.hasId ? '' : '/';\n var i = parent.hasId ? 0 : 1;\n for (i; i < parent.pathId.length; i++) {\n // eslint-disable-next-line\n var data = getValue(parent.pathId[i], parent.feParent);\n newPath += getValue(key, data) + '/';\n }\n parent.setProperties({ path: newPath }, true);\n}\n/**\n * Functions for remove active element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function removeActive(parent) {\n if (parent.isCut) {\n removeBlur(parent);\n parent.selectedNodes = [];\n parent.actionRecords = [];\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n }\n}\n/**\n * Selects active element in File Manager\n *\n * @param {string} action - specifies the action.\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns active element.\n * @private\n */\nexport function activeElement(action, parent) {\n parent.isSearchCut = false;\n parent.actionRecords = [];\n parent.activeElements = [];\n parent.notify(events.cutCopyInit, {});\n if (parent.activeElements.length === 0) {\n return false;\n }\n removeBlur(parent);\n var blurEle = parent.activeElements;\n if (parent.activeModule !== 'navigationpane') {\n parent.targetPath = parent.path;\n }\n else {\n parent.targetPath = getParentPath(parent.path);\n }\n var i = 0;\n if (blurEle) {\n getModule(parent, blurEle[0]);\n if (action === 'cut') {\n while (i < blurEle.length) {\n addBlur(blurEle[i]);\n i++;\n }\n }\n }\n i = 0;\n parent.selectedNodes = [];\n parent.enablePaste = true;\n parent.notify(events.showPaste, {});\n while (i < parent.activeRecords.length) {\n parent.actionRecords.push(parent.activeRecords[i]);\n parent.selectedNodes.push(getValue('name', parent.activeRecords[i]));\n i++;\n }\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) &&\n parent.activeModule !== 'navigationpane') {\n parent.selectedNodes = [];\n parent.isSearchCut = true;\n var i_1 = 0;\n while (i_1 < parent.selectedItems.length) {\n parent.selectedNodes.push(parent.selectedItems[i_1]);\n i_1++;\n }\n }\n return true;\n}\n/**\n * Adds blur to the elements\n *\n * @param {Element} nodes - specifies the nodes.\n * @returns {void}\n * @private\n */\nexport function addBlur(nodes) {\n nodes.classList.add(CLS.BLUR);\n}\n/**\n * Removes blur from elements\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} hover - specifies the hover string.\n * @returns {void}\n * @private\n */\nexport function removeBlur(parent, hover) {\n var blurEle = (!hover) ? parent.element.querySelectorAll('.' + CLS.BLUR) :\n parent.element.querySelectorAll('.' + CLS.HOVER);\n var i = 0;\n while (i < blurEle.length) {\n blurEle[i].classList.remove((!hover) ? CLS.BLUR : CLS.HOVER);\n i++;\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getModule(parent, element) {\n if (element) {\n if (element.classList.contains(CLS.ROW)) {\n parent.activeModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICON)) {\n parent.activeModule = 'largeiconsview';\n }\n else {\n parent.activeModule = 'navigationpane';\n }\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} value - specifies the value.\n * @param {boolean} isLayoutChange - specifies the layout change.\n * @returns {void}\n * @private\n */\nexport function searchWordHandler(parent, value, isLayoutChange) {\n var searchWord;\n if (value.length === 0 && !parent.isFiltered) {\n parent.notify(events.pathColumn, { args: parent });\n }\n if (parent.searchSettings.filterType === 'startsWith') {\n searchWord = value + '*';\n }\n else if (parent.searchSettings.filterType === 'endsWith') {\n searchWord = '*' + value;\n }\n else {\n searchWord = '*' + value + '*';\n }\n parent.searchWord = searchWord;\n parent.itemData = [getPathObject(parent)];\n if (value.length > 0) {\n var caseSensitive = parent.searchSettings.ignoreCase;\n var hiddenItems = parent.showHiddenItems;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchWord, hiddenItems, !caseSensitive);\n }\n else {\n if (!parent.isFiltered) {\n read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n else {\n filter(parent, events.layoutChange);\n }\n }\n}\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} view - specifies the view.\n * @returns {void}\n * @private\n */\nexport function updateLayout(parent, view) {\n parent.setProperties({ view: view }, true);\n if (parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) {\n parent.layoutSelectedItems = parent.selectedItems;\n }\n var searchWord = '';\n if (parent.breadcrumbbarModule.searchObj.element.value) {\n searchWord = parent.breadcrumbbarModule.searchObj.element.value;\n }\n parent.isLayoutChange = true;\n searchWordHandler(parent, searchWord, true);\n}\n/* istanbul ignore next */\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getTargetModule(parent, element) {\n var tartgetModule = '';\n if (element) {\n if (closest(element, '.e-gridcontent')) {\n tartgetModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICONS)) {\n tartgetModule = 'largeiconsview';\n }\n else if (element.classList.contains('e-fullrow') ||\n element.classList.contains('e-icon-expandable')) {\n tartgetModule = 'navigationpane';\n }\n else if (closest(element, '.e-address-list-item')) {\n tartgetModule = 'breadcrumbbar';\n }\n else {\n tartgetModule = '';\n }\n }\n parent.targetModule = tartgetModule;\n}\n/* istanbul ignore next */\n/**\n * refresh the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function refresh(parent) {\n parent.itemData = [getPathObject(parent)];\n if (!hasReadAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionRead);\n }\n else {\n read(parent, events.refreshEnd, parent.path);\n }\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function openAction(parent) {\n read(parent, events.openEnd, parent.path);\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {Object} - returns the path data.\n * @private\n */\n// eslint-disable-next-line\nexport function getPathObject(parent) {\n return getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n}\n/**\n * Copy files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function copyFiles(parent) {\n if (!activeElement('copy', parent)) {\n return;\n }\n else {\n parent.fileAction = 'copy';\n }\n}\n/**\n * Cut files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function cutFiles(parent) {\n if (!activeElement('cut', parent)) {\n return;\n }\n else {\n parent.isCut = true;\n parent.fileAction = 'move';\n }\n}\n/**\n * To add class for fileType\n *\n * @param {Object} file - specifies the file.\n * @returns {string} - returns the file type.\n * @private\n */\n// eslint-disable-next-line\nexport function fileType(file) {\n var isFile = getValue('isFile', file);\n if (!isFile) {\n return CLS.FOLDER;\n }\n var imageFormat = ['bmp', 'dib', 'jpg', 'jpeg', 'jpe', 'jfif', 'gif', 'tif', 'tiff', 'png', 'ico'];\n var audioFormat = ['mp3', 'wav', 'aac', 'ogg', 'wma', 'aif', 'fla', 'm4a'];\n var videoFormat = ['webm', 'mkv', 'flv', 'vob', 'ogv', 'ogg', 'avi', 'wmv', 'mp4', '3gp'];\n var knownFormat = ['css', 'exe', 'html', 'js', 'msi', 'pdf', 'pptx', 'ppt', 'rar', 'zip', 'txt', 'docx', 'doc',\n 'xlsx', 'xls', 'xml', 'rtf', 'php'];\n var filetype = getValue('type', file);\n filetype = filetype.toLowerCase();\n if (filetype.indexOf('.') !== -1) {\n filetype = filetype.split('.').join('');\n }\n var iconType;\n if (imageFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_IMAGE;\n }\n else if (audioFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_MUSIC;\n }\n else if (videoFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_VIDEO;\n }\n else if (knownFormat.indexOf(filetype) !== -1) {\n iconType = 'e-fe-' + filetype;\n }\n else {\n iconType = 'e-fe-unknown e-fe-' + filetype;\n }\n return iconType;\n}\n/* istanbul ignore next */\n/**\n * To get the image URL\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} item - specifies the item.\n * @returns {string} - returns the image url.\n * @private\n */\n// eslint-disable-next-line\nexport function getImageUrl(parent, item) {\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var imgUrl;\n var fileName = getValue('name', item);\n var fPath = getValue('filterPath', item);\n if (parent.hasId) {\n var imgId = getValue('id', item);\n imgUrl = baseUrl + '?path=' + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + '?path=' + fPath.replace(/\\\\/g, '/') + fileName;\n }\n else {\n imgUrl = baseUrl + '?path=' + parent.path + fileName;\n }\n imgUrl = imgUrl + '&time=' + (new Date().getTime()).toString();\n var eventArgs = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs);\n return eventArgs.imageUrl;\n}\n/* istanbul ignore next */\n/**\n * Gets the full path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} path - specifies the path.\n * @returns {string} - returns the image url.\n * @private\n */\n// eslint-disable-next-line\nexport function getFullPath(parent, data, path) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', data) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', data);\n if (!isNOU(fPath)) {\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return path + filePath;\n }\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @returns {string} - returns the name.\n * @private\n */\n// eslint-disable-next-line\nexport function getName(parent, data) {\n var name = getValue('name', data);\n var fPath = getValue('filterPath', data);\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) && !isNOU(fPath)) {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(parent.path, '') + name;\n }\n return name;\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object[]} items - specifies the item elements.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var query;\n if (parent.sortOrder !== 'None') {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\n // eslint-disable-next-line\n var lists = new DataManager(items).executeLocal(query);\n return getValue('records', lists);\n}\n/**\n * Gets the data object\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} key - specifies the key.\n * @param {string} value - specifies the value.\n * @returns {Object} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getObject(parent, key, value) {\n // eslint-disable-next-line\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var query = new Query().where(key, 'equal', value);\n // eslint-disable-next-line\n var lists = new DataManager(currFiles).executeLocal(query);\n return lists[0];\n}\n/**\n * Creates empty element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLElement} element - specifies the element.\n * @param {ReadArgs | SearchArgs} args - specifies the args.\n * @returns {void}\n * @private\n */\nexport function createEmptyElement(parent, element, args) {\n var top;\n var layoutElement = select('#' + parent.element.id + CLS.LAYOUT_ID, parent.element);\n var addressBarHeight = select('#' + parent.element.id + CLS.BREADCRUMBBAR_ID, layoutElement).offsetHeight;\n top = layoutElement.offsetHeight - addressBarHeight;\n if (parent.view === 'Details') {\n top = top - select('.' + CLS.GRID_HEADER, layoutElement).offsetHeight;\n }\n if (isNOU(element.querySelector('.' + CLS.EMPTY))) {\n var emptyDiv = createElement('div', { className: CLS.EMPTY });\n var emptyFolder = createElement('div', { className: CLS.LARGE_EMPTY_FOLDER });\n var emptyEle = createElement('div', { className: CLS.EMPTY_CONTENT });\n var dragFile = createElement('div', { className: CLS.EMPTY_INNER_CONTENT });\n if (parent.view === 'Details') {\n element.querySelector('.' + CLS.GRID_VIEW).appendChild(emptyDiv);\n }\n else {\n element.appendChild(emptyDiv);\n }\n emptyDiv.appendChild(emptyFolder);\n emptyDiv.appendChild(emptyEle);\n emptyDiv.appendChild(dragFile);\n }\n if (element.querySelector('.' + CLS.EMPTY)) {\n if (!isNOU(args.error)) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Access-Denied');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Access-Details');\n }\n else if (parent.isFiltered) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Key');\n }\n else if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Search-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Search-Key');\n }\n else {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Folder-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'File-Upload');\n }\n }\n var eDiv = select('.' + CLS.EMPTY, element);\n top = (top - eDiv.offsetHeight) / 2;\n eDiv.style.marginTop = top + 'px';\n}\n/**\n * Gets the directories\n *\n * @param {Object[]} files - specifies the file object.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getDirectories(files) {\n return new DataManager(files).executeLocal(new Query().where(events.isFile, 'equal', false, false));\n}\n/**\n * set the Node ID\n *\n * @param {ReadArgs} result - specifies the result.\n * @param {string} rootId - specifies the rootId.\n * @returns {void}\n * @private\n */\nexport function setNodeId(result, rootId) {\n // eslint-disable-next-line\n var dirs = getDirectories(result.files);\n for (var i = 0, len = dirs.length; i < len; i++) {\n setValue('_fm_id', rootId + '_' + i, dirs[i]);\n }\n}\n/**\n * set the date object\n *\n * @param {Object[]} args - specifies the file object.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function setDateObject(args) {\n for (var i = 0; i < args.length; i++) {\n setValue('_fm_created', new Date(getValue('dateCreated', args[i])), args[i]);\n setValue('_fm_modified', new Date(getValue('dateModified', args[i])), args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nexport function getLocaleText(parent, text) {\n var locale = parent.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n}\n/**\n * get the CSS class\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} css - specifies the css.\n * @returns {string} - returns the css classes.\n * @private\n */\nexport function getCssClass(parent, css) {\n var cssClass = parent.cssClass;\n cssClass = (isNOU(cssClass) || cssClass === '') ? css : (cssClass + ' ' + css);\n return cssClass;\n}\n/**\n * sort on click\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {MenuEventArgs} args - specifies the menu event arguements.\n * @returns {void}\n * @private\n */\nexport function sortbyClickHandler(parent, args) {\n var tick;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(events.sortColumn, { module: 'detailsview' });\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(events.sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @returns {string} - returns the sorted fields\n * @private\n */\nexport function getSortField(id) {\n var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n switch (text) {\n case 'date':\n field = '_fm_modified';\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function setNextPath(parent, path) {\n var currfolders = path.split('/');\n var folders = parent.originalPath.split('/');\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n for (var i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n var eventName = (folders[i + 1] === '') ? events.finalizeEnd : events.initialEnd;\n var newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n // eslint-disable-next-line\n var data = getObject(parent, key, folders[i]);\n var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n parent.pathId.push(id);\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n read(parent, eventName, parent.path);\n break;\n }\n}\n/**\n * Opens the searched folder\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function openSearchFolder(parent, data) {\n parent.notify(events.clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n parent.originalPath = getFullPath(parent, data, parent.path);\n read(parent, (parent.path !== parent.originalPath) ? events.initialEnd : events.finalizeEnd, parent.path);\n}\n/**\n * Paste handling function\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function pasteHandler(parent) {\n parent.isDragDrop = false;\n if (parent.selectedNodes.length !== 0 && parent.enablePaste) {\n var path = (parent.folderPath === '') ? parent.path : parent.folderPath;\n // eslint-disable-next-line\n var subFolder = validateSubFolder(parent, parent.actionRecords, path, parent.path);\n if (!subFolder) {\n if ((parent.fileAction === 'move' && parent.targetPath !== path) || parent.fileAction === 'copy') {\n parent.notify(events.pasteInit, {});\n paste(parent, parent.targetPath, parent.selectedNodes, path, parent.fileAction, [], parent.actionRecords);\n }\n else {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n removeBlur(parent);\n }\n }\n }\n}\n/**\n * Validates the sub folders\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {'{ [key: string]: Object; }[]'} data - specifies the data.\n * @param {string} dropPath - specifies the drop path.\n * @param {string} dragPath - specifies the drag path.\n * @returns {boolean} - returns the validated sub folder.\n * @private\n */\n// eslint-disable-next-line\nexport function validateSubFolder(parent, data, dropPath, dragPath) {\n var subFolder = false;\n for (var i = 0; i < data.length; i++) {\n if (!getValue('isFile', data[i])) {\n var tempTarget = getFullPath(parent, data[i], dragPath);\n if (dropPath.indexOf(tempTarget) === 0) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Sub-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n else {\n var srcData = parent.dragNodes[i];\n var len = 0;\n if (srcData) {\n len = srcData.lastIndexOf('/');\n }\n var path = '';\n if (len > 0) {\n path = dragPath + srcData.substring(0, len + 1);\n }\n if (path === dropPath) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n }\n return subFolder;\n}\n/**\n * Validates the drop handler\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function dropHandler(parent) {\n parent.isDragDrop = true;\n if (parent.dragData.length !== 0) {\n parent.dragPath = parent.dragPath.replace(/\\\\/g, '/');\n parent.dropPath = parent.dropPath.replace(/\\\\/g, '/');\n var subFolder = validateSubFolder(parent, parent.dragData, parent.dropPath, parent.dragPath);\n if (!subFolder && (parent.dragPath !== parent.dropPath)) {\n parent.itemData = [parent.dropData];\n paste(parent, parent.dragPath, parent.dragNodes, parent.dropPath, 'move', [], parent.dragData);\n parent.notify(events.pasteInit, {});\n }\n }\n}\n/**\n * Gets the parent path\n *\n * @param {string} oldPath - specifies the old path.\n * @returns {string} - returns the parent path.\n * @private\n */\nexport function getParentPath(oldPath) {\n var path = oldPath.split('/');\n var newPath = path[0] + '/';\n for (var i = 1; i < path.length - 2; i++) {\n newPath += path[i] + '/';\n }\n return newPath;\n}\n/**\n * Gets the directory path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {ReadArgs} args - returns the read arguements.\n * @returns {string} - returns the directory path\n * @private\n */\nexport function getDirectoryPath(parent, args) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', args.cwd) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', args.cwd);\n if (!isNOU(fPath)) {\n if (fPath === '') {\n return parent.hasId ? filePath : '/';\n }\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return parent.path + filePath;\n }\n}\n/**\n * Gets the do paste path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} operation - specifies the operations.\n * @param {ReadArgs} result - returns the result.\n * @returns {void}\n * @private\n */\nexport function doPasteUpdate(parent, operation, result) {\n if (operation === 'move') {\n if (!parent.isDragDrop) {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n parent.notify(events.cutEnd, result);\n }\n else {\n parent.notify(events.dragEnd, result);\n }\n }\n if (parent.duplicateItems.length === 0) {\n parent.pasteNodes = [];\n }\n var flag = false;\n for (var count = 0; (count < result.files.length) && !flag; count++) {\n parent.pasteNodes.push(result.files[count][parent.hasId ? 'id' : 'name']);\n if (parent.isDragDrop) {\n parent.droppedObjects.push(result.files[count]);\n }\n }\n parent.duplicateItems = [];\n parent.duplicateRecords = [];\n if (parent.isDragDrop && !parent.isPasteError) {\n parent.isDropEnd = true;\n }\n else {\n parent.isDropEnd = false;\n }\n if (!parent.isDragDrop || (parent.path === parent.dragPath) || (parent.path === parent.dropPath)\n || parent.isSearchDrag) {\n parent.isPathDrag = false;\n read(parent, events.pasteEnd, parent.path);\n }\n else {\n readDropPath(parent);\n }\n parent.trigger('success', { action: operation, result: result });\n}\n/**\n * Reads the drop path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function readDropPath(parent) {\n var pathId = getValue('_fm_id', parent.dropData);\n parent.expandedId = pathId;\n parent.itemData = [parent.dropData];\n if (parent.isPathDrag) {\n parent.notify(events.pathDrag, parent.itemData);\n }\n else {\n if (parent.navigationpaneModule) {\n var node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n updatePath(node, parent.dropData, parent);\n }\n read(parent, events.dropPath, parent.dropPath);\n }\n}\n/**\n * Gets the duplicated path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} name - specifies the name.\n * @returns {object} - returns the duplicated path.\n * @private\n */\n// eslint-disable-next-line\nexport function getDuplicateData(parent, name) {\n // eslint-disable-next-line\n var data = null;\n // eslint-disable-next-line\n var records = parent.isDragDrop ? parent.dragData : parent.actionRecords;\n for (var i = 0; i < records.length; i++) {\n if (getValue('name', records[i]) === name) {\n data = records[i];\n break;\n }\n }\n return data;\n}\n/**\n * Gets the create the virtual drag element\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createVirtualDragElement(parent) {\n parent.isSearchDrag = false;\n if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n parent.isSearchDrag = true;\n }\n if (parent.activeModule !== 'navigationpane') {\n parent.dragNodes = [];\n var i = 0;\n while (i < parent.selectedItems.length) {\n parent.dragNodes.push(parent.selectedItems[i]);\n i++;\n }\n if (parent.selectedItems.length == 0 && parent.dragData && parent.dragData.length == 1) {\n parent.dragNodes.push(getItemName(parent, parent.dragData[0]));\n }\n }\n var cloneIcon = parent.createElement('div', {\n className: 'e-fe-icon ' + fileType(parent.dragData[0])\n });\n var cloneName = parent.createElement('div', {\n className: 'e-fe-name',\n innerHTML: parent.dragData[0].name\n });\n var virtualEle = parent.createElement('div', {\n className: 'e-fe-content'\n });\n virtualEle.appendChild(cloneIcon);\n virtualEle.appendChild(cloneName);\n var ele = parent.createElement('div', {\n className: CLS.CLONE\n });\n ele.appendChild(virtualEle);\n if (parent.dragNodes.length > 1) {\n var badge = parent.createElement('span', {\n className: 'e-fe-count',\n innerHTML: (parent.dragNodes.length).toString(10)\n });\n ele.appendChild(badge);\n }\n parent.virtualDragElement = ele;\n parent.element.appendChild(parent.virtualDragElement);\n}\n/**\n * Drops the stop handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStopHandler(parent, args) {\n var dragArgs = args;\n dragArgs.cancel = false;\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeDropTarget(parent);\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n removeBlur(parent);\n parent.uploadObj.dropArea = select('#' + parent.element.id + CLS.CONTENT_ID, parent.element);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n getTargetModule(parent, args.target);\n parent.notify(events.dropInit, args);\n removeBlur(parent, 'hover');\n dragArgs.fileDetails = parent.dragData;\n parent.trigger('fileDragStop', dragArgs, function (dragArgs) {\n if (!dragArgs.cancel && !isNOU(parent.targetModule) && parent.targetModule !== '' && parent.dragCount > 2) {\n dropHandler(parent);\n }\n parent.dragCount = 0;\n });\n}\n/**\n * Drag the start handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {'DragEventArgs'} args - specifies the drag event arguements.\n * @param {Draggable} dragObj - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStartHandler(parent, args, dragObj) {\n var dragArgs = args;\n dragArgs.cancel = false;\n dragArgs.fileDetails = parent.dragData;\n parent.dragCount = 0;\n parent.droppedObjects = [];\n if (!parent.allowDragAndDrop || ((parent.activeModule === 'navigationpane') &&\n (closest(args.element, 'li').getAttribute('data-uid') === parent.pathId[0]))) {\n dragArgs.cancel = true;\n }\n if ((parent.activeModule === 'navigationpane') &&\n (parent.pathId.indexOf(closest(args.element, 'li').getAttribute('data-uid')) !== -1)) {\n parent.isPathDrag = true;\n }\n else {\n parent.isPathDrag = false;\n }\n removeBlur(parent);\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else if (!dragArgs.cancel) {\n var i = 0;\n while (i < parent.activeElements.length) {\n addBlur(parent.activeElements[i]);\n i++;\n }\n parent.trigger('fileDragStart', dragArgs, function (dragArgs) {\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else {\n parent.uploadObj.dropArea = null;\n }\n });\n }\n}\n/**\n * Drag the cancel handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function dragCancel(parent) {\n removeBlur(parent);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n}\n/**\n * Remove drop target handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function removeDropTarget(parent) {\n removeItemClass(parent, CLS.DROP_FOLDER);\n removeItemClass(parent, CLS.DROP_FILE);\n}\n/**\n * Remove item class handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} value - specifies the value.\n * @returns {void}\n * @private\n */\nexport function removeItemClass(parent, value) {\n var ele = parent.element.querySelectorAll('.' + value);\n for (var i = 0; i < ele.length; i++) {\n ele[i].classList.remove(value);\n }\n}\n/**\n * Dragging handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nexport function draggingHandler(parent, args) {\n var dragArgs = args;\n dragArgs.fileDetails = parent.dragData;\n var canDrop = false;\n getTargetModule(parent, args.target);\n removeDropTarget(parent);\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeBlur(parent, 'hover');\n var node = null;\n if (parent.targetModule === 'navigationpane') {\n node = closest(args.target, 'li');\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n canDrop = true;\n /* istanbul ignore next */\n parent.treeExpandTimer = window.setTimeout(function () { parent.notify(events.dragging, args); }, 800);\n }\n else if (parent.targetModule === 'detailsview') {\n node = closest(args.target, 'tr');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FOLDER);\n }\n else if (node && !node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FILE);\n }\n canDrop = true;\n }\n else if (parent.targetModule === 'largeiconsview') {\n node = closest(args.target, 'li');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n }\n canDrop = true;\n /* istanbul ignore next */\n }\n else if (parent.targetModule === 'breadcrumbbar') {\n canDrop = true;\n }\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n parent.element.classList.add(canDrop ? 'e-fe-drop' : 'e-no-drop');\n parent.dragCount = parent.dragCount + 1;\n parent.trigger('fileDragging', dragArgs);\n}\n/**\n * Object to string handler\n *\n * @param {Object} data - specifies the data.\n * @returns {string} returns string converted from Object.\n * @private\n */\n// Ignored the message key value in permission object\n// eslint-disable-next-line\nexport function objectToString(data) {\n var str = '';\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] !== 'message') {\n str += (i === 0 ? '' : ', ') + keys[i] + ': ' + getValue(keys[i], data);\n }\n }\n return str;\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {string} returns the item name.\n * @private\n */\n// eslint-disable-next-line\nexport function getItemName(parent, data) {\n if (parent.hasId) {\n return getValue('id', data);\n }\n return getName(parent, data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function updateRenamingData(parent, data) {\n parent.itemData = [data];\n parent.currentItemText = getValue('name', data);\n parent.isFile = getValue('isFile', data);\n parent.filterPath = getValue('filterPath', data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doRename(parent) {\n if (!hasEditAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionEdit);\n }\n else {\n createDialog(parent, 'Rename');\n }\n}\n/* istanbul ignore next */\n/**\n * Download handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doDownload(parent) {\n // eslint-disable-next-line\n var items = parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(parent, items[i], events.permissionDownload);\n return;\n }\n }\n if (parent.selectedItems.length > 0) {\n Download(parent, parent.path, parent.selectedItems);\n }\n}\n/**\n * Delete Files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function doDeleteFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionEdit);\n return;\n }\n }\n parent.itemData = data;\n Delete(parent, newIds, parent.path, 'delete');\n}\n/* istanbul ignore next */\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function doDownloadFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasDownloadAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionDownload);\n return;\n }\n }\n parent.itemData = data;\n if (newIds.length > 0) {\n Download(parent, parent.path, newIds);\n }\n}\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @param {string} action - specifies the actions.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function createDeniedDialog(parent, data, action) {\n var message = getValue('message', getValue('permission', data));\n if (message === '') {\n message = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', data)).replace('{1}', action);\n }\n var response = {\n error: {\n code: '401',\n fileExists: null,\n message: message\n }\n };\n createDialog(parent, 'Error', response);\n}\n/**\n * Get Access Classes\n *\n * @param {Object} data - specifies the data.\n * @returns {string} - returns accesses classes.\n * @private\n */\n// eslint-disable-next-line\nexport function getAccessClass(data) {\n return !hasReadAccess(data) ? 'e-fe-locked e-fe-hidden' : 'e-fe-locked';\n}\n/**\n * Check read access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns read access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasReadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return (permission && !getValue('read', permission)) ? false : true;\n}\n/**\n * Check edit access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns edit access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasEditAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('write', permission))) : true;\n}\n/**\n * Check content access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns content access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasContentAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('writeContents', permission))) : true;\n}\n/**\n * Check upload access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns upload access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasUploadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('upload', permission))) : true;\n}\n/**\n * Check download access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns download access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasDownloadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('download', permission))) : true;\n}\n/**\n * Create new folder handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createNewFolder(parent) {\n // eslint-disable-next-line\n var details = parent.itemData[0];\n if (!hasContentAccess(details)) {\n createDeniedDialog(parent, details, events.permissionEditContents);\n }\n else {\n createDialog(parent, 'NewFolder');\n }\n}\n/**\n * Upload item handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function uploadItem(parent) {\n // eslint-disable-next-line\n var details = parent.itemData[0];\n if (!hasUploadAccess(details)) {\n createDeniedDialog(parent, details, events.permissionUpload);\n }\n else {\n var eleId = '#' + parent.element.id + CLS.UPLOAD_ID;\n var uploadEle = document.querySelector(eleId);\n uploadEle.click();\n }\n}\n","import { Ajax, createElement, select, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, setValue, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate, getParentPath, getPathObject } from '../common/utility';\nimport { generatePath } from '../common/utility';\n/**\n * Function to read the content from given path in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function read(parent, event, path) {\n // eslint-disable-next-line\n var itemData = parent.itemData;\n for (var i = 0; i < itemData.length; i++) {\n if (isNOU(getValue('hasChild', itemData[i]))) {\n setValue('hasChild', false, itemData[i]);\n }\n }\n // eslint-disable-next-line\n var data = { action: 'read', path: path, showHiddenItems: parent.showHiddenItems, data: itemData };\n createAjax(parent, data, readSuccess, event);\n}\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nexport function createFolder(parent, itemName) {\n // eslint-disable-next-line\n var data = { action: 'create', path: parent.path, name: itemName, data: parent.itemData };\n createAjax(parent, data, createSuccess, itemName);\n}\n/**\n * Function to filter the files in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nexport function filter(parent, event) {\n // eslint-disable-next-line\n var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n // eslint-disable-next-line\n var filterData;\n // eslint-disable-next-line\n var filterDataVal = parent.filterData ? extend(filterData, data, parent.filterData) : data;\n createAjax(parent, filterDataVal, filterSuccess, event, getValue('action', filterDataVal));\n}\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string} itemNewName - specifies the item's new name.\n * @returns {void}\n * @private\n */\nexport function rename(parent, path, itemNewName) {\n var name;\n var newName;\n if (parent.breadcrumbbarModule.searchObj.element.value === '' && !parent.isFiltered) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n var fPath = parent.filterPath;\n if (parent.hasId) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(path, '') + parent.currentItemText;\n newName = fPath.replace(path, '') + itemNewName;\n }\n }\n // eslint-disable-next-line\n var data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData\n };\n createAjax(parent, data, renameSuccess, path);\n}\n/**\n * Function to paste file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} names - specifies the names.\n * @param {string} targetPath - specifies the target path.\n * @param {string} pasteOperation - specifies the paste operation.\n * @param {string[]} renameItems - specifies the rename items.\n * @param {Object[]} actionRecords - specifies the action records.\n * @returns {void}\n * @private\n */\nexport function paste(parent, path, names, targetPath, pasteOperation, \n// eslint-disable-next-line\nrenameItems, actionRecords) {\n // eslint-disable-next-line\n var data = {\n action: pasteOperation, path: path, targetData: parent.itemData[0],\n targetPath: targetPath, names: names, renameFiles: renameItems, data: actionRecords\n };\n parent.destinationPath = targetPath;\n createAjax(parent, data, pasteSuccess, path, pasteOperation, targetPath);\n}\n/**\n * Function to delete file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} items - specifies the items.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nexport function Delete(parent, items, path, operation) {\n // eslint-disable-next-line\n var data = { action: operation, path: path, names: items, data: parent.itemData };\n createAjax(parent, data, deleteSuccess, path);\n}\n/* istanbul ignore next */\n/**\n * Function to get details of file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} names - specifies the names.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation data.\n * @returns {void}\n * @private\n */\nexport function GetDetails(parent, names, path, operation) {\n // eslint-disable-next-line\n var data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Function for createAjax in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {Function} fn - specifies the fn.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the target path.\n * @returns {void}\n * @private\n */\nfunction createAjax(\n// eslint-disable-next-line\nparent, data, fn, event, operation, targetPath) {\n // eslint-disable-next-line\n var ajaxSettings = {\n url: parent.ajaxSettings.url,\n type: 'POST',\n mode: true,\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };\n parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\n var ajax = new Ajax({\n url: getValue('url', beforeSendArgs.ajaxSettings),\n type: getValue('type', beforeSendArgs.ajaxSettings),\n mode: getValue('mode', beforeSendArgs.ajaxSettings),\n dataType: getValue('dataType', beforeSendArgs.ajaxSettings),\n contentType: getValue('contentType', beforeSendArgs.ajaxSettings),\n data: getValue('data', beforeSendArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', beforeSendArgs.ajaxSettings),\n onSuccess: function (result) {\n if (isNOU(result)) {\n var result_1 = {\n error: {\n fileExists: null,\n message: getLocaleText(parent, 'Server-Error') + ' ' + parent.ajaxSettings.url,\n code: '406'\n },\n files: null\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result_1, event, operation, targetPath);\n return;\n }\n if (typeof (result) === 'string') {\n result = JSON.parse(result);\n }\n parent.notify(events.afterRequest, { action: 'success' });\n var id = parent.expandedId ? parent.expandedId : parent.pathId[parent.pathId.length - 1];\n if (!isNOU(result.cwd) && (getValue('action', data) === 'read')) {\n result.cwd.name = (parent.pathId.length === 1) ? (parent.rootAliasName || result.cwd.name) : result.cwd.name;\n setValue('_fm_id', id, result.cwd);\n setValue(id, result.cwd, parent.feParent);\n if (!isNOU(result.files) || result.error.code === '401') {\n if ((event === 'finalize-end' || event === 'initial-end') && parent.pathNames.length === 0) {\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n parent.pathNames[0] = getValue('name', root);\n parent.hasId = !isNOU(getValue('id', root));\n }\n if (event === 'finalize-end') {\n generatePath(parent);\n }\n }\n }\n if (!isNOU(result.files)) {\n setDateObject(result.files);\n for (var i = 0, len = result.files.length; i < len; i++) {\n // eslint-disable-next-line\n var item = result.files[i];\n setValue('_fm_iconClass', fileType(item), item);\n }\n if (getValue('action', data) === 'read') {\n setNodeId(result, id);\n setValue(id, result.files, parent.feFiles);\n }\n }\n if (!isNOU(result.details) && !isNOU(parent.rootAliasName)) {\n var rootName = parent.rootAliasName || getValue('name', result.details);\n var location_1 = getValue('location', result.details).replace(new RegExp('/', 'g'), '\\\\');\n if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {\n if (getValue('names', data).length === 0) {\n setValue('name', rootName, result.details);\n location_1 = rootName;\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n setValue('location', location_1, result.details);\n }\n fn(parent, result, event, operation, targetPath);\n if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end')) {\n parent.notify(events.searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\n },\n onFailure: function () {\n var result = {\n files: null,\n error: {\n code: '404',\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.url,\n fileExists: null\n }\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath);\n }\n });\n ajax.send();\n }\n });\n}\n/**\n * Function for trigger Ajax failure in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the beforeSendArgs.\n * @param {Function} fn - specifies the function.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @returns {void}\n * @private\n */\nfunction triggerAjaxFailure(\n// eslint-disable-next-line\nparent, beforeSendArgs, fn, result, event, operation, targetPath) {\n parent.notify(events.afterRequest, { action: 'failure' });\n fn(parent, result, event, operation, targetPath);\n if (typeof getValue('onFailure', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onFailure', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function for read success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction readSuccess(parent, result, event) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n var args = { action: 'read', result: result };\n parent.trigger('success', args);\n }\n else {\n if (result.error.code === '401') {\n result.files = [];\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n }\n onFailure(parent, result, 'read');\n }\n if (parent.isDragDrop && parent.isDropEnd) {\n if (parent.droppedObjects.length !== 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n }\n parent.isDropEnd = parent.isDragDrop = false;\n }\n}\n/**\n * Function for filter success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction filterSuccess(parent, result, event, action) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: action, result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, action);\n }\n}\n/* istanbul ignore next */\n/**\n * Function for create success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction createSuccess(parent, result, itemName) {\n if (!isNOU(result.files)) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n parent.createdItem = result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\n var args = { action: 'create', result: result };\n parent.trigger('success', args);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.createEnd, parent.path);\n }\n else {\n if (result.error.code === '400') {\n if (parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#newname', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n else {\n var result_2 = {\n files: null,\n error: {\n code: '400',\n message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + itemName + '\"'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result_2);\n }\n var args = { action: 'create', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'create');\n }\n }\n}\n/* istanbul ignore next */\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path\n * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result, path) {\n if (!isNOU(result.files)) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n var args = { action: 'rename', result: result };\n parent.trigger('success', args);\n parent.renamedItem = result.files[0];\n if (parent.activeModule === 'navigationpane') {\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n read(parent, events.renameEndParent, getParentPath(parent.path));\n }\n else {\n parent.itemData = [getPathObject(parent)];\n if (parent.breadcrumbbarModule.searchObj.value !== '') {\n Search(parent, events.renameEnd, parent.path, parent.searchWord, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n else {\n if (parent.isFiltered) {\n filter(parent, events.renameEnd);\n }\n else {\n read(parent, events.renameEnd, parent.path);\n }\n }\n }\n }\n else {\n if (result.error.code === '400' && parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#rename', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '\"' + parent.currentItemText + '\"');\n error = error.replace('{1}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n var args = { action: 'rename', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'rename');\n }\n }\n}\n/* istanbul ignore next */\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction pasteSuccess(parent, result, path, operation) {\n if (result.error && result.error.fileExists) {\n parent.fileLength = 0;\n if (!isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n }\n createExtDialog(parent, 'DuplicateItems', result.error.fileExists);\n if (result.error.code === '404') {\n createDialog(parent, 'Error', result);\n }\n }\n else if (!result.error && !isNOU(result.files)) {\n parent.isPasteError = false;\n doPasteUpdate(parent, operation, result);\n }\n else if (result.error && !isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n createDialog(parent, 'Error', result);\n }\n else {\n onFailure(parent, result, operation);\n }\n}\n/**\n * Function to delete success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nfunction deleteSuccess(parent, result, path) {\n if (!isNOU(result.files)) {\n parent.setProperties({ path: path }, true);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.deleteEnd, parent.path);\n if (result.error) {\n onFailure(parent, result, 'delete');\n }\n else {\n var args = { action: 'delete', result: result };\n parent.trigger('success', args);\n }\n }\n else {\n onFailure(parent, result, 'delete');\n }\n}\n/**\n * Function for details success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction detailsSuccess(\n// eslint:disable-next-line\nparent, result, path, operation) {\n if (!isNOU(result.details)) {\n createDialog(parent, operation, null, result.details);\n var args = { action: 'details', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'details');\n }\n}\n/**\n * Function for on failure event in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction onFailure(parent, result, action) {\n createDialog(parent, 'Error', result);\n var args = { action: action, error: result.error };\n parent.trigger('failure', args);\n}\n/**\n * Function for search in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @param {string} searchString - specifies the search string.\n * @param {boolean} showHiddenItems - specifies the hidden items.\n * @param {boolean} caseSensitive - specifies the casing of search text.\n * @returns {void}\n * @private\n */\nexport function Search(\n// eslint:disable-next-line\nparent, event, path, searchString, showHiddenItems, caseSensitive) {\n // eslint-disable-next-line\n var data = {\n action: 'search', path: path, searchString: searchString, showHiddenItems: showHiddenItems, caseSensitive: caseSensitive,\n data: parent.itemData\n };\n createAjax(parent, data, searchSuccess, event);\n}\n/* istanbul ignore next */\n/**\n * Function for search success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction searchSuccess(parent, result, event) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: 'search', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'search');\n }\n}\n/* istanbul ignore next */\n/**\n * Function for download in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} items - specifies the items.\n * @returns {void}\n * @private\n */\nexport function Download(parent, path, items) {\n var downloadUrl = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;\n // eslint-disable-next-line\n var data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n var eventArgs = { data: data, cancel: false };\n parent.trigger('beforeDownload', eventArgs, function (downloadArgs) {\n if (!downloadArgs.cancel) {\n var form = createElement('form', {\n id: parent.element.id + '_downloadForm',\n attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }\n });\n var input = createElement('input', {\n id: parent.element.id + '_hiddenForm',\n attrs: { name: 'downloadInput', value: JSON.stringify(downloadArgs.data), type: 'hidden' }\n });\n form.appendChild(input);\n parent.element.appendChild(form);\n document.forms.namedItem('downloadForm').submit();\n parent.element.removeChild(form);\n }\n });\n}\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { select, isNullOrUndefined as isNOU, createElement, Internationalization } from '@syncfusion/ej2-base';\nimport { getValue, remove, selectAll } from '@syncfusion/ej2-base';\nimport { createFolder } from '../common/operations';\nimport * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { paste, rename } from '../common/operations';\nimport { getLocaleText, getDuplicateData, getParentPath, objectToString, getCssClass } from '../common/utility';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the type of event args.\n * @param {FileDetails} details - specifies the file details.\n * @param {string[]} replaceItems - specifies the replacement.\n * @returns {void}\n * @private\n */\nexport function createDialog(parent, text, e, details, replaceItems) {\n var options = getOptions(parent, text, e, details, replaceItems);\n if (isNOU(parent.dialogObj)) {\n parent.dialogObj = new Dialog({\n beforeOpen: keydownAction.bind(this, parent, options.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n },\n header: options.header,\n content: options.content,\n buttons: options.buttons,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n allowDragging: true,\n isModal: true,\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n width: '350px',\n open: options.open,\n close: options.close,\n enableRtl: parent.enableRtl,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.dialogObj.isStringTemplate = true;\n parent.dialogObj.appendTo('#' + parent.element.id + CLS.DIALOG_ID);\n }\n else {\n changeOptions(parent, options);\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {void}\n * @private\n */\nexport function createExtDialog(parent, text, replaceItems, newPath) {\n var extOptions = getExtOptions(parent, text, replaceItems, newPath);\n parent.isApplySame = false;\n if (isNOU(parent.extDialogObj)) {\n parent.extDialogObj = new Dialog({\n beforeOpen: beforeExtOpen.bind(this, parent, extOptions.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n },\n content: extOptions.content,\n header: extOptions.header,\n closeOnEscape: true,\n allowDragging: true,\n animationSettings: { effect: 'None' },\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n enableRtl: parent.enableRtl,\n showCloseIcon: true,\n isModal: true,\n width: 350,\n buttons: extOptions.buttons,\n open: extOptions.open,\n close: extOptions.close,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.extDialogObj.isStringTemplate = true;\n parent.extDialogObj.appendTo('#' + parent.element.id + CLS.EXTN_DIALOG_ID);\n }\n else {\n parent.extDialogObj.header = extOptions.header;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.open = extOptions.open;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.content = extOptions.content;\n parent.extDialogObj.buttons = extOptions.buttons;\n parent.extDialogObj.enableRtl = parent.enableRtl;\n parent.extDialogObj.locale = parent.locale;\n parent.extDialogObj.beforeOpen = beforeExtOpen.bind(this, parent, extOptions.dialogName);\n parent.extDialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n };\n parent.extDialogObj.dataBind();\n parent.extDialogObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {Dialog} dlgModule - Specifies the dialog module.\n * @param {BeforeOpenEventArgs} args - specifies the before open arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeOpen(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupName: dialogName, popupModule: dlgModule\n };\n parent.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {BeforeCloseEventArgs} args - specifies the before close event arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeClose(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupModule: dlgModule, popupName: dialogName\n };\n parent.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n if (!args.cancel && args.isInteracted && ((dialogName === 'Rename') || (dialogName === 'Create Folder'))) {\n parent.trigger(events.actionFailure, {});\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupOpen(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupOpen', args);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupClose(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupClose', args);\n}\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {DialogOptions} - returns the dialog options.\n * @private\n */\nfunction getExtOptions(parent, text, replaceItems, newPath) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var duplicateContent;\n var item;\n var index;\n options.open = function () { triggerPopupOpen(parent, parent.extDialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.extDialogObj, options.dialogName); };\n switch (text) {\n case 'Extension':\n options.header = getLocaleText(parent, 'Header-Rename-Confirmation');\n options.content = '<div>' + getLocaleText(parent, 'Content-Rename-Confirmation') + '</div>';\n options.buttons = [{\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.extDialogObj.hide();\n rename(parent, newPath, parent.renameText);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.extDialogObj.hide();\n parent.dialogObj.hide();\n }\n }];\n options.dialogName = 'Extension Change';\n break;\n case 'DuplicateItems':\n options.dialogName = 'Duplicate Items';\n parent.replaceItems = replaceItems;\n item = parent.replaceItems[parent.fileLength];\n index = item.lastIndexOf('/');\n item = index === -1 ? item : item.substring(index);\n options.header = getLocaleText(parent, 'Header-Duplicate');\n duplicateContent = '<div>' + getLocaleText(parent, 'Content-Duplicate') + '</div>';\n options.content = (duplicateContent).replace('{0}', item);\n options.close = function () {\n if (!parent.isDropEnd && parent.duplicateItems.length === 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n parent.isDropEnd = parent.isDragDrop = false;\n }\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.duplicateItems.push(parent.replaceItems[parent.fileLength]);\n parent.duplicateRecords.push(getDuplicateData(parent, parent.replaceItems[parent.fileLength]));\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_1 = parent.replaceItems[parent.fileLength];\n var indexval = item_1.lastIndexOf('/');\n item_1 = indexval === -1 ? item_1 : item_1.substring(indexval);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_1);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_2 = parent.replaceItems[parent.fileLength];\n var ind = item_2.lastIndexOf('/');\n item_2 = ind === -1 ? item_2 : item_2.substring(ind);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_2);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n if (parent.duplicateItems.length !== 0) {\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n }\n }\n ];\n break;\n case 'UploadRetry':\n options.dialogName = 'Retry Upload';\n options.header = getLocaleText(parent, 'Header-Retry');\n options.content = parent.retryFiles[0].name + '<div class=\"e-fe-retrycontent\">' +\n (getLocaleText(parent, 'Content-Retry')) + '</div>';\n options.open = onRetryOpen.bind(this, parent);\n options.close = function () {\n parent.isRetryOpened = false;\n retryDlgClose(parent);\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Keep-Both') },\n click: function () {\n retryDlgUpdate(parent, true);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Replace') },\n click: function () {\n retryDlgUpdate(parent, false);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Skip') },\n click: function () {\n var count = 0;\n if (parent.isApplySame) {\n count = parent.retryFiles.length;\n parent.retryFiles = [];\n retryDlgClose(parent);\n }\n else {\n count = 1;\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n parent.notify(events.skipUpload, { count: count });\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {boolean} isKeepBoth - checks the arguement to keep both.\n * @returns {void}\n * @private\n */\nfunction retryDlgUpdate(parent, isKeepBoth) {\n if (parent.isApplySame) {\n if (isKeepBoth) {\n onKeepBothAll(parent);\n }\n else {\n onReplaceAll(parent);\n }\n retryDlgClose(parent);\n }\n else {\n parent.retryArgs.push({\n action: isKeepBoth ? 'keepboth' : 'replace',\n file: parent.retryFiles[0]\n });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction retryDlgClose(parent) {\n var flag = true;\n if (parent.isRetryOpened) {\n parent.isRetryOpened = false;\n }\n else {\n flag = false;\n }\n var ele = select('.e-dlg-checkbox', parent.extDialogObj.element);\n if (ele) {\n remove(ele);\n }\n if (flag) {\n parent.extDialogObj.hide();\n }\n else {\n parent.retryFiles = [];\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {object} args - specifies the arguements.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nfunction onRetryOpen(parent, args) {\n parent.isRetryOpened = true;\n var dialogEle = getValue('element', args);\n var container = select('.e-dlg-content', dialogEle);\n var checkContainer = parent.createElement('div', {\n className: 'e-dlg-checkbox'\n });\n var checkbox = parent.createElement('input', {\n id: parent.element.id + '_applyall'\n });\n checkContainer.appendChild(checkbox);\n container.appendChild(checkContainer);\n var checkBoxObj = new CheckBox({\n label: getLocaleText(parent, 'ApplyAll-Label'),\n change: function (args) {\n parent.isApplySame = args.checked;\n }\n });\n checkBoxObj.appendTo('#' + parent.element.id + '_applyall');\n triggerPopupOpen(parent, parent.extDialogObj, 'Retry Upload');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onKeepBothAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'keepboth', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReplaceAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'replace', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction focusInput(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n ele.focus();\n ele.value = '';\n var len = ele.value.length;\n ele.setSelectionRange(0, len);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onFolderDialogOpen(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n if (!ele.parentElement.classList.contains('e-control-wrapper')) {\n createInput(ele, getLocaleText(parent, 'Content-NewFolder'));\n }\n ele.parentElement.nextElementSibling.innerHTML = '';\n ele.oninput = function () {\n onValidate(parent, ele);\n };\n ele.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onSubmit(parent);\n }\n };\n focusInput(parent);\n triggerPopupOpen(parent, parent.dialogObj, 'Create Folder');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onRenameDialogOpen(parent) {\n var inputEle = select('#rename', parent.dialogObj.element);\n if (!inputEle.parentElement.classList.contains('e-control-wrapper')) {\n createInput(inputEle, getLocaleText(parent, 'Content-Rename'));\n }\n inputEle.parentElement.nextElementSibling.innerHTML = '';\n inputEle.oninput = function () {\n onValidate(parent, inputEle);\n };\n inputEle.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onReSubmit(parent);\n }\n };\n onFocusRenameInput(parent, inputEle);\n triggerPopupOpen(parent, parent.dialogObj, 'Rename');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} inputEle - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onFocusRenameInput(parent, inputEle) {\n inputEle.focus();\n var txt = '';\n if (parent.isFile && !parent.showFileExtension) {\n var index = parent.currentItemText.lastIndexOf('.');\n txt = (index === -1) ? parent.currentItemText : parent.currentItemText.substring(0, index);\n }\n else {\n txt = parent.currentItemText;\n }\n inputEle.value = txt;\n if (parent.isFile && parent.showFileExtension && (inputEle.value.indexOf('.') !== -1)) {\n inputEle.setSelectionRange(0, inputEle.value.lastIndexOf('.'));\n }\n else {\n inputEle.setSelectionRange(0, inputEle.value.length);\n }\n}\n/**\n *\n * @param {HTMLInputElement} ele - specifies the element.\n * @param {string} placeholder - specifies the place holder.\n * @returns {void}\n * @private\n */\nfunction createInput(ele, placeholder) {\n Input.createInput({\n element: ele,\n properties: {\n placeholder: placeholder\n }\n });\n}\n/* istanbul ignore next */\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the event arguements.\n * @param {FileDetails} details - specifies the file details.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details, replaceItems) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var permission;\n var formattedString;\n var intl;\n var strArr;\n var fileType;\n var location;\n options.open = function () { triggerPopupOpen(parent, parent.dialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.dialogObj, options.dialogName); };\n text = (details && details.multipleFiles === true) ? 'MultipleFileDetails' : text;\n switch (text) {\n case 'NewFolder':\n options.dialogName = 'Create Folder';\n options.header = getLocaleText(parent, 'Header-NewFolder');\n options.content = '<input type=\"text\" value=\"New folder\" id=\"newname\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Create') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onSubmit(parent);\n }\n }\n ];\n options.open = onFolderDialogOpen.bind(this, parent);\n break;\n case 'Delete':\n options.dialogName = 'Delete';\n if (parent.selectedItems.length > 1) {\n options.content = ('<div>' + getLocaleText(parent, 'Content-Multiple-Delete') + '</div>')\n .replace('{0}', parent.selectedItems.length.toString());\n options.header = getLocaleText(parent, 'Header-Multiple-Delete');\n }\n else {\n options.content = '<div>' + getLocaleText(parent, parent.isFile ? 'Content-Delete' : 'Content-Folder-Delete') + '</div>';\n options.header = getLocaleText(parent, parent.isFile ? 'Header-Delete' : 'Header-Folder-Delete');\n }\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function (e) {\n onDeleteSubmit(parent);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Rename':\n options.dialogName = 'Rename';\n options.header = getLocaleText(parent, 'Header-Rename');\n options.content = '<input type=\"text\" class=\"e-input\" id=\"rename\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Save') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onReSubmit(parent);\n }\n }\n ];\n options.open = onRenameDialogOpen.bind(this, parent);\n break;\n case 'details':\n options.dialogName = 'File Details';\n intl = new Internationalization(parent.locale);\n formattedString = intl.formatDate(new Date(details.modified), { format: 'MMMM dd, yyyy HH:mm:ss' });\n permission = '';\n if (!isNOU(details.permission)) {\n permission = '<tr><td>' + getLocaleText(parent, 'Permission') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + objectToString(details.permission) + '</td></tr>';\n }\n options.header = details.name;\n options.content = '<table>' +\n '<tr><td>' + getLocaleText(parent, 'Type') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n (details.isFile ? 'File' : 'Folder') + '\">' + (details.isFile ? 'File' : 'Folder') + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + '</td><td><span class=\"' + CLS.VALUE + '\" title =\"' +\n details.size + '\">' + details.size + '</span></td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Location') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n details.location + '\">' + details.location + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Modified') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + formattedString + '</td></tr>'\n + permission + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n options.dialogName = 'File Details';\n strArr = details.name.split(',').map(function (val) {\n var index = val.indexOf('.') + 1;\n return (index === 0) ? 'Folder' : val.substr(index).replace(' ', '');\n });\n fileType = strArr.every(function (val, i, arr) { return val === arr[0]; }) ?\n ((strArr[0] === 'Folder') ? 'Folder' : strArr[0].toLocaleUpperCase() + ' Type') : 'Multiple Types';\n location = details.location;\n options.header = details.name;\n options.content = '<table><tr><td>' + getLocaleText(parent, 'Type')\n + ':</td><td class=\"' + CLS.VALUE + '\">' + fileType + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + ':</td><td>' +\n details.size + '<span class=\"' + CLS.VALUE + '\" title =\"' + details.size\n + '\"></span></td></tr>' + '<tr><td>' + getLocaleText(parent, 'Location') +\n ':</td><td class=\"' + CLS.VALUE + '\" title=\"' + location + '\">'\n + location + '</td></tr>' + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Error':\n parent.notify(events.actionFailure, {});\n options.dialogName = 'Error';\n if (e.error.code === '401') {\n options.header = '<span class=\"e-fe-icon e-fe-access-error\"></span><div class=\"e-fe-access-header\">' +\n getLocaleText(parent, 'Access-Denied') + '</div>';\n }\n else {\n options.header = getLocaleText(parent, 'Error');\n }\n options.content = '<div class=\"' + CLS.ERROR_CONTENT + '\">' + e.error.message + '</div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dialogName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction keydownAction(parent, dialogName, args) {\n var btnElement = selectAll('.e-btn', parent.dialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.dialogObj, args, dialogName);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dlgName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction beforeExtOpen(parent, dlgName, args) {\n var btnElement = selectAll('.e-btn', parent.extDialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.extDialogObj, args, dlgName);\n}\n/**\n *\n * @param {HTMLInputElement[]} btnElement - specifies the button element.\n * @returns {void}\n * @private\n */\nfunction preventKeydown(btnElement) {\n var _loop_1 = function (btnCount) {\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {SelectedEventArgs} data - specifies the data.\n * @returns {HTMLElement} - returns the HTML element.\n * @private\n */\nfunction getFilesName(data) {\n var parent = createElement('div', { id: 'uploadDialog' });\n var ulElement = createElement('ul');\n var filesData = data.isModified ? data.modifiedFilesData : data.filesData;\n for (var fileCount = 0; fileCount < filesData.length; fileCount++) {\n var liElement = createElement('li', { className: 'dialogFiles' });\n liElement.innerHTML = filesData[fileCount].name;\n ulElement.appendChild(liElement);\n }\n parent.appendChild(ulElement);\n var errorTag = createElement('div', { className: 'e-fe-error' });\n parent.appendChild(errorTag);\n return parent;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {DialogOptions} options - specifies the dialog options.\n * @returns {void}\n * @private\n */\nfunction changeOptions(parent, options) {\n parent.dialogObj.header = options.header;\n parent.dialogObj.content = options.content;\n parent.dialogObj.buttons = options.buttons;\n parent.dialogObj.enableRtl = parent.enableRtl;\n parent.dialogObj.open = options.open;\n parent.dialogObj.close = options.close;\n parent.dialogObj.beforeOpen = keydownAction.bind(this, parent, options.dialogName);\n parent.dialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n };\n parent.dialogObj.dataBind();\n parent.dialogObj.show();\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onSubmit(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n createFolder(parent, ele.value);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReSubmit(parent) {\n var ele = select('#rename', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n var text = ele.value;\n var oIndex = parent.currentItemText.lastIndexOf('.');\n if (parent.isFile && !parent.showFileExtension) {\n var extn = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n text += extn;\n }\n parent.renameText = text;\n if (parent.currentItemText === text) {\n parent.dialogObj.hide();\n return;\n }\n var newPath = (parent.activeModule === 'navigationpane') ? getParentPath(parent.path) : parent.path;\n parent.renamedId = getValue('id', parent.itemData[0]);\n if (parent.isFile) {\n var oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n var nIndex = text.lastIndexOf('.');\n var newExtension = (nIndex === -1) ? '' : text.substr(nIndex);\n if (parent.showFileExtension && oldExtension !== newExtension) {\n createExtDialog(parent, 'Extension', null, newPath);\n }\n else {\n rename(parent, newPath, text);\n }\n }\n else {\n rename(parent, newPath, text);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onDeleteSubmit(parent) {\n parent.dialogObj.hide();\n parent.notify(events.deleteInit, {});\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onValidate(parent, ele) {\n if (/[/\\\\|*?\"<>:]/.test(ele.value)) {\n addInvalid(parent, ele);\n }\n else if (ele.value === '') {\n ele.parentElement.nextElementSibling.innerHTML = getLocaleText(parent, 'Validation-Empty');\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = '';\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onSubmitValidate(parent, ele) {\n onValidate(parent, ele);\n var len = ele.value.length - 1;\n if (ele.value !== '' && ((ele.value.lastIndexOf('.') === len) || (ele.value.lastIndexOf(' ') === len)) &&\n (parent.showFileExtension || (parent.currentItemText.lastIndexOf('.') === -1))) {\n addInvalid(parent, ele);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction addInvalid(parent, ele) {\n var error = getLocaleText(parent, 'Validation-Invalid').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n}\n/**\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {number} - returns the key code.\n * @private\n */\nfunction getKeyCode(e) {\n var code;\n if (e.keyCode) {\n code = e.keyCode;\n }\n else if (e.which) {\n code = e.which;\n }\n else {\n code = e.charCode;\n }\n return code;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} header - specifies the header element.\n * @param {string} imageUrl - specifies the image URL.\n * @returns {void}\n * @private\n */\nexport function createImageDialog(parent, header, imageUrl) {\n var content = createElement('div', { className: 'e-image-wrap' });\n var image = createElement('img', { className: 'e-image', attrs: { src: imageUrl, alt: header } });\n content.appendChild(image);\n if (isNOU(parent.viewerObj)) {\n parent.viewerObj = new Dialog({\n header: header,\n content: content,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n isModal: true,\n width: '350px',\n height: '350px',\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: parent.locale,\n enableResize: true,\n allowDragging: true,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n position: { X: 'center', Y: 'center' },\n enableRtl: parent.enableRtl,\n open: openImage.bind(this, parent),\n close: function () { triggerPopupClose(parent, parent.viewerObj, 'Image Preview'); },\n beforeOpen: function (args) {\n triggerPopupBeforeOpen(parent, parent.viewerObj, args, 'Image Preview');\n },\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.viewerObj, args, 'Image Preview');\n },\n resizing: updateImage.bind(this, parent),\n resizeStop: updateImage.bind(this, parent)\n });\n parent.viewerObj.isStringTemplate = true;\n parent.viewerObj.appendTo('#' + parent.element.id + CLS.IMG_DIALOG_ID);\n }\n else {\n parent.viewerObj.refresh();\n parent.viewerObj.header = header;\n parent.viewerObj.content = content;\n parent.viewerObj.enableRtl = parent.enableRtl;\n parent.viewerObj.dataBind();\n parent.viewerObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction openImage(parent) {\n setTimeout(function () {\n if (parent.viewerObj) {\n parent.viewerObj.element.focus();\n }\n });\n updateImage(parent);\n triggerPopupOpen(parent, parent.viewerObj, 'Image Preview');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction updateImage(parent) {\n var content = select('.e-dlg-content', parent.viewerObj.element);\n var imgWrap = select('.e-image-wrap', parent.viewerObj.element);\n var cssObj = window.getComputedStyle(content, null);\n var paddingWidth = cssObj ? (2 * parseFloat(cssObj.paddingRight)) : 36;\n var paddingHeight = cssObj ? (2 * parseFloat(cssObj.paddingBottom)) : 20;\n imgWrap.style.width = (content.offsetWidth - paddingWidth) + 'px';\n imgWrap.style.height = (content.offsetHeight - paddingHeight) + 'px';\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar AjaxSettings = /** @class */ (function (_super) {\n __extends(AjaxSettings, _super);\n function AjaxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"downloadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"getImageUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"uploadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"url\", void 0);\n return AjaxSettings;\n}(ChildProperty));\nexport { AjaxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var toolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(toolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Search settings of the File Manager.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the columns in the details view of the file manager.\n */\nexport var columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120,\n template: '<span class=\"e-fe-text\">${name}</span>', customAttributes: { class: 'e-fe-grid-name' }\n },\n {\n field: '_fm_modified', headerText: 'DateModified', type: 'dateTime',\n format: 'MMMM dd, yyyy HH:mm', minWidth: 120, width: '190'\n },\n {\n field: 'size', headerText: 'Size', minWidth: 90, width: '110', template: '<span class=\"e-fe-size\">${size}</span>'\n }\n];\n/**\n * Specifies the grid settings of the File Manager.\n */\nvar DetailsViewSettings = /** @class */ (function (_super) {\n __extends(DetailsViewSettings, _super);\n function DetailsViewSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n __decorate([\n Property(columnArray)\n ], DetailsViewSettings.prototype, \"columns\", void 0);\n return DetailsViewSettings;\n}(ChildProperty));\nexport { DetailsViewSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nexport var folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nexport var layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nvar ContextMenuSettings = /** @class */ (function (_super) {\n __extends(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(fileItems)\n ], ContextMenuSettings.prototype, \"file\", void 0);\n __decorate([\n Property(folderItems)\n ], ContextMenuSettings.prototype, \"folder\", void 0);\n __decorate([\n Property(layoutItems)\n ], ContextMenuSettings.prototype, \"layout\", void 0);\n __decorate([\n Property(true)\n ], ContextMenuSettings.prototype, \"visible\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\nexport { ContextMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the navigationpane settings of the File Manager.\n */\nvar NavigationPaneSettings = /** @class */ (function (_super) {\n __extends(NavigationPaneSettings, _super);\n function NavigationPaneSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('650px')\n ], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('240px')\n ], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(true)\n ], NavigationPaneSettings.prototype, \"visible\", void 0);\n return NavigationPaneSettings;\n}(ChildProperty));\nexport { NavigationPaneSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar UploadSettings = /** @class */ (function (_super) {\n __extends(UploadSettings, _super);\n function UploadSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], UploadSettings.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(true)\n ], UploadSettings.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"autoClose\", void 0);\n __decorate([\n Property(0)\n ], UploadSettings.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], UploadSettings.prototype, \"maxFileSize\", void 0);\n return UploadSettings;\n}(ChildProperty));\nexport { UploadSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Interface for a class Column\n */\n/* istanbul ignore next */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"headerText\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"minWidth\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('Left')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTextAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customAttributes\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"hideAtMedia\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customFormat\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var TOOLBAR_ID = '_toolbar';\n/** @hidden */\nexport var LAYOUT_ID = '_layout';\n/** @hidden */\nexport var NAVIGATION_ID = '_navigation';\n/** @hidden */\nexport var TREE_ID = '_tree';\n/** @hidden */\nexport var GRID_ID = '_grid';\n/** @hidden */\nexport var LARGEICON_ID = '_largeicons';\n/** @hidden */\nexport var DIALOG_ID = '_dialog';\n/** @hidden */\nexport var ALT_DIALOG_ID = '_alt_dialog';\n/** @hidden */\nexport var IMG_DIALOG_ID = '_img_dialog';\n/** @hidden */\nexport var EXTN_DIALOG_ID = '_extn_dialog';\n/** @hidden */\nexport var UPLOAD_DIALOG_ID = '_upload_dialog';\n/** @hidden */\nexport var RETRY_DIALOG_ID = '_retry_dialog';\n/** @hidden */\nexport var CONTEXT_MENU_ID = '_contextmenu';\n/** @hidden */\nexport var SORTBY_ID = '_sortby';\n/** @hidden */\nexport var VIEW_ID = '_view';\n/** @hidden */\nexport var SPLITTER_ID = '_splitter';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var BREADCRUMBBAR_ID = '_breadcrumbbar';\n/** @hidden */\nexport var UPLOAD_ID = '_upload';\n/** @hidden */\nexport var RETRY_ID = '_retry';\n/** @hidden */\nexport var SEARCH_ID = '_search';\n/**\n * Specifies the File Manager internal class names\n */\n/** @hidden */\nexport var ROOT = 'e-filemanager';\n/** @hidden */\nexport var CONTROL = 'e-control';\n/** @hidden */\nexport var CHECK_SELECT = 'e-fe-cb-select';\n/** @hidden */\nexport var ROOT_POPUP = 'e-fe-popup';\n/** @hidden */\nexport var MOBILE = 'e-fe-mobile';\n/** @hidden */\nexport var MOB_POPUP = 'e-fe-popup e-fe-mobile';\n/** @hidden */\nexport var MULTI_SELECT = 'e-fe-m-select';\n/** @hidden */\nexport var FILTER = 'e-fe-m-filter';\n/** @hidden */\nexport var LAYOUT = 'e-layout';\n/** @hidden */\nexport var NAVIGATION = 'e-navigation';\n/** @hidden */\nexport var LAYOUT_CONTENT = 'e-layout-content';\n/** @hidden */\nexport var LARGE_ICONS = 'e-large-icons';\n/** @hidden */\nexport var TB_ITEM = 'e-toolbar-item';\n/** @hidden */\nexport var LIST_ITEM = 'e-list-item';\n/** @hidden */\nexport var LIST_TEXT = 'e-list-text';\n/** @hidden */\nexport var LIST_PARENT = 'e-list-parent';\n/** @hidden */\nexport var TB_OPTION_TICK = 'e-icons e-fe-tick';\n/** @hidden */\nexport var TB_OPTION_DOT = 'e-icons e-fe-dot';\n/** @hidden */\nexport var BLUR = 'e-blur';\n/** @hidden */\nexport var ACTIVE = 'e-active';\n/** @hidden */\nexport var HOVER = 'e-hover';\n/** @hidden */\nexport var FOCUS = 'e-focus';\n/** @hidden */\nexport var FOCUSED = 'e-focused';\n/** @hidden */\nexport var CHECK = 'e-check';\n/** @hidden */\nexport var FRAME = 'e-frame';\n/** @hidden */\nexport var CB_WRAP = 'e-checkbox-wrapper';\n/** @hidden */\nexport var ROW = 'e-row';\n/** @hidden */\nexport var ROWCELL = 'e-rowcell';\n/** @hidden */\nexport var EMPTY = 'e-empty';\n/** @hidden */\nexport var EMPTY_CONTENT = 'e-empty-content';\n/** @hidden */\nexport var EMPTY_INNER_CONTENT = 'e-empty-inner-content';\n/** @hidden */\nexport var CLONE = 'e-fe-clone';\n/** @hidden */\nexport var DROP_FOLDER = 'e-fe-drop-folder';\n/** @hidden */\nexport var DROP_FILE = 'e-fe-drop-file';\n/** @hidden */\nexport var FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var ICON_IMAGE = 'e-fe-image';\n/** @hidden */\nexport var ICON_MUSIC = 'e-fe-music';\n/** @hidden */\nexport var ICON_VIDEO = 'e-fe-video';\n/** @hidden */\nexport var LARGE_ICON = 'e-large-icon';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER = 'e-empty-icon e-fe-folder';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER_TWO = 'e-empty-icon.e-fe-folder';\n/** @hidden */\nexport var LARGE_ICON_FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var SELECTED_ITEMS = 'e-items';\n/** @hidden */\nexport var TEXT_CONTENT = 'e-text-content';\n/** @hidden */\nexport var GRID_HEADER = 'e-gridheader';\n/** @hidden */\nexport var TEMPLATE_CELL = 'e-templatecell';\n/** @hidden */\nexport var TREE_VIEW = 'e-treeview';\n/** @hidden */\nexport var MENU_ITEM = 'e-menu-item';\n/** @hidden */\nexport var MENU_ICON = 'e-menu-icon';\n/** @hidden */\nexport var SUBMENU_ICON = 'e-caret';\n/** @hidden */\nexport var GRID_VIEW = 'e-content';\n/** @hidden */\nexport var ICON_VIEW = 'e-list-parent';\n/** @hidden */\nexport var ICON_OPEN = 'e-icons e-fe-open';\n/** @hidden */\nexport var ICON_UPLOAD = 'e-icons e-fe-upload';\n/** @hidden */\nexport var ICON_CUT = 'e-icons e-fe-cut';\n/** @hidden */\nexport var ICON_COPY = 'e-icons e-fe-copy';\n/** @hidden */\nexport var ICON_PASTE = 'e-icons e-fe-paste';\n/** @hidden */\nexport var ICON_DELETE = 'e-icons e-fe-delete';\n/** @hidden */\nexport var ICON_RENAME = 'e-icons e-fe-rename';\n/** @hidden */\nexport var ICON_NEWFOLDER = 'e-icons e-fe-newfolder';\n/** @hidden */\nexport var ICON_DETAILS = 'e-icons e-fe-details';\n/** @hidden */\nexport var ICON_SHORTBY = 'e-icons e-fe-sort';\n/** @hidden */\nexport var ICON_REFRESH = 'e-icons e-fe-refresh';\n/** @hidden */\nexport var ICON_SELECTALL = 'e-icons e-fe-select';\n/** @hidden */\nexport var ICON_DOWNLOAD = 'e-icons e-fe-download';\n/** @hidden */\nexport var ICON_OPTIONS = 'e-icons e-fe-options';\n/** @hidden */\nexport var ICON_GRID = 'e-icons e-fe-grid';\n/** @hidden */\nexport var ICON_LARGE = 'e-icons e-fe-large';\n/** @hidden */\nexport var ICON_BREADCRUMB = 'e-icons e-fe-breadcrumb';\n/** @hidden */\nexport var ICON_CLEAR = 'e-icons e-fe-clear';\n/** @hidden */\nexport var ICON_DROP_IN = 'e-icons e-fe-drop-in';\n/** @hidden */\nexport var ICON_DROP_OUT = 'e-icons e-fe-drop-out';\n/** @hidden */\nexport var ICON_NO_DROP = 'e-icons e-fe-no-drop';\n/** @hidden */\nexport var ICONS = 'e-icons';\n/** @hidden */\nexport var DETAILS_LABEL = 'e-detailslabel';\n/** @hidden */\nexport var ERROR_CONTENT = 'e-fe-errorcontent';\n/** @hidden */\nexport var STATUS = 'e-status';\n/** @hidden */\nexport var BREADCRUMBS = 'e-address';\n/** @hidden */\nexport var RTL = 'e-rtl';\n/** @hidden */\nexport var DISPLAY_NONE = 'e-display-none';\n/** @hidden */\nexport var COLLAPSED = 'e-node-collapsed';\n/** @hidden */\nexport var FULLROW = 'e-fullrow';\n/** @hidden */\nexport var ICON_COLLAPSIBLE = 'e-icon-collapsible';\n/** @hidden */\nexport var SPLIT_BAR = 'e-split-bar';\n/** @hidden */\nexport var HEADER_CHECK = 'e-headercheck';\n/** @hidden */\nexport var OVERLAY = 'e-fe-overlay';\n/** @hidden */\nexport var VALUE = 'e-fe-value';\n","/**\n * Specifies the File Manager internal variables\n */\n/** @hidden */\nexport var isFile = 'isFile';\n/**\n * Specifies the File Manager internal events\n */\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var finalizeEnd = 'finalize-end';\n/** @hidden */\nexport var createEnd = 'create-end';\n/** @hidden */\nexport var filterEnd = 'filter-end';\n/** @hidden */\nexport var beforeDelete = 'before-delete';\n/** @hidden */\nexport var pathDrag = 'path-drag';\n/** @hidden */\nexport var deleteInit = 'delete-init';\n/** @hidden */\nexport var deleteEnd = 'delete-end';\n/** @hidden */\nexport var refreshEnd = 'refresh-end';\n/** @hidden */\nexport var resizeEnd = 'resize-end';\n/** @hidden */\nexport var splitterResize = 'splitter-resize';\n/** @hidden */\nexport var pathChanged = 'path-changed';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var beforeRequest = 'before-request';\n/** @hidden */\nexport var upload = 'upload';\n/** @hidden */\nexport var skipUpload = 'skip-upload';\n/** @hidden */\nexport var afterRequest = 'after-request';\n/** @hidden */\nexport var download = 'download';\n/** @hidden */\nexport var layoutRefresh = 'layout-refresh';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var search = 'search';\n/** @hidden */\nexport var openInit = 'open-init';\n/** @hidden */\nexport var openEnd = 'open-end';\n/** @hidden */\nexport var selectionChanged = 'selection-changed';\n/** @hidden */\nexport var selectAllInit = 'select-all-init';\n/** @hidden */\nexport var clearAllInit = 'clear-all-init';\n/** @hidden */\nexport var clearPathInit = 'clear-path-init';\n/** @hidden */\nexport var layoutChange = 'layout-change';\n/** @hidden */\nexport var sortByChange = 'sort-by-change';\n/** @hidden */\nexport var nodeExpand = 'node-expand';\n/** @hidden */\nexport var detailsInit = 'details-init';\n/** @hidden */\nexport var menuItemData = 'menu-item-data';\n/** @hidden */\nexport var renameInit = 'rename-init';\n/** @hidden */\nexport var renameEndParent = 'rename-end-parent';\n/** @hidden */\nexport var renameEnd = 'rename-end';\n/** @hidden */\nexport var showPaste = 'show-paste';\n/** @hidden */\nexport var hidePaste = 'hide-paste';\n/** @hidden */\nexport var selectedData = 'selected-data';\n/** @hidden */\nexport var cutCopyInit = 'cut-copy-init';\n/** @hidden */\nexport var pasteInit = 'paste-init';\n/** @hidden */\nexport var pasteEnd = 'paste-end';\n/** @hidden */\nexport var cutEnd = 'cut-end';\n/** @hidden */\nexport var hideLayout = 'hide-layout';\n/** @hidden */\nexport var updateTreeSelection = 'update-tree-selection';\n/** @hidden */\nexport var treeSelect = 'select-node';\n/** @hidden */\nexport var sortColumn = 'sort-column';\n/** @hidden */\nexport var pathColumn = 'path-column';\n/** @hidden */\nexport var searchTextChange = 'search-change';\n/** @hidden */\nexport var beforeDownload = 'before-download';\n/** @hidden */\nexport var downloadInit = 'download-init';\n/** @hidden */\nexport var dropInit = 'drop-init';\n/** @hidden */\nexport var dragEnd = 'drag-end';\n/** @hidden */\nexport var dropPath = 'drop-path';\n/** @hidden */\nexport var dragHelper = 'drag-helper';\n/** @hidden */\nexport var dragging = 'dragging';\n/** @hidden */\nexport var updateSelectionData = 'update-selection-data';\n/** @hidden */\nexport var methodCall = 'method-call';\n/** @hidden */\nexport var permissionRead = 'read';\n/** @hidden */\nexport var permissionEdit = 'write';\n/** @hidden */\nexport var permissionEditContents = 'writeContents';\n/** @hidden */\nexport var permissionCopy = 'copy';\n/** @hidden */\nexport var permissionUpload = 'upload';\n/** @hidden */\nexport var permissionDownload = 'download';\n","import { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, select, selectAll, EventHandler, KeyboardEvents, closest, Draggable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, addClass, removeClass, Touch, isVisible } from '@syncfusion/ej2-base';\nimport { getValue, setValue, remove } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { read, GetDetails, Delete } from '../common/operations';\nimport { doRename, getAccessClass, getPathObject, getFullPath, getDirectoryPath, rename, doDownload, getItemName } from '../common/index';\nimport { removeBlur, cutFiles, copyFiles, addBlur, openSearchFolder, removeActive, pasteHandler } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule } from '../common/index';\nimport { updateRenamingData, doDeleteFiles, doDownloadFiles } from '../common/index';\nimport { openAction, fileType, refresh, getImageUrl, getSortedData, createDeniedDialog, updateLayout } from '../common/utility';\nimport { createEmptyElement, hasReadAccess, hasEditAccess } from '../common/utility';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\n/**\n * LargeIconsView module\n */\nvar LargeIconsView = /** @class */ (function () {\n /**\n * Constructor for the LargeIcons module.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function LargeIconsView(parent) {\n this.isInteraction = true;\n this.uploadOperation = false;\n this.count = 0;\n this.isRendered = true;\n this.tapCount = 0;\n this.isPasteOperation = false;\n this.isInteracted = true;\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n addClass([this.element], CLS.LARGE_ICONS);\n this.addEventListener();\n this.keyConfigs = {\n end: 'end',\n home: 'home',\n tab: 'tab',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n ctrlUp: 'ctrl+uparrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftLeft: 'shift+leftarrow',\n shiftRight: 'shift+rightarrow',\n shiftUp: 'shift+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csLeft: 'ctrl+shift+leftarrow',\n csRight: 'ctrl+shift+rightarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: 'ctrl+x',\n ctrlC: 'ctrl+c',\n ctrlV: 'ctrl+v',\n f2: 'f2',\n shiftdel: 'shift+delete',\n back: 'backspace',\n ctrlD: 'ctrl+d'\n };\n }\n LargeIconsView.prototype.render = function (args) {\n this.parent.visitedItem = null;\n this.startItem = null;\n showSpinner(this.parent.element);\n if (this.parent.view === 'LargeIcons') {\n this.resetMultiSelect();\n this.element.setAttribute('tabindex', '0');\n if (this.listObj) {\n this.unWireEvents();\n this.removeEventListener();\n }\n this.parent.notify(events.hideLayout, {});\n var iconsView = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n var ul = select('ul', iconsView);\n if (ul) {\n remove(ul);\n }\n this.listObj = {\n ariaAttributes: {\n itemRole: 'option', listRole: 'listbox', itemText: '',\n groupItemRole: 'group', wrapperRole: ''\n },\n showIcon: true,\n fields: { text: 'name', iconCss: '_fm_icon', imageUrl: '_fm_imageUrl', htmlAttributes: '_fm_htmlAttr' },\n sortOrder: this.parent.sortOrder,\n itemCreated: this.onItemCreated.bind(this),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer\n };\n this.items = [];\n this.items = this.renderList(args);\n this.items = getSortedData(this.parent, this.items);\n // eslint-disable-next-line\n this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.listElements));\n this.element.appendChild(this.listElements);\n this.preventImgDrag();\n this.createDragObj();\n iconsView.classList.remove(CLS.DISPLAY_NONE);\n if (this.itemList.length === 0) {\n var emptyList = this.element.querySelector('.' + CLS.LIST_PARENT);\n this.element.removeChild(emptyList);\n createEmptyElement(this.parent, this.element, args);\n }\n else if (this.itemList.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n if (this.isPasteOperation === true) {\n this.selectItems(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n /* istanbul ignore next */\n if (this.uploadOperation === true) {\n this.selectItems(this.parent.uploadItem);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.count++;\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.parent.activeModule = 'largeiconsview';\n }\n for (var i = 0; i < activeEle.length; i++) {\n activeEle[i].setAttribute('aria-selected', 'true');\n }\n this.adjustHeight();\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\n };\n LargeIconsView.prototype.preventImgDrag = function () {\n var i = 0;\n while (i < this.itemList.length) {\n if (this.itemList[i].querySelector('img')) {\n /* istanbul ignore next */\n this.itemList[i].ondragstart = function () { return false; };\n }\n i++;\n }\n };\n LargeIconsView.prototype.createDragObj = function () {\n var _this = this;\n if (!this.parent.isMobile && this.listObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.listElements, {\n enableTailMode: true,\n distance: 5,\n enableAutoScroll: true,\n dragTarget: '.' + CLS.LARGE_ICON,\n helper: this.dragHelper.bind(this),\n cursorAt: this.parent.dragCursorPosition,\n dragArea: this.parent.element,\n dragStop: dragStopHandler.bind(this, this.parent),\n drag: draggingHandler.bind(this, this.parent),\n clone: true,\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n }\n });\n }\n else if (this.dragObj && !this.parent.allowDragAndDrop) {\n this.dragObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = closest(dragTarget, '.e-list-item');\n if (!dragLi) {\n return null;\n }\n if (dragLi && !dragLi.classList.contains('e-active')) {\n this.setFocus(dragLi);\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n for (var i = 0; i < activeEle.length; i++) {\n // eslint-disable-next-line\n this.parent.dragData.push(this.getItemObject(activeEle[i]));\n this.parent.activeElements.push(activeEle[i]);\n }\n getModule(this.parent, dragLi);\n this.parent.dragPath = this.parent.path;\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n LargeIconsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, '.e-list-item');\n // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n // eslint-disable-next-line\n var info = this.getItemObject(dropLi);\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n else {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n LargeIconsView.prototype.getModuleName = function () {\n return 'largeiconsview';\n };\n LargeIconsView.prototype.adjustHeight = function () {\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n this.element.style.height = (pane.offsetHeight - bar.offsetHeight) + 'px';\n };\n LargeIconsView.prototype.onItemCreated = function (args) {\n args.item.removeAttribute('aria-level');\n if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {\n var textEle = args.item.querySelector('.' + CLS.LIST_TEXT);\n var txt = getValue('name', args.curData);\n var type = getValue('type', args.curData);\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\n this.renderCheckbox(args);\n var eventArgs = {\n element: args.item,\n fileDetails: args.curData,\n module: 'LargeIconsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n LargeIconsView.prototype.renderCheckbox = function (args) {\n if (!this.parent.allowMultiSelection) {\n return;\n }\n var checkElement = createCheckBox(createElement, false, {\n checked: false,\n cssClass: 'e-small'\n });\n checkElement.setAttribute('role', 'checkbox');\n checkElement.setAttribute('aria-checked', 'false');\n args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);\n };\n LargeIconsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.destroy();\n this.render(args);\n /* istanbul ignore next */\n if (getValue('name', args) === 'layout-change' && this.parent.fileAction === 'move' &&\n this.parent.isCut && this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n var indexes = this.getIndexes(this.parent.selectedNodes);\n var length_1 = 0;\n while (length_1 < indexes.length) {\n addBlur(this.itemList[indexes[length_1]]);\n length_1++;\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.element.focus();\n }\n this.checkItem();\n this.parent.isLayoutChange = false;\n }\n else {\n this.element.setAttribute('tabindex', '-1');\n }\n };\n LargeIconsView.prototype.checkItem = function () {\n var checkEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (checkEle) {\n var checkLength = 0;\n while (checkLength < checkEle.length) {\n this.checkState(checkEle[checkLength], true);\n checkLength++;\n }\n }\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\n // eslint-disable-next-line\n var items = JSON.parse(JSON.stringify(args.files));\n while (i < items.length) {\n var icon = fileType(items[i]);\n var name_1 = getValue('name', items[i]);\n var selected = getItemName(this.parent, items[i]);\n var className = ((this.parent.selectedItems &&\n this.parent.selectedItems.indexOf(selected) !== -1)) ?\n CLS.LARGE_ICON + ' e-active' : CLS.LARGE_ICON;\n if (!hasEditAccess(items[i])) {\n className += ' ' + getAccessClass(items[i]);\n }\n if (icon === CLS.ICON_IMAGE && this.parent.showThumbnail && hasReadAccess(items[i])) {\n var imgUrl = getImageUrl(this.parent, items[i]);\n setValue('_fm_imageUrl', imgUrl, items[i]);\n setValue('_fm_imageAttr', { alt: name_1 }, items[i]);\n }\n else {\n setValue('_fm_icon', icon, items[i]);\n }\n setValue('_fm_htmlAttr', { class: className, title: name_1 }, items[i]);\n i++;\n }\n return items;\n };\n LargeIconsView.prototype.onFinalizeEnd = function (args) {\n this.render(args);\n };\n LargeIconsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.clearSelect();\n this.selectItems([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n this.parent.largeiconsviewModule.element.focus();\n };\n LargeIconsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n this.updateSelectedData();\n }\n };\n LargeIconsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.clearSelect();\n };\n LargeIconsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n };\n LargeIconsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'largeiconsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n LargeIconsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n /* istanbul ignore next */\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '') {\n this.parent.searchedItems = [];\n }\n if (this.parent.view === 'LargeIcons') {\n removeBlur(this.parent);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onLayoutChange(args);\n if (this.parent.renamedItem) {\n this.clearSelect();\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n }\n };\n LargeIconsView.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'largeiconsview') {\n this.doOpenAction(args.target);\n }\n };\n LargeIconsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'LargeIcons' && this.element) {\n this.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n LargeIconsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.startItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n var eveArgs = { ctrlKey: true, shiftKey: true };\n this.doSelection(lastItem, eveArgs);\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.clearSelection();\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n LargeIconsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onSearch = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n this.parent.searchedItems = args.files;\n this.onLayoutChange(args);\n }\n };\n LargeIconsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.adjustHeight();\n };\n LargeIconsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.updateSelectedData();\n };\n LargeIconsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'LargeIcons' && !isNOU(this.listObj) &&\n this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered\n && this.parent.sortBy === 'filterPath') {\n this.parent.sortBy = 'name';\n this.parent.notify(events.sortByChange, {});\n }\n };\n LargeIconsView.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.search, this.onSearch);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.splitterResize, this.splitterResizeHandler);\n this.parent.off(events.resizeEnd, this.resizeHandler);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n this.parent.off(events.filterEnd, this.onPathChanged);\n };\n LargeIconsView.prototype.addEventListener = function () {\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.search, this.onSearch, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.splitterResize, this.splitterResizeHandler, this);\n this.parent.on(events.resizeEnd, this.resizeHandler, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n };\n LargeIconsView.prototype.onActionFailure = function () { this.isInteraction = true; this.isInteracted = true; };\n // eslint-disable-next-line\n LargeIconsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var ele = closest(args.target, 'li');\n this.parent.itemData = [this.getItemObject(ele)];\n }\n };\n LargeIconsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.updateSelectedData();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n LargeIconsView.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath === '') ? [getPathObject(this.parent)] :\n [this.getItemObject(select('.e-active', this.element))];\n }\n };\n LargeIconsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeRecords = [];\n this.parent.activeElements = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.activeElements.push(activeEle[i]);\n this.parent.activeRecords.push(this.getItemObject(activeEle[i]));\n }\n }\n };\n LargeIconsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {\n this.onPathChanged(args);\n }\n }\n };\n LargeIconsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n LargeIconsView.prototype.onPropertyChanged = function (e) {\n var currentSelected;\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'selectedItems':\n this.isInteraction = false;\n this.isInteracted = false;\n currentSelected = isNOU(this.parent.selectedItems) ? [] : this.parent.selectedItems.slice(0);\n currentSelected = this.parent.allowMultiSelection ? currentSelected :\n currentSelected.slice(currentSelected.length - 1);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onClearAllInit();\n if (currentSelected.length) {\n this.selectItems(currentSelected);\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n this.isInteraction = true;\n this.isInteracted = true;\n break;\n case 'showThumbnail':\n refresh(this.parent);\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (this.parent.view !== 'LargeIcons') {\n break;\n }\n refresh(this.parent);\n break;\n case 'view':\n updateLayout(this.parent, 'LargeIcons');\n break;\n }\n }\n };\n LargeIconsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.listObj) {\n this.unWireEvents();\n }\n };\n LargeIconsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n };\n LargeIconsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onMouseOver = function (e) {\n var targetEle = closest(e.target, '.e-list-item');\n removeBlur(this.parent, 'hover');\n if (targetEle !== null) {\n targetEle.classList.add(CLS.HOVER);\n }\n };\n LargeIconsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n eve.originalEvent.preventDefault();\n if (proxy_1.parent.isDevice) {\n proxy_1.tapCount = eve.tapCount;\n proxy_1.tapEvent = eve;\n setTimeout(function () {\n if (proxy_1.tapCount > 0) {\n proxy_1.doTapAction(proxy_1.tapEvent);\n }\n proxy_1.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n proxy_1.dblClickHandler(eve);\n }\n else {\n proxy_1.clickHandler(eve);\n }\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n proxy_1.multiSelect = proxy_1.parent.allowMultiSelection ? true : false;\n if (proxy_1.parent.allowMultiSelection) {\n addClass([proxy_1.parent.element], CLS.MULTI_SELECT);\n }\n proxy_1.clickHandler(e);\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.doTapAction = function (eve) {\n var target = eve.originalEvent.target;\n var item = closest(target, '.' + CLS.LIST_ITEM);\n if (this.multiSelect || target.classList.contains(CLS.LIST_PARENT) || isNOU(item)) {\n this.clickHandler(eve);\n }\n else {\n this.parent.isFile = false;\n this.updateType(item);\n if (!this.parent.isFile) {\n this.dblClickHandler(eve);\n }\n else if (eve.tapCount === 2) {\n this.clickHandler(eve);\n this.dblClickHandler(eve);\n }\n else {\n this.clickHandler(eve);\n }\n }\n };\n LargeIconsView.prototype.clickHandler = function (e) {\n var target = e.originalEvent.target;\n removeBlur(this.parent, 'hover');\n this.doSelection(target, e.originalEvent);\n this.parent.activeModule = 'largeiconsview';\n };\n /**\n *\n * @param {Element} target - specifies the target element.\n * @param {TouchEventArgs | MouseEventArgs | KeyboardEventArgs} e - specifies event arguements.\n * @returns {void}\n * @hidden\n */\n LargeIconsView.prototype.doSelection = function (target, e) {\n var item = closest(target, '.' + CLS.LIST_ITEM);\n var cList = target.classList;\n this.parent.isFile = false;\n var action = 'select';\n if (e.which === 3 && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {\n this.updateType(item);\n return;\n }\n else if (!isNOU(item)) {\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)\n && (e.ctrlKey || target.classList.contains(CLS.CHECK))) {\n action = 'unselect';\n }\n var fileSelectionArgs = this.triggerSelection(action, item);\n if (fileSelectionArgs.cancel !== true) {\n if ((!this.parent.allowMultiSelection || (!this.multiSelect && (e && !e.ctrlKey)))\n && !cList.contains(CLS.FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey) {\n if (!(e && e.ctrlKey)) {\n this.clearSelect();\n }\n if (!this.startItem) {\n this.startItem = item;\n }\n var startIndex = this.itemList.indexOf(this.startItem);\n var endIndex = this.itemList.indexOf(item);\n if (startIndex > endIndex) {\n for (var i = startIndex; i >= endIndex; i--) {\n this.addActive(this.itemList[i]);\n }\n }\n else {\n for (var i = startIndex; i <= endIndex; i++) {\n this.addActive(this.itemList[i]);\n }\n }\n this.addFocus(this.itemList[endIndex]);\n }\n else {\n this.startItem = item;\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)) {\n this.removeActive(item);\n }\n else {\n this.addActive(item);\n }\n this.addFocus(item);\n }\n if (this.parent.selectedItems.length === 0) {\n this.resetMultiSelect();\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect(action, item);\n }\n }\n else {\n this.clearSelection();\n }\n if (!isNOU(item)) {\n this.updateType(item);\n }\n };\n LargeIconsView.prototype.dblClickHandler = function (e) {\n this.parent.activeModule = 'largeiconsview';\n var target = e.originalEvent.target;\n this.doOpenAction(target);\n };\n LargeIconsView.prototype.clearSelection = function () {\n this.clearSelect();\n this.resetMultiSelect();\n this.parent.notify(events.selectionChanged, {});\n };\n LargeIconsView.prototype.resetMultiSelect = function () {\n this.multiSelect = false;\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n };\n LargeIconsView.prototype.doOpenAction = function (target) {\n var _this = this;\n if (isNOU(target)) {\n return;\n }\n var item = closest(target, '.' + CLS.LIST_ITEM);\n this.parent.isFile = false;\n if (!isNOU(item)) {\n this.updateType(item);\n // eslint-disable-next-line\n var details_1 = this.getItemObject(item);\n if (!hasReadAccess(details_1)) {\n createDeniedDialog(this.parent, details_1, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: details_1, module: 'LargeIconsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var text = getValue('name', details_1);\n if (!_this.parent.isFile) {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', details_1);\n var newPath = _this.parent.path + (isNOU(id) ? text : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(text);\n _this.parent.pathId.push(getValue('_fm_id', details_1));\n _this.parent.itemData = [details_1];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, details_1);\n }\n _this.parent.isFiltered = false;\n _this.parent.setProperties({ selectedItems: [] }, true);\n }\n else {\n var icon = fileType(details_1);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, details_1);\n createImageDialog(_this.parent, text, imgUrl);\n }\n }\n }\n });\n }\n };\n LargeIconsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n LargeIconsView.prototype.keydownActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'moveDown':\n case 'moveLeft':\n case 'moveRight':\n case 'moveUp':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n LargeIconsView.prototype.keyActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n var fItem = this.getFocusedItem();\n var firstItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n switch (e.action) {\n case 'end':\n this.navigateItem(lastItem);\n break;\n case 'home':\n this.navigateItem(firstItem);\n break;\n case 'tab':\n if (!isNOU(fItem)) {\n this.addFocus(fItem);\n }\n else if (!isNOU(firstItem)) {\n this.addFocus(firstItem);\n }\n break;\n case 'moveDown':\n this.navigateDown(fItem, true);\n break;\n case 'moveLeft':\n this.navigateRight(fItem, false);\n break;\n case 'moveRight':\n this.navigateRight(fItem, true);\n break;\n case 'moveUp':\n this.navigateDown(fItem, false);\n break;\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n this.csEndKey(lastItem, e);\n break;\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n this.csHomeKey(firstItem, e);\n break;\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n this.csDownKey(fItem, e);\n break;\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n this.csLeftKey(fItem, e);\n break;\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n this.csRightKey(fItem, e);\n break;\n case 'ctrlUp':\n case 'shiftUp':\n case 'csUp':\n this.csUpKey(fItem, e);\n break;\n case 'space':\n this.spaceKey(fItem);\n break;\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n if (!isNOU(fItem)) {\n this.doSelection(fItem, e);\n }\n break;\n case 'ctrlA':\n this.ctrlAKey(firstItem, lastItem);\n break;\n case 'enter':\n this.doOpenAction(this.parent.visitedItem ? this.parent.visitedItem : this.getVisitedItem());\n break;\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n }\n };\n LargeIconsView.prototype.doDownload = function () {\n this.updateSelectedData();\n doDownload(this.parent);\n };\n LargeIconsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.updateSelectedData();\n // eslint-disable-next-line\n var data = this.parent.itemData;\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(this.parent, data[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n LargeIconsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n LargeIconsView.prototype.updateRenameData = function () {\n var item = select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n updateRenamingData(this.parent, data);\n };\n LargeIconsView.prototype.getVisitedItem = function () {\n var item = this.parent.selectedItems[this.parent.selectedItems.length - 1];\n var indexes = this.getIndexes([item], this.parent.hasId);\n return this.itemList[indexes[0]];\n };\n LargeIconsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.FOCUS, this.element);\n };\n LargeIconsView.prototype.getActiveItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n };\n LargeIconsView.prototype.getFirstItem = function () {\n return this.itemList[0];\n };\n LargeIconsView.prototype.getLastItem = function () {\n return this.itemList[this.itemList.length - 1];\n };\n LargeIconsView.prototype.navigateItem = function (item) {\n this.setFocus(item);\n };\n LargeIconsView.prototype.navigateDown = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards, this.perRow);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.navigateRight = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.getNextItem = function (li, isTowards, perRow) {\n if (isNOU(li)) {\n return this.getFocusedItem() || this.getActiveItem() || this.getFirstItem();\n }\n var index = this.itemList.indexOf(li);\n var nextItem;\n do {\n if (isTowards) {\n index = perRow ? index + perRow : index + 1;\n }\n else {\n index = perRow ? index - perRow : index - 1;\n }\n nextItem = this.itemList[index];\n if (isNOU(nextItem)) {\n return li;\n }\n } while (!isVisible(nextItem));\n return nextItem;\n };\n LargeIconsView.prototype.setFocus = function (nextItem) {\n if (!isNOU(nextItem)) {\n var fileSelectionArgs = this.triggerSelection('select', nextItem);\n if (fileSelectionArgs.cancel !== true) {\n this.startItem = nextItem;\n this.clearSelect();\n this.addActive(nextItem);\n this.addFocus(nextItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', nextItem);\n }\n }\n };\n LargeIconsView.prototype.spaceKey = function (fItem) {\n if (!isNOU(fItem) && !fItem.classList.contains(CLS.ACTIVE)) {\n var fileSelectionArgs = this.triggerSelection('select', fItem);\n if (fileSelectionArgs.cancel !== true) {\n this.addActive(fItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', fItem);\n }\n }\n };\n LargeIconsView.prototype.ctrlAKey = function (firstItem, lastItem) {\n if (this.parent.allowMultiSelection && !isNOU(firstItem)) {\n this.startItem = firstItem;\n var eveArgs = { ctrlKey: true, shiftKey: true };\n var liParent = this.element.querySelector('.' + CLS.LIST_PARENT);\n var liScrPos = liParent.scrollTop;\n var getCurFocusedItem = this.getFocusedItem();\n this.doSelection(lastItem, eveArgs);\n liParent.scrollTop = liScrPos;\n if (!isNOU(getCurFocusedItem)) {\n this.addFocus(getCurFocusedItem);\n }\n }\n };\n LargeIconsView.prototype.csEndKey = function (lastItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(lastItem);\n }\n else if (!isNOU(lastItem)) {\n if (e.action === 'ctrlEnd') {\n this.addFocus(lastItem);\n }\n else {\n this.doSelection(lastItem, e);\n }\n }\n };\n LargeIconsView.prototype.csHomeKey = function (firstItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(firstItem);\n }\n else if (!isNOU(firstItem)) {\n if (e.action === 'ctrlHome') {\n this.addFocus(firstItem);\n }\n else {\n this.doSelection(firstItem, e);\n }\n }\n };\n LargeIconsView.prototype.csDownKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, true);\n }\n else {\n var dItem = this.getNextItem(fItem, true, this.perRow);\n if (!isNOU(dItem)) {\n if (e.action === 'ctrlDown') {\n this.addFocus(dItem);\n }\n else {\n this.doSelection(dItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csLeftKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, false);\n }\n else {\n var lItem = this.getNextItem(fItem, false);\n if (!isNOU(lItem)) {\n if (e.action === 'ctrlLeft') {\n this.addFocus(lItem);\n }\n else {\n this.doSelection(lItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csRightKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, true);\n }\n else {\n var rItem = this.getNextItem(fItem, true);\n if (!isNOU(rItem)) {\n if (e.action === 'ctrlRight') {\n this.addFocus(rItem);\n }\n else {\n this.doSelection(rItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csUpKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, false);\n }\n else {\n var uItem = this.getNextItem(fItem, false, this.perRow);\n if (!isNOU(uItem)) {\n if (e.action === 'ctrlUp') {\n this.addFocus(uItem);\n }\n else {\n this.doSelection(uItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.addActive = function (nextItem) {\n if (!isNOU(nextItem)) {\n if (!nextItem.classList.contains(CLS.ACTIVE)) {\n this.parent.selectedItems.push(this.getDataName(nextItem));\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n addClass([nextItem], [CLS.ACTIVE]);\n nextItem.setAttribute('aria-selected', 'true');\n this.checkState(nextItem, true);\n }\n this.parent.visitedItem = nextItem;\n }\n };\n LargeIconsView.prototype.removeActive = function (preItem) {\n if (!isNOU(preItem)) {\n removeClass([preItem], [CLS.ACTIVE]);\n if (this.parent.allowMultiSelection) {\n preItem.setAttribute('aria-selected', 'false');\n }\n else {\n preItem.removeAttribute('aria-selected');\n }\n this.checkState(preItem, false);\n var index = this.parent.selectedItems.indexOf(this.getDataName(preItem));\n if (index > -1) {\n this.parent.selectedItems.splice(index, 1);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n this.parent.visitedItem = null;\n }\n };\n LargeIconsView.prototype.getDataName = function (item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n return getItemName(this.parent, data);\n };\n LargeIconsView.prototype.addFocus = function (item) {\n this.element.setAttribute('tabindex', '-1');\n var fItem = this.getFocusedItem();\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS]);\n }\n addClass([item], [CLS.FOCUS]);\n item.setAttribute('tabindex', '0');\n item.focus();\n };\n LargeIconsView.prototype.checkState = function (item, toCheck) {\n if (!this.parent.allowMultiSelection) {\n return;\n }\n var checkEle = select('.' + CLS.FRAME, item);\n if (isNOU(checkEle)) {\n return;\n }\n if (toCheck) {\n if (!checkEle.classList.contains(CLS.CHECK)) {\n addClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'true');\n }\n }\n else {\n if (checkEle.classList.contains(CLS.CHECK)) {\n removeClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'false');\n }\n }\n };\n LargeIconsView.prototype.clearSelect = function () {\n var eles = Array.prototype.slice.call(selectAll('.' + CLS.ACTIVE, this.listElements));\n var fileSelectionArgs;\n if (eles.length !== 0) {\n fileSelectionArgs = this.triggerSelection('unselect', eles[0]);\n if (fileSelectionArgs.cancel !== true) {\n for (var i = 0, len = eles.length; i < len; i++) {\n this.removeActive(eles[i]);\n }\n }\n this.triggerSelect('unselect', eles[0]);\n }\n };\n LargeIconsView.prototype.resizeHandler = function () {\n this.getItemCount();\n if (!isNOU(this.listObj)) {\n this.adjustHeight();\n }\n };\n LargeIconsView.prototype.splitterResizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.getItemCount = function () {\n var perRow = 1;\n if (this.itemList) {\n for (var i = 0, len = this.itemList.length - 1; i < len; i++) {\n if (this.itemList[i].getBoundingClientRect().top === this.itemList[i + 1].getBoundingClientRect().top) {\n perRow++;\n }\n else {\n break;\n }\n }\n }\n this.perRow = perRow;\n };\n LargeIconsView.prototype.triggerSelection = function (action, item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n var eventArgs = {\n action: action, fileDetails: data, isInteracted: this.isInteraction, cancel: false, target: item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n };\n LargeIconsView.prototype.triggerSelect = function (action, item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n this.parent.visitedData = data;\n var eventArgs = { action: action, fileDetails: data, isInteracted: this.isInteracted };\n this.parent.trigger('fileSelect', eventArgs);\n this.isInteracted = true;\n };\n LargeIconsView.prototype.selectItems = function (items) {\n var indexes = this.getIndexes(items, this.parent.hasId);\n for (var j = 0, len = indexes.length; j < len; j++) {\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[indexes[j]], eveArgs);\n }\n };\n LargeIconsView.prototype.getIndexes = function (items, byId) {\n var indexes = [];\n var filter = byId ? 'id' : 'name';\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filter, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n return indexes;\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var newData = new DataManager(this.items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (newData.length > 0) {\n resultData = new DataManager(newData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n var index = this.items.indexOf(resultData[0]);\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[index], eveArgs);\n }\n };\n LargeIconsView.prototype.updateSelectedData = function () {\n // eslint-disable-next-line\n var data = [];\n var items = selectAll('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n for (var i = 0; i < items.length; i++) {\n data[i] = this.getItemObject(items[i]);\n }\n this.parent.itemData = data;\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.onMethodCall = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n var action = getValue('action', args);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', args));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', args));\n break;\n case 'openFile':\n this.openFile(getValue('id', args));\n break;\n case 'renameFile':\n this.isInteraction = false;\n this.isInteracted = false;\n this.renameFile(getValue('id', args), getValue('newName', args));\n break;\n case 'createFolder':\n this.isInteraction = false;\n this.isInteracted = false;\n break;\n case 'clearSelection':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onClearAllInit();\n break;\n case 'selectAll':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onSelectAllInit();\n break;\n }\n };\n LargeIconsView.prototype.getItemsIndex = function (items) {\n var indexes = [];\n var isFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filterName = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !isFilter) {\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filterName, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n }\n else {\n for (var i = 0, len = this.items.length; i < len; i++) {\n var name_2 = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);\n if (items.indexOf(name_2) !== -1) {\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 = getLocaleText(this.parent, 'Search') + ' ' + args.cwd.name;\n };\n return BreadCrumbBar;\n}());\nexport { BreadCrumbBar };\n","import { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, createElement, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, select } from '@syncfusion/ej2-base';\nimport { Download, GetDetails } from './../common/operations';\nimport { createDialog } from './dialog';\nimport { cutFiles, copyFiles, refresh, getPathObject, getLocaleText, updateLayout, getFullPath } from './../common/utility';\nimport { getCssClass, sortbyClickHandler, pasteHandler } from './../common/utility';\nimport { createDeniedDialog, createNewFolder, uploadItem, hasEditAccess, hasDownloadAccess } from './../common/utility';\nimport * as events from './../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * ContextMenu module\n */\nvar ContextMenu = /** @class */ (function () {\n /**\n * Constructor for the ContextMenu module\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @hidden\n */\n function ContextMenu(parent) {\n this.currentItems = [];\n this.currentElement = null;\n this.disabledItems = [];\n this.parent = parent;\n this.render();\n }\n ContextMenu.prototype.render = function () {\n this.keyConfigs = {\n downarrow: 'downarrow',\n uparrow: 'uparrown'\n };\n this.contextMenu = new Menu({\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n target: '#' + this.parent.element.id,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.onBeforeItemRender.bind(this),\n select: this.onSelect.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this),\n cssClass: getCssClass(this.parent, CLS.ROOT_POPUP)\n });\n this.contextMenu.isStringTemplate = true;\n this.contextMenu.appendTo('#' + this.parent.element.id + CLS.CONTEXT_MENU_ID);\n this.addEventListener();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeItemRender = function (args) {\n if (args.item.id === this.getMenuId('largeiconsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'LargeIcons' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_LARGE + ' ' + CLS.MENU_ICON);\n }\n if (args.item.id === this.getMenuId('detailsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'Details' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_GRID + ' ' + CLS.MENU_ICON);\n }\n };\n ContextMenu.prototype.onBeforeClose = function () {\n this.menuTarget = null;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeOpen = function (args) {\n var _this = this;\n this.disabledItems = [];\n var selected = false;\n var uid;\n // eslint-disable-next-line\n var data;\n var treeFolder = false;\n var target = args.event.target;\n this.menuTarget = 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 = target;\n }\n if (target.classList.contains(CLS.FULLROW)) {\n this.parent.selectedItems.length = 0;\n }\n this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr') : target;\n var view = this.getTargetView(target);\n this.updateActiveModule();\n /* istanbul ignore next */\n if (target.classList.contains(CLS.TREE_VIEW) || closest(target, 'th') ||\n (closest(target, '#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID)) ||\n (closest(target, '#' + this.parent.element.id + CLS.TOOLBAR_ID))) {\n args.cancel = true;\n // eslint:disable-next-line\n }\n else if (!(this.parent.view === 'LargeIcons') && this.targetElement &&\n this.targetElement.classList.contains('e-emptyrow')) {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else if (closest(target, '.' + CLS.EMPTY)) {\n this.setLayoutItem(target);\n // eslint:disable-next-line\n }\n else if (!target.classList.contains(CLS.MENU_ITEM) &&\n !target.classList.contains(CLS.MENU_ICON) && !target.classList.contains(CLS.SUBMENU_ICON)) {\n /* istanbul ignore next */\n // eslint:disable-next-line\n if (this.parent.view === 'LargeIcons' && !isNOU(closest(target, 'li')) && !closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n var eveArgs = { ctrlKey: true, shiftKey: true };\n if (!closest(target, 'li').classList.contains('e-active')) {\n this.parent.largeiconsviewModule.doSelection(target, eveArgs);\n }\n // eslint-disable-next-line\n data = this.parent.visitedData;\n selected = true;\n }\n else if (!isNOU(closest(target, 'tr'))) {\n uid = this.targetElement.getAttribute('data-uid');\n // eslint-disable-next-line\n data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;\n if (isNOU(this.targetElement.getAttribute('aria-selected'))) {\n /* istanbul ignore next */\n this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('aria-rowindex'), 10)]);\n }\n selected = true;\n /* istanbul ignore next */\n }\n else if (closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n uid = closest(target, 'li').getAttribute('data-uid');\n treeFolder = true;\n }\n /* istanbul ignore next */\n if (selected) {\n if (getValue('isFile', data) === true) {\n this.setFileItem();\n }\n else {\n this.setFolderItem(false);\n }\n /* istanbul ignore next */\n }\n else if (treeFolder) {\n this.setFolderItem(true);\n if (uid === this.parent.pathId[0]) {\n this.disabledItems.push('Delete', 'Rename', 'Cut', 'Copy');\n }\n /* istanbul ignore next */\n // eslint:disable-next-line\n }\n else if (view === 'TreeView' || view === 'GridView' || view === 'LargeIcon') {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else {\n args.cancel = true;\n }\n }\n var pasteEle = select('#' + this.getMenuId('Paste'), this.contextMenu.element);\n if (!args.cancel && !this.parent.enablePaste &&\n pasteEle && !pasteEle.classList.contains('e-disabled')) {\n this.disabledItems.push('Paste');\n }\n if (args.cancel) {\n this.menuTarget = this.currentElement = null;\n return;\n }\n this.contextMenu.dataBind();\n var isSubMenu = false;\n if (target.classList.contains(CLS.MENU_ITEM) ||\n target.classList.contains(CLS.MENU_ICON) || target.classList.contains(CLS.SUBMENU_ICON)) {\n isSubMenu = true;\n }\n this.menuItemData = isSubMenu ? this.menuItemData : this.getMenuItemData();\n var eventArgs = {\n fileDetails: [this.menuItemData],\n element: args.element,\n target: target,\n items: isSubMenu ? args.items : this.contextMenu.items,\n menuModule: this.contextMenu,\n cancel: false,\n menuType: this.menuType,\n isSubMenu: isSubMenu\n };\n this.currentItems = eventArgs.items;\n this.parent.trigger('menuOpen', eventArgs, function (menuOpenArgs) {\n if (!isSubMenu) {\n _this.contextMenu.dataBind();\n _this.contextMenu.items = menuOpenArgs.items;\n _this.contextMenu.dataBind();\n }\n _this.enableItems(_this.disabledItems, false, true);\n args.cancel = menuOpenArgs.cancel;\n if (menuOpenArgs.cancel) {\n _this.menuTarget = _this.currentElement = null;\n }\n });\n };\n ContextMenu.prototype.updateActiveModule = function () {\n this.parent.activeModule = closest(this.menuTarget, '#' + this.parent.element.id + CLS.TREE_ID) ?\n 'navigationpane' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.GRID_ID) ?\n 'detailsview' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.LARGEICON_ID) ?\n 'largeiconsview' : this.parent.activeModule;\n };\n /* istanbul ignore next */\n /**\n *\n * @param {Element} target - specifies the target element.\n * @returns {string} -returns the target view.\n * @hidden\n */\n ContextMenu.prototype.getTargetView = function (target) {\n return target.classList.contains(CLS.TREE_VIEW) ?\n 'TreeView' : target.classList.contains(CLS.GRID_VIEW) ?\n 'GridView' : target.classList.contains(CLS.ICON_VIEW) ?\n 'LargeIcon' : target.classList.contains(CLS.LARGE_ICONS) ?\n 'LargeIcon' : '';\n };\n ContextMenu.prototype.getItemIndex = function (item) {\n var itemId = this.getMenuId(item);\n for (var i = 0; i < this.currentItems.length; i++) {\n if ((this.currentItems[i].id === itemId) || (this.currentItems[i].id === item)) {\n return i;\n }\n }\n return -1;\n };\n ContextMenu.prototype.disableItem = function (items) {\n if (items.length !== 0) {\n this.disabledItems = this.disabledItems.concat(items);\n }\n };\n ContextMenu.prototype.enableItems = function (items, enable, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n if (this.checkValidItem(items[i]) === 1) {\n this.contextMenu.enableItems([this.getMenuId(items[i])], enable, isUniqueId);\n }\n else if (this.checkValidItem(items[i]) === 2) {\n this.contextMenu.enableItems([items[i]], enable, isUniqueId);\n }\n }\n };\n ContextMenu.prototype.setFolderItem = function (isTree) {\n this.menuType = 'folder';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (isTree) {\n this.disabledItems.push('Open');\n }\n else if (this.parent.selectedItems.length !== 1) {\n this.disabledItems.push('Rename', 'Paste');\n }\n };\n ContextMenu.prototype.setFileItem = function () {\n this.menuType = 'file';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.file.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (this.parent.selectedItems.length !== 1) {\n this.disabledItems.push('Rename');\n }\n };\n ContextMenu.prototype.setLayoutItem = function (target) {\n this.menuType = 'layout';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' &&\n (closest(target, '#' + this.parent.element.id + CLS.LARGEICON_ID).getElementsByClassName(CLS.EMPTY).length !== 0))\n || (this.parent.view === 'Details' &&\n (closest(target, '#' + this.parent.element.id + CLS.GRID_ID).getElementsByClassName(CLS.EMPTY).length !== 0)))) {\n this.disabledItems.push('SelectAll');\n }\n if (this.parent.selectedNodes.length === 0) {\n this.disabledItems.push('Paste');\n }\n this.contextMenu.dataBind();\n };\n ContextMenu.prototype.checkValidItem = function (nameEle) {\n if (!isNOU(select('#' + this.getMenuId(nameEle), this.currentElement))) {\n return 1;\n }\n else if (!isNOU(select('#' + nameEle, this.currentElement))) {\n return 2;\n }\n else {\n return -1;\n }\n };\n // eslint-disable-next-line\n ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n // eslint-disable-next-line\n var args = { target: this.menuTarget };\n this.parent.notify(events.menuItemData, args);\n return this.parent.itemData[0];\n }\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onSelect = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var itemText = args.item.id.substr((this.parent.element.id + '_cm_').length);\n // eslint-disable-next-line\n var details;\n if (itemText === 'refresh' || itemText === 'newfolder' || itemText === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = {\n cancel: false,\n element: args.element,\n fileDetails: details,\n item: args.item\n };\n this.parent.trigger('menuClick', eventArgs, function (menuClickArgs) {\n var sItems;\n if (!menuClickArgs.cancel) {\n // eslint:disable-next-line\n switch (itemText) {\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'paste':\n if (_this.menuType === 'folder') {\n if ((_this.parent.activeModule === 'largeiconsview') || (_this.parent.activeModule === 'detailsview')) {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\n }\n else {\n _this.parent.folderPath = '';\n }\n }\n else {\n _this.parent.folderPath = '';\n }\n pasteHandler(_this.parent);\n break;\n case 'delete':\n for (var j = 0; j < details.length; j++) {\n if (!hasEditAccess(details[j])) {\n createDeniedDialog(_this.parent, details[j], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n /* istanbul ignore next */\n case 'download':\n for (var i = 0; i < details.length; i++) {\n if (!hasDownloadAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionDownload);\n return;\n }\n }\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.notify(events.downloadInit, {});\n }\n else if (_this.parent.selectedItems.length > 0) {\n Download(_this.parent, _this.parent.path, _this.parent.selectedItems);\n }\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'selectall':\n /* istanbul ignore next */\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'open':\n if (_this.parent.visitedItem) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n /* istanbul ignore next */\n case 'name':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'size':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'date':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'ascending':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'descending':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n case 'none':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'largeiconsview':\n updateLayout(_this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'detailsview':\n updateLayout(_this.parent, 'Details');\n break;\n }\n }\n });\n };\n ContextMenu.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.contextMenu.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n break;\n }\n }\n };\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.keyboardModule = new KeyboardEvents(this.contextMenu.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n ContextMenu.prototype.removeEventListener = function () {\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.keyboardModule.destroy();\n };\n ContextMenu.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n e.preventDefault();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n ContextMenu.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.contextMenu.destroy();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.getItemData = function (data) {\n var items = [];\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getMenuId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n switch (data[i]) {\n case '|':\n item = { separator: true };\n break;\n case 'Open':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_OPEN };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_UPLOAD };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_CUT };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_COPY };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_PASTE };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DELETE };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_RENAME };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_NEWFOLDER };\n break;\n case 'Details':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DETAILS };\n break;\n case 'SortBy':\n item = {\n id: itemId, text: itemText, iconCss: CLS.ICON_SHORTBY,\n items: [\n {\n id: this.getMenuId('Name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : null\n },\n { separator: true },\n {\n id: this.getMenuId('Ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('Descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('None'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n /* istanbul ignore next */\n case 'View':\n item = {\n id: itemId, text: itemText, iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n items: [\n {\n id: this.getMenuId('largeiconsview'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? null : CLS.TB_OPTION_TICK\n },\n {\n id: this.getMenuId('detailsview'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_REFRESH };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_SELECTALL };\n break;\n /* istanbul ignore next */\n case 'Download':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DOWNLOAD };\n break;\n /* istanbul ignore next */\n default:\n item = { id: itemId, text: itemText };\n break;\n }\n items.push(item);\n }\n return items;\n };\n ContextMenu.prototype.getMenuId = function (id) {\n return this.parent.element.id + '_cm_' + id.toLowerCase();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","/**\n * Specifies the default locale of FileManager component\n */\n// eslint-disable-next-line\nexport var defaultLocale = {\n 'NewFolder': 'New folder',\n 'Upload': 'Upload',\n 'Delete': 'Delete',\n 'Rename': 'Rename',\n 'Download': 'Download',\n 'Cut': 'Cut',\n 'Copy': 'Copy',\n 'Paste': 'Paste',\n 'SortBy': 'Sort by',\n 'Refresh': 'Refresh',\n 'Item-Selection': 'item selected',\n 'Items-Selection': 'items selected',\n 'View': 'View',\n 'Details': 'Details',\n 'SelectAll': 'Select all',\n 'Open': 'Open',\n 'Tooltip-NewFolder': 'New folder',\n 'Tooltip-Upload': 'Upload',\n 'Tooltip-Delete': 'Delete',\n 'Tooltip-Rename': 'Rename',\n 'Tooltip-Download': 'Download',\n 'Tooltip-Cut': 'Cut',\n 'Tooltip-Copy': 'Copy',\n 'Tooltip-Paste': 'Paste',\n 'Tooltip-SortBy': 'Sort by',\n 'Tooltip-Refresh': 'Refresh',\n 'Tooltip-Selection': 'Clear selection',\n 'Tooltip-View': 'View',\n 'Tooltip-Details': 'Details',\n 'Tooltip-SelectAll': 'Select all',\n 'Name': 'Name',\n 'Size': 'Size',\n 'DateModified': 'Modified',\n 'DateCreated': 'Date created',\n 'Path': 'Path',\n 'Modified': 'Modified',\n 'Created': 'Created',\n 'Location': 'Location',\n 'Type': 'Type',\n 'Permission': 'Permission',\n 'Ascending': 'Ascending',\n 'Descending': 'Descending',\n 'None': 'None',\n 'View-LargeIcons': 'Large icons',\n 'View-Details': 'Details',\n 'Search': 'Search',\n 'Button-Ok': 'OK',\n 'Button-Cancel': 'Cancel',\n 'Button-Yes': 'Yes',\n 'Button-No': 'No',\n 'Button-Create': 'Create',\n 'Button-Save': 'Save',\n 'Header-NewFolder': 'Folder',\n 'Content-NewFolder': 'Enter your folder name',\n 'Header-Rename': 'Rename',\n 'Content-Rename': 'Enter your new name',\n 'Header-Rename-Confirmation': 'Rename Confirmation',\n 'Content-Rename-Confirmation': 'If you change a file name extension, the file might become unstable. ' +\n 'Are you sure you want to change it?',\n 'Header-Delete': 'Delete File',\n 'Content-Delete': 'Are you sure you want to delete this file?',\n 'Header-Folder-Delete': 'Delete Folder',\n 'Content-Folder-Delete': 'Are you sure you want to delete this folder?',\n 'Header-Multiple-Delete': 'Delete Multiple Items',\n 'Content-Multiple-Delete': 'Are you sure you want to delete these {0} items?',\n 'Header-Duplicate': 'File/Folder exists',\n 'Content-Duplicate': '{0} already exists. Do you want to rename and paste?',\n 'Header-Upload': 'Upload Files',\n 'Error': 'Error',\n 'Validation-Empty': 'The file or folder name cannot be empty.',\n 'Validation-Invalid': 'The file or folder name {0} contains invalid characters. Please use a different name. ' +\n // eslint-disable-next-line no-useless-escape\n 'Valid file or folder names cannot end with a dot or space, and cannot contain any of the following characters: \\\\/:*?\\\"<>|',\n 'Validation-NewFolder-Exists': 'A file or folder with the name {0} already exists.',\n 'Validation-Rename-Exists': 'Cannot rename {0} to {1}: destination already exists.',\n 'Folder-Empty': 'This folder is empty',\n 'File-Upload': 'Drag files here to upload',\n 'Search-Empty': 'No results found',\n 'Search-Key': 'Try with different keywords',\n 'Filter-Empty': 'No results found',\n 'Filter-Key': 'Try with different filter',\n 'Sub-Folder-Error': 'The destination folder is the subfolder of the source folder.',\n \"Same-Folder-Error\": \"The destination folder is the same as the source folder.\",\n 'Access-Denied': 'Access Denied',\n 'Access-Details': 'You don\"t have permission to access this folder.',\n 'Header-Retry': 'File Already Exists',\n 'Content-Retry': 'A file with this name already exists in this folder. What would you like to do?',\n 'Button-Keep-Both': 'Keep both',\n 'Button-Replace': 'Replace',\n 'Button-Skip': 'Skip',\n 'ApplyAll-Label': 'Do this for all current items',\n 'KB': 'KB',\n 'Access-Message': '{0} is not accessible. You need permission to perform the {1} action.',\n 'Network-Error': 'NetworkError: Failed to send on XMLHTTPRequest: Failed to load',\n 'Server-Error': 'ServerError: Invalid response from'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isNullOrUndefined, L10n, closest } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Complex, select } from '@syncfusion/ej2-base';\nimport { createElement, addClass, removeClass, setStyleAttribute as setAttr } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Splitter } from '@syncfusion/ej2-layouts';\nimport { Dialog, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { ToolbarSettings, AjaxSettings, NavigationPaneSettings, DetailsViewSettings } from '../models/index';\nimport { SearchSettings } from '../models/index';\nimport { LargeIconsView } from '../layout/large-icons-view';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { UploadSettings } from '../models/upload-settings';\nimport * as events from './constant';\nimport * as CLS from './classes';\nimport { read, filter, createFolder } from '../common/operations';\nimport { refresh, getPathObject, getLocaleText, setNextPath, createDeniedDialog, getCssClass } from '../common/utility';\nimport { hasContentAccess, hasUploadAccess, updateLayout, createNewFolder, uploadItem } from '../common/utility';\nimport { ContextMenuSettings } from '../models/contextMenu-settings';\nimport { BreadCrumbBar } from '../actions/breadcrumb-bar';\nimport { ContextMenu } from '../pop-up/context-menu';\nimport { defaultLocale } from '../models/default-locale';\n/**\n * The FileManager component allows users to access and manage the file system through the web browser. It can performs the\n * functionalities like add, rename, search, sort, upload and delete files or folders. And also it\n * provides an easy way of dynamic injectable modules like toolbar, navigationpane, detailsview, largeiconsview.\n * ```html\n * <div id=\"file\"></div>\n * ```\n * ```typescript,\n * let feObj: FileManager = new FileManager();\n * feObj.appendTo('#file');\n * ```\n */\nvar FileManager = /** @class */ (function (_super) {\n __extends(FileManager, _super);\n function FileManager(options, element) {\n var _this = _super.call(this, options, element) || this;\n // eslint-disable-next-line\n _this.filterData = null;\n _this.selectedNodes = [];\n _this.duplicateItems = [];\n // eslint-disable-next-line\n _this.duplicateRecords = [];\n _this.previousPath = [];\n _this.nextPath = [];\n _this.isLayoutChange = false;\n _this.layoutSelectedItems = [];\n _this.renamedId = null;\n _this.uploadItem = [];\n _this.deleteRecords = [];\n _this.isFile = false;\n _this.sortBy = 'name';\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 _this.enablePaste = false;\n _this.persistData = false;\n _this.retryArgs = [];\n _this.isOpened = false;\n _this.isRetryOpened = false;\n _this.isPathDrag = false;\n // eslint-disable-next-line\n _this.searchedItems = [];\n _this.retryFiles = [];\n _this.isApplySame = false;\n // eslint-disable-next-line\n _this.dragData = [];\n _this.dragNodes = [];\n _this.dragPath = '';\n _this.dropPath = '';\n _this.isDragDrop = false;\n _this.treeExpandTimer = null;\n _this.dragCursorPosition = { left: 44, top: 18 };\n _this.isDropEnd = false;\n _this.dragCount = 0;\n // eslint-disable-next-line\n _this.droppedObjects = [];\n _this.uploadingCount = 0;\n _this.uploadedCount = 0;\n FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu);\n return _this;\n }\n FileManager_1 = FileManager;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n FileManager.prototype.getModuleName = function () {\n return 'filemanager';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n FileManager.prototype.preRender = function () {\n this.ensurePath();\n this.feParent = [];\n this.feFiles = [];\n setAttr(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.isDevice = Browser.isDevice;\n this.isMobile = this.checkMobile();\n if (this.isMobile) {\n this.setProperties({ navigationPaneSettings: { visible: false } }, true);\n }\n var ele = closest(this.element, '.e-bigger');\n this.isBigger = ele ? true : false;\n this.activeModule = (this.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n createSpinner({ target: this.element }, createElement);\n this.addWrapper();\n this.keyConfigs = {\n altN: 'alt+n',\n f5: 'f5',\n ctrlShift1: 'ctrl+shift+1',\n ctrlShift2: 'ctrl+shift+2',\n ctrlU: 'ctrl+u'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string} - returns the persisted data.\n * @hidden\n */\n FileManager.prototype.getPersistData = function () {\n var keyEntity = ['view', 'path', 'selectedItems'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n FileManager.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'breadcrumbbar',\n args: [this]\n });\n modules.push({\n member: 'largeiconsview',\n args: [this]\n });\n if (this.toolbarSettings.visible) {\n modules.push({\n member: 'toolbar',\n args: [this]\n });\n }\n if (this.navigationPaneSettings.visible) {\n modules.push({\n member: 'navigationpane',\n args: [this]\n });\n }\n if (this.view) {\n modules.push({\n member: 'detailsview',\n args: [this]\n });\n }\n if (this.contextMenuSettings.visible && !this.isDevice) {\n modules.push({\n member: 'contextmenu',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n FileManager.prototype.render = function () {\n this.initialize();\n var slItems = isNOU(this.selectedItems) ? [] :\n this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);\n this.setProperties({ selectedItems: slItems }, true);\n this.fileView = this.view;\n this.setRtl(this.enableRtl);\n this.addEventListeners();\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n this.adjustHeight();\n if (isNOU(this.navigationpaneModule)) {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n this.wireEvents();\n this.renderComplete();\n };\n FileManager.prototype.ensurePath = function () {\n var currentPath = this.path;\n if (isNOU(currentPath)) {\n currentPath = '/';\n }\n if (currentPath.lastIndexOf('/') !== (currentPath.length - 1)) {\n currentPath = currentPath + '/';\n }\n this.originalPath = currentPath;\n var paths = currentPath.split('/');\n this.setProperties({ path: paths[0] + '/' }, true);\n this.pathNames = [];\n this.pathId = ['fe_tree'];\n this.itemData = [];\n };\n FileManager.prototype.initialize = function () {\n if (this.isMobile) {\n addClass([this.element], CLS.MOBILE);\n }\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n this.addCssClass(null, this.cssClass);\n this.renderFileUpload();\n };\n FileManager.prototype.addWrapper = function () {\n var headerWrap = this.createElement('div', { id: this.element.id + CLS.TOOLBAR_ID });\n this.element.appendChild(headerWrap);\n var layoutWrap = this.createElement('div', {\n id: this.element.id + CLS.LAYOUT_ID, className: CLS.LAYOUT\n });\n this.element.appendChild(layoutWrap);\n var navigationWrap = this.createElement('div', {\n id: this.element.id + CLS.NAVIGATION_ID, className: CLS.NAVIGATION\n });\n var treeWrap = this.createElement('div', {\n id: this.element.id + CLS.TREE_ID\n });\n navigationWrap.appendChild(treeWrap);\n var contentWrap = this.createElement('div', {\n id: this.element.id + CLS.CONTENT_ID, className: CLS.LAYOUT_CONTENT\n });\n this.breadCrumbBarNavigation = this.createElement('div', {\n id: this.element.id + CLS.BREADCRUMBBAR_ID,\n className: CLS.BREADCRUMBS\n });\n contentWrap.appendChild(this.breadCrumbBarNavigation);\n var gridWrap = this.createElement('div', {\n id: this.element.id + CLS.GRID_ID\n });\n contentWrap.appendChild(gridWrap);\n var largeiconWrap = this.createElement('div', {\n id: this.element.id + CLS.LARGEICON_ID,\n className: CLS.LARGE_ICONS, attrs: { 'role': 'group' }\n });\n contentWrap.appendChild(largeiconWrap);\n var overlay = this.createElement('span', { className: CLS.OVERLAY });\n contentWrap.appendChild(overlay);\n var paneSettings;\n if (!this.enableRtl) {\n layoutWrap.appendChild(navigationWrap);\n layoutWrap.appendChild(contentWrap);\n paneSettings = [\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n },\n { size: '75%', min: '270px' }\n ];\n }\n else {\n layoutWrap.appendChild(contentWrap);\n layoutWrap.appendChild(navigationWrap);\n paneSettings = [\n { size: '75%', min: '270px' },\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n }\n ];\n }\n this.splitterObj = new Splitter({\n paneSettings: paneSettings,\n width: '100%',\n enableRtl: false,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n resizing: this.splitterResize.bind(this)\n });\n this.splitterObj.isStringTemplate = true;\n this.splitterObj.appendTo(layoutWrap);\n var dialogWrap = this.createElement('div', { id: this.element.id + CLS.DIALOG_ID });\n this.element.appendChild(dialogWrap);\n var menuWrap = this.createElement('ul', { id: this.element.id + CLS.CONTEXT_MENU_ID });\n this.element.appendChild(menuWrap);\n var dialogImgWrap = this.createElement('div', { id: this.element.id + CLS.IMG_DIALOG_ID });\n this.element.appendChild(dialogImgWrap);\n var extnDialogWrap = this.createElement('div', { id: this.element.id + CLS.EXTN_DIALOG_ID });\n this.element.appendChild(extnDialogWrap);\n var uploadDialogWrap = this.createElement('div', { id: this.element.id + CLS.UPLOAD_DIALOG_ID });\n this.element.appendChild(uploadDialogWrap);\n };\n FileManager.prototype.adjustHeight = function () {\n var toolbar = select('#' + this.element.id + CLS.TOOLBAR_ID, this.element);\n var toolBarHeight = toolbar ? toolbar.offsetHeight : 0;\n if (this.splitterObj) {\n this.splitterObj.height = (this.element.clientHeight - toolBarHeight).toString();\n this.splitterObj.dataBind();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.splitterResize = function () {\n this.notify(events.splitterResize, {});\n };\n FileManager.prototype.splitterAdjust = function () {\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n if (this.navigationPaneSettings.visible) {\n this.splitterObj.expand(this.enableRtl ? 1 : 0);\n bar.classList.remove(CLS.DISPLAY_NONE);\n }\n else {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n };\n FileManager.prototype.addCssClass = function (oldOne, newOne) {\n if (!isNOU(oldOne) && oldOne !== '') {\n removeClass([this.element], oldOne.split(' '));\n }\n if (!isNOU(newOne) && newOne !== '') {\n addClass([this.element], newOne.split(' '));\n }\n };\n FileManager.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n FileManager.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n FileManager.prototype.onContextMenu = function (e) {\n e.preventDefault();\n };\n FileManager.prototype.checkMobile = function () {\n return (/iphone|ipod|android|blackberry|opera|mini|windows\\sce|palm|smartphone|iemobile/i.test(Browser.userAgent.toLowerCase())\n && /mobile/i.test(Browser.userAgent.toLowerCase()));\n };\n FileManager.prototype.renderFileUpload = function () {\n var id = this.element.id + CLS.UPLOAD_ID;\n var uploadEle = this.createElement('input', { id: id, attrs: { name: 'uploadFiles', type: 'file' } });\n this.element.appendChild(uploadEle);\n this.uploadDialogObj = new Dialog({\n header: getLocaleText(this, 'Header-Upload'),\n content: uploadEle,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: false,\n isModal: true,\n width: '350px',\n target: this.popupTarget ? this.popupTarget : '#' + this.element.id,\n cssClass: getCssClass(this, this.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: this.locale,\n allowDragging: true,\n position: { X: 'center', Y: 'center' },\n enableRtl: this.enableRtl,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n open: this.onOpen.bind(this),\n close: this.onClose.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n });\n this.uploadDialogObj.appendTo('#' + this.element.id + CLS.UPLOAD_DIALOG_ID);\n this.renderUploadBox();\n };\n FileManager.prototype.renderUploadBox = function () {\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n this.uploadObj = new Uploader({\n dropArea: select('#' + this.element.id + CLS.CONTENT_ID, this.element),\n asyncSettings: {\n saveUrl: uploadUrl,\n removeUrl: uploadUrl\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n removing: this.onRemoving.bind(this),\n clearing: this.onClearing.bind(this),\n selected: this.onSelected.bind(this),\n success: this.onUploadSuccess.bind(this),\n failure: this.onUploadFailure.bind(this),\n autoUpload: this.uploadSettings.autoUpload,\n minFileSize: this.uploadSettings.minFileSize,\n maxFileSize: this.uploadSettings.maxFileSize,\n allowedExtensions: this.uploadSettings.allowedExtensions,\n fileListRendering: this.onFileListRender.bind(this)\n });\n this.uploadObj.appendTo('#' + this.element.id + CLS.UPLOAD_ID);\n };\n FileManager.prototype.onFileListRender = function (args) {\n this.trigger('uploadListCreate', args);\n };\n FileManager.prototype.updateUploader = function () {\n this.uploadObj.autoUpload = this.uploadSettings.autoUpload;\n this.uploadObj.minFileSize = this.uploadSettings.minFileSize;\n this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;\n this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;\n this.uploadObj.dataBind();\n };\n FileManager.prototype.onBeforeOpen = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onOpen = function () {\n this.isOpened = true;\n this.uploadDialogObj.element.focus();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupOpen', args);\n };\n FileManager.prototype.onClose = function () {\n this.isOpened = false;\n this.uploadObj.clearAll();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupClose', args);\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploading = function (args) {\n var action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n if (args.fileData.name === this.retryArgs[i].file.name) {\n action = this.retryArgs[i].action;\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }];\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n // eslint-disable-next-line\n var ajaxSettings = {\n url: uploadUrl,\n type: 'POST',\n mode: true,\n dataType: null,\n contentType: null,\n data: JSON.stringify(args.customFormData),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n this.uploadEventArgs = { action: 'Upload', ajaxSettings: ajaxSettings, cancel: false };\n this.trigger('beforeSend', this.uploadEventArgs, function (uploadEventArgs) {\n args.customFormData = JSON.parse(getValue('data', uploadEventArgs.ajaxSettings));\n args.cancel = uploadEventArgs.cancel;\n // eslint-disable-next-line\n var eventArgs = {\n cancel: false,\n httpRequest: args.currentRequest\n };\n if (typeof getValue('beforeSend', uploadEventArgs.ajaxSettings) === 'function') {\n getValue('beforeSend', uploadEventArgs.ajaxSettings)(eventArgs);\n if (getValue('cancel', eventArgs)) {\n args.cancel = getValue('cancel', eventArgs);\n }\n }\n });\n };\n FileManager.prototype.onRemoving = function () {\n this.onFileUploadSuccess({ count: 1 });\n if (this.uploadObj.getFilesData().length === 1) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onClearing = function () {\n if (this.isOpened) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onSelected = function (args) {\n if (args.filesData.length === 0) {\n return;\n }\n this.uploadingCount = args.filesData.length;\n this.uploadedCount = 0;\n // eslint-disable-next-line\n var details = getPathObject(this);\n if (!hasUploadAccess(details)) {\n args.cancel = true;\n createDeniedDialog(this, details, events.permissionUpload);\n return;\n }\n this.uploadDialogObj.show();\n };\n // eslint-disable-next-line\n FileManager.prototype.onFileUploadSuccess = function (args) {\n this.uploadedCount = this.uploadedCount + args.count;\n if (this.uploadSettings.autoClose && (this.uploadingCount === this.uploadedCount)) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadSuccess = function (files) {\n var args = { action: 'Upload', result: files };\n this.trigger('success', args);\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n read(this, events.pathChanged, this.path);\n this.onFileUploadSuccess({ count: 1 });\n if (typeof getValue('onSuccess', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', this.uploadEventArgs.ajaxSettings)();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadFailure = function (files) {\n // eslint-disable-next-line\n var response = getValue('response', files);\n var statusText = getValue('statusText', response);\n if (statusText !== '') {\n setValue('statusText', statusText, files);\n }\n var args = { action: 'Upload', error: files };\n this.trigger('failure', args);\n if (getValue('statusCode', response) === 400) {\n this.retryFiles.push(getValue('file', files));\n if (!this.isRetryOpened) {\n createExtDialog(this, 'UploadRetry');\n }\n }\n if (typeof getValue('onFailure', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onFailure', this.uploadEventArgs.ajaxSettings)();\n }\n };\n FileManager.prototype.onInitialEnd = function () {\n setNextPath(this, this.path);\n };\n FileManager.prototype.addEventListeners = function () {\n this.on(events.beforeRequest, this.showSpinner, this);\n this.on(events.afterRequest, this.hideSpinner, this);\n this.on(events.initialEnd, this.onInitialEnd, this);\n this.on(events.detailsInit, this.onDetailsInit, this);\n this.on(events.skipUpload, this.onFileUploadSuccess, this);\n EventHandler.add(this.element, 'contextmenu', this.onContextMenu, this);\n };\n FileManager.prototype.removeEventListeners = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.beforeRequest, this.showSpinner);\n this.off(events.afterRequest, this.hideSpinner);\n this.off(events.initialEnd, this.onInitialEnd);\n this.off(events.detailsInit, this.onDetailsInit);\n this.off(events.skipUpload, this.onFileUploadSuccess);\n EventHandler.remove(this.element, 'contextmenu', this.onContextMenu);\n };\n FileManager.prototype.onDetailsInit = function () {\n if (isNOU(this.activeModule)) {\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n }\n };\n FileManager.prototype.resizeHandler = function () {\n this.adjustHeight();\n this.notify(events.resizeEnd, {});\n };\n FileManager.prototype.keyActionHandler = function (e) {\n var uploadEle;\n switch (e.action) {\n case 'altN':\n e.preventDefault();\n this.itemData = [getPathObject(this)];\n if (!hasContentAccess(this.itemData[0])) {\n createDeniedDialog(this, this.itemData[0], events.permissionEditContents);\n }\n else {\n createDialog(this, 'NewFolder');\n }\n break;\n case 'f5':\n e.preventDefault();\n refresh(this);\n break;\n /* istanbul ignore next */\n case 'ctrlShift1':\n e.preventDefault();\n this.fileView = 'Details';\n this.setProperties({ view: 'Details' }, true);\n showSpinner(this.element);\n updateLayout(this, 'Details');\n break;\n /* istanbul ignore next */\n case 'ctrlShift2':\n e.preventDefault();\n this.fileView = 'LargeIcons';\n this.setProperties({ view: 'LargeIcons' }, true);\n showSpinner(this.element);\n updateLayout(this, 'LargeIcons');\n break;\n case 'ctrlU':\n e.preventDefault();\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n break;\n }\n };\n FileManager.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n FileManager.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\n };\n FileManager.prototype.setPath = function () {\n this.setProperties({ selectedItems: [] }, true);\n this.ensurePath();\n this.notify(events.clearPathInit, { selectedNode: this.pathId[0] });\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FileManager} newProp\n * @param {FileManager} oldProp\n * @returns void\n * @private\n */\n /* istanbul ignore next */\n // eslint:disable-next-line\n FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var height;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'ajaxSettings':\n this.ajaxSettingSetModel(newProp);\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'allowMultiSelection':\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n else {\n if (this.selectedItems.length > 1) {\n this.setProperties({ selectedItems: this.selectedItems.slice(this.selectedItems.length - 1) }, true);\n }\n removeClass([this.element], CLS.CHECK_SELECT);\n }\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'cssClass':\n this.addCssClass(oldProp.cssClass, newProp.cssClass);\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'detailsViewSettings':\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n this.refresh();\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n this.refresh();\n break;\n case 'height':\n height = !isNOU(newProp.height) ? formatUnit(newProp.height) : newProp.height;\n setAttr(this.element, { 'height': height });\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'locale':\n if (!isNOU(newProp.enableRtl)) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n }\n this.localeSetModelOption(newProp);\n break;\n case 'navigationPaneSettings':\n this.splitterAdjust();\n this.notify(events.modelChanged, { module: 'navigationpane', newProp: newProp, oldProp: oldProp });\n break;\n case 'path':\n this.setPath();\n break;\n case 'searchSettings':\n if (!isNullOrUndefined(newProp.searchSettings.allowSearchOnTyping)) {\n this.setProperties({ searchSettings: { allowSearchOnTyping: newProp.searchSettings.allowSearchOnTyping } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.ignoreCase)) {\n this.setProperties({ searchSettings: { ignoreCase: newProp.searchSettings.ignoreCase } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.filterType)) {\n this.setProperties({ searchSettings: { filterType: newProp.searchSettings.filterType } }, true);\n }\n this.notify(events.modelChanged, { module: 'breadcrumbbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'selectedItems':\n if (this.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (this.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'showFileExtension':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showHiddenItems':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showThumbnail':\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'toolbarSettings':\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'uploadSettings':\n this.updateUploader();\n break;\n case 'view':\n if (newProp.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (newProp.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'width':\n setAttr(this.element, { 'width': !isNOU(newProp.width) ? formatUnit(newProp.width) : newProp.width });\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'sortOrder':\n refresh(this);\n this.notify(events.sortByChange, {});\n break;\n case 'popupTarget':\n if (this.uploadDialogObj) {\n this.uploadDialogObj.target = newProp.popupTarget;\n }\n if (this.dialogObj) {\n this.dialogObj.target = newProp.popupTarget;\n }\n if (this.extDialogObj) {\n this.extDialogObj.target = newProp.popupTarget;\n }\n if (this.viewerObj) {\n this.viewerObj.target = newProp.popupTarget;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.ajaxSettingSetModel = function (newProp) {\n if (!isNullOrUndefined(newProp.ajaxSettings.url)) {\n this.setProperties({ ajaxSettings: { url: newProp.ajaxSettings.url } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.uploadUrl)) {\n this.setProperties({ ajaxSettings: { uploadUrl: newProp.ajaxSettings.uploadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.downloadUrl)) {\n this.setProperties({ ajaxSettings: { downloadUrl: newProp.ajaxSettings.downloadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.getImageUrl)) {\n this.setProperties({ ajaxSettings: { getImageUrl: newProp.ajaxSettings.getImageUrl } }, true);\n }\n this.setProperties({ path: '/' }, true);\n this.setProperties({ selectedItems: [] }, true);\n _super.prototype.refresh.call(this);\n };\n /* istanbul ignore next */\n FileManager.prototype.localeSetModelOption = function (newProp) {\n this.uploadObj.locale = newProp.locale;\n _super.prototype.refresh.call(this);\n };\n /**\n * Triggers when the component is destroyed.\n *\n * @returns {void}\n */\n FileManager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.refreshing) {\n this.notify(events.destroy, {});\n }\n this.uploadObj.destroy();\n this.uploadObj = null;\n this.uploadDialogObj.destroy();\n this.uploadDialogObj = null;\n this.splitterObj.destroy();\n this.splitterObj = null;\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.dialogObj = null;\n }\n if (this.viewerObj) {\n this.viewerObj.destroy();\n this.viewerObj = null;\n }\n if (this.extDialogObj) {\n this.extDialogObj.destroy();\n this.extDialogObj = null;\n }\n this.element.removeAttribute('style');\n this.element.removeAttribute('tabindex');\n this.removeEventListeners();\n this.unWireEvents();\n this.addCssClass(this.cssClass, null);\n removeClass([this.element], [CLS.RTL, CLS.MOBILE, CLS.CHECK_SELECT]);\n this.element.innerHTML = '';\n _super.prototype.destroy.call(this);\n };\n /**\n * Creates a new folder in file manager.\n *\n * @param {string} name – Specifies the name of new folder in current path.\n * If it is not specified, then the default new folder dialog will be opened.\n * @returns {void}\n */\n FileManager.prototype.createFolder = function (name) {\n this.notify(events.methodCall, { action: 'createFolder' });\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n if (name) {\n if (/[/\\\\|*?\"<>:]/.test(name)) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(this, 'Validation-Invalid').replace('{0}', '\"' + name + '\"'),\n fileExists: null\n }\n };\n createDialog(this, 'Error', result);\n }\n else {\n if (!hasContentAccess(details[0])) {\n createDeniedDialog(this, details[0], events.permissionEditContents);\n }\n else {\n createFolder(this, name);\n }\n }\n }\n else {\n createNewFolder(this);\n }\n };\n /**\n * Deletes the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to delete the nested level folders or\n * files, then specify the filter path along with name of the folders or files when performing the search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then delete confirmation dialog will be opened for selected item.\n *\n * @returns {void}\n */\n FileManager.prototype.deleteFiles = function (ids) {\n this.notify(events.methodCall, { action: 'deleteFiles', ids: ids });\n };\n /**\n * Disables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableToolbarItems = function (items) {\n if (!isNOU(items)) {\n this.toolbarModule.enableItems(items, false);\n }\n };\n /**\n * Downloads the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to download the nested level folders\n * or files, then specify the filter path along with name of the folders or files when performing search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then the selected items will be downloaded.\n *\n * @returns {void}\n */\n FileManager.prototype.downloadFiles = function (ids) {\n this.notify(events.methodCall, { action: 'downloadFiles', ids: ids });\n };\n /**\n * Enables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be enabled.\n * @returns {void}\n */\n FileManager.prototype.enableToolbarItems = function (items) {\n if (!isNOU(items)) {\n this.toolbarModule.enableItems(items, true);\n }\n };\n /**\n * Disables the specified context menu items in file manager. This method is used only in the menuOpen event.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.disableItem(items);\n }\n };\n /**\n * Returns the index position of given current context menu item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns menu item index.\n */\n FileManager.prototype.getMenuItemIndex = function (item) {\n if (this.contextmenuModule) {\n return this.contextmenuModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Returns the index position of given toolbar item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns toolbar item index.\n */\n FileManager.prototype.getToolbarItemIndex = function (item) {\n if (this.toolbarModule) {\n return this.toolbarModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Display the custom filtering files in file manager.\n *\n * @param {Object} filterData - Specifies the custom filter details along with custom file action name,\n * which needs to be sent to the server side. If you do not specify the details, then default action name will be `filter`.\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n FileManager.prototype.filterFiles = function (filterData) {\n this.filterData = filterData ? filterData : null;\n this.setProperties({ selectedItems: [] }, true);\n this.notify(events.selectionChanged, {});\n this.isFiltered = true;\n if (this.breadcrumbbarModule.searchObj.element.value !== '') {\n this.breadcrumbbarModule.searchObj.element.value = '';\n }\n filter(this, events.filterEnd);\n };\n /**\n * Gets the details of the selected files in the file manager.\n *\n * @returns {Object[]} - returns selected files.\n */\n // eslint-disable-next-line\n FileManager.prototype.getSelectedFiles = function () {\n this.notify(events.updateSelectionData, {});\n return this.itemData;\n };\n /**\n * Opens the corresponding file or folder from the given unique identifier.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to open the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n *\n * @returns {void}\n */\n FileManager.prototype.openFile = function (id) {\n this.notify(events.methodCall, { action: 'openFile', id: id });\n };\n /**\n * Refreshes the folder files of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshFiles = function () {\n refresh(this);\n };\n /**\n * Refreshes the layout of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshLayout = function () {\n this.adjustHeight();\n this.notify(events.layoutRefresh, {});\n };\n /**\n * Selects the entire folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.selectAll = function () {\n this.notify(events.methodCall, { action: 'selectAll' });\n };\n /**\n * Deselects the currently selected folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.clearSelection = function () {\n this.notify(events.methodCall, { action: 'clearSelection' });\n };\n /**\n * Renames the file or folder with given new name in file manager.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to rename the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n * If it is not specified, then rename dialog will be opened for selected item.\n *\n * @param {string} name – Specifies the new name of the file or folder in current path. If it is not specified, then rename dialog\n * will be opened for given identifier.\n *\n * @returns {void}\n */\n FileManager.prototype.renameFile = function (id, name) {\n this.notify(events.methodCall, { action: 'renameFile', id: id, newName: name });\n };\n /**\n * Opens the upload dialog in file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.uploadFiles = function () {\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(this);\n };\n /**\n * Specifies the direction of FileManager\n *\n * @param {boolean} rtl - specifies rtl parameter.\n * @returns {void}\n */\n FileManager.prototype.setRtl = function (rtl) {\n if (rtl) {\n this.addCssClass(null, CLS.RTL);\n }\n else {\n this.addCssClass(CLS.RTL, null);\n }\n if (this.uploadObj) {\n this.uploadDialogObj.enableRtl = rtl;\n this.uploadObj.enableRtl = rtl;\n }\n };\n var FileManager_1;\n __decorate([\n Complex({}, AjaxSettings)\n ], FileManager.prototype, \"ajaxSettings\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Complex({}, ContextMenuSettings)\n ], FileManager.prototype, \"contextMenuSettings\", void 0);\n __decorate([\n Property('')\n ], FileManager.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, DetailsViewSettings)\n ], FileManager.prototype, \"detailsViewSettings\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('400px')\n ], FileManager.prototype, \"height\", void 0);\n __decorate([\n Property('LargeIcons')\n ], FileManager.prototype, \"view\", void 0);\n __decorate([\n Complex({}, NavigationPaneSettings)\n ], FileManager.prototype, \"navigationPaneSettings\", void 0);\n __decorate([\n Property('/')\n ], FileManager.prototype, \"path\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"popupTarget\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], FileManager.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], FileManager.prototype, \"selectedItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showFileExtension\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"rootAliasName\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"showHiddenItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showThumbnail\", void 0);\n __decorate([\n Property('Ascending')\n ], FileManager.prototype, \"sortOrder\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], FileManager.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({}, UploadSettings)\n ], FileManager.prototype, \"uploadSettings\", void 0);\n __decorate([\n Property('100%')\n ], FileManager.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDownload\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeImageLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeSend\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStart\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragging\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStop\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDropped\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelection\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelect\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"uploadListCreate\", void 0);\n FileManager = FileManager_1 = __decorate([\n NotifyPropertyChanges\n ], FileManager);\n return FileManager;\n}(Component));\nexport { FileManager };\n","import { Toolbar as BaseToolbar } from '@syncfusion/ej2-navigations';\nimport { select, isNullOrUndefined as isNOU, closest, selectAll } from '@syncfusion/ej2-base';\nimport { createDialog } from '../pop-up/dialog';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { refresh, getPathObject, getLocaleText, getCssClass, sortbyClickHandler } from '../common/utility';\nimport { createDeniedDialog, updateLayout } from '../common/utility';\nimport { GetDetails } from '../common/operations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { cutFiles, copyFiles, pasteHandler, hasEditAccess } from '../common/index';\nimport { doDownload, createNewFolder, uploadItem } from '../common/index';\n/**\n * Toolbar module\n */\nvar Toolbar = /** @class */ (function () {\n /**\n * Constructor for the Toolbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies the parent element.\n * @private\n */\n function Toolbar(parent) {\n this.default = ['Delete', 'Rename', 'Download', 'Cut', 'Copy', 'Paste'];\n this.single = ['Delete', 'Rename', 'Download', 'Cut', 'Copy'];\n this.multiple = ['Delete', 'Download', 'Cut', 'Copy', 'Refresh'];\n this.selection = ['NewFolder', 'Upload', 'SortBy', 'Refresh'];\n this.parent = parent;\n this.render();\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n var _this = this;\n this.items = this.toolbarItemData(this.getItems(this.parent.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj = new BaseToolbar({\n items: _this.items,\n created: _this.toolbarCreateHandler.bind(_this),\n overflowMode: 'Popup',\n clicked: _this.onClicked.bind(_this),\n enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n enableRtl: _this.parent.enableRtl\n });\n _this.toolbarObj.isStringTemplate = true;\n _this.toolbarObj.appendTo('#' + _this.parent.element.id + CLS.TOOLBAR_ID);\n });\n };\n Toolbar.prototype.getItemIndex = function (item) {\n var itemId = this.getId(item);\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i].id === itemId) {\n return i;\n }\n }\n return -1;\n };\n Toolbar.prototype.getItems = function (items) {\n var currItems = items.slice();\n if (this.parent.isDevice && this.parent.allowMultiSelection) {\n currItems.push('SelectAll');\n }\n return currItems;\n };\n /* istanbul ignore next */\n Toolbar.prototype.onClicked = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var tool = args.item.id.substr((this.parent.element.id + '_tb_').length);\n // eslint-disable-next-line\n var details;\n if (tool === 'refresh' || tool === 'newfolder' || tool === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = { cancel: false, fileDetails: details, item: args.item };\n this.parent.trigger('toolbarClick', eventArgs, function (toolbarClickArgs) {\n var sItems;\n var target;\n if (!toolbarClickArgs.cancel) {\n switch (tool) {\n case 'sortby':\n target = closest(args.originalEvent.target, '.' + CLS.TB_ITEM);\n if (target && target.classList.contains('e-toolbar-popup')) {\n args.cancel = true;\n }\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'delete':\n for (var i = 0; i < details.length; i++) {\n if (!hasEditAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'paste':\n _this.parent.folderPath = '';\n pasteHandler(_this.parent);\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'download':\n doDownload(_this.parent);\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n case 'selectall':\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'selection':\n _this.parent.notify(events.clearAllInit, {});\n break;\n }\n }\n });\n };\n Toolbar.prototype.toolbarCreateHandler = function () {\n if (!isNOU(select('#' + this.getId('SortBy'), this.parent.element))) {\n var items = [\n { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'), iconCss: CLS.TB_OPTION_DOT },\n { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size') },\n { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified') },\n { separator: true },\n { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('none'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '' }\n ];\n this.buttonObj = new DropDownButton({\n items: items, cssClass: getCssClass(this.parent, CLS.ROOT_POPUP),\n select: sortbyClickHandler.bind(this, this.parent),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl, iconCss: CLS.ICON_SHORTBY\n });\n this.buttonObj.isStringTemplate = true;\n this.buttonObj.appendTo('#' + this.getId('SortBy'));\n }\n if (!isNOU(select('#' + this.getId('View'), this.parent.element))) {\n var gridSpan = '<span class=\"' + CLS.ICON_GRID + ' ' + CLS.MENU_ICON + '\"></span>';\n var largeIconSpan = '<span class=\"' + CLS.ICON_LARGE + ' ' + CLS.MENU_ICON + '\"></span>';\n var layoutItems = [\n {\n id: this.getPupupId('large'), text: largeIconSpan + getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? '' : CLS.TB_OPTION_TICK\n },\n {\n id: this.getPupupId('details'), text: gridSpan + getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : ''\n }\n ];\n this.layoutBtnObj = new DropDownButton({\n iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n cssClass: getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP),\n items: layoutItems, select: this.layoutChange.bind(this),\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n content: '<span class=\"e-tbar-btn-text\">' + getLocaleText(this.parent, 'View') + '</span>'\n });\n this.layoutBtnObj.isStringTemplate = true;\n this.layoutBtnObj.appendTo('#' + this.getId('View'));\n }\n this.hideItems(this.default, true);\n this.hideStatus();\n var btnElement = selectAll('.e-btn', this.toolbarObj.element);\n var _loop_1 = function (btnCount) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n this.parent.refreshLayout();\n };\n Toolbar.prototype.updateSortByButton = function () {\n if (this.buttonObj) {\n var items = this.buttonObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.getPupupId = function (id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n };\n Toolbar.prototype.layoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (args.item.id === this.getPupupId('large')) {\n updateLayout(this.parent, 'LargeIcons');\n }\n }\n else {\n if (args.item.id === this.getPupupId('details')) {\n updateLayout(this.parent, 'Details');\n }\n }\n };\n Toolbar.prototype.toolbarItemData = function (data) {\n var items = [];\n var mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n var itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n var spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\n switch (data[i]) {\n case '|':\n item = { type: 'Separator' };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_UPLOAD, showTextOn: mode };\n break;\n case 'SortBy':\n item = {\n id: itemId, tooltipText: itemTooltip,\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\">' + spanElement + '</button>'\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: CLS.ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\" aria-label=' +\n getLocaleText(this.parent, 'View') + '></button>'\n };\n break;\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip };\n break;\n }\n items.push(item);\n }\n return items;\n };\n Toolbar.prototype.getId = function (id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n };\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.showPaste, this.showPaste, this);\n this.parent.on(events.hidePaste, this.hidePaste, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.sortByChange, this.updateSortByButton, this);\n };\n Toolbar.prototype.reRenderToolbar = function (e) {\n var _this = this;\n if (e.newProp.toolbarSettings.items !== undefined) {\n this.items = this.toolbarItemData(this.getItems(e.newProp.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n if (_this.buttonObj) {\n _this.buttonObj.destroy();\n }\n if (_this.layoutBtnObj) {\n _this.layoutBtnObj.destroy();\n }\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj.items = _this.items;\n _this.toolbarObj.dataBind();\n _this.toolbarCreateHandler();\n });\n }\n };\n Toolbar.prototype.onSelectionChanged = function () {\n this.hideStatus();\n this.hideItems(this.single, true);\n this.hideItems(this.selection, false);\n if (this.parent.selectedItems.length === 1) {\n this.hideItems(this.single, false);\n this.hideItems(this.selection, true);\n }\n else if (this.parent.selectedItems.length > 1) {\n this.hideItems(this.multiple, false);\n this.hideItems(this.selection, true);\n }\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele) {\n var txt = void 0;\n if (this.parent.selectedItems.length === 1) {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Item-Selection');\n }\n else {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Items-Selection');\n }\n select('.e-tbar-btn-text', ele).textContent = txt;\n this.toolbarObj.hideItem(ele.parentElement, false);\n }\n };\n Toolbar.prototype.hideItems = function (tools, toHide) {\n for (var i = 0; i < tools.length; i++) {\n var ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n };\n Toolbar.prototype.hideStatus = function () {\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n };\n Toolbar.prototype.showPaste = function () {\n this.hideItems(['Paste'], false);\n };\n Toolbar.prototype.hidePaste = function () {\n this.hideItems(['Paste'], true);\n };\n Toolbar.prototype.onLayoutChange = function () {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE;\n var items = this.layoutBtnObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('large')) {\n items[itemCount].iconCss = this.parent.view === 'LargeIcons' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('details')) {\n items[itemCount].iconCss = this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.showPaste, this.showPaste);\n this.parent.off(events.hidePaste, this.hidePaste);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.sortByChange, this.updateSortByButton);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n this.reRenderToolbar(e);\n break;\n }\n }\n };\n Toolbar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.destroy();\n }\n this.toolbarObj.destroy();\n this.parent.refreshLayout();\n };\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n var ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { TreeView as BaseTreeView } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, select, setValue, getValue, Draggable } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, closest } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { createDialog } from '../pop-up/dialog';\nimport { updatePath, getPath, getDirectories } from '../common/utility';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getDirectoryPath, getModule } from '../common/index';\nimport { copyFiles, cutFiles, removeActive, pasteHandler, getParentPath, readDropPath } from '../common/index';\nimport { hasEditAccess, createDeniedDialog, hasDownloadAccess, getAccessClass } from '../common/index';\n/**\n * NavigationPane module\n */\nvar NavigationPane = /** @class */ (function () {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function NavigationPane(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n this.expandTree = false;\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.renameParent = null;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: 'ctrl+x',\n ctrlC: 'ctrl+c',\n ctrlV: 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n NavigationPane.prototype.onInit = function () {\n if (!isNOU(this.treeObj)) {\n return;\n }\n // eslint-disable-next-line\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', rootData);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new BaseTreeView({\n fields: {\n dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name',\n hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'\n },\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + CLS.TREE_ID);\n this.wireEvents();\n };\n NavigationPane.prototype.addDragDrop = function () {\n var _this = this;\n if (!this.parent.isMobile && this.treeObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.treeObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n dragTarget: '.' + CLS.FULLROW,\n distance: 5,\n dragArea: this.parent.element,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: true,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n NavigationPane.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(CLS.FULLROW)) {\n return null;\n }\n var dragLi = closest(dragTarget, 'li');\n this.parent.dragPath = '';\n this.parent.dragData = [];\n this.parent.activeElements = [];\n this.parent.activeElements = [dragLi];\n this.parent.dragNodes = [];\n getModule(this.parent, dragLi);\n // eslint-disable-next-line\n this.parent.dragData = this.getTreeData(dragLi);\n this.parent.dragPath = this.getDragPath(dragLi, this.parent.dragData[0].name);\n this.parent.dragNodes.push(this.parent.dragData[0].name);\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n NavigationPane.prototype.getDragPath = function (dragLi, text) {\n var path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n };\n NavigationPane.prototype.getDropPath = function (node, text) {\n var id = node.getAttribute('data-id');\n var newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId);\n };\n NavigationPane.prototype.onDrowNode = function (args) {\n var eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n // eslint-disable-next-line\n var directories = getDirectories(files);\n if (directories.length > 0) {\n var length_1 = 0;\n // eslint-disable-next-line\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line\n folders[length_1]._fm_icon = 'e-fe-folder';\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', folders[length_1]);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length_1])) {\n setValue('class', getAccessClass(folders[length_1]), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length_1]);\n }\n length_1++;\n }\n // eslint-disable-next-line\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n };\n NavigationPane.prototype.onNodeSelected = function (args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent) {\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n // eslint-disable-next-line\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n if (!this.renameParent) {\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n }\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n updatePath(args.node, this.parent.itemData[0], this.parent);\n this.expandNodeTarget = null;\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = args.node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.onPathDrag = function (args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpand = function (args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n var text = getValue('text', args.nodeData);\n var id = args.node.getAttribute('data-id');\n var isId = isNOU(id) ? false : true;\n var newText = isNOU(id) ? text : id;\n var path = getPath(args.node, newText, isId);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpanded = function (args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n };\n NavigationPane.prototype.onNodeClicked = function (args) {\n this.parent.activeModule = 'navigationpane';\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n var layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(events.modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeEditing = function (args) {\n if (!isNOU(args.innerHtml)) {\n args.cancel = true;\n }\n };\n NavigationPane.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n // eslint-disable-next-line\n var currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n var ul = select('.' + CLS.LIST_PARENT, sNode);\n if (isNOU(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], !this.expandTree);\n }\n this.expandNodeTarget = '';\n }\n this.expandTree = false;\n if (isNOU(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + CLS.LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.selectedNodes = [sleId];\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + CLS.ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.removeChildNodes(id);\n this.addChild(args.files, id, false);\n this.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n };\n NavigationPane.prototype.onCreateEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n };\n NavigationPane.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n var name_1 = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name_1], this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDeleteEnd = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n var selectedNode = this.treeObj.selectedNodes[0];\n var selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n var selectedNodeEle = closest(selcetedEle, '.' + CLS.LIST_PARENT).parentElement;\n this.treeObj.selectedNodes = [selectedNodeEle.getAttribute('data-uid')];\n this.treeObj.dataBind();\n }\n this.updateTree(args);\n };\n NavigationPane.prototype.onRefreshEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEndParent = function (args) {\n var id = this.renameParent ? this.renameParent : this.parent.pathId[this.parent.pathId.length - 1];\n this.expandTree = this.treeObj.expandedNodes.indexOf(this.treeObj.selectedNodes[0]) !== -1;\n this.updateTreeNode(args, id);\n this.parent.expandedId = null;\n if (this.renameParent) {\n this.renameParent = null;\n }\n else {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.renameText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('_fm_pId', 'equal', id, false));\n }\n }\n if (resultData.length > 0) {\n this.isRenameParent = true;\n var id_1 = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEnd = function (args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData();\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(data).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(data).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.currentItemText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n this.renameParent = getValue(this.treeObj.fields.parentID, resultData[0]);\n this.parent.expandedId = this.renameParent;\n this.parent.itemData = this.getTreeData(this.renameParent);\n read(this.parent, events.renameEndParent, this.parent.filterPath.replace(/\\\\/g, '/'));\n }\n }\n };\n NavigationPane.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, events.finalizeEnd, '/');\n break;\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDownLoadInit = function () {\n this.doDownload();\n };\n NavigationPane.prototype.onSelectionChanged = function (e) {\n this.treeObj.selectedNodes = [e.selectedNode];\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchDrag) {\n moveNames = this.getMoveNames(args.files, this.parent.isSearchDrag, this.parent.dragPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getMoveNames = function (files, flag, path) {\n var moveNames = [];\n for (var i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n var name_2 = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n var index = path.lastIndexOf('/');\n name_2 = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n // eslint-disable-next-line\n var resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name_2, false));\n for (var j = 0; j < resultData.length; j++) {\n var fPath = getValue('filterPath', resultData[j]);\n fPath = fPath.replace(/\\\\/g, '/');\n if (fPath === path) {\n moveNames.push(getValue(this.treeObj.fields.id, resultData[j]));\n break;\n }\n }\n }\n }\n }\n return moveNames;\n };\n NavigationPane.prototype.onCutEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchCut) {\n this.moveNames = this.getMoveNames(args.files, this.parent.isSearchCut, this.parent.targetPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n // eslint-disable-next-line\n var data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n // eslint-disable-next-line\n var resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n this.treeObj.selectedNodes = [getValue('_fm_id', resultObj)];\n this.treeObj.dataBind();\n }\n };\n NavigationPane.prototype.onDropPath = function (args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n };\n NavigationPane.prototype.onpasteEnd = function (args) {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', getValue('id', args.cwd), false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', getValue('name', args.cwd), false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', getValue('filterPath', args.cwd), false));\n }\n }\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1;\n this.removeChildNodes(id);\n this.addChild(args.files, id, toExpand);\n }\n this.parent.expandedId = null;\n this.onPathChanged(args);\n if (this.parent.isDragDrop) {\n this.checkDropPath(args);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.checkDropPath = function (args) {\n if (this.parent.hasId) {\n this.parent.isDropEnd = !this.parent.isPasteError;\n readDropPath(this.parent);\n return;\n }\n if ((this.parent.dropPath.indexOf(getDirectoryPath(this.parent, args)) === -1)) {\n this.parent.isDropEnd = false;\n readDropPath(this.parent);\n }\n else {\n this.parent.isDropEnd = !this.parent.isPasteError;\n }\n };\n NavigationPane.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n // eslint-disable-next-line\n var obj = this.parent.isDragDrop ? this.parent.dragData : this.parent.actionRecords;\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n };\n NavigationPane.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.activeElements = [this.activeNode];\n }\n };\n NavigationPane.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.downloadInit, this.onDownLoadInit, this);\n this.parent.on(events.initialEnd, this.onInitialEnd, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutEnd, this.onCutEnd, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.nodeExpand, this.onNodeExpanded, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.updateTreeSelection, this.onSelectionChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.openEnd, this.onOpenEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.renameEndParent, this.onRenameEndParent, this);\n this.parent.on(events.clearPathInit, this.onClearPathInit, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.dragEnd, this.onDragEnd, this);\n this.parent.on(events.dragging, this.onDragging, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.pathDrag, this.onPathDrag, this);\n };\n NavigationPane.prototype.removeEventListener = function () {\n this.parent.off(events.initialEnd, this.onInitialEnd);\n this.parent.off(events.downloadInit, this.onDownLoadInit);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutEnd, this.onCutEnd);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.updateTreeSelection, this.onSelectionChanged);\n this.parent.off(events.nodeExpand, this.onNodeExpanded);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onOpenEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.renameEndParent, this.onRenameEndParent);\n this.parent.off(events.clearPathInit, this.onClearPathInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.dragEnd, this.onDragEnd);\n this.parent.off(events.dragging, this.onDragging);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.pathDrag, this.onPathDrag);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n // eslint-disable-next-line\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDragging = function (args) {\n var ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n var level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n };\n NavigationPane.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, 'li');\n this.parent.dropData = this.getTreeData(dropLi)[0];\n this.parent.dropPath = this.getDropPath(dropLi, getValue('name', this.parent.dropData));\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'navigationpane';\n };\n NavigationPane.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.treeObj) {\n this.unWireEvents();\n this.treeObj.destroy();\n }\n };\n NavigationPane.prototype.wireEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n NavigationPane.prototype.unWireEvents = function () {\n this.keyboardModule.destroy();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.keyDown = function (e) {\n var action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n 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 break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n if (!hasEditAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionEdit);\n }\n else {\n this.updateRenameData();\n createDialog(this.parent, 'Rename');\n }\n }\n break;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getTreeData = function (args) {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData(args);\n for (var i = 0; i < data.length; i++) {\n if (isNOU(getValue('hasChild', data[i]))) {\n setValue('hasChild', false, data[i]);\n }\n }\n return data;\n };\n NavigationPane.prototype.updateRenameData = function () {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n };\n NavigationPane.prototype.updateItemData = function () {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n };\n NavigationPane.prototype.updateActionData = function () {\n this.updateItemData();\n var newPath = getParentPath(this.parent.path);\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathId.pop();\n this.parent.pathNames.pop();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.doDownload = function () {\n var newPath = getParentPath(this.parent.path);\n var itemId = this.treeObj.selectedNodes[0];\n var name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n };\n return NavigationPane;\n}());\nexport { NavigationPane };\n","import { Grid, Resize, ContextMenu, Sort, VirtualScroll } from '@syncfusion/ej2-grids';\nimport { select, KeyboardEvents, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, Touch, setValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Internationalization, closest, Draggable } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\nimport { removeBlur, openAction, getImageUrl, fileType, getSortedData, getLocaleText, updateLayout } from '../common/utility';\nimport { createEmptyElement } from '../common/utility';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { cutFiles, addBlur, openSearchFolder, copyFiles, removeActive, pasteHandler, getPathObject, getName } from '../common/index';\nimport { hasReadAccess, hasEditAccess, hasDownloadAccess, doRename, getAccessClass, createDeniedDialog, rename } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule, getFullPath } from '../common/index';\nimport { getDirectoryPath, updateRenamingData, getItemName, doDeleteFiles, doDownloadFiles } from '../common/index';\n/**\n * DetailsView module\n */\nvar DetailsView = /** @class */ (function () {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n function DetailsView(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.pasteOperation = false;\n this.uploadOperation = false;\n Grid.Inject(Resize, ContextMenu, Sort, VirtualScroll);\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.GRID_ID, this.parent.element);\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n tab: 'tab',\n moveDown: 'downarrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n ctrlUp: 'ctrl+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n end: 'end',\n home: 'home',\n moveUp: 'uparrow',\n del: 'delete',\n ctrlX: 'ctrl+x',\n ctrlC: 'ctrl+c',\n ctrlV: 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftdel: 'shift+delete',\n ctrlD: 'ctrl+d',\n f2: 'f2',\n ctrlA: 'ctrl+a',\n enter: 'enter'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n if (this.parent.isMobile) {\n sortSettings = [];\n }\n else {\n if (this.parent.sortOrder !== 'None') {\n sortSettings = [{ direction: this.parent.sortOrder, field: this.parent.sortBy }];\n }\n }\n this.gridObj = new Grid({\n dataSource: items,\n allowSorting: true,\n rowSelecting: this.onSelection.bind(this, 'select'),\n rowDeselecting: this.onSelection.bind(this, 'unselect'),\n rowSelected: this.onSelected.bind(this),\n rowDeselected: this.onDeSelection.bind(this),\n allowResizing: this.parent.detailsViewSettings.columnResizing,\n selectionSettings: {\n type: this.parent.allowMultiSelection ? 'Multiple' : 'Single',\n checkboxMode: 'ResetOnRowClick'\n },\n enableRtl: this.parent.enableRtl,\n pageSettings: { pageSize: 20 },\n sortSettings: { allowUnsort: false, columns: sortSettings },\n columns: columns,\n recordDoubleClick: this.DblClickEvents.bind(this),\n beforeDataBound: this.onBeforeDataBound.bind(this),\n dataBound: this.onDataBound.bind(this),\n rowDataBound: this.onRowDataBound.bind(this),\n actionBegin: this.onActionBegin.bind(this),\n headerCellInfo: this.onHeaderCellInfo.bind(this),\n width: '100%',\n beforeCopy: function (args) { args.cancel = true; },\n // eslint-disable-next-line\n load: function (args) {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\n });\n this.gridObj.isStringTemplate = true;\n this.gridObj.appendTo('#' + this.parent.element.id + CLS.GRID_ID);\n this.wireEvents();\n this.adjustHeight();\n this.emptyArgs = args;\n }\n };\n DetailsView.prototype.checkNameWidth = function () {\n var initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (var i = 0; i < initialColumn.length; i++) {\n if (initialColumn[i].field === 'name') {\n this.isNameWidth = !isNOU(initialColumn[i].width);\n return;\n }\n }\n };\n DetailsView.prototype.adjustWidth = function (columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n var nameWidth = void 0;\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n nameWidth = (this.element.clientWidth <= 500) ? '120px' : 'auto';\n }\n else {\n nameWidth = (this.element.clientWidth <= 680) ? ((fieldName === 'name') ? '120px' : '180px') : 'auto';\n }\n columns[i].width = nameWidth;\n }\n }\n };\n DetailsView.prototype.getColumns = function () {\n var columns;\n if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: '<div class=\"e-fe-text\">${name}</div><div class=\"e-fe-date\">${_fm_modified}</div>' +\n '<span class=\"e-fe-size\">${size}</span>'\n }\n ];\n }\n else {\n columns = JSON.parse(JSON.stringify(this.parent.detailsViewSettings.columns));\n this.adjustWidth(columns, 'name');\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].headerText = getLocaleText(this.parent, columns[i].headerText);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth, template: '<span class=\"e-fe-icon ${_fm_iconClass}\"></span>',\n allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: '<span class=\"e-fe-icon e-fe-folder\"></span>'\n };\n columns.unshift(icon);\n if (this.parent.allowMultiSelection) {\n var cWidth = (this.parent.isBigger ? '36' : '26');\n var cBox = {\n type: 'checkbox', width: cWidth, minWidth: cWidth, customAttributes: { class: 'e-fe-checkbox' },\n allowResizing: false, allowSorting: false\n };\n if (this.parent.isMobile) {\n columns.push(cBox);\n }\n else {\n columns.unshift(cBox);\n }\n }\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n return columns;\n };\n DetailsView.prototype.adjustHeight = function () {\n if (!this.gridObj) {\n return;\n }\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n var gridHeader = select('.' + CLS.GRID_HEADER, this.parent.element);\n var height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n };\n DetailsView.prototype.renderCheckBox = function () {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n };\n DetailsView.prototype.onRowDataBound = function (args) {\n var td = select('.e-fe-grid-name', args.row);\n if (!td) {\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'name') {\n td = args.row.children[this.parent.allowMultiSelection ? (i + 2) : (i + 1)];\n break;\n }\n }\n }\n if (td) {\n td.setAttribute('title', getValue('name', args.data));\n }\n if (this.parent.isLayoutChange && this.parent.isCut && this.parent.fileAction === 'move' &&\n this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n if (this.parent.selectedNodes.indexOf(getValue('name', args.data)) !== -1) {\n addBlur(args.row);\n }\n }\n if (!this.parent.showFileExtension && getValue('isFile', args.data)) {\n var textEle = args.row.querySelector('.e-fe-text');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n var sizeEle = args.row.querySelector('.e-fe-size');\n var modifiedSize = void 0;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n var sizeValue = getValue('size', args.data);\n var intl = new Internationalization(this.parent.locale);\n var value = intl.formatNumber((sizeValue / 1024), { format: 'n' });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n var dateEle = args.row.querySelector('.e-fe-date');\n var intl = new Internationalization(this.parent.locale);\n var columns = this.parent.detailsViewSettings.columns;\n // eslint-disable-next-line\n var format = void 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n var formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n var checkWrap = args.row.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n if (!hasEditAccess(args.data)) {\n args.row.className += ' ' + getAccessClass(args.data);\n }\n var eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n DetailsView.prototype.onActionBegin = function (args) {\n if (args.requestType === 'sorting') {\n this.parent.setProperties({ sortOrder: args.direction }, true);\n this.parent.setProperties({ sortBy: args.columnName }, true);\n if (this.parent.selectedItems.length !== 0) {\n this.sortItem = true;\n var rows = this.gridObj.getSelectedRowIndexes();\n var len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.sortSelectedNodes.push(getValue(this.parent.hasId ? 'id' : 'name', data));\n len--;\n }\n }\n this.parent.notify(events.sortByChange, {});\n }\n };\n DetailsView.prototype.onHeaderCellInfo = function (args) {\n var checkWrap = args.node.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n };\n DetailsView.prototype.onBeforeDataBound = function (args) {\n showSpinner(this.parent.element);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, this.gridObj.dataSource);\n args.result = items;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if (this.parent.selectedItems.length !== 0) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem) {\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n var hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n var hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n var hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.classList.remove('e-scrollShow');\n }\n this.isRendered = true;\n this.parent.isLayoutChange = false;\n hideSpinner(this.parent.element);\n this.checkEmptyDiv(this.emptyArgs);\n this.isInteracted = this.isLoaded ? true : this.isInteracted;\n this.isLoaded = false;\n };\n DetailsView.prototype.selectRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var sRecords = [];\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var items = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var rData = [];\n if (this.parent.hasId) {\n rData = new DataManager(items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (nData.length > 0) {\n rData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (rData.length > 0) {\n var index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n };\n DetailsView.prototype.onSortColumn = function () {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n };\n DetailsView.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'detailsViewSettings':\n if (!isNullOrUndefined(this.gridObj)) {\n this.checkNameWidth();\n var columns = this.getColumns();\n this.gridObj.columns = columns;\n this.gridObj.allowResizing = this.parent.detailsViewSettings.columnResizing;\n this.gridObj.dataBind();\n this.gridObj.refreshColumns();\n }\n break;\n case 'selectedItems':\n this.interaction = false;\n if (this.parent.selectedItems.length !== 0) {\n if (!this.parent.allowMultiSelection) {\n var slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNOU(this.gridObj)) {\n this.gridObj.clearSelection();\n }\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n };\n DetailsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) {\n this.parent.searchedItems = [];\n if (!this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n else {\n this.updatePathColumn();\n }\n }\n removeBlur(this.parent);\n if (this.parent.view === 'Details') {\n /* istanbul ignore next */\n this.isInteracted = false;\n showSpinner(this.parent.element);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n }\n this.emptyArgs = args;\n };\n DetailsView.prototype.updatePathColumn = function () {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n var pathColumn = {\n field: 'filterPath', headerText: getLocaleText(this.parent, 'Path'), minWidth: 180, width: 'auto'\n };\n this.gridObj.columns.push(pathColumn);\n this.adjustWidth(this.gridObj.columns, 'filterPath');\n this.adjustWidth(this.gridObj.columns, 'name');\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n };\n DetailsView.prototype.checkEmptyDiv = function (args) {\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n if (items.length === 0 && !isNOU(this.element.querySelector('.' + CLS.GRID_VIEW))) {\n createEmptyElement(this.parent, this.element, args);\n }\n else if (items.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n if (this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY)) {\n var emptyDiv = this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY);\n this.element.querySelector('.' + CLS.GRID_VIEW).removeChild(emptyDiv);\n }\n else {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n }\n };\n DetailsView.prototype.onOpenInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n // eslint-disable-next-line\n var data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n };\n DetailsView.prototype.DblClickEvents = function (args) {\n this.gridObj.selectRows([args.rowIndex]);\n // eslint-disable-next-line\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.openContent = function (data) {\n var _this = this;\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var name_2 = getValue('name', data);\n if (getValue('isFile', data)) {\n var icon = fileType(data);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, data);\n createImageDialog(_this.parent, name_2, imgUrl);\n }\n }\n else {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', data);\n var newPath = _this.parent.path + (isNOU(id) ? name_2 : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(name_2);\n _this.parent.pathId.push(getValue('_fm_id', data));\n _this.parent.itemData = [data];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, data);\n }\n _this.parent.isFiltered = false;\n }\n _this.element.focus();\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(events.hideLayout, {});\n this.gridObj.element.classList.remove(CLS.DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSearchFiles = function (args) {\n if (this.parent.view === 'Details') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (!this.parent.isLayoutChange) {\n this.parent.layoutSelectedItems = [];\n }\n this.updatePathColumn();\n this.parent.searchedItems = args.files;\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.removePathColumn = function (isRefresh) {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath')) {\n /* istanbul ignore next */\n if (this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n this.parent.notify(events.sortByChange, {});\n }\n this.gridObj.columns.pop();\n if (!isRefresh) {\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n }\n };\n DetailsView.prototype.onFinalizeEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n };\n DetailsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n DetailsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n };\n DetailsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n };\n DetailsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.isInteracted = false;\n this.removePathColumn(false);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.emptyArgs = args;\n };\n DetailsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n DetailsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'Details') {\n this.isInteracted = false;\n if (this.parent.allowMultiSelection) {\n this.gridObj.selectionModule.selectRowsByRange(0, this.gridObj.getRows().length);\n }\n else {\n this.gridObj.selectRow(this.gridObj.getRows().length - 1);\n }\n this.isInteracted = true;\n this.interaction = true;\n }\n };\n DetailsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelectionChanged = function () {\n removeClass([this.element], CLS.HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], CLS.HEADER_CHECK);\n }\n };\n DetailsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n };\n DetailsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n DetailsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n DetailsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.addEventListener = function () {\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.search, this.onSearchFiles, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.sortColumn, this.onSortColumn, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n this.parent.on(events.pasteInit, this.onPasteInit, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.resizeEnd, this.onDetailsResizeHandler, this);\n this.parent.on(events.splitterResize, this.onDetailsResize, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n };\n DetailsView.prototype.removeEventListener = function () {\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteInit, this.onPasteInit);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.search, this.onSearchFiles);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.filterEnd, this.onPathChanged);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.sortColumn, this.onSortColumn);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.resizeEnd, this.onDetailsResizeHandler);\n this.parent.off(events.splitterResize, this.onDetailsResize);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n };\n DetailsView.prototype.onActionFailure = function () { this.interaction = true; };\n // eslint-disable-next-line\n DetailsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n };\n DetailsView.prototype.onPasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n };\n DetailsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n DetailsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n var name = dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n // eslint-disable-next-line\n this.parent.dragData = this.gridObj.getSelectedRecords();\n var dragRow;\n if (this.parent.dragData.length == 0 && dragLi) {\n dragRow = this.gridObj.getRowInfo(dragLi);\n }\n if (dragRow) {\n this.parent.dragData.push(dragRow.rowData);\n }\n this.parent.dragPath = this.parent.path;\n this.parent.activeElements = this.gridObj.getSelectedRows();\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDetailsResize = function () {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n var gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n var gridHeaderColGroup = gridHeader.firstChild.childNodes[0];\n var gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n var gridHeaderColNames = this.gridObj.getColumns();\n for (var i = 0; i < gridHeaderColNames.length; i++) {\n if ((!this.isNameWidth && gridHeaderColNames[i].field === 'name') || gridHeaderColNames[i].field === 'filterPath') {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n if (this.element.clientWidth <= 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 180px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 180px');\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n }\n }\n }\n };\n DetailsView.prototype.onDetailsResizeHandler = function () {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n this.adjustHeight();\n }\n };\n DetailsView.prototype.createDragObj = function () {\n var _this = this;\n if (!this.parent.isMobile && this.gridObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + CLS.ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: true,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (!args.target.closest('tr')) {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n else {\n // eslint-disable-next-line\n var info = null;\n // eslint-disable-next-line\n info = this.gridObj.getRowInfo(args.target).rowData;\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n }\n };\n DetailsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n };\n DetailsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {\n this.onPathChanged(args);\n }\n }\n };\n DetailsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns modules name.\n * @private\n */\n DetailsView.prototype.getModuleName = function () {\n return 'detailsview';\n };\n DetailsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n this.unWireEvents();\n this.gridObj.destroy();\n }\n };\n DetailsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelection = function (action, args) {\n var eventArgs = {\n action: action, fileDetails: args.data, isInteracted: this.interaction, cancel: false, target: args.target\n };\n this.parent.trigger('fileSelection', eventArgs);\n args.cancel = eventArgs.cancel;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelected = function (args) {\n this.parent.activeModule = 'detailsview';\n if (!this.parent.isLayoutChange || this.parent.isFiltered) {\n this.selectedRecords();\n }\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.getSelectedRowIndexes().length === 1) {\n this.firstItemIndex = this.gridObj.selectedRowIndex;\n }\n this.gridObj.element.setAttribute('tabindex', '-1');\n this.triggerSelect('select', args);\n var item = this.gridObj.getRowByIndex(this.gridObj.selectedRowIndex);\n this.updateType(item);\n if (!isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n if (this.gridObj.getSelectedRowIndexes().length !== 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\n item.querySelector('.e-rowcell.e-fe-checkbox').removeAttribute('tabindex');\n }\n if (!isNOU(this.gridObj) && !isNOU(this.gridObj.element.querySelector('.e-checkselectall'))) {\n this.gridObj.element.querySelector('.e-checkselectall').setAttribute('tabindex', '-1');\n }\n var rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i] === this.gridObj.selectedRowIndex) {\n this.gridObj.getRowByIndex(rows[i]).setAttribute('tabindex', '0');\n }\n else {\n this.gridObj.getRowByIndex(rows[i]).removeAttribute('tabindex');\n }\n }\n }\n var len = rows.length;\n if (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n var indexes = getValue('rowIndexes', args);\n var multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNOU(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if (this.parent.allowMultiSelection && !isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n var checkItem = item.querySelector('.e-checkselect');\n checkItem.focus();\n }\n this.addFocus(this.gridObj.selectedRowIndex);\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'Details' && !isNOU(this.gridObj)) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n }\n };\n DetailsView.prototype.selectedRecords = function () {\n this.parent.setProperties({ selectedItems: [] }, true);\n // eslint-disable-next-line\n var selectedRecords = this.gridSelectNodes();\n var selectSize = 0;\n while (selectSize < selectedRecords.length) {\n var record = selectedRecords[selectSize];\n var name_3 = getItemName(this.parent, record);\n this.parent.selectedItems.push(name_3);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n };\n DetailsView.prototype.onDeSelection = function (args) {\n /* istanbul ignore next */\n if (!this.parent.allowMultiSelection && isNOU(args.data)) {\n this.gridObj.getRowByIndex(args.rowIndex).removeAttribute('tabindex');\n }\n else if (this.gridObj.getSelectedRowIndexes().length > 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n this.gridObj.getRowByIndex(lastItemIndex).querySelector('.e-checkselect').removeAttribute('tabindex');\n }\n if (this.gridObj.selectedRowIndex === -1) {\n this.gridObj.element.setAttribute('tabindex', '0');\n }\n if (!this.isInteracted) {\n this.isInteracted = true;\n return;\n }\n this.selectedRecords();\n if (this.parent.selectedItems.length === 0) {\n setValue('enableSelectMultiTouch', false, this.gridObj.selectionModule);\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('unselect', args);\n this.parent.visitedItem = null;\n };\n DetailsView.prototype.triggerSelect = function (action, args) {\n var eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n };\n DetailsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.gridObj.element, {\n keyAction: this.keyupHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.gridObj.element, 'blur', this.removeFocus, this);\n };\n DetailsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n var ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: function (eve) {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n proxy_1.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (proxy_1.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', proxy_1.parent.allowMultiSelection, proxy_1.gridObj.selectionModule);\n addClass([proxy_1.parent.element], CLS.MULTI_SELECT);\n }\n var target = e.originalEvent.target;\n if (target) {\n var row = closest(target, '.' + CLS.ROW);\n var index = proxy_1.gridObj.getRows().indexOf(row);\n proxy_1.gridObj.selectRow(index);\n }\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.removeSelection = function () {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n this.gridObj.clearSelection();\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.selectedRowIndex === -1) {\n this.startIndex = null;\n }\n this.isInteracted = true;\n };\n DetailsView.prototype.removeFocus = function () {\n this.addFocus(null);\n };\n DetailsView.prototype.getFocusedItemIndex = function () {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('aria-rowindex'), 10) : null;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n DetailsView.prototype.keydownHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n // eslint-disable-next-line\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focItem = this.getFocusedItem();\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n // eslint-disable-next-line\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1) {\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n // eslint-disable-next-line\n var data = JSON.parse(JSON.stringify(rowData));\n this.openContent(data);\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlA':\n if (!isNOU(gridItems[0]) && this.parent.allowMultiSelection) {\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n var crtSrlPos = cnTable.scrollTop;\n var crtFocusIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n cnTable.scrollTop = crtSrlPos;\n if (crtFocusIndex !== -1) {\n this.addFocus(crtFocusIndex);\n }\n }\n break;\n case 'ctrlHome':\n case 'tab':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {\n this.gridObj.selectRow(0);\n }\n else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {\n return;\n }\n else {\n this.addFocus(0);\n }\n }\n break;\n case 'ctrlEnd':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow(gridLength - 1);\n }\n else {\n this.addFocus(gridLength - 1);\n }\n }\n break;\n case 'shiftHome':\n case 'shiftEnd':\n case 'csHome':\n case 'csEnd':\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : gridItems.length - 1);\n }\n else {\n if (!isNOU(gridItems[0])) {\n if (!isNOU(selIndex) && selIndex !== -1) {\n this.checkRowsKey(gridItems, selIndex, null, e);\n }\n else {\n if (e.action === 'csHome' || e.action === 'shiftHome') {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n }\n }\n }\n }\n break;\n case 'space':\n case 'csSpace':\n case 'shiftSpace':\n case 'ctrlSpace':\n this.spaceSelection(selRowIndeces, focIndex, selIndex, e);\n break;\n case 'csUp':\n case 'csDown':\n case 'shiftUp':\n case 'shiftDown':\n this.shiftMoveMethod(gridItems, selIndex, focIndex, selRowIndeces, e);\n break;\n case 'ctrlUp':\n case 'ctrlDown':\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n break;\n case 'home':\n firstItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[0])];\n this.parent.setProperties({ selectedItems: firstItem }, true);\n this.selectRecords(firstItem);\n break;\n case 'moveUp':\n case 'moveDown':\n this.moveFunction(gridItems, e, selIndex);\n break;\n case 'end':\n lastItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[gridLength - 1])];\n this.parent.setProperties({ selectedItems: lastItem }, true);\n this.selectRecords(lastItem);\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.gridSelectNodes = function () {\n return this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.doDownload = function () {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionDownload);\n return;\n }\n }\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n };\n DetailsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasEditAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n DetailsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n DetailsView.prototype.updateRenameData = function () {\n // eslint-disable-next-line\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftMoveMethod = function (gridItems, selIndex, focIndex, selRowIndeces, e) {\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n if (selIndex === -1 && (e.action === 'csUp' || e.action === 'csDown')) {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n else if (selIndex !== -1 && focIndex !== selIndex &&\n !((e.action === 'csUp' || e.action === 'csDown') && this.isSelected(selRowIndeces, focIndex))) {\n this.shiftSelectFocusItem(selIndex, focIndex, selRowIndeces, e);\n }\n else {\n this.shiftSelectedItem(selIndex, selRowIndeces, gridItems, e);\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.moveFunction = function (selectedItems, e, rowIndex) {\n if (!isNOU(this.getFocusedItem()) && this.parent.allowMultiSelection) {\n if (e.action === 'moveDown') {\n this.gridObj.selectRow(this.getFocusedItemIndex() + 1);\n }\n else {\n this.gridObj.selectRow(this.getFocusedItemIndex() - 1);\n }\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n if (e.action === 'moveDown' || e.action === 'ctrlDown' || e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectRow(rowIndex + ((rowIndex !== selectedItems.length - 1) ? 1 : 0));\n }\n else {\n this.gridObj.selectRow(rowIndex - ((rowIndex !== 0) ? 1 : 0));\n }\n }\n else {\n if (!isNOU(selectedItems[0])) {\n this.gridObj.selectRow(0);\n }\n }\n };\n DetailsView.prototype.spaceSelection = function (selRowIndeces, focIndex, selIndex, e) {\n if (!this.isSelected(selRowIndeces, focIndex) && selIndex !== -1 && (e.action === 'shiftSpace' || e.action === 'csSpace')) {\n if (focIndex < selIndex) {\n this.gridObj.selectionModule.selectRowsByRange(focIndex, selIndex);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(selIndex, focIndex);\n }\n }\n else if (!isNOU(this.getFocusedItem()) && focIndex !== selIndex) {\n selRowIndeces.push(this.getFocusedItemIndex());\n this.gridObj.selectRows(selRowIndeces);\n }\n else if (selIndex !== -1 && e.action === 'ctrlSpace' && this.parent.allowMultiSelection) {\n var lItem = selIndex;\n selRowIndeces.pop();\n this.gridObj.selectRows(selRowIndeces);\n this.addFocus(lItem);\n }\n else if (e.action === 'shiftSpace') {\n this.gridObj.selectRow(selIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.ctrlMoveFunction = function (items, e, rowIndex) {\n var nextItem;\n if (!isNOU(this.getFocusedItem())) {\n var nextIndex = this.getFocusedItemIndex();\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n nextIndex + ((nextIndex < items.length - 1) ? 1 : 0) : nextIndex - ((nextIndex < 1) ? 0 : 1);\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n rowIndex + ((rowIndex < items.length) ? 1 : 0) : rowIndex - ((rowIndex < 1) ? 0 : 1);\n }\n else {\n if (!isNOU(items[0])) {\n nextItem = 0;\n }\n }\n this.addFocus(nextItem);\n };\n // eslint-disable-next-line\n DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {\n if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {\n if (e.action !== 'csHome' && e.action !== 'csEnd') {\n if (isNOU(this.startIndex) && this.firstItemIndex !== indexValue) {\n this.firstItemIndex = indexValue;\n }\n if (e.action === 'shiftEnd') {\n this.gridObj.selectionModule.selectRowsByRange(this.firstItemIndex, items.length - 1);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, this.firstItemIndex);\n }\n this.startIndex = indexValue;\n }\n else {\n if (e.action === 'csEnd') {\n this.gridObj.\n selectRows(this.InnerItems(isNOU(indexValue) ? 0 : indexValue, isNOU(focIndex) ? items.length - 1 : focIndex, e));\n }\n else {\n if (isNOU(indexValue)) {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectRows(this.InnerItems(isNOU(focIndex) ? 0 : focIndex, indexValue, e));\n }\n }\n }\n }\n else {\n this.gridObj.selectionModule.selectRow(((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : items.length - 1));\n }\n };\n DetailsView.prototype.InnerItems = function (fItem, lItem, e) {\n var itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (var i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (var i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n };\n DetailsView.prototype.shiftSelectFocusItem = function (selIndex, fIndex, selRowIndexes, e) {\n var lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n var fItem = isNOU(this.startIndex) ? selIndex : selRowIndexes[0];\n if (fItem === lItem) {\n this.gridObj.selectRow(fItem);\n }\n else {\n if (fItem < lItem) {\n if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n }\n else if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n }\n this.startIndex = this.gridObj.selectedRowIndex;\n };\n DetailsView.prototype.addFocus = function (item) {\n var fItem = this.getFocusedItem();\n var itemElement = this.gridObj.getRowByIndex(item);\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS, CLS.FOCUSED]);\n }\n if (!isNOU(itemElement)) {\n this.gridObj.element.setAttribute('tabindex', '-1');\n itemElement.setAttribute('tabindex', '0');\n itemElement.focus();\n addClass([itemElement], [CLS.FOCUS, CLS.FOCUSED]);\n }\n };\n DetailsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.FOCUSED, this.element);\n };\n DetailsView.prototype.isSelected = function (selRowIndexes, focIndex) {\n var check = false;\n for (var i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftSelectedItem = function (selIndex, selRowIndexes, gridItems, e) {\n if (selIndex === -1) {\n this.gridObj.selectRow(0);\n }\n else {\n if (isNOU(this.startIndex) && e.shiftKey) {\n this.startIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectRows([selIndex, (e.action === 'shiftDown' || e.action === 'csDown') ?\n (selIndex + ((selIndex !== gridItems.length - 1) ? 1 : 0)) : (selIndex - ((selIndex !== 0) ? 1 : 0))]);\n }\n else {\n if (e.action === 'shiftDown' || e.action === 'shiftUp') {\n if (e.action === 'shiftDown' && selRowIndexes.indexOf(selIndex + 1) === -1) {\n if (selIndex !== gridItems.length - 1) {\n selRowIndexes.push(selIndex + 1);\n }\n }\n else if (e.action === 'shiftUp' && selRowIndexes.indexOf(selIndex - 1) === -1) {\n if (selIndex !== 0) {\n selRowIndexes.push(selIndex - 1);\n }\n }\n else {\n selRowIndexes.pop();\n }\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n if (e.action === 'csDown') {\n if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() + 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() + 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() + 1);\n }\n }\n else if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() - 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() - 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() - 1);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.onMethodCall = function (e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n var action = getValue('action', e);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', e));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', e));\n break;\n case 'openFile':\n this.openFile(getValue('id', e));\n break;\n case 'createFolder':\n this.interaction = false;\n break;\n case 'renameFile':\n this.interaction = false;\n this.renameFile(getValue('id', e), getValue('newName', e));\n break;\n case 'selectAll':\n this.interaction = false;\n this.onSelectAllInit();\n break;\n case 'clearSelection':\n this.interaction = false;\n this.onClearAllInit();\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.getRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var records = [];\n var hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filter = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n if (nodes.indexOf(getValue(filter, gridRecords[i])) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n else {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var name_4 = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name_4) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n };\n DetailsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < records.length; i++) {\n data[i] = records[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n // eslint-disable-next-line\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < dRecords.length; i++) {\n data[i] = dRecords[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n };\n DetailsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n updateRenamingData(this.parent, records[0]);\n if (!isNOU(name)) {\n if (hasEditAccess(this.parent.itemData[0])) {\n rename(this.parent, this.parent.path, name);\n }\n else {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n }\n else {\n doRename(this.parent);\n }\n }\n };\n return DetailsView;\n}());\nexport { DetailsView };\n","import * as index from './index';\nindex.FileManager.Inject(index.DetailsView, index.NavigationPane, index.LargeIconsView, index.Toolbar, index.ContextMenu, index.BreadCrumbBar);\nexport * from './index';\n"],"names":["updatePath","node","data","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","getPathId","pathNames","getPathNames","element","matched","getParents","i","length","ids","push","names","isId","el","parentNode","matches","CLS.LIST_ITEM","parentText","select","CLS.LIST_TEXT","textContent","classList","contains","CLS.TREE_VIEW","generatePath","parent","key","newPath","feParent","removeActive","isCut","removeBlur","selectedNodes","actionRecords","enablePaste","notify","events.hidePaste","activeElement","action","isSearchCut","activeElements","events.cutCopyInit","blurEle","activeModule","targetPath","getParentPath","getModule","addBlur","events.showPaste","activeRecords","breadcrumbbarModule","searchObj","value","isFiltered","i_1","selectedItems","nodes","add","CLS.BLUR","hover","querySelectorAll","CLS.HOVER","remove","CLS.ROW","closest","CLS.LARGE_ICON","searchWordHandler","isLayoutChange","searchWord","events.pathColumn","args","searchSettings","filterType","itemData","getPathObject","caseSensitive","ignoreCase","hiddenItems","showHiddenItems","Search","events.layoutChange","events.search","filter","read","updateLayout","view","layoutSelectedItems","getTargetModule","tartgetModule","CLS.LARGE_ICONS","targetModule","refresh","hasReadAccess","events.refreshEnd","createDeniedDialog","events.permissionRead","openAction","events.openEnd","copyFiles","fileAction","cutFiles","fileType","file","CLS.FOLDER","imageFormat","audioFormat","videoFormat","knownFormat","filetype","toLowerCase","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","getImageUrl","item","imgUrl","baseUrl","ajaxSettings","url","fileName","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","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","files","events.isFile","setNodeId","result","rootId","dirs","len","setValue","setDateObject","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","substring","lastIndexOf","field","setNextPath","currfolders","folders","originalPath","root","eventName","events.finalizeEnd","events.initialEnd","openSearchFolder","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","validateSubFolder","events.pasteInit","paste","dropPath","dragPath","subFolder","srcData","dragNodes","code","message","fileExists","createDialog","tempTarget","dropHandler","dragData","dropData","oldPath","getDirectoryPath","cwd","doPasteUpdate","operation","events.dragEnd","events.cutEnd","duplicateItems","pasteNodes","count","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","events.pasteEnd","readDropPath","expandedId","events.pathDrag","navigationpaneModule","treeObj","events.dropPath","getDuplicateData","records","createVirtualDragElement","getItemName","cloneIcon","cloneName","virtualEle","ele","CLS.CLONE","badge","virtualDragElement","dragStopHandler","dragArgs","cancel","treeExpandTimer","window","clearTimeout","removeDropTarget","uploadObj","dropArea","CLS.CONTENT_ID","detach","target","events.dropInit","dragCount","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","draggingHandler","canDrop","setTimeout","events.dragging","objectToString","str","keys","Object","updateRenamingData","currentItemText","isFile","filterPath","doRename","hasEditAccess","events.permissionEdit","doDownload","hasDownloadAccess","events.permissionDownload","Download","doDeleteFiles","newIds","Delete","doDownloadFiles","getAccessClass","permission","hasContentAccess","hasUploadAccess","createNewFolder","details","events.permissionEditContents","uploadItem","eleId","CLS.UPLOAD_ID","document","click","events.permissionUpload","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","fn","type","mode","dataType","contentType","JSON","stringify","onSuccess","onFailure","beforeSend","beforeSendArgs","events.beforeRequest","Ajax","result_1","triggerAjaxFailure","parse","events.afterRequest","rootAliasName","rootName","location_1","RegExp","match","events.searchTextChange","send","events.selectionChanged","dialogObj","visible","parentElement","nextElementSibling","hide","createdItem","events.createEnd","renamedItem","pop","events.renameEndParent","events.renameEnd","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","e","replaceItems","options","getOptions","Dialog","beforeOpen","keydownAction","bind","this","dialogName","beforeClose","triggerPopupBeforeClose","header","content","buttons","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","width","open","close","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","changeOptions","extOptions","getExtOptions","isApplySame","extDialogObj","beforeExtOpen","CLS.EXTN_DIALOG_ID","dataBind","show","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","events.actionFailure","triggerPopupOpen","triggerPopupClose","duplicateContent","index","buttonModel","isPrimary","renameText","item_1","indexval","item_2","ind","retryFiles","onRetryOpen","isRetryOpened","retryDlgClose","retryDlgUpdate","splice","events.skipUpload","isKeepBoth","onKeepBothAll","onReplaceAll","retryArgs","retry","flag","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","checked","focusInput","focus","setSelectionRange","onFolderDialogOpen","createInput","oninput","onValidate","onkeyup","getKeyCode","onSubmit","onRenameDialogOpen","inputEle","onReSubmit","onFocusRenameInput","txt","showFileExtension","placeholder","Input","properties","formattedString","strArr","location","multipleFiles","onDeleteSubmit","Internationalization","formatDate","modified","format","CLS.VALUE","size","map","val","substr","every","arr","toLocaleUpperCase","CLS.ERROR_CONTENT","preventKeydown","selectAll","dlgName","btnElement","btnCount","onkeydown","keyCode","preventDefault","onSubmitValidate","oIndex","renamedId","oldExtension","nIndex","newExtension","events.deleteInit","test","addInvalid","which","charCode","createImageDialog","image","src","alt","viewerObj","height","enableResize","position","X","Y","openImage","resizing","updateImage","resizeStop","CLS.IMG_DIALOG_ID","imgWrap","cssObj","getComputedStyle","paddingWidth","parseFloat","paddingRight","paddingHeight","paddingBottom","offsetWidth","__extends","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","AjaxSettings","_super","apply","Property","ChildProperty","toolbarItems","ToolbarSettings","SearchSettings","columnArray","headerText","minWidth","template","customAttributes","class","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","LAYOUT_ID","GRID_ID","LARGEICON_ID","DIALOG_ID","IMG_DIALOG_ID","EXTN_DIALOG_ID","CONTENT_ID","BREADCRUMBBAR_ID","UPLOAD_ID","ROOT_POPUP","MOB_POPUP","FILTER","LARGE_ICONS","LIST_ITEM","LIST_TEXT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","ACTIVE","HOVER","FOCUS","CHECK","CB_WRAP","ROW","EMPTY","EMPTY_CONTENT","EMPTY_INNER_CONTENT","CLONE","DROP_FOLDER","DROP_FILE","FOLDER","ICON_IMAGE","ICON_MUSIC","ICON_VIDEO","LARGE_ICON","LARGE_EMPTY_FOLDER","GRID_HEADER","TREE_VIEW","MENU_ICON","GRID_VIEW","ICON_CUT","ICON_GRID","ICON_LARGE","ERROR_CONTENT","RTL","DISPLAY_NONE","VALUE","modelChanged","initialEnd","finalizeEnd","createEnd","pathDrag","deleteInit","deleteEnd","refreshEnd","resizeEnd","pathChanged","destroy","beforeRequest","skipUpload","afterRequest","actionFailure","search","openInit","openEnd","selectionChanged","clearPathInit","layoutChange","sortByChange","detailsInit","menuItemData","renameInit","renameEndParent","renameEnd","showPaste","hidePaste","cutCopyInit","pasteInit","pasteEnd","cutEnd","sortColumn","pathColumn","searchTextChange","dropInit","dragEnd","dragging","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","LargeIconsView","isInteraction","uploadOperation","isRendered","tapCount","isPasteOperation","CLS.LARGEICON_ID","addClass","addEventListener","keyConfigs","end","home","tab","moveDown","moveLeft","moveRight","moveUp","ctrlEnd","ctrlHome","ctrlDown","ctrlLeft","ctrlRight","ctrlUp","shiftEnd","shiftHome","shiftDown","shiftLeft","shiftRight","shiftUp","csEnd","csHome","csDown","csLeft","csRight","csUp","space","ctrlSpace","shiftSpace","csSpace","ctrlA","enter","altEnter","esc","del","ctrlX","ctrlC","ctrlV","f2","shiftdel","back","ctrlD","render","visitedItem","startItem","showSpinner","resetMultiSelect","setAttribute","listObj","unWireEvents","removeEventListener","iconsView","ul","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","htmlAttributes","itemCreated","onItemCreated","renderList","listElements","ListBase","createListFromJson","itemList","slice","call","preventImgDrag","createDragObj","CLS.DISPLAY_NONE","emptyList","selectItems","activeEle","CLS.ACTIVE","adjustHeight","maxHeight","getItemCount","wireEvents","hideSpinner","checkItem","ondragstart","_this","Draggable","enableTailMode","distance","enableAutoScroll","dragTarget","helper","dragHelper","cursorAt","dragCursorPosition","dragArea","dragStop","drag","clone","dragStart","sender","dragLi","setFocus","getItemObject","onDropInit","getModuleName","dropLi","cwdData","info","pane","bar","removeAttribute","curData","textEle","renderCheckbox","allowMultiSelection","checkElement","createCheckBox","firstElementChild","insertBefore","childNodes","onLayoutChange","indexes","getIndexes","length_1","checkEle","checkLength","checkState","icon","name_1","selected","showThumbnail","title","onFinalizeEnd","onCreateEnd","clearSelect","largeiconsviewModule","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","addSelection","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","getFirstItem","lastItem","getLastItem","eveArgs","ctrlKey","shiftKey","doSelection","onClearAllInit","clearSelection","onBeforeRequest","onAfterRequest","onSearch","onLayoutRefresh","onUpdateSelectionData","onPathColumn","isDestroyed","off","events.pathChanged","events.openInit","events.modelChanged","onPropertyChanged","events.methodCall","onMethodCall","onActionFailure","events.renameInit","events.menuItemData","onMenuItemData","splitterResizeHandler","events.resizeEnd","resizeHandler","onpasteInit","onpasteEnd","oncutCopyInit","events.detailsInit","onDetailsInit","onDropPath","on","currentSelected","_i","_a","newProp","wireClickEvent","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","keyboardDownModule","keydownActionHandler","EventHandler","onMouseOver","targetEle","toBind","proxy_1","clickObj","Touch","tap","eve","originalEvent","isDevice","tapEvent","doTapAction","dblClickHandler","clickHandler","tapHold","multiSelect","updateType","cList","CLS.CHECK","triggerSelection","startIndex","endIndex","addActive","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","folder","fItem","getFocusedItem","firstItem","navigateItem","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","isVisible","liParent","liScrPos","scrollTop","getCurFocusedItem","dItem","lItem","rItem","uItem","getDataName","preItem","toCheck","CLS.CB_WRAP","eles","getBoundingClientRect","visitedData","j","byId","resultData","newData","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","isFilter","filterName","name_2","BreadCrumbBar","addressPath","addressBarLink","searchTimer","searchWrapWidth","prop","isNullOrUndefined","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","innerText","ulElement","breadCrumbBarNavigation","subMenuObj","searchWrap","updateBreadCrumbBar","addresBarUL","liElements","pRight","getPropertyValue","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","diff","liElement","utext","subMenuLi","attributes","subMenuSpan","DropDownButton","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","nodeName","children","currentPath","triggerFileOpen","treeNodeId","CLS.FILTER","list","liElementId","link","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onResize","onPasteEnd","events.destroy","onSearchTextChange","liEle","ContextMenu","currentItems","currentElement","disabledItems","downarrow","uparrow","contextMenu","Menu","onBeforeItemRender","onSelect","onBeforeOpen","onBeforeClose","getMenuId","iconSpan","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","menuTarget","uid","treeFolder","activeNode","getElementsByClassName","targetElement","getTargetView","updateActiveModule","setLayoutItem","detailsviewModule","gridObj","getRowObjectFromUID","selectRows","parseInt","setFileItem","setFolderItem","pasteEle","isSubMenu","getMenuItemData","menuModule","menuType","menuOpenArgs","enableItems","CLS.GRID_ID","getItemIndex","itemId","disableItem","concat","enable","isUniqueId","checkValidItem","isTree","getItemData","contextMenuSettings","trim","layout","nameEle","menuClickArgs","sItems","separator","CLS.ICON_CUT","CLS.TB_OPTION_DOT","CLS.TB_OPTION_TICK","defaultLocale","NewFolder","Upload","Rename","Cut","Copy","Paste","SortBy","Refresh","Item-Selection","Items-Selection","View","Details","SelectAll","Open","Tooltip-NewFolder","Tooltip-Upload","Tooltip-Delete","Tooltip-Rename","Tooltip-Download","Tooltip-Cut","Tooltip-Copy","Tooltip-Paste","Tooltip-SortBy","Tooltip-Refresh","Tooltip-Selection","Tooltip-View","Tooltip-Details","Tooltip-SelectAll","Name","Size","DateModified","DateCreated","Path","Modified","Created","Location","Type","Permission","Ascending","Descending","None","View-LargeIcons","View-Details","Button-Ok","Button-Cancel","Button-Yes","Button-No","Button-Create","Button-Save","Header-NewFolder","Content-NewFolder","Header-Rename","Content-Rename","Header-Rename-Confirmation","Content-Rename-Confirmation","Header-Delete","Content-Delete","Header-Folder-Delete","Content-Folder-Delete","Header-Multiple-Delete","Content-Multiple-Delete","Header-Duplicate","Content-Duplicate","Header-Upload","Error","Validation-Empty","Validation-Invalid","Validation-NewFolder-Exists","Validation-Rename-Exists","Folder-Empty","File-Upload","Search-Empty","Search-Key","Filter-Empty","Filter-Key","Sub-Folder-Error","Same-Folder-Error","Access-Denied","Access-Details","Header-Retry","Content-Retry","Button-Keep-Both","Button-Replace","Button-Skip","ApplyAll-Label","KB","Access-Message","Network-Error","Server-Error","FileManager","previousPath","nextPath","deleteRecords","isSameAction","persistData","isOpened","left","uploadingCount","uploadedCount","FileManager_1","Inject","preRender","ensurePath","setAttr","formatUnit","Browser","checkMobile","navigationPaneSettings","isBigger","createSpinner","addWrapper","altN","f5","ctrlShift1","ctrlShift2","ctrlU","L10n","getPersistData","keyEntity","addOnPersist","requiredModules","modules","member","toolbarSettings","initialize","slItems","fileView","setRtl","addEventListeners","splitterObj","collapse","renderComplete","addCssClass","renderFileUpload","headerWrap","layoutWrap","navigationWrap","treeWrap","contentWrap","gridWrap","largeiconWrap","role","overlay","paneSettings","min","max","maxWidth","Splitter","splitterResize","dialogWrap","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","toolbar","toolBarHeight","clientHeight","splitterAdjust","expand","oldOne","newOne","onContextMenu","userAgent","uploadEle","uploadDialogObj","onOpen","onClose","renderUploadBox","uploadUrl","Uploader","asyncSettings","saveUrl","removeUrl","uploading","onUploading","removing","onRemoving","clearing","onClearing","onSelected","success","onUploadSuccess","failure","onUploadFailure","autoUpload","uploadSettings","minFileSize","maxFileSize","allowedExtensions","fileListRendering","onFileListRender","updateUploader","clearAll","fileData","customFormData","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","autoClose","response","statusText","onInitialEnd","removeEventListeners","setPath","oldProp","ajaxSettingSetModel","localeSetModelOption","refreshing","CLS.RTL","disableToolbarItems","toolbarModule","enableToolbarItems","disableMenuItems","contextmenuModule","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","rtl","Complex","Event","NotifyPropertyChanges","Component","Toolbar","default","single","multiple","selection","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","created","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","tool","toolbarClickArgs","getPupupId","buttonObj","layoutBtnObj","hideItems","hideStatus","updateSortByButton","itemCount","itemTooltip","spanElement","tooltipText","prefixIcon","showTextOn","suffixIcon","overflow","align","onSelectionChanged","reRenderToolbar","undefined","hideItem","tools","toHide","refreshOverflow","isEnable","NavigationPane","removeNodes","moveNames","expandTree","isDrag","isPathDragged","isRenameParent","isRightClick","renameParent","ctrlShiftN","shiftF10","onInit","rootData","attr","BaseTreeView","dataSource","parentID","expanded","hasChildren","tooltip","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","allowEditing","nodeEditing","onNodeEditing","drawNode","onDrowNode","dataBound","addDragDrop","getTreeData","getDragPath","getDropPath","nodeData","addChild","prevent","directories","_fm_icon","addNodes","expandNodeTarget","onPathDrag","selectResultNode","onNodeExpanded","innerHtml","sNode","updateTree","updateTreeNode","toExpand","expandedNodes","removeChildNodes","childs","onOpenEnd","sleId","expandAll","updateItemData","updateActionData","selcetedEle","selectedNodeEle","onRenameEndParent","nData","id_1","onDownLoadInit","onClearPathInit","onDragEnd","getMoveNames","previousName","onCutEnd","resultObj","itemname","checkDropPath","obj","onDragging","dataobj","level","keyDown","DetailsView","interaction","isColumnRefresh","firstItemIndex","isSelectionUpdate","currentSelectedItem","isLoaded","isNameWidth","Grid","Resize","Sort","VirtualScroll","checkNameWidth","columns","getColumns","sortSettings","direction","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","detailsViewSettings","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","beforeCopy","load","focusModule","emptyArgs","initialColumn","adjustWidth","fieldName","nameWidth","headerTextAlign","iWidth","headerTemplate","unshift","cWidth","cBox","disableHtmlEncode","gridHeader","renderCheckBox","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","intl","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","selectRecords","currentViewData","getRowHeight","hdTable","getHeaderContent","paddingLeft","borderRightWidth","cnTable","getContent","overflowY","checkEmptyDiv","gridRecords","getCurrentViewRecords","sRecords","selectedRowIndex","rData","onSortColumn","sortModule","onDetailsResize","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","selectionModule","selectRowsByRange","getRows","selectRow","removeSelection","onPasteInit","onDetailsResizeHandler","getRowInfo","dragRow","getSelectedRows","gridHeaderColGroup","firstChild","gridContentColGroup","gridHeaderColNames","selectedRecords","getRowByIndex","lastItemIndex","gridSelectNodes","selectSize","record","name_3","keyupHandler","keydownHandler","removeFocus","getFocusedItemIndex","gridItems","gridLength","focIndex","selIndex","selRowIndeces","crtSrlPos","crtFocusIndex","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","isSelected","shiftSelectedItem","shiftSelectFocusItem","nextIndex","indexValue","checkAllRows","InnerItems","itemArr","fIndex","selRowIndexes","itemElement","check","getRecords","hasFilter","name_4","dRecords","index.FileManager","index.DetailsView","index.NavigationPane","index.LargeIconsView","index.Toolbar","index.ContextMenu","index.BreadCrumbBar"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ej2-filemanager.min.js","sources":["../../src/file-manager/common/utility.js","../../src/file-manager/common/operations.js","../../src/file-manager/pop-up/dialog.js","../../src/file-manager/models/ajax-settings.js","../../src/file-manager/models/toolbar-settings.js","../../src/file-manager/models/search-settings.js","../../src/file-manager/models/details-view-settings.js","../../src/file-manager/models/contextMenu-settings.js","../../src/file-manager/models/navigation-pane-settings.js","../../src/file-manager/models/upload-settings.js","../../src/file-manager/models/column.js","../../src/file-manager/base/classes.js","../../src/file-manager/base/constant.js","../../src/file-manager/layout/large-icons-view.js","../../src/file-manager/actions/breadcrumb-bar.js","../../src/file-manager/pop-up/context-menu.js","../../src/file-manager/models/default-locale.js","../../src/file-manager/base/file-manager.js","../../src/file-manager/actions/toolbar.js","../../src/file-manager/layout/navigation-pane.js","../../src/file-manager/layout/details-view.js","../../src/global.js"],"sourcesContent":["import * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { read, paste, Search, filter, Download, Delete } from '../common/operations';\nimport { getValue, setValue, isNullOrUndefined as isNOU, matches, select, createElement } from '@syncfusion/ej2-base';\nimport { closest, detach } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createDialog } from '../pop-up/dialog';\n/**\n * Utility file for common actions\n *\n * @param {HTMLLIElement} node - specifies the node.\n * @param {Object} data - specifies the data.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function updatePath(node, data, instance) {\n var text = getValue('name', data);\n var id = node.getAttribute('data-id');\n var newText = isNOU(id) ? text : id;\n instance.setProperties({ path: getPath(node, newText, instance.hasId) }, true);\n instance.pathId = getPathId(node);\n instance.pathNames = getPathNames(node, text);\n}\n/**\n * Functions for get path in FileManager\n *\n * @param {Element | Node} element - specifies the element.\n * @param {string} text - specifies the text.\n * @param {boolean} hasId - specifies the id.\n * @returns {string} returns the path.\n * @private\n */\nexport function getPath(element, text, hasId) {\n var matched = getParents(element, text, false, hasId);\n var path = hasId ? '' : '/';\n var len = matched.length - (hasId ? 1 : 2);\n for (var i = len; i >= 0; i--) {\n path += matched[i] + '/';\n }\n return path;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} node - specifies the node element.\n * @returns {string[]} returns the path ids.\n * @private\n */\nexport function getPathId(node) {\n var matched = getParents(node, node.getAttribute('data-uid'), true);\n var ids = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n ids.push(matched[i]);\n }\n return ids;\n}\n/**\n * Functions for get path names in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @returns {string[]} returns the path names.\n * @private\n */\nexport function getPathNames(element, text) {\n var matched = getParents(element, text, false);\n var names = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n names.push(matched[i]);\n }\n return names;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @param {boolean} isId - specifies the id.\n * @param {boolean} hasId - checks the id exists.\n * @returns {string[]} returns parent element.\n * @private\n */\nexport function getParents(element, text, isId, hasId) {\n var matched = [text];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, '.' + CLS.LIST_ITEM)) {\n var parentText = isId ? el.getAttribute('data-uid') : (hasId ? el.getAttribute('data-id') :\n select('.' + CLS.LIST_TEXT, el).textContent);\n matched.push(parentText);\n }\n el = el.parentNode;\n if (el.classList.contains(CLS.TREE_VIEW)) {\n break;\n }\n }\n return matched;\n}\n/**\n * Functions for generate path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function generatePath(parent) {\n var key = parent.hasId ? 'id' : 'name';\n var newPath = parent.hasId ? '' : '/';\n var i = parent.hasId ? 0 : 1;\n for (i; i < parent.pathId.length; i++) {\n // eslint-disable-next-line\n var data = getValue(parent.pathId[i], parent.feParent);\n newPath += getValue(key, data) + '/';\n }\n parent.setProperties({ path: newPath }, true);\n}\n/**\n * Functions for remove active element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function removeActive(parent) {\n if (parent.isCut) {\n removeBlur(parent);\n parent.selectedNodes = [];\n parent.actionRecords = [];\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n }\n}\n/**\n * Selects active element in File Manager\n *\n * @param {string} action - specifies the action.\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns active element.\n * @private\n */\nexport function activeElement(action, parent) {\n parent.isSearchCut = false;\n parent.actionRecords = [];\n parent.activeElements = [];\n parent.notify(events.cutCopyInit, {});\n if (parent.activeElements.length === 0) {\n return false;\n }\n removeBlur(parent);\n var blurEle = parent.activeElements;\n if (parent.activeModule !== 'navigationpane') {\n parent.targetPath = parent.path;\n }\n else {\n parent.targetPath = getParentPath(parent.path);\n }\n var i = 0;\n if (blurEle) {\n getModule(parent, blurEle[0]);\n if (action === 'cut') {\n while (i < blurEle.length) {\n addBlur(blurEle[i]);\n i++;\n }\n }\n }\n i = 0;\n parent.selectedNodes = [];\n parent.enablePaste = true;\n parent.notify(events.showPaste, {});\n while (i < parent.activeRecords.length) {\n parent.actionRecords.push(parent.activeRecords[i]);\n parent.selectedNodes.push(getValue('name', parent.activeRecords[i]));\n i++;\n }\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) &&\n parent.activeModule !== 'navigationpane') {\n parent.selectedNodes = [];\n parent.isSearchCut = true;\n var i_1 = 0;\n while (i_1 < parent.selectedItems.length) {\n parent.selectedNodes.push(parent.selectedItems[i_1]);\n i_1++;\n }\n }\n return true;\n}\n/**\n * Adds blur to the elements\n *\n * @param {Element} nodes - specifies the nodes.\n * @returns {void}\n * @private\n */\nexport function addBlur(nodes) {\n nodes.classList.add(CLS.BLUR);\n}\n/**\n * Removes blur from elements\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} hover - specifies the hover string.\n * @returns {void}\n * @private\n */\nexport function removeBlur(parent, hover) {\n var blurEle = (!hover) ? parent.element.querySelectorAll('.' + CLS.BLUR) :\n parent.element.querySelectorAll('.' + CLS.HOVER);\n var i = 0;\n while (i < blurEle.length) {\n blurEle[i].classList.remove((!hover) ? CLS.BLUR : CLS.HOVER);\n i++;\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getModule(parent, element) {\n if (element) {\n if (element.classList.contains(CLS.ROW)) {\n parent.activeModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICON)) {\n parent.activeModule = 'largeiconsview';\n }\n else {\n parent.activeModule = 'navigationpane';\n }\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} value - specifies the value.\n * @param {boolean} isLayoutChange - specifies the layout change.\n * @returns {void}\n * @private\n */\nexport function searchWordHandler(parent, value, isLayoutChange) {\n var searchWord;\n if (value.length === 0 && !parent.isFiltered) {\n parent.notify(events.pathColumn, { args: parent });\n }\n if (parent.searchSettings.filterType === 'startsWith') {\n searchWord = value + '*';\n }\n else if (parent.searchSettings.filterType === 'endsWith') {\n searchWord = '*' + value;\n }\n else {\n searchWord = '*' + value + '*';\n }\n parent.searchWord = searchWord;\n parent.itemData = [getPathObject(parent)];\n if (value.length > 0) {\n var caseSensitive = parent.searchSettings.ignoreCase;\n var hiddenItems = parent.showHiddenItems;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchWord, hiddenItems, !caseSensitive);\n }\n else {\n if (!parent.isFiltered) {\n read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n else {\n filter(parent, events.layoutChange);\n }\n }\n}\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} view - specifies the view.\n * @returns {void}\n * @private\n */\nexport function updateLayout(parent, view) {\n parent.setProperties({ view: view }, true);\n if (parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) {\n parent.layoutSelectedItems = parent.selectedItems;\n }\n var searchWord = '';\n if (parent.breadcrumbbarModule.searchObj.element.value) {\n searchWord = parent.breadcrumbbarModule.searchObj.element.value;\n }\n parent.isLayoutChange = true;\n searchWordHandler(parent, searchWord, true);\n}\n/* istanbul ignore next */\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getTargetModule(parent, element) {\n var tartgetModule = '';\n if (element) {\n if (closest(element, '.e-gridcontent')) {\n tartgetModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICONS)) {\n tartgetModule = 'largeiconsview';\n }\n else if (element.classList.contains('e-fullrow') ||\n element.classList.contains('e-icon-expandable')) {\n tartgetModule = 'navigationpane';\n }\n else if (closest(element, '.e-address-list-item')) {\n tartgetModule = 'breadcrumbbar';\n }\n else {\n tartgetModule = '';\n }\n }\n parent.targetModule = tartgetModule;\n}\n/* istanbul ignore next */\n/**\n * refresh the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function refresh(parent) {\n parent.itemData = [getPathObject(parent)];\n if (!hasReadAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionRead);\n }\n else {\n read(parent, events.refreshEnd, parent.path);\n }\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function openAction(parent) {\n read(parent, events.openEnd, parent.path);\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {Object} - returns the path data.\n * @private\n */\n// eslint-disable-next-line\nexport function getPathObject(parent) {\n return getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n}\n/**\n * Copy files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function copyFiles(parent) {\n if (!activeElement('copy', parent)) {\n return;\n }\n else {\n parent.fileAction = 'copy';\n }\n}\n/**\n * Cut files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function cutFiles(parent) {\n if (!activeElement('cut', parent)) {\n return;\n }\n else {\n parent.isCut = true;\n parent.fileAction = 'move';\n }\n}\n/**\n * To add class for fileType\n *\n * @param {Object} file - specifies the file.\n * @returns {string} - returns the file type.\n * @private\n */\n// eslint-disable-next-line\nexport function fileType(file) {\n var isFile = getValue('isFile', file);\n if (!isFile) {\n return CLS.FOLDER;\n }\n var imageFormat = ['bmp', 'dib', 'jpg', 'jpeg', 'jpe', 'jfif', 'gif', 'tif', 'tiff', 'png', 'ico'];\n var audioFormat = ['mp3', 'wav', 'aac', 'ogg', 'wma', 'aif', 'fla', 'm4a'];\n var videoFormat = ['webm', 'mkv', 'flv', 'vob', 'ogv', 'ogg', 'avi', 'wmv', 'mp4', '3gp'];\n var knownFormat = ['css', 'exe', 'html', 'js', 'msi', 'pdf', 'pptx', 'ppt', 'rar', 'zip', 'txt', 'docx', 'doc',\n 'xlsx', 'xls', 'xml', 'rtf', 'php'];\n var filetype = getValue('type', file);\n filetype = filetype.toLowerCase();\n if (filetype.indexOf('.') !== -1) {\n filetype = filetype.split('.').join('');\n }\n var iconType;\n if (imageFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_IMAGE;\n }\n else if (audioFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_MUSIC;\n }\n else if (videoFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_VIDEO;\n }\n else if (knownFormat.indexOf(filetype) !== -1) {\n iconType = 'e-fe-' + filetype;\n }\n else {\n iconType = 'e-fe-unknown e-fe-' + filetype;\n }\n return iconType;\n}\n/* istanbul ignore next */\n/**\n * To get the image URL\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} item - specifies the item.\n * @returns {string} - returns the image url.\n * @private\n */\n// eslint-disable-next-line\nexport function getImageUrl(parent, item) {\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var imgUrl;\n var fileName = getValue('name', item);\n var fPath = getValue('filterPath', item);\n if (parent.hasId) {\n var imgId = getValue('id', item);\n imgUrl = baseUrl + '?path=' + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + '?path=' + fPath.replace(/\\\\/g, '/') + fileName;\n }\n else {\n imgUrl = baseUrl + '?path=' + parent.path + fileName;\n }\n imgUrl = imgUrl + '&time=' + (new Date().getTime()).toString();\n var eventArgs = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs);\n return eventArgs.imageUrl;\n}\n/* istanbul ignore next */\n/**\n * Gets the full path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} path - specifies the path.\n * @returns {string} - returns the image url.\n * @private\n */\n// eslint-disable-next-line\nexport function getFullPath(parent, data, path) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', data) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', data);\n if (!isNOU(fPath)) {\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return path + filePath;\n }\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @returns {string} - returns the name.\n * @private\n */\n// eslint-disable-next-line\nexport function getName(parent, data) {\n var name = getValue('name', data);\n var fPath = getValue('filterPath', data);\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) && !isNOU(fPath)) {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(parent.path, '') + name;\n }\n return name;\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object[]} items - specifies the item elements.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var query;\n if (parent.sortOrder !== 'None') {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\n // eslint-disable-next-line\n var lists = new DataManager(items).executeLocal(query);\n return getValue('records', lists);\n}\n/**\n * Gets the data object\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} key - specifies the key.\n * @param {string} value - specifies the value.\n * @returns {Object} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getObject(parent, key, value) {\n // eslint-disable-next-line\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var query = new Query().where(key, 'equal', value);\n // eslint-disable-next-line\n var lists = new DataManager(currFiles).executeLocal(query);\n return lists[0];\n}\n/**\n * Creates empty element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLElement} element - specifies the element.\n * @param {ReadArgs | SearchArgs} args - specifies the args.\n * @returns {void}\n * @private\n */\nexport function createEmptyElement(parent, element, args) {\n var top;\n var layoutElement = select('#' + parent.element.id + CLS.LAYOUT_ID, parent.element);\n var addressBarHeight = select('#' + parent.element.id + CLS.BREADCRUMBBAR_ID, layoutElement).offsetHeight;\n top = layoutElement.offsetHeight - addressBarHeight;\n if (parent.view === 'Details') {\n top = top - select('.' + CLS.GRID_HEADER, layoutElement).offsetHeight;\n }\n if (isNOU(element.querySelector('.' + CLS.EMPTY))) {\n var emptyDiv = createElement('div', { className: CLS.EMPTY });\n var emptyFolder = createElement('div', { className: CLS.LARGE_EMPTY_FOLDER });\n var emptyEle = createElement('div', { className: CLS.EMPTY_CONTENT });\n var dragFile = createElement('div', { className: CLS.EMPTY_INNER_CONTENT });\n if (parent.view === 'Details') {\n element.querySelector('.' + CLS.GRID_VIEW).appendChild(emptyDiv);\n }\n else {\n element.appendChild(emptyDiv);\n }\n emptyDiv.appendChild(emptyFolder);\n emptyDiv.appendChild(emptyEle);\n emptyDiv.appendChild(dragFile);\n }\n if (element.querySelector('.' + CLS.EMPTY)) {\n if (!isNOU(args.error)) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Access-Denied');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Access-Details');\n }\n else if (parent.isFiltered) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Key');\n }\n else if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Search-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Search-Key');\n }\n else {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Folder-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'File-Upload');\n }\n }\n var eDiv = select('.' + CLS.EMPTY, element);\n top = (top - eDiv.offsetHeight) / 2;\n eDiv.style.marginTop = top + 'px';\n}\n/**\n * Gets the directories\n *\n * @param {Object[]} files - specifies the file object.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nexport function getDirectories(files) {\n return new DataManager(files).executeLocal(new Query().where(events.isFile, 'equal', false, false));\n}\n/**\n * set the Node ID\n *\n * @param {ReadArgs} result - specifies the result.\n * @param {string} rootId - specifies the rootId.\n * @returns {void}\n * @private\n */\nexport function setNodeId(result, rootId) {\n // eslint-disable-next-line\n var dirs = getDirectories(result.files);\n for (var i = 0, len = dirs.length; i < len; i++) {\n setValue('_fm_id', rootId + '_' + i, dirs[i]);\n }\n}\n/**\n * set the date object\n *\n * @param {Object[]} args - specifies the file object.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function setDateObject(args) {\n for (var i = 0; i < args.length; i++) {\n setValue('_fm_created', new Date(getValue('dateCreated', args[i])), args[i]);\n setValue('_fm_modified', new Date(getValue('dateModified', args[i])), args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nexport function getLocaleText(parent, text) {\n var locale = parent.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n}\n/**\n * get the CSS class\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} css - specifies the css.\n * @returns {string} - returns the css classes.\n * @private\n */\nexport function getCssClass(parent, css) {\n var cssClass = parent.cssClass;\n cssClass = (isNOU(cssClass) || cssClass === '') ? css : (cssClass + ' ' + css);\n return cssClass;\n}\n/**\n * sort on click\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {MenuEventArgs} args - specifies the menu event arguements.\n * @returns {void}\n * @private\n */\nexport function sortbyClickHandler(parent, args) {\n var tick;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(events.sortColumn, { module: 'detailsview' });\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(events.sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @returns {string} - returns the sorted fields\n * @private\n */\nexport function getSortField(id) {\n var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n switch (text) {\n case 'date':\n field = '_fm_modified';\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function setNextPath(parent, path) {\n var currfolders = path.split('/');\n var folders = parent.originalPath.split('/');\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n for (var i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n var eventName = (folders[i + 1] === '') ? events.finalizeEnd : events.initialEnd;\n var newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n // eslint-disable-next-line\n var data = getObject(parent, key, folders[i]);\n var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n parent.pathId.push(id);\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n read(parent, eventName, parent.path);\n break;\n }\n}\n/**\n * Opens the searched folder\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function openSearchFolder(parent, data) {\n parent.notify(events.clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n parent.originalPath = getFullPath(parent, data, parent.path);\n read(parent, (parent.path !== parent.originalPath) ? events.initialEnd : events.finalizeEnd, parent.path);\n}\n/**\n * Paste handling function\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function pasteHandler(parent) {\n parent.isDragDrop = false;\n if (parent.selectedNodes.length !== 0 && parent.enablePaste) {\n var path = (parent.folderPath === '') ? parent.path : parent.folderPath;\n // eslint-disable-next-line\n var subFolder = validateSubFolder(parent, parent.actionRecords, path, parent.path);\n if (!subFolder) {\n if ((parent.fileAction === 'move' && parent.targetPath !== path) || parent.fileAction === 'copy') {\n parent.notify(events.pasteInit, {});\n paste(parent, parent.targetPath, parent.selectedNodes, path, parent.fileAction, [], parent.actionRecords);\n }\n else {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n removeBlur(parent);\n }\n }\n }\n}\n/**\n * Validates the sub folders\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {'{ [key: string]: Object; }[]'} data - specifies the data.\n * @param {string} dropPath - specifies the drop path.\n * @param {string} dragPath - specifies the drag path.\n * @returns {boolean} - returns the validated sub folder.\n * @private\n */\n// eslint-disable-next-line\nexport function validateSubFolder(parent, data, dropPath, dragPath) {\n var subFolder = false;\n for (var i = 0; i < data.length; i++) {\n if (!getValue('isFile', data[i])) {\n var tempTarget = getFullPath(parent, data[i], dragPath);\n if (dropPath.indexOf(tempTarget) === 0) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Sub-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n else {\n var srcData = parent.dragNodes[i];\n var len = 0;\n if (srcData) {\n len = srcData.lastIndexOf('/');\n }\n var path = '';\n if (len > 0) {\n path = dragPath + srcData.substring(0, len + 1);\n }\n if (path === dropPath) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n }\n return subFolder;\n}\n/**\n * Validates the drop handler\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function dropHandler(parent) {\n parent.isDragDrop = true;\n if (parent.dragData.length !== 0) {\n parent.dragPath = parent.dragPath.replace(/\\\\/g, '/');\n parent.dropPath = parent.dropPath.replace(/\\\\/g, '/');\n var subFolder = validateSubFolder(parent, parent.dragData, parent.dropPath, parent.dragPath);\n if (!subFolder && (parent.dragPath !== parent.dropPath)) {\n parent.itemData = [parent.dropData];\n paste(parent, parent.dragPath, parent.dragNodes, parent.dropPath, 'move', [], parent.dragData);\n parent.notify(events.pasteInit, {});\n }\n }\n}\n/**\n * Gets the parent path\n *\n * @param {string} oldPath - specifies the old path.\n * @returns {string} - returns the parent path.\n * @private\n */\nexport function getParentPath(oldPath) {\n var path = oldPath.split('/');\n var newPath = path[0] + '/';\n for (var i = 1; i < path.length - 2; i++) {\n newPath += path[i] + '/';\n }\n return newPath;\n}\n/**\n * Gets the directory path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {ReadArgs} args - returns the read arguements.\n * @returns {string} - returns the directory path\n * @private\n */\nexport function getDirectoryPath(parent, args) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', args.cwd) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', args.cwd);\n if (!isNOU(fPath)) {\n if (fPath === '') {\n return parent.hasId ? filePath : '/';\n }\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return parent.path + filePath;\n }\n}\n/**\n * Gets the do paste path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} operation - specifies the operations.\n * @param {ReadArgs} result - returns the result.\n * @returns {void}\n * @private\n */\nexport function doPasteUpdate(parent, operation, result) {\n if (operation === 'move') {\n if (!parent.isDragDrop) {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n parent.notify(events.cutEnd, result);\n }\n else {\n parent.notify(events.dragEnd, result);\n }\n }\n if (parent.duplicateItems.length === 0) {\n parent.pasteNodes = [];\n }\n var flag = false;\n for (var count = 0; (count < result.files.length) && !flag; count++) {\n parent.pasteNodes.push(result.files[count][parent.hasId ? 'id' : 'name']);\n if (parent.isDragDrop) {\n parent.droppedObjects.push(result.files[count]);\n }\n }\n parent.duplicateItems = [];\n parent.duplicateRecords = [];\n if (parent.isDragDrop && !parent.isPasteError) {\n parent.isDropEnd = true;\n }\n else {\n parent.isDropEnd = false;\n }\n if (!parent.isDragDrop || (parent.path === parent.dragPath) || (parent.path === parent.dropPath)\n || parent.isSearchDrag) {\n parent.isPathDrag = false;\n read(parent, events.pasteEnd, parent.path);\n }\n else {\n readDropPath(parent);\n }\n parent.trigger('success', { action: operation, result: result });\n}\n/**\n * Reads the drop path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function readDropPath(parent) {\n var pathId = getValue('_fm_id', parent.dropData);\n parent.expandedId = pathId;\n parent.itemData = [parent.dropData];\n if (parent.isPathDrag) {\n parent.notify(events.pathDrag, parent.itemData);\n }\n else {\n if (parent.navigationpaneModule) {\n var node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n updatePath(node, parent.dropData, parent);\n }\n read(parent, events.dropPath, parent.dropPath);\n }\n}\n/**\n * Gets the duplicated path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} name - specifies the name.\n * @returns {object} - returns the duplicated path.\n * @private\n */\n// eslint-disable-next-line\nexport function getDuplicateData(parent, name) {\n // eslint-disable-next-line\n var data = null;\n // eslint-disable-next-line\n var records = parent.isDragDrop ? parent.dragData : parent.actionRecords;\n for (var i = 0; i < records.length; i++) {\n if (getValue('name', records[i]) === name) {\n data = records[i];\n break;\n }\n }\n return data;\n}\n/**\n * Gets the create the virtual drag element\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createVirtualDragElement(parent) {\n parent.isSearchDrag = false;\n if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n parent.isSearchDrag = true;\n }\n if (parent.activeModule !== 'navigationpane') {\n parent.dragNodes = [];\n var i = 0;\n while (i < parent.selectedItems.length) {\n parent.dragNodes.push(parent.selectedItems[i]);\n i++;\n }\n if (parent.selectedItems.length === 0 && parent.dragData && parent.dragData.length === 1) {\n parent.dragNodes.push(getItemName(parent, parent.dragData[0]));\n }\n }\n var cloneIcon = parent.createElement('div', {\n className: 'e-fe-icon ' + fileType(parent.dragData[0])\n });\n var cloneName = parent.createElement('div', {\n className: 'e-fe-name',\n innerHTML: parent.dragData[0].name\n });\n var virtualEle = parent.createElement('div', {\n className: 'e-fe-content'\n });\n virtualEle.appendChild(cloneIcon);\n virtualEle.appendChild(cloneName);\n var ele = parent.createElement('div', {\n className: CLS.CLONE\n });\n ele.appendChild(virtualEle);\n if (parent.dragNodes.length > 1) {\n var badge = parent.createElement('span', {\n className: 'e-fe-count',\n innerHTML: (parent.dragNodes.length).toString(10)\n });\n ele.appendChild(badge);\n }\n parent.virtualDragElement = ele;\n parent.element.appendChild(parent.virtualDragElement);\n}\n/**\n * Drops the stop handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStopHandler(parent, args) {\n var dragArgs = args;\n dragArgs.cancel = false;\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeDropTarget(parent);\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n removeBlur(parent);\n parent.uploadObj.dropArea = select('#' + parent.element.id + CLS.CONTENT_ID, parent.element);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n getTargetModule(parent, args.target);\n parent.notify(events.dropInit, args);\n removeBlur(parent, 'hover');\n dragArgs.fileDetails = parent.dragData;\n parent.trigger('fileDragStop', dragArgs, function (dragArgs) {\n if (!dragArgs.cancel && !isNOU(parent.targetModule) && parent.targetModule !== '' && parent.dragCount > 2) {\n dropHandler(parent);\n }\n parent.dragCount = 0;\n });\n}\n/**\n * Drag the start handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {'DragEventArgs'} args - specifies the drag event arguements.\n * @param {Draggable} dragObj - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStartHandler(parent, args, dragObj) {\n var dragArgs = args;\n dragArgs.cancel = false;\n dragArgs.fileDetails = parent.dragData;\n parent.dragCount = 0;\n parent.droppedObjects = [];\n if (!parent.allowDragAndDrop || ((parent.activeModule === 'navigationpane') &&\n (closest(args.element, 'li').getAttribute('data-uid') === parent.pathId[0]))) {\n dragArgs.cancel = true;\n }\n if ((parent.activeModule === 'navigationpane') &&\n (parent.pathId.indexOf(closest(args.element, 'li').getAttribute('data-uid')) !== -1)) {\n parent.isPathDrag = true;\n }\n else {\n parent.isPathDrag = false;\n }\n removeBlur(parent);\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else if (!dragArgs.cancel) {\n var i = 0;\n while (i < parent.activeElements.length) {\n addBlur(parent.activeElements[i]);\n i++;\n }\n parent.trigger('fileDragStart', dragArgs, function (dragArgs) {\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else {\n parent.uploadObj.dropArea = null;\n }\n });\n }\n}\n/**\n * Drag the cancel handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function dragCancel(parent) {\n removeBlur(parent);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n}\n/**\n * Remove drop target handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function removeDropTarget(parent) {\n removeItemClass(parent, CLS.DROP_FOLDER);\n removeItemClass(parent, CLS.DROP_FILE);\n}\n/**\n * Remove item class handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} value - specifies the value.\n * @returns {void}\n * @private\n */\nexport function removeItemClass(parent, value) {\n var ele = parent.element.querySelectorAll('.' + value);\n for (var i = 0; i < ele.length; i++) {\n ele[i].classList.remove(value);\n }\n}\n/**\n * Dragging handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nexport function draggingHandler(parent, args) {\n var dragArgs = args;\n dragArgs.fileDetails = parent.dragData;\n var canDrop = false;\n getTargetModule(parent, args.target);\n removeDropTarget(parent);\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeBlur(parent, 'hover');\n var node = null;\n if (parent.targetModule === 'navigationpane') {\n node = closest(args.target, 'li');\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n canDrop = true;\n /* istanbul ignore next */\n parent.treeExpandTimer = window.setTimeout(function () { parent.notify(events.dragging, args); }, 800);\n }\n else if (parent.targetModule === 'detailsview') {\n node = closest(args.target, 'tr');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FOLDER);\n }\n else if (node && !node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FILE);\n }\n canDrop = true;\n }\n else if (parent.targetModule === 'largeiconsview') {\n node = closest(args.target, 'li');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n }\n canDrop = true;\n /* istanbul ignore next */\n }\n else if (parent.targetModule === 'breadcrumbbar') {\n canDrop = true;\n }\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n parent.element.classList.add(canDrop ? 'e-fe-drop' : 'e-no-drop');\n parent.dragCount = parent.dragCount + 1;\n parent.trigger('fileDragging', dragArgs);\n}\n/**\n * Object to string handler\n *\n * @param {Object} data - specifies the data.\n * @returns {string} returns string converted from Object.\n * @private\n */\n// Ignored the message key value in permission object\n// eslint-disable-next-line\nexport function objectToString(data) {\n var str = '';\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] !== 'message') {\n str += (i === 0 ? '' : ', ') + keys[i] + ': ' + getValue(keys[i], data);\n }\n }\n return str;\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {string} returns the item name.\n * @private\n */\n// eslint-disable-next-line\nexport function getItemName(parent, data) {\n if (parent.hasId) {\n return getValue('id', data);\n }\n return getName(parent, data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function updateRenamingData(parent, data) {\n parent.itemData = [data];\n parent.currentItemText = getValue('name', data);\n parent.isFile = getValue('isFile', data);\n parent.filterPath = getValue('filterPath', data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doRename(parent) {\n if (!hasEditAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionEdit);\n }\n else {\n createDialog(parent, 'Rename');\n }\n}\n/* istanbul ignore next */\n/**\n * Download handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doDownload(parent) {\n // eslint-disable-next-line\n var items = parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(parent, items[i], events.permissionDownload);\n return;\n }\n }\n if (parent.selectedItems.length > 0) {\n Download(parent, parent.path, parent.selectedItems);\n }\n}\n/**\n * Delete Files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function doDeleteFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionEdit);\n return;\n }\n }\n parent.itemData = data;\n Delete(parent, newIds, parent.path, 'delete');\n}\n/* istanbul ignore next */\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function doDownloadFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasDownloadAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionDownload);\n return;\n }\n }\n parent.itemData = data;\n if (newIds.length > 0) {\n Download(parent, parent.path, newIds);\n }\n}\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @param {string} action - specifies the actions.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nexport function createDeniedDialog(parent, data, action) {\n var message = getValue('message', getValue('permission', data));\n if (message === '') {\n message = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', data)).replace('{1}', action);\n }\n var response = {\n error: {\n code: '401',\n fileExists: null,\n message: message\n }\n };\n createDialog(parent, 'Error', response);\n}\n/**\n * Get Access Classes\n *\n * @param {Object} data - specifies the data.\n * @returns {string} - returns accesses classes.\n * @private\n */\n// eslint-disable-next-line\nexport function getAccessClass(data) {\n return !hasReadAccess(data) ? 'e-fe-locked e-fe-hidden' : 'e-fe-locked';\n}\n/**\n * Check read access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns read access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasReadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return (permission && !getValue('read', permission)) ? false : true;\n}\n/**\n * Check edit access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns edit access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasEditAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('write', permission))) : true;\n}\n/**\n * Check content access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns content access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasContentAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('writeContents', permission))) : true;\n}\n/**\n * Check upload access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns upload access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasUploadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('upload', permission))) : true;\n}\n/**\n * Check download access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns download access.\n * @private\n */\n// eslint-disable-next-line\nexport function hasDownloadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('download', permission))) : true;\n}\n/**\n * Create new folder handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createNewFolder(parent) {\n // eslint-disable-next-line\n var details = parent.itemData[0];\n if (!hasContentAccess(details)) {\n createDeniedDialog(parent, details, events.permissionEditContents);\n }\n else {\n createDialog(parent, 'NewFolder');\n }\n}\n/**\n * Upload item handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function uploadItem(parent) {\n // eslint-disable-next-line\n var details = parent.itemData[0];\n if (!hasUploadAccess(details)) {\n createDeniedDialog(parent, details, events.permissionUpload);\n }\n else {\n var eleId = '#' + parent.element.id + CLS.UPLOAD_ID;\n var uploadEle = document.querySelector(eleId);\n uploadEle.click();\n }\n}\n","import { Ajax, createElement, select, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, setValue, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate, getParentPath, getPathObject } from '../common/utility';\nimport { generatePath } from '../common/utility';\n/**\n * Function to read the content from given path in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function read(parent, event, path) {\n // eslint-disable-next-line\n var itemData = parent.itemData;\n for (var i = 0; i < itemData.length; i++) {\n if (isNOU(getValue('hasChild', itemData[i]))) {\n setValue('hasChild', false, itemData[i]);\n }\n }\n // eslint-disable-next-line\n var data = { action: 'read', path: path, showHiddenItems: parent.showHiddenItems, data: itemData };\n createAjax(parent, data, readSuccess, event);\n}\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nexport function createFolder(parent, itemName) {\n // eslint-disable-next-line\n var data = { action: 'create', path: parent.path, name: itemName, data: parent.itemData };\n createAjax(parent, data, createSuccess, itemName);\n}\n/**\n * Function to filter the files in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nexport function filter(parent, event) {\n // eslint-disable-next-line\n var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n // eslint-disable-next-line\n var filterData;\n // eslint-disable-next-line\n var filterDataVal = parent.filterData ? extend(filterData, data, parent.filterData) : data;\n createAjax(parent, filterDataVal, filterSuccess, event, getValue('action', filterDataVal));\n}\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string} itemNewName - specifies the item's new name.\n * @returns {void}\n * @private\n */\nexport function rename(parent, path, itemNewName) {\n var name;\n var newName;\n if (parent.breadcrumbbarModule.searchObj.element.value === '' && !parent.isFiltered) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n var fPath = parent.filterPath;\n if (parent.hasId) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(path, '') + parent.currentItemText;\n newName = fPath.replace(path, '') + itemNewName;\n }\n }\n // eslint-disable-next-line\n var data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData\n };\n createAjax(parent, data, renameSuccess, path);\n}\n/**\n * Function to paste file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} names - specifies the names.\n * @param {string} targetPath - specifies the target path.\n * @param {string} pasteOperation - specifies the paste operation.\n * @param {string[]} renameItems - specifies the rename items.\n * @param {Object[]} actionRecords - specifies the action records.\n * @returns {void}\n * @private\n */\nexport function paste(parent, path, names, targetPath, pasteOperation, \n// eslint-disable-next-line\nrenameItems, actionRecords) {\n // eslint-disable-next-line\n var data = {\n action: pasteOperation, path: path, targetData: parent.itemData[0],\n targetPath: targetPath, names: names, renameFiles: renameItems, data: actionRecords\n };\n parent.destinationPath = targetPath;\n createAjax(parent, data, pasteSuccess, path, pasteOperation, targetPath);\n}\n/**\n * Function to delete file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} items - specifies the items.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nexport function Delete(parent, items, path, operation) {\n // eslint-disable-next-line\n var data = { action: operation, path: path, names: items, data: parent.itemData };\n createAjax(parent, data, deleteSuccess, path);\n}\n/* istanbul ignore next */\n/**\n * Function to get details of file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} names - specifies the names.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation data.\n * @returns {void}\n * @private\n */\nexport function GetDetails(parent, names, path, operation) {\n // eslint-disable-next-line\n var data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Function for createAjax in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {Function} fn - specifies the fn.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the target path.\n * @returns {void}\n * @private\n */\nfunction createAjax(\n// eslint-disable-next-line\nparent, data, fn, event, operation, targetPath) {\n // eslint-disable-next-line\n var ajaxSettings = {\n url: parent.ajaxSettings.url,\n type: 'POST',\n mode: true,\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };\n parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\n var ajax = new Ajax({\n url: getValue('url', beforeSendArgs.ajaxSettings),\n type: getValue('type', beforeSendArgs.ajaxSettings),\n mode: getValue('mode', beforeSendArgs.ajaxSettings),\n dataType: getValue('dataType', beforeSendArgs.ajaxSettings),\n contentType: getValue('contentType', beforeSendArgs.ajaxSettings),\n data: getValue('data', beforeSendArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', beforeSendArgs.ajaxSettings),\n onSuccess: function (result) {\n if (isNOU(result)) {\n var result_1 = {\n error: {\n fileExists: null,\n message: getLocaleText(parent, 'Server-Error') + ' ' + parent.ajaxSettings.url,\n code: '406'\n },\n files: null\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result_1, event, operation, targetPath);\n return;\n }\n if (typeof (result) === 'string') {\n result = JSON.parse(result);\n }\n parent.notify(events.afterRequest, { action: 'success' });\n var id = parent.expandedId ? parent.expandedId : parent.pathId[parent.pathId.length - 1];\n if (!isNOU(result.cwd) && (getValue('action', data) === 'read')) {\n result.cwd.name = (parent.pathId.length === 1) ? (parent.rootAliasName || result.cwd.name) : result.cwd.name;\n setValue('_fm_id', id, result.cwd);\n setValue(id, result.cwd, parent.feParent);\n if (!isNOU(result.files) || result.error.code === '401') {\n if ((event === 'finalize-end' || event === 'initial-end') && parent.pathNames.length === 0) {\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n parent.pathNames[0] = getValue('name', root);\n parent.hasId = !isNOU(getValue('id', root));\n }\n if (event === 'finalize-end') {\n generatePath(parent);\n }\n }\n }\n if (!isNOU(result.files)) {\n setDateObject(result.files);\n for (var i = 0, len = result.files.length; i < len; i++) {\n // eslint-disable-next-line\n var item = result.files[i];\n setValue('_fm_iconClass', fileType(item), item);\n }\n if (getValue('action', data) === 'read') {\n setNodeId(result, id);\n setValue(id, result.files, parent.feFiles);\n }\n }\n if (!isNOU(result.details) && !isNOU(parent.rootAliasName)) {\n var rootName = parent.rootAliasName || getValue('name', result.details);\n var location_1 = getValue('location', result.details).replace(new RegExp('/', 'g'), '\\\\');\n if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {\n if (getValue('names', data).length === 0) {\n setValue('name', rootName, result.details);\n location_1 = rootName;\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n setValue('location', location_1, result.details);\n }\n fn(parent, result, event, operation, targetPath);\n if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end')) {\n parent.notify(events.searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\n },\n onFailure: function () {\n var result = {\n files: null,\n error: {\n code: '404',\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.url,\n fileExists: null\n }\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath);\n }\n });\n ajax.send();\n }\n });\n}\n/**\n * Function for trigger Ajax failure in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the beforeSendArgs.\n * @param {Function} fn - specifies the function.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @returns {void}\n * @private\n */\nfunction triggerAjaxFailure(\n// eslint-disable-next-line\nparent, beforeSendArgs, fn, result, event, operation, targetPath) {\n parent.notify(events.afterRequest, { action: 'failure' });\n fn(parent, result, event, operation, targetPath);\n if (typeof getValue('onFailure', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onFailure', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function for read success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction readSuccess(parent, result, event) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n var args = { action: 'read', result: result };\n parent.trigger('success', args);\n }\n else {\n if (result.error.code === '401') {\n result.files = [];\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n }\n onFailure(parent, result, 'read');\n }\n if (parent.isDragDrop && parent.isDropEnd) {\n if (parent.droppedObjects.length !== 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n }\n parent.isDropEnd = parent.isDragDrop = false;\n }\n}\n/**\n * Function for filter success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction filterSuccess(parent, result, event, action) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: action, result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, action);\n }\n}\n/* istanbul ignore next */\n/**\n * Function for create success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction createSuccess(parent, result, itemName) {\n if (!isNOU(result.files)) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n parent.createdItem = result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\n var args = { action: 'create', result: result };\n parent.trigger('success', args);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.createEnd, parent.path);\n }\n else {\n if (result.error.code === '400') {\n if (parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#newname', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n else {\n var result_2 = {\n files: null,\n error: {\n code: '400',\n message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + itemName + '\"'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result_2);\n }\n var args = { action: 'create', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'create');\n }\n }\n}\n/* istanbul ignore next */\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path\n * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result, path) {\n if (!isNOU(result.files)) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n var args = { action: 'rename', result: result };\n parent.trigger('success', args);\n parent.renamedItem = result.files[0];\n if (parent.activeModule === 'navigationpane') {\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n read(parent, events.renameEndParent, getParentPath(parent.path));\n }\n else {\n parent.itemData = [getPathObject(parent)];\n if (parent.breadcrumbbarModule.searchObj.value !== '') {\n Search(parent, events.renameEnd, parent.path, parent.searchWord, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n else {\n if (parent.isFiltered) {\n filter(parent, events.renameEnd);\n }\n else {\n read(parent, events.renameEnd, parent.path);\n }\n }\n }\n }\n else {\n if (result.error.code === '400' && parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#rename', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '\"' + parent.currentItemText + '\"');\n error = error.replace('{1}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n var args = { action: 'rename', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'rename');\n }\n }\n}\n/* istanbul ignore next */\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction pasteSuccess(parent, result, path, operation) {\n if (result.error && result.error.fileExists) {\n parent.fileLength = 0;\n if (!isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n }\n createExtDialog(parent, 'DuplicateItems', result.error.fileExists);\n if (result.error.code === '404') {\n createDialog(parent, 'Error', result);\n }\n }\n else if (!result.error && !isNOU(result.files)) {\n parent.isPasteError = false;\n doPasteUpdate(parent, operation, result);\n }\n else if (result.error && !isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n createDialog(parent, 'Error', result);\n }\n else {\n onFailure(parent, result, operation);\n }\n}\n/**\n * Function to delete success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nfunction deleteSuccess(parent, result, path) {\n if (!isNOU(result.files)) {\n parent.setProperties({ path: path }, true);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.deleteEnd, parent.path);\n if (result.error) {\n onFailure(parent, result, 'delete');\n }\n else {\n var args = { action: 'delete', result: result };\n parent.trigger('success', args);\n }\n }\n else {\n onFailure(parent, result, 'delete');\n }\n}\n/**\n * Function for details success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction detailsSuccess(\n// eslint:disable-next-line\nparent, result, path, operation) {\n if (!isNOU(result.details)) {\n createDialog(parent, operation, null, result.details);\n var args = { action: 'details', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'details');\n }\n}\n/**\n * Function for on failure event in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction onFailure(parent, result, action) {\n createDialog(parent, 'Error', result);\n var args = { action: action, error: result.error };\n parent.trigger('failure', args);\n}\n/**\n * Function for search in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @param {string} searchString - specifies the search string.\n * @param {boolean} showHiddenItems - specifies the hidden items.\n * @param {boolean} caseSensitive - specifies the casing of search text.\n * @returns {void}\n * @private\n */\nexport function Search(\n// eslint:disable-next-line\nparent, event, path, searchString, showHiddenItems, caseSensitive) {\n // eslint-disable-next-line\n var data = {\n action: 'search', path: path, searchString: searchString, showHiddenItems: showHiddenItems, caseSensitive: caseSensitive,\n data: parent.itemData\n };\n createAjax(parent, data, searchSuccess, event);\n}\n/* istanbul ignore next */\n/**\n * Function for search success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction searchSuccess(parent, result, event) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: 'search', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'search');\n }\n}\n/* istanbul ignore next */\n/**\n * Function for download in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} items - specifies the items.\n * @returns {void}\n * @private\n */\nexport function Download(parent, path, items) {\n var downloadUrl = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;\n // eslint-disable-next-line\n var data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n var eventArgs = { data: data, cancel: false };\n parent.trigger('beforeDownload', eventArgs, function (downloadArgs) {\n if (!downloadArgs.cancel) {\n var form = createElement('form', {\n id: parent.element.id + '_downloadForm',\n attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }\n });\n var input = createElement('input', {\n id: parent.element.id + '_hiddenForm',\n attrs: { name: 'downloadInput', value: JSON.stringify(downloadArgs.data), type: 'hidden' }\n });\n form.appendChild(input);\n parent.element.appendChild(form);\n document.forms.namedItem('downloadForm').submit();\n parent.element.removeChild(form);\n }\n });\n}\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { select, isNullOrUndefined as isNOU, createElement, Internationalization } from '@syncfusion/ej2-base';\nimport { getValue, remove, selectAll } from '@syncfusion/ej2-base';\nimport { createFolder } from '../common/operations';\nimport * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { paste, rename } from '../common/operations';\nimport { getLocaleText, getDuplicateData, getParentPath, objectToString, getCssClass } from '../common/utility';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the type of event args.\n * @param {FileDetails} details - specifies the file details.\n * @param {string[]} replaceItems - specifies the replacement.\n * @returns {void}\n * @private\n */\nexport function createDialog(parent, text, e, details, replaceItems) {\n var options = getOptions(parent, text, e, details, replaceItems);\n if (isNOU(parent.dialogObj)) {\n parent.dialogObj = new Dialog({\n beforeOpen: keydownAction.bind(this, parent, options.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n },\n header: options.header,\n content: options.content,\n buttons: options.buttons,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n allowDragging: true,\n isModal: true,\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n width: '350px',\n open: options.open,\n close: options.close,\n enableRtl: parent.enableRtl,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.dialogObj.isStringTemplate = true;\n parent.dialogObj.appendTo('#' + parent.element.id + CLS.DIALOG_ID);\n }\n else {\n changeOptions(parent, options);\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {void}\n * @private\n */\nexport function createExtDialog(parent, text, replaceItems, newPath) {\n var extOptions = getExtOptions(parent, text, replaceItems, newPath);\n parent.isApplySame = false;\n if (isNOU(parent.extDialogObj)) {\n parent.extDialogObj = new Dialog({\n beforeOpen: beforeExtOpen.bind(this, parent, extOptions.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n },\n content: extOptions.content,\n header: extOptions.header,\n closeOnEscape: true,\n allowDragging: true,\n animationSettings: { effect: 'None' },\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n enableRtl: parent.enableRtl,\n showCloseIcon: true,\n isModal: true,\n width: 350,\n buttons: extOptions.buttons,\n open: extOptions.open,\n close: extOptions.close,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.extDialogObj.isStringTemplate = true;\n parent.extDialogObj.appendTo('#' + parent.element.id + CLS.EXTN_DIALOG_ID);\n }\n else {\n parent.extDialogObj.header = extOptions.header;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.open = extOptions.open;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.content = extOptions.content;\n parent.extDialogObj.buttons = extOptions.buttons;\n parent.extDialogObj.enableRtl = parent.enableRtl;\n parent.extDialogObj.locale = parent.locale;\n parent.extDialogObj.beforeOpen = beforeExtOpen.bind(this, parent, extOptions.dialogName);\n parent.extDialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n };\n parent.extDialogObj.dataBind();\n parent.extDialogObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {Dialog} dlgModule - Specifies the dialog module.\n * @param {BeforeOpenEventArgs} args - specifies the before open arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeOpen(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupName: dialogName, popupModule: dlgModule\n };\n parent.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {BeforeCloseEventArgs} args - specifies the before close event arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeClose(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupModule: dlgModule, popupName: dialogName\n };\n parent.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n if (!args.cancel && args.isInteracted && ((dialogName === 'Rename') || (dialogName === 'Create Folder'))) {\n parent.trigger(events.actionFailure, {});\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupOpen(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupOpen', args);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupClose(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupClose', args);\n}\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {DialogOptions} - returns the dialog options.\n * @private\n */\nfunction getExtOptions(parent, text, replaceItems, newPath) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var duplicateContent;\n var item;\n var index;\n options.open = function () { triggerPopupOpen(parent, parent.extDialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.extDialogObj, options.dialogName); };\n switch (text) {\n case 'Extension':\n options.header = getLocaleText(parent, 'Header-Rename-Confirmation');\n options.content = '<div>' + getLocaleText(parent, 'Content-Rename-Confirmation') + '</div>';\n options.buttons = [{\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.extDialogObj.hide();\n rename(parent, newPath, parent.renameText);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.extDialogObj.hide();\n parent.dialogObj.hide();\n }\n }];\n options.dialogName = 'Extension Change';\n break;\n case 'DuplicateItems':\n options.dialogName = 'Duplicate Items';\n parent.replaceItems = replaceItems;\n item = parent.replaceItems[parent.fileLength];\n index = item.lastIndexOf('/');\n item = index === -1 ? item : item.substring(index);\n options.header = getLocaleText(parent, 'Header-Duplicate');\n duplicateContent = '<div>' + getLocaleText(parent, 'Content-Duplicate') + '</div>';\n options.content = (duplicateContent).replace('{0}', item);\n options.close = function () {\n if (!parent.isDropEnd && parent.duplicateItems.length === 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n parent.isDropEnd = parent.isDragDrop = false;\n }\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.duplicateItems.push(parent.replaceItems[parent.fileLength]);\n parent.duplicateRecords.push(getDuplicateData(parent, parent.replaceItems[parent.fileLength]));\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_1 = parent.replaceItems[parent.fileLength];\n var indexval = item_1.lastIndexOf('/');\n item_1 = indexval === -1 ? item_1 : item_1.substring(indexval);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_1);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_2 = parent.replaceItems[parent.fileLength];\n var ind = item_2.lastIndexOf('/');\n item_2 = ind === -1 ? item_2 : item_2.substring(ind);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_2);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n if (parent.duplicateItems.length !== 0) {\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n }\n }\n ];\n break;\n case 'UploadRetry':\n options.dialogName = 'Retry Upload';\n options.header = getLocaleText(parent, 'Header-Retry');\n options.content = parent.retryFiles[0].name + '<div class=\"e-fe-retrycontent\">' +\n (getLocaleText(parent, 'Content-Retry')) + '</div>';\n options.open = onRetryOpen.bind(this, parent);\n options.close = function () {\n parent.isRetryOpened = false;\n retryDlgClose(parent);\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Keep-Both') },\n click: function () {\n retryDlgUpdate(parent, true);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Replace') },\n click: function () {\n retryDlgUpdate(parent, false);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Skip') },\n click: function () {\n var count = 0;\n if (parent.isApplySame) {\n count = parent.retryFiles.length;\n parent.retryFiles = [];\n retryDlgClose(parent);\n }\n else {\n count = 1;\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n parent.notify(events.skipUpload, { count: count });\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {boolean} isKeepBoth - checks the arguement to keep both.\n * @returns {void}\n * @private\n */\nfunction retryDlgUpdate(parent, isKeepBoth) {\n if (parent.isApplySame) {\n if (isKeepBoth) {\n onKeepBothAll(parent);\n }\n else {\n onReplaceAll(parent);\n }\n retryDlgClose(parent);\n }\n else {\n parent.retryArgs.push({\n action: isKeepBoth ? 'keepboth' : 'replace',\n file: parent.retryFiles[0]\n });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction retryDlgClose(parent) {\n var flag = true;\n if (parent.isRetryOpened) {\n parent.isRetryOpened = false;\n }\n else {\n flag = false;\n }\n var ele = select('.e-dlg-checkbox', parent.extDialogObj.element);\n if (ele) {\n remove(ele);\n }\n if (flag) {\n parent.extDialogObj.hide();\n }\n else {\n parent.retryFiles = [];\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {object} args - specifies the arguements.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nfunction onRetryOpen(parent, args) {\n parent.isRetryOpened = true;\n var dialogEle = getValue('element', args);\n var container = select('.e-dlg-content', dialogEle);\n var checkContainer = parent.createElement('div', {\n className: 'e-dlg-checkbox'\n });\n var checkbox = parent.createElement('input', {\n id: parent.element.id + '_applyall'\n });\n checkContainer.appendChild(checkbox);\n container.appendChild(checkContainer);\n var checkBoxObj = new CheckBox({\n label: getLocaleText(parent, 'ApplyAll-Label'),\n change: function (args) {\n parent.isApplySame = args.checked;\n }\n });\n checkBoxObj.appendTo('#' + parent.element.id + '_applyall');\n triggerPopupOpen(parent, parent.extDialogObj, 'Retry Upload');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onKeepBothAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'keepboth', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReplaceAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'replace', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction focusInput(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n ele.focus();\n ele.value = '';\n var len = ele.value.length;\n ele.setSelectionRange(0, len);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onFolderDialogOpen(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n if (!ele.parentElement.classList.contains('e-control-wrapper')) {\n createInput(ele, getLocaleText(parent, 'Content-NewFolder'));\n }\n ele.parentElement.nextElementSibling.innerHTML = '';\n ele.oninput = function () {\n onValidate(parent, ele);\n };\n ele.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onSubmit(parent);\n }\n };\n focusInput(parent);\n triggerPopupOpen(parent, parent.dialogObj, 'Create Folder');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onRenameDialogOpen(parent) {\n var inputEle = select('#rename', parent.dialogObj.element);\n if (!inputEle.parentElement.classList.contains('e-control-wrapper')) {\n createInput(inputEle, getLocaleText(parent, 'Content-Rename'));\n }\n inputEle.parentElement.nextElementSibling.innerHTML = '';\n inputEle.oninput = function () {\n onValidate(parent, inputEle);\n };\n inputEle.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onReSubmit(parent);\n }\n };\n onFocusRenameInput(parent, inputEle);\n triggerPopupOpen(parent, parent.dialogObj, 'Rename');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} inputEle - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onFocusRenameInput(parent, inputEle) {\n inputEle.focus();\n var txt = '';\n if (parent.isFile && !parent.showFileExtension) {\n var index = parent.currentItemText.lastIndexOf('.');\n txt = (index === -1) ? parent.currentItemText : parent.currentItemText.substring(0, index);\n }\n else {\n txt = parent.currentItemText;\n }\n inputEle.value = txt;\n if (parent.isFile && parent.showFileExtension && (inputEle.value.indexOf('.') !== -1)) {\n inputEle.setSelectionRange(0, inputEle.value.lastIndexOf('.'));\n }\n else {\n inputEle.setSelectionRange(0, inputEle.value.length);\n }\n}\n/**\n *\n * @param {HTMLInputElement} ele - specifies the element.\n * @param {string} placeholder - specifies the place holder.\n * @returns {void}\n * @private\n */\nfunction createInput(ele, placeholder) {\n Input.createInput({\n element: ele,\n properties: {\n placeholder: placeholder\n }\n });\n}\n/* istanbul ignore next */\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the event arguements.\n * @param {FileDetails} details - specifies the file details.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details, replaceItems) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var permission;\n var formattedString;\n var intl;\n var strArr;\n var fileType;\n var location;\n options.open = function () { triggerPopupOpen(parent, parent.dialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.dialogObj, options.dialogName); };\n text = (details && details.multipleFiles === true) ? 'MultipleFileDetails' : text;\n switch (text) {\n case 'NewFolder':\n options.dialogName = 'Create Folder';\n options.header = getLocaleText(parent, 'Header-NewFolder');\n options.content = '<input type=\"text\" value=\"New folder\" id=\"newname\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Create') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onSubmit(parent);\n }\n }\n ];\n options.open = onFolderDialogOpen.bind(this, parent);\n break;\n case 'Delete':\n options.dialogName = 'Delete';\n if (parent.selectedItems.length > 1) {\n options.content = ('<div>' + getLocaleText(parent, 'Content-Multiple-Delete') + '</div>')\n .replace('{0}', parent.selectedItems.length.toString());\n options.header = getLocaleText(parent, 'Header-Multiple-Delete');\n }\n else {\n options.content = '<div>' + getLocaleText(parent, parent.isFile ? 'Content-Delete' : 'Content-Folder-Delete') + '</div>';\n options.header = getLocaleText(parent, parent.isFile ? 'Header-Delete' : 'Header-Folder-Delete');\n }\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function (e) {\n onDeleteSubmit(parent);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Rename':\n options.dialogName = 'Rename';\n options.header = getLocaleText(parent, 'Header-Rename');\n options.content = '<input type=\"text\" class=\"e-input\" id=\"rename\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Save') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onReSubmit(parent);\n }\n }\n ];\n options.open = onRenameDialogOpen.bind(this, parent);\n break;\n case 'details':\n options.dialogName = 'File Details';\n intl = new Internationalization(parent.locale);\n formattedString = intl.formatDate(new Date(details.modified), { format: 'MMMM dd, yyyy HH:mm:ss' });\n permission = '';\n if (!isNOU(details.permission)) {\n permission = '<tr><td>' + getLocaleText(parent, 'Permission') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + objectToString(details.permission) + '</td></tr>';\n }\n options.header = details.name;\n options.content = '<table>' +\n '<tr><td>' + getLocaleText(parent, 'Type') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n (details.isFile ? 'File' : 'Folder') + '\">' + (details.isFile ? 'File' : 'Folder') + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + '</td><td><span class=\"' + CLS.VALUE + '\" title =\"' +\n details.size + '\">' + details.size + '</span></td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Location') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n details.location + '\">' + details.location + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Modified') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + formattedString + '</td></tr>'\n + permission + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n options.dialogName = 'File Details';\n strArr = details.name.split(',').map(function (val) {\n var index = val.indexOf('.') + 1;\n return (index === 0) ? 'Folder' : val.substr(index).replace(' ', '');\n });\n fileType = strArr.every(function (val, i, arr) { return val === arr[0]; }) ?\n ((strArr[0] === 'Folder') ? 'Folder' : strArr[0].toLocaleUpperCase() + ' Type') : 'Multiple Types';\n location = details.location;\n options.header = details.name;\n options.content = '<table><tr><td>' + getLocaleText(parent, 'Type')\n + ':</td><td class=\"' + CLS.VALUE + '\">' + fileType + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + ':</td><td>' +\n details.size + '<span class=\"' + CLS.VALUE + '\" title =\"' + details.size\n + '\"></span></td></tr>' + '<tr><td>' + getLocaleText(parent, 'Location') +\n ':</td><td class=\"' + CLS.VALUE + '\" title=\"' + location + '\">'\n + location + '</td></tr>' + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Error':\n parent.notify(events.actionFailure, {});\n options.dialogName = 'Error';\n if (e.error.code === '401') {\n options.header = '<span class=\"e-fe-icon e-fe-access-error\"></span><div class=\"e-fe-access-header\">' +\n getLocaleText(parent, 'Access-Denied') + '</div>';\n }\n else {\n options.header = getLocaleText(parent, 'Error');\n }\n options.content = '<div class=\"' + CLS.ERROR_CONTENT + '\">' + e.error.message + '</div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dialogName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction keydownAction(parent, dialogName, args) {\n var btnElement = selectAll('.e-btn', parent.dialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.dialogObj, args, dialogName);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dlgName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction beforeExtOpen(parent, dlgName, args) {\n var btnElement = selectAll('.e-btn', parent.extDialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.extDialogObj, args, dlgName);\n}\n/**\n *\n * @param {HTMLInputElement[]} btnElement - specifies the button element.\n * @returns {void}\n * @private\n */\nfunction preventKeydown(btnElement) {\n var _loop_1 = function (btnCount) {\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {SelectedEventArgs} data - specifies the data.\n * @returns {HTMLElement} - returns the HTML element.\n * @private\n */\nfunction getFilesName(data) {\n var parent = createElement('div', { id: 'uploadDialog' });\n var ulElement = createElement('ul');\n var filesData = data.isModified ? data.modifiedFilesData : data.filesData;\n for (var fileCount = 0; fileCount < filesData.length; fileCount++) {\n var liElement = createElement('li', { className: 'dialogFiles' });\n liElement.innerHTML = filesData[fileCount].name;\n ulElement.appendChild(liElement);\n }\n parent.appendChild(ulElement);\n var errorTag = createElement('div', { className: 'e-fe-error' });\n parent.appendChild(errorTag);\n return parent;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {DialogOptions} options - specifies the dialog options.\n * @returns {void}\n * @private\n */\nfunction changeOptions(parent, options) {\n parent.dialogObj.header = options.header;\n parent.dialogObj.content = options.content;\n parent.dialogObj.buttons = options.buttons;\n parent.dialogObj.enableRtl = parent.enableRtl;\n parent.dialogObj.open = options.open;\n parent.dialogObj.close = options.close;\n parent.dialogObj.beforeOpen = keydownAction.bind(this, parent, options.dialogName);\n parent.dialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n };\n parent.dialogObj.dataBind();\n parent.dialogObj.show();\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onSubmit(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n createFolder(parent, ele.value);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReSubmit(parent) {\n var ele = select('#rename', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n var text = ele.value;\n var oIndex = parent.currentItemText.lastIndexOf('.');\n if (parent.isFile && !parent.showFileExtension) {\n var extn = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n text += extn;\n }\n parent.renameText = text;\n if (parent.currentItemText === text) {\n parent.dialogObj.hide();\n return;\n }\n var newPath = (parent.activeModule === 'navigationpane') ? getParentPath(parent.path) : parent.path;\n parent.renamedId = getValue('id', parent.itemData[0]);\n if (parent.isFile) {\n var oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n var nIndex = text.lastIndexOf('.');\n var newExtension = (nIndex === -1) ? '' : text.substr(nIndex);\n if (parent.showFileExtension && oldExtension !== newExtension) {\n createExtDialog(parent, 'Extension', null, newPath);\n }\n else {\n rename(parent, newPath, text);\n }\n }\n else {\n rename(parent, newPath, text);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onDeleteSubmit(parent) {\n parent.dialogObj.hide();\n parent.notify(events.deleteInit, {});\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onValidate(parent, ele) {\n if (/[/\\\\|*?\"<>:]/.test(ele.value)) {\n addInvalid(parent, ele);\n }\n else if (ele.value === '') {\n ele.parentElement.nextElementSibling.innerHTML = getLocaleText(parent, 'Validation-Empty');\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = '';\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onSubmitValidate(parent, ele) {\n onValidate(parent, ele);\n var len = ele.value.length - 1;\n if (ele.value !== '' && ((ele.value.lastIndexOf('.') === len) || (ele.value.lastIndexOf(' ') === len)) &&\n (parent.showFileExtension || (parent.currentItemText.lastIndexOf('.') === -1))) {\n addInvalid(parent, ele);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction addInvalid(parent, ele) {\n var error = getLocaleText(parent, 'Validation-Invalid').replace('{0}', '\"' + ele.value + '\"');\n if (parent.enableHtmlSanitizer) {\n ele.parentElement.nextElementSibling.textContent = error;\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n}\n/**\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {number} - returns the key code.\n * @private\n */\nfunction getKeyCode(e) {\n var code;\n if (e.keyCode) {\n code = e.keyCode;\n }\n else if (e.which) {\n code = e.which;\n }\n else {\n code = e.charCode;\n }\n return code;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} header - specifies the header element.\n * @param {string} imageUrl - specifies the image URL.\n * @returns {void}\n * @private\n */\nexport function createImageDialog(parent, header, imageUrl) {\n var content = createElement('div', { className: 'e-image-wrap' });\n var image = createElement('img', { className: 'e-image', attrs: { src: imageUrl, alt: header } });\n content.appendChild(image);\n if (isNOU(parent.viewerObj)) {\n parent.viewerObj = new Dialog({\n header: header,\n content: content,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n isModal: true,\n width: '350px',\n height: '350px',\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: parent.locale,\n enableResize: true,\n allowDragging: true,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n position: { X: 'center', Y: 'center' },\n enableRtl: parent.enableRtl,\n open: openImage.bind(this, parent),\n close: function () { triggerPopupClose(parent, parent.viewerObj, 'Image Preview'); },\n beforeOpen: function (args) {\n triggerPopupBeforeOpen(parent, parent.viewerObj, args, 'Image Preview');\n },\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.viewerObj, args, 'Image Preview');\n },\n resizing: updateImage.bind(this, parent),\n resizeStop: updateImage.bind(this, parent)\n });\n parent.viewerObj.isStringTemplate = true;\n parent.viewerObj.appendTo('#' + parent.element.id + CLS.IMG_DIALOG_ID);\n }\n else {\n parent.viewerObj.refresh();\n parent.viewerObj.header = header;\n parent.viewerObj.content = content;\n parent.viewerObj.enableRtl = parent.enableRtl;\n parent.viewerObj.dataBind();\n parent.viewerObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction openImage(parent) {\n setTimeout(function () {\n if (parent.viewerObj) {\n parent.viewerObj.element.focus();\n }\n });\n updateImage(parent);\n triggerPopupOpen(parent, parent.viewerObj, 'Image Preview');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction updateImage(parent) {\n var content = select('.e-dlg-content', parent.viewerObj.element);\n var imgWrap = select('.e-image-wrap', parent.viewerObj.element);\n var cssObj = window.getComputedStyle(content, null);\n var paddingWidth = cssObj ? (2 * parseFloat(cssObj.paddingRight)) : 36;\n var paddingHeight = cssObj ? (2 * parseFloat(cssObj.paddingBottom)) : 20;\n imgWrap.style.width = (content.offsetWidth - paddingWidth) + 'px';\n imgWrap.style.height = (content.offsetHeight - paddingHeight) + 'px';\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar AjaxSettings = /** @class */ (function (_super) {\n __extends(AjaxSettings, _super);\n function AjaxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"downloadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"getImageUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"uploadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"url\", void 0);\n return AjaxSettings;\n}(ChildProperty));\nexport { AjaxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var toolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(toolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Search settings of the File Manager.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the columns in the details view of the file manager.\n */\nexport var columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120,\n template: '<span class=\"e-fe-text\">${name}</span>', customAttributes: { class: 'e-fe-grid-name' }\n },\n {\n field: '_fm_modified', headerText: 'DateModified', type: 'dateTime',\n format: 'MMMM dd, yyyy HH:mm', minWidth: 120, width: '190'\n },\n {\n field: 'size', headerText: 'Size', minWidth: 90, width: '110', template: '<span class=\"e-fe-size\">${size}</span>'\n }\n];\n/**\n * Specifies the grid settings of the File Manager.\n */\nvar DetailsViewSettings = /** @class */ (function (_super) {\n __extends(DetailsViewSettings, _super);\n function DetailsViewSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n __decorate([\n Property(columnArray)\n ], DetailsViewSettings.prototype, \"columns\", void 0);\n return DetailsViewSettings;\n}(ChildProperty));\nexport { DetailsViewSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nexport var folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nexport var layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nvar ContextMenuSettings = /** @class */ (function (_super) {\n __extends(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(fileItems)\n ], ContextMenuSettings.prototype, \"file\", void 0);\n __decorate([\n Property(folderItems)\n ], ContextMenuSettings.prototype, \"folder\", void 0);\n __decorate([\n Property(layoutItems)\n ], ContextMenuSettings.prototype, \"layout\", void 0);\n __decorate([\n Property(true)\n ], ContextMenuSettings.prototype, \"visible\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\nexport { ContextMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the navigationpane settings of the File Manager.\n */\nvar NavigationPaneSettings = /** @class */ (function (_super) {\n __extends(NavigationPaneSettings, _super);\n function NavigationPaneSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('650px')\n ], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('240px')\n ], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(true)\n ], NavigationPaneSettings.prototype, \"visible\", void 0);\n return NavigationPaneSettings;\n}(ChildProperty));\nexport { NavigationPaneSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar UploadSettings = /** @class */ (function (_super) {\n __extends(UploadSettings, _super);\n function UploadSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], UploadSettings.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(true)\n ], UploadSettings.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"autoClose\", void 0);\n __decorate([\n Property(0)\n ], UploadSettings.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], UploadSettings.prototype, \"maxFileSize\", void 0);\n return UploadSettings;\n}(ChildProperty));\nexport { UploadSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Interface for a class Column\n */\n/* istanbul ignore next */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"headerText\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"minWidth\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('Left')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTextAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customAttributes\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"hideAtMedia\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customFormat\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var TOOLBAR_ID = '_toolbar';\n/** @hidden */\nexport var LAYOUT_ID = '_layout';\n/** @hidden */\nexport var NAVIGATION_ID = '_navigation';\n/** @hidden */\nexport var TREE_ID = '_tree';\n/** @hidden */\nexport var GRID_ID = '_grid';\n/** @hidden */\nexport var LARGEICON_ID = '_largeicons';\n/** @hidden */\nexport var DIALOG_ID = '_dialog';\n/** @hidden */\nexport var ALT_DIALOG_ID = '_alt_dialog';\n/** @hidden */\nexport var IMG_DIALOG_ID = '_img_dialog';\n/** @hidden */\nexport var EXTN_DIALOG_ID = '_extn_dialog';\n/** @hidden */\nexport var UPLOAD_DIALOG_ID = '_upload_dialog';\n/** @hidden */\nexport var RETRY_DIALOG_ID = '_retry_dialog';\n/** @hidden */\nexport var CONTEXT_MENU_ID = '_contextmenu';\n/** @hidden */\nexport var SORTBY_ID = '_sortby';\n/** @hidden */\nexport var VIEW_ID = '_view';\n/** @hidden */\nexport var SPLITTER_ID = '_splitter';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var BREADCRUMBBAR_ID = '_breadcrumbbar';\n/** @hidden */\nexport var UPLOAD_ID = '_upload';\n/** @hidden */\nexport var RETRY_ID = '_retry';\n/** @hidden */\nexport var SEARCH_ID = '_search';\n/**\n * Specifies the File Manager internal class names\n */\n/** @hidden */\nexport var ROOT = 'e-filemanager';\n/** @hidden */\nexport var CONTROL = 'e-control';\n/** @hidden */\nexport var CHECK_SELECT = 'e-fe-cb-select';\n/** @hidden */\nexport var ROOT_POPUP = 'e-fe-popup';\n/** @hidden */\nexport var MOBILE = 'e-fe-mobile';\n/** @hidden */\nexport var MOB_POPUP = 'e-fe-popup e-fe-mobile';\n/** @hidden */\nexport var MULTI_SELECT = 'e-fe-m-select';\n/** @hidden */\nexport var FILTER = 'e-fe-m-filter';\n/** @hidden */\nexport var LAYOUT = 'e-layout';\n/** @hidden */\nexport var NAVIGATION = 'e-navigation';\n/** @hidden */\nexport var LAYOUT_CONTENT = 'e-layout-content';\n/** @hidden */\nexport var LARGE_ICONS = 'e-large-icons';\n/** @hidden */\nexport var TB_ITEM = 'e-toolbar-item';\n/** @hidden */\nexport var LIST_ITEM = 'e-list-item';\n/** @hidden */\nexport var LIST_TEXT = 'e-list-text';\n/** @hidden */\nexport var LIST_PARENT = 'e-list-parent';\n/** @hidden */\nexport var TB_OPTION_TICK = 'e-icons e-fe-tick';\n/** @hidden */\nexport var TB_OPTION_DOT = 'e-icons e-fe-dot';\n/** @hidden */\nexport var BLUR = 'e-blur';\n/** @hidden */\nexport var ACTIVE = 'e-active';\n/** @hidden */\nexport var HOVER = 'e-hover';\n/** @hidden */\nexport var FOCUS = 'e-focus';\n/** @hidden */\nexport var FOCUSED = 'e-focused';\n/** @hidden */\nexport var CHECK = 'e-check';\n/** @hidden */\nexport var FRAME = 'e-frame';\n/** @hidden */\nexport var CB_WRAP = 'e-checkbox-wrapper';\n/** @hidden */\nexport var ROW = 'e-row';\n/** @hidden */\nexport var ROWCELL = 'e-rowcell';\n/** @hidden */\nexport var EMPTY = 'e-empty';\n/** @hidden */\nexport var EMPTY_CONTENT = 'e-empty-content';\n/** @hidden */\nexport var EMPTY_INNER_CONTENT = 'e-empty-inner-content';\n/** @hidden */\nexport var CLONE = 'e-fe-clone';\n/** @hidden */\nexport var DROP_FOLDER = 'e-fe-drop-folder';\n/** @hidden */\nexport var DROP_FILE = 'e-fe-drop-file';\n/** @hidden */\nexport var FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var ICON_IMAGE = 'e-fe-image';\n/** @hidden */\nexport var ICON_MUSIC = 'e-fe-music';\n/** @hidden */\nexport var ICON_VIDEO = 'e-fe-video';\n/** @hidden */\nexport var LARGE_ICON = 'e-large-icon';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER = 'e-empty-icon e-fe-folder';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER_TWO = 'e-empty-icon.e-fe-folder';\n/** @hidden */\nexport var LARGE_ICON_FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var SELECTED_ITEMS = 'e-items';\n/** @hidden */\nexport var TEXT_CONTENT = 'e-text-content';\n/** @hidden */\nexport var GRID_HEADER = 'e-gridheader';\n/** @hidden */\nexport var TEMPLATE_CELL = 'e-templatecell';\n/** @hidden */\nexport var TREE_VIEW = 'e-treeview';\n/** @hidden */\nexport var MENU_ITEM = 'e-menu-item';\n/** @hidden */\nexport var MENU_ICON = 'e-menu-icon';\n/** @hidden */\nexport var SUBMENU_ICON = 'e-caret';\n/** @hidden */\nexport var GRID_VIEW = 'e-content';\n/** @hidden */\nexport var ICON_VIEW = 'e-list-parent';\n/** @hidden */\nexport var ICON_OPEN = 'e-icons e-fe-open';\n/** @hidden */\nexport var ICON_UPLOAD = 'e-icons e-fe-upload';\n/** @hidden */\nexport var ICON_CUT = 'e-icons e-fe-cut';\n/** @hidden */\nexport var ICON_COPY = 'e-icons e-fe-copy';\n/** @hidden */\nexport var ICON_PASTE = 'e-icons e-fe-paste';\n/** @hidden */\nexport var ICON_DELETE = 'e-icons e-fe-delete';\n/** @hidden */\nexport var ICON_RENAME = 'e-icons e-fe-rename';\n/** @hidden */\nexport var ICON_NEWFOLDER = 'e-icons e-fe-newfolder';\n/** @hidden */\nexport var ICON_DETAILS = 'e-icons e-fe-details';\n/** @hidden */\nexport var ICON_SHORTBY = 'e-icons e-fe-sort';\n/** @hidden */\nexport var ICON_REFRESH = 'e-icons e-fe-refresh';\n/** @hidden */\nexport var ICON_SELECTALL = 'e-icons e-fe-select';\n/** @hidden */\nexport var ICON_DOWNLOAD = 'e-icons e-fe-download';\n/** @hidden */\nexport var ICON_OPTIONS = 'e-icons e-fe-options';\n/** @hidden */\nexport var ICON_GRID = 'e-icons e-fe-grid';\n/** @hidden */\nexport var ICON_LARGE = 'e-icons e-fe-large';\n/** @hidden */\nexport var ICON_BREADCRUMB = 'e-icons e-fe-breadcrumb';\n/** @hidden */\nexport var ICON_CLEAR = 'e-icons e-fe-clear';\n/** @hidden */\nexport var ICON_DROP_IN = 'e-icons e-fe-drop-in';\n/** @hidden */\nexport var ICON_DROP_OUT = 'e-icons e-fe-drop-out';\n/** @hidden */\nexport var ICON_NO_DROP = 'e-icons e-fe-no-drop';\n/** @hidden */\nexport var ICONS = 'e-icons';\n/** @hidden */\nexport var DETAILS_LABEL = 'e-detailslabel';\n/** @hidden */\nexport var ERROR_CONTENT = 'e-fe-errorcontent';\n/** @hidden */\nexport var STATUS = 'e-status';\n/** @hidden */\nexport var BREADCRUMBS = 'e-address';\n/** @hidden */\nexport var RTL = 'e-rtl';\n/** @hidden */\nexport var DISPLAY_NONE = 'e-display-none';\n/** @hidden */\nexport var COLLAPSED = 'e-node-collapsed';\n/** @hidden */\nexport var FULLROW = 'e-fullrow';\n/** @hidden */\nexport var ICON_COLLAPSIBLE = 'e-icon-collapsible';\n/** @hidden */\nexport var SPLIT_BAR = 'e-split-bar';\n/** @hidden */\nexport var HEADER_CHECK = 'e-headercheck';\n/** @hidden */\nexport var OVERLAY = 'e-fe-overlay';\n/** @hidden */\nexport var VALUE = 'e-fe-value';\n","/**\n * Specifies the File Manager internal variables\n */\n/** @hidden */\nexport var isFile = 'isFile';\n/**\n * Specifies the File Manager internal events\n */\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var finalizeEnd = 'finalize-end';\n/** @hidden */\nexport var createEnd = 'create-end';\n/** @hidden */\nexport var filterEnd = 'filter-end';\n/** @hidden */\nexport var beforeDelete = 'before-delete';\n/** @hidden */\nexport var pathDrag = 'path-drag';\n/** @hidden */\nexport var deleteInit = 'delete-init';\n/** @hidden */\nexport var deleteEnd = 'delete-end';\n/** @hidden */\nexport var refreshEnd = 'refresh-end';\n/** @hidden */\nexport var resizeEnd = 'resize-end';\n/** @hidden */\nexport var splitterResize = 'splitter-resize';\n/** @hidden */\nexport var pathChanged = 'path-changed';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var beforeRequest = 'before-request';\n/** @hidden */\nexport var upload = 'upload';\n/** @hidden */\nexport var skipUpload = 'skip-upload';\n/** @hidden */\nexport var afterRequest = 'after-request';\n/** @hidden */\nexport var download = 'download';\n/** @hidden */\nexport var layoutRefresh = 'layout-refresh';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var search = 'search';\n/** @hidden */\nexport var openInit = 'open-init';\n/** @hidden */\nexport var openEnd = 'open-end';\n/** @hidden */\nexport var selectionChanged = 'selection-changed';\n/** @hidden */\nexport var selectAllInit = 'select-all-init';\n/** @hidden */\nexport var clearAllInit = 'clear-all-init';\n/** @hidden */\nexport var clearPathInit = 'clear-path-init';\n/** @hidden */\nexport var layoutChange = 'layout-change';\n/** @hidden */\nexport var sortByChange = 'sort-by-change';\n/** @hidden */\nexport var nodeExpand = 'node-expand';\n/** @hidden */\nexport var detailsInit = 'details-init';\n/** @hidden */\nexport var menuItemData = 'menu-item-data';\n/** @hidden */\nexport var renameInit = 'rename-init';\n/** @hidden */\nexport var renameEndParent = 'rename-end-parent';\n/** @hidden */\nexport var renameEnd = 'rename-end';\n/** @hidden */\nexport var showPaste = 'show-paste';\n/** @hidden */\nexport var hidePaste = 'hide-paste';\n/** @hidden */\nexport var selectedData = 'selected-data';\n/** @hidden */\nexport var cutCopyInit = 'cut-copy-init';\n/** @hidden */\nexport var pasteInit = 'paste-init';\n/** @hidden */\nexport var pasteEnd = 'paste-end';\n/** @hidden */\nexport var cutEnd = 'cut-end';\n/** @hidden */\nexport var hideLayout = 'hide-layout';\n/** @hidden */\nexport var updateTreeSelection = 'update-tree-selection';\n/** @hidden */\nexport var treeSelect = 'select-node';\n/** @hidden */\nexport var sortColumn = 'sort-column';\n/** @hidden */\nexport var pathColumn = 'path-column';\n/** @hidden */\nexport var searchTextChange = 'search-change';\n/** @hidden */\nexport var beforeDownload = 'before-download';\n/** @hidden */\nexport var downloadInit = 'download-init';\n/** @hidden */\nexport var dropInit = 'drop-init';\n/** @hidden */\nexport var dragEnd = 'drag-end';\n/** @hidden */\nexport var dropPath = 'drop-path';\n/** @hidden */\nexport var dragHelper = 'drag-helper';\n/** @hidden */\nexport var dragging = 'dragging';\n/** @hidden */\nexport var updateSelectionData = 'update-selection-data';\n/** @hidden */\nexport var methodCall = 'method-call';\n/** @hidden */\nexport var permissionRead = 'read';\n/** @hidden */\nexport var permissionEdit = 'write';\n/** @hidden */\nexport var permissionEditContents = 'writeContents';\n/** @hidden */\nexport var permissionCopy = 'copy';\n/** @hidden */\nexport var permissionUpload = 'upload';\n/** @hidden */\nexport var permissionDownload = 'download';\n","import { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, select, selectAll, EventHandler, KeyboardEvents, closest, Draggable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, addClass, removeClass, Touch, isVisible } from '@syncfusion/ej2-base';\nimport { getValue, setValue, remove } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { read, GetDetails, Delete } from '../common/operations';\nimport { doRename, getAccessClass, getPathObject, getFullPath, getDirectoryPath, rename, doDownload, getItemName } from '../common/index';\nimport { removeBlur, cutFiles, copyFiles, addBlur, openSearchFolder, removeActive, pasteHandler } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule } from '../common/index';\nimport { updateRenamingData, doDeleteFiles, doDownloadFiles } from '../common/index';\nimport { openAction, fileType, refresh, getImageUrl, getSortedData, createDeniedDialog, updateLayout } from '../common/utility';\nimport { createEmptyElement, hasReadAccess, hasEditAccess } from '../common/utility';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\n/**\n * LargeIconsView module\n */\nvar LargeIconsView = /** @class */ (function () {\n /**\n * Constructor for the LargeIcons module.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function LargeIconsView(parent) {\n this.isInteraction = true;\n this.uploadOperation = false;\n this.count = 0;\n this.isRendered = true;\n this.tapCount = 0;\n this.isPasteOperation = false;\n this.isInteracted = true;\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n addClass([this.element], CLS.LARGE_ICONS);\n this.addEventListener();\n this.keyConfigs = {\n end: 'end',\n home: 'home',\n tab: 'tab',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n ctrlUp: 'ctrl+uparrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftLeft: 'shift+leftarrow',\n shiftRight: 'shift+rightarrow',\n shiftUp: 'shift+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csLeft: 'ctrl+shift+leftarrow',\n csRight: 'ctrl+shift+rightarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: 'ctrl+x',\n ctrlC: 'ctrl+c',\n ctrlV: 'ctrl+v',\n f2: 'f2',\n shiftdel: 'shift+delete',\n back: 'backspace',\n ctrlD: 'ctrl+d'\n };\n }\n LargeIconsView.prototype.render = function (args) {\n this.parent.visitedItem = null;\n this.startItem = null;\n showSpinner(this.parent.element);\n if (this.parent.view === 'LargeIcons') {\n this.resetMultiSelect();\n this.element.setAttribute('tabindex', '0');\n if (this.listObj) {\n this.unWireEvents();\n this.removeEventListener();\n }\n this.parent.notify(events.hideLayout, {});\n var iconsView = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n var ul = select('ul', iconsView);\n if (ul) {\n remove(ul);\n }\n this.listObj = {\n ariaAttributes: {\n itemRole: 'option', listRole: 'listbox', itemText: '',\n groupItemRole: 'group', wrapperRole: ''\n },\n showIcon: true,\n fields: { text: 'name', iconCss: '_fm_icon', imageUrl: '_fm_imageUrl', htmlAttributes: '_fm_htmlAttr' },\n sortOrder: this.parent.sortOrder,\n itemCreated: this.onItemCreated.bind(this),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer\n };\n this.items = [];\n this.items = this.renderList(args);\n this.items = getSortedData(this.parent, this.items);\n // eslint-disable-next-line\n this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.listElements));\n this.element.appendChild(this.listElements);\n this.preventImgDrag();\n this.createDragObj();\n iconsView.classList.remove(CLS.DISPLAY_NONE);\n if (this.itemList.length === 0) {\n var emptyList = this.element.querySelector('.' + CLS.LIST_PARENT);\n this.element.removeChild(emptyList);\n createEmptyElement(this.parent, this.element, args);\n }\n else if (this.itemList.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n if (this.isPasteOperation === true) {\n this.selectItems(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n /* istanbul ignore next */\n if (this.uploadOperation === true) {\n this.selectItems(this.parent.uploadItem);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.count++;\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.parent.activeModule = 'largeiconsview';\n }\n for (var i = 0; i < activeEle.length; i++) {\n activeEle[i].setAttribute('aria-selected', 'true');\n }\n this.adjustHeight();\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\n };\n LargeIconsView.prototype.preventImgDrag = function () {\n var i = 0;\n while (i < this.itemList.length) {\n if (this.itemList[i].querySelector('img')) {\n /* istanbul ignore next */\n this.itemList[i].ondragstart = function () { return false; };\n }\n i++;\n }\n };\n LargeIconsView.prototype.createDragObj = function () {\n var _this = this;\n if (!this.parent.isMobile && this.listObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.listElements, {\n enableTailMode: true,\n distance: 5,\n enableAutoScroll: true,\n dragTarget: '.' + CLS.LARGE_ICON,\n helper: this.dragHelper.bind(this),\n cursorAt: this.parent.dragCursorPosition,\n dragArea: this.parent.element,\n dragStop: dragStopHandler.bind(this, this.parent),\n drag: draggingHandler.bind(this, this.parent),\n clone: true,\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n }\n });\n }\n else if (this.dragObj && !this.parent.allowDragAndDrop) {\n this.dragObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = closest(dragTarget, '.e-list-item');\n if (!dragLi) {\n return null;\n }\n if (dragLi && !dragLi.classList.contains('e-active')) {\n this.setFocus(dragLi);\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n for (var i = 0; i < activeEle.length; i++) {\n // eslint-disable-next-line\n this.parent.dragData.push(this.getItemObject(activeEle[i]));\n this.parent.activeElements.push(activeEle[i]);\n }\n getModule(this.parent, dragLi);\n this.parent.dragPath = this.parent.path;\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n LargeIconsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, '.e-list-item');\n // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n // eslint-disable-next-line\n var info = this.getItemObject(dropLi);\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n else {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n LargeIconsView.prototype.getModuleName = function () {\n return 'largeiconsview';\n };\n LargeIconsView.prototype.adjustHeight = function () {\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n this.element.style.height = (pane.offsetHeight - bar.offsetHeight) + 'px';\n };\n LargeIconsView.prototype.onItemCreated = function (args) {\n args.item.removeAttribute('aria-level');\n if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {\n var textEle = args.item.querySelector('.' + CLS.LIST_TEXT);\n var txt = getValue('name', args.curData);\n var type = getValue('type', args.curData);\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\n this.renderCheckbox(args);\n var eventArgs = {\n element: args.item,\n fileDetails: args.curData,\n module: 'LargeIconsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n LargeIconsView.prototype.renderCheckbox = function (args) {\n if (!this.parent.allowMultiSelection) {\n return;\n }\n var checkElement = createCheckBox(createElement, false, {\n checked: false,\n cssClass: 'e-small'\n });\n checkElement.setAttribute('role', 'checkbox');\n checkElement.setAttribute('aria-checked', 'false');\n args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);\n };\n LargeIconsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.destroy();\n this.render(args);\n /* istanbul ignore next */\n if (getValue('name', args) === 'layout-change' && this.parent.fileAction === 'move' &&\n this.parent.isCut && this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n var indexes = this.getIndexes(this.parent.selectedNodes);\n var length_1 = 0;\n while (length_1 < indexes.length) {\n addBlur(this.itemList[indexes[length_1]]);\n length_1++;\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.element.focus();\n }\n this.checkItem();\n this.parent.isLayoutChange = false;\n }\n else {\n this.element.setAttribute('tabindex', '-1');\n }\n };\n LargeIconsView.prototype.checkItem = function () {\n var checkEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (checkEle) {\n var checkLength = 0;\n while (checkLength < checkEle.length) {\n this.checkState(checkEle[checkLength], true);\n checkLength++;\n }\n }\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\n // eslint-disable-next-line\n var items = JSON.parse(JSON.stringify(args.files));\n while (i < items.length) {\n var icon = fileType(items[i]);\n var name_1 = getValue('name', items[i]);\n var selected = getItemName(this.parent, items[i]);\n var className = ((this.parent.selectedItems &&\n this.parent.selectedItems.indexOf(selected) !== -1)) ?\n CLS.LARGE_ICON + ' e-active' : CLS.LARGE_ICON;\n if (!hasEditAccess(items[i])) {\n className += ' ' + getAccessClass(items[i]);\n }\n if (icon === CLS.ICON_IMAGE && this.parent.showThumbnail && hasReadAccess(items[i])) {\n var imgUrl = getImageUrl(this.parent, items[i]);\n setValue('_fm_imageUrl', imgUrl, items[i]);\n setValue('_fm_imageAttr', { alt: name_1 }, items[i]);\n }\n else {\n setValue('_fm_icon', icon, items[i]);\n }\n setValue('_fm_htmlAttr', { class: className, title: name_1 }, items[i]);\n i++;\n }\n return items;\n };\n LargeIconsView.prototype.onFinalizeEnd = function (args) {\n this.render(args);\n };\n LargeIconsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.clearSelect();\n this.selectItems([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n this.parent.largeiconsviewModule.element.focus();\n };\n LargeIconsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n this.updateSelectedData();\n }\n };\n LargeIconsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.clearSelect();\n };\n LargeIconsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n };\n LargeIconsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'largeiconsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n LargeIconsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n /* istanbul ignore next */\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '') {\n this.parent.searchedItems = [];\n }\n if (this.parent.view === 'LargeIcons') {\n removeBlur(this.parent);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onLayoutChange(args);\n if (this.parent.renamedItem) {\n this.clearSelect();\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n }\n };\n LargeIconsView.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'largeiconsview') {\n this.doOpenAction(args.target);\n }\n };\n LargeIconsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'LargeIcons' && this.element) {\n this.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n LargeIconsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.startItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n var eveArgs = { ctrlKey: true, shiftKey: true };\n this.doSelection(lastItem, eveArgs);\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.clearSelection();\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n LargeIconsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onSearch = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n this.parent.searchedItems = args.files;\n this.onLayoutChange(args);\n }\n };\n LargeIconsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.adjustHeight();\n };\n LargeIconsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.updateSelectedData();\n };\n LargeIconsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'LargeIcons' && !isNOU(this.listObj) &&\n this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered\n && this.parent.sortBy === 'filterPath') {\n this.parent.sortBy = 'name';\n this.parent.notify(events.sortByChange, {});\n }\n };\n LargeIconsView.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.search, this.onSearch);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.splitterResize, this.splitterResizeHandler);\n this.parent.off(events.resizeEnd, this.resizeHandler);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n this.parent.off(events.filterEnd, this.onPathChanged);\n };\n LargeIconsView.prototype.addEventListener = function () {\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.search, this.onSearch, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.splitterResize, this.splitterResizeHandler, this);\n this.parent.on(events.resizeEnd, this.resizeHandler, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n };\n LargeIconsView.prototype.onActionFailure = function () { this.isInteraction = true; this.isInteracted = true; };\n // eslint-disable-next-line\n LargeIconsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var ele = closest(args.target, 'li');\n this.parent.itemData = [this.getItemObject(ele)];\n }\n };\n LargeIconsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.updateSelectedData();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n LargeIconsView.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath === '') ? [getPathObject(this.parent)] :\n [this.getItemObject(select('.e-active', this.element))];\n }\n };\n LargeIconsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeRecords = [];\n this.parent.activeElements = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.activeElements.push(activeEle[i]);\n this.parent.activeRecords.push(this.getItemObject(activeEle[i]));\n }\n }\n };\n LargeIconsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {\n this.onPathChanged(args);\n }\n }\n };\n LargeIconsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n LargeIconsView.prototype.onPropertyChanged = function (e) {\n var currentSelected;\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'selectedItems':\n this.isInteraction = false;\n this.isInteracted = false;\n currentSelected = isNOU(this.parent.selectedItems) ? [] : this.parent.selectedItems.slice(0);\n currentSelected = this.parent.allowMultiSelection ? currentSelected :\n currentSelected.slice(currentSelected.length - 1);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onClearAllInit();\n if (currentSelected.length) {\n this.selectItems(currentSelected);\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n this.isInteraction = true;\n this.isInteracted = true;\n break;\n case 'showThumbnail':\n refresh(this.parent);\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (this.parent.view !== 'LargeIcons') {\n break;\n }\n refresh(this.parent);\n break;\n case 'view':\n updateLayout(this.parent, 'LargeIcons');\n break;\n }\n }\n };\n LargeIconsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.listObj) {\n this.unWireEvents();\n }\n };\n LargeIconsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n };\n LargeIconsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onMouseOver = function (e) {\n var targetEle = closest(e.target, '.e-list-item');\n removeBlur(this.parent, 'hover');\n if (targetEle !== null) {\n targetEle.classList.add(CLS.HOVER);\n }\n };\n LargeIconsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n eve.originalEvent.preventDefault();\n if (proxy_1.parent.isDevice) {\n proxy_1.tapCount = eve.tapCount;\n proxy_1.tapEvent = eve;\n setTimeout(function () {\n if (proxy_1.tapCount > 0) {\n proxy_1.doTapAction(proxy_1.tapEvent);\n }\n proxy_1.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n proxy_1.dblClickHandler(eve);\n }\n else {\n proxy_1.clickHandler(eve);\n }\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n proxy_1.multiSelect = proxy_1.parent.allowMultiSelection ? true : false;\n if (proxy_1.parent.allowMultiSelection) {\n addClass([proxy_1.parent.element], CLS.MULTI_SELECT);\n }\n proxy_1.clickHandler(e);\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.doTapAction = function (eve) {\n var target = eve.originalEvent.target;\n var item = closest(target, '.' + CLS.LIST_ITEM);\n if (this.multiSelect || target.classList.contains(CLS.LIST_PARENT) || isNOU(item)) {\n this.clickHandler(eve);\n }\n else {\n this.parent.isFile = false;\n this.updateType(item);\n if (!this.parent.isFile) {\n this.dblClickHandler(eve);\n }\n else if (eve.tapCount === 2) {\n this.clickHandler(eve);\n this.dblClickHandler(eve);\n }\n else {\n this.clickHandler(eve);\n }\n }\n };\n LargeIconsView.prototype.clickHandler = function (e) {\n var target = e.originalEvent.target;\n removeBlur(this.parent, 'hover');\n this.doSelection(target, e.originalEvent);\n this.parent.activeModule = 'largeiconsview';\n };\n /**\n *\n * @param {Element} target - specifies the target element.\n * @param {TouchEventArgs | MouseEventArgs | KeyboardEventArgs} e - specifies event arguements.\n * @returns {void}\n * @hidden\n */\n LargeIconsView.prototype.doSelection = function (target, e) {\n var item = closest(target, '.' + CLS.LIST_ITEM);\n var cList = target.classList;\n this.parent.isFile = false;\n var action = 'select';\n if (e.which === 3 && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {\n this.updateType(item);\n return;\n }\n else if (!isNOU(item)) {\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)\n && (e.ctrlKey || target.classList.contains(CLS.CHECK))) {\n action = 'unselect';\n }\n var fileSelectionArgs = this.triggerSelection(action, item);\n if (fileSelectionArgs.cancel !== true) {\n if ((!this.parent.allowMultiSelection || (!this.multiSelect && (e && !e.ctrlKey)))\n && !cList.contains(CLS.FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey) {\n if (!(e && e.ctrlKey)) {\n this.clearSelect();\n }\n if (!this.startItem) {\n this.startItem = item;\n }\n var startIndex = this.itemList.indexOf(this.startItem);\n var endIndex = this.itemList.indexOf(item);\n if (startIndex > endIndex) {\n for (var i = startIndex; i >= endIndex; i--) {\n this.addActive(this.itemList[i]);\n }\n }\n else {\n for (var i = startIndex; i <= endIndex; i++) {\n this.addActive(this.itemList[i]);\n }\n }\n this.addFocus(this.itemList[endIndex]);\n }\n else {\n this.startItem = item;\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)) {\n this.removeActive(item);\n }\n else {\n this.addActive(item);\n }\n this.addFocus(item);\n }\n if (this.parent.selectedItems.length === 0) {\n this.resetMultiSelect();\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect(action, item);\n }\n }\n else {\n this.clearSelection();\n }\n if (!isNOU(item)) {\n this.updateType(item);\n }\n };\n LargeIconsView.prototype.dblClickHandler = function (e) {\n this.parent.activeModule = 'largeiconsview';\n var target = e.originalEvent.target;\n this.doOpenAction(target);\n };\n LargeIconsView.prototype.clearSelection = function () {\n this.clearSelect();\n this.resetMultiSelect();\n this.parent.notify(events.selectionChanged, {});\n };\n LargeIconsView.prototype.resetMultiSelect = function () {\n this.multiSelect = false;\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n };\n LargeIconsView.prototype.doOpenAction = function (target) {\n var _this = this;\n if (isNOU(target)) {\n return;\n }\n var item = closest(target, '.' + CLS.LIST_ITEM);\n this.parent.isFile = false;\n if (!isNOU(item)) {\n this.updateType(item);\n // eslint-disable-next-line\n var details_1 = this.getItemObject(item);\n if (!hasReadAccess(details_1)) {\n createDeniedDialog(this.parent, details_1, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: details_1, module: 'LargeIconsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var text = getValue('name', details_1);\n if (!_this.parent.isFile) {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', details_1);\n var newPath = _this.parent.path + (isNOU(id) ? text : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(text);\n _this.parent.pathId.push(getValue('_fm_id', details_1));\n _this.parent.itemData = [details_1];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, details_1);\n }\n _this.parent.isFiltered = false;\n _this.parent.setProperties({ selectedItems: [] }, true);\n }\n else {\n var icon = fileType(details_1);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, details_1);\n createImageDialog(_this.parent, text, imgUrl);\n }\n }\n }\n });\n }\n };\n LargeIconsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n LargeIconsView.prototype.keydownActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'moveDown':\n case 'moveLeft':\n case 'moveRight':\n case 'moveUp':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n LargeIconsView.prototype.keyActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n var fItem = this.getFocusedItem();\n var firstItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n switch (e.action) {\n case 'end':\n this.navigateItem(lastItem);\n break;\n case 'home':\n this.navigateItem(firstItem);\n break;\n case 'tab':\n if (!isNOU(fItem)) {\n this.addFocus(fItem);\n }\n else if (!isNOU(firstItem)) {\n this.addFocus(firstItem);\n }\n break;\n case 'moveDown':\n this.navigateDown(fItem, true);\n break;\n case 'moveLeft':\n this.navigateRight(fItem, false);\n break;\n case 'moveRight':\n this.navigateRight(fItem, true);\n break;\n case 'moveUp':\n this.navigateDown(fItem, false);\n break;\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n this.csEndKey(lastItem, e);\n break;\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n this.csHomeKey(firstItem, e);\n break;\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n this.csDownKey(fItem, e);\n break;\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n this.csLeftKey(fItem, e);\n break;\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n this.csRightKey(fItem, e);\n break;\n case 'ctrlUp':\n case 'shiftUp':\n case 'csUp':\n this.csUpKey(fItem, e);\n break;\n case 'space':\n this.spaceKey(fItem);\n break;\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n if (!isNOU(fItem)) {\n this.doSelection(fItem, e);\n }\n break;\n case 'ctrlA':\n this.ctrlAKey(firstItem, lastItem);\n break;\n case 'enter':\n this.doOpenAction(this.parent.visitedItem ? this.parent.visitedItem : this.getVisitedItem());\n break;\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n }\n };\n LargeIconsView.prototype.doDownload = function () {\n this.updateSelectedData();\n doDownload(this.parent);\n };\n LargeIconsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.updateSelectedData();\n // eslint-disable-next-line\n var data = this.parent.itemData;\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(this.parent, data[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n LargeIconsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n LargeIconsView.prototype.updateRenameData = function () {\n var item = select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n updateRenamingData(this.parent, data);\n };\n LargeIconsView.prototype.getVisitedItem = function () {\n var item = this.parent.selectedItems[this.parent.selectedItems.length - 1];\n var indexes = this.getIndexes([item], this.parent.hasId);\n return this.itemList[indexes[0]];\n };\n LargeIconsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.FOCUS, this.element);\n };\n LargeIconsView.prototype.getActiveItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n };\n LargeIconsView.prototype.getFirstItem = function () {\n return this.itemList[0];\n };\n LargeIconsView.prototype.getLastItem = function () {\n return this.itemList[this.itemList.length - 1];\n };\n LargeIconsView.prototype.navigateItem = function (item) {\n this.setFocus(item);\n };\n LargeIconsView.prototype.navigateDown = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards, this.perRow);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.navigateRight = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.getNextItem = function (li, isTowards, perRow) {\n if (isNOU(li)) {\n return this.getFocusedItem() || this.getActiveItem() || this.getFirstItem();\n }\n var index = this.itemList.indexOf(li);\n var nextItem;\n do {\n if (isTowards) {\n index = perRow ? index + perRow : index + 1;\n }\n else {\n index = perRow ? index - perRow : index - 1;\n }\n nextItem = this.itemList[index];\n if (isNOU(nextItem)) {\n return li;\n }\n } while (!isVisible(nextItem));\n return nextItem;\n };\n LargeIconsView.prototype.setFocus = function (nextItem) {\n if (!isNOU(nextItem)) {\n var fileSelectionArgs = this.triggerSelection('select', nextItem);\n if (fileSelectionArgs.cancel !== true) {\n this.startItem = nextItem;\n this.clearSelect();\n this.addActive(nextItem);\n this.addFocus(nextItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', nextItem);\n }\n }\n };\n LargeIconsView.prototype.spaceKey = function (fItem) {\n if (!isNOU(fItem) && !fItem.classList.contains(CLS.ACTIVE)) {\n var fileSelectionArgs = this.triggerSelection('select', fItem);\n if (fileSelectionArgs.cancel !== true) {\n this.addActive(fItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', fItem);\n }\n }\n };\n LargeIconsView.prototype.ctrlAKey = function (firstItem, lastItem) {\n if (this.parent.allowMultiSelection && !isNOU(firstItem)) {\n this.startItem = firstItem;\n var eveArgs = { ctrlKey: true, shiftKey: true };\n var liParent = this.element.querySelector('.' + CLS.LIST_PARENT);\n var liScrPos = liParent.scrollTop;\n var getCurFocusedItem = this.getFocusedItem();\n this.doSelection(lastItem, eveArgs);\n liParent.scrollTop = liScrPos;\n if (!isNOU(getCurFocusedItem)) {\n this.addFocus(getCurFocusedItem);\n }\n }\n };\n LargeIconsView.prototype.csEndKey = function (lastItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(lastItem);\n }\n else if (!isNOU(lastItem)) {\n if (e.action === 'ctrlEnd') {\n this.addFocus(lastItem);\n }\n else {\n this.doSelection(lastItem, e);\n }\n }\n };\n LargeIconsView.prototype.csHomeKey = function (firstItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(firstItem);\n }\n else if (!isNOU(firstItem)) {\n if (e.action === 'ctrlHome') {\n this.addFocus(firstItem);\n }\n else {\n this.doSelection(firstItem, e);\n }\n }\n };\n LargeIconsView.prototype.csDownKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, true);\n }\n else {\n var dItem = this.getNextItem(fItem, true, this.perRow);\n if (!isNOU(dItem)) {\n if (e.action === 'ctrlDown') {\n this.addFocus(dItem);\n }\n else {\n this.doSelection(dItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csLeftKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, false);\n }\n else {\n var lItem = this.getNextItem(fItem, false);\n if (!isNOU(lItem)) {\n if (e.action === 'ctrlLeft') {\n this.addFocus(lItem);\n }\n else {\n this.doSelection(lItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csRightKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, true);\n }\n else {\n var rItem = this.getNextItem(fItem, true);\n if (!isNOU(rItem)) {\n if (e.action === 'ctrlRight') {\n this.addFocus(rItem);\n }\n else {\n this.doSelection(rItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csUpKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, false);\n }\n else {\n var uItem = this.getNextItem(fItem, false, this.perRow);\n if (!isNOU(uItem)) {\n if (e.action === 'ctrlUp') {\n this.addFocus(uItem);\n }\n else {\n this.doSelection(uItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.addActive = function (nextItem) {\n if (!isNOU(nextItem)) {\n if (!nextItem.classList.contains(CLS.ACTIVE)) {\n this.parent.selectedItems.push(this.getDataName(nextItem));\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n addClass([nextItem], [CLS.ACTIVE]);\n nextItem.setAttribute('aria-selected', 'true');\n this.checkState(nextItem, true);\n }\n this.parent.visitedItem = nextItem;\n }\n };\n LargeIconsView.prototype.removeActive = function (preItem) {\n if (!isNOU(preItem)) {\n removeClass([preItem], [CLS.ACTIVE]);\n if (this.parent.allowMultiSelection) {\n preItem.setAttribute('aria-selected', 'false');\n }\n else {\n preItem.removeAttribute('aria-selected');\n }\n this.checkState(preItem, false);\n var index = this.parent.selectedItems.indexOf(this.getDataName(preItem));\n if (index > -1) {\n this.parent.selectedItems.splice(index, 1);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n this.parent.visitedItem = null;\n }\n };\n LargeIconsView.prototype.getDataName = function (item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n return getItemName(this.parent, data);\n };\n LargeIconsView.prototype.addFocus = function (item) {\n this.element.setAttribute('tabindex', '-1');\n var fItem = this.getFocusedItem();\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS]);\n }\n addClass([item], [CLS.FOCUS]);\n item.setAttribute('tabindex', '0');\n item.focus();\n };\n LargeIconsView.prototype.checkState = function (item, toCheck) {\n if (!this.parent.allowMultiSelection) {\n return;\n }\n var checkEle = select('.' + CLS.FRAME, item);\n if (isNOU(checkEle)) {\n return;\n }\n if (toCheck) {\n if (!checkEle.classList.contains(CLS.CHECK)) {\n addClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'true');\n }\n }\n else {\n if (checkEle.classList.contains(CLS.CHECK)) {\n removeClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'false');\n }\n }\n };\n LargeIconsView.prototype.clearSelect = function () {\n var eles = Array.prototype.slice.call(selectAll('.' + CLS.ACTIVE, this.listElements));\n var fileSelectionArgs;\n if (eles.length !== 0) {\n fileSelectionArgs = this.triggerSelection('unselect', eles[0]);\n if (fileSelectionArgs.cancel !== true) {\n for (var i = 0, len = eles.length; i < len; i++) {\n this.removeActive(eles[i]);\n }\n }\n this.triggerSelect('unselect', eles[0]);\n }\n };\n LargeIconsView.prototype.resizeHandler = function () {\n this.getItemCount();\n if (!isNOU(this.listObj)) {\n this.adjustHeight();\n }\n };\n LargeIconsView.prototype.splitterResizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.getItemCount = function () {\n var perRow = 1;\n if (this.itemList) {\n for (var i = 0, len = this.itemList.length - 1; i < len; i++) {\n if (this.itemList[i].getBoundingClientRect().top === this.itemList[i + 1].getBoundingClientRect().top) {\n perRow++;\n }\n else {\n break;\n }\n }\n }\n this.perRow = perRow;\n };\n LargeIconsView.prototype.triggerSelection = function (action, item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n var eventArgs = {\n action: action, fileDetails: data, isInteracted: this.isInteraction, cancel: false, target: item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n };\n LargeIconsView.prototype.triggerSelect = function (action, item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n this.parent.visitedData = data;\n var eventArgs = { action: action, fileDetails: data, isInteracted: this.isInteracted };\n this.parent.trigger('fileSelect', eventArgs);\n this.isInteracted = true;\n };\n LargeIconsView.prototype.selectItems = function (items) {\n var indexes = this.getIndexes(items, this.parent.hasId);\n for (var j = 0, len = indexes.length; j < len; j++) {\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[indexes[j]], eveArgs);\n }\n };\n LargeIconsView.prototype.getIndexes = function (items, byId) {\n var indexes = [];\n var filter = byId ? 'id' : 'name';\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filter, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n return indexes;\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var newData = new DataManager(this.items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (newData.length > 0) {\n resultData = new DataManager(newData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n var index = this.items.indexOf(resultData[0]);\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[index], eveArgs);\n }\n };\n LargeIconsView.prototype.updateSelectedData = function () {\n // eslint-disable-next-line\n var data = [];\n var items = selectAll('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n for (var i = 0; i < items.length; i++) {\n data[i] = this.getItemObject(items[i]);\n }\n this.parent.itemData = data;\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.onMethodCall = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n var action = getValue('action', args);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', args));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', args));\n break;\n case 'openFile':\n this.openFile(getValue('id', args));\n break;\n case 'renameFile':\n this.isInteraction = false;\n this.isInteracted = false;\n this.renameFile(getValue('id', args), getValue('newName', args));\n break;\n case 'createFolder':\n this.isInteraction = false;\n this.isInteracted = false;\n break;\n case 'clearSelection':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onClearAllInit();\n break;\n case 'selectAll':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onSelectAllInit();\n break;\n }\n };\n LargeIconsView.prototype.getItemsIndex = function (items) {\n var indexes = [];\n var isFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filterName = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !isFilter) {\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filterName, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n }\n else {\n for (var i = 0, len = this.items.length; i < len; i++) {\n var name_2 = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);\n if (items.indexOf(name_2) !== -1) {\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 = getLocaleText(this.parent, 'Search') + ' ' + args.cwd.name;\n };\n return BreadCrumbBar;\n}());\nexport { BreadCrumbBar };\n","import { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, createElement, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, select } from '@syncfusion/ej2-base';\nimport { Download, GetDetails } from './../common/operations';\nimport { createDialog } from './dialog';\nimport { cutFiles, copyFiles, refresh, getPathObject, getLocaleText, updateLayout, getFullPath } from './../common/utility';\nimport { getCssClass, sortbyClickHandler, pasteHandler } from './../common/utility';\nimport { createDeniedDialog, createNewFolder, uploadItem, hasEditAccess, hasDownloadAccess } from './../common/utility';\nimport * as events from './../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * ContextMenu module\n */\nvar ContextMenu = /** @class */ (function () {\n /**\n * Constructor for the ContextMenu module\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @hidden\n */\n function ContextMenu(parent) {\n this.currentItems = [];\n this.currentElement = null;\n this.disabledItems = [];\n this.parent = parent;\n this.render();\n }\n ContextMenu.prototype.render = function () {\n this.keyConfigs = {\n downarrow: 'downarrow',\n uparrow: 'uparrown'\n };\n this.contextMenu = new Menu({\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n target: '#' + this.parent.element.id,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.onBeforeItemRender.bind(this),\n select: this.onSelect.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this),\n cssClass: getCssClass(this.parent, CLS.ROOT_POPUP)\n });\n this.contextMenu.isStringTemplate = true;\n this.contextMenu.appendTo('#' + this.parent.element.id + CLS.CONTEXT_MENU_ID);\n this.addEventListener();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeItemRender = function (args) {\n if (args.item.id === this.getMenuId('largeiconsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'LargeIcons' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_LARGE + ' ' + CLS.MENU_ICON);\n }\n if (args.item.id === this.getMenuId('detailsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'Details' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_GRID + ' ' + CLS.MENU_ICON);\n }\n };\n ContextMenu.prototype.onBeforeClose = function () {\n this.menuTarget = null;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeOpen = function (args) {\n var _this = this;\n this.disabledItems = [];\n var selected = false;\n var uid;\n // eslint-disable-next-line\n var data;\n var treeFolder = false;\n var target = args.event.target;\n this.menuTarget = 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 = target;\n }\n if (target.classList.contains(CLS.FULLROW)) {\n this.parent.selectedItems.length = 0;\n }\n this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr') : target;\n var view = this.getTargetView(target);\n this.updateActiveModule();\n /* istanbul ignore next */\n if (target.classList.contains(CLS.TREE_VIEW) || closest(target, 'th') ||\n (closest(target, '#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID)) ||\n (closest(target, '#' + this.parent.element.id + CLS.TOOLBAR_ID))) {\n args.cancel = true;\n // eslint:disable-next-line\n }\n else if (!(this.parent.view === 'LargeIcons') && this.targetElement &&\n this.targetElement.classList.contains('e-emptyrow')) {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else if (closest(target, '.' + CLS.EMPTY)) {\n this.setLayoutItem(target);\n // eslint:disable-next-line\n }\n else if (!target.classList.contains(CLS.MENU_ITEM) &&\n !target.classList.contains(CLS.MENU_ICON) && !target.classList.contains(CLS.SUBMENU_ICON)) {\n /* istanbul ignore next */\n // eslint:disable-next-line\n if (this.parent.view === 'LargeIcons' && !isNOU(closest(target, 'li')) && !closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n var eveArgs = { ctrlKey: true, shiftKey: true };\n if (!closest(target, 'li').classList.contains('e-active')) {\n this.parent.largeiconsviewModule.doSelection(target, eveArgs);\n }\n // eslint-disable-next-line\n data = this.parent.visitedData;\n selected = true;\n }\n else if (!isNOU(closest(target, 'tr'))) {\n uid = this.targetElement.getAttribute('data-uid');\n // eslint-disable-next-line\n data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;\n if (isNOU(this.targetElement.getAttribute('aria-selected'))) {\n /* istanbul ignore next */\n this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('aria-rowindex'), 10)]);\n }\n selected = true;\n /* istanbul ignore next */\n }\n else if (closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n uid = closest(target, 'li').getAttribute('data-uid');\n treeFolder = true;\n }\n /* istanbul ignore next */\n if (selected) {\n if (getValue('isFile', data) === true) {\n this.setFileItem();\n }\n else {\n this.setFolderItem(false);\n }\n /* istanbul ignore next */\n }\n else if (treeFolder) {\n this.setFolderItem(true);\n if (uid === this.parent.pathId[0]) {\n this.disabledItems.push('Delete', 'Rename', 'Cut', 'Copy');\n }\n /* istanbul ignore next */\n // eslint:disable-next-line\n }\n else if (view === 'TreeView' || view === 'GridView' || view === 'LargeIcon') {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else {\n args.cancel = true;\n }\n }\n var pasteEle = select('#' + this.getMenuId('Paste'), this.contextMenu.element);\n if (!args.cancel && !this.parent.enablePaste &&\n pasteEle && !pasteEle.classList.contains('e-disabled')) {\n this.disabledItems.push('Paste');\n }\n if (args.cancel) {\n this.menuTarget = this.currentElement = null;\n return;\n }\n this.contextMenu.dataBind();\n var isSubMenu = false;\n if (target.classList.contains(CLS.MENU_ITEM) ||\n target.classList.contains(CLS.MENU_ICON) || target.classList.contains(CLS.SUBMENU_ICON)) {\n isSubMenu = true;\n }\n this.menuItemData = isSubMenu ? this.menuItemData : this.getMenuItemData();\n var eventArgs = {\n fileDetails: [this.menuItemData],\n element: args.element,\n target: target,\n items: isSubMenu ? args.items : this.contextMenu.items,\n menuModule: this.contextMenu,\n cancel: false,\n menuType: this.menuType,\n isSubMenu: isSubMenu\n };\n this.currentItems = eventArgs.items;\n this.parent.trigger('menuOpen', eventArgs, function (menuOpenArgs) {\n if (!isSubMenu) {\n _this.contextMenu.dataBind();\n _this.contextMenu.items = menuOpenArgs.items;\n _this.contextMenu.dataBind();\n }\n _this.enableItems(_this.disabledItems, false, true);\n args.cancel = menuOpenArgs.cancel;\n if (menuOpenArgs.cancel) {\n _this.menuTarget = _this.currentElement = null;\n }\n });\n };\n ContextMenu.prototype.updateActiveModule = function () {\n this.parent.activeModule = closest(this.menuTarget, '#' + this.parent.element.id + CLS.TREE_ID) ?\n 'navigationpane' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.GRID_ID) ?\n 'detailsview' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.LARGEICON_ID) ?\n 'largeiconsview' : this.parent.activeModule;\n };\n /* istanbul ignore next */\n /**\n *\n * @param {Element} target - specifies the target element.\n * @returns {string} -returns the target view.\n * @hidden\n */\n ContextMenu.prototype.getTargetView = function (target) {\n return target.classList.contains(CLS.TREE_VIEW) ?\n 'TreeView' : target.classList.contains(CLS.GRID_VIEW) ?\n 'GridView' : target.classList.contains(CLS.ICON_VIEW) ?\n 'LargeIcon' : target.classList.contains(CLS.LARGE_ICONS) ?\n 'LargeIcon' : '';\n };\n ContextMenu.prototype.getItemIndex = function (item) {\n var itemId = this.getMenuId(item);\n for (var i = 0; i < this.currentItems.length; i++) {\n if ((this.currentItems[i].id === itemId) || (this.currentItems[i].id === item)) {\n return i;\n }\n }\n return -1;\n };\n ContextMenu.prototype.disableItem = function (items) {\n if (items.length !== 0) {\n this.disabledItems = this.disabledItems.concat(items);\n }\n };\n ContextMenu.prototype.enableItems = function (items, enable, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n if (this.checkValidItem(items[i]) === 1) {\n this.contextMenu.enableItems([this.getMenuId(items[i])], enable, isUniqueId);\n }\n else if (this.checkValidItem(items[i]) === 2) {\n this.contextMenu.enableItems([items[i]], enable, isUniqueId);\n }\n }\n };\n ContextMenu.prototype.setFolderItem = function (isTree) {\n this.menuType = 'folder';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (isTree) {\n this.disabledItems.push('Open');\n }\n else if (this.parent.selectedItems.length !== 1) {\n this.disabledItems.push('Rename', 'Paste');\n }\n };\n ContextMenu.prototype.setFileItem = function () {\n this.menuType = 'file';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.file.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (this.parent.selectedItems.length !== 1) {\n this.disabledItems.push('Rename');\n }\n };\n ContextMenu.prototype.setLayoutItem = function (target) {\n this.menuType = 'layout';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' &&\n (closest(target, '#' + this.parent.element.id + CLS.LARGEICON_ID).getElementsByClassName(CLS.EMPTY).length !== 0))\n || (this.parent.view === 'Details' &&\n (closest(target, '#' + this.parent.element.id + CLS.GRID_ID).getElementsByClassName(CLS.EMPTY).length !== 0)))) {\n this.disabledItems.push('SelectAll');\n }\n if (this.parent.selectedNodes.length === 0) {\n this.disabledItems.push('Paste');\n }\n this.contextMenu.dataBind();\n };\n ContextMenu.prototype.checkValidItem = function (nameEle) {\n if (!isNOU(select('#' + this.getMenuId(nameEle), this.currentElement))) {\n return 1;\n }\n else if (!isNOU(select('#' + nameEle, this.currentElement))) {\n return 2;\n }\n else {\n return -1;\n }\n };\n // eslint-disable-next-line\n ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n // eslint-disable-next-line\n var args = { target: this.menuTarget };\n this.parent.notify(events.menuItemData, args);\n return this.parent.itemData[0];\n }\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onSelect = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var itemText = args.item.id.substr((this.parent.element.id + '_cm_').length);\n // eslint-disable-next-line\n var details;\n if (itemText === 'refresh' || itemText === 'newfolder' || itemText === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = {\n cancel: false,\n element: args.element,\n fileDetails: details,\n item: args.item\n };\n this.parent.trigger('menuClick', eventArgs, function (menuClickArgs) {\n var sItems;\n if (!menuClickArgs.cancel) {\n // eslint:disable-next-line\n switch (itemText) {\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'paste':\n if (_this.menuType === 'folder') {\n if ((_this.parent.activeModule === 'largeiconsview') || (_this.parent.activeModule === 'detailsview')) {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\n }\n else {\n _this.parent.folderPath = '';\n }\n }\n else {\n _this.parent.folderPath = '';\n }\n pasteHandler(_this.parent);\n break;\n case 'delete':\n for (var j = 0; j < details.length; j++) {\n if (!hasEditAccess(details[j])) {\n createDeniedDialog(_this.parent, details[j], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n /* istanbul ignore next */\n case 'download':\n for (var i = 0; i < details.length; i++) {\n if (!hasDownloadAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionDownload);\n return;\n }\n }\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.notify(events.downloadInit, {});\n }\n else if (_this.parent.selectedItems.length > 0) {\n Download(_this.parent, _this.parent.path, _this.parent.selectedItems);\n }\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'selectall':\n /* istanbul ignore next */\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'open':\n if (_this.parent.visitedItem) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n /* istanbul ignore next */\n case 'name':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'size':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'date':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'ascending':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'descending':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n case 'none':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'largeiconsview':\n updateLayout(_this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'detailsview':\n updateLayout(_this.parent, 'Details');\n break;\n }\n }\n });\n };\n ContextMenu.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.contextMenu.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n break;\n }\n }\n };\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.keyboardModule = new KeyboardEvents(this.contextMenu.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n ContextMenu.prototype.removeEventListener = function () {\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.keyboardModule.destroy();\n };\n ContextMenu.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n e.preventDefault();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n ContextMenu.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.contextMenu.destroy();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.getItemData = function (data) {\n var items = [];\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getMenuId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n switch (data[i]) {\n case '|':\n item = { separator: true };\n break;\n case 'Open':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_OPEN };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_UPLOAD };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_CUT };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_COPY };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_PASTE };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DELETE };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_RENAME };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_NEWFOLDER };\n break;\n case 'Details':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DETAILS };\n break;\n case 'SortBy':\n item = {\n id: itemId, text: itemText, iconCss: CLS.ICON_SHORTBY,\n items: [\n {\n id: this.getMenuId('Name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : null\n },\n { separator: true },\n {\n id: this.getMenuId('Ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('Descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('None'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n /* istanbul ignore next */\n case 'View':\n item = {\n id: itemId, text: itemText, iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n items: [\n {\n id: this.getMenuId('largeiconsview'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? null : CLS.TB_OPTION_TICK\n },\n {\n id: this.getMenuId('detailsview'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_REFRESH };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_SELECTALL };\n break;\n /* istanbul ignore next */\n case 'Download':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DOWNLOAD };\n break;\n /* istanbul ignore next */\n default:\n item = { id: itemId, text: itemText };\n break;\n }\n items.push(item);\n }\n return items;\n };\n ContextMenu.prototype.getMenuId = function (id) {\n return this.parent.element.id + '_cm_' + id.toLowerCase();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","/**\n * Specifies the default locale of FileManager component\n */\n// eslint-disable-next-line\nexport var defaultLocale = {\n 'NewFolder': 'New folder',\n 'Upload': 'Upload',\n 'Delete': 'Delete',\n 'Rename': 'Rename',\n 'Download': 'Download',\n 'Cut': 'Cut',\n 'Copy': 'Copy',\n 'Paste': 'Paste',\n 'SortBy': 'Sort by',\n 'Refresh': 'Refresh',\n 'Item-Selection': 'item selected',\n 'Items-Selection': 'items selected',\n 'View': 'View',\n 'Details': 'Details',\n 'SelectAll': 'Select all',\n 'Open': 'Open',\n 'Tooltip-NewFolder': 'New folder',\n 'Tooltip-Upload': 'Upload',\n 'Tooltip-Delete': 'Delete',\n 'Tooltip-Rename': 'Rename',\n 'Tooltip-Download': 'Download',\n 'Tooltip-Cut': 'Cut',\n 'Tooltip-Copy': 'Copy',\n 'Tooltip-Paste': 'Paste',\n 'Tooltip-SortBy': 'Sort by',\n 'Tooltip-Refresh': 'Refresh',\n 'Tooltip-Selection': 'Clear selection',\n 'Tooltip-View': 'View',\n 'Tooltip-Details': 'Details',\n 'Tooltip-SelectAll': 'Select all',\n 'Name': 'Name',\n 'Size': 'Size',\n 'DateModified': 'Modified',\n 'DateCreated': 'Date created',\n 'Path': 'Path',\n 'Modified': 'Modified',\n 'Created': 'Created',\n 'Location': 'Location',\n 'Type': 'Type',\n 'Permission': 'Permission',\n 'Ascending': 'Ascending',\n 'Descending': 'Descending',\n 'None': 'None',\n 'View-LargeIcons': 'Large icons',\n 'View-Details': 'Details',\n 'Search': 'Search',\n 'Button-Ok': 'OK',\n 'Button-Cancel': 'Cancel',\n 'Button-Yes': 'Yes',\n 'Button-No': 'No',\n 'Button-Create': 'Create',\n 'Button-Save': 'Save',\n 'Header-NewFolder': 'Folder',\n 'Content-NewFolder': 'Enter your folder name',\n 'Header-Rename': 'Rename',\n 'Content-Rename': 'Enter your new name',\n 'Header-Rename-Confirmation': 'Rename Confirmation',\n 'Content-Rename-Confirmation': 'If you change a file name extension, the file might become unstable. ' +\n 'Are you sure you want to change it?',\n 'Header-Delete': 'Delete File',\n 'Content-Delete': 'Are you sure you want to delete this file?',\n 'Header-Folder-Delete': 'Delete Folder',\n 'Content-Folder-Delete': 'Are you sure you want to delete this folder?',\n 'Header-Multiple-Delete': 'Delete Multiple Items',\n 'Content-Multiple-Delete': 'Are you sure you want to delete these {0} items?',\n 'Header-Duplicate': 'File/Folder exists',\n 'Content-Duplicate': '{0} already exists. Do you want to rename and paste?',\n 'Header-Upload': 'Upload Files',\n 'Error': 'Error',\n 'Validation-Empty': 'The file or folder name cannot be empty.',\n 'Validation-Invalid': 'The file or folder name {0} contains invalid characters. Please use a different name. ' +\n // eslint-disable-next-line no-useless-escape\n 'Valid file or folder names cannot end with a dot or space, and cannot contain any of the following characters: \\\\/:*?\\\"<>|',\n 'Validation-NewFolder-Exists': 'A file or folder with the name {0} already exists.',\n 'Validation-Rename-Exists': 'Cannot rename {0} to {1}: destination already exists.',\n 'Folder-Empty': 'This folder is empty',\n 'File-Upload': 'Drag files here to upload',\n 'Search-Empty': 'No results found',\n 'Search-Key': 'Try with different keywords',\n 'Filter-Empty': 'No results found',\n 'Filter-Key': 'Try with different filter',\n 'Sub-Folder-Error': 'The destination folder is the subfolder of the source folder.',\n 'Same-Folder-Error': 'The destination folder is the same as the source folder.',\n 'Access-Denied': 'Access Denied',\n 'Access-Details': 'You don\"t have permission to access this folder.',\n 'Header-Retry': 'File Already Exists',\n 'Content-Retry': 'A file with this name already exists in this folder. What would you like to do?',\n 'Button-Keep-Both': 'Keep both',\n 'Button-Replace': 'Replace',\n 'Button-Skip': 'Skip',\n 'ApplyAll-Label': 'Do this for all current items',\n 'KB': 'KB',\n 'Access-Message': '{0} is not accessible. You need permission to perform the {1} action.',\n 'Network-Error': 'NetworkError: Failed to send on XMLHTTPRequest: Failed to load',\n 'Server-Error': 'ServerError: Invalid response from'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isNullOrUndefined, L10n, closest } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Complex, select } from '@syncfusion/ej2-base';\nimport { createElement, addClass, removeClass, setStyleAttribute as setAttr } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Splitter } from '@syncfusion/ej2-layouts';\nimport { Dialog, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { ToolbarSettings, AjaxSettings, NavigationPaneSettings, DetailsViewSettings } from '../models/index';\nimport { SearchSettings } from '../models/index';\nimport { LargeIconsView } from '../layout/large-icons-view';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { UploadSettings } from '../models/upload-settings';\nimport * as events from './constant';\nimport * as CLS from './classes';\nimport { read, filter, createFolder } from '../common/operations';\nimport { refresh, getPathObject, getLocaleText, setNextPath, createDeniedDialog, getCssClass } from '../common/utility';\nimport { hasContentAccess, hasUploadAccess, updateLayout, createNewFolder, uploadItem } from '../common/utility';\nimport { ContextMenuSettings } from '../models/contextMenu-settings';\nimport { BreadCrumbBar } from '../actions/breadcrumb-bar';\nimport { ContextMenu } from '../pop-up/context-menu';\nimport { defaultLocale } from '../models/default-locale';\n/**\n * The FileManager component allows users to access and manage the file system through the web browser. It can performs the\n * functionalities like add, rename, search, sort, upload and delete files or folders. And also it\n * provides an easy way of dynamic injectable modules like toolbar, navigationpane, detailsview, largeiconsview.\n * ```html\n * <div id=\"file\"></div>\n * ```\n * ```typescript,\n * let feObj: FileManager = new FileManager();\n * feObj.appendTo('#file');\n * ```\n */\nvar FileManager = /** @class */ (function (_super) {\n __extends(FileManager, _super);\n function FileManager(options, element) {\n var _this = _super.call(this, options, element) || this;\n // eslint-disable-next-line\n _this.filterData = null;\n _this.selectedNodes = [];\n _this.duplicateItems = [];\n // eslint-disable-next-line\n _this.duplicateRecords = [];\n _this.previousPath = [];\n _this.nextPath = [];\n _this.isLayoutChange = false;\n _this.layoutSelectedItems = [];\n _this.renamedId = null;\n _this.uploadItem = [];\n _this.deleteRecords = [];\n _this.isFile = false;\n _this.sortBy = 'name';\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 _this.enablePaste = false;\n _this.persistData = false;\n _this.retryArgs = [];\n _this.isOpened = false;\n _this.isRetryOpened = false;\n _this.isPathDrag = false;\n // eslint-disable-next-line\n _this.searchedItems = [];\n _this.retryFiles = [];\n _this.isApplySame = false;\n // eslint-disable-next-line\n _this.dragData = [];\n _this.dragNodes = [];\n _this.dragPath = '';\n _this.dropPath = '';\n _this.isDragDrop = false;\n _this.treeExpandTimer = null;\n _this.dragCursorPosition = { left: 44, top: 18 };\n _this.isDropEnd = false;\n _this.dragCount = 0;\n // eslint-disable-next-line\n _this.droppedObjects = [];\n _this.uploadingCount = 0;\n _this.uploadedCount = 0;\n FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu);\n return _this;\n }\n FileManager_1 = FileManager;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n FileManager.prototype.getModuleName = function () {\n return 'filemanager';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n FileManager.prototype.preRender = function () {\n this.ensurePath();\n this.feParent = [];\n this.feFiles = [];\n setAttr(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.isDevice = Browser.isDevice;\n this.isMobile = this.checkMobile();\n if (this.isMobile) {\n this.setProperties({ navigationPaneSettings: { visible: false } }, true);\n }\n var ele = closest(this.element, '.e-bigger');\n this.isBigger = ele ? true : false;\n this.activeModule = (this.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n createSpinner({ target: this.element }, createElement);\n this.addWrapper();\n this.keyConfigs = {\n altN: 'alt+n',\n f5: 'f5',\n ctrlShift1: 'ctrl+shift+1',\n ctrlShift2: 'ctrl+shift+2',\n ctrlU: 'ctrl+u'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string} - returns the persisted data.\n * @hidden\n */\n FileManager.prototype.getPersistData = function () {\n var keyEntity = ['view', 'path', 'selectedItems'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n FileManager.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'breadcrumbbar',\n args: [this]\n });\n modules.push({\n member: 'largeiconsview',\n args: [this]\n });\n if (this.toolbarSettings.visible) {\n modules.push({\n member: 'toolbar',\n args: [this]\n });\n }\n if (this.navigationPaneSettings.visible) {\n modules.push({\n member: 'navigationpane',\n args: [this]\n });\n }\n if (this.view) {\n modules.push({\n member: 'detailsview',\n args: [this]\n });\n }\n if (this.contextMenuSettings.visible && !this.isDevice) {\n modules.push({\n member: 'contextmenu',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n FileManager.prototype.render = function () {\n this.initialize();\n var slItems = isNOU(this.selectedItems) ? [] :\n this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);\n this.setProperties({ selectedItems: slItems }, true);\n this.fileView = this.view;\n this.setRtl(this.enableRtl);\n this.addEventListeners();\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n this.adjustHeight();\n if (isNOU(this.navigationpaneModule)) {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n this.wireEvents();\n this.renderComplete();\n };\n FileManager.prototype.ensurePath = function () {\n var currentPath = this.path;\n if (isNOU(currentPath)) {\n currentPath = '/';\n }\n if (currentPath.lastIndexOf('/') !== (currentPath.length - 1)) {\n currentPath = currentPath + '/';\n }\n this.originalPath = currentPath;\n var paths = currentPath.split('/');\n this.setProperties({ path: paths[0] + '/' }, true);\n this.pathNames = [];\n this.pathId = ['fe_tree'];\n this.itemData = [];\n };\n FileManager.prototype.initialize = function () {\n if (this.isMobile) {\n addClass([this.element], CLS.MOBILE);\n }\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n this.addCssClass(null, this.cssClass);\n this.renderFileUpload();\n };\n FileManager.prototype.addWrapper = function () {\n var headerWrap = this.createElement('div', { id: this.element.id + CLS.TOOLBAR_ID });\n this.element.appendChild(headerWrap);\n var layoutWrap = this.createElement('div', {\n id: this.element.id + CLS.LAYOUT_ID, className: CLS.LAYOUT\n });\n this.element.appendChild(layoutWrap);\n var navigationWrap = this.createElement('div', {\n id: this.element.id + CLS.NAVIGATION_ID, className: CLS.NAVIGATION\n });\n var treeWrap = this.createElement('div', {\n id: this.element.id + CLS.TREE_ID\n });\n navigationWrap.appendChild(treeWrap);\n var contentWrap = this.createElement('div', {\n id: this.element.id + CLS.CONTENT_ID, className: CLS.LAYOUT_CONTENT\n });\n this.breadCrumbBarNavigation = this.createElement('div', {\n id: this.element.id + CLS.BREADCRUMBBAR_ID,\n className: CLS.BREADCRUMBS\n });\n contentWrap.appendChild(this.breadCrumbBarNavigation);\n var gridWrap = this.createElement('div', {\n id: this.element.id + CLS.GRID_ID\n });\n contentWrap.appendChild(gridWrap);\n var largeiconWrap = this.createElement('div', {\n id: this.element.id + CLS.LARGEICON_ID,\n className: CLS.LARGE_ICONS, attrs: { 'role': 'group' }\n });\n contentWrap.appendChild(largeiconWrap);\n var overlay = this.createElement('span', { className: CLS.OVERLAY });\n contentWrap.appendChild(overlay);\n var paneSettings;\n if (!this.enableRtl) {\n layoutWrap.appendChild(navigationWrap);\n layoutWrap.appendChild(contentWrap);\n paneSettings = [\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n },\n { size: '75%', min: '270px' }\n ];\n }\n else {\n layoutWrap.appendChild(contentWrap);\n layoutWrap.appendChild(navigationWrap);\n paneSettings = [\n { size: '75%', min: '270px' },\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n }\n ];\n }\n this.splitterObj = new Splitter({\n paneSettings: paneSettings,\n width: '100%',\n enableRtl: false,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n resizing: this.splitterResize.bind(this)\n });\n this.splitterObj.isStringTemplate = true;\n this.splitterObj.appendTo(layoutWrap);\n var dialogWrap = this.createElement('div', { id: this.element.id + CLS.DIALOG_ID });\n this.element.appendChild(dialogWrap);\n var menuWrap = this.createElement('ul', { id: this.element.id + CLS.CONTEXT_MENU_ID });\n this.element.appendChild(menuWrap);\n var dialogImgWrap = this.createElement('div', { id: this.element.id + CLS.IMG_DIALOG_ID });\n this.element.appendChild(dialogImgWrap);\n var extnDialogWrap = this.createElement('div', { id: this.element.id + CLS.EXTN_DIALOG_ID });\n this.element.appendChild(extnDialogWrap);\n var uploadDialogWrap = this.createElement('div', { id: this.element.id + CLS.UPLOAD_DIALOG_ID });\n this.element.appendChild(uploadDialogWrap);\n };\n FileManager.prototype.adjustHeight = function () {\n var toolbar = select('#' + this.element.id + CLS.TOOLBAR_ID, this.element);\n var toolBarHeight = toolbar ? toolbar.offsetHeight : 0;\n if (this.splitterObj) {\n this.splitterObj.height = (this.element.clientHeight - toolBarHeight).toString();\n this.splitterObj.dataBind();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.splitterResize = function () {\n this.notify(events.splitterResize, {});\n };\n FileManager.prototype.splitterAdjust = function () {\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n if (this.navigationPaneSettings.visible) {\n this.splitterObj.expand(this.enableRtl ? 1 : 0);\n bar.classList.remove(CLS.DISPLAY_NONE);\n }\n else {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n };\n FileManager.prototype.addCssClass = function (oldOne, newOne) {\n if (!isNOU(oldOne) && oldOne !== '') {\n removeClass([this.element], oldOne.split(' '));\n }\n if (!isNOU(newOne) && newOne !== '') {\n addClass([this.element], newOne.split(' '));\n }\n };\n FileManager.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n FileManager.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n FileManager.prototype.onContextMenu = function (e) {\n e.preventDefault();\n };\n FileManager.prototype.checkMobile = function () {\n return (/iphone|ipod|android|blackberry|opera|mini|windows\\sce|palm|smartphone|iemobile/i.test(Browser.userAgent.toLowerCase())\n && /mobile/i.test(Browser.userAgent.toLowerCase()));\n };\n FileManager.prototype.renderFileUpload = function () {\n var id = this.element.id + CLS.UPLOAD_ID;\n var uploadEle = this.createElement('input', { id: id, attrs: { name: 'uploadFiles', type: 'file' } });\n this.element.appendChild(uploadEle);\n this.uploadDialogObj = new Dialog({\n header: getLocaleText(this, 'Header-Upload'),\n content: uploadEle,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: false,\n isModal: true,\n width: '350px',\n target: this.popupTarget ? this.popupTarget : '#' + this.element.id,\n cssClass: getCssClass(this, this.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: this.locale,\n allowDragging: true,\n position: { X: 'center', Y: 'center' },\n enableRtl: this.enableRtl,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n open: this.onOpen.bind(this),\n close: this.onClose.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n });\n this.uploadDialogObj.appendTo('#' + this.element.id + CLS.UPLOAD_DIALOG_ID);\n this.renderUploadBox();\n };\n FileManager.prototype.renderUploadBox = function () {\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n this.uploadObj = new Uploader({\n dropArea: select('#' + this.element.id + CLS.CONTENT_ID, this.element),\n asyncSettings: {\n saveUrl: uploadUrl,\n removeUrl: uploadUrl\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n removing: this.onRemoving.bind(this),\n clearing: this.onClearing.bind(this),\n selected: this.onSelected.bind(this),\n success: this.onUploadSuccess.bind(this),\n failure: this.onUploadFailure.bind(this),\n autoUpload: this.uploadSettings.autoUpload,\n minFileSize: this.uploadSettings.minFileSize,\n maxFileSize: this.uploadSettings.maxFileSize,\n allowedExtensions: this.uploadSettings.allowedExtensions,\n fileListRendering: this.onFileListRender.bind(this)\n });\n this.uploadObj.appendTo('#' + this.element.id + CLS.UPLOAD_ID);\n };\n FileManager.prototype.onFileListRender = function (args) {\n this.trigger('uploadListCreate', args);\n };\n FileManager.prototype.updateUploader = function () {\n this.uploadObj.autoUpload = this.uploadSettings.autoUpload;\n this.uploadObj.minFileSize = this.uploadSettings.minFileSize;\n this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;\n this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;\n this.uploadObj.dataBind();\n };\n FileManager.prototype.onBeforeOpen = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onOpen = function () {\n this.isOpened = true;\n this.uploadDialogObj.element.focus();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupOpen', args);\n };\n FileManager.prototype.onClose = function () {\n this.isOpened = false;\n this.uploadObj.clearAll();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupClose', args);\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploading = function (args) {\n var action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n if (args.fileData.name === this.retryArgs[i].file.name) {\n action = this.retryArgs[i].action;\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }];\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n // eslint-disable-next-line\n var ajaxSettings = {\n url: uploadUrl,\n type: 'POST',\n mode: true,\n dataType: null,\n contentType: null,\n data: JSON.stringify(args.customFormData),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n this.uploadEventArgs = { action: 'Upload', ajaxSettings: ajaxSettings, cancel: false };\n this.trigger('beforeSend', this.uploadEventArgs, function (uploadEventArgs) {\n args.customFormData = JSON.parse(getValue('data', uploadEventArgs.ajaxSettings));\n args.cancel = uploadEventArgs.cancel;\n // eslint-disable-next-line\n var eventArgs = {\n cancel: false,\n httpRequest: args.currentRequest\n };\n if (typeof getValue('beforeSend', uploadEventArgs.ajaxSettings) === 'function') {\n getValue('beforeSend', uploadEventArgs.ajaxSettings)(eventArgs);\n if (getValue('cancel', eventArgs)) {\n args.cancel = getValue('cancel', eventArgs);\n }\n }\n });\n };\n FileManager.prototype.onRemoving = function () {\n this.onFileUploadSuccess({ count: 1 });\n if (this.uploadObj.getFilesData().length === 1) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onClearing = function () {\n if (this.isOpened) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onSelected = function (args) {\n if (args.filesData.length === 0) {\n return;\n }\n this.uploadingCount = args.filesData.length;\n this.uploadedCount = 0;\n // eslint-disable-next-line\n var details = getPathObject(this);\n if (!hasUploadAccess(details)) {\n args.cancel = true;\n createDeniedDialog(this, details, events.permissionUpload);\n return;\n }\n this.uploadDialogObj.show();\n };\n // eslint-disable-next-line\n FileManager.prototype.onFileUploadSuccess = function (args) {\n this.uploadedCount = this.uploadedCount + args.count;\n if (this.uploadSettings.autoClose && (this.uploadingCount === this.uploadedCount)) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadSuccess = function (files) {\n var args = { action: 'Upload', result: files };\n this.trigger('success', args);\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n read(this, events.pathChanged, this.path);\n this.onFileUploadSuccess({ count: 1 });\n if (typeof getValue('onSuccess', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', this.uploadEventArgs.ajaxSettings)();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadFailure = function (files) {\n // eslint-disable-next-line\n var response = getValue('response', files);\n var statusText = getValue('statusText', response);\n if (statusText !== '') {\n setValue('statusText', statusText, files);\n }\n var args = { action: 'Upload', error: files };\n this.trigger('failure', args);\n if (getValue('statusCode', response) === 400) {\n this.retryFiles.push(getValue('file', files));\n if (!this.isRetryOpened) {\n createExtDialog(this, 'UploadRetry');\n }\n }\n if (typeof getValue('onFailure', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onFailure', this.uploadEventArgs.ajaxSettings)();\n }\n };\n FileManager.prototype.onInitialEnd = function () {\n setNextPath(this, this.path);\n };\n FileManager.prototype.addEventListeners = function () {\n this.on(events.beforeRequest, this.showSpinner, this);\n this.on(events.afterRequest, this.hideSpinner, this);\n this.on(events.initialEnd, this.onInitialEnd, this);\n this.on(events.detailsInit, this.onDetailsInit, this);\n this.on(events.skipUpload, this.onFileUploadSuccess, this);\n EventHandler.add(this.element, 'contextmenu', this.onContextMenu, this);\n };\n FileManager.prototype.removeEventListeners = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.beforeRequest, this.showSpinner);\n this.off(events.afterRequest, this.hideSpinner);\n this.off(events.initialEnd, this.onInitialEnd);\n this.off(events.detailsInit, this.onDetailsInit);\n this.off(events.skipUpload, this.onFileUploadSuccess);\n EventHandler.remove(this.element, 'contextmenu', this.onContextMenu);\n };\n FileManager.prototype.onDetailsInit = function () {\n if (isNOU(this.activeModule)) {\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n }\n };\n FileManager.prototype.resizeHandler = function () {\n this.adjustHeight();\n this.notify(events.resizeEnd, {});\n };\n FileManager.prototype.keyActionHandler = function (e) {\n var uploadEle;\n switch (e.action) {\n case 'altN':\n e.preventDefault();\n this.itemData = [getPathObject(this)];\n if (!hasContentAccess(this.itemData[0])) {\n createDeniedDialog(this, this.itemData[0], events.permissionEditContents);\n }\n else {\n createDialog(this, 'NewFolder');\n }\n break;\n case 'f5':\n e.preventDefault();\n refresh(this);\n break;\n /* istanbul ignore next */\n case 'ctrlShift1':\n e.preventDefault();\n this.fileView = 'Details';\n this.setProperties({ view: 'Details' }, true);\n showSpinner(this.element);\n updateLayout(this, 'Details');\n break;\n /* istanbul ignore next */\n case 'ctrlShift2':\n e.preventDefault();\n this.fileView = 'LargeIcons';\n this.setProperties({ view: 'LargeIcons' }, true);\n showSpinner(this.element);\n updateLayout(this, 'LargeIcons');\n break;\n case 'ctrlU':\n e.preventDefault();\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n break;\n }\n };\n FileManager.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n FileManager.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\n };\n FileManager.prototype.setPath = function () {\n this.setProperties({ selectedItems: [] }, true);\n this.ensurePath();\n this.notify(events.clearPathInit, { selectedNode: this.pathId[0] });\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FileManager} newProp\n * @param {FileManager} oldProp\n * @returns void\n * @private\n */\n /* istanbul ignore next */\n // eslint:disable-next-line\n FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var height;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'ajaxSettings':\n this.ajaxSettingSetModel(newProp);\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'allowMultiSelection':\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n else {\n if (this.selectedItems.length > 1) {\n this.setProperties({ selectedItems: this.selectedItems.slice(this.selectedItems.length - 1) }, true);\n }\n removeClass([this.element], CLS.CHECK_SELECT);\n }\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'cssClass':\n this.addCssClass(oldProp.cssClass, newProp.cssClass);\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'detailsViewSettings':\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n this.refresh();\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n this.refresh();\n break;\n case 'height':\n height = !isNOU(newProp.height) ? formatUnit(newProp.height) : newProp.height;\n setAttr(this.element, { 'height': height });\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'locale':\n if (!isNOU(newProp.enableRtl)) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n }\n this.localeSetModelOption(newProp);\n break;\n case 'navigationPaneSettings':\n this.splitterAdjust();\n this.notify(events.modelChanged, { module: 'navigationpane', newProp: newProp, oldProp: oldProp });\n break;\n case 'path':\n this.setPath();\n break;\n case 'searchSettings':\n if (!isNullOrUndefined(newProp.searchSettings.allowSearchOnTyping)) {\n this.setProperties({ searchSettings: { allowSearchOnTyping: newProp.searchSettings.allowSearchOnTyping } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.ignoreCase)) {\n this.setProperties({ searchSettings: { ignoreCase: newProp.searchSettings.ignoreCase } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.filterType)) {\n this.setProperties({ searchSettings: { filterType: newProp.searchSettings.filterType } }, true);\n }\n this.notify(events.modelChanged, { module: 'breadcrumbbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'selectedItems':\n if (this.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (this.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'showFileExtension':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showHiddenItems':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showThumbnail':\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'toolbarSettings':\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'uploadSettings':\n this.updateUploader();\n break;\n case 'view':\n if (newProp.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (newProp.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'width':\n setAttr(this.element, { 'width': !isNOU(newProp.width) ? formatUnit(newProp.width) : newProp.width });\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'sortOrder':\n refresh(this);\n this.notify(events.sortByChange, {});\n break;\n case 'popupTarget':\n if (this.uploadDialogObj) {\n this.uploadDialogObj.target = newProp.popupTarget;\n }\n if (this.dialogObj) {\n this.dialogObj.target = newProp.popupTarget;\n }\n if (this.extDialogObj) {\n this.extDialogObj.target = newProp.popupTarget;\n }\n if (this.viewerObj) {\n this.viewerObj.target = newProp.popupTarget;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.ajaxSettingSetModel = function (newProp) {\n if (!isNullOrUndefined(newProp.ajaxSettings.url)) {\n this.setProperties({ ajaxSettings: { url: newProp.ajaxSettings.url } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.uploadUrl)) {\n this.setProperties({ ajaxSettings: { uploadUrl: newProp.ajaxSettings.uploadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.downloadUrl)) {\n this.setProperties({ ajaxSettings: { downloadUrl: newProp.ajaxSettings.downloadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.getImageUrl)) {\n this.setProperties({ ajaxSettings: { getImageUrl: newProp.ajaxSettings.getImageUrl } }, true);\n }\n this.setProperties({ path: '/' }, true);\n this.setProperties({ selectedItems: [] }, true);\n _super.prototype.refresh.call(this);\n };\n /* istanbul ignore next */\n FileManager.prototype.localeSetModelOption = function (newProp) {\n this.uploadObj.locale = newProp.locale;\n _super.prototype.refresh.call(this);\n };\n /**\n * Triggers when the component is destroyed.\n *\n * @returns {void}\n */\n FileManager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.refreshing) {\n this.notify(events.destroy, {});\n }\n this.uploadObj.destroy();\n this.uploadObj = null;\n this.uploadDialogObj.destroy();\n this.uploadDialogObj = null;\n this.splitterObj.destroy();\n this.splitterObj = null;\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.dialogObj = null;\n }\n if (this.viewerObj) {\n this.viewerObj.destroy();\n this.viewerObj = null;\n }\n if (this.extDialogObj) {\n this.extDialogObj.destroy();\n this.extDialogObj = null;\n }\n this.element.removeAttribute('style');\n this.element.removeAttribute('tabindex');\n this.removeEventListeners();\n this.unWireEvents();\n this.addCssClass(this.cssClass, null);\n removeClass([this.element], [CLS.RTL, CLS.MOBILE, CLS.CHECK_SELECT]);\n this.element.innerHTML = '';\n _super.prototype.destroy.call(this);\n };\n /**\n * Creates a new folder in file manager.\n *\n * @param {string} name – Specifies the name of new folder in current path.\n * If it is not specified, then the default new folder dialog will be opened.\n * @returns {void}\n */\n FileManager.prototype.createFolder = function (name) {\n this.notify(events.methodCall, { action: 'createFolder' });\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n if (name) {\n if (/[/\\\\|*?\"<>:]/.test(name)) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(this, 'Validation-Invalid').replace('{0}', '\"' + name + '\"'),\n fileExists: null\n }\n };\n createDialog(this, 'Error', result);\n }\n else {\n if (!hasContentAccess(details[0])) {\n createDeniedDialog(this, details[0], events.permissionEditContents);\n }\n else {\n createFolder(this, name);\n }\n }\n }\n else {\n createNewFolder(this);\n }\n };\n /**\n * Deletes the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to delete the nested level folders or\n * files, then specify the filter path along with name of the folders or files when performing the search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then delete confirmation dialog will be opened for selected item.\n *\n * @returns {void}\n */\n FileManager.prototype.deleteFiles = function (ids) {\n this.notify(events.methodCall, { action: 'deleteFiles', ids: ids });\n };\n /**\n * Disables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableToolbarItems = function (items) {\n if (!isNOU(items)) {\n this.toolbarModule.enableItems(items, false);\n }\n };\n /**\n * Downloads the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to download the nested level folders\n * or files, then specify the filter path along with name of the folders or files when performing search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then the selected items will be downloaded.\n *\n * @returns {void}\n */\n FileManager.prototype.downloadFiles = function (ids) {\n this.notify(events.methodCall, { action: 'downloadFiles', ids: ids });\n };\n /**\n * Enables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be enabled.\n * @returns {void}\n */\n FileManager.prototype.enableToolbarItems = function (items) {\n if (!isNOU(items)) {\n this.toolbarModule.enableItems(items, true);\n }\n };\n /**\n * Disables the specified context menu items in file manager. This method is used only in the menuOpen event.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.disableItem(items);\n }\n };\n /**\n * Returns the index position of given current context menu item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns menu item index.\n */\n FileManager.prototype.getMenuItemIndex = function (item) {\n if (this.contextmenuModule) {\n return this.contextmenuModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Returns the index position of given toolbar item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns toolbar item index.\n */\n FileManager.prototype.getToolbarItemIndex = function (item) {\n if (this.toolbarModule) {\n return this.toolbarModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Display the custom filtering files in file manager.\n *\n * @param {Object} filterData - Specifies the custom filter details along with custom file action name,\n * which needs to be sent to the server side. If you do not specify the details, then default action name will be `filter`.\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n FileManager.prototype.filterFiles = function (filterData) {\n this.filterData = filterData ? filterData : null;\n this.setProperties({ selectedItems: [] }, true);\n this.notify(events.selectionChanged, {});\n this.isFiltered = true;\n if (this.breadcrumbbarModule.searchObj.element.value !== '') {\n this.breadcrumbbarModule.searchObj.element.value = '';\n }\n filter(this, events.filterEnd);\n };\n /**\n * Gets the details of the selected files in the file manager.\n *\n * @returns {Object[]} - returns selected files.\n */\n // eslint-disable-next-line\n FileManager.prototype.getSelectedFiles = function () {\n this.notify(events.updateSelectionData, {});\n return this.itemData;\n };\n /**\n * Opens the corresponding file or folder from the given unique identifier.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to open the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n *\n * @returns {void}\n */\n FileManager.prototype.openFile = function (id) {\n this.notify(events.methodCall, { action: 'openFile', id: id });\n };\n /**\n * Refreshes the folder files of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshFiles = function () {\n refresh(this);\n };\n /**\n * Refreshes the layout of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshLayout = function () {\n this.adjustHeight();\n this.notify(events.layoutRefresh, {});\n };\n /**\n * Selects the entire folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.selectAll = function () {\n this.notify(events.methodCall, { action: 'selectAll' });\n };\n /**\n * Deselects the currently selected folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.clearSelection = function () {\n this.notify(events.methodCall, { action: 'clearSelection' });\n };\n /**\n * Renames the file or folder with given new name in file manager.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to rename the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n * If it is not specified, then rename dialog will be opened for selected item.\n *\n * @param {string} name – Specifies the new name of the file or folder in current path. If it is not specified, then rename dialog\n * will be opened for given identifier.\n *\n * @returns {void}\n */\n FileManager.prototype.renameFile = function (id, name) {\n this.notify(events.methodCall, { action: 'renameFile', id: id, newName: name });\n };\n /**\n * Opens the upload dialog in file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.uploadFiles = function () {\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(this);\n };\n /**\n * Specifies the direction of FileManager\n *\n * @param {boolean} rtl - specifies rtl parameter.\n * @returns {void}\n */\n FileManager.prototype.setRtl = function (rtl) {\n if (rtl) {\n this.addCssClass(null, CLS.RTL);\n }\n else {\n this.addCssClass(CLS.RTL, null);\n }\n if (this.uploadObj) {\n this.uploadDialogObj.enableRtl = rtl;\n this.uploadObj.enableRtl = rtl;\n }\n };\n var FileManager_1;\n __decorate([\n Complex({}, AjaxSettings)\n ], FileManager.prototype, \"ajaxSettings\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Complex({}, ContextMenuSettings)\n ], FileManager.prototype, \"contextMenuSettings\", void 0);\n __decorate([\n Property('')\n ], FileManager.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, DetailsViewSettings)\n ], FileManager.prototype, \"detailsViewSettings\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('400px')\n ], FileManager.prototype, \"height\", void 0);\n __decorate([\n Property('LargeIcons')\n ], FileManager.prototype, \"view\", void 0);\n __decorate([\n Complex({}, NavigationPaneSettings)\n ], FileManager.prototype, \"navigationPaneSettings\", void 0);\n __decorate([\n Property('/')\n ], FileManager.prototype, \"path\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"popupTarget\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], FileManager.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], FileManager.prototype, \"selectedItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showFileExtension\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"rootAliasName\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"showHiddenItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showThumbnail\", void 0);\n __decorate([\n Property('Ascending')\n ], FileManager.prototype, \"sortOrder\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], FileManager.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({}, UploadSettings)\n ], FileManager.prototype, \"uploadSettings\", void 0);\n __decorate([\n Property('100%')\n ], FileManager.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDownload\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeImageLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeSend\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStart\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragging\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStop\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDropped\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelection\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelect\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"uploadListCreate\", void 0);\n FileManager = FileManager_1 = __decorate([\n NotifyPropertyChanges\n ], FileManager);\n return FileManager;\n}(Component));\nexport { FileManager };\n","import { Toolbar as BaseToolbar } from '@syncfusion/ej2-navigations';\nimport { select, isNullOrUndefined as isNOU, closest, selectAll } from '@syncfusion/ej2-base';\nimport { createDialog } from '../pop-up/dialog';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { refresh, getPathObject, getLocaleText, getCssClass, sortbyClickHandler } from '../common/utility';\nimport { createDeniedDialog, updateLayout } from '../common/utility';\nimport { GetDetails } from '../common/operations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { cutFiles, copyFiles, pasteHandler, hasEditAccess } from '../common/index';\nimport { doDownload, createNewFolder, uploadItem } from '../common/index';\n/**\n * Toolbar module\n */\nvar Toolbar = /** @class */ (function () {\n /**\n * Constructor for the Toolbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies the parent element.\n * @private\n */\n function Toolbar(parent) {\n this.default = ['Delete', 'Rename', 'Download', 'Cut', 'Copy', 'Paste'];\n this.single = ['Delete', 'Rename', 'Download', 'Cut', 'Copy'];\n this.multiple = ['Delete', 'Download', 'Cut', 'Copy', 'Refresh'];\n this.selection = ['NewFolder', 'Upload', 'SortBy', 'Refresh'];\n this.parent = parent;\n this.render();\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n var _this = this;\n this.items = this.toolbarItemData(this.getItems(this.parent.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj = new BaseToolbar({\n items: _this.items,\n created: _this.toolbarCreateHandler.bind(_this),\n overflowMode: 'Popup',\n clicked: _this.onClicked.bind(_this),\n enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n enableRtl: _this.parent.enableRtl\n });\n _this.toolbarObj.isStringTemplate = true;\n _this.toolbarObj.appendTo('#' + _this.parent.element.id + CLS.TOOLBAR_ID);\n });\n };\n Toolbar.prototype.getItemIndex = function (item) {\n var itemId = this.getId(item);\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i].id === itemId) {\n return i;\n }\n }\n return -1;\n };\n Toolbar.prototype.getItems = function (items) {\n var currItems = items.slice();\n if (this.parent.isDevice && this.parent.allowMultiSelection) {\n currItems.push('SelectAll');\n }\n return currItems;\n };\n /* istanbul ignore next */\n Toolbar.prototype.onClicked = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var tool = args.item.id.substr((this.parent.element.id + '_tb_').length);\n // eslint-disable-next-line\n var details;\n if (tool === 'refresh' || tool === 'newfolder' || tool === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = { cancel: false, fileDetails: details, item: args.item };\n this.parent.trigger('toolbarClick', eventArgs, function (toolbarClickArgs) {\n var sItems;\n var target;\n if (!toolbarClickArgs.cancel) {\n switch (tool) {\n case 'sortby':\n target = closest(args.originalEvent.target, '.' + CLS.TB_ITEM);\n if (target && target.classList.contains('e-toolbar-popup')) {\n args.cancel = true;\n }\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'delete':\n for (var i = 0; i < details.length; i++) {\n if (!hasEditAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'paste':\n _this.parent.folderPath = '';\n pasteHandler(_this.parent);\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'download':\n doDownload(_this.parent);\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n case 'selectall':\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'selection':\n _this.parent.notify(events.clearAllInit, {});\n break;\n }\n }\n });\n };\n Toolbar.prototype.toolbarCreateHandler = function () {\n if (!isNOU(select('#' + this.getId('SortBy'), this.parent.element))) {\n var items = [\n { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'), iconCss: CLS.TB_OPTION_DOT },\n { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size') },\n { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified') },\n { separator: true },\n { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('none'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '' }\n ];\n this.buttonObj = new DropDownButton({\n items: items, cssClass: getCssClass(this.parent, CLS.ROOT_POPUP),\n select: sortbyClickHandler.bind(this, this.parent),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl, iconCss: CLS.ICON_SHORTBY\n });\n this.buttonObj.isStringTemplate = true;\n this.buttonObj.appendTo('#' + this.getId('SortBy'));\n }\n if (!isNOU(select('#' + this.getId('View'), this.parent.element))) {\n var gridSpan = '<span class=\"' + CLS.ICON_GRID + ' ' + CLS.MENU_ICON + '\"></span>';\n var largeIconSpan = '<span class=\"' + CLS.ICON_LARGE + ' ' + CLS.MENU_ICON + '\"></span>';\n var layoutItems = [\n {\n id: this.getPupupId('large'), text: largeIconSpan + getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? '' : CLS.TB_OPTION_TICK\n },\n {\n id: this.getPupupId('details'), text: gridSpan + getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : ''\n }\n ];\n this.layoutBtnObj = new DropDownButton({\n iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n cssClass: getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP),\n items: layoutItems, select: this.layoutChange.bind(this),\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n content: '<span class=\"e-tbar-btn-text\">' + getLocaleText(this.parent, 'View') + '</span>'\n });\n this.layoutBtnObj.isStringTemplate = true;\n this.layoutBtnObj.appendTo('#' + this.getId('View'));\n }\n this.hideItems(this.default, true);\n this.hideStatus();\n var btnElement = selectAll('.e-btn', this.toolbarObj.element);\n var _loop_1 = function (btnCount) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n this.parent.refreshLayout();\n };\n Toolbar.prototype.updateSortByButton = function () {\n if (this.buttonObj) {\n var items = this.buttonObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.getPupupId = function (id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n };\n Toolbar.prototype.layoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (args.item.id === this.getPupupId('large')) {\n updateLayout(this.parent, 'LargeIcons');\n }\n }\n else {\n if (args.item.id === this.getPupupId('details')) {\n updateLayout(this.parent, 'Details');\n }\n }\n };\n Toolbar.prototype.toolbarItemData = function (data) {\n var items = [];\n var mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n var itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n var spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\n switch (data[i]) {\n case '|':\n item = { type: 'Separator' };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_UPLOAD, showTextOn: mode };\n break;\n case 'SortBy':\n item = {\n id: itemId, tooltipText: itemTooltip,\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\">' + spanElement + '</button>'\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: CLS.ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\" aria-label=' +\n getLocaleText(this.parent, 'View') + '></button>'\n };\n break;\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip };\n break;\n }\n items.push(item);\n }\n return items;\n };\n Toolbar.prototype.getId = function (id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n };\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.showPaste, this.showPaste, this);\n this.parent.on(events.hidePaste, this.hidePaste, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.sortByChange, this.updateSortByButton, this);\n };\n Toolbar.prototype.reRenderToolbar = function (e) {\n var _this = this;\n if (e.newProp.toolbarSettings.items !== undefined) {\n this.items = this.toolbarItemData(this.getItems(e.newProp.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n if (_this.buttonObj) {\n _this.buttonObj.destroy();\n }\n if (_this.layoutBtnObj) {\n _this.layoutBtnObj.destroy();\n }\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj.items = _this.items;\n _this.toolbarObj.dataBind();\n _this.toolbarCreateHandler();\n });\n }\n };\n Toolbar.prototype.onSelectionChanged = function () {\n this.hideStatus();\n this.hideItems(this.single, true);\n this.hideItems(this.selection, false);\n if (this.parent.selectedItems.length === 1) {\n this.hideItems(this.single, false);\n this.hideItems(this.selection, true);\n }\n else if (this.parent.selectedItems.length > 1) {\n this.hideItems(this.multiple, false);\n this.hideItems(this.selection, true);\n }\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele) {\n var txt = void 0;\n if (this.parent.selectedItems.length === 1) {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Item-Selection');\n }\n else {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Items-Selection');\n }\n select('.e-tbar-btn-text', ele).textContent = txt;\n this.toolbarObj.hideItem(ele.parentElement, false);\n }\n };\n Toolbar.prototype.hideItems = function (tools, toHide) {\n for (var i = 0; i < tools.length; i++) {\n var ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n };\n Toolbar.prototype.hideStatus = function () {\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n };\n Toolbar.prototype.showPaste = function () {\n this.hideItems(['Paste'], false);\n };\n Toolbar.prototype.hidePaste = function () {\n this.hideItems(['Paste'], true);\n };\n Toolbar.prototype.onLayoutChange = function () {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE;\n var items = this.layoutBtnObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('large')) {\n items[itemCount].iconCss = this.parent.view === 'LargeIcons' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('details')) {\n items[itemCount].iconCss = this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.showPaste, this.showPaste);\n this.parent.off(events.hidePaste, this.hidePaste);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.sortByChange, this.updateSortByButton);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n this.reRenderToolbar(e);\n break;\n }\n }\n };\n Toolbar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.destroy();\n }\n this.toolbarObj.destroy();\n this.parent.refreshLayout();\n };\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n var ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { TreeView as BaseTreeView } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, select, setValue, getValue, Draggable } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, closest } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { createDialog } from '../pop-up/dialog';\nimport { updatePath, getPath, getDirectories } from '../common/utility';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getDirectoryPath, getModule } from '../common/index';\nimport { copyFiles, cutFiles, removeActive, pasteHandler, getParentPath, readDropPath } from '../common/index';\nimport { hasEditAccess, createDeniedDialog, hasDownloadAccess, getAccessClass } from '../common/index';\n/**\n * NavigationPane module\n */\nvar NavigationPane = /** @class */ (function () {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function NavigationPane(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n this.expandTree = false;\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.renameParent = null;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: 'ctrl+x',\n ctrlC: 'ctrl+c',\n ctrlV: 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n NavigationPane.prototype.onInit = function () {\n if (!isNOU(this.treeObj)) {\n return;\n }\n // eslint-disable-next-line\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', rootData);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new BaseTreeView({\n fields: {\n dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name',\n hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'\n },\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + CLS.TREE_ID);\n this.wireEvents();\n };\n NavigationPane.prototype.addDragDrop = function () {\n var _this = this;\n if (!this.parent.isMobile && this.treeObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.treeObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n dragTarget: '.' + CLS.FULLROW,\n distance: 5,\n dragArea: this.parent.element,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: true,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n NavigationPane.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(CLS.FULLROW)) {\n return null;\n }\n var dragLi = closest(dragTarget, 'li');\n this.parent.dragPath = '';\n this.parent.dragData = [];\n this.parent.activeElements = [];\n this.parent.activeElements = [dragLi];\n this.parent.dragNodes = [];\n getModule(this.parent, dragLi);\n // eslint-disable-next-line\n this.parent.dragData = this.getTreeData(dragLi);\n this.parent.dragPath = this.getDragPath(dragLi, this.parent.dragData[0].name);\n this.parent.dragNodes.push(this.parent.dragData[0].name);\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n NavigationPane.prototype.getDragPath = function (dragLi, text) {\n var path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n };\n NavigationPane.prototype.getDropPath = function (node, text) {\n var id = node.getAttribute('data-id');\n var newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId);\n };\n NavigationPane.prototype.onDrowNode = function (args) {\n var eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n // eslint-disable-next-line\n var directories = getDirectories(files);\n if (directories.length > 0) {\n var length_1 = 0;\n // eslint-disable-next-line\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line\n folders[length_1]._fm_icon = 'e-fe-folder';\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', folders[length_1]);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length_1])) {\n setValue('class', getAccessClass(folders[length_1]), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length_1]);\n }\n length_1++;\n }\n // eslint-disable-next-line\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n };\n NavigationPane.prototype.onNodeSelected = function (args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent) {\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n // eslint-disable-next-line\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n if (!this.renameParent) {\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n }\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n updatePath(args.node, this.parent.itemData[0], this.parent);\n this.expandNodeTarget = null;\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = args.node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.onPathDrag = function (args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpand = function (args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n var text = getValue('text', args.nodeData);\n var id = args.node.getAttribute('data-id');\n var isId = isNOU(id) ? false : true;\n var newText = isNOU(id) ? text : id;\n var path = getPath(args.node, newText, isId);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpanded = function (args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n };\n NavigationPane.prototype.onNodeClicked = function (args) {\n this.parent.activeModule = 'navigationpane';\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n var layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(events.modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeEditing = function (args) {\n if (!isNOU(args.innerHtml)) {\n args.cancel = true;\n }\n };\n NavigationPane.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n // eslint-disable-next-line\n var currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n var ul = select('.' + CLS.LIST_PARENT, sNode);\n if (isNOU(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], !this.expandTree);\n }\n this.expandNodeTarget = '';\n }\n this.expandTree = false;\n if (isNOU(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + CLS.LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.selectedNodes = [sleId];\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + CLS.ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.removeChildNodes(id);\n this.addChild(args.files, id, false);\n this.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n };\n NavigationPane.prototype.onCreateEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n };\n NavigationPane.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n var name_1 = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name_1], this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDeleteEnd = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n var selectedNode = this.treeObj.selectedNodes[0];\n var selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n var selectedNodeEle = closest(selcetedEle, '.' + CLS.LIST_PARENT).parentElement;\n this.treeObj.selectedNodes = [selectedNodeEle.getAttribute('data-uid')];\n this.treeObj.dataBind();\n }\n this.updateTree(args);\n };\n NavigationPane.prototype.onRefreshEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEndParent = function (args) {\n var id = this.renameParent ? this.renameParent : this.parent.pathId[this.parent.pathId.length - 1];\n this.expandTree = this.treeObj.expandedNodes.indexOf(this.treeObj.selectedNodes[0]) !== -1;\n this.updateTreeNode(args, id);\n this.parent.expandedId = null;\n if (this.renameParent) {\n this.renameParent = null;\n }\n else {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.renameText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('_fm_pId', 'equal', id, false));\n }\n }\n if (resultData.length > 0) {\n this.isRenameParent = true;\n var id_1 = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEnd = function (args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData();\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(data).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(data).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.currentItemText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n this.renameParent = getValue(this.treeObj.fields.parentID, resultData[0]);\n this.parent.expandedId = this.renameParent;\n this.parent.itemData = this.getTreeData(this.renameParent);\n read(this.parent, events.renameEndParent, this.parent.filterPath.replace(/\\\\/g, '/'));\n }\n }\n };\n NavigationPane.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, events.finalizeEnd, '/');\n break;\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDownLoadInit = function () {\n this.doDownload();\n };\n NavigationPane.prototype.onSelectionChanged = function (e) {\n this.treeObj.selectedNodes = [e.selectedNode];\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchDrag) {\n moveNames = this.getMoveNames(args.files, this.parent.isSearchDrag, this.parent.dragPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getMoveNames = function (files, flag, path) {\n var moveNames = [];\n for (var i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n var name_2 = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n var index = path.lastIndexOf('/');\n name_2 = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n // eslint-disable-next-line\n var resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name_2, false));\n for (var j = 0; j < resultData.length; j++) {\n var fPath = getValue('filterPath', resultData[j]);\n fPath = fPath.replace(/\\\\/g, '/');\n if (fPath === path) {\n moveNames.push(getValue(this.treeObj.fields.id, resultData[j]));\n break;\n }\n }\n }\n }\n }\n return moveNames;\n };\n NavigationPane.prototype.onCutEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchCut) {\n this.moveNames = this.getMoveNames(args.files, this.parent.isSearchCut, this.parent.targetPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n // eslint-disable-next-line\n var data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n // eslint-disable-next-line\n var resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n this.treeObj.selectedNodes = [getValue('_fm_id', resultObj)];\n this.treeObj.dataBind();\n }\n };\n NavigationPane.prototype.onDropPath = function (args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n };\n NavigationPane.prototype.onpasteEnd = function (args) {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', getValue('id', args.cwd), false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', getValue('name', args.cwd), false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', getValue('filterPath', args.cwd), false));\n }\n }\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1;\n this.removeChildNodes(id);\n this.addChild(args.files, id, toExpand);\n }\n this.parent.expandedId = null;\n this.onPathChanged(args);\n if (this.parent.isDragDrop) {\n this.checkDropPath(args);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.checkDropPath = function (args) {\n if (this.parent.hasId) {\n this.parent.isDropEnd = !this.parent.isPasteError;\n readDropPath(this.parent);\n return;\n }\n if ((this.parent.dropPath.indexOf(getDirectoryPath(this.parent, args)) === -1)) {\n this.parent.isDropEnd = false;\n readDropPath(this.parent);\n }\n else {\n this.parent.isDropEnd = !this.parent.isPasteError;\n }\n };\n NavigationPane.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n // eslint-disable-next-line\n var obj = this.parent.isDragDrop ? this.parent.dragData : this.parent.actionRecords;\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n };\n NavigationPane.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.activeElements = [this.activeNode];\n }\n };\n NavigationPane.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.downloadInit, this.onDownLoadInit, this);\n this.parent.on(events.initialEnd, this.onInitialEnd, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutEnd, this.onCutEnd, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.nodeExpand, this.onNodeExpanded, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.updateTreeSelection, this.onSelectionChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.openEnd, this.onOpenEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.renameEndParent, this.onRenameEndParent, this);\n this.parent.on(events.clearPathInit, this.onClearPathInit, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.dragEnd, this.onDragEnd, this);\n this.parent.on(events.dragging, this.onDragging, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.pathDrag, this.onPathDrag, this);\n };\n NavigationPane.prototype.removeEventListener = function () {\n this.parent.off(events.initialEnd, this.onInitialEnd);\n this.parent.off(events.downloadInit, this.onDownLoadInit);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutEnd, this.onCutEnd);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.updateTreeSelection, this.onSelectionChanged);\n this.parent.off(events.nodeExpand, this.onNodeExpanded);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onOpenEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.renameEndParent, this.onRenameEndParent);\n this.parent.off(events.clearPathInit, this.onClearPathInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.dragEnd, this.onDragEnd);\n this.parent.off(events.dragging, this.onDragging);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.pathDrag, this.onPathDrag);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n // eslint-disable-next-line\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDragging = function (args) {\n var ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n var level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n };\n NavigationPane.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, 'li');\n this.parent.dropData = this.getTreeData(dropLi)[0];\n this.parent.dropPath = this.getDropPath(dropLi, getValue('name', this.parent.dropData));\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'navigationpane';\n };\n NavigationPane.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.treeObj) {\n this.unWireEvents();\n this.treeObj.destroy();\n }\n };\n NavigationPane.prototype.wireEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n NavigationPane.prototype.unWireEvents = function () {\n this.keyboardModule.destroy();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.keyDown = function (e) {\n var action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n 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 break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n if (!hasEditAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionEdit);\n }\n else {\n this.updateRenameData();\n createDialog(this.parent, 'Rename');\n }\n }\n break;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getTreeData = function (args) {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData(args);\n for (var i = 0; i < data.length; i++) {\n if (isNOU(getValue('hasChild', data[i]))) {\n setValue('hasChild', false, data[i]);\n }\n }\n return data;\n };\n NavigationPane.prototype.updateRenameData = function () {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n };\n NavigationPane.prototype.updateItemData = function () {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n };\n NavigationPane.prototype.updateActionData = function () {\n this.updateItemData();\n var newPath = getParentPath(this.parent.path);\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathId.pop();\n this.parent.pathNames.pop();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.doDownload = function () {\n var newPath = getParentPath(this.parent.path);\n var itemId = this.treeObj.selectedNodes[0];\n var name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n };\n return NavigationPane;\n}());\nexport { NavigationPane };\n","import { Grid, Resize, ContextMenu, Sort, VirtualScroll } from '@syncfusion/ej2-grids';\nimport { select, KeyboardEvents, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, Touch, setValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Internationalization, closest, Draggable } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\nimport { removeBlur, openAction, getImageUrl, fileType, getSortedData, getLocaleText, updateLayout } from '../common/utility';\nimport { createEmptyElement } from '../common/utility';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { cutFiles, addBlur, openSearchFolder, copyFiles, removeActive, pasteHandler, getPathObject, getName } from '../common/index';\nimport { hasReadAccess, hasEditAccess, hasDownloadAccess, doRename, getAccessClass, createDeniedDialog, rename } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule, getFullPath } from '../common/index';\nimport { getDirectoryPath, updateRenamingData, getItemName, doDeleteFiles, doDownloadFiles } from '../common/index';\n/**\n * DetailsView module\n */\nvar DetailsView = /** @class */ (function () {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n function DetailsView(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.pasteOperation = false;\n this.uploadOperation = false;\n Grid.Inject(Resize, ContextMenu, Sort, VirtualScroll);\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.GRID_ID, this.parent.element);\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n tab: 'tab',\n moveDown: 'downarrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n ctrlUp: 'ctrl+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n end: 'end',\n home: 'home',\n moveUp: 'uparrow',\n del: 'delete',\n ctrlX: 'ctrl+x',\n ctrlC: 'ctrl+c',\n ctrlV: 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftdel: 'shift+delete',\n ctrlD: 'ctrl+d',\n f2: 'f2',\n ctrlA: 'ctrl+a',\n enter: 'enter'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n if (this.parent.isMobile) {\n sortSettings = [];\n }\n else {\n if (this.parent.sortOrder !== 'None') {\n sortSettings = [{ direction: this.parent.sortOrder, field: this.parent.sortBy }];\n }\n }\n this.gridObj = new Grid({\n dataSource: items,\n allowSorting: true,\n rowSelecting: this.onSelection.bind(this, 'select'),\n rowDeselecting: this.onSelection.bind(this, 'unselect'),\n rowSelected: this.onSelected.bind(this),\n rowDeselected: this.onDeSelection.bind(this),\n allowResizing: this.parent.detailsViewSettings.columnResizing,\n selectionSettings: {\n type: this.parent.allowMultiSelection ? 'Multiple' : 'Single',\n checkboxMode: 'ResetOnRowClick'\n },\n enableRtl: this.parent.enableRtl,\n pageSettings: { pageSize: 20 },\n sortSettings: { allowUnsort: false, columns: sortSettings },\n columns: columns,\n recordDoubleClick: this.DblClickEvents.bind(this),\n beforeDataBound: this.onBeforeDataBound.bind(this),\n dataBound: this.onDataBound.bind(this),\n rowDataBound: this.onRowDataBound.bind(this),\n actionBegin: this.onActionBegin.bind(this),\n headerCellInfo: this.onHeaderCellInfo.bind(this),\n width: '100%',\n beforeCopy: function (args) { args.cancel = true; },\n // eslint-disable-next-line\n load: function (args) {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\n });\n this.gridObj.isStringTemplate = true;\n this.gridObj.appendTo('#' + this.parent.element.id + CLS.GRID_ID);\n this.wireEvents();\n this.adjustHeight();\n this.emptyArgs = args;\n }\n };\n DetailsView.prototype.checkNameWidth = function () {\n var initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (var i = 0; i < initialColumn.length; i++) {\n if (initialColumn[i].field === 'name') {\n this.isNameWidth = !isNOU(initialColumn[i].width);\n return;\n }\n }\n };\n DetailsView.prototype.adjustWidth = function (columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n var nameWidth = void 0;\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n nameWidth = (this.element.clientWidth <= 500) ? '120px' : 'auto';\n }\n else {\n nameWidth = (this.element.clientWidth <= 680) ? ((fieldName === 'name') ? '120px' : '180px') : 'auto';\n }\n columns[i].width = nameWidth;\n }\n }\n };\n DetailsView.prototype.getColumns = function () {\n var columns;\n if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: '<div class=\"e-fe-text\">${name}</div><div class=\"e-fe-date\">${_fm_modified}</div>' +\n '<span class=\"e-fe-size\">${size}</span>'\n }\n ];\n }\n else {\n columns = JSON.parse(JSON.stringify(this.parent.detailsViewSettings.columns));\n this.adjustWidth(columns, 'name');\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].headerText = getLocaleText(this.parent, columns[i].headerText);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth, template: '<span class=\"e-fe-icon ${_fm_iconClass}\"></span>',\n allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: '<span class=\"e-fe-icon e-fe-folder\"></span>'\n };\n columns.unshift(icon);\n if (this.parent.allowMultiSelection) {\n var cWidth = (this.parent.isBigger ? '36' : '26');\n var cBox = {\n type: 'checkbox', width: cWidth, minWidth: cWidth, customAttributes: { class: 'e-fe-checkbox' },\n allowResizing: false, allowSorting: false\n };\n if (this.parent.isMobile) {\n columns.push(cBox);\n }\n else {\n columns.unshift(cBox);\n }\n }\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n return columns;\n };\n DetailsView.prototype.adjustHeight = function () {\n if (!this.gridObj) {\n return;\n }\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n var gridHeader = select('.' + CLS.GRID_HEADER, this.parent.element);\n var height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n };\n DetailsView.prototype.renderCheckBox = function () {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n };\n DetailsView.prototype.onRowDataBound = function (args) {\n var td = select('.e-fe-grid-name', args.row);\n if (!td) {\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'name') {\n td = args.row.children[this.parent.allowMultiSelection ? (i + 2) : (i + 1)];\n break;\n }\n }\n }\n if (td) {\n td.setAttribute('title', getValue('name', args.data));\n }\n if (this.parent.isLayoutChange && this.parent.isCut && this.parent.fileAction === 'move' &&\n this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n if (this.parent.selectedNodes.indexOf(getValue('name', args.data)) !== -1) {\n addBlur(args.row);\n }\n }\n if (!this.parent.showFileExtension && getValue('isFile', args.data)) {\n var textEle = args.row.querySelector('.e-fe-text');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n var sizeEle = args.row.querySelector('.e-fe-size');\n var modifiedSize = void 0;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n var sizeValue = getValue('size', args.data);\n var intl = new Internationalization(this.parent.locale);\n var value = intl.formatNumber((sizeValue / 1024), { format: 'n' });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n var dateEle = args.row.querySelector('.e-fe-date');\n var intl = new Internationalization(this.parent.locale);\n var columns = this.parent.detailsViewSettings.columns;\n // eslint-disable-next-line\n var format = void 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n var formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n var checkWrap = args.row.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n if (!hasEditAccess(args.data)) {\n args.row.className += ' ' + getAccessClass(args.data);\n }\n var eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n DetailsView.prototype.onActionBegin = function (args) {\n if (args.requestType === 'sorting') {\n this.parent.setProperties({ sortOrder: args.direction }, true);\n this.parent.setProperties({ sortBy: args.columnName }, true);\n if (this.parent.selectedItems.length !== 0) {\n this.sortItem = true;\n var rows = this.gridObj.getSelectedRowIndexes();\n var len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.sortSelectedNodes.push(getValue(this.parent.hasId ? 'id' : 'name', data));\n len--;\n }\n }\n this.parent.notify(events.sortByChange, {});\n }\n };\n DetailsView.prototype.onHeaderCellInfo = function (args) {\n var checkWrap = args.node.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n };\n DetailsView.prototype.onBeforeDataBound = function (args) {\n showSpinner(this.parent.element);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, this.gridObj.dataSource);\n args.result = items;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if (this.parent.selectedItems.length !== 0) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem) {\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n var hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n var hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n var hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.classList.remove('e-scrollShow');\n }\n this.isRendered = true;\n this.parent.isLayoutChange = false;\n hideSpinner(this.parent.element);\n this.checkEmptyDiv(this.emptyArgs);\n this.isInteracted = this.isLoaded ? true : this.isInteracted;\n this.isLoaded = false;\n };\n DetailsView.prototype.selectRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var sRecords = [];\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var items = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var rData = [];\n if (this.parent.hasId) {\n rData = new DataManager(items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (nData.length > 0) {\n rData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (rData.length > 0) {\n var index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n };\n DetailsView.prototype.onSortColumn = function () {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n };\n DetailsView.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'detailsViewSettings':\n if (!isNullOrUndefined(this.gridObj)) {\n this.checkNameWidth();\n var columns = this.getColumns();\n this.gridObj.columns = columns;\n this.gridObj.allowResizing = this.parent.detailsViewSettings.columnResizing;\n this.gridObj.dataBind();\n this.gridObj.refreshColumns();\n }\n break;\n case 'selectedItems':\n this.interaction = false;\n if (this.parent.selectedItems.length !== 0) {\n if (!this.parent.allowMultiSelection) {\n var slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNOU(this.gridObj)) {\n this.gridObj.clearSelection();\n }\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n };\n DetailsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) {\n this.parent.searchedItems = [];\n if (!this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n else {\n this.updatePathColumn();\n }\n }\n removeBlur(this.parent);\n if (this.parent.view === 'Details') {\n /* istanbul ignore next */\n this.isInteracted = false;\n showSpinner(this.parent.element);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n }\n this.emptyArgs = args;\n };\n DetailsView.prototype.updatePathColumn = function () {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n var pathColumn = {\n field: 'filterPath', headerText: getLocaleText(this.parent, 'Path'), minWidth: 180, width: 'auto'\n };\n this.gridObj.columns.push(pathColumn);\n this.adjustWidth(this.gridObj.columns, 'filterPath');\n this.adjustWidth(this.gridObj.columns, 'name');\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n };\n DetailsView.prototype.checkEmptyDiv = function (args) {\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n if (items.length === 0 && !isNOU(this.element.querySelector('.' + CLS.GRID_VIEW))) {\n createEmptyElement(this.parent, this.element, args);\n }\n else if (items.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n if (this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY)) {\n var emptyDiv = this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY);\n this.element.querySelector('.' + CLS.GRID_VIEW).removeChild(emptyDiv);\n }\n else {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n }\n };\n DetailsView.prototype.onOpenInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n // eslint-disable-next-line\n var data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n };\n DetailsView.prototype.DblClickEvents = function (args) {\n this.gridObj.selectRows([args.rowIndex]);\n // eslint-disable-next-line\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.openContent = function (data) {\n var _this = this;\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var name_2 = getValue('name', data);\n if (getValue('isFile', data)) {\n var icon = fileType(data);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, data);\n createImageDialog(_this.parent, name_2, imgUrl);\n }\n }\n else {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', data);\n var newPath = _this.parent.path + (isNOU(id) ? name_2 : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(name_2);\n _this.parent.pathId.push(getValue('_fm_id', data));\n _this.parent.itemData = [data];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, data);\n }\n _this.parent.isFiltered = false;\n }\n _this.element.focus();\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(events.hideLayout, {});\n this.gridObj.element.classList.remove(CLS.DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSearchFiles = function (args) {\n if (this.parent.view === 'Details') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (!this.parent.isLayoutChange) {\n this.parent.layoutSelectedItems = [];\n }\n this.updatePathColumn();\n this.parent.searchedItems = args.files;\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.removePathColumn = function (isRefresh) {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath')) {\n /* istanbul ignore next */\n if (this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n this.parent.notify(events.sortByChange, {});\n }\n this.gridObj.columns.pop();\n if (!isRefresh) {\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n }\n };\n DetailsView.prototype.onFinalizeEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n };\n DetailsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n DetailsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n };\n DetailsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n };\n DetailsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.isInteracted = false;\n this.removePathColumn(false);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.emptyArgs = args;\n };\n DetailsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n DetailsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'Details') {\n this.isInteracted = false;\n if (this.parent.allowMultiSelection) {\n this.gridObj.selectionModule.selectRowsByRange(0, this.gridObj.getRows().length);\n }\n else {\n this.gridObj.selectRow(this.gridObj.getRows().length - 1);\n }\n this.isInteracted = true;\n this.interaction = true;\n }\n };\n DetailsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelectionChanged = function () {\n removeClass([this.element], CLS.HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], CLS.HEADER_CHECK);\n }\n };\n DetailsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n };\n DetailsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n DetailsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n DetailsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.addEventListener = function () {\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.search, this.onSearchFiles, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.sortColumn, this.onSortColumn, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n this.parent.on(events.pasteInit, this.onPasteInit, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.resizeEnd, this.onDetailsResizeHandler, this);\n this.parent.on(events.splitterResize, this.onDetailsResize, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n };\n DetailsView.prototype.removeEventListener = function () {\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteInit, this.onPasteInit);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.search, this.onSearchFiles);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.filterEnd, this.onPathChanged);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.sortColumn, this.onSortColumn);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.resizeEnd, this.onDetailsResizeHandler);\n this.parent.off(events.splitterResize, this.onDetailsResize);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n };\n DetailsView.prototype.onActionFailure = function () { this.interaction = true; };\n // eslint-disable-next-line\n DetailsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n };\n DetailsView.prototype.onPasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n };\n DetailsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n DetailsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n var name = dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n // eslint-disable-next-line\n this.parent.dragData = this.gridObj.getSelectedRecords();\n var dragRow;\n if (this.parent.dragData.length === 0 && dragLi) {\n dragRow = this.gridObj.getRowInfo(dragLi);\n }\n if (dragRow) {\n this.parent.dragData.push(dragRow.rowData);\n }\n this.parent.dragPath = this.parent.path;\n this.parent.activeElements = this.gridObj.getSelectedRows();\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDetailsResize = function () {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n var gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n var gridHeaderColGroup = gridHeader.firstChild.childNodes[0];\n var gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n var gridHeaderColNames = this.gridObj.getColumns();\n for (var i = 0; i < gridHeaderColNames.length; i++) {\n if ((!this.isNameWidth && gridHeaderColNames[i].field === 'name') || gridHeaderColNames[i].field === 'filterPath') {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n if (this.element.clientWidth <= 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 180px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 180px');\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n }\n }\n }\n };\n DetailsView.prototype.onDetailsResizeHandler = function () {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n this.adjustHeight();\n }\n };\n DetailsView.prototype.createDragObj = function () {\n var _this = this;\n if (!this.parent.isMobile && this.gridObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + CLS.ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: true,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (!args.target.closest('tr')) {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n else {\n // eslint-disable-next-line\n var info = null;\n // eslint-disable-next-line\n info = this.gridObj.getRowInfo(args.target).rowData;\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n }\n };\n DetailsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n };\n DetailsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {\n this.onPathChanged(args);\n }\n }\n };\n DetailsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns modules name.\n * @private\n */\n DetailsView.prototype.getModuleName = function () {\n return 'detailsview';\n };\n DetailsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n this.unWireEvents();\n this.gridObj.destroy();\n }\n };\n DetailsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelection = function (action, args) {\n var eventArgs = {\n action: action, fileDetails: args.data, isInteracted: this.interaction, cancel: false, target: args.target\n };\n this.parent.trigger('fileSelection', eventArgs);\n args.cancel = eventArgs.cancel;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelected = function (args) {\n this.parent.activeModule = 'detailsview';\n if (!this.parent.isLayoutChange || this.parent.isFiltered) {\n this.selectedRecords();\n }\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.getSelectedRowIndexes().length === 1) {\n this.firstItemIndex = this.gridObj.selectedRowIndex;\n }\n this.gridObj.element.setAttribute('tabindex', '-1');\n this.triggerSelect('select', args);\n var item = this.gridObj.getRowByIndex(this.gridObj.selectedRowIndex);\n this.updateType(item);\n if (!isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n if (this.gridObj.getSelectedRowIndexes().length !== 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\n item.querySelector('.e-rowcell.e-fe-checkbox').removeAttribute('tabindex');\n }\n if (!isNOU(this.gridObj) && !isNOU(this.gridObj.element.querySelector('.e-checkselectall'))) {\n this.gridObj.element.querySelector('.e-checkselectall').setAttribute('tabindex', '-1');\n }\n var rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i] === this.gridObj.selectedRowIndex) {\n this.gridObj.getRowByIndex(rows[i]).setAttribute('tabindex', '0');\n }\n else {\n this.gridObj.getRowByIndex(rows[i]).removeAttribute('tabindex');\n }\n }\n }\n var len = rows.length;\n if (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n var indexes = getValue('rowIndexes', args);\n var multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNOU(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if (this.parent.allowMultiSelection && !isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n var checkItem = item.querySelector('.e-checkselect');\n checkItem.focus();\n }\n this.addFocus(this.gridObj.selectedRowIndex);\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'Details' && !isNOU(this.gridObj)) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n }\n };\n DetailsView.prototype.selectedRecords = function () {\n this.parent.setProperties({ selectedItems: [] }, true);\n // eslint-disable-next-line\n var selectedRecords = this.gridSelectNodes();\n var selectSize = 0;\n while (selectSize < selectedRecords.length) {\n var record = selectedRecords[selectSize];\n var name_3 = getItemName(this.parent, record);\n this.parent.selectedItems.push(name_3);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n };\n DetailsView.prototype.onDeSelection = function (args) {\n /* istanbul ignore next */\n if (!this.parent.allowMultiSelection && isNOU(args.data)) {\n this.gridObj.getRowByIndex(args.rowIndex).removeAttribute('tabindex');\n }\n else if (this.gridObj.getSelectedRowIndexes().length > 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n this.gridObj.getRowByIndex(lastItemIndex).querySelector('.e-checkselect').removeAttribute('tabindex');\n }\n if (this.gridObj.selectedRowIndex === -1) {\n this.gridObj.element.setAttribute('tabindex', '0');\n }\n if (!this.isInteracted) {\n this.isInteracted = true;\n return;\n }\n this.selectedRecords();\n if (this.parent.selectedItems.length === 0) {\n setValue('enableSelectMultiTouch', false, this.gridObj.selectionModule);\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('unselect', args);\n this.parent.visitedItem = null;\n };\n DetailsView.prototype.triggerSelect = function (action, args) {\n var eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n };\n DetailsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.gridObj.element, {\n keyAction: this.keyupHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.gridObj.element, 'blur', this.removeFocus, this);\n };\n DetailsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n var ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: function (eve) {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n proxy_1.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (proxy_1.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', proxy_1.parent.allowMultiSelection, proxy_1.gridObj.selectionModule);\n addClass([proxy_1.parent.element], CLS.MULTI_SELECT);\n }\n var target = e.originalEvent.target;\n if (target) {\n var row = closest(target, '.' + CLS.ROW);\n var index = proxy_1.gridObj.getRows().indexOf(row);\n proxy_1.gridObj.selectRow(index);\n }\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.removeSelection = function () {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n this.gridObj.clearSelection();\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.selectedRowIndex === -1) {\n this.startIndex = null;\n }\n this.isInteracted = true;\n };\n DetailsView.prototype.removeFocus = function () {\n this.addFocus(null);\n };\n DetailsView.prototype.getFocusedItemIndex = function () {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('aria-rowindex'), 10) : null;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n DetailsView.prototype.keydownHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n // eslint-disable-next-line\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focItem = this.getFocusedItem();\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n // eslint-disable-next-line\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1) {\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n // eslint-disable-next-line\n var data = JSON.parse(JSON.stringify(rowData));\n this.openContent(data);\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlA':\n if (!isNOU(gridItems[0]) && this.parent.allowMultiSelection) {\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n var crtSrlPos = cnTable.scrollTop;\n var crtFocusIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n cnTable.scrollTop = crtSrlPos;\n if (crtFocusIndex !== -1) {\n this.addFocus(crtFocusIndex);\n }\n }\n break;\n case 'ctrlHome':\n case 'tab':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {\n this.gridObj.selectRow(0);\n }\n else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {\n return;\n }\n else {\n this.addFocus(0);\n }\n }\n break;\n case 'ctrlEnd':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow(gridLength - 1);\n }\n else {\n this.addFocus(gridLength - 1);\n }\n }\n break;\n case 'shiftHome':\n case 'shiftEnd':\n case 'csHome':\n case 'csEnd':\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : gridItems.length - 1);\n }\n else {\n if (!isNOU(gridItems[0])) {\n if (!isNOU(selIndex) && selIndex !== -1) {\n this.checkRowsKey(gridItems, selIndex, null, e);\n }\n else {\n if (e.action === 'csHome' || e.action === 'shiftHome') {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n }\n }\n }\n }\n break;\n case 'space':\n case 'csSpace':\n case 'shiftSpace':\n case 'ctrlSpace':\n this.spaceSelection(selRowIndeces, focIndex, selIndex, e);\n break;\n case 'csUp':\n case 'csDown':\n case 'shiftUp':\n case 'shiftDown':\n this.shiftMoveMethod(gridItems, selIndex, focIndex, selRowIndeces, e);\n break;\n case 'ctrlUp':\n case 'ctrlDown':\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n break;\n case 'home':\n firstItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[0])];\n this.parent.setProperties({ selectedItems: firstItem }, true);\n this.selectRecords(firstItem);\n break;\n case 'moveUp':\n case 'moveDown':\n this.moveFunction(gridItems, e, selIndex);\n break;\n case 'end':\n lastItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[gridLength - 1])];\n this.parent.setProperties({ selectedItems: lastItem }, true);\n this.selectRecords(lastItem);\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.gridSelectNodes = function () {\n return this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.doDownload = function () {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionDownload);\n return;\n }\n }\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n };\n DetailsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasEditAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n DetailsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n DetailsView.prototype.updateRenameData = function () {\n // eslint-disable-next-line\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftMoveMethod = function (gridItems, selIndex, focIndex, selRowIndeces, e) {\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n if (selIndex === -1 && (e.action === 'csUp' || e.action === 'csDown')) {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n else if (selIndex !== -1 && focIndex !== selIndex &&\n !((e.action === 'csUp' || e.action === 'csDown') && this.isSelected(selRowIndeces, focIndex))) {\n this.shiftSelectFocusItem(selIndex, focIndex, selRowIndeces, e);\n }\n else {\n this.shiftSelectedItem(selIndex, selRowIndeces, gridItems, e);\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.moveFunction = function (selectedItems, e, rowIndex) {\n if (!isNOU(this.getFocusedItem()) && this.parent.allowMultiSelection) {\n if (e.action === 'moveDown') {\n this.gridObj.selectRow(this.getFocusedItemIndex() + 1);\n }\n else {\n this.gridObj.selectRow(this.getFocusedItemIndex() - 1);\n }\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n if (e.action === 'moveDown' || e.action === 'ctrlDown' || e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectRow(rowIndex + ((rowIndex !== selectedItems.length - 1) ? 1 : 0));\n }\n else {\n this.gridObj.selectRow(rowIndex - ((rowIndex !== 0) ? 1 : 0));\n }\n }\n else {\n if (!isNOU(selectedItems[0])) {\n this.gridObj.selectRow(0);\n }\n }\n };\n DetailsView.prototype.spaceSelection = function (selRowIndeces, focIndex, selIndex, e) {\n if (!this.isSelected(selRowIndeces, focIndex) && selIndex !== -1 && (e.action === 'shiftSpace' || e.action === 'csSpace')) {\n if (focIndex < selIndex) {\n this.gridObj.selectionModule.selectRowsByRange(focIndex, selIndex);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(selIndex, focIndex);\n }\n }\n else if (!isNOU(this.getFocusedItem()) && focIndex !== selIndex) {\n selRowIndeces.push(this.getFocusedItemIndex());\n this.gridObj.selectRows(selRowIndeces);\n }\n else if (selIndex !== -1 && e.action === 'ctrlSpace' && this.parent.allowMultiSelection) {\n var lItem = selIndex;\n selRowIndeces.pop();\n this.gridObj.selectRows(selRowIndeces);\n this.addFocus(lItem);\n }\n else if (e.action === 'shiftSpace') {\n this.gridObj.selectRow(selIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.ctrlMoveFunction = function (items, e, rowIndex) {\n var nextItem;\n if (!isNOU(this.getFocusedItem())) {\n var nextIndex = this.getFocusedItemIndex();\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n nextIndex + ((nextIndex < items.length - 1) ? 1 : 0) : nextIndex - ((nextIndex < 1) ? 0 : 1);\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n rowIndex + ((rowIndex < items.length) ? 1 : 0) : rowIndex - ((rowIndex < 1) ? 0 : 1);\n }\n else {\n if (!isNOU(items[0])) {\n nextItem = 0;\n }\n }\n this.addFocus(nextItem);\n };\n // eslint-disable-next-line\n DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {\n if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {\n if (e.action !== 'csHome' && e.action !== 'csEnd') {\n if (isNOU(this.startIndex) && this.firstItemIndex !== indexValue) {\n this.firstItemIndex = indexValue;\n }\n if (e.action === 'shiftEnd') {\n this.gridObj.selectionModule.selectRowsByRange(this.firstItemIndex, items.length - 1);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, this.firstItemIndex);\n }\n this.startIndex = indexValue;\n }\n else {\n if (e.action === 'csEnd') {\n this.gridObj.\n selectRows(this.InnerItems(isNOU(indexValue) ? 0 : indexValue, isNOU(focIndex) ? items.length - 1 : focIndex, e));\n }\n else {\n if (isNOU(indexValue)) {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectRows(this.InnerItems(isNOU(focIndex) ? 0 : focIndex, indexValue, e));\n }\n }\n }\n }\n else {\n this.gridObj.selectionModule.selectRow(((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : items.length - 1));\n }\n };\n DetailsView.prototype.InnerItems = function (fItem, lItem, e) {\n var itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (var i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (var i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n };\n DetailsView.prototype.shiftSelectFocusItem = function (selIndex, fIndex, selRowIndexes, e) {\n var lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n var fItem = isNOU(this.startIndex) ? selIndex : selRowIndexes[0];\n if (fItem === lItem) {\n this.gridObj.selectRow(fItem);\n }\n else {\n if (fItem < lItem) {\n if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n }\n else if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n }\n this.startIndex = this.gridObj.selectedRowIndex;\n };\n DetailsView.prototype.addFocus = function (item) {\n var fItem = this.getFocusedItem();\n var itemElement = this.gridObj.getRowByIndex(item);\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS, CLS.FOCUSED]);\n }\n if (!isNOU(itemElement)) {\n this.gridObj.element.setAttribute('tabindex', '-1');\n itemElement.setAttribute('tabindex', '0');\n itemElement.focus();\n addClass([itemElement], [CLS.FOCUS, CLS.FOCUSED]);\n }\n };\n DetailsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.FOCUSED, this.element);\n };\n DetailsView.prototype.isSelected = function (selRowIndexes, focIndex) {\n var check = false;\n for (var i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftSelectedItem = function (selIndex, selRowIndexes, gridItems, e) {\n if (selIndex === -1) {\n this.gridObj.selectRow(0);\n }\n else {\n if (isNOU(this.startIndex) && e.shiftKey) {\n this.startIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectRows([selIndex, (e.action === 'shiftDown' || e.action === 'csDown') ?\n (selIndex + ((selIndex !== gridItems.length - 1) ? 1 : 0)) : (selIndex - ((selIndex !== 0) ? 1 : 0))]);\n }\n else {\n if (e.action === 'shiftDown' || e.action === 'shiftUp') {\n if (e.action === 'shiftDown' && selRowIndexes.indexOf(selIndex + 1) === -1) {\n if (selIndex !== gridItems.length - 1) {\n selRowIndexes.push(selIndex + 1);\n }\n }\n else if (e.action === 'shiftUp' && selRowIndexes.indexOf(selIndex - 1) === -1) {\n if (selIndex !== 0) {\n selRowIndexes.push(selIndex - 1);\n }\n }\n else {\n selRowIndexes.pop();\n }\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n if (e.action === 'csDown') {\n if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() + 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() + 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() + 1);\n }\n }\n else if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() - 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() - 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() - 1);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.onMethodCall = function (e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n var action = getValue('action', e);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', e));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', e));\n break;\n case 'openFile':\n this.openFile(getValue('id', e));\n break;\n case 'createFolder':\n this.interaction = false;\n break;\n case 'renameFile':\n this.interaction = false;\n this.renameFile(getValue('id', e), getValue('newName', e));\n break;\n case 'selectAll':\n this.interaction = false;\n this.onSelectAllInit();\n break;\n case 'clearSelection':\n this.interaction = false;\n this.onClearAllInit();\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.getRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var records = [];\n var hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filter = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n if (nodes.indexOf(getValue(filter, gridRecords[i])) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n else {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var name_4 = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name_4) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n };\n DetailsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < records.length; i++) {\n data[i] = records[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n // eslint-disable-next-line\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < dRecords.length; i++) {\n data[i] = dRecords[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n };\n DetailsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n updateRenamingData(this.parent, records[0]);\n if (!isNOU(name)) {\n if (hasEditAccess(this.parent.itemData[0])) {\n rename(this.parent, this.parent.path, name);\n }\n else {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n }\n else {\n doRename(this.parent);\n }\n }\n };\n return DetailsView;\n}());\nexport { DetailsView };\n","import * as index from './index';\nindex.FileManager.Inject(index.DetailsView, index.NavigationPane, index.LargeIconsView, index.Toolbar, index.ContextMenu, index.BreadCrumbBar);\nexport * from './index';\n"],"names":["updatePath","node","data","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","getPathId","pathNames","getPathNames","element","matched","getParents","i","length","ids","push","names","isId","el","parentNode","matches","CLS.LIST_ITEM","parentText","select","CLS.LIST_TEXT","textContent","classList","contains","CLS.TREE_VIEW","generatePath","parent","key","newPath","feParent","removeActive","isCut","removeBlur","selectedNodes","actionRecords","enablePaste","notify","events.hidePaste","activeElement","action","isSearchCut","activeElements","events.cutCopyInit","blurEle","activeModule","targetPath","getParentPath","getModule","addBlur","events.showPaste","activeRecords","breadcrumbbarModule","searchObj","value","isFiltered","i_1","selectedItems","nodes","add","CLS.BLUR","hover","querySelectorAll","CLS.HOVER","remove","CLS.ROW","closest","CLS.LARGE_ICON","searchWordHandler","isLayoutChange","searchWord","events.pathColumn","args","searchSettings","filterType","itemData","getPathObject","caseSensitive","ignoreCase","hiddenItems","showHiddenItems","Search","events.layoutChange","events.search","filter","read","updateLayout","view","layoutSelectedItems","getTargetModule","tartgetModule","CLS.LARGE_ICONS","targetModule","refresh","hasReadAccess","events.refreshEnd","createDeniedDialog","events.permissionRead","openAction","events.openEnd","copyFiles","fileAction","cutFiles","fileType","file","CLS.FOLDER","imageFormat","audioFormat","videoFormat","knownFormat","filetype","toLowerCase","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","getImageUrl","item","imgUrl","baseUrl","ajaxSettings","url","fileName","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","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","files","events.isFile","setNodeId","result","rootId","dirs","len","setValue","setDateObject","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","substring","lastIndexOf","field","setNextPath","currfolders","folders","originalPath","root","eventName","events.finalizeEnd","events.initialEnd","openSearchFolder","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","validateSubFolder","events.pasteInit","paste","dropPath","dragPath","subFolder","srcData","dragNodes","code","message","fileExists","createDialog","tempTarget","dropHandler","dragData","dropData","oldPath","getDirectoryPath","cwd","doPasteUpdate","operation","events.dragEnd","events.cutEnd","duplicateItems","pasteNodes","count","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","events.pasteEnd","readDropPath","expandedId","events.pathDrag","navigationpaneModule","treeObj","events.dropPath","getDuplicateData","records","createVirtualDragElement","getItemName","cloneIcon","cloneName","virtualEle","ele","CLS.CLONE","badge","virtualDragElement","dragStopHandler","dragArgs","cancel","treeExpandTimer","window","clearTimeout","removeDropTarget","uploadObj","dropArea","CLS.CONTENT_ID","detach","target","events.dropInit","dragCount","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","draggingHandler","canDrop","setTimeout","events.dragging","objectToString","str","keys","Object","updateRenamingData","currentItemText","isFile","filterPath","doRename","hasEditAccess","events.permissionEdit","doDownload","hasDownloadAccess","events.permissionDownload","Download","doDeleteFiles","newIds","Delete","doDownloadFiles","getAccessClass","permission","hasContentAccess","hasUploadAccess","createNewFolder","details","events.permissionEditContents","uploadItem","eleId","CLS.UPLOAD_ID","document","click","events.permissionUpload","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","fn","type","mode","dataType","contentType","JSON","stringify","onSuccess","onFailure","beforeSend","beforeSendArgs","events.beforeRequest","Ajax","result_1","triggerAjaxFailure","parse","events.afterRequest","rootAliasName","rootName","location_1","RegExp","match","events.searchTextChange","send","events.selectionChanged","dialogObj","visible","parentElement","nextElementSibling","hide","createdItem","events.createEnd","renamedItem","pop","events.renameEndParent","events.renameEnd","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","e","replaceItems","options","getOptions","Dialog","beforeOpen","keydownAction","bind","this","dialogName","beforeClose","triggerPopupBeforeClose","header","content","buttons","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","width","open","close","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","changeOptions","extOptions","getExtOptions","isApplySame","extDialogObj","beforeExtOpen","CLS.EXTN_DIALOG_ID","dataBind","show","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","events.actionFailure","triggerPopupOpen","triggerPopupClose","duplicateContent","index","buttonModel","isPrimary","renameText","item_1","indexval","item_2","ind","retryFiles","onRetryOpen","isRetryOpened","retryDlgClose","retryDlgUpdate","splice","events.skipUpload","isKeepBoth","onKeepBothAll","onReplaceAll","retryArgs","retry","flag","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","checked","focusInput","focus","setSelectionRange","onFolderDialogOpen","createInput","oninput","onValidate","onkeyup","getKeyCode","onSubmit","onRenameDialogOpen","inputEle","onReSubmit","onFocusRenameInput","txt","showFileExtension","placeholder","Input","properties","formattedString","strArr","location","multipleFiles","onDeleteSubmit","Internationalization","formatDate","modified","format","CLS.VALUE","size","map","val","substr","every","arr","toLocaleUpperCase","CLS.ERROR_CONTENT","preventKeydown","selectAll","dlgName","btnElement","btnCount","onkeydown","keyCode","preventDefault","onSubmitValidate","oIndex","renamedId","oldExtension","nIndex","newExtension","events.deleteInit","test","addInvalid","which","charCode","createImageDialog","image","src","alt","viewerObj","height","enableResize","position","X","Y","openImage","resizing","updateImage","resizeStop","CLS.IMG_DIALOG_ID","imgWrap","cssObj","getComputedStyle","paddingWidth","parseFloat","paddingRight","paddingHeight","paddingBottom","offsetWidth","__extends","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","AjaxSettings","_super","apply","Property","ChildProperty","toolbarItems","ToolbarSettings","SearchSettings","columnArray","headerText","minWidth","template","customAttributes","class","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","LAYOUT_ID","GRID_ID","LARGEICON_ID","DIALOG_ID","IMG_DIALOG_ID","EXTN_DIALOG_ID","CONTENT_ID","BREADCRUMBBAR_ID","UPLOAD_ID","ROOT_POPUP","MOB_POPUP","FILTER","LARGE_ICONS","LIST_ITEM","LIST_TEXT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","ACTIVE","HOVER","FOCUS","CHECK","CB_WRAP","ROW","EMPTY","EMPTY_CONTENT","EMPTY_INNER_CONTENT","CLONE","DROP_FOLDER","DROP_FILE","FOLDER","ICON_IMAGE","ICON_MUSIC","ICON_VIDEO","LARGE_ICON","LARGE_EMPTY_FOLDER","GRID_HEADER","TREE_VIEW","MENU_ICON","GRID_VIEW","ICON_CUT","ICON_GRID","ICON_LARGE","ERROR_CONTENT","RTL","DISPLAY_NONE","VALUE","modelChanged","initialEnd","finalizeEnd","createEnd","pathDrag","deleteInit","deleteEnd","refreshEnd","resizeEnd","pathChanged","destroy","beforeRequest","skipUpload","afterRequest","actionFailure","search","openInit","openEnd","selectionChanged","clearPathInit","layoutChange","sortByChange","detailsInit","menuItemData","renameInit","renameEndParent","renameEnd","showPaste","hidePaste","cutCopyInit","pasteInit","pasteEnd","cutEnd","sortColumn","pathColumn","searchTextChange","dropInit","dragEnd","dragging","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","LargeIconsView","isInteraction","uploadOperation","isRendered","tapCount","isPasteOperation","CLS.LARGEICON_ID","addClass","addEventListener","keyConfigs","end","home","tab","moveDown","moveLeft","moveRight","moveUp","ctrlEnd","ctrlHome","ctrlDown","ctrlLeft","ctrlRight","ctrlUp","shiftEnd","shiftHome","shiftDown","shiftLeft","shiftRight","shiftUp","csEnd","csHome","csDown","csLeft","csRight","csUp","space","ctrlSpace","shiftSpace","csSpace","ctrlA","enter","altEnter","esc","del","ctrlX","ctrlC","ctrlV","f2","shiftdel","back","ctrlD","render","visitedItem","startItem","showSpinner","resetMultiSelect","setAttribute","listObj","unWireEvents","removeEventListener","iconsView","ul","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","htmlAttributes","itemCreated","onItemCreated","renderList","listElements","ListBase","createListFromJson","itemList","slice","call","preventImgDrag","createDragObj","CLS.DISPLAY_NONE","emptyList","selectItems","activeEle","CLS.ACTIVE","adjustHeight","maxHeight","getItemCount","wireEvents","hideSpinner","checkItem","ondragstart","_this","Draggable","enableTailMode","distance","enableAutoScroll","dragTarget","helper","dragHelper","cursorAt","dragCursorPosition","dragArea","dragStop","drag","clone","dragStart","sender","dragLi","setFocus","getItemObject","onDropInit","getModuleName","dropLi","cwdData","info","pane","bar","removeAttribute","curData","textEle","renderCheckbox","allowMultiSelection","checkElement","createCheckBox","firstElementChild","insertBefore","childNodes","onLayoutChange","indexes","getIndexes","length_1","checkEle","checkLength","checkState","icon","name_1","selected","showThumbnail","title","onFinalizeEnd","onCreateEnd","clearSelect","largeiconsviewModule","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","addSelection","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","getFirstItem","lastItem","getLastItem","eveArgs","ctrlKey","shiftKey","doSelection","onClearAllInit","clearSelection","onBeforeRequest","onAfterRequest","onSearch","onLayoutRefresh","onUpdateSelectionData","onPathColumn","isDestroyed","off","events.pathChanged","events.openInit","events.modelChanged","onPropertyChanged","events.methodCall","onMethodCall","onActionFailure","events.renameInit","events.menuItemData","onMenuItemData","splitterResizeHandler","events.resizeEnd","resizeHandler","onpasteInit","onpasteEnd","oncutCopyInit","events.detailsInit","onDetailsInit","onDropPath","on","currentSelected","_i","_a","newProp","wireClickEvent","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","keyboardDownModule","keydownActionHandler","EventHandler","onMouseOver","targetEle","toBind","proxy_1","clickObj","Touch","tap","eve","originalEvent","isDevice","tapEvent","doTapAction","dblClickHandler","clickHandler","tapHold","multiSelect","updateType","cList","CLS.CHECK","triggerSelection","startIndex","endIndex","addActive","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","folder","fItem","getFocusedItem","firstItem","navigateItem","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","isVisible","liParent","liScrPos","scrollTop","getCurFocusedItem","dItem","lItem","rItem","uItem","getDataName","preItem","toCheck","CLS.CB_WRAP","eles","getBoundingClientRect","visitedData","j","byId","resultData","newData","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","isFilter","filterName","name_2","BreadCrumbBar","addressPath","addressBarLink","searchTimer","searchWrapWidth","prop","isNullOrUndefined","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","innerText","ulElement","breadCrumbBarNavigation","subMenuObj","searchWrap","updateBreadCrumbBar","addresBarUL","liElements","pRight","getPropertyValue","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","diff","liElement","utext","subMenuLi","attributes","subMenuSpan","DropDownButton","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","nodeName","children","currentPath","triggerFileOpen","treeNodeId","CLS.FILTER","list","liElementId","link","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onResize","onPasteEnd","events.destroy","onSearchTextChange","liEle","ContextMenu","currentItems","currentElement","disabledItems","downarrow","uparrow","contextMenu","Menu","onBeforeItemRender","onSelect","onBeforeOpen","onBeforeClose","getMenuId","iconSpan","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","menuTarget","uid","treeFolder","activeNode","getElementsByClassName","targetElement","getTargetView","updateActiveModule","setLayoutItem","detailsviewModule","gridObj","getRowObjectFromUID","selectRows","parseInt","setFileItem","setFolderItem","pasteEle","isSubMenu","getMenuItemData","menuModule","menuType","menuOpenArgs","enableItems","CLS.GRID_ID","getItemIndex","itemId","disableItem","concat","enable","isUniqueId","checkValidItem","isTree","getItemData","contextMenuSettings","trim","layout","nameEle","menuClickArgs","sItems","separator","CLS.ICON_CUT","CLS.TB_OPTION_DOT","CLS.TB_OPTION_TICK","defaultLocale","NewFolder","Upload","Rename","Cut","Copy","Paste","SortBy","Refresh","Item-Selection","Items-Selection","View","Details","SelectAll","Open","Tooltip-NewFolder","Tooltip-Upload","Tooltip-Delete","Tooltip-Rename","Tooltip-Download","Tooltip-Cut","Tooltip-Copy","Tooltip-Paste","Tooltip-SortBy","Tooltip-Refresh","Tooltip-Selection","Tooltip-View","Tooltip-Details","Tooltip-SelectAll","Name","Size","DateModified","DateCreated","Path","Modified","Created","Location","Type","Permission","Ascending","Descending","None","View-LargeIcons","View-Details","Button-Ok","Button-Cancel","Button-Yes","Button-No","Button-Create","Button-Save","Header-NewFolder","Content-NewFolder","Header-Rename","Content-Rename","Header-Rename-Confirmation","Content-Rename-Confirmation","Header-Delete","Content-Delete","Header-Folder-Delete","Content-Folder-Delete","Header-Multiple-Delete","Content-Multiple-Delete","Header-Duplicate","Content-Duplicate","Header-Upload","Error","Validation-Empty","Validation-Invalid","Validation-NewFolder-Exists","Validation-Rename-Exists","Folder-Empty","File-Upload","Search-Empty","Search-Key","Filter-Empty","Filter-Key","Sub-Folder-Error","Same-Folder-Error","Access-Denied","Access-Details","Header-Retry","Content-Retry","Button-Keep-Both","Button-Replace","Button-Skip","ApplyAll-Label","KB","Access-Message","Network-Error","Server-Error","FileManager","previousPath","nextPath","deleteRecords","isSameAction","persistData","isOpened","left","uploadingCount","uploadedCount","FileManager_1","Inject","preRender","ensurePath","setAttr","formatUnit","Browser","checkMobile","navigationPaneSettings","isBigger","createSpinner","addWrapper","altN","f5","ctrlShift1","ctrlShift2","ctrlU","L10n","getPersistData","keyEntity","addOnPersist","requiredModules","modules","member","toolbarSettings","initialize","slItems","fileView","setRtl","addEventListeners","splitterObj","collapse","renderComplete","addCssClass","renderFileUpload","headerWrap","layoutWrap","navigationWrap","treeWrap","contentWrap","gridWrap","largeiconWrap","role","overlay","paneSettings","min","max","maxWidth","Splitter","splitterResize","dialogWrap","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","toolbar","toolBarHeight","clientHeight","splitterAdjust","expand","oldOne","newOne","onContextMenu","userAgent","uploadEle","uploadDialogObj","onOpen","onClose","renderUploadBox","uploadUrl","Uploader","asyncSettings","saveUrl","removeUrl","uploading","onUploading","removing","onRemoving","clearing","onClearing","onSelected","success","onUploadSuccess","failure","onUploadFailure","autoUpload","uploadSettings","minFileSize","maxFileSize","allowedExtensions","fileListRendering","onFileListRender","updateUploader","clearAll","fileData","customFormData","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","autoClose","response","statusText","onInitialEnd","removeEventListeners","setPath","oldProp","ajaxSettingSetModel","localeSetModelOption","refreshing","CLS.RTL","disableToolbarItems","toolbarModule","enableToolbarItems","disableMenuItems","contextmenuModule","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","rtl","Complex","Event","NotifyPropertyChanges","Component","Toolbar","default","single","multiple","selection","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","created","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","tool","toolbarClickArgs","getPupupId","buttonObj","layoutBtnObj","hideItems","hideStatus","updateSortByButton","itemCount","itemTooltip","spanElement","tooltipText","prefixIcon","showTextOn","suffixIcon","overflow","align","onSelectionChanged","reRenderToolbar","undefined","hideItem","tools","toHide","refreshOverflow","isEnable","NavigationPane","removeNodes","moveNames","expandTree","isDrag","isPathDragged","isRenameParent","isRightClick","renameParent","ctrlShiftN","shiftF10","onInit","rootData","attr","BaseTreeView","dataSource","parentID","expanded","hasChildren","tooltip","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","allowEditing","nodeEditing","onNodeEditing","drawNode","onDrowNode","dataBound","addDragDrop","getTreeData","getDragPath","getDropPath","nodeData","addChild","prevent","directories","_fm_icon","addNodes","expandNodeTarget","onPathDrag","selectResultNode","onNodeExpanded","innerHtml","sNode","updateTree","updateTreeNode","toExpand","expandedNodes","removeChildNodes","childs","onOpenEnd","sleId","expandAll","updateItemData","updateActionData","selcetedEle","selectedNodeEle","onRenameEndParent","nData","id_1","onDownLoadInit","onClearPathInit","onDragEnd","getMoveNames","previousName","onCutEnd","resultObj","itemname","checkDropPath","obj","onDragging","dataobj","level","keyDown","DetailsView","interaction","isColumnRefresh","firstItemIndex","isSelectionUpdate","currentSelectedItem","isLoaded","isNameWidth","Grid","Resize","Sort","VirtualScroll","checkNameWidth","columns","getColumns","sortSettings","direction","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","detailsViewSettings","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","beforeCopy","load","focusModule","emptyArgs","initialColumn","adjustWidth","fieldName","nameWidth","headerTextAlign","iWidth","headerTemplate","unshift","cWidth","cBox","disableHtmlEncode","gridHeader","renderCheckBox","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","intl","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","selectRecords","currentViewData","getRowHeight","hdTable","getHeaderContent","paddingLeft","borderRightWidth","cnTable","getContent","overflowY","checkEmptyDiv","gridRecords","getCurrentViewRecords","sRecords","selectedRowIndex","rData","onSortColumn","sortModule","onDetailsResize","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","selectionModule","selectRowsByRange","getRows","selectRow","removeSelection","onPasteInit","onDetailsResizeHandler","getRowInfo","dragRow","getSelectedRows","gridHeaderColGroup","firstChild","gridContentColGroup","gridHeaderColNames","selectedRecords","getRowByIndex","lastItemIndex","gridSelectNodes","selectSize","record","name_3","keyupHandler","keydownHandler","removeFocus","getFocusedItemIndex","gridItems","gridLength","focIndex","selIndex","selRowIndeces","crtSrlPos","crtFocusIndex","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","isSelected","shiftSelectedItem","shiftSelectFocusItem","nextIndex","indexValue","checkAllRows","InnerItems","itemArr","fIndex","selRowIndexes","itemElement","check","getRecords","hasFilter","name_4","dRecords","index.FileManager","index.DetailsView","index.NavigationPane","index.LargeIconsView","index.Toolbar","index.ContextMenu","index.BreadCrumbBar"],"mappings":"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"}
|