@syncfusion/ej2-filemanager 26.1.40 → 26.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-filemanager.es2015.js","sources":["../src/es6/file-manager/models/ajax-settings.js","../src/es6/file-manager/models/toolbar-settings.js","../src/es6/file-manager/models/search-settings.js","../src/es6/file-manager/models/details-view-settings.js","../src/es6/file-manager/models/contextMenu-settings.js","../src/es6/file-manager/models/navigation-pane-settings.js","../src/es6/file-manager/models/upload-settings.js","../src/es6/file-manager/models/column.js","../src/es6/file-manager/base/classes.js","../src/es6/file-manager/base/constant.js","../src/es6/file-manager/common/utility.js","../src/es6/file-manager/common/operations.js","../src/es6/file-manager/pop-up/dialog.js","../src/es6/file-manager/layout/large-icons-view.js","../src/es6/file-manager/actions/breadcrumb-bar.js","../src/es6/file-manager/pop-up/context-menu.js","../src/es6/file-manager/models/default-locale.js","../src/es6/file-manager/base/file-manager.js","../src/es6/file-manager/actions/toolbar.js","../src/es6/file-manager/actions/virtualization.js","../src/es6/file-manager/layout/navigation-pane.js","../src/es6/file-manager/layout/details-view.js"],"sourcesContent":["var __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 */\nexport class AjaxSettings extends ChildProperty {\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","var __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 const defaultToolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nexport class ToolbarSettings extends ChildProperty {\n}\n__decorate([\n Property(defaultToolbarItems)\n], ToolbarSettings.prototype, \"items\", void 0);\n__decorate([\n Property(true)\n], ToolbarSettings.prototype, \"visible\", void 0);\nexport class ToolbarItem extends ChildProperty {\n}\n__decorate([\n Property('')\n], ToolbarItem.prototype, \"id\", void 0);\n__decorate([\n Property('')\n], ToolbarItem.prototype, \"text\", void 0);\n__decorate([\n Property('auto')\n], ToolbarItem.prototype, \"width\", void 0);\n__decorate([\n Property('')\n], ToolbarItem.prototype, \"cssClass\", void 0);\n__decorate([\n Property(false)\n], ToolbarItem.prototype, \"showAlwaysInPopup\", void 0);\n__decorate([\n Property(false)\n], ToolbarItem.prototype, \"disabled\", void 0);\n__decorate([\n Property('')\n], ToolbarItem.prototype, \"prefixIcon\", void 0);\n__decorate([\n Property('')\n], ToolbarItem.prototype, \"suffixIcon\", void 0);\n__decorate([\n Property(true)\n], ToolbarItem.prototype, \"visible\", void 0);\n__decorate([\n Property('None')\n], ToolbarItem.prototype, \"overflow\", void 0);\n__decorate([\n Property('')\n], ToolbarItem.prototype, \"template\", void 0);\n__decorate([\n Property('Button')\n], ToolbarItem.prototype, \"type\", void 0);\n__decorate([\n Property('Both')\n], ToolbarItem.prototype, \"showTextOn\", void 0);\n__decorate([\n Property(null)\n], ToolbarItem.prototype, \"htmlAttributes\", void 0);\n__decorate([\n Property('')\n], ToolbarItem.prototype, \"tooltipText\", void 0);\n__decorate([\n Property('Left')\n], ToolbarItem.prototype, \"align\", void 0);\n__decorate([\n Property(-1)\n], ToolbarItem.prototype, \"tabIndex\", void 0);\n__decorate([\n Property()\n], ToolbarItem.prototype, \"name\", void 0);\n","var __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 */\nexport class SearchSettings extends ChildProperty {\n}\n__decorate([\n Property(true)\n], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n__decorate([\n Property('contains')\n], SearchSettings.prototype, \"filterType\", void 0);\n__decorate([\n Property(true)\n], SearchSettings.prototype, \"ignoreCase\", void 0);\n__decorate([\n Property(null)\n], SearchSettings.prototype, \"placeholder\", void 0);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, initializeCSPTemplate } from '@syncfusion/ej2-base';\n/**\n * Specifies the columns in the details view of the file manager.\n */\nexport const columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120,\n template: '<span class=\"e-fe-text\">${name}</span>',\n customAttributes: { class: 'e-fe-grid-name' }\n },\n {\n field: '_fm_modified', headerText: 'DateModified', type: 'dateTime',\n format: 'MMMM dd, yyyy HH:mm', minWidth: 120, width: '190'\n },\n {\n field: 'size', headerText: 'Size', minWidth: 90, width: '110',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: initializeCSPTemplate(function (data) {\n return `<span class=\"e-fe-size\">${data.size}</span>`;\n }), format: 'n2'\n }\n];\n/**\n * Specifies the grid settings of the File Manager.\n */\nexport class DetailsViewSettings extends ChildProperty {\n}\n__decorate([\n Property(true)\n], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n__decorate([\n Property(columnArray)\n], DetailsViewSettings.prototype, \"columns\", void 0);\n","var __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 const fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nexport const folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nexport const layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nexport class ContextMenuSettings extends ChildProperty {\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","var __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 */\nexport class NavigationPaneSettings extends ChildProperty {\n}\n__decorate([\n Property('650px')\n], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n__decorate([\n Property('240px')\n], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n__decorate([\n Property(true)\n], NavigationPaneSettings.prototype, \"visible\", void 0);\n__decorate([\n Property('None')\n], NavigationPaneSettings.prototype, \"sortOrder\", void 0);\n","var __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 */\nexport class UploadSettings extends ChildProperty {\n}\n__decorate([\n Property('')\n], UploadSettings.prototype, \"allowedExtensions\", void 0);\n__decorate([\n Property(true)\n], UploadSettings.prototype, \"autoUpload\", void 0);\n__decorate([\n Property(false)\n], UploadSettings.prototype, \"autoClose\", void 0);\n__decorate([\n Property(false)\n], UploadSettings.prototype, \"directoryUpload\", void 0);\n__decorate([\n Property(0)\n], UploadSettings.prototype, \"minFileSize\", void 0);\n__decorate([\n Property(30000000)\n], UploadSettings.prototype, \"maxFileSize\", void 0);\n","var __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 */\nexport class Column extends ChildProperty {\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, \"sortComparer\", void 0);\n__decorate([\n Property(null)\n], Column.prototype, \"headerTemplate\", void 0);\n__decorate([\n Property(true)\n], Column.prototype, \"allowSorting\", void 0);\n__decorate([\n Property(true)\n], Column.prototype, \"allowResizing\", void 0);\n__decorate([\n Property(null)\n], Column.prototype, \"customAttributes\", void 0);\n__decorate([\n Property('')\n], Column.prototype, \"hideAtMedia\", void 0);\n__decorate([\n Property(null)\n], Column.prototype, \"customFormat\", void 0);\n__decorate([\n Property(false)\n], Column.prototype, \"isPrimaryKey\", void 0);\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport const TOOLBAR_ID = '_toolbar';\n/** @hidden */\nexport const LAYOUT_ID = '_layout';\n/** @hidden */\nexport const NAVIGATION_ID = '_navigation';\n/** @hidden */\nexport const TREE_ID = '_tree';\n/** @hidden */\nexport const GRID_ID = '_grid';\n/** @hidden */\nexport const LARGEICON_ID = '_largeicons';\n/** @hidden */\nexport const DIALOG_ID = '_dialog';\n/** @hidden */\nexport const ALT_DIALOG_ID = '_alt_dialog';\n/** @hidden */\nexport const IMG_DIALOG_ID = '_img_dialog';\n/** @hidden */\nexport const EXTN_DIALOG_ID = '_extn_dialog';\n/** @hidden */\nexport const UPLOAD_DIALOG_ID = '_upload_dialog';\n/** @hidden */\nexport const RETRY_DIALOG_ID = '_retry_dialog';\n/** @hidden */\nexport const CONTEXT_MENU_ID = '_contextmenu';\n/** @hidden */\nexport const SORTBY_ID = '_sortby';\n/** @hidden */\nexport const VIEW_ID = '_view';\n/** @hidden */\nexport const SPLITTER_ID = '_splitter';\n/** @hidden */\nexport const CONTENT_ID = '_content';\n/** @hidden */\nexport const BREADCRUMBBAR_ID = '_breadcrumbbar';\n/** @hidden */\nexport const UPLOAD_ID = '_upload';\n/** @hidden */\nexport const RETRY_ID = '_retry';\n/** @hidden */\nexport const SEARCH_ID = '_search';\n/**\n * Specifies the File Manager internal class names\n */\n/** @hidden */\nexport const ROOT = 'e-filemanager';\n/** @hidden */\nexport const CONTROL = 'e-control';\n/** @hidden */\nexport const CHECK_SELECT = 'e-fe-cb-select';\n/** @hidden */\nexport const ROOT_POPUP = 'e-fe-popup';\n/** @hidden */\nexport const MOBILE = 'e-fe-mobile';\n/** @hidden */\nexport const MOB_POPUP = 'e-fe-popup e-fe-mobile';\n/** @hidden */\nexport const MULTI_SELECT = 'e-fe-m-select';\n/** @hidden */\nexport const FILTER = 'e-fe-m-filter';\n/** @hidden */\nexport const LAYOUT = 'e-layout';\n/** @hidden */\nexport const NAVIGATION = 'e-navigation';\n/** @hidden */\nexport const LAYOUT_CONTENT = 'e-layout-content';\n/** @hidden */\nexport const LARGE_ICONS = 'e-large-icons';\n/** @hidden */\nexport const TB_ITEM = 'e-toolbar-item';\n/** @hidden */\nexport const LIST_ITEM = 'e-list-item';\n/** @hidden */\nexport const LIST_TEXT = 'e-list-text';\n/** @hidden */\nexport const LIST_PARENT = 'e-list-parent';\n/** @hidden */\nexport const TB_OPTION_TICK = 'e-icons e-fe-tick';\n/** @hidden */\nexport const TB_OPTION_DOT = 'e-icons e-fe-dot';\n/** @hidden */\nexport const BLUR = 'e-blur';\n/** @hidden */\nexport const ACTIVE = 'e-active';\n/** @hidden */\nexport const HOVER = 'e-hover';\n/** @hidden */\nexport const FOCUS = 'e-focus';\n/** @hidden */\nexport const FOCUSED = 'e-focused';\n/** @hidden */\nexport const CHECK = 'e-check';\n/** @hidden */\nexport const FRAME = 'e-frame';\n/** @hidden */\nexport const CB_WRAP = 'e-checkbox-wrapper';\n/** @hidden */\nexport const ROW = 'e-row';\n/** @hidden */\nexport const ROWCELL = 'e-rowcell';\n/** @hidden */\nexport const EMPTY = 'e-empty';\n/** @hidden */\nexport const EMPTY_CONTENT = 'e-empty-content';\n/** @hidden */\nexport const EMPTY_INNER_CONTENT = 'e-empty-inner-content';\n/** @hidden */\nexport const CLONE = 'e-fe-clone';\n/** @hidden */\nexport const DROP_FOLDER = 'e-fe-drop-folder';\n/** @hidden */\nexport const DROP_FILE = 'e-fe-drop-file';\n/** @hidden */\nexport const FOLDER = 'e-fe-folder';\n/** @hidden */\nexport const ICON_IMAGE = 'e-fe-image';\n/** @hidden */\nexport const ICON_MUSIC = 'e-fe-music';\n/** @hidden */\nexport const ICON_VIDEO = 'e-fe-video';\n/** @hidden */\nexport const LARGE_ICON = 'e-large-icon';\n/** @hidden */\nexport const LARGE_EMPTY_FOLDER = 'e-empty-icon e-fe-folder';\n/** @hidden */\nexport const LARGE_EMPTY_FOLDER_TWO = 'e-empty-icon.e-fe-folder';\n/** @hidden */\nexport const LARGE_ICON_FOLDER = 'e-fe-folder';\n/** @hidden */\nexport const SELECTED_ITEMS = 'e-items';\n/** @hidden */\nexport const TEXT_CONTENT = 'e-text-content';\n/** @hidden */\nexport const GRID_HEADER = 'e-gridheader';\n/** @hidden */\nexport const TEMPLATE_CELL = 'e-templatecell';\n/** @hidden */\nexport const TREE_VIEW = 'e-treeview';\n/** @hidden */\nexport const MENU_ITEM = 'e-menu-item';\n/** @hidden */\nexport const MENU_ICON = 'e-menu-icon';\n/** @hidden */\nexport const SUBMENU_ICON = 'e-caret';\n/** @hidden */\nexport const GRID_VIEW = 'e-content';\n/** @hidden */\nexport const GRID_CONTENT = 'e-gridcontent';\n/** @hidden */\nexport const ICON_VIEW = 'e-list-parent';\n/** @hidden */\nexport const ICON_OPEN = 'e-icons e-fe-open';\n/** @hidden */\nexport const ICON_UPLOAD = 'e-icons e-fe-upload';\n/** @hidden */\nexport const ICON_CUT = 'e-icons e-fe-cut';\n/** @hidden */\nexport const ICON_COPY = 'e-icons e-fe-copy';\n/** @hidden */\nexport const ICON_PASTE = 'e-icons e-fe-paste';\n/** @hidden */\nexport const ICON_DELETE = 'e-icons e-fe-delete';\n/** @hidden */\nexport const ICON_RENAME = 'e-icons e-fe-rename';\n/** @hidden */\nexport const ICON_NEWFOLDER = 'e-icons e-fe-newfolder';\n/** @hidden */\nexport const ICON_DETAILS = 'e-icons e-fe-details';\n/** @hidden */\nexport const ICON_SHORTBY = 'e-icons e-fe-sort';\n/** @hidden */\nexport const ICON_REFRESH = 'e-icons e-fe-refresh';\n/** @hidden */\nexport const ICON_SELECTALL = 'e-icons e-fe-select';\n/** @hidden */\nexport const ICON_DOWNLOAD = 'e-icons e-fe-download';\n/** @hidden */\nexport const ICON_OPTIONS = 'e-icons e-fe-options';\n/** @hidden */\nexport const ICON_GRID = 'e-icons e-fe-grid';\n/** @hidden */\nexport const ICON_LARGE = 'e-icons e-fe-large';\n/** @hidden */\nexport const ICON_BREADCRUMB = 'e-icons e-fe-breadcrumb';\n/** @hidden */\nexport const ICON_CLEAR = 'e-icons e-fe-clear';\n/** @hidden */\nexport const ICON_DROP_IN = 'e-icons e-fe-drop-in';\n/** @hidden */\nexport const ICON_DROP_OUT = 'e-icons e-fe-drop-out';\n/** @hidden */\nexport const ICON_NO_DROP = 'e-icons e-fe-no-drop';\n/** @hidden */\nexport const ICONS = 'e-icons';\n/** @hidden */\nexport const DETAILS_LABEL = 'e-detailslabel';\n/** @hidden */\nexport const ERROR_CONTENT = 'e-fe-errorcontent';\n/** @hidden */\nexport const STATUS = 'e-status';\n/** @hidden */\nexport const BREADCRUMBS = 'e-address';\n/** @hidden */\nexport const RTL = 'e-rtl';\n/** @hidden */\nexport const DISPLAY_NONE = 'e-display-none';\n/** @hidden */\nexport const COLLAPSED = 'e-node-collapsed';\n/** @hidden */\nexport const FULLROW = 'e-fullrow';\n/** @hidden */\nexport const ICON_COLLAPSIBLE = 'e-icon-collapsible';\n/** @hidden */\nexport const SPLIT_BAR = 'e-split-bar';\n/** @hidden */\nexport const HEADER_CHECK = 'e-headercheck';\n/** @hidden */\nexport const OVERLAY = 'e-fe-overlay';\n/** @hidden */\nexport const VALUE = 'e-fe-value';\n","/**\n * Specifies the File Manager internal variables\n */\n/** @hidden */\nexport const isFile = 'isFile';\n/**\n * Specifies the File Manager internal events\n */\n/** @hidden */\nexport const modelChanged = 'model-changed';\n/** @hidden */\nexport const initialEnd = 'initial-end';\n/** @hidden */\nexport const finalizeEnd = 'finalize-end';\n/** @hidden */\nexport const createEnd = 'create-end';\n/** @hidden */\nexport const filterEnd = 'filter-end';\n/** @hidden */\nexport const beforeDelete = 'before-delete';\n/** @hidden */\nexport const pathDrag = 'path-drag';\n/** @hidden */\nexport const deleteInit = 'delete-init';\n/** @hidden */\nexport const deleteEnd = 'delete-end';\n/** @hidden */\nexport const refreshEnd = 'refresh-end';\n/** @hidden */\nexport const resizeEnd = 'resize-end';\n/** @hidden */\nexport const splitterResize = 'splitter-resize';\n/** @hidden */\nexport const pathChanged = 'path-changed';\n/** @hidden */\nexport const destroy = 'destroy';\n/** @hidden */\nexport const beforeRequest = 'before-request';\n/** @hidden */\nexport const upload = 'upload';\n/** @hidden */\nexport const skipUpload = 'skip-upload';\n/** @hidden */\nexport const afterRequest = 'after-request';\n/** @hidden */\nexport const download = 'download';\n/** @hidden */\nexport const layoutRefresh = 'layout-refresh';\n/** @hidden */\nexport const actionFailure = 'actionFailure';\n/** @hidden */\nexport const search = 'search';\n/** @hidden */\nexport const openInit = 'open-init';\n/** @hidden */\nexport const openEnd = 'open-end';\n/** @hidden */\nexport const selectionChanged = 'selection-changed';\n/** @hidden */\nexport const selectAllInit = 'select-all-init';\n/** @hidden */\nexport const clearAllInit = 'clear-all-init';\n/** @hidden */\nexport const clearPathInit = 'clear-path-init';\n/** @hidden */\nexport const layoutChange = 'layout-change';\n/** @hidden */\nexport const sortByChange = 'sort-by-change';\n/** @hidden */\nexport const nodeExpand = 'node-expand';\n/** @hidden */\nexport const detailsInit = 'details-init';\n/** @hidden */\nexport const menuItemData = 'menu-item-data';\n/** @hidden */\nexport const renameInit = 'rename-init';\n/** @hidden */\nexport const renameEndParent = 'rename-end-parent';\n/** @hidden */\nexport const renameEnd = 'rename-end';\n/** @hidden */\nexport const showPaste = 'show-paste';\n/** @hidden */\nexport const hidePaste = 'hide-paste';\n/** @hidden */\nexport const selectedData = 'selected-data';\n/** @hidden */\nexport const cutCopyInit = 'cut-copy-init';\n/** @hidden */\nexport const pasteInit = 'paste-init';\n/** @hidden */\nexport const pasteEnd = 'paste-end';\n/** @hidden */\nexport const cutEnd = 'cut-end';\n/** @hidden */\nexport const hideLayout = 'hide-layout';\n/** @hidden */\nexport const updateTreeSelection = 'update-tree-selection';\n/** @hidden */\nexport const treeSelect = 'select-node';\n/** @hidden */\nexport const sortColumn = 'sort-column';\n/** @hidden */\nexport const pathColumn = 'path-column';\n/** @hidden */\nexport const searchTextChange = 'search-change';\n/** @hidden */\nexport const beforeDownload = 'before-download';\n/** @hidden */\nexport const downloadInit = 'download-init';\n/** @hidden */\nexport const dropInit = 'drop-init';\n/** @hidden */\nexport const dragEnd = 'drag-end';\n/** @hidden */\nexport const dropPath = 'drop-path';\n/** @hidden */\nexport const dragHelper = 'drag-helper';\n/** @hidden */\nexport const dragging = 'dragging';\n/** @hidden */\nexport const updateSelectionData = 'update-selection-data';\n/** @hidden */\nexport const methodCall = 'method-call';\n/** @hidden */\nexport const permissionRead = 'read';\n/** @hidden */\nexport const permissionEdit = 'write';\n/** @hidden */\nexport const permissionEditContents = 'writeContents';\n/** @hidden */\nexport const permissionCopy = 'copy';\n/** @hidden */\nexport const permissionUpload = 'upload';\n/** @hidden */\nexport const permissionDownload = 'download';\n","import * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { read, paste, Search, filter, Download, Delete, isFileSystemData } from '../common/operations';\nimport { getValue, setValue, isNullOrUndefined as isNOU, matches, select, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest, detach } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createDialog } from '../pop-up/dialog';\n/**\n * Utility function to compare two strings in a way similar to Windows Explorer.\n * Files and folders are sorted separately, with folders coming before files.\n *\n * @param {string} reference - The first string to compare. This could be a file or folder name.\n * @param {string} comparer - The second string to compare. This could be a file or folder name.\n * @returns {number} - A negative number if `reference` should come before `comparer`, a positive number if `comparer` should come before `reference`, and 0 if they are considered equal.\n */\nexport function sortComparer(reference, comparer) {\n // Check if reference and comparer are files or folders\n const referenceIsFile = /\\.\\S+/.test(reference);\n const comparerIsFile = /\\.\\S+/.test(comparer);\n // If one is a file and the other is a folder, the folder should come first\n if (referenceIsFile && !comparerIsFile) {\n return 1;\n }\n if (!referenceIsFile && comparerIsFile) {\n return -1;\n }\n const referenceParts = [];\n const comparerParts = [];\n (reference + '').replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { referenceParts.push([$1 || Infinity, $2 || '']); return ''; });\n (comparer + '').replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { comparerParts.push([$1 || Infinity, $2 || '']); return ''; });\n // Compare each part of reference and comparer\n while (referenceParts.length && comparerParts.length) {\n const referencePart = referenceParts.shift();\n const comparerPart = comparerParts.shift();\n if (referencePart && comparerPart) {\n const comparisonResult = referencePart[0] - comparerPart[0] ||\n referencePart[1].localeCompare(comparerPart[1]);\n if (comparisonResult) {\n return comparisonResult;\n }\n }\n }\n return referenceParts.length - comparerParts.length;\n}\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 */\nexport function updatePath(node, data, instance) {\n const text = getValue('name', data);\n const id = node.getAttribute('data-id');\n const 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 const matched = getParents(element, text, false, hasId);\n let path = '/';\n const len = matched.length - (2);\n for (let 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 const matched = getParents(node, node.getAttribute('data-uid'), true);\n const ids = [];\n for (let 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 const matched = getParents(element, text, false);\n const names = [];\n for (let 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 const matched = [text];\n let el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, '.' + CLS.LIST_ITEM)) {\n const 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 const key = parent.hasId ? 'id' : 'name';\n let newPath = '/';\n let i = 1;\n for (i; i < parent.pathId.length; i++) {\n const data = getValue(parent.pathId[parseInt(i.toString(), 10)], 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 const blurEle = parent.activeElements;\n if (parent.activeModule !== 'navigationpane') {\n parent.targetPath = parent.path;\n }\n else {\n parent.targetPath = getParentPath(parent.path);\n }\n let 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 let i = 0;\n while (i < parent.selectedItems.length) {\n parent.selectedNodes.push(parent.selectedItems[i]);\n i++;\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 const blurEle = (!hover) ? parent.element.querySelectorAll('.' + CLS.BLUR) :\n parent.element.querySelectorAll('.' + CLS.HOVER);\n let 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 let searchWord;\n if (value.length === 0 && !parent.isFiltered) {\n parent.notify(events.pathColumn, { args: parent });\n }\n if (isFileSystemData(parent)) {\n if (value === '') {\n parent.itemData = parent.fileSystemData;\n read(parent, events.layoutChange, parent.path);\n }\n else {\n parent.searchSettings.filterType = isNOU(parent.searchSettings.filterType) ? 'contains' : parent.searchSettings.filterType;\n const filteredData = parent.fileSystemData.filter((obj) => obj.parentId !== null);\n const data = new DataManager(filteredData).\n executeLocal(new Query().where('name', parent.searchSettings.filterType, value, parent.searchSettings.ignoreCase));\n const searchValue = parent.searchSettings.ignoreCase ? value.toLowerCase() : value;\n parent.itemData = data;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchValue, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n return;\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 const caseSensitive = parent.searchSettings.ignoreCase;\n const hiddenItems = parent.showHiddenItems;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchWord, hiddenItems, !caseSensitive);\n }\n else {\n if (!parent.isFiltered) {\n if (parent.isSortByClicked) {\n parent.notify(events.layoutChange, { files: (parent.oldView === 'Details') ? parent.detailsviewModule.gridObj.dataSource : parent.largeiconsviewModule.allItems });\n parent.isSortByClicked = false;\n }\n else {\n read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n }\n else {\n filter(parent, events.layoutChange);\n }\n }\n}\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} view - specifies the view.\n * @returns {void}\n * @private\n */\nexport function updateLayout(parent, view) {\n parent.oldView = parent.view;\n parent.setProperties({ view: view }, true);\n if (parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) {\n parent.layoutSelectedItems = parent.selectedItems;\n }\n let 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 let tartgetModule = '';\n if (element) {\n if (closest(element, '.' + CLS.ROOT + '.' + CLS.CONTROL + ' .' + CLS.GRID_CONTENT)) {\n tartgetModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICONS)) {\n tartgetModule = 'largeiconsview';\n }\n else if (element.classList.contains('e-fullrow') ||\n element.classList.contains('e-icon-expandable')) {\n tartgetModule = 'navigationpane';\n }\n else if (closest(element, '.e-address-list-item')) {\n tartgetModule = 'breadcrumbbar';\n }\n else {\n tartgetModule = '';\n }\n }\n parent.targetModule = tartgetModule;\n}\n/* istanbul ignore next */\n/**\n * refresh the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function refresh(parent) {\n parent.itemData = [getPathObject(parent)];\n if (!hasReadAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionRead);\n }\n else {\n read(parent, events.refreshEnd, parent.path);\n }\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function openAction(parent) {\n read(parent, events.openEnd, parent.path);\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {Object} - returns the path data.\n * @private\n */\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 */\nexport function fileType(file) {\n const isFile = getValue('isFile', file);\n if (!isFile) {\n return CLS.FOLDER;\n }\n const imageFormat = ['bmp', 'dib', 'jpg', 'jpeg', 'jpe', 'jfif', 'gif', 'tif', 'tiff', 'png', 'ico'];\n const audioFormat = ['mp3', 'wav', 'aac', 'ogg', 'wma', 'aif', 'fla', 'm4a'];\n const videoFormat = ['webm', 'mkv', 'flv', 'vob', 'ogv', 'ogg', 'avi', 'wmv', 'mp4', '3gp'];\n const knownFormat = ['css', 'exe', 'html', 'js', 'msi', 'pdf', 'pptx', 'ppt', 'rar', 'zip', 'txt', 'docx', 'doc',\n 'xlsx', 'xls', 'xml', 'rtf', 'php'];\n let filetype = getValue('type', file);\n filetype = filetype.toLowerCase();\n if (filetype.indexOf('.') !== -1) {\n filetype = filetype.split('.').join('');\n }\n let 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 */\nexport function getImageUrl(parent, item) {\n let imgUrl = isFileSystemData(parent) ? getValue('imageUrl', item) : '';\n if (isFileSystemData(parent)) {\n const eventArgs = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs);\n return eventArgs.imageUrl;\n }\n const baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n const pathUrl = (baseUrl.indexOf('?') !== -1) ? '&path=' : '?path=';\n const fileName = encodeURIComponent(getValue('name', item));\n const fPath = getValue('filterPath', item);\n if (parent.hasId) {\n const imgId = getValue('id', item);\n imgUrl = baseUrl + pathUrl + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + pathUrl + encodeURIComponent(fPath.replace(/\\\\/g, '/')) + fileName;\n }\n else {\n imgUrl = baseUrl + pathUrl + parent.path + fileName;\n }\n imgUrl = imgUrl + '&time=' + (new Date().getTime()).toString();\n const 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 */\nexport function getFullPath(parent, data, path) {\n const filePath = getValue(parent.hasId ? 'id' : 'name', data) + '/';\n const 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 */\nexport function getName(parent, data) {\n let name = getValue('name', data);\n let 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 */\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n let query;\n if (parent.sortOrder !== 'None' && !isNullOrUndefined(parent.sortOrder)) {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\n const 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 */\nexport function getObject(parent, key, value) {\n const currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n const query = new Query().where(key, 'equal', value);\n const 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 let top;\n const layoutElement = select('#' + parent.element.id + CLS.LAYOUT_ID, parent.element);\n const 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 const emptyDiv = createElement('div', { className: CLS.EMPTY });\n const emptyFolder = createElement('div', { className: CLS.LARGE_EMPTY_FOLDER });\n const emptyEle = createElement('div', { className: CLS.EMPTY_CONTENT });\n const 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 const 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 */\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 const dirs = getDirectories(result.files);\n for (let 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 * @param {Internationalization} localeString - The internationalization object for formatting dates.\n * @param {string} dateFormat - The date format string.\n * @returns {void}\n * @private\n */\nexport function setDateObject(args, localeString, dateFormat) {\n for (let i = 0; i < args.length; i++) {\n const createdDate = new Date(getValue('dateCreated', args[i]));\n const modifiedDate = new Date(getValue('dateModified', args[i]));\n if (isNOU(dateFormat)) {\n dateFormat = 'MM/dd/yyyy';\n }\n setValue('_fm_created', localeString.formatDate(createdDate, { format: dateFormat }), args[i]);\n setValue('_fm_modified', localeString.formatDate(modifiedDate, { format: dateFormat }), args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nexport function getLocaleText(parent, text) {\n const 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 let 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 let tick;\n parent.isSortByClicked = true;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id, parent);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(events.sortColumn, { module: 'detailsview' });\n parent.isSortByClicked = false;\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(events.sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @param {IFileManager} [parent] - optional parameter representing the parent IFileManager.\n * @returns {string} - returns the sorted fields\n * @private\n */\nexport function getSortField(id, parent) {\n const text = id.substring(id.lastIndexOf('_') + 1);\n let field = text;\n let column;\n if (parent) {\n column = parent.detailsViewSettings.columns;\n }\n switch (text) {\n case 'date':\n for (let i = 0, len = column.length; i < len; i++) {\n if (column[i].field === 'dateModified' || column[i].field === 'dateCreated') {\n field = column[i].field;\n break;\n }\n else {\n field = '_fm_modified';\n }\n }\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function setNextPath(parent, path) {\n const currfolders = path.split('/');\n const folders = parent.originalPath.split('/');\n const root = getValue(parent.pathId[0], parent.feParent);\n const key = isNOU(getValue('id', root)) ? 'name' : 'id';\n for (let i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n const eventName = (folders[i + 1] === '') ? events.finalizeEnd : events.initialEnd;\n const newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n const data = getObject(parent, key, folders[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(data)) {\n const 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 }\n else {\n parent.originalPath = newPath;\n }\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 */\nexport function openSearchFolder(parent, data) {\n parent.originalPath = getFullPath(parent, data, parent.path);\n const root = getValue(parent.pathId[0], parent.feParent);\n const isRoot = getValue('_fm_id', parent.itemData[0]) === 'fe_tree';\n const key = isNOU(getValue('id', root)) ? 'name' : 'id';\n const searchData = getObject(parent, key, isFileSystemData(parent) ? getValue('id', data) : getValue('name', data));\n if (isNullOrUndefined(searchData)) {\n if (!isRoot) {\n parent.notify(events.clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n }\n else {\n setNextPath(parent, parent.path);\n return;\n }\n }\n else {\n const id = getValue('_fm_id', searchData);\n parent.setProperties({ path: parent.originalPath }, true);\n parent.pathId.push(id);\n parent.itemData = [searchData];\n parent.pathNames.push(getValue('name', searchData));\n }\n read(parent, (parent.path !== parent.originalPath) ? events.initialEnd : events.finalizeEnd, parent.path);\n}\n/**\n * Paste handling function\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function pasteHandler(parent) {\n parent.isDragDrop = false;\n if (parent.selectedNodes.length !== 0 && parent.enablePaste) {\n const path = (parent.folderPath === '') ? parent.path : parent.folderPath;\n const 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 const result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n }\n }\n }\n}\n/**\n * Validates the sub folders\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {'{ [key: string]: Object; }[]'} data - specifies the data.\n * @param {string} dropPath - specifies the drop path.\n * @param {string} dragPath - specifies the drag path.\n * @returns {boolean} - returns the validated sub folder.\n * @private\n */\nexport function validateSubFolder(parent, data, dropPath, dragPath) {\n let subFolder = false;\n for (let i = 0; i < data.length; i++) {\n if (!getValue('isFile', data[i])) {\n const tempTarget = getFullPath(parent, data[i], dragPath);\n if (dropPath.indexOf(tempTarget) === 0) {\n const 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 const name = parent.dragData[i] ? parent.dragData[i].name : null;\n const srcData = isFileSystemData(parent) ? name : parent.dragNodes[i];\n let len = 0;\n if (srcData) {\n len = srcData.lastIndexOf('/');\n }\n let path = '';\n if (len > 0) {\n path = dragPath + srcData.substring(0, len + 1);\n }\n if (path === dropPath) {\n const 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 const 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 const path = oldPath.split('/');\n let newPath = path[0] + '/';\n for (let 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 const filePath = getValue(parent.hasId ? 'id' : 'name', args.cwd) + '/';\n const fPath = getValue(parent.hasId && !isNullOrUndefined(parent.ajaxSettings.url) ? 'filterId' : 'filterPath', args.cwd);\n if (!isNOU(fPath)) {\n if (fPath === '') {\n return parent.hasId && !isNullOrUndefined(parent.ajaxSettings.url) ? filePath : '/';\n }\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return isFileSystemData(parent) ? filePath : 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 const flag = false;\n for (let 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 let 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 let node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n if (!node) {\n const liElement = document.querySelector('[data-id = \"' + getValue('id', parent.dropData) + '\"]');\n pathId = liElement.getAttribute('data-uid');\n node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n }\n updatePath(node, parent.dropData, parent);\n }\n read(parent, events.dropPath, parent.dropPath);\n }\n}\n/**\n * Gets the duplicated path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} name - specifies the name.\n * @returns {object} - returns the duplicated path.\n * @private\n */\nexport function getDuplicateData(parent, name) {\n let data = null;\n const records = parent.isDragDrop ? parent.dragData : parent.actionRecords;\n for (let 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 let 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 const cloneIcon = parent.createElement('div', {\n className: 'e-fe-icon ' + fileType(parent.dragData[0])\n });\n const cloneName = parent.createElement('div', {\n className: 'e-fe-name',\n innerHTML: parent.dragData[0].name\n });\n const virtualEle = parent.createElement('div', {\n className: 'e-fe-content'\n });\n virtualEle.appendChild(cloneIcon);\n virtualEle.appendChild(cloneName);\n const ele = parent.createElement('div', {\n className: CLS.CLONE\n });\n ele.appendChild(virtualEle);\n if (parent.dragNodes.length > 1) {\n const 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 const 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 const 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, (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 const 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 let i = 0;\n while (i < parent.activeElements.length) {\n addBlur(parent.activeElements[i]);\n i++;\n }\n parent.trigger('fileDragStart', dragArgs, (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 const 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 const ele = parent.element.querySelectorAll('.' + value);\n for (let i = 0; i < ele.length; i++) {\n ele[i].classList.remove(value);\n }\n}\n/**\n * Remove item class handler\n *\n * @param {Element} scrollParent - specifies the scrolling target.\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} nodeClass - specifies the node class.\n * @param {number} screenY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the entire screen.\n * @param {number} clientY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the target element.\n * @returns {void}\n * @private\n */\nexport function scrollHandler(scrollParent, parent, nodeClass, screenY, clientY) {\n let position;\n const elementData = scrollParent.getBoundingClientRect();\n const node = select('.' + nodeClass, scrollParent);\n if ((screenY >= (elementData.top + scrollParent.clientHeight - 30)) && !isNullOrUndefined(node)) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, position);\n }\n if (!isNullOrUndefined(node) && (clientY <= (elementData.top + 30))) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, -position);\n }\n}\n/**\n * Dragging handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nexport function draggingHandler(parent, args) {\n const dragArgs = args;\n dragArgs.fileDetails = parent.dragData;\n let 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 let node = null;\n let scrollParent;\n if (parent.targetModule === 'navigationpane') {\n node = closest(args.target, 'li');\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n canDrop = true;\n /* istanbul ignore next */\n parent.treeExpandTimer = window.setTimeout(() => { parent.notify(events.dragging, args); }, 800);\n scrollParent = parent.navigationpaneModule.treeObj.element.parentElement;\n scrollHandler(scrollParent, parent, 'e-level-2', args.event.screenY, args.event.y);\n }\n else if (parent.targetModule === 'detailsview') {\n node = closest(args.target, 'tr');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FOLDER);\n }\n else if (node && !node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FILE);\n }\n canDrop = true;\n scrollParent = parent.detailsviewModule.gridObj.element.querySelector('.e-content');\n scrollHandler(scrollParent, parent, 'e-row', args.event.screenY, args.event.y);\n }\n else if (parent.targetModule === 'largeiconsview') {\n node = closest(args.target, 'li');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n }\n canDrop = true;\n scrollParent = parent.largeiconsviewModule.element.firstElementChild;\n scrollHandler(scrollParent, parent, 'e-large-icon', args.event.screenY, args.event.y);\n /* istanbul ignore next */\n }\n else if (parent.targetModule === 'breadcrumbbar') {\n canDrop = true;\n }\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n parent.element.classList.add(canDrop ? 'e-fe-drop' : 'e-no-drop');\n parent.dragCount = parent.dragCount + 1;\n parent.trigger('fileDragging', dragArgs);\n}\n/**\n * Object to string handler\n *\n * @param {Object} data - specifies the data.\n * @returns {string} returns string converted from Object.\n * @private\n */\n// Ignored the message key value in permission object\nexport function objectToString(data) {\n let str = '';\n const keys = Object.keys(data);\n for (let 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 */\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 */\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 const items = parent.itemData;\n for (let 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 */\nexport function doDeleteFiles(parent, data, newIds) {\n for (let 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 */\nexport function doDownloadFiles(parent, data, newIds) {\n for (let 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 */\nexport function createDeniedDialog(parent, data, action) {\n let 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 const 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 */\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 */\nexport function hasReadAccess(data) {\n const 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 */\nexport function hasEditAccess(data) {\n const 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 */\nexport function hasContentAccess(data) {\n const 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 */\nexport function hasUploadAccess(data) {\n const 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 */\nexport function hasDownloadAccess(data) {\n const 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 const 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 const details = parent.itemData[0];\n if (!hasUploadAccess(details)) {\n createDeniedDialog(parent, details, events.permissionUpload);\n }\n else {\n const eleId = '#' + parent.element.id + CLS.UPLOAD_ID;\n const uploadEle = document.querySelector(eleId);\n uploadEle.click();\n }\n}\n/**\n * Close dialog popup handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function closePopup(parent) {\n if (!isNullOrUndefined(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n}\n/**\n * Access control handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} itemData - specifies the item elements.\n * @param {string} action - specifies the action.\n * @param {boolean} isPathPermision - specifies the path permission.\n * @returns {string} returns the path.\n * @private\n */\nexport function getAccessDetails(parent, itemData, action, isPathPermision) {\n let accessMessage = '';\n for (let i = 0; i < itemData.length; i++) {\n let permission = getValue('permission', itemData[i]);\n if (permission == null) {\n permission = undefined;\n }\n if (isPathPermision) {\n if (permission && (!getValue('read', permission) || !getValue('writeContents', permission))) {\n accessMessage = getValue('message', getValue('permission', itemData[i]));\n if (accessMessage === '') {\n accessMessage = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', itemData[i])).replace('{1}', 'writeContents');\n }\n }\n }\n else {\n const copyOrMovePermission = action === 'copy' ? getValue('copy', permission) : getValue('write', permission);\n if (permission && (!getValue('read', permission) || !copyOrMovePermission)) {\n accessMessage = getValue('message', getValue('permission', itemData[i]));\n if (accessMessage === '') {\n accessMessage = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', itemData[i])).replace('{1}', action);\n }\n }\n }\n if (accessMessage !== '') {\n parent.responseData = {\n cwd: null,\n details: null,\n error: {\n code: '401',\n message: accessMessage,\n fileExists: null\n },\n files: null\n };\n break;\n }\n }\n return accessMessage;\n}\n","import { Ajax, Fetch, createElement, select, extend, Internationalization } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, setValue, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate, getPathObject } from '../common/utility';\nimport { generatePath, getAccessDetails } from '../common/utility';\nimport { getUid } from '@syncfusion/ej2-grids';\n/* eslint-disable @typescript-eslint/no-explicit-any */\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 const itemData = parent.itemData;\n for (let i = 0; i < itemData.length; i++) {\n if (isNOU(getValue('hasChild', itemData[i]))) {\n setValue('hasChild', false, itemData[i]);\n }\n }\n const 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 const 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 const data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n let filterData;\n const 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 let name;\n let newName;\n if (parent.breadcrumbbarModule.searchObj.element.value === '' && !parent.isFiltered) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n let 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 const data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData, showFileExtension: parent.showFileExtension\n };\n createAjax(parent, data, renameSuccess, path);\n}\n/**\n * Function to paste file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} names - specifies the names.\n * @param {string} targetPath - specifies the target path.\n * @param {string} pasteOperation - specifies the paste operation.\n * @param {string[]} renameItems - specifies the rename items.\n * @param {Object[]} actionRecords - specifies the action records.\n * @returns {void}\n * @private\n */\nexport function paste(parent, path, names, targetPath, pasteOperation, renameItems, actionRecords) {\n const 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 const 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 const data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Function for getDateFormat in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction getDateFormat(parent) {\n const columns = parent.detailsViewSettings.columns;\n let dateFormat;\n if (!columns) {\n return null;\n }\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].field === '_fm_modified') {\n if (!isNOU(columns[i].format)) {\n dateFormat = columns[i].format.toString();\n }\n break;\n }\n }\n return dateFormat;\n}\n/**\n * Checks whether fileSystemData is enabled.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns the boolean value.\n */\nexport function isFileSystemData(parent) {\n const isFileSystemData = parent.fileSystemData.length >= 0 && isNOU(parent.ajaxSettings.url);\n return isFileSystemData;\n}\n/**\n * Function to check whether file already exist or not.\n *\n * @param {Record<string, any>} fileSystemData - specifies the file data.\n * @param {string} name - specifies the name.\n * @returns {boolean} - returns the boolean value.\n * @private\n */\nfunction isFileExists(fileSystemData, name) {\n const isExists = fileSystemData.some((item) => item.name === name);\n return isExists;\n}\n/**\n * Function to find the index value of a file or folder.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number} id - specifies the id.\n * @returns {number} - returns the index value.\n * @private\n */\nfunction findIndexById(parent, id) {\n const index = parent.fileSystemData.findIndex((item) => String(item.id) === String(id));\n return index;\n}\n/**\n * Function to get the entire data of a file or folder using id value.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number | string} id - specifies the id.\n * @returns {Object} - returns the data.\n * @private\n */\nfunction filterById(parent, id) {\n const data = parent.fileSystemData.filter((item) => String(item.id) === String(id))[0];\n return data;\n}\n/**\n * Function to get the entire data of a file or folder for a parent.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number | string} parentId - specifies the parent id.\n * @returns {Object[]} - returns the data.\n * @private\n */\nfunction filterByParent(parent, parentId) {\n const data = parent.fileSystemData.filter((item) => String(item.parentId) === String(parentId));\n return data;\n}\n/**\n * Function to create a new copied file or folder.\n *\n * @param {Record<string, any>} data - specifies the file or folder data.\n * @param {Record<string, any>} target - specifies the target data.\n * @param {string} itemName - specifies the item name.\n * @param {boolean} isCopy - specifies the copy operation.\n * @returns {Record<string, Object>} - returns the data.\n * @private\n */\nfunction createNewItem(data, target, itemName, isCopy) {\n const newItem = {};\n //Construct the new folder details.\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newItem[key] = null;\n }\n }\n const currentDate = new Date();\n const folderPath = target.id !== 0 ? target.filterPath + target.name : '\\\\';\n Object.assign(newItem, {\n dateCreated: currentDate,\n dateModified: currentDate,\n filterPath: folderPath,\n hasChild: isCopy ? data.hasChild : false,\n id: getUid(itemName === null ? data.name : itemName),\n isFile: isCopy ? data.isFile : false,\n name: itemName === null ? data.name : itemName,\n parentId: target.id,\n size: isCopy ? data.size : 0,\n type: isCopy ? data.type : ''\n });\n return newItem;\n}\n/**\n * Function to create an error response.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} message - specifies the error message.\n * @param {string} code - specifies the error code.\n * @param {Object[]} fileName - specifies the file name.\n * @returns {void}\n * @private\n */\nfunction createErrorObject(parent, message, code, fileName) {\n parent.responseData = {\n cwd: null,\n details: null,\n error: {\n code: code,\n message: message,\n fileExists: fileName != null ? fileName : null\n },\n files: null\n };\n}\n/**\n * Function to trigger folder creation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerFolderCreation(parent, data, eventArgs) {\n const createEventArgs = {\n folderName: getValue('name', data),\n cancel: false,\n path: getValue('path', data),\n parentFolder: getValue('data', data)\n };\n parent.trigger('beforeFolderCreate', createEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n if (!isFileExists(parent.fileSystemData, args.folderName)) {\n const data = args.parentFolder[0];\n const newObject = createNewItem(data, data, args.folderName, false);\n parent.fileSystemData.push(newObject);\n }\n else {\n const message = 'A file or folder with the name ' + args.folderName + ' already exists.';\n createErrorObject(parent, message, '400', null);\n }\n }\n });\n}\n/**\n * Function to trigger delete operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerDeleteOperation(parent, data, eventArgs) {\n const deleteEventArgs = {\n cancel: false,\n itemData: getValue('data', data),\n path: getValue('path', data)\n };\n parent.trigger('beforeDelete', deleteEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n args.itemData.forEach((itemData) => {\n const index = findIndexById(parent, itemData.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n if (!itemData.isFile) {\n const subItems = parent.fileSystemData.filter(function (obj) { return obj.filterPath.includes(itemData.name); });\n subItems.forEach((subItem) => {\n const index = findIndexById(parent, subItem.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n });\n }\n });\n }\n });\n}\n/**\n * Function to trigger rename operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerRenameOperation(parent, data, eventArgs) {\n const renameEventArgs = {\n cancel: false,\n newName: getValue('newName', data),\n itemData: getValue('data', data),\n path: getValue('path', data)\n };\n parent.trigger('beforeRename', renameEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n if (!isFileExists(parent.fileSystemData, args.newName)) {\n const fileData = filterById(parent, args.itemData[0].id);\n fileData.name = args.newName;\n }\n else {\n const message = 'Cannot rename' + args.itemData[0].name + 'to' + args.newName + ': destination already exists.';\n createErrorObject(parent, message, '400', null);\n }\n }\n });\n}\n/**\n * Function to trigger move or copy operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerMoveOrCopyOperation(parent, data, eventArgs) {\n const moveEventArgs = {\n cancel: false,\n itemData: getValue('data', data),\n isCopy: getValue('action', data) === 'copy' ? true : false,\n path: getValue('path', data),\n targetData: getValue('targetData', data),\n targetPath: getValue('targetPath', data)\n };\n parent.trigger('beforeMove', moveEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n const message = 'File Already Exists';\n const action = getValue('action', data);\n const itemPermission = getAccessDetails(parent, args.itemData, action, false);\n const pathPermission = getAccessDetails(parent, [args.targetData], action, true);\n const file = [];\n parent.pasteNodes = [];\n if (itemPermission === '' && pathPermission === '') {\n if (args.isCopy) {\n const folderSubItems = filterByParent(parent, args.targetData.id);\n const copiedFolders = args.itemData;\n copiedFolders.forEach((itemData) => {\n if (!isFileExists(folderSubItems, itemData.name) || getValue('renameFiles', data).length > 0) {\n if (getValue('renameFiles', data).length > 0) {\n const names = itemData.name.split('.');\n const name = itemData.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n copyFolderItems(parent, itemData, args.targetData, name);\n parent.responseData.error = null;\n parent.existingFileCount++;\n return;\n }\n copyFolderItems(parent, itemData, args.targetData, null);\n }\n else {\n file.push(itemData.name);\n }\n });\n if (file.length > 0) {\n createErrorObject(parent, message, '400', file);\n }\n return;\n }\n let target = args.targetData;\n const getTargetFiles = filterByParent(parent, target.id);\n for (let i = 0; i < args.itemData.length; i++) {\n const currItem = args.itemData[i];\n if (!isFileExists(getTargetFiles, currItem.name) || getValue('renameFiles', data).length > 0) {\n if (!target.hasChild) {\n target.hasChild = !currItem.isFile;\n }\n if (!currItem.isFile) {\n //Check whether the source folder include other sub folders or not.\n const subItems = currItem.parentId !== 0\n ? filterByParent(parent, currItem.parentID) : [];\n const itemData = filterById(parent, currItem.parentId);\n itemData.hasChild = subItems.length > 1 ? true : false;\n }\n const fileData = filterById(parent, currItem.id);\n if (getValue('renameFiles', data).length > 0) {\n const names = currItem.name.split('.');\n currItem.name = currItem.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n fileData.name = currItem.name;\n parent.responseData.error = null;\n parent.existingFileCount++;\n parent.dropData = target;\n parent.dropPath = args.path;\n const pathArray = args.targetPath.replace(/^\\/|\\/$/g, '').split('/');\n target = filterById(parent, pathArray[pathArray.length - 1]);\n }\n fileData.parentId = target.id;\n fileData.filterPath = target.id === 0 ? '\\\\' : target.filterPath + target.name + '\\\\';\n }\n else {\n file.push(currItem.name);\n }\n }\n if (file.length > 0) {\n createErrorObject(parent, message, '400', file);\n }\n }\n }\n });\n}\n/**\n * Function to trigger search operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerSearchOperation(parent, data, eventArgs) {\n const searchEventArgs = {\n searchResults: getValue('data', data),\n cancel: false,\n path: getValue('path', data),\n searchText: getValue('searchString', data),\n caseSensitive: getValue('caseSensitive', data),\n showHiddenItems: getValue('showHiddenItems', data)\n };\n parent.trigger('search', searchEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n }\n });\n}\n/**\n * Function to trigger client side events.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerClientEvents(parent, data, eventArgs) {\n switch (getValue('action', data)) {\n case 'create': {\n triggerFolderCreation(parent, data, eventArgs);\n break;\n }\n case 'delete': {\n triggerDeleteOperation(parent, data, eventArgs);\n break;\n }\n case 'rename': {\n triggerRenameOperation(parent, data, eventArgs);\n break;\n }\n case 'move':\n case 'copy': {\n triggerMoveOrCopyOperation(parent, data, eventArgs);\n break;\n }\n case 'search': {\n triggerSearchOperation(parent, data, eventArgs);\n break;\n }\n }\n}\n/**\n * Creates an AJAX request for the file manager.\n *\n * @param {IFileManager} parent - The parent file manager instance.\n * @param {Object} data - The data object for the AJAX request.\n * @param {Function} fn - The callback function to be executed after the AJAX request.\n * @param {string} [event] - The event type for the AJAX request.\n * @param {string} [operation] - The operation type for the AJAX request.\n * @param {string} [targetPath] - The target path for the AJAX request.\n * @returns {void}\n * @private\n */\nfunction createAjax(parent, data, fn, event, operation, targetPath) {\n const 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 const eventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };\n triggerClientEvents(parent, data, eventArgs);\n parent.trigger('beforeSend', eventArgs, (beforeSendArgs) => {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\n if (isFileSystemData(parent)) {\n const filePath = event === 'node-expand' || event === 'finalize-end' ? getValue('path', data) : parent.path;\n const pathArray = filePath.replace(/^\\/|\\/$/g, '').split('/');\n const idValue = event === 'rename-end-parent' || (event === 'path-changed' && getValue('data', data).length !== 0)\n || (event === 'paste-end' && (parent.targetModule === 'largeiconsview' || parent.targetModule === 'detailsview'))\n ? getValue('data', data)[0].id : pathArray[pathArray.length - 1];\n const action = getValue('action', data);\n const isFileOperation = (action === 'move' || action === 'rename' || action === 'copy' || action === 'delete' || action === 'search') && event !== 'rename-end';\n if (action === 'read' || action === 'create' || event === 'rename-end') {\n parent.responseData = {\n cwd: filterById(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? 0 : idValue),\n details: null,\n error: null,\n files: filterByParent(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? 0 : idValue)\n };\n if (isNOU(parent.responseData.cwd)) {\n const message = 'Cannot load empty data within the File Manager.';\n createErrorObject(parent, message, '400', null);\n }\n }\n else if (isFileOperation && parent.responseData.error === null) {\n let itemData = action === 'search' || action === 'delete' ? getValue('data', data) : [];\n if (itemData.length === 0) {\n itemData = getValue('data', data).map((item) => filterById(parent, item.id));\n }\n parent.responseData = {\n cwd: null,\n details: null,\n error: null,\n files: itemData\n };\n }\n else if (getValue('action', data) === 'details') {\n const itemData = getValue('data', data);\n const details = itemData[0];\n const isMultipleFiles = itemData.length > 1;\n const itemNames = itemData.map((item) => item.name);\n const totalSize = isMultipleFiles ? getSize(itemData.reduce((accumulator, currentObject) => accumulator + (currentObject.size || 0), 0)) : getSize(details.size);\n const path = (parent.pathNames.includes(details.name) ? parent.pathNames.join('/') : parent.pathNames.join('/') + '/' + details.name);\n parent.responseData.details = Object.assign({\n location: isMultipleFiles ? null : path,\n multipleFiles: isMultipleFiles,\n name: itemNames.join(', '),\n size: totalSize\n }, isMultipleFiles ? {} : {\n created: details.dateCreated,\n isFile: details.isFile,\n modified: details.dateModified,\n permission: details.permission\n });\n }\n performReadOperation(parent, parent.responseData, fn, data, event, operation, targetPath, beforeSendArgs);\n return;\n }\n const 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: (result) => {\n if (isNOU(result)) {\n const result = {\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, event, operation, targetPath);\n return;\n }\n if (typeof (result) === 'string') {\n result = JSON.parse(result);\n }\n performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs);\n },\n onFailure: () => {\n const 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 to get file size.\n *\n * @param {number} size - specifies the size.\n * @returns {string} - returns the size.\n * @private\n */\nfunction getSize(size) {\n let hz;\n if (size < 1024) {\n hz = size + ' B';\n }\n else if (size < 1024 * 1024) {\n hz = (size / 1024).toFixed(2) + ' KB';\n }\n else if (size < 1024 * 1024 * 1024) {\n hz = (size / 1024 / 1024).toFixed(2) + ' MB';\n }\n else {\n hz = (size / 1024 / 1024 / 1024).toFixed(2) + ' GB';\n }\n return hz;\n}\n/**\n * Function to perform read operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {Function} fn - specifies the function.\n * @param {Object} data - specifies the data.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs) {\n parent.notify(events.afterRequest, { action: 'success' });\n const 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 const 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 const intl = new Internationalization(parent.locale);\n if (!isNOU(result.files)) {\n setDateObject(result.files, intl, getDateFormat(parent));\n for (let i = 0, len = result.files.length; i < len; i++) {\n const item = result.files[i];\n setValue('_fm_iconClass', fileType(item), item);\n }\n if (getValue('action', data) === 'read' || isFileSystemData(parent) && getValue('action', data) === 'search') {\n setNodeId(result, id);\n setValue(id, result.files, parent.feFiles);\n }\n }\n if (!isNOU(result.details) && !isNOU(parent.rootAliasName)) {\n const rootName = parent.rootAliasName || getValue('name', result.details);\n let location = 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 = rootName;\n }\n else {\n location = location.replace(location.substring(0, location.indexOf('\\\\')), rootName);\n }\n }\n else {\n location = location.replace(location.substring(0, location.indexOf('\\\\')), rootName);\n }\n setValue('location', location, result.details);\n }\n fn(parent, result, event, operation, targetPath);\n if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end' || event === 'drop-path')) {\n parent.notify(events.searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function to copy operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} target - specifies the target.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction copyFolderItems(parent, data, target, itemName) {\n const newObject = createNewItem(data, target, itemName, true);\n parent.fileSystemData.push(newObject);\n parent.pasteNodes.push(newObject.id);\n const copiedItems = filterByParent(parent, data.id);\n for (let i = 0; i < copiedItems.length; i++) {\n copyFolderItems(parent, copiedItems[i], newObject, null);\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(parent, 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 const args = { action: 'read', result: result };\n parent.trigger('success', args);\n }\n else {\n if (result.error.code === '401') {\n result.files = [];\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n }\n onFailure(parent, result, 'read');\n parent.setProperties({ path: parent.oldPath }, true);\n parent.pathNames.pop();\n }\n if (parent.isDragDrop && parent.isDropEnd) {\n if (parent.droppedObjects.length !== 0) {\n const 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 const 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 = isFileSystemData(parent) ? result.files[result.files.length - 1] : result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\n const createEventArgs = {\n folderName: itemName,\n path: parent.path,\n parentFolder: parent.itemData\n };\n parent.trigger('folderCreate', createEventArgs);\n const 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 const ele = select('#newname', parent.dialogObj.element);\n const error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n else {\n const result = {\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);\n }\n const 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 * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result) {\n if (!isNOU(result.files)) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n const args = { action: 'rename', result: result };\n parent.trigger('success', args);\n parent.renamedItem = Array.isArray(result.files) ? result.files[0] : result.files;\n const renameEventArgs = {\n newName: parent.renamedItem.name,\n itemData: parent.renamedItem,\n path: parent.path\n };\n parent.trigger('rename', renameEventArgs);\n if (parent.activeModule === 'navigationpane') {\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n read(parent, events.renameEndParent, getValue('filterPath', parent.renamedItem).replace(/\\\\/g, '/'));\n parent.itemData[0] = parent.renamedItem;\n if (getValue('filterPath', parent.renamedItem) === getValue('filterPath', parent.itemData[0]) && parent.pathNames.length > 1) {\n parent.pathNames[parent.pathNames.length - 1] = parent.renameText;\n }\n read(parent, events.pathChanged, parent.path === '/' ? parent.path : getValue('filterPath', parent.renamedItem).replace(/\\\\/g, '/') + parent.renamedItem.name + '/');\n parent.renamedItem = null;\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 const ele = select('#rename', parent.dialogObj.element);\n let error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '\"' + parent.currentItemText + '\"');\n error = error.replace('{1}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n const 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 const moveorcopyEventArgs = {\n itemData: result.files,\n isCopy: operation === 'copy' ? true : false,\n path: path,\n targetData: parent.itemData[0],\n targetPath: parent.path\n };\n parent.trigger('move', moveorcopyEventArgs);\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 const deleteEventArgs = {\n itemData: result.files,\n path: path\n };\n parent.trigger('delete', deleteEventArgs);\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 const 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 const 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 const 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(parent, event, path, searchString, showHiddenItems, caseSensitive) {\n const 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 const 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 const downloadUrl = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;\n const data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n const ajaxSettings = {\n url: downloadUrl,\n type: 'POST',\n contentType: 'application/json',\n responseType: 'blob',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n const eventArgs = { data: data, cancel: false, useFormPost: true, ajaxSettings: ajaxSettings };\n parent.trigger('beforeDownload', eventArgs, (downloadArgs) => {\n if (!downloadArgs.cancel) {\n if (downloadArgs.useFormPost) {\n const form = createElement('form', {\n id: parent.element.id + '_downloadForm',\n attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }\n });\n const 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 else {\n let contentDisposition;\n let fileName;\n const fetch = new Fetch({\n url: getValue('url', downloadArgs.ajaxSettings),\n type: getValue('type', downloadArgs.ajaxSettings),\n contentType: getValue('contentType', downloadArgs.ajaxSettings),\n responseType: getValue('responseType', downloadArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', downloadArgs.ajaxSettings),\n onLoad: (e) => {\n contentDisposition = e.headers.get('Content-Disposition');\n if (contentDisposition) {\n const filenameMatch = contentDisposition.match(/filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/);\n const extractedFilename = filenameMatch && filenameMatch[1];\n fileName = extractedFilename ? extractedFilename.replace(/['\"]/g, '') : fileName;\n }\n else {\n fileName = parent.itemData.length > 1 ? 'files.zip' : getValue('isFile', parent.itemData[0]) ? getValue('name', parent.itemData[0]) : getValue('name', parent.itemData[0]) + '.zip';\n }\n },\n onSuccess: (e) => {\n parent.trigger('success', downloadArgs);\n const blob = e;\n const blobUrl = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = blobUrl;\n link.download = fileName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n },\n onFailure: (e) => {\n const result = {\n error: {\n code: e.status.toString(),\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.downloadUrl\n }\n };\n createDialog(parent, 'Error', result);\n parent.trigger('failure', downloadArgs);\n }\n });\n fetch.send(JSON.stringify(downloadArgs.data));\n }\n }\n });\n}\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { select, isNullOrUndefined as isNOU, createElement, Internationalization } from '@syncfusion/ej2-base';\nimport { getValue, remove, selectAll } from '@syncfusion/ej2-base';\nimport { createFolder } from '../common/operations';\nimport * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { paste, rename } from '../common/operations';\nimport { getLocaleText, getDuplicateData, objectToString, getCssClass } from '../common/utility';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the type of event args.\n * @param {FileDetails} details - specifies the file details.\n * @returns {void}\n * @private\n */\nexport function createDialog(parent, text, e, details) {\n const options = getOptions(parent, text, e, details);\n if (isNOU(parent.dialogObj)) {\n parent.dialogObj = new Dialog({\n beforeOpen: keydownAction.bind(this, parent, options.dialogName),\n beforeClose: (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 const 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: (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 = (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 const eventArgs = {\n cancel: args.cancel, popupName: dialogName, popupModule: dlgModule\n };\n parent.trigger('beforePopupOpen', eventArgs, (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 const eventArgs = {\n cancel: args.cancel, popupModule: dlgModule, popupName: dialogName\n };\n parent.trigger('beforePopupClose', eventArgs, (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 const 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 const args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupClose', args);\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {DialogOptions} - returns the dialog options.\n * @private\n */\nfunction getExtOptions(parent, text, replaceItems, newPath) {\n const options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n let duplicateContent;\n let item;\n let index;\n options.open = () => { triggerPopupOpen(parent, parent.extDialogObj, options.dialogName); };\n options.close = () => { 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: () => {\n parent.extDialogObj.hide();\n rename(parent, newPath, parent.renameText);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: () => {\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 = () => {\n if (!parent.isDropEnd && parent.duplicateItems.length === 0) {\n const 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: () => {\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 let item = parent.replaceItems[parent.fileLength];\n const indexval = item.lastIndexOf('/');\n item = indexval === -1 ? item : item.substring(indexval);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n const targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n const path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n const 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: () => {\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n let item = parent.replaceItems[parent.fileLength];\n const ind = item.lastIndexOf('/');\n item = ind === -1 ? item : item.substring(ind);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n if (parent.duplicateItems.length !== 0) {\n const action = parent.isDragDrop ? 'move' : parent.fileAction;\n const targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n const 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 = () => {\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: () => {\n retryDlgUpdate(parent, true);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Replace') },\n click: () => {\n retryDlgUpdate(parent, false);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Skip') },\n click: () => {\n let 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 let flag = true;\n if (parent.isRetryOpened) {\n parent.isRetryOpened = false;\n }\n else {\n flag = false;\n }\n const ele = select('.e-dlg-checkbox', parent.extDialogObj.element);\n if (ele) {\n remove(ele);\n }\n if (flag) {\n parent.extDialogObj.hide();\n }\n else {\n parent.retryFiles = [];\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {object} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nfunction onRetryOpen(parent, args) {\n parent.isRetryOpened = true;\n const dialogEle = getValue('element', args);\n const container = select('.e-dlg-content', dialogEle);\n const checkContainer = parent.createElement('div', {\n className: 'e-dlg-checkbox'\n });\n const checkbox = parent.createElement('input', {\n id: parent.element.id + '_applyall'\n });\n checkContainer.appendChild(checkbox);\n container.appendChild(checkContainer);\n const checkBoxObj = new CheckBox({\n label: getLocaleText(parent, 'ApplyAll-Label'),\n change: (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 const ele = select('#newname', parent.dialogObj.element);\n ele.focus();\n ele.value = '';\n const 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 const 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 = () => {\n onValidate(parent, ele);\n };\n ele.onkeyup = (e) => {\n const 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 const 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 = () => {\n onValidate(parent, inputEle);\n };\n inputEle.onkeyup = (e) => {\n const 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 let txt = '';\n if (parent.isFile && !parent.showFileExtension) {\n const index = parent.currentItemText.lastIndexOf('.');\n txt = (index === -1) ? parent.currentItemText : parent.currentItemText.substring(0, index);\n }\n else {\n txt = parent.currentItemText;\n }\n inputEle.value = txt;\n if (parent.isFile && parent.showFileExtension && (inputEle.value.indexOf('.') !== -1)) {\n inputEle.setSelectionRange(0, inputEle.value.lastIndexOf('.'));\n }\n else {\n inputEle.setSelectionRange(0, inputEle.value.length);\n }\n}\n/**\n *\n * @param {HTMLInputElement} ele - specifies the element.\n * @param {string} placeholder - specifies the place holder.\n * @returns {void}\n * @private\n */\nfunction createInput(ele, placeholder) {\n Input.createInput({\n element: ele,\n properties: {\n placeholder: placeholder\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the event arguements.\n * @param {FileDetails} details - specifies the file details.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details) {\n const options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n let permission;\n let formattedString;\n let intl;\n let strArr;\n let fileType;\n let location;\n options.open = () => { triggerPopupOpen(parent, parent.dialogObj, options.dialogName); };\n options.close = () => { triggerPopupClose(parent, parent.dialogObj, options.dialogName); };\n text = (details && details.multipleFiles === true) ? 'MultipleFileDetails' : text;\n let index;\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: (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: () => {\n onDeleteSubmit(parent);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: () => {\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: (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: () => {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n options.dialogName = 'File Details';\n strArr = parent.itemData.map((val) => {\n index = val.name.indexOf('.') + 1;\n return (index === 0 && (!val.isFile)) ? 'Folder' : ((index !== 0) ? val.name.substr(index).replace(' ', '') : 'undetermined');\n });\n if (strArr[0] === undefined) {\n strArr = details.name.split(',').map((val) => {\n index = val.indexOf('.') + 1;\n return (index === 0) ? 'Folder' : val.substr(index).replace(' ', '');\n });\n }\n fileType = strArr.every((val, i, arr) => 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: (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: () => {\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 const 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 const 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 for (let btnCount = 0; btnCount < btnElement.length; btnCount++) {\n btnElement[btnCount].onkeydown = (e) => {\n if (e.keyCode === 13) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = (e) => {\n if (e.keyCode === 13) {\n btnElement[btnCount].click();\n }\n };\n }\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 = (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 const 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 const ele = select('#rename', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n let text = ele.value;\n const oIndex = parent.currentItemText.lastIndexOf('.');\n if (parent.isFile && !parent.showFileExtension) {\n const 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 const newPath = (parent.activeModule === 'navigationpane') ? getValue('filterPath', parent.itemData[0]).replace(/\\\\/g, '/') : parent.path;\n parent.renamedId = getValue('id', parent.itemData[0]);\n if (parent.isFile) {\n const oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n const nIndex = text.lastIndexOf('.');\n const 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 const len = ele.value.length - 1;\n if (ele.value !== '' && ((ele.value.lastIndexOf('.') === len) || (ele.value.lastIndexOf(' ') === len)) &&\n (parent.showFileExtension || (ele.value.lastIndexOf('.') === -1 || ele.value.substring(ele.value.indexOf('.') + 1).length === 0))) {\n addInvalid(parent, ele);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction addInvalid(parent, ele) {\n const 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 let 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 const content = createElement('div', { className: 'e-image-wrap' });\n const 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: () => { triggerPopupClose(parent, parent.viewerObj, 'Image Preview'); },\n beforeOpen: (args) => {\n triggerPopupBeforeOpen(parent, parent.viewerObj, args, 'Image Preview');\n },\n beforeClose: (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(() => {\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 const content = select('.e-dlg-content', parent.viewerObj.element);\n const imgWrap = select('.e-image-wrap', parent.viewerObj.element);\n const cssObj = window.getComputedStyle(content, null);\n const paddingWidth = cssObj ? (2 * parseFloat(cssObj.paddingRight)) : 36;\n const 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","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, DataUtil } 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 */\nexport class LargeIconsView {\n /**\n * Constructor for the LargeIcons module.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n constructor(parent) {\n this.isInteraction = true;\n this.uploadOperation = false;\n this.count = 0;\n this.isRendered = true;\n this.tapCount = 0;\n this.isSelectAllCalled = false;\n this.isPasteOperation = false;\n this.isInteracted = true;\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n addClass([this.element], CLS.LARGE_ICONS);\n this.addEventListener();\n this.keyConfigs = {\n end: 'end',\n home: 'home',\n tab: 'tab',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n ctrlUp: 'ctrl+uparrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftLeft: 'shift+leftarrow',\n shiftRight: 'shift+rightarrow',\n shiftUp: 'shift+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csLeft: 'ctrl+shift+leftarrow',\n csRight: 'ctrl+shift+rightarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n f2: 'f2',\n shiftdel: 'shift+delete',\n back: 'backspace',\n ctrlD: 'ctrl+d'\n };\n }\n render(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 const iconsView = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n const 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 if (this.parent.sortComparer && this.parent.sortBy !== 'None') {\n this.items = this.allItems = DataUtil.sort(this.items, this.parent.sortBy, this.comparer.bind(this));\n }\n else {\n this.items = this.allItems = getSortedData(this.parent, this.items);\n }\n iconsView.classList.remove(CLS.DISPLAY_NONE);\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n if (!this.element.style.height) {\n this.adjustHeight();\n }\n this.parent.virtualizationModule.setUIVirtualization();\n }\n this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.listElements));\n this.element.appendChild(this.listElements);\n this.listElements.setAttribute('aria-label', 'listbox');\n this.preventImgDrag();\n this.createDragObj();\n if (this.itemList.length === 0) {\n const 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 const activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.parent.activeModule = 'largeiconsview';\n }\n for (let i = 0; i < activeEle.length; i++) {\n activeEle[i].setAttribute('aria-selected', 'true');\n }\n this.adjustHeight();\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n this.parent.virtualizationModule.setUlElementHeight();\n this.parent.virtualizationModule.wireScrollEvent(false);\n }\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\n }\n comparer(x, y) {\n if (this.parent.sortOrder === 'Descending') {\n const z = x;\n x = y;\n y = z;\n }\n return this.parent.sortComparer(x, y);\n }\n preventImgDrag() {\n let i = 0;\n while (i < this.itemList.length) {\n if (this.itemList[i].querySelector('img')) {\n /* istanbul ignore next */\n this.itemList[i].ondragstart = () => { return false; };\n }\n i++;\n }\n }\n createDragObj() {\n if (this.listObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.listElements, {\n enableTailMode: true,\n distance: 5,\n enableAutoScroll: false,\n dragTarget: '.' + CLS.LARGE_ICON,\n helper: this.dragHelper.bind(this),\n cursorAt: this.parent.dragCursorPosition,\n dragArea: this.parent.element,\n dragStop: dragStopHandler.bind(this, this.parent),\n drag: draggingHandler.bind(this, this.parent),\n clone: true,\n dragStart: (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 dragHelper(args) {\n const dragTarget = args.sender.target;\n const 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 const activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n for (let i = 0; i < activeEle.length; i++) {\n this.parent.dragData.push(this.getItemObject(activeEle[parseInt(i.toString(), 10)]));\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 onDropInit(args) {\n if (this.parent.targetModule === this.getModuleName()) {\n const dropLi = closest(args.target, '.e-list-item');\n const cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n const 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 getModuleName() {\n return 'largeiconsview';\n }\n adjustHeight() {\n const pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n const bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n this.element.style.height = (pane.offsetHeight - bar.offsetHeight) + 'px';\n }\n onItemCreated(args) {\n args.item.removeAttribute('aria-level');\n if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {\n const textEle = args.item.querySelector('.' + CLS.LIST_TEXT);\n const txt = getValue('name', args.curData);\n const type = getValue('type', args.curData);\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\n this.renderCheckbox(args);\n const eventArgs = {\n element: args.item,\n fileDetails: args.curData,\n module: 'LargeIconsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n }\n renderCheckbox(args) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n const checkElement = createCheckBox(createElement, false, {\n checked: false,\n cssClass: 'e-small'\n });\n checkElement.setAttribute('role', 'checkbox');\n checkElement.setAttribute('aria-checked', 'false');\n checkElement.setAttribute('aria-label', 'checkbox');\n args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);\n }\n onLayoutChange(args) {\n if (this.parent.view === 'LargeIcons') {\n this.destroy();\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.render(args);\n /* istanbul ignore next */\n if (getValue('name', args) === 'layout-change' && this.parent.fileAction === 'move' &&\n this.parent.isCut && this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n const indexes = this.getIndexes(this.parent.selectedNodes);\n let length = 0;\n while (length < indexes.length) {\n addBlur(this.itemList[indexes[length]]);\n length++;\n }\n }\n const 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 checkItem() {\n const checkEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (checkEle) {\n let checkLength = 0;\n while (checkLength < checkEle.length) {\n this.checkState(checkEle[checkLength], true);\n checkLength++;\n }\n }\n }\n renderList(args) {\n let i = 0;\n const items = JSON.parse(JSON.stringify(args.files));\n while (i < items.length) {\n const icon = fileType(items[i]);\n const name = getValue('name', items[i]);\n const selected = getItemName(this.parent, items[i]);\n let 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 const imgUrl = getImageUrl(this.parent, items[i]);\n setValue('_fm_imageUrl', imgUrl, items[i]);\n setValue('_fm_imageAttr', { alt: name }, items[i]);\n }\n else {\n setValue('_fm_icon', icon, items[i]);\n }\n setValue('_fm_htmlAttr', { class: className, title: name }, items[i]);\n i++;\n }\n return items;\n }\n onFinalizeEnd(args) {\n this.render(args);\n }\n onCreateEnd(args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.clearSelect();\n this.selectItems([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n this.parent.largeiconsviewModule.element.focus();\n this.parent.activeModule = 'largeiconsview';\n }\n onSelectedData() {\n if (this.parent.activeModule === 'largeiconsview') {\n this.updateSelectedData();\n }\n }\n onDeleteInit() {\n if (this.parent.activeModule === 'largeiconsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n }\n /* istanbul ignore next */\n onDeleteEnd(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 onRefreshEnd(args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n }\n onRenameInit() {\n if (this.parent.activeModule === 'largeiconsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n }\n onPathChanged(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 }\n }\n }\n onOpenInit(args) {\n if (this.parent.activeModule === 'largeiconsview') {\n this.doOpenAction(args.target);\n }\n }\n onHideLayout() {\n if (this.parent.view !== 'LargeIcons' && this.element) {\n this.element.classList.add(CLS.DISPLAY_NONE);\n }\n }\n onSelectAllInit() {\n if (this.parent.view === 'LargeIcons') {\n this.startItem = this.getFirstItem();\n const lastItem = this.getLastItem();\n const eveArgs = { ctrlKey: true, shiftKey: true };\n this.doSelection(lastItem, eveArgs);\n this.isInteraction = true;\n this.isInteracted = true;\n }\n }\n onClearAllInit() {\n if (this.parent.view === 'LargeIcons') {\n this.clearSelection();\n this.isInteraction = true;\n this.isInteracted = true;\n }\n }\n onBeforeRequest() {\n this.isRendered = false;\n }\n onAfterRequest() {\n this.isRendered = true;\n }\n /* istanbul ignore next */\n onSearch(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 onLayoutRefresh() {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.adjustHeight();\n }\n onUpdateSelectionData() {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.updateSelectedData();\n }\n onPathColumn() {\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 removeEventListener() {\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 addEventListener() {\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 onActionFailure() { this.isInteraction = true; this.isInteracted = true; }\n onMenuItemData(args) {\n if (this.parent.activeModule === this.getModuleName()) {\n const ele = closest(args.target, 'li');\n this.parent.itemData = [this.getItemObject(ele)];\n }\n }\n onDetailsInit() {\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 onpasteInit() {\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 oncutCopyInit() {\n if (this.parent.activeModule === this.getModuleName()) {\n const activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeRecords = [];\n this.parent.activeElements = [];\n for (let 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 onpasteEnd(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 onDropPath(args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n }\n onPropertyChanged(e) {\n let currentSelected;\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (const prop of Object.keys(e.newProp)) {\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 destroy() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.listObj) {\n this.unWireEvents();\n }\n this.startItem = null;\n this.listElements = null;\n }\n wireEvents() {\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 unWireEvents() {\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 onMouseOver(e) {\n const 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 wireClickEvent(toBind) {\n if (toBind) {\n this.clickObj = new Touch(this.element, {\n tap: (eve) => {\n eve.originalEvent.preventDefault();\n if (this.parent.isDevice) {\n this.tapCount = eve.tapCount;\n this.tapEvent = eve;\n setTimeout(() => {\n if (this.tapCount > 0) {\n this.doTapAction(this.tapEvent);\n }\n this.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n this.dblClickHandler(eve);\n }\n else {\n this.clickHandler(eve);\n }\n }\n },\n tapHold: (e) => {\n if (this.parent.isDevice) {\n this.multiSelect = this.parent.allowMultiSelection ? true : false;\n if (this.parent.allowMultiSelection) {\n addClass([this.parent.element], CLS.MULTI_SELECT);\n }\n this.clickHandler(e);\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n }\n doTapAction(eve) {\n const target = eve.originalEvent.target;\n const 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 clickHandler(e) {\n const 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 doSelection(target, e) {\n const item = closest(target, '.' + CLS.LIST_ITEM);\n const cList = target.classList;\n this.parent.isFile = false;\n let action = 'select';\n if (e.which === 3 && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {\n this.addActive(item);\n this.updateType(item);\n return;\n }\n else if (!isNOU(item)) {\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)\n && (e.ctrlKey || target.classList.contains(CLS.CHECK))) {\n action = 'unselect';\n }\n if (e.ctrlKey && e.shiftKey) {\n this.isSelectAllCalled = true;\n }\n const 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 const startIndex = this.itemList.indexOf(this.startItem);\n const endIndex = this.itemList.indexOf(item);\n if (startIndex > endIndex) {\n for (let i = startIndex; i >= endIndex; i--) {\n this.addActive(this.itemList[i]);\n }\n }\n else {\n for (let i = startIndex; i <= endIndex; i++) {\n this.addActive(this.itemList[i]);\n }\n }\n this.addFocus(this.itemList[endIndex]);\n }\n else {\n this.startItem = item;\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)) {\n this.removeActive(item);\n }\n else {\n this.addActive(item);\n }\n this.addFocus(item);\n }\n if (this.parent.selectedItems.length === 0) {\n this.resetMultiSelect();\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect(action, item);\n }\n }\n else {\n if (this.parent.selectedItems.length === this.itemList.length) {\n this.isSelectAllCalled = true;\n }\n this.clearSelection();\n }\n if (!isNOU(item)) {\n this.isSelectAllCalled = false;\n this.updateType(item);\n }\n }\n dblClickHandler(e) {\n this.parent.activeModule = 'largeiconsview';\n const target = e.originalEvent.target;\n this.doOpenAction(target);\n }\n clearSelection() {\n this.clearSelect();\n this.resetMultiSelect();\n this.parent.notify(events.selectionChanged, {});\n }\n resetMultiSelect() {\n this.multiSelect = false;\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n }\n doOpenAction(target) {\n if (isNOU(target)) {\n return;\n }\n const item = closest(target, '.' + CLS.LIST_ITEM);\n this.parent.isFile = false;\n if (!isNOU(item)) {\n this.updateType(item);\n const details = this.getItemObject(item);\n if (!hasReadAccess(details)) {\n createDeniedDialog(this.parent, details, events.permissionRead);\n return;\n }\n const eventArgs = { cancel: false, fileDetails: details, module: 'LargeIconsView' };\n this.parent.trigger('fileOpen', eventArgs, (fileOpenArgs) => {\n if (!fileOpenArgs.cancel) {\n const text = getValue('name', details);\n if (!this.parent.isFile) {\n const val = this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !this.parent.isFiltered) {\n const id = getValue('id', details);\n this.parent.oldPath = this.parent.path;\n const 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));\n this.parent.itemData = [details];\n openAction(this.parent);\n }\n else {\n openSearchFolder(this.parent, details);\n }\n this.parent.isFiltered = false;\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n else {\n const icon = fileType(details);\n if (icon === CLS.ICON_IMAGE) {\n const imgUrl = getImageUrl(this.parent, details);\n createImageDialog(this.parent, text, imgUrl);\n }\n }\n }\n });\n }\n }\n updateType(item) {\n const folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n }\n /* istanbul ignore next */\n keydownActionHandler(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 keyActionHandler(e) {\n if (!this.isRendered) {\n return;\n }\n const fItem = this.getFocusedItem();\n const firstItem = this.getFirstItem();\n const lastItem = this.getLastItem();\n switch (e.action) {\n case 'end':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTo(0, this.element.firstElementChild.scrollHeight);\n setTimeout(() => {\n this.navigateItem(this.itemList[this.itemList.length - 1]);\n }, 10);\n }\n else {\n this.navigateItem(lastItem);\n }\n break;\n case 'home':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTop = 0;\n setTimeout(() => {\n this.navigateItem(this.itemList[0]);\n }, 10);\n }\n else {\n this.navigateItem(firstItem);\n }\n break;\n case 'tab':\n if (!isNOU(fItem)) {\n this.addFocus(fItem);\n }\n else if (!isNOU(firstItem)) {\n this.addFocus(firstItem);\n }\n break;\n case 'moveDown':\n this.navigateDown(fItem, true);\n break;\n case 'moveLeft':\n this.navigateRight(fItem, false);\n break;\n case 'moveRight':\n this.navigateRight(fItem, true);\n break;\n case 'moveUp':\n this.navigateDown(fItem, false);\n break;\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n this.csEndKey(lastItem, e);\n break;\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n this.csHomeKey(firstItem, e);\n break;\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n this.csDownKey(fItem, e);\n break;\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n this.csLeftKey(fItem, e);\n break;\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n this.csRightKey(fItem, e);\n break;\n case 'ctrlUp':\n case 'shiftUp':\n case 'csUp':\n this.csUpKey(fItem, e);\n break;\n case 'space':\n this.spaceKey(fItem);\n break;\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n if (!isNOU(fItem)) {\n this.doSelection(fItem, e);\n }\n break;\n case 'ctrlA':\n this.ctrlAKey(firstItem, lastItem);\n break;\n case 'enter':\n this.doOpenAction(this.parent.visitedItem ? this.parent.visitedItem : this.getVisitedItem());\n break;\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n }\n }\n doDownload() {\n this.updateSelectedData();\n doDownload(this.parent);\n }\n performDelete() {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.updateSelectedData();\n const data = this.parent.itemData;\n for (let 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 performRename() {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n }\n updateRenameData() {\n const item = select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n const data = this.getItemObject(item);\n updateRenamingData(this.parent, data);\n }\n getVisitedItem() {\n const item = this.parent.selectedItems[this.parent.selectedItems.length - 1];\n const indexes = this.getIndexes([item], this.parent.hasId);\n return this.itemList[indexes[0]];\n }\n getFocusedItem() {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.FOCUS, this.element);\n }\n getActiveItem() {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n }\n getFirstItem() {\n return this.itemList[0];\n }\n getLastItem() {\n return this.itemList[this.itemList.length - 1];\n }\n navigateItem(item) {\n this.setFocus(item);\n }\n navigateDown(fItem, isTowards) {\n const nItem = this.getNextItem(fItem, isTowards, this.perRow);\n this.setFocus(nItem);\n }\n navigateRight(fItem, isTowards) {\n const nItem = this.getNextItem(fItem, isTowards);\n this.setFocus(nItem);\n }\n getNextItem(li, isTowards, perRow) {\n if (isNOU(li)) {\n return this.getFocusedItem() || this.getActiveItem() || this.getFirstItem();\n }\n let index = this.itemList.indexOf(li);\n let nextItem;\n do {\n if (isTowards) {\n index = perRow ? index + perRow : index + 1;\n }\n else {\n index = perRow ? index - perRow : index - 1;\n }\n nextItem = this.itemList[index];\n if (this.parent.enableVirtualization && isNOU(nextItem)) {\n const marginValue = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-bottom'), 10);\n const scrollHeight = this.itemList[0].getBoundingClientRect().height + marginValue;\n this.element.firstElementChild.scrollTo(this.element.firstElementChild.scrollTop, this.element.firstElementChild.scrollTop + scrollHeight);\n }\n if (isNOU(nextItem)) {\n return li;\n }\n } while (!isVisible(nextItem));\n return nextItem;\n }\n setFocus(nextItem) {\n if (!isNOU(nextItem)) {\n const 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 spaceKey(fItem) {\n if (!isNOU(fItem) && !fItem.classList.contains(CLS.ACTIVE)) {\n const 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 ctrlAKey(firstItem, lastItem) {\n if (this.parent.allowMultiSelection && !isNOU(firstItem)) {\n this.startItem = firstItem;\n const eveArgs = { ctrlKey: true, shiftKey: true };\n const liParent = this.element.querySelector('.' + CLS.LIST_PARENT);\n const liScrPos = liParent.scrollTop;\n const getCurFocusedItem = this.getFocusedItem();\n this.doSelection(lastItem, eveArgs);\n liParent.scrollTop = liScrPos;\n if (!isNOU(getCurFocusedItem)) {\n this.addFocus(getCurFocusedItem);\n }\n }\n }\n csEndKey(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 csHomeKey(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 csDownKey(fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, true);\n }\n else {\n const 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 csLeftKey(fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, false);\n }\n else {\n const 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 csRightKey(fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, true);\n }\n else {\n const 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 csUpKey(fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, false);\n }\n else {\n const 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 addActive(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 removeActive(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 const 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 getDataName(item) {\n const data = this.getItemObject(item);\n return getItemName(this.parent, data);\n }\n addFocus(item) {\n this.element.setAttribute('tabindex', '-1');\n const 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 checkState(item, toCheck) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n const 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 clearSelect() {\n const eles = Array.prototype.slice.call(selectAll('.' + CLS.ACTIVE, this.listElements));\n let fileSelectionArgs;\n if (eles.length !== 0) {\n fileSelectionArgs = this.triggerSelection('unselect', eles[0]);\n if (fileSelectionArgs.cancel !== true) {\n for (let i = 0, len = eles.length; i < len; i++) {\n this.removeActive(eles[i]);\n }\n }\n this.triggerSelect('unselect', eles[0]);\n }\n }\n resizeHandler() {\n this.getItemCount();\n if (!isNOU(this.listObj)) {\n this.adjustHeight();\n }\n }\n splitterResizeHandler() {\n this.getItemCount();\n }\n getItemCount() {\n let perRow = 1;\n if (this.itemList) {\n for (let 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 triggerSelection(action, item) {\n const data = [];\n if (this.isSelectAllCalled) {\n for (let i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n }\n else {\n data[0] = this.getItemObject(item);\n }\n const eventArgs = { action: action, fileDetails: data.length > 1\n ? data : data[0], isInteracted: this.isInteraction, cancel: false, target: this.isSelectAllCalled ? null\n : item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n }\n triggerSelect(action, item) {\n const data = [];\n if (this.isSelectAllCalled) {\n for (let i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n this.isSelectAllCalled = false;\n }\n else {\n data[0] = this.getItemObject(item);\n }\n this.parent.visitedData = data.length > 1 ? data[data.length - 1] : data[0];\n const eventArgs = { action: action, fileDetails: data.length > 1\n ? data\n : data[0], isInteracted: this.isInteracted };\n this.parent.trigger('fileSelect', eventArgs);\n this.isInteracted = true;\n }\n selectItems(items) {\n const indexes = this.getIndexes(items, this.parent.hasId);\n for (let j = 0, len = indexes.length; j < len; j++) {\n const eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[indexes[j]], eveArgs);\n }\n }\n getIndexes(items, byId) {\n const indexes = [];\n const filter = byId ? 'id' : 'name';\n for (let 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 getItemObject(item) {\n const index = this.itemList.indexOf(item);\n return this.items[index];\n }\n addSelection(data) {\n let 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 const 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 const index = this.items.indexOf(resultData[0]);\n const eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[index], eveArgs);\n }\n }\n updateSelectedData() {\n const data = [];\n const items = selectAll('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n for (let i = 0; i < items.length; i++) {\n data[i] = this.getItemObject(items[i]);\n }\n this.parent.itemData = data;\n }\n onMethodCall(args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n const 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 getItemsIndex(items) {\n const indexes = [];\n const isFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n const filterName = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !isFilter) {\n for (let 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 (let i = 0, len = this.items.length; i < len; i++) {\n const name = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);\n if ((items.indexOf(name) !== -1) || (items.indexOf(getValue(filterName, this.items[i])) !== -1)) {\n indexes.push(i);\n }\n }\n }\n return indexes;\n }\n deleteFiles(ids) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n const indexes = this.getItemsIndex(ids);\n if (indexes.length === 0) {\n return;\n }\n const data = [];\n const newIds = [];\n for (let 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 downloadFiles(ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n const index = this.getItemsIndex(ids);\n if (index.length === 0) {\n return;\n }\n const data = [];\n const newIds = [];\n for (let 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 openFile(id) {\n if (isNOU(id)) {\n return;\n }\n const indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n this.doOpenAction(this.itemList[indexes[0]]);\n }\n }\n renameFile(id, name) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n const 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}\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 */\nexport class BreadCrumbBar {\n /**\n * constructor for addressbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies parent element.\n * @private\n *\n */\n constructor(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 onPropertyChanged(e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (const prop of Object.keys(e.newProp)) {\n const 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 render() {\n this.addEventListener();\n }\n onPathChange() {\n const pathNames = this.parent.pathNames;\n const paths = this.parent.path.split('/');\n const addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n let addressbarLI = null;\n const pathNamesLen = pathNames.length;\n if (pathNames.length > 0) {\n let id = '';\n for (let i = 0; i < pathNamesLen; i++) {\n let addressATag = null;\n addressbarLI = this.parent.createElement('li', { className: 'e-address-list-item' });\n for (let j = 0; j <= i; j++) {\n id = id + paths[j] + '/';\n }\n addressbarLI.setAttribute('data-utext', id);\n if (i !== 0) {\n const 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 const 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 const 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 updateBreadCrumbBar(addresBarUL) {\n const liElements = addresBarUL.querySelectorAll('li');\n const ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n const style = window.getComputedStyle(ulElement, null);\n const pRight = parseFloat(style.getPropertyValue('padding-right'));\n const pLeft = parseFloat(style.getPropertyValue('padding-left'));\n let breadCrumbBarWidth = ulElement.offsetWidth - pRight - pLeft;\n const addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n let liElementsWidth = 0;\n const liElementsWidths = [];\n for (let i = 0; i < liElements.length; i++) {\n const width = liElements[i].clientWidth;\n liElementsWidths.push(width);\n liElementsWidth = liElementsWidth + width;\n }\n if (!isNullOrUndefined(ulElement)) {\n remove(ulElement);\n }\n const searchContainer = this.parent.createElement('div');\n searchContainer.setAttribute('class', 'e-search-wrap');\n const id = this.parent.element.id + CLS.SEARCH_ID;\n const searchInput = createElement('input', { id: id,\n attrs: { autocomplete: 'off', 'aria-label': getLocaleText(this.parent, 'Search') } });\n searchContainer.appendChild(searchInput);\n const searchEle = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap .e-input');\n if (isNullOrUndefined(searchEle)) {\n this.parent.breadCrumbBarNavigation.appendChild(searchContainer);\n const 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 const 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 const searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n breadCrumbBarWidth = breadCrumbBarWidth - (this.searchWrapWidth ? this.searchWrapWidth : searchWrap.offsetWidth);\n if (liElementsWidth > breadCrumbBarWidth) {\n let i = liElements.length;\n while (i--) {\n const diff = breadCrumbBarWidth - liElementsWidths[i];\n if (diff > 40) {\n addressbarUL.insertBefore(liElements[i], addressbarUL.querySelector('li'));\n breadCrumbBarWidth = diff;\n }\n else {\n const items = [];\n for (let j = 0; j <= i; j++) {\n const liElement = liElements[j];\n items.push({\n text: liElement.innerText,\n utext: liElement.getAttribute('data-utext')\n });\n }\n const subMenuLi = this.parent.createElement('li', { className: 'e-breadcrumb-menu' });\n const attributes = { className: 'e-breadcrumb-submenu' };\n const 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 onFocus() {\n const wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.add('e-focus');\n }\n /* istanbul ignore next */\n onKeyUp() {\n this.parent.notify(events.pathColumn, { args: this.parent });\n }\n /* istanbul ignore next */\n onBlur() {\n const wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.remove('e-focus');\n }\n /* istanbul ignore next */\n subMenuSelectOperations(event) {\n const args = { target: event.element };\n this.addressPathClickHandler(args);\n }\n /* istanbul ignore next */\n addSubMenuAttributes(args) {\n args.element.setAttribute('data-utext', getValue('utext', args.item));\n const anchor = this.parent.createElement('a', { className: 'e-list-text' });\n args.element.appendChild(anchor);\n }\n searchEventBind(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 searchChangeHandler(args) {\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(() => { searchWordHandler(this.parent, args.value, false); }, 300);\n }\n else {\n searchWordHandler(this.parent, args.value, false);\n }\n }\n }\n addressPathClickHandler(e) {\n const li = e.target;\n if (li.nodeName === 'LI' || li.nodeName === 'A') {\n const node = li.nodeName === 'LI' ? li.children[0] : li;\n if (!isNullOrUndefined(node)) {\n this.parent.isFiltered = false;\n const 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 const treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n }\n }\n triggerFileOpen(data) {\n const eventArgs = { cancel: false, fileDetails: data, module: 'BreadCrumbBar' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n }\n /* istanbul ignore next */\n onShowInput() {\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 const 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 updatePath(list) {\n const li = closest(list, 'li');\n const liElementId = li.getAttribute('data-utext');\n this.addressBarLink = liElementId;\n const link = this.addressBarLink.split('/');\n const ids = this.parent.pathId;\n const names = this.parent.pathNames;\n this.parent.pathId = [];\n this.parent.pathNames = [];\n let newpath = '';\n for (let 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 onUpdatePath() {\n this.onPathChange();\n this.removeSearchValue();\n }\n onCreateEnd() {\n this.onPathChange();\n }\n onRenameEnd() {\n this.onPathChange();\n }\n /* istanbul ignore next */\n onDeleteEnd() {\n this.onUpdatePath();\n }\n /* istanbul ignore next */\n removeSearchValue() {\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 onResize() {\n this.onPathChange();\n }\n onPasteEnd() {\n this.onPathChange();\n }\n addEventListener() {\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 keyActionHandler(e) {\n switch (e.action) {\n case 'enter':\n this.addressPathClickHandler(e);\n break;\n }\n }\n removeEventListener() {\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 onDropInit(args) {\n if (this.parent.targetModule === this.getModuleName()) {\n const 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 const 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 getModuleName() {\n return 'breadcrumbbar';\n }\n destroy() {\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 onSearchTextChange(args) {\n this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + getLocaleText(this.parent, args.cwd.name.toString());\n }\n}\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 */\nexport class ContextMenu {\n /**\n * Constructor for the ContextMenu module\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @hidden\n */\n constructor(parent) {\n this.isMenuItemClicked = false;\n this.currentItems = [];\n this.currentElement = null;\n this.disabledItems = [];\n this.parent = parent;\n this.render();\n }\n render() {\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 onBeforeItemRender(args) {\n if (args.item.id === this.getMenuId('largeiconsview')) {\n const iconSpan = createElement('span');\n const 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 const iconSpan = createElement('span');\n const 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 onBeforeClose() {\n this.menuTarget = null;\n if (!this.isMenuItemClicked && this.parent.pathId.length > 1 && this.parent.activeModule === 'navigationpane') {\n this.parent.pathId.pop();\n const parentKey = [];\n const itemKeys = Object.keys(this.parent.feParent);\n for (const item of itemKeys) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const itemData = getValue(item, this.parent.feParent);\n if (this.parent.pathNames.indexOf(itemData.name) !== -1) {\n parentKey.push(itemData._fm_id);\n }\n }\n this.parent.pathId.push(parentKey[parentKey.length - 1]);\n this.parent.navigationpaneModule.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n }\n this.isMenuItemClicked = false;\n }\n /* istanbul ignore next */\n onBeforeOpen(args) {\n let selected = false;\n let uid;\n let data;\n let treeFolder = false;\n let target = args.event.target;\n this.menuTarget = this.targetNodeElement = target;\n this.currentElement = args.element;\n if (target.classList.contains('e-spinner-pane')) {\n target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(CLS.FULLROW)[0];\n this.menuTarget = this.targetNodeElement = target;\n }\n this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr.e-row') : target;\n if (this.parent.enableVirtualization && (target.classList.contains('e-virtual-bottom') || target.classList.contains('e-virtualtable'))) {\n target = target.parentElement.closest('div');\n }\n const 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 }\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 }\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 if (this.parent.view === 'LargeIcons' && !isNOU(closest(target, 'li')) && !closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n const eveArgs = { ctrlKey: true, shiftKey: true };\n if (!closest(target, 'li').classList.contains('e-active')) {\n this.parent.largeiconsviewModule.doSelection(target, eveArgs);\n }\n data = this.parent.visitedData;\n selected = true;\n }\n else if (!isNOU(closest(target, 'tr.e-row'))) {\n uid = this.targetElement.getAttribute('data-uid');\n data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;\n if (isNOU(this.targetElement.getAttribute('aria-selected'))) {\n /* istanbul ignore next */\n this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('data-rowindex'), 10)]);\n }\n selected = true;\n /* istanbul ignore next */\n }\n else if (closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n uid = closest(target, 'li').getAttribute('data-uid');\n treeFolder = true;\n }\n /* istanbul ignore next */\n if (selected) {\n if (getValue('isFile', data) === true) {\n this.setFileItem();\n }\n else {\n this.setFolderItem(false);\n }\n /* istanbul ignore next */\n }\n else if (treeFolder) {\n this.setFolderItem(true);\n if (uid === this.parent.pathId[0]) {\n this.disabledItems.push('Delete', 'Rename', 'Cut', 'Copy');\n }\n else {\n const itemsToRemove = ['Delete', 'Rename', 'Cut', 'Copy'];\n for (let i = 0; i < this.disabledItems.length; i++) {\n const item = this.disabledItems[i];\n if (itemsToRemove.indexOf(item) !== -1) {\n this.disabledItems.splice(i, 1);\n i--;\n }\n }\n }\n /* istanbul ignore next */\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 const pasteEle = select('#' + this.getMenuId('Paste'), this.contextMenu.element);\n if (!args.cancel && !this.parent.enablePaste &&\n pasteEle && !pasteEle.classList.contains('e-disabled')) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n else {\n const pasteIndex = this.disabledItems.indexOf('Paste');\n if (pasteIndex !== -1) {\n this.disabledItems.splice(pasteIndex, 1);\n }\n }\n if (args.cancel) {\n this.menuTarget = this.currentElement = null;\n return;\n }\n this.contextMenu.dataBind();\n let 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 const 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, (menuOpenArgs) => {\n if (!isSubMenu) {\n this.contextMenu.dataBind();\n this.contextMenu.items = menuOpenArgs.items;\n this.contextMenu.dataBind();\n }\n this.enableItems(this.disabledItems, false, true);\n args.cancel = menuOpenArgs.cancel;\n if (menuOpenArgs.cancel) {\n this.menuTarget = this.targetNodeElement = this.currentElement = null;\n }\n });\n }\n updateActiveModule() {\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 getTargetView(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 getItemIndex(item) {\n const itemId = this.getMenuId(item);\n for (let 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 disableItem(items) {\n if (items.length !== 0) {\n this.disabledItems = this.disabledItems.concat(items);\n }\n }\n enableItems(items, enable, isUniqueId) {\n for (let 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 setFolderItem(isTree) {\n this.menuType = 'folder';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map((item) => item.trim()));\n this.contextMenu.dataBind();\n if (isTree) {\n const selectedTreeNode = select('[data-uid=\"' + this.parent.navigationpaneModule.treeObj.selectedNodes[0] + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {\n this.disabledItems.push('Open');\n }\n else {\n const indexToRemove = this.disabledItems.indexOf('Open');\n if (indexToRemove !== -1) {\n this.disabledItems.splice(indexToRemove, 1);\n }\n }\n if (this.parent.selectedItems.length === 0) {\n const renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n }\n else if (this.parent.activeModule !== 'navigationpane') {\n if (this.parent.selectedItems.length === 1) {\n const renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n else {\n this.disabledItems.push('Rename', 'Paste');\n }\n }\n }\n setFileItem() {\n this.menuType = 'file';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.file.map((item) => item.trim()));\n this.contextMenu.dataBind();\n if (this.parent.selectedItems.length === 1) {\n const renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n else {\n this.disabledItems.push('Rename');\n }\n }\n setLayoutItem(target) {\n this.menuType = 'layout';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map((item) => 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 else {\n this.disabledItems = this.disabledItems.filter((item) => item !== 'SelectAll');\n }\n if (this.parent.selectedNodes.length === 0) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n this.contextMenu.dataBind();\n }\n checkValidItem(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 getMenuItemData() {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n const args = { target: this.menuTarget };\n this.parent.notify(events.menuItemData, args);\n return this.parent.itemData[0];\n }\n }\n /* istanbul ignore next */\n onSelect(args) {\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n const itemText = args.item.id.substr((this.parent.element.id + '_cm_').length);\n let details;\n if (itemText === 'refresh' || itemText === 'newfolder' || itemText === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n if (this.parent.activeModule === 'navigationpane' && itemText === 'open') {\n details = [this.menuItemData];\n }\n else {\n details = this.parent.itemData;\n }\n }\n const eventArgs = {\n cancel: false,\n element: args.element,\n fileDetails: details,\n item: args.item\n };\n this.parent.trigger('menuClick', eventArgs, (menuClickArgs) => {\n let sItems;\n if (!menuClickArgs.cancel) {\n this.isMenuItemClicked = true;\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 (let 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 (let i = 0; i < details.length; i++) {\n if (!hasDownloadAccess(details[i])) {\n createDeniedDialog(this.parent, details[i], events.permissionDownload);\n return;\n }\n }\n if (this.parent.activeModule === 'navigationpane') {\n this.parent.notify(events.downloadInit, {});\n }\n else if (this.parent.selectedItems.length > 0) {\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(this.parent, details[0], events.permissionEdit);\n }\n else {\n this.parent.notify(events.renameInit, {});\n createDialog(this.parent, 'Rename');\n }\n break;\n case 'selectall':\n /* istanbul ignore next */\n this.parent.notify(events.selectAllInit, {});\n break;\n case 'refresh':\n refresh(this.parent);\n break;\n case 'open':\n if (this.parent.visitedItem && this.parent.activeModule !== 'navigationpane') {\n this.parent.notify(events.openInit, { target: this.parent.visitedItem });\n }\n else if (this.parent.activeModule === 'navigationpane') {\n if (this.parent.visitedItem) {\n this.parent.notify(events.openInit, { target: this.parent.visitedItem });\n }\n this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(this.targetNodeElement, 'li'));\n }\n break;\n case 'details':\n this.parent.notify(events.detailsInit, {});\n sItems = this.parent.selectedItems;\n if (this.parent.activeModule === 'navigationpane') {\n sItems = [];\n this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(this.targetNodeElement, 'li'));\n }\n GetDetails(this.parent, sItems, this.parent.path, 'details');\n break;\n case 'newfolder':\n createNewFolder(this.parent);\n break;\n case 'upload':\n uploadItem(this.parent);\n break;\n case 'name':\n case 'size':\n case 'date':\n case 'ascending':\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 case 'largeiconsview':\n updateLayout(this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\n case 'detailsview':\n updateLayout(this.parent, 'Details');\n break;\n }\n }\n });\n }\n onPropertyChanged(e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (const prop of Object.keys(e.newProp)) {\n switch (prop) {\n case 'cssClass':\n this.contextMenu.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n break;\n }\n }\n }\n addEventListener() {\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 removeEventListener() {\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.keyboardModule.destroy();\n }\n keyActionHandler(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 getModuleName() {\n return 'contextmenu';\n }\n destroy() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.contextMenu.destroy();\n this.targetElement = null;\n }\n /* istanbul ignore next */\n getItemData(data) {\n const items = [];\n for (let i = 0; i < data.length; i++) {\n let item;\n const itemId = this.getMenuId(data[i]);\n const 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 getMenuId(id) {\n return this.parent.element.id + '_cm_' + id.split(' ').join('').toLowerCase();\n }\n}\n","/**\n * Specifies the default locale of FileManager component\n */\nexport const 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 __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};\nvar FileManager_1;\nimport { Component, isNullOrUndefined, L10n, closest, Collection } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Complex, select } from '@syncfusion/ej2-base';\nimport { createElement, addClass, removeClass, setStyleAttribute as setAttr, getUniqueID } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Splitter } from '@syncfusion/ej2-layouts';\nimport { Dialog, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { ToolbarSettings, AjaxSettings, NavigationPaneSettings, DetailsViewSettings } from '../models/index';\nimport { ToolbarItem } from '../models/index';\nimport { SearchSettings } from '../models/index';\nimport { LargeIconsView } from '../layout/large-icons-view';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { UploadSettings } from '../models/upload-settings';\nimport * as events from './constant';\nimport * as CLS from './classes';\nimport { read, filter, createFolder } from '../common/operations';\nimport { refresh, getPathObject, getLocaleText, setNextPath, createDeniedDialog, getCssClass } from '../common/utility';\nimport { hasContentAccess, hasUploadAccess, updateLayout, createNewFolder, uploadItem, closePopup } 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 */\nlet FileManager = FileManager_1 = class FileManager extends Component {\n constructor(options, element) {\n super(options, element);\n this.filterData = null;\n this.selectedNodes = [];\n this.duplicateItems = [];\n this.duplicateRecords = [];\n this.previousPath = [];\n this.nextPath = [];\n this.existingFileCount = 0;\n this.isLayoutChange = false;\n this.layoutSelectedItems = [];\n this.renamedId = null;\n this.uploadItem = [];\n this.deleteRecords = [];\n this.isFile = false;\n this.isCut = false;\n this.isSearchCut = false;\n this.isSearchDrag = false;\n this.isPasteError = false;\n this.folderPath = '';\n this.isSameAction = false;\n this.isFiltered = false;\n // Specifies whether the sort by option is clicked or not.\n this.isSortByClicked = false;\n this.enablePaste = false;\n this.persistData = false;\n this.retryArgs = [];\n this.isOpened = false;\n this.isRetryOpened = false;\n this.isPathDrag = false;\n this.searchedItems = [];\n this.retryFiles = [];\n this.isApplySame = false;\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 this.droppedObjects = [];\n this.uploadingCount = 0;\n this.uploadedCount = 0;\n //Specifies whether the operating system is MAC or not\n this.isMac = false;\n FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu);\n }\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n getModuleName() {\n return 'filemanager';\n }\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n preRender() {\n if (isNOU(this.element.id) || this.element.id === '') {\n this.element.setAttribute('id', getUniqueID('filemanager'));\n }\n this.ensurePath();\n this.feParent = [];\n this.feFiles = [];\n setAttr(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.isDevice = Browser.isDevice;\n this.isMobile = this.checkMobile();\n if (this.isMobile) {\n this.setProperties({ navigationPaneSettings: { visible: false } }, true);\n }\n const 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 getPersistData() {\n const 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 requiredModules() {\n const 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 name: 'Toolbar'\n });\n }\n if (this.navigationPaneSettings.visible) {\n modules.push({\n member: 'navigationpane',\n args: [this],\n name: 'NavigationPane'\n });\n }\n if (this.view) {\n modules.push({\n member: 'detailsview',\n args: [this],\n name: 'DetailsView'\n });\n }\n if (this.contextMenuSettings.visible && !this.isDevice) {\n modules.push({\n member: 'contextmenu',\n args: [this],\n name: 'ContextMenu'\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualization',\n args: [this],\n name: 'Virtualization'\n });\n }\n return modules;\n }\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n render() {\n this.initialize();\n const slItems = isNOU(this.selectedItems) ? [] :\n this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);\n this.setProperties({ selectedItems: slItems }, true);\n this.fileView = this.view;\n this.isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n this.setRtl(this.enableRtl);\n this.addEventListeners();\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n this.adjustHeight();\n if (isNOU(this.navigationpaneModule)) {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n const bar = select('.' + CLS.SPLIT_BAR, this.element);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n this.wireEvents();\n this.renderComplete();\n }\n ensurePath() {\n let 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 const paths = currentPath.split('/');\n this.setProperties({ path: paths[0] + '/' }, true);\n this.pathNames = [];\n this.pathId = ['fe_tree'];\n this.itemData = [];\n }\n initialize() {\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 addWrapper() {\n const headerWrap = this.createElement('div', { id: this.element.id + CLS.TOOLBAR_ID });\n this.element.appendChild(headerWrap);\n const layoutWrap = this.createElement('div', {\n id: this.element.id + CLS.LAYOUT_ID, className: CLS.LAYOUT\n });\n this.element.appendChild(layoutWrap);\n const navigationWrap = this.createElement('div', {\n id: this.element.id + CLS.NAVIGATION_ID, className: CLS.NAVIGATION\n });\n const treeWrap = this.createElement('div', {\n id: this.element.id + CLS.TREE_ID\n });\n navigationWrap.appendChild(treeWrap);\n const 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 const gridWrap = this.createElement('div', {\n id: this.element.id + CLS.GRID_ID\n });\n contentWrap.appendChild(gridWrap);\n const 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 const overlay = this.createElement('span', { className: CLS.OVERLAY });\n contentWrap.appendChild(overlay);\n let 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 const dialogWrap = this.createElement('div', { id: this.element.id + CLS.DIALOG_ID });\n this.element.appendChild(dialogWrap);\n const menuWrap = this.createElement('ul', { id: this.element.id + CLS.CONTEXT_MENU_ID });\n this.element.appendChild(menuWrap);\n const dialogImgWrap = this.createElement('div', { id: this.element.id + CLS.IMG_DIALOG_ID });\n this.element.appendChild(dialogImgWrap);\n const extnDialogWrap = this.createElement('div', { id: this.element.id + CLS.EXTN_DIALOG_ID });\n this.element.appendChild(extnDialogWrap);\n const uploadDialogWrap = this.createElement('div', { id: this.element.id + CLS.UPLOAD_DIALOG_ID });\n this.element.appendChild(uploadDialogWrap);\n }\n adjustHeight() {\n const toolbar = select('#' + this.element.id + CLS.TOOLBAR_ID, this.element);\n const 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 splitterResize() {\n this.notify(events.splitterResize, {});\n }\n splitterAdjust() {\n const 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 addCssClass(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 showSpinner() {\n showSpinner(this.element);\n }\n hideSpinner() {\n hideSpinner(this.element);\n }\n onContextMenu(e) {\n e.preventDefault();\n }\n checkMobile() {\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 renderFileUpload() {\n const id = this.element.id + CLS.UPLOAD_ID;\n const 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 renderUploadBox() {\n const uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n this.uploadObj = new Uploader({\n dropArea: select('#' + this.element.id + CLS.CONTENT_ID, this.element),\n asyncSettings: {\n saveUrl: uploadUrl,\n removeUrl: uploadUrl\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n removing: this.onRemoving.bind(this),\n canceling: this.onCancel.bind(this),\n clearing: this.onClearing.bind(this),\n selected: this.onSelected.bind(this),\n success: this.onUploadSuccess.bind(this),\n failure: this.onUploadFailure.bind(this),\n autoUpload: this.uploadSettings.autoUpload,\n minFileSize: this.uploadSettings.minFileSize,\n maxFileSize: this.uploadSettings.maxFileSize,\n allowedExtensions: this.uploadSettings.allowedExtensions,\n directoryUpload: this.uploadSettings.directoryUpload,\n fileListRendering: this.onFileListRender.bind(this)\n });\n this.uploadObj.appendTo('#' + this.element.id + CLS.UPLOAD_ID);\n }\n onFileListRender(args) {\n this.trigger('uploadListCreate', args);\n }\n updateUploader() {\n this.uploadObj.autoUpload = this.uploadSettings.autoUpload;\n this.uploadObj.minFileSize = this.uploadSettings.minFileSize;\n this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;\n this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;\n this.uploadObj.directoryUpload = this.uploadSettings.directoryUpload;\n this.uploadObj.dataBind();\n }\n onBeforeOpen(args) {\n const eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupOpen', eventArgs, (eventargs) => {\n args.cancel = eventargs.cancel;\n });\n }\n onBeforeClose(args) {\n const eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupClose', eventArgs, (eventargs) => {\n args.cancel = eventargs.cancel;\n });\n }\n onOpen() {\n this.isOpened = true;\n this.uploadDialogObj.element.focus();\n const args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupOpen', args);\n }\n onClose() {\n this.isOpened = false;\n this.uploadObj.clearAll();\n const args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupClose', args);\n }\n /* istanbul ignore next */\n onUploading(args) {\n let action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (let 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 const data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\n const uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n const 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, (uploadEventArgs) => {\n args.customFormData = JSON.parse(getValue('data', uploadEventArgs.ajaxSettings));\n args.cancel = uploadEventArgs.cancel;\n const 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 onRemoving() {\n this.onFileUploadSuccess({ count: 1 });\n if (this.uploadObj.getFilesData().length === 1) {\n this.uploadDialogObj.hide();\n }\n }\n /* istanbul ignore next */\n onCancel(args) {\n const data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': 'remove' }, { 'data': data }];\n }\n /* istanbul ignore next */\n onClearing() {\n if (this.isOpened) {\n this.uploadDialogObj.hide();\n }\n }\n /* istanbul ignore next */\n onSelected(args) {\n if (args.filesData.length === 0) {\n return;\n }\n this.uploadingCount = args.filesData.length;\n this.uploadedCount = 0;\n const 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 onFileUploadSuccess(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 onUploadSuccess(files) {\n const 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 onUploadFailure(files) {\n const response = getValue('response', files);\n const statusText = getValue('statusText', response);\n if (statusText !== '') {\n setValue('statusText', statusText, files);\n }\n const 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 onInitialEnd() {\n setNextPath(this, this.path);\n }\n addEventListeners() {\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 removeEventListeners() {\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 onDetailsInit() {\n if (isNOU(this.activeModule)) {\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n }\n }\n resizeHandler() {\n this.adjustHeight();\n this.notify(events.resizeEnd, {});\n }\n keyActionHandler(e) {\n let uploadEle;\n switch (e.action) {\n case 'altN':\n e.preventDefault();\n this.itemData = [getPathObject(this)];\n if (!hasContentAccess(this.itemData[0])) {\n createDeniedDialog(this, this.itemData[0], events.permissionEditContents);\n }\n else {\n createDialog(this, 'NewFolder');\n }\n break;\n case 'f5':\n e.preventDefault();\n refresh(this);\n break;\n /* istanbul ignore next */\n case 'ctrlShift1':\n e.preventDefault();\n this.fileView = 'Details';\n this.setProperties({ view: 'Details' }, true);\n showSpinner(this.element);\n updateLayout(this, 'Details');\n break;\n /* istanbul ignore next */\n case 'ctrlShift2':\n e.preventDefault();\n this.fileView = 'LargeIcons';\n this.setProperties({ view: 'LargeIcons' }, true);\n showSpinner(this.element);\n updateLayout(this, 'LargeIcons');\n break;\n case 'ctrlU':\n e.preventDefault();\n if (this.toolbarSettings.items.indexOf('Upload') !== -1) {\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n }\n break;\n }\n }\n wireEvents() {\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 unWireEvents() {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\n }\n setPath() {\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 onPropertyChanged(newProp, oldProp) {\n let height;\n for (const prop of Object.keys(newProp)) {\n switch (prop) {\n case 'ajaxSettings':\n this.ajaxSettingSetModel(newProp);\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'allowMultiSelection':\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n else {\n if (this.selectedItems.length > 1) {\n this.setProperties({ selectedItems: this.selectedItems.slice(this.selectedItems.length - 1) }, true);\n }\n removeClass([this.element], CLS.CHECK_SELECT);\n }\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'cssClass':\n this.addCssClass(oldProp.cssClass, newProp.cssClass);\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'detailsViewSettings':\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n this.refresh();\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n this.refresh();\n break;\n case 'height':\n height = !isNOU(newProp.height) ? formatUnit(newProp.height) : newProp.height;\n setAttr(this.element, { 'height': height });\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'locale':\n if (!isNOU(newProp.enableRtl)) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n }\n this.localeSetModelOption(newProp);\n break;\n case 'navigationPaneSettings':\n this.splitterAdjust();\n this.notify(events.modelChanged, { module: 'navigationpane', newProp: newProp, oldProp: oldProp });\n break;\n case 'path':\n this.setPath();\n break;\n case 'searchSettings':\n if (!isNullOrUndefined(newProp.searchSettings.allowSearchOnTyping)) {\n this.setProperties({ searchSettings: { allowSearchOnTyping: newProp.searchSettings.allowSearchOnTyping } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.ignoreCase)) {\n this.setProperties({ searchSettings: { ignoreCase: newProp.searchSettings.ignoreCase } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.filterType)) {\n this.setProperties({ searchSettings: { filterType: newProp.searchSettings.filterType } }, true);\n }\n this.notify(events.modelChanged, { module: 'breadcrumbbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'selectedItems':\n if (this.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (this.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'showFileExtension':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showHiddenItems':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showThumbnail':\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'uploadSettings':\n this.updateUploader();\n break;\n case 'view':\n if (newProp.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (newProp.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'width':\n setAttr(this.element, { 'width': !isNOU(newProp.width) ? formatUnit(newProp.width) : newProp.width });\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'sortOrder':\n refresh(this);\n this.notify(events.sortByChange, {});\n break;\n case 'sortBy':\n refresh(this);\n this.notify(events.sortByChange, {});\n if (this.view === 'Details') {\n this.notify(events.sortColumn, {});\n }\n break;\n case 'popupTarget':\n if (this.uploadDialogObj) {\n this.uploadDialogObj.target = newProp.popupTarget;\n }\n if (this.dialogObj) {\n this.dialogObj.target = newProp.popupTarget;\n }\n if (this.extDialogObj) {\n this.extDialogObj.target = newProp.popupTarget;\n }\n if (this.viewerObj) {\n this.viewerObj.target = newProp.popupTarget;\n }\n break;\n case 'fileSystemData':\n this.fileSystemData = newProp.fileSystemData;\n this.refresh();\n break;\n }\n }\n }\n /* istanbul ignore next */\n ajaxSettingSetModel(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.refresh();\n }\n /* istanbul ignore next */\n localeSetModelOption(newProp) {\n this.uploadObj.locale = newProp.locale;\n super.refresh();\n }\n /**\n * Triggers when the component is destroyed.\n *\n * @returns {void}\n */\n destroy() {\n if (this.isDestroyed) {\n return;\n }\n if (!this.refreshing) {\n this.notify(events.destroy, {});\n }\n this.uploadObj.destroy();\n this.uploadObj = null;\n this.uploadDialogObj.destroy();\n this.uploadDialogObj = null;\n this.splitterObj.destroy();\n this.splitterObj = null;\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.dialogObj = null;\n }\n if (this.viewerObj) {\n this.viewerObj.destroy();\n this.viewerObj = null;\n }\n if (this.extDialogObj) {\n this.extDialogObj.destroy();\n this.extDialogObj = null;\n }\n this.element.removeAttribute('style');\n this.element.removeAttribute('tabindex');\n this.removeEventListeners();\n this.unWireEvents();\n this.addCssClass(this.cssClass, null);\n removeClass([this.element], [CLS.RTL, CLS.MOBILE, CLS.CHECK_SELECT]);\n this.element.innerHTML = '';\n this.breadCrumbBarNavigation = null;\n this.activeElements = null;\n this.virtualDragElement = null;\n this.visitedItem = null;\n super.destroy();\n this.virtualizationModule = null;\n this.navigationpaneModule = null;\n this.toolbarModule = null;\n this.contextmenuModule = null;\n this.largeiconsviewModule = null;\n this.detailsviewModule = null;\n this.breadcrumbbarModule = null;\n }\n /**\n * Creates a new folder in file manager.\n *\n * @param {string} name – Specifies the name of new folder in current path.\n * If it is not specified, then the default new folder dialog will be opened.\n * @returns {void}\n */\n createFolder(name) {\n this.notify(events.methodCall, { action: 'createFolder' });\n const details = [getPathObject(this)];\n this.itemData = details;\n if (name) {\n if (/[/\\\\|*?\"<>:]/.test(name)) {\n const 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 deleteFiles(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 disableToolbarItems(items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, false);\n }\n }\n /**\n * Downloads the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to download the nested level folders\n * or files, then specify the filter path along with name of the folders or files when performing search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then the selected items will be downloaded.\n *\n * @returns {void}\n */\n downloadFiles(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 enableToolbarItems(items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, true);\n }\n }\n /**\n * Disables the specified context menu items in file manager. This method is used only in the menuOpen event.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n disableMenuItems(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 getMenuItemIndex(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 getToolbarItemIndex(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 filterFiles(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 getSelectedFiles() {\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 openFile(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 refreshFiles() {\n refresh(this);\n }\n /**\n * Refreshes the layout of the file manager.\n *\n * @returns {void}\n */\n refreshLayout() {\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 selectAll() {\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 clearSelection() {\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 renameFile(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 uploadFiles() {\n const details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(this);\n }\n /**\n * Specifies the method which must be invoked to programmatically close the dialog popup in the file manager.\n *\n * @returns {void}\n */\n closeDialog() {\n closePopup(this);\n }\n /**\n * Specifies the direction of FileManager\n *\n * @param {boolean} rtl - specifies rtl parameter.\n * @returns {void}\n */\n setRtl(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};\n__decorate([\n Complex({}, AjaxSettings)\n], FileManager.prototype, \"ajaxSettings\", void 0);\n__decorate([\n Property([])\n], FileManager.prototype, \"fileSystemData\", void 0);\n__decorate([\n Property(false)\n], FileManager.prototype, \"allowDragAndDrop\", void 0);\n__decorate([\n Property(true)\n], FileManager.prototype, \"allowMultiSelection\", void 0);\n__decorate([\n Property(true)\n], FileManager.prototype, \"showItemCheckBoxes\", void 0);\n__decorate([\n Complex({}, ContextMenuSettings)\n], FileManager.prototype, \"contextMenuSettings\", void 0);\n__decorate([\n Property('')\n], FileManager.prototype, \"cssClass\", void 0);\n__decorate([\n Complex({}, DetailsViewSettings)\n], FileManager.prototype, \"detailsViewSettings\", void 0);\n__decorate([\n Property(true)\n], FileManager.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate([\n Property(false)\n], FileManager.prototype, \"enablePersistence\", void 0);\n__decorate([\n Property(false)\n], FileManager.prototype, \"enableVirtualization\", void 0);\n__decorate([\n Property('400px')\n], FileManager.prototype, \"height\", void 0);\n__decorate([\n Property('LargeIcons')\n], FileManager.prototype, \"view\", void 0);\n__decorate([\n Complex({}, NavigationPaneSettings)\n], FileManager.prototype, \"navigationPaneSettings\", void 0);\n__decorate([\n Property('/')\n], FileManager.prototype, \"path\", void 0);\n__decorate([\n Property(null)\n], FileManager.prototype, \"popupTarget\", void 0);\n__decorate([\n Complex({}, SearchSettings)\n], FileManager.prototype, \"searchSettings\", void 0);\n__decorate([\n Property()\n], FileManager.prototype, \"selectedItems\", void 0);\n__decorate([\n Property(true)\n], FileManager.prototype, \"showFileExtension\", void 0);\n__decorate([\n Property(null)\n], FileManager.prototype, \"rootAliasName\", void 0);\n__decorate([\n Property(false)\n], FileManager.prototype, \"showHiddenItems\", void 0);\n__decorate([\n Property(true)\n], FileManager.prototype, \"showThumbnail\", void 0);\n__decorate([\n Property('Ascending')\n], FileManager.prototype, \"sortOrder\", void 0);\n__decorate([\n Property('name')\n], FileManager.prototype, \"sortBy\", void 0);\n__decorate([\n Property(null)\n], FileManager.prototype, \"sortComparer\", void 0);\n__decorate([\n Complex({}, ToolbarSettings)\n], FileManager.prototype, \"toolbarSettings\", void 0);\n__decorate([\n Collection([], ToolbarItem)\n], FileManager.prototype, \"toolbarItems\", void 0);\n__decorate([\n Complex({}, UploadSettings)\n], FileManager.prototype, \"uploadSettings\", void 0);\n__decorate([\n Property('100%')\n], FileManager.prototype, \"width\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"fileLoad\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"fileOpen\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforeDownload\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforeImageLoad\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforePopupClose\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforePopupOpen\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforeSend\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"created\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforeFolderCreate\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"folderCreate\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"destroyed\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforeDelete\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"delete\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforeRename\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"rename\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforeMove\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"move\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"search\", 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);\nFileManager = FileManager_1 = __decorate([\n NotifyPropertyChanges\n], FileManager);\nexport { FileManager };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Toolbar as BaseToolbar } from '@syncfusion/ej2-navigations';\nimport { select, isNullOrUndefined as isNOU, closest, selectAll } from '@syncfusion/ej2-base';\nimport { createDialog } from '../pop-up/dialog';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { refresh, getPathObject, getLocaleText, getCssClass, sortbyClickHandler } from '../common/utility';\nimport { createDeniedDialog, updateLayout } from '../common/utility';\nimport { GetDetails } from '../common/operations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { cutFiles, copyFiles, pasteHandler, hasEditAccess } from '../common/index';\nimport { doDownload, createNewFolder, uploadItem } from '../common/index';\n/**\n * Toolbar module\n */\nexport class Toolbar {\n /**\n * Constructor for the Toolbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies the parent element.\n * @private\n */\n constructor(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 render() {\n this.items = this.toolbarItemData(this.getItems(this.parent.toolbarSettings.items.map((item) => item.trim())));\n const eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, (toolbarCreateArgs) => {\n this.items = toolbarCreateArgs.items;\n this.toolbarObj = new BaseToolbar({\n items: this.items,\n created: this.toolbarCreateHandler.bind(this),\n overflowMode: 'Popup',\n clicked: this.onClicked.bind(this),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl\n });\n this.toolbarObj.isStringTemplate = true;\n this.toolbarObj.root = this.parent.root ? this.parent.root : this.parent;\n this.toolbarObj.appendTo('#' + this.parent.element.id + CLS.TOOLBAR_ID);\n });\n }\n getItemIndex(item) {\n const itemId = this.getId(item);\n for (let i = 0; i < this.items.length; i++) {\n if (this.items[i].id === itemId) {\n return i;\n }\n }\n return -1;\n }\n getItems(items) {\n let currItems = items.slice();\n if (this.parent.isDevice && this.parent.allowMultiSelection) {\n currItems.push('SelectAll');\n }\n if (this.parent.toolbarItems.length > 0) {\n currItems = this.parent.toolbarItems.map((item) => item.name);\n }\n return currItems;\n }\n /* istanbul ignore next */\n onClicked(args) {\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n const tool = args.item.id.substr((this.parent.element.id + '_tb_').length);\n let 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 const eventArgs = { cancel: false, fileDetails: details, item: args.item };\n this.parent.trigger('toolbarClick', eventArgs, (toolbarClickArgs) => {\n let sItems;\n let 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 (let 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 toolbarCreateHandler() {\n if (!isNOU(select('#' + this.getId('SortBy'), this.parent.element))) {\n const items = [\n { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '' },\n { separator: true },\n { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('none'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '' }\n ];\n this.buttonObj = new DropDownButton({\n items: items, cssClass: getCssClass(this.parent, CLS.ROOT_POPUP),\n select: sortbyClickHandler.bind(this, this.parent),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl, iconCss: CLS.ICON_SHORTBY\n });\n this.buttonObj.isStringTemplate = true;\n this.buttonObj.appendTo('#' + this.getId('SortBy'));\n }\n if (!isNOU(select('#' + this.getId('View'), this.parent.element))) {\n const gridSpan = '<span class=\"' + CLS.ICON_GRID + ' ' + CLS.MENU_ICON + '\"></span>';\n const largeIconSpan = '<span class=\"' + CLS.ICON_LARGE + ' ' + CLS.MENU_ICON + '\"></span>';\n const layoutItems = [\n {\n id: this.getPupupId('large'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? '' : CLS.TB_OPTION_TICK\n },\n {\n id: this.getPupupId('details'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : ''\n }\n ];\n this.layoutBtnObj = new DropDownButton({\n iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n cssClass: getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP),\n items: layoutItems, select: this.layoutChange.bind(this),\n enableRtl: this.parent.enableRtl,\n content: '<span class=\"e-tbar-btn-text\">' + getLocaleText(this.parent, 'View') + '</span>',\n beforeItemRender: (args) => {\n const tickIcon = args.item.iconCss;\n const viewText = args.item.text === getLocaleText(this.parent, 'View-LargeIcons');\n const iconClass = tickIcon ? ' e-menu-icon ' + tickIcon : '';\n args.element.innerHTML = '<span class=\"' + iconClass + '\"></span>' + (viewText ? largeIconSpan : gridSpan) + args.item.text;\n const span = args.element.firstChild;\n if (span && span.className === '') {\n args.element.removeChild(span);\n }\n }\n });\n this.layoutBtnObj.isStringTemplate = true;\n this.layoutBtnObj.appendTo('#' + this.getId('View'));\n }\n this.hideItems(this.default, true);\n this.hideStatus();\n if (this.parent.portals && this.toolbarObj.portals) {\n this.parent.portals = this.parent.portals.concat(this.toolbarObj.portals);\n this.parent['renderReactTemplates']();\n }\n const btnElement = selectAll('.e-btn', this.toolbarObj.element);\n for (let btnCount = 0; btnCount < btnElement.length; btnCount++) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = (e) => {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = (e) => {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n }\n this.parent.refreshLayout();\n }\n updateSortByButton() {\n if (this.buttonObj) {\n const items = this.buttonObj.items;\n for (let itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n if (this.parent.sortBy === 'dateModified' || this.parent.sortBy === 'dateCreated') {\n items[itemCount].iconCss = this.parent.sortBy === this.parent.sortBy ? CLS.TB_OPTION_DOT : '';\n }\n else {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n }\n getPupupId(id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n }\n layoutChange(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 toolbarItemData(data) {\n const items = [];\n let mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (let i = 0; i < data.length; i++) {\n let item;\n let propItem;\n if (this.parent.toolbarItems.length > 0) {\n propItem = this.getItemModel(this.parent.toolbarItems[parseInt(i.toString(), 10)]);\n }\n const itemId = this.getId(data[i]);\n const itemText = getLocaleText(this.parent, data[i]);\n const itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n switch (data[i]) {\n case '|':\n item = { type: 'Separator' };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_UPLOAD, showTextOn: mode };\n break;\n case 'SortBy': {\n let spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\n if (propItem && propItem.text) {\n spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + propItem.text + '</span>';\n }\n item = {\n id: itemId, tooltipText: itemTooltip,\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\">' + spanElement + '</button>'\n };\n break;\n }\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: CLS.ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View': {\n let viewText;\n if (propItem && propItem.text) {\n viewText = propItem.text;\n }\n else {\n viewText = getLocaleText(this.parent, 'View');\n }\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\" aria-label=' +\n viewText + '></button>'\n };\n break;\n }\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, template: '' };\n break;\n }\n if (this.parent.toolbarItems.length > 0 && propItem) {\n const mergedItems = Object.assign({}, item, propItem);\n items.push(mergedItems);\n }\n else {\n items.push(item);\n }\n }\n return items;\n }\n getItemModel(propItem) {\n const item = {};\n if (propItem.id) {\n item.id = propItem.id;\n }\n if (propItem.text) {\n item.text = propItem.text;\n }\n if (propItem.tooltipText) {\n item.tooltipText = propItem.tooltipText;\n }\n if (propItem.prefixIcon) {\n item.prefixIcon = propItem.prefixIcon;\n }\n if (propItem.cssClass) {\n item.cssClass = propItem.cssClass;\n }\n if (propItem.showTextOn !== 'Both') {\n item.showTextOn = propItem.showTextOn;\n }\n if (propItem.template) {\n item.template = propItem.template;\n }\n if (propItem.disabled) {\n item.disabled = propItem.disabled;\n }\n if (propItem.width !== 'auto') {\n item.width = propItem.width;\n }\n if (propItem.suffixIcon) {\n item.suffixIcon = propItem.suffixIcon;\n }\n if (propItem.align !== 'Left') {\n item.align = propItem.align;\n }\n if (propItem.overflow !== 'None') {\n item.overflow = propItem.overflow;\n }\n if (propItem.htmlAttributes) {\n item.htmlAttributes = propItem.htmlAttributes;\n }\n if (propItem.type !== 'Button') {\n item.type = propItem.type;\n }\n if (propItem.visible !== true) {\n item.visible = propItem.visible;\n }\n if (propItem.showAlwaysInPopup) {\n item.showAlwaysInPopup = propItem.showAlwaysInPopup;\n }\n if (propItem.tabIndex !== -1) {\n item.tabIndex = propItem.tabIndex;\n }\n return item;\n }\n getId(id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n }\n addEventListener() {\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 reRenderToolbar(e) {\n let itemsToProcess = [];\n if (this.parent.toolbarItems.length > 0) {\n itemsToProcess = this.parent.toolbarItems.map((item) => {\n return item.name;\n });\n }\n else if (e.newProp.toolbarSettings.items !== undefined) {\n itemsToProcess = e.newProp.toolbarSettings.items.map((item) => {\n return item.trim();\n });\n }\n if (itemsToProcess.length > 0) {\n this.items = this.toolbarItemData(this.getItems(itemsToProcess));\n const eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, (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 onSelectionChanged() {\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 const ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele && !this.parent.enableVirtualization) {\n let txt;\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 hideItems(tools, toHide) {\n for (let i = 0; i < tools.length; i++) {\n const ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n }\n hideStatus() {\n const ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n }\n showPaste() {\n this.hideItems(['Paste'], false);\n }\n hidePaste() {\n this.hideItems(['Paste'], true);\n }\n onLayoutChange() {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE;\n const items = this.layoutBtnObj.items;\n for (let 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 removeEventListener() {\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 getModuleName() {\n return 'toolbar';\n }\n onPropertyChanged(e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (const prop of Object.keys(e.newProp)) {\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.reRenderToolbar(e);\n break;\n }\n }\n }\n destroy() {\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 enableItems(items, isEnable) {\n for (let i = 0; i < items.length; i++) {\n const ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n }\n}\n","import { EventHandler, isNullOrUndefined, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, selectAll } from '@syncfusion/ej2-base';\nimport * as CLS from '../base/classes';\nexport class Virtualization {\n constructor(instance) {\n this.filemanagerInstance = instance;\n this.largeIconInstance = instance.largeiconsviewModule;\n }\n /**\n * Sets up UI virtualization for the large icon view.\n *\n * @returns {void}\n */\n setUIVirtualization() {\n // Get the current view data source\n const currentViewItems = this.largeIconInstance.items;\n // Get the first item in the data source\n const firstItem = currentViewItems.slice(0, 1);\n // Create a list element from the first item in the data source\n const listElements = ListBase.createListFromJson(createElement, firstItem, this.largeIconInstance.listObj);\n // Get the list items from the list element\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Append the list element to the large icon element\n this.largeIconInstance.element.appendChild(listElements);\n if (this.itemList.length !== 0 && this.largeIconInstance.element.querySelector('.' + CLS.EMPTY)) {\n this.largeIconInstance.element.removeChild(this.largeIconInstance.element.querySelector('.' + CLS.EMPTY));\n }\n // Get the total number of items\n this.itemCount = this.getItemCount(Object.keys(this.largeIconInstance.allItems).length);\n // Remove the first child element from the large icon element\n this.largeIconInstance.element.firstChild.remove();\n // Set the items for the large icon view to the current view data source, limited to the number of items to display\n this.largeIconInstance.items = currentViewItems.slice(0, this.itemCount);\n }\n /**\n * Sets the height of the top and bottom elements that are used for virtualization.\n * These elements are used to give the appearance of an infinitely scrolling list.\n *\n * @returns {void}\n */\n setUlElementHeight() {\n // Calculate the number of items in the last row\n this.lastRowCount = (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount ?\n (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount : this.rowItemCount;\n // Create top and bottom elements\n this.topElement = this.filemanagerInstance.createElement('div');\n this.topElement.classList.add('e-virtual-top');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.topElement, this.largeIconInstance.element.firstElementChild.firstChild);\n this.bottomElement = this.filemanagerInstance.createElement('div');\n this.bottomElement.classList.add('e-virtual-bottom');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.bottomElement, null);\n // Get the margin value for list items\n const marginValue = parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-bottom'), 10);\n // Calculate the height of a single list item\n this.listItemHeight = this.largeIconInstance.itemList[0].getBoundingClientRect().height + marginValue;\n // Calculate the total height of the list\n this.totalHeight = (Object.keys(this.largeIconInstance.allItems).length / this.rowItemCount) * this.listItemHeight;\n // Set the initial height of the top and bottom elements\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n // Initialize the top and bottom element heights\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n // Initialize the list difference variable\n this.listDiff = 0;\n // Set the initial rendered count\n this.renderedCount = this.itemCount;\n }\n /**\n * Calculates the number of items to display in the list based on the available width and height.\n *\n * @param {number} dataSourceLength The length of the data source.\n * @returns {number} The number of items to display.\n */\n getItemCount(dataSourceLength) {\n // Get the margin values for list items\n const widthMargin = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-right'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-left'), 10);\n // Calculate the number of items that can fit in a single row\n this.rowItemCount =\n Math.floor(parseFloat(formatUnit(this.largeIconInstance.element.firstElementChild.clientWidth)) /\n (this.itemList[0].offsetWidth + widthMargin));\n // Calculate the number of items that can fit in the available height\n let itemCount = this.rowItemCount *\n (Math.round(parseFloat(formatUnit(this.largeIconInstance.element.clientHeight)) / this.itemList[0].offsetHeight));\n // If the calculated item count is greater than the data source length, set the item count to the data source length\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n }\n /**\n * Wires or un wires the scroll event for the list element.\n *\n * @param {boolean} destroy - Set `true` to unwire the scroll event.\n * @returns {void}\n */\n wireScrollEvent(destroy) {\n if (!destroy) {\n // Wire the scroll event\n EventHandler.add(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll, this);\n }\n else {\n // Unwire the scroll event\n EventHandler.remove(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll);\n }\n }\n /**\n * Handles the scroll event for the list element.\n * This method updates the top and bottom elements and the displayed items based on the scroll position.\n *\n * @returns {void}\n * @private\n */\n onVirtualUiScroll() {\n // Set the starting height to 0\n const startingHeight = 0;\n // Get the current scroll position\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n const scroll = this.getscrollerHeight(startingHeight);\n // Calculate the height of the top element\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n // Calculate the height of the bottom element\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n // If the scroll position is less than or equal to the total height, set the top and bottom element heights.\n // Otherwise, set the top element height to the total height and the bottom element height to 0.\n [this.topElementHeight, this.bottomElementHeight] = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0];\n // If the top element height has changed, update the top and bottom element heights and re-render the items.\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n // Check whether the scroll direction is upward or downward\n if (scroll > this.scrollPosition) {\n // Scrolling is upward\n const listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n this.onNormalScroll(listDiff, true);\n }\n else {\n // Scrolling is downward\n const listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n this.onNormalScroll(listDiff, false);\n }\n }\n // Update the list difference and scroll position variables\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n this.scrollPosition = scroll;\n // Update the list of items and the items property of the largeIconInstance\n this.largeIconInstance.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.largeIconInstance.element));\n this.itemCount = this.itemCount !== this.largeIconInstance.itemList.length ?\n this.largeIconInstance.itemList.length : this.itemCount;\n this.largeIconInstance.items = this.largeIconInstance.allItems.slice(this.renderedCount -\n this.itemCount, this.renderedCount);\n }\n /**\n * Calculates the current scroll position of the list element.\n *\n * @param {number} startingHeight The starting height from which to calculate the scroll position.\n * @returns {number} The current scroll position.\n * @private\n */\n getscrollerHeight(startingHeight) {\n // If the scroll position is less than or equal to the starting height, return 0.\n // Otherwise, return the scroll position minus the starting height.\n return ((this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight) <= 0) ? 0 :\n (this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight);\n }\n /**\n * This method updates the displayed items and the selection based on the scroll direction.\n *\n * @param {number} listDiff The number of rows to update.\n * @param {boolean} isScrollingDown If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\n */\n onNormalScroll(listDiff, isScrollingDown) {\n // Update the displayed items\n for (let i = 0; i < listDiff; i++) {\n this.updateUI(isScrollingDown);\n }\n }\n /**\n * Updates the items in the large icons view.\n *\n * @param {boolean} isScrollingDown - If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\n */\n updateUI(isScrollingDown) {\n if (isScrollingDown) {\n // Get the next batch of items to be displayed\n this.items = this.largeIconInstance.allItems.slice(this.renderedCount, this.renderedCount + this.rowItemCount);\n // If there are items to be displayed, create list elements for them and append them to the list\n if (this.items.length > 0) {\n const listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n this.itemList.forEach((liEle) => {\n this.largeIconInstance.element.firstElementChild.insertBefore(liEle, this.bottomElement);\n });\n // Update the rendered count variable\n this.renderedCount = (this.largeIconInstance.allItems.length >= this.renderedCount + this.rowItemCount) ?\n this.renderedCount + this.rowItemCount : this.renderedCount + this.lastRowCount;\n // Remove the first batch of items from the list\n for (let i = 0; i < this.rowItemCount; i++) {\n detach(this.topElement.nextElementSibling);\n }\n }\n }\n else {\n // Scrolling up\n let lastItemIndex;\n let isAllRendered;\n if (this.renderedCount === this.largeIconInstance.allItems.length) {\n // Set lastItemIndex to the last item in the last row\n lastItemIndex = this.renderedCount - (this.itemCount - this.rowItemCount + this.lastRowCount);\n // Set renderedCount to the total number of items that have been rendered, except for the items in the last row\n this.renderedCount = ((this.renderedCount - this.lastRowCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.lastRowCount);\n // Set isAllRendered to true to indicate that all items have been rendered\n isAllRendered = true;\n }\n else {\n // Set lastItemIndex to the last item in the current row\n lastItemIndex = this.renderedCount - this.itemCount;\n // Set renderedCount to the total number of items that have been rendered, except for the items in the current row\n this.renderedCount = ((this.renderedCount - this.rowItemCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.rowItemCount);\n }\n // Set startItemIndex to the first item in the current or previous row\n const startItemIndex = (lastItemIndex - this.rowItemCount > 0) ? lastItemIndex - this.rowItemCount : 0;\n // Set the items array to the items in the current or previous row\n this.items = this.largeIconInstance.allItems.slice(startItemIndex, lastItemIndex);\n if (this.items.length > 0) {\n // Create a list of elements from the items array\n const listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n // Set the itemList array to the list items in the list elements\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Add the items to the beginning of the list\n for (let len = this.itemList.length; len > 0; len--) {\n this.largeIconInstance.element.firstElementChild.insertBefore(this.itemList[len - 1], this.topElement.nextElementSibling);\n }\n // Remove the last row of items from the list\n for (let i = 0; i < ((isAllRendered) ? this.lastRowCount : this.rowItemCount); i++) {\n detach(this.bottomElement.previousElementSibling);\n }\n }\n }\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n getModuleName() {\n return 'virtualization';\n }\n /**\n * Destroys the component.\n *\n * @returns {void}\n */\n destroy() {\n // If the file manager has already been destroyed, return immediately\n if (this.filemanagerInstance.isDestroyed) {\n return;\n }\n // If the large icon element has a child element, unwire the scroll event\n if (!isNullOrUndefined(this.largeIconInstance.element.firstElementChild)) {\n this.wireScrollEvent(true);\n }\n }\n}\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, isFileSystemData } from '../common/operations';\nimport { createDialog } from '../pop-up/dialog';\nimport { updatePath, getPath, getDirectories } from '../common/utility';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getDirectoryPath, getModule, getPathId } from '../common/index';\nimport { copyFiles, cutFiles, removeActive, pasteHandler, getParentPath, readDropPath } from '../common/index';\nimport { hasEditAccess, createDeniedDialog, hasDownloadAccess, getAccessClass } from '../common/index';\n/**\n * NavigationPane module\n */\nexport class NavigationPane {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n /* istanbul ignore next */\n constructor(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n this.expandTree = false;\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.isSameNodeClicked = false;\n this.isNodeExpandCalled = false;\n this.renameParent = null;\n // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = null;\n // Specifies whether the nodeClicked event of the treeview control is triggered or not.\n this.isNodeClickCalled = false;\n // Specifies whether to restrict node selection in the treeview control.\n this.restrictSelecting = false;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n onInit() {\n if (!isNOU(this.treeObj)) {\n return;\n }\n const rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n const attr = {};\n const id = getValue('id', rootData);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new BaseTreeView({\n fields: {\n dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name',\n hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'\n },\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n sortOrder: this.parent.navigationPaneSettings.sortOrder,\n nodeSelecting: this.onNodeSelecting.bind(this),\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + CLS.TREE_ID);\n this.wireEvents();\n }\n addDragDrop() {\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: (args) => {\n dragStartHandler(this.parent, args, this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n }\n dragHelper(args) {\n const dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(CLS.FULLROW)) {\n return null;\n }\n const 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 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 getDragPath(dragLi, text) {\n const path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n }\n getDropPath(node, text) {\n const id = node.getAttribute('data-id');\n const newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId);\n }\n onDrowNode(args) {\n const eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n }\n addChild(files, target, prevent) {\n const directories = getDirectories(files);\n const targetDirectory = this.getTreeData(target);\n if (directories.length > 0 && targetDirectory.length > 0 &&\n (directories[0].filterPath == null ||\n isNOU(targetDirectory[0])\n && targetDirectory[0].filterPath == null\n || directories[0].filterPath !==\n targetDirectory[0].filterPath)) {\n let length = 0;\n const folders = directories;\n while (length < directories.length) {\n // eslint-disable-next-line camelcase\n folders[parseInt(length.toString(), 10)]._fm_icon = 'e-fe-folder';\n const attr = {};\n const id = getValue('id', folders[length]);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length])) {\n setValue('class', getAccessClass(folders[length]), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length]);\n }\n length++;\n }\n const element = select('[data-uid=\"' + target + '\"]', this.treeObj.element);\n const childElements = select('ul', element);\n if (isNOU(childElements)) {\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n }\n }\n // Node Selecting event handler\n onNodeSelecting(args) {\n if (!args.isInteracted && !this.isRightClick &&\n !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {\n this.restrictSelecting = false;\n this.isNodeClickCalled = false;\n return;\n }\n if (!this.renameParent) {\n this.parent.activeModule = 'navigationpane';\n const nodeData = this.getTreeData(getValue('id', args.nodeData));\n if (args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1] && !this.isRightClick && !this.isNodeClickCalled || this.isSameNodeClicked) {\n this.isNodeClickCalled = false;\n if (!this.isSameNodeClicked) {\n this.isSameNodeClicked = true;\n const selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n if (!this.isRightClick) {\n const eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n }\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.isNodeClickCalled = true;\n this.isSameNodeClicked = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n }\n else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {\n const selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: this.isNodeClickCalled };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n }\n }\n // Opens the folder while clicking open context menu item in the treeview.\n openFileOnContextMenuClick(node) {\n const data = this.treeObj.getTreeData(node);\n this.parent.selectedItems = [];\n this.parent.itemData = data;\n this.activeNode = node;\n this.parent.activeModule = 'navigationpane';\n const eventArgs = { cancel: false, fileDetails: data[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n this.isNodeClickCalled = true;\n if (!eventArgs.cancel) {\n updatePath(node, this.parent.itemData[0], this.parent);\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n this.treeObj.selectedNodes = [node.getAttribute('data-uid')];\n }\n }\n onNodeSelected(args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n this.isNodeClickCalled = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent) {\n this.parent.pathId = getPathId(args.node);\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n const nodeData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n const previousPath = this.parent.path;\n if (!this.isRightClick && this.isSameNodeClicked) {\n updatePath(args.node, this.parent.itemData[0], this.parent);\n }\n else {\n this.parent.pathId = getPathId(args.node);\n this.parent.visitedItem = args.node;\n }\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n if (previousPath !== this.parent.path) {\n if (!this.isRightClick && this.isSameNodeClicked) {\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.isNodeClickCalled = true;\n }\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = this.isSameNodeClicked = false;\n }\n /* istanbul ignore next */\n onPathDrag(args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n }\n /* istanbul ignore next */\n onNodeExpand(args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.isNodeExpandCalled = true;\n const text = getValue('text', args.nodeData);\n const id = args.node.getAttribute('data-id');\n const isId = isNOU(id) ? false : true;\n const newText = isNOU(id) ? text : id;\n const path = getPath(args.node, newText, isId);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.pathId.push(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n }\n }\n /* istanbul ignore next */\n onNodeExpanded(args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n this.isNodeExpandCalled = false;\n }\n onNodeClicked(args) {\n this.parent.activeModule = 'navigationpane';\n this.previousSelected = this.treeObj.selectedNodes;\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n const layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(events.modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && !this.isNodeClickCalled && !this.isNodeExpandCalled) {\n if (args.event.which === 3) {\n this.isRightClick = true;\n }\n this.isSameNodeClicked = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n }\n /* istanbul ignore next */\n onNodeEditing(args) {\n if (!isNOU(args.innerHtml)) {\n args.cancel = true;\n }\n }\n onPathChanged(args) {\n this.parent.isCut = false;\n const currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n const sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n const ul = (!isNOU(sNode)) ? select('.' + CLS.LIST_PARENT, sNode) : null;\n if (isNOU(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], !this.expandTree);\n }\n this.expandNodeTarget = '';\n }\n this.expandTree = false;\n if (isNOU(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n if (this.parent.uploadObj.directoryUpload && !(this.parent.hasId)) {\n this.updateTree(args);\n }\n }\n updateTree(args) {\n if (this.treeObj) {\n const id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n }\n updateTreeNode(args, id) {\n const toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n }\n removeChildNodes(id) {\n const sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n const parent = select('.' + CLS.LIST_PARENT, sNode);\n const childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n }\n onOpenEnd(args) {\n const 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 onOpenInit(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 onInitialEnd(args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n }\n onFinalizeEnd(args) {\n this.onInit();\n const id = getValue('_fm_id', args.cwd);\n this.addChild(args.files, id, false);\n this.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n }\n onCreateEnd(args) {\n this.updateTree(args);\n }\n onSelectedData() {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n }\n onDeleteInit() {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n const name = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name], this.parent.path, 'delete');\n }\n }\n /* istanbul ignore next */\n onDeleteEnd(args) {\n if (this.parent.activeModule === 'navigationpane') {\n const selectedNode = this.treeObj.selectedNodes[0];\n const selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n const 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 onRefreshEnd(args) {\n this.updateTree(args);\n }\n onRenameInit() {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n }\n /* istanbul ignore next */\n onRenameEndParent(args) {\n const 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 let 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 const 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 const id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n /* istanbul ignore next */\n onRenameEnd(args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n const data = this.treeObj.getTreeData();\n let 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 const 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 onPropertyChanged(e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (const prop of Object.keys(e.newProp)) {\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, events.finalizeEnd, '/');\n if (e.oldProp.navigationPaneSettings.sortOrder !== e.newProp.navigationPaneSettings.sortOrder) {\n this.treeObj.sortOrder = e.newProp.navigationPaneSettings.sortOrder;\n }\n break;\n }\n }\n }\n /* istanbul ignore next */\n onDownLoadInit() {\n this.doDownload();\n }\n onSelectionChanged(e) {\n this.treeObj.selectedNodes = [e.selectedNode];\n }\n onClearPathInit(e) {\n this.removeChildNodes(e.selectedNode);\n }\n onDragEnd(args) {\n let 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 getMoveNames(files, flag, path) {\n const moveNames = [];\n for (let i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n let name = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n const index = path.lastIndexOf('/');\n name = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n const resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name, false));\n for (let j = 0; j < resultData.length; j++) {\n let 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 onCutEnd(args) {\n let 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 selectResultNode(resultObj) {\n if (!this.parent.hasId) {\n const path = getValue('filterPath', resultObj);\n const itemname = getValue('name', resultObj);\n const data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n const resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n const id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n const selectedNode = this.treeObj.getTreeData().filter((obj) => obj.name === resultObj.name)[0];\n this.treeObj.selectedNodes = [getValue('_fm_id', selectedNode)];\n this.treeObj.dataBind();\n }\n }\n onDropPath(args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n }\n onpasteEnd(args) {\n let 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 const 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 const id = getValue(this.treeObj.fields.id, resultData[0]);\n const 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 checkDropPath(args) {\n if (isFileSystemData(this.parent) && this.parent.path === this.parent.dropPath || this.parent.targetModule === 'navigationpane') {\n return;\n }\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 onpasteInit() {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n const obj = this.parent.isDragDrop || isFileSystemData(this.parent) ? this.parent.dragData : this.parent.actionRecords;\n for (let 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 oncutCopyInit() {\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 addEventListener() {\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 removeEventListener() {\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 onDetailsInit() {\n if (this.parent.activeModule === this.getModuleName()) {\n const dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n }\n onMenuItemData(args) {\n if (this.parent.activeModule === this.getModuleName()) {\n const liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n }\n /* istanbul ignore next */\n onDragging(args) {\n const ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n const level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n }\n onDropInit(args) {\n if (this.parent.targetModule === this.getModuleName()) {\n const 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 getModuleName() {\n return 'navigationpane';\n }\n destroy() {\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 wireEvents() {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n }\n unWireEvents() {\n this.keyboardModule.destroy();\n }\n /* istanbul ignore next */\n keyDown(e) {\n const action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n if (this.parent.pathId[0] !== this.activeNode.getAttribute('data-uid')) {\n this.updateItemData();\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n this.removeNodes = [];\n createDialog(this.parent, 'Delete');\n }\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n const 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 getTreeData(args) {\n const data = this.treeObj.getTreeData(args);\n for (let 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 updateRenameData() {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n }\n updateItemData() {\n const data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n }\n updateActionData() {\n this.updateItemData();\n const 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 doDownload() {\n const newPath = getParentPath(this.parent.path);\n const itemId = this.treeObj.selectedNodes[0];\n const name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n }\n}\n","import { Grid, Resize, ContextMenu, Sort, VirtualScroll } from '@syncfusion/ej2-grids';\nimport { select, KeyboardEvents, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, Touch, setValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Internationalization, closest, Draggable, initializeCSPTemplate, extend, SanitizeHtmlHelper } 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/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * DetailsView module\n */\nexport class DetailsView {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n constructor(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.pasteOperation = false;\n this.uploadOperation = false;\n Grid.Inject(Resize, ContextMenu, Sort, VirtualScroll);\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.GRID_ID, this.parent.element);\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n tab: 'tab',\n moveDown: 'downarrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n ctrlUp: 'ctrl+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n end: 'end',\n home: 'home',\n moveUp: 'uparrow',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftdel: 'shift+delete',\n ctrlD: 'ctrl+d',\n f2: 'f2',\n ctrlA: 'ctrl+a',\n enter: 'enter'\n };\n }\n /* istanbul ignore next */\n render(args) {\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n const items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n const columns = this.getColumns();\n let sortSettings;\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 enableVirtualization: this.parent.enableVirtualization,\n enablePersistence: this.parent.enablePersistence,\n enableVirtualMaskRow: true,\n sortSettings: { allowUnsort: false, columns: sortSettings },\n columns: columns,\n recordDoubleClick: this.DblClickEvents.bind(this),\n beforeDataBound: this.onBeforeDataBound.bind(this),\n dataBound: this.onDataBound.bind(this),\n rowDataBound: this.onRowDataBound.bind(this),\n actionBegin: this.onActionBegin.bind(this),\n headerCellInfo: this.onHeaderCellInfo.bind(this),\n width: '100%',\n height: (this.parent.enableVirtualization) ? this.getGridHeight() : 'auto',\n beforeCopy: (args) => { args.cancel = true; },\n load: function () {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\n });\n if (this.parent.isReact) {\n this.gridObj.isReact = true;\n this.gridObj.portals = [];\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n this.gridObj.isStringTemplate = true;\n this.gridObj.appendTo('#' + this.parent.element.id + CLS.GRID_ID);\n this.wireEvents();\n this.adjustHeight();\n this.emptyArgs = args;\n }\n }\n reactTemplateRender(args) {\n this.parent['portals'] = args;\n if (this.parent.portals && this.parent.toolbarModule && this.parent.toolbarModule.toolbarObj &&\n this.parent.toolbarModule.toolbarObj.portals) {\n this.parent['portals'] = this.parent['portals'].concat(this.parent.toolbarModule.toolbarObj.portals);\n }\n this.parent.notify('renderReactTemplate', this.parent['portals']);\n this.parent['renderReactTemplates']();\n }\n /**\n * Gets the grid height.\n *\n * @returns {number} - The grid height.\n * @private\n */\n getGridHeight() {\n // Get the content pane and breadcrumb bar elements\n const pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n const bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n // The maximum height of the header is 36\n const headerMaxHeight = 36;\n // Calculate and return the grid height\n return (pane.offsetHeight - bar.offsetHeight - headerMaxHeight);\n }\n checkNameWidth() {\n const initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (let 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 adjustWidth(columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n let nameWidth;\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 getColumns() {\n let columns;\n const enableHtmlSanitizer = this.parent.enableHtmlSanitizer;\n if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: initializeCSPTemplate(function (data) {\n const name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return `<div class=\"e-fe-text\">${name}</div><div class=\"e-fe-date\">${data._fm_modified}</div><span class=\"e-fe-size\">${data.size}</span>`;\n })\n }\n ];\n }\n else {\n columns = extend([], this.parent.detailsViewSettings.columns, null, true);\n this.adjustWidth(columns, 'name');\n for (let i = 0, len = columns.length; i < len; i++) {\n columns[i].headerText = getLocaleText(this.parent, columns[i].headerText);\n if (columns[i].field === 'name' && !isNOU(columns[i].template) && !(typeof columns[i].template === 'function')) {\n const template = columns[i].template;\n columns[i].template = initializeCSPTemplate(function (data) {\n const name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return template.replace(/\\${name}/g, name);\n });\n }\n }\n }\n const iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n const icon = {\n field: 'type', width: iWidth, minWidth: iWidth,\n template: initializeCSPTemplate(function (data) {\n return `<span class=\"e-fe-icon ${data._fm_iconClass}\"></span>`;\n }), allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: initializeCSPTemplate(function () {\n return '<span class=\\'e-fe-icon e-fe-folder\\'></span>';\n })\n };\n columns.unshift(icon);\n if (this.parent.showItemCheckBoxes) {\n const cWidth = (this.parent.isBigger ? '36' : '26');\n const 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 (let i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n return columns;\n }\n adjustHeight() {\n if (!this.gridObj) {\n return;\n }\n const pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n const bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n const gridHeader = select('.' + CLS.GRID_HEADER, this.parent.element);\n const height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n }\n renderCheckBox() {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n onRowDataBound(args) {\n let td = select('.e-fe-grid-name', args.row);\n if (!td) {\n const columns = this.parent.detailsViewSettings.columns;\n for (let 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 const text = getValue('name', args.data);\n const textEle = args.row.querySelector('[title= \"' + text + '\"]');\n if (textEle) {\n const name = getValue('name', args.data);\n const type = getValue('type', args.data);\n textEle.innerHTML = name.substr(0, name.length - type.length);\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n const sizeEle = args.row.querySelector('.e-fe-size');\n let modifiedSize;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n const sizeValue = getValue('size', args.data);\n const intl = new Internationalization(this.parent.locale);\n let sizeFormat;\n const columns = this.parent.detailsViewSettings.columns;\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].field === 'size') {\n sizeFormat = !isNullOrUndefined(columns[i].format) ? columns[i].format.toString() : 'n';\n break;\n }\n }\n const value = intl.formatNumber((sizeValue / 1024), { format: sizeFormat });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n const dateEle = args.row.querySelector('.e-fe-date');\n const intl = new Internationalization(this.parent.locale);\n const columns = this.parent.detailsViewSettings.columns;\n let format;\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n const formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n const 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 const eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n }\n onActionBegin(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 const rows = this.gridObj.getSelectedRowIndexes();\n let len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n const 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 onHeaderCellInfo(args) {\n const checkWrap = args.node.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n }\n onBeforeDataBound(args) {\n showSpinner(this.parent.element);\n const nameColumn = this.parent.detailsViewSettings.columns.find((column) => column.field === this.parent.sortBy);\n if (nameColumn && !('sortComparer' in nameColumn)) {\n const items = getSortedData(this.parent, (this.parent.enableVirtualization)\n ? args.result\n : this.gridObj.dataSource);\n args.result = items;\n }\n }\n /* istanbul ignore next */\n onDataBound() {\n this.createDragObj();\n if ((this.parent.selectedItems.length !== 0 && !this.parent.enableVirtualization) ||\n ((this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization &&\n this.element.querySelector('.e-content').scrollTop === 0))) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem) {\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n const hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n const hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n const cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n const hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n const 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 selectRecords(nodes) {\n const gridRecords = this.gridObj.getCurrentViewRecords();\n const sRecords = [];\n for (let i = 0, len = gridRecords.length; i < len; i++) {\n const node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n else if (!this.parent.showFileExtension && !this.parent.hasId && node.includes('.')) {\n const Str2 = node.split('.').slice(0, -1).join('.');\n if (nodes.indexOf(Str2) !== -1) {\n sRecords.push(i);\n }\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n }\n addSelection(data) {\n const items = this.gridObj.getCurrentViewRecords();\n let 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 const 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 const index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n }\n onSortColumn() {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n if (this.element.querySelector('.e-content').scrollTop !== 0) {\n this.gridObj.freezeRefresh();\n }\n }\n onPropertyChanged(e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (const prop of Object.keys(e.newProp)) {\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 const 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 const slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNOU(this.gridObj)) {\n this.gridObj.clearSelection();\n this.interaction = true;\n }\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n }\n onPathChanged(args) {\n this.parent.isCut = false;\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) {\n this.parent.searchedItems = [];\n if (!this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n else {\n this.updatePathColumn();\n }\n }\n removeBlur(this.parent);\n if (this.parent.view === 'Details') {\n /* istanbul ignore next */\n this.isInteracted = false;\n showSpinner(this.parent.element);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.gridObj.freezeRefresh();\n if (this.parent.isReact) {\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n }\n this.emptyArgs = args;\n }\n updatePathColumn() {\n const len = this.gridObj.columns.length;\n const columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n const 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 checkEmptyDiv(args) {\n const 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 const 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 onOpenInit() {\n if (this.parent.activeModule === 'detailsview') {\n const data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n }\n DblClickEvents(args) {\n this.gridObj.selectRows([args.rowIndex]);\n let data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n }\n openContent(data) {\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionRead);\n return;\n }\n const eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, (fileOpenArgs) => {\n if (!fileOpenArgs.cancel) {\n const name = getValue('name', data);\n if (getValue('isFile', data)) {\n const icon = fileType(data);\n if (icon === CLS.ICON_IMAGE) {\n const imgUrl = getImageUrl(this.parent, data);\n createImageDialog(this.parent, name, imgUrl);\n }\n }\n else {\n const val = this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !this.parent.isFiltered) {\n const id = getValue('id', data);\n this.parent.oldPath = this.parent.path;\n const newPath = this.parent.path + (isNOU(id) ? name : id) + '/';\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathNames.push(name);\n this.parent.pathId.push(getValue('_fm_id', data));\n this.parent.itemData = [data];\n openAction(this.parent);\n }\n else {\n openSearchFolder(this.parent, data);\n }\n this.parent.isFiltered = false;\n }\n this.element.focus();\n if (this.parent.enableVirtualization) {\n this.parent.element.querySelector('#' + this.parent.element.id + CLS.IMG_DIALOG_ID).focus();\n }\n }\n });\n }\n /* istanbul ignore next */\n onLayoutChange(args) {\n if (this.parent.view === 'Details') {\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(events.hideLayout, {});\n this.gridObj.element.classList.remove(CLS.DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n }\n /* istanbul ignore next */\n onSearchFiles(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 removePathColumn(isRefresh) {\n const len = this.gridObj.columns.length;\n const columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath')) {\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.gridObj.sortSettings.columns[0]) && this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n 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 onFinalizeEnd(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 onCreateEnd(args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n }\n onRenameInit() {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n }\n onSelectedData() {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n }\n onDeleteInit() {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n }\n /* istanbul ignore next */\n onDeleteEnd(args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n onRefreshEnd(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 onHideLayout() {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(CLS.DISPLAY_NONE);\n }\n }\n onSelectAllInit() {\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 onClearAllInit() {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n }\n /* istanbul ignore next */\n onSelectionChanged() {\n removeClass([this.element], CLS.HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], CLS.HEADER_CHECK);\n }\n }\n onLayoutRefresh() {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n }\n onBeforeRequest() {\n this.isRendered = false;\n }\n onAfterRequest() {\n this.isRendered = true;\n }\n onUpdateSelectionData() {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n addEventListener() {\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 removeEventListener() {\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 onActionFailure() { this.interaction = true; }\n onMenuItemData(args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n }\n onPasteInit() {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n }\n onDetailsInit() {\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 dragHelper(args) {\n const dragTarget = args.sender.target;\n const dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n let name;\n if (dragLi.getElementsByClassName('e-fe-text')[0]) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling.innerText;\n }\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n this.parent.dragData = this.gridObj.getSelectedRecords();\n let 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 onDetailsResize() {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n const gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n const gridHeaderColGroup = gridHeader.firstChild.childNodes[0];\n const gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n const gridHeaderColNames = this.gridObj.getColumns();\n for (let 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 onDetailsResizeHandler() {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n this.adjustHeight();\n }\n }\n createDragObj() {\n if (this.gridObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + CLS.ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: (args) => {\n dragStartHandler(this.parent, args, this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n }\n onDropInit(args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n const 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 let info = null;\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 oncutCopyInit() {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n }\n onpasteEnd(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 onDropPath(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 getModuleName() {\n return 'detailsview';\n }\n destroy() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n if (this.parent.isReact) {\n this.gridObj.off('reactTemplateRender', this.reactTemplateRender);\n }\n this.unWireEvents();\n this.gridObj.destroy();\n }\n }\n updateType(item) {\n const folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n }\n /* istanbul ignore next */\n onSelection(action, args) {\n const 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 onSelected(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 const 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 const lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n const 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 const rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (let 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 const len = rows.length;\n if (this.parent.enableVirtualization) {\n this.parent.currentItemText = getValue('name', args.data);\n }\n else if (len > 0) {\n const data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n const indexes = getValue('rowIndexes', args);\n const multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNOU(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if ((!this.parent.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n }\n /* istanbul ignore next */\n onPathColumn() {\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 selectedRecords() {\n this.parent.setProperties({ selectedItems: [] }, true);\n const selectedRecords = this.gridSelectNodes();\n let selectSize = 0;\n while (selectSize < selectedRecords.length) {\n const record = selectedRecords[selectSize];\n const name = getItemName(this.parent, record);\n this.parent.selectedItems.push(name);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n onDeSelection(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 const 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 triggerSelect(action, args) {\n const eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n }\n wireEvents() {\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 EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n }\n unWireEvents() {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n }\n wireClickEvent(toBind) {\n if (toBind) {\n const ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: (eve) => {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n this.onClearAllInit();\n }\n },\n tapHold: (e) => {\n if (this.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (this.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', this.parent.allowMultiSelection, this.gridObj.selectionModule);\n addClass([this.parent.element], CLS.MULTI_SELECT);\n }\n const target = e.originalEvent.target;\n if (target) {\n const row = closest(target, '.' + CLS.ROW);\n const index = this.gridObj.getRows().indexOf(row);\n this.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 removeSelection() {\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 removeFocus() {\n this.addFocus(null);\n }\n onBlur(e) {\n if ((e.relatedTarget !== null && closest(e.relatedTarget, '.e-grid') !== e.relatedTarget)) {\n return;\n }\n if (!isNOU(this.gridObj.element)) {\n const thElements = this.gridObj.element.querySelectorAll('th');\n for (let i = 0; i < thElements.length; i++) {\n if (thElements[i].classList.contains('e-focus')) {\n this.addFocus(null);\n }\n }\n }\n }\n getFocusedItemIndex() {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('data-rowindex'), 10) : null;\n }\n /* istanbul ignore next */\n keydownHandler(e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n }\n /* istanbul ignore next */\n keyupHandler(e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n const action = e.action;\n const gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n const gridLength = gridItems.length;\n const focIndex = this.getFocusedItemIndex();\n const selIndex = this.gridObj.selectedRowIndex;\n const selRowIndeces = this.gridObj.getSelectedRowIndexes();\n let rowData;\n let firstItem;\n let lastItem;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1 && this.gridObj.allowSorting === true) {\n if (!e.target.classList.contains('e-fe-grid-icon')) {\n const direction = !e.target.getElementsByClassName('e-ascending').length ? 'Ascending' : 'Descending';\n const currentField = this.gridObj.getColumnByUid(e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid')).field;\n this.gridObj.sortColumn(currentField, direction);\n if (!isNOU(this.getFocusedItem().nextSibling)) {\n this.getFocusedItem().nextSibling.setAttribute('tabindex', '0');\n }\n }\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n const 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 const cnTable = this.gridObj.getContent().querySelector('.e-content');\n const crtSrlPos = cnTable.scrollTop;\n const 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.addHeaderFocus(e);\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 gridSelectNodes() {\n return this.gridObj.getSelectedRecords();\n }\n doDownload() {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n const items = this.parent.itemData;\n for (let 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 performDelete() {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n const items = this.parent.itemData;\n for (let 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 performRename() {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n }\n updateRenameData() {\n const data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n }\n shiftMoveMethod(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 moveFunction(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 spaceSelection(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 const 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 ctrlMoveFunction(items, e, rowIndex) {\n let nextItem;\n if (!isNOU(this.getFocusedItem())) {\n const 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 checkRowsKey(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 InnerItems(fItem, lItem, e) {\n const itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (let i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (let i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n }\n shiftSelectFocusItem(selIndex, fIndex, selRowIndexes, e) {\n const lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n const 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 addFocus(item) {\n const fItem = this.getFocusedItem();\n const 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 addHeaderFocus(e) {\n const treeFocus = select('.e-row', this.element);\n this.gridObj.element.setAttribute('tabindex', '-1');\n let nameFocus;\n if (!isNOU(e.target) && e.target.classList.contains('e-defaultcursor')) {\n this.addFocus(0);\n nameFocus = e.target.nextElementSibling;\n }\n else if (!isNOU(this.gridObj.element.querySelector('.e-focus')) && (this.gridObj.element.querySelector('.e-focus').tagName === 'TH')) {\n nameFocus = this.gridObj.element.querySelector('.e-focus').nextElementSibling;\n this.addFocus(0);\n }\n else {\n nameFocus = select('th.e-fe-grid-icon', this.element);\n }\n if (!isNOU(nameFocus)) {\n nameFocus.setAttribute('tabindex', '0');\n nameFocus.focus();\n addClass([nameFocus], [CLS.FOCUS, CLS.FOCUSED]);\n treeFocus.setAttribute('tabindex', '0');\n if (treeFocus.tabIndex === 0 && nameFocus.tabIndex === 0) {\n removeClass([treeFocus], [CLS.FOCUS, CLS.FOCUSED]);\n }\n }\n }\n getFocusedItem() {\n return select('.' + CLS.FOCUSED, this.element);\n }\n isSelected(selRowIndexes, focIndex) {\n let check = false;\n for (let i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n }\n shiftSelectedItem(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 onMethodCall(e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n const 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 getRecords(nodes) {\n const gridRecords = this.gridObj.getCurrentViewRecords();\n const records = [];\n const hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n const filter = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (let 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 (let i = 0, len = gridRecords.length; i < len; i++) {\n const name = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n }\n deleteFiles(ids) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n const records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n const data = [];\n const newIds = [];\n for (let 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 downloadFiles(ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n const dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n const data = [];\n const newIds = [];\n for (let 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 openFile(id) {\n if (isNOU(id)) {\n return;\n }\n const records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n }\n renameFile(id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n const 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}\n"],"names":["this","__decorate","isNOU","CLS.LIST_ITEM","CLS.LIST_TEXT","CLS.TREE_VIEW","events.hidePaste","events.cutCopyInit","events.showPaste","CLS.BLUR","CLS.HOVER","CLS.ROW","CLS.LARGE_ICON","events.pathColumn","events.layoutChange","events.search","CLS.ROOT","CLS.CONTROL","CLS.GRID_CONTENT","CLS.LARGE_ICONS","events.permissionRead","events.refreshEnd","events.openEnd","CLS.FOLDER","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","CLS.LAYOUT_ID","CLS.BREADCRUMBBAR_ID","CLS.GRID_HEADER","CLS.EMPTY","CLS.LARGE_EMPTY_FOLDER","CLS.EMPTY_CONTENT","CLS.EMPTY_INNER_CONTENT","CLS.GRID_VIEW","events.isFile","events.sortColumn","events.sortByChange","events.finalizeEnd","events.initialEnd","events.clearPathInit","events.pasteInit","events.cutEnd","events.dragEnd","events.pasteEnd","events.pathDrag","events.dropPath","CLS.CLONE","CLS.CONTENT_ID","events.dropInit","CLS.DROP_FOLDER","CLS.DROP_FILE","events.dragging","events.permissionEdit","events.permissionDownload","events.permissionEditContents","events.permissionUpload","CLS.UPLOAD_ID","events.beforeRequest","events.afterRequest","events.searchTextChange","events.selectionChanged","events.createEnd","events.renameEndParent","events.pathChanged","events.renameEnd","events.deleteEnd","CLS.MOB_POPUP","CLS.ROOT_POPUP","CLS.DIALOG_ID","CLS.EXTN_DIALOG_ID","events.actionFailure","events.skipUpload","CLS.VALUE","CLS.ERROR_CONTENT","events.deleteInit","CLS.IMG_DIALOG_ID","CLS.LARGEICON_ID","events.hideLayout","CLS.DISPLAY_NONE","CLS.LIST_PARENT","CLS.ACTIVE","events.selectedData","events.openInit","events.modelChanged","events.methodCall","events.renameInit","events.selectAllInit","events.clearAllInit","events.menuItemData","events.splitterResize","events.resizeEnd","events.detailsInit","events.layoutRefresh","events.updateSelectionData","events.filterEnd","CLS.MULTI_SELECT","CLS.CHECK","CLS.FRAME","CLS.FOCUS","CLS.CB_WRAP","CLS.ICONS","CLS.SEARCH_ID","CLS.ICON_BREADCRUMB","events.updateTreeSelection","CLS.FILTER","events.destroy","Menu","CLS.CONTEXT_MENU_ID","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","CLS.FULLROW","CLS.TOOLBAR_ID","CLS.MENU_ITEM","CLS.SUBMENU_ICON","CLS.TREE_ID","CLS.GRID_ID","CLS.ICON_VIEW","events.downloadInit","CLS.ICON_OPEN","CLS.ICON_UPLOAD","CLS.ICON_CUT","CLS.ICON_COPY","CLS.ICON_PASTE","CLS.ICON_DELETE","CLS.ICON_RENAME","CLS.ICON_NEWFOLDER","CLS.ICON_DETAILS","CLS.ICON_SHORTBY","CLS.TB_OPTION_DOT","CLS.TB_OPTION_TICK","CLS.ICON_REFRESH","CLS.ICON_SELECTALL","CLS.ICON_DOWNLOAD","setAttr","CLS.SPLIT_BAR","CLS.MOBILE","CLS.CHECK_SELECT","CLS.LAYOUT","CLS.NAVIGATION_ID","CLS.NAVIGATION","CLS.LAYOUT_CONTENT","CLS.BREADCRUMBS","CLS.OVERLAY","CLS.UPLOAD_DIALOG_ID","CLS.RTL","BaseToolbar","CLS.TB_ITEM","CLS.ICON_CLEAR","BaseTreeView","events.nodeExpand","ContextMenu","CLS.HEADER_CHECK","CLS.FOCUSED"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-filemanager.es2015.js","sources":["../src/es6/file-manager/models/ajax-settings.js","../src/es6/file-manager/models/toolbar-settings.js","../src/es6/file-manager/models/search-settings.js","../src/es6/file-manager/models/details-view-settings.js","../src/es6/file-manager/models/contextMenu-settings.js","../src/es6/file-manager/models/navigation-pane-settings.js","../src/es6/file-manager/models/upload-settings.js","../src/es6/file-manager/models/column.js","../src/es6/file-manager/base/classes.js","../src/es6/file-manager/base/constant.js","../src/es6/file-manager/common/utility.js","../src/es6/file-manager/common/operations.js","../src/es6/file-manager/pop-up/dialog.js","../src/es6/file-manager/layout/large-icons-view.js","../src/es6/file-manager/actions/breadcrumb-bar.js","../src/es6/file-manager/pop-up/context-menu.js","../src/es6/file-manager/models/default-locale.js","../src/es6/file-manager/base/file-manager.js","../src/es6/file-manager/actions/toolbar.js","../src/es6/file-manager/actions/virtualization.js","../src/es6/file-manager/layout/navigation-pane.js","../src/es6/file-manager/layout/details-view.js"],"sourcesContent":["var __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 */\nexport class AjaxSettings extends ChildProperty {\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","var __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 const defaultToolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nexport class ToolbarSettings extends ChildProperty {\n}\n__decorate([\n Property(defaultToolbarItems)\n], ToolbarSettings.prototype, \"items\", void 0);\n__decorate([\n Property(true)\n], ToolbarSettings.prototype, \"visible\", void 0);\nexport class ToolbarItem extends ChildProperty {\n}\n__decorate([\n Property('')\n], ToolbarItem.prototype, \"id\", void 0);\n__decorate([\n Property('')\n], ToolbarItem.prototype, \"text\", void 0);\n__decorate([\n Property('auto')\n], ToolbarItem.prototype, \"width\", void 0);\n__decorate([\n Property('')\n], ToolbarItem.prototype, \"cssClass\", void 0);\n__decorate([\n Property(false)\n], ToolbarItem.prototype, \"showAlwaysInPopup\", void 0);\n__decorate([\n Property(false)\n], ToolbarItem.prototype, \"disabled\", void 0);\n__decorate([\n Property('')\n], ToolbarItem.prototype, \"prefixIcon\", void 0);\n__decorate([\n Property('')\n], ToolbarItem.prototype, \"suffixIcon\", void 0);\n__decorate([\n Property(true)\n], ToolbarItem.prototype, \"visible\", void 0);\n__decorate([\n Property('None')\n], ToolbarItem.prototype, \"overflow\", void 0);\n__decorate([\n Property('')\n], ToolbarItem.prototype, \"template\", void 0);\n__decorate([\n Property('Button')\n], ToolbarItem.prototype, \"type\", void 0);\n__decorate([\n Property('Both')\n], ToolbarItem.prototype, \"showTextOn\", void 0);\n__decorate([\n Property(null)\n], ToolbarItem.prototype, \"htmlAttributes\", void 0);\n__decorate([\n Property('')\n], ToolbarItem.prototype, \"tooltipText\", void 0);\n__decorate([\n Property('Left')\n], ToolbarItem.prototype, \"align\", void 0);\n__decorate([\n Property(-1)\n], ToolbarItem.prototype, \"tabIndex\", void 0);\n__decorate([\n Property()\n], ToolbarItem.prototype, \"name\", void 0);\n","var __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 */\nexport class SearchSettings extends ChildProperty {\n}\n__decorate([\n Property(true)\n], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n__decorate([\n Property('contains')\n], SearchSettings.prototype, \"filterType\", void 0);\n__decorate([\n Property(true)\n], SearchSettings.prototype, \"ignoreCase\", void 0);\n__decorate([\n Property(null)\n], SearchSettings.prototype, \"placeholder\", void 0);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, initializeCSPTemplate } from '@syncfusion/ej2-base';\n/**\n * Specifies the columns in the details view of the file manager.\n */\nexport const columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120,\n template: '<span class=\"e-fe-text\">${name}</span>',\n customAttributes: { class: 'e-fe-grid-name' }\n },\n {\n field: '_fm_modified', headerText: 'DateModified', type: 'dateTime',\n format: 'MMMM dd, yyyy HH:mm', minWidth: 120, width: '190'\n },\n {\n field: 'size', headerText: 'Size', minWidth: 90, width: '110',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: initializeCSPTemplate(function (data) {\n return `<span class=\"e-fe-size\">${data.size}</span>`;\n }), format: 'n2'\n }\n];\n/**\n * Specifies the grid settings of the File Manager.\n */\nexport class DetailsViewSettings extends ChildProperty {\n}\n__decorate([\n Property(true)\n], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n__decorate([\n Property(columnArray)\n], DetailsViewSettings.prototype, \"columns\", void 0);\n","var __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 const fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nexport const folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nexport const layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nexport class ContextMenuSettings extends ChildProperty {\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","var __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 */\nexport class NavigationPaneSettings extends ChildProperty {\n}\n__decorate([\n Property('650px')\n], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n__decorate([\n Property('240px')\n], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n__decorate([\n Property(true)\n], NavigationPaneSettings.prototype, \"visible\", void 0);\n__decorate([\n Property('None')\n], NavigationPaneSettings.prototype, \"sortOrder\", void 0);\n","var __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 */\nexport class UploadSettings extends ChildProperty {\n}\n__decorate([\n Property('')\n], UploadSettings.prototype, \"allowedExtensions\", void 0);\n__decorate([\n Property(true)\n], UploadSettings.prototype, \"autoUpload\", void 0);\n__decorate([\n Property(false)\n], UploadSettings.prototype, \"autoClose\", void 0);\n__decorate([\n Property(false)\n], UploadSettings.prototype, \"directoryUpload\", void 0);\n__decorate([\n Property(0)\n], UploadSettings.prototype, \"minFileSize\", void 0);\n__decorate([\n Property(30000000)\n], UploadSettings.prototype, \"maxFileSize\", void 0);\n","var __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 */\nexport class Column extends ChildProperty {\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, \"sortComparer\", void 0);\n__decorate([\n Property(null)\n], Column.prototype, \"headerTemplate\", void 0);\n__decorate([\n Property(true)\n], Column.prototype, \"allowSorting\", void 0);\n__decorate([\n Property(true)\n], Column.prototype, \"allowResizing\", void 0);\n__decorate([\n Property(null)\n], Column.prototype, \"customAttributes\", void 0);\n__decorate([\n Property('')\n], Column.prototype, \"hideAtMedia\", void 0);\n__decorate([\n Property(null)\n], Column.prototype, \"customFormat\", void 0);\n__decorate([\n Property(false)\n], Column.prototype, \"isPrimaryKey\", void 0);\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport const TOOLBAR_ID = '_toolbar';\n/** @hidden */\nexport const LAYOUT_ID = '_layout';\n/** @hidden */\nexport const NAVIGATION_ID = '_navigation';\n/** @hidden */\nexport const TREE_ID = '_tree';\n/** @hidden */\nexport const GRID_ID = '_grid';\n/** @hidden */\nexport const LARGEICON_ID = '_largeicons';\n/** @hidden */\nexport const DIALOG_ID = '_dialog';\n/** @hidden */\nexport const ALT_DIALOG_ID = '_alt_dialog';\n/** @hidden */\nexport const IMG_DIALOG_ID = '_img_dialog';\n/** @hidden */\nexport const EXTN_DIALOG_ID = '_extn_dialog';\n/** @hidden */\nexport const UPLOAD_DIALOG_ID = '_upload_dialog';\n/** @hidden */\nexport const RETRY_DIALOG_ID = '_retry_dialog';\n/** @hidden */\nexport const CONTEXT_MENU_ID = '_contextmenu';\n/** @hidden */\nexport const SORTBY_ID = '_sortby';\n/** @hidden */\nexport const VIEW_ID = '_view';\n/** @hidden */\nexport const SPLITTER_ID = '_splitter';\n/** @hidden */\nexport const CONTENT_ID = '_content';\n/** @hidden */\nexport const BREADCRUMBBAR_ID = '_breadcrumbbar';\n/** @hidden */\nexport const UPLOAD_ID = '_upload';\n/** @hidden */\nexport const RETRY_ID = '_retry';\n/** @hidden */\nexport const SEARCH_ID = '_search';\n/**\n * Specifies the File Manager internal class names\n */\n/** @hidden */\nexport const ROOT = 'e-filemanager';\n/** @hidden */\nexport const CONTROL = 'e-control';\n/** @hidden */\nexport const CHECK_SELECT = 'e-fe-cb-select';\n/** @hidden */\nexport const ROOT_POPUP = 'e-fe-popup';\n/** @hidden */\nexport const MOBILE = 'e-fe-mobile';\n/** @hidden */\nexport const MOB_POPUP = 'e-fe-popup e-fe-mobile';\n/** @hidden */\nexport const MULTI_SELECT = 'e-fe-m-select';\n/** @hidden */\nexport const FILTER = 'e-fe-m-filter';\n/** @hidden */\nexport const LAYOUT = 'e-layout';\n/** @hidden */\nexport const NAVIGATION = 'e-navigation';\n/** @hidden */\nexport const LAYOUT_CONTENT = 'e-layout-content';\n/** @hidden */\nexport const LARGE_ICONS = 'e-large-icons';\n/** @hidden */\nexport const TB_ITEM = 'e-toolbar-item';\n/** @hidden */\nexport const LIST_ITEM = 'e-list-item';\n/** @hidden */\nexport const LIST_TEXT = 'e-list-text';\n/** @hidden */\nexport const LIST_PARENT = 'e-list-parent';\n/** @hidden */\nexport const TB_OPTION_TICK = 'e-icons e-fe-tick';\n/** @hidden */\nexport const TB_OPTION_DOT = 'e-icons e-fe-dot';\n/** @hidden */\nexport const BLUR = 'e-blur';\n/** @hidden */\nexport const ACTIVE = 'e-active';\n/** @hidden */\nexport const HOVER = 'e-hover';\n/** @hidden */\nexport const FOCUS = 'e-focus';\n/** @hidden */\nexport const FOCUSED = 'e-focused';\n/** @hidden */\nexport const CHECK = 'e-check';\n/** @hidden */\nexport const FRAME = 'e-frame';\n/** @hidden */\nexport const CB_WRAP = 'e-checkbox-wrapper';\n/** @hidden */\nexport const ROW = 'e-row';\n/** @hidden */\nexport const ROWCELL = 'e-rowcell';\n/** @hidden */\nexport const EMPTY = 'e-empty';\n/** @hidden */\nexport const EMPTY_CONTENT = 'e-empty-content';\n/** @hidden */\nexport const EMPTY_INNER_CONTENT = 'e-empty-inner-content';\n/** @hidden */\nexport const CLONE = 'e-fe-clone';\n/** @hidden */\nexport const DROP_FOLDER = 'e-fe-drop-folder';\n/** @hidden */\nexport const DROP_FILE = 'e-fe-drop-file';\n/** @hidden */\nexport const FOLDER = 'e-fe-folder';\n/** @hidden */\nexport const ICON_IMAGE = 'e-fe-image';\n/** @hidden */\nexport const ICON_MUSIC = 'e-fe-music';\n/** @hidden */\nexport const ICON_VIDEO = 'e-fe-video';\n/** @hidden */\nexport const LARGE_ICON = 'e-large-icon';\n/** @hidden */\nexport const LARGE_EMPTY_FOLDER = 'e-empty-icon e-fe-folder';\n/** @hidden */\nexport const LARGE_EMPTY_FOLDER_TWO = 'e-empty-icon.e-fe-folder';\n/** @hidden */\nexport const LARGE_ICON_FOLDER = 'e-fe-folder';\n/** @hidden */\nexport const SELECTED_ITEMS = 'e-items';\n/** @hidden */\nexport const TEXT_CONTENT = 'e-text-content';\n/** @hidden */\nexport const GRID_HEADER = 'e-gridheader';\n/** @hidden */\nexport const TEMPLATE_CELL = 'e-templatecell';\n/** @hidden */\nexport const TREE_VIEW = 'e-treeview';\n/** @hidden */\nexport const MENU_ITEM = 'e-menu-item';\n/** @hidden */\nexport const MENU_ICON = 'e-menu-icon';\n/** @hidden */\nexport const SUBMENU_ICON = 'e-caret';\n/** @hidden */\nexport const GRID_VIEW = 'e-content';\n/** @hidden */\nexport const GRID_CONTENT = 'e-gridcontent';\n/** @hidden */\nexport const ICON_VIEW = 'e-list-parent';\n/** @hidden */\nexport const ICON_OPEN = 'e-icons e-fe-open';\n/** @hidden */\nexport const ICON_UPLOAD = 'e-icons e-fe-upload';\n/** @hidden */\nexport const ICON_CUT = 'e-icons e-fe-cut';\n/** @hidden */\nexport const ICON_COPY = 'e-icons e-fe-copy';\n/** @hidden */\nexport const ICON_PASTE = 'e-icons e-fe-paste';\n/** @hidden */\nexport const ICON_DELETE = 'e-icons e-fe-delete';\n/** @hidden */\nexport const ICON_RENAME = 'e-icons e-fe-rename';\n/** @hidden */\nexport const ICON_NEWFOLDER = 'e-icons e-fe-newfolder';\n/** @hidden */\nexport const ICON_DETAILS = 'e-icons e-fe-details';\n/** @hidden */\nexport const ICON_SHORTBY = 'e-icons e-fe-sort';\n/** @hidden */\nexport const ICON_REFRESH = 'e-icons e-fe-refresh';\n/** @hidden */\nexport const ICON_SELECTALL = 'e-icons e-fe-select';\n/** @hidden */\nexport const ICON_DOWNLOAD = 'e-icons e-fe-download';\n/** @hidden */\nexport const ICON_OPTIONS = 'e-icons e-fe-options';\n/** @hidden */\nexport const ICON_GRID = 'e-icons e-fe-grid';\n/** @hidden */\nexport const ICON_LARGE = 'e-icons e-fe-large';\n/** @hidden */\nexport const ICON_BREADCRUMB = 'e-icons e-fe-breadcrumb';\n/** @hidden */\nexport const ICON_CLEAR = 'e-icons e-fe-clear';\n/** @hidden */\nexport const ICON_DROP_IN = 'e-icons e-fe-drop-in';\n/** @hidden */\nexport const ICON_DROP_OUT = 'e-icons e-fe-drop-out';\n/** @hidden */\nexport const ICON_NO_DROP = 'e-icons e-fe-no-drop';\n/** @hidden */\nexport const ICONS = 'e-icons';\n/** @hidden */\nexport const DETAILS_LABEL = 'e-detailslabel';\n/** @hidden */\nexport const ERROR_CONTENT = 'e-fe-errorcontent';\n/** @hidden */\nexport const STATUS = 'e-status';\n/** @hidden */\nexport const BREADCRUMBS = 'e-address';\n/** @hidden */\nexport const RTL = 'e-rtl';\n/** @hidden */\nexport const DISPLAY_NONE = 'e-display-none';\n/** @hidden */\nexport const COLLAPSED = 'e-node-collapsed';\n/** @hidden */\nexport const FULLROW = 'e-fullrow';\n/** @hidden */\nexport const ICON_COLLAPSIBLE = 'e-icon-collapsible';\n/** @hidden */\nexport const SPLIT_BAR = 'e-split-bar';\n/** @hidden */\nexport const HEADER_CHECK = 'e-headercheck';\n/** @hidden */\nexport const OVERLAY = 'e-fe-overlay';\n/** @hidden */\nexport const VALUE = 'e-fe-value';\n","/**\n * Specifies the File Manager internal variables\n */\n/** @hidden */\nexport const isFile = 'isFile';\n/**\n * Specifies the File Manager internal events\n */\n/** @hidden */\nexport const modelChanged = 'model-changed';\n/** @hidden */\nexport const initialEnd = 'initial-end';\n/** @hidden */\nexport const finalizeEnd = 'finalize-end';\n/** @hidden */\nexport const createEnd = 'create-end';\n/** @hidden */\nexport const filterEnd = 'filter-end';\n/** @hidden */\nexport const beforeDelete = 'before-delete';\n/** @hidden */\nexport const pathDrag = 'path-drag';\n/** @hidden */\nexport const deleteInit = 'delete-init';\n/** @hidden */\nexport const deleteEnd = 'delete-end';\n/** @hidden */\nexport const refreshEnd = 'refresh-end';\n/** @hidden */\nexport const resizeEnd = 'resize-end';\n/** @hidden */\nexport const splitterResize = 'splitter-resize';\n/** @hidden */\nexport const pathChanged = 'path-changed';\n/** @hidden */\nexport const destroy = 'destroy';\n/** @hidden */\nexport const beforeRequest = 'before-request';\n/** @hidden */\nexport const upload = 'upload';\n/** @hidden */\nexport const skipUpload = 'skip-upload';\n/** @hidden */\nexport const afterRequest = 'after-request';\n/** @hidden */\nexport const download = 'download';\n/** @hidden */\nexport const layoutRefresh = 'layout-refresh';\n/** @hidden */\nexport const actionFailure = 'actionFailure';\n/** @hidden */\nexport const search = 'search';\n/** @hidden */\nexport const openInit = 'open-init';\n/** @hidden */\nexport const openEnd = 'open-end';\n/** @hidden */\nexport const selectionChanged = 'selection-changed';\n/** @hidden */\nexport const selectAllInit = 'select-all-init';\n/** @hidden */\nexport const clearAllInit = 'clear-all-init';\n/** @hidden */\nexport const clearPathInit = 'clear-path-init';\n/** @hidden */\nexport const layoutChange = 'layout-change';\n/** @hidden */\nexport const sortByChange = 'sort-by-change';\n/** @hidden */\nexport const nodeExpand = 'node-expand';\n/** @hidden */\nexport const detailsInit = 'details-init';\n/** @hidden */\nexport const menuItemData = 'menu-item-data';\n/** @hidden */\nexport const renameInit = 'rename-init';\n/** @hidden */\nexport const renameEndParent = 'rename-end-parent';\n/** @hidden */\nexport const renameEnd = 'rename-end';\n/** @hidden */\nexport const showPaste = 'show-paste';\n/** @hidden */\nexport const hidePaste = 'hide-paste';\n/** @hidden */\nexport const selectedData = 'selected-data';\n/** @hidden */\nexport const cutCopyInit = 'cut-copy-init';\n/** @hidden */\nexport const pasteInit = 'paste-init';\n/** @hidden */\nexport const pasteEnd = 'paste-end';\n/** @hidden */\nexport const cutEnd = 'cut-end';\n/** @hidden */\nexport const hideLayout = 'hide-layout';\n/** @hidden */\nexport const updateTreeSelection = 'update-tree-selection';\n/** @hidden */\nexport const treeSelect = 'select-node';\n/** @hidden */\nexport const sortColumn = 'sort-column';\n/** @hidden */\nexport const pathColumn = 'path-column';\n/** @hidden */\nexport const searchTextChange = 'search-change';\n/** @hidden */\nexport const beforeDownload = 'before-download';\n/** @hidden */\nexport const downloadInit = 'download-init';\n/** @hidden */\nexport const dropInit = 'drop-init';\n/** @hidden */\nexport const dragEnd = 'drag-end';\n/** @hidden */\nexport const dropPath = 'drop-path';\n/** @hidden */\nexport const dragHelper = 'drag-helper';\n/** @hidden */\nexport const dragging = 'dragging';\n/** @hidden */\nexport const updateSelectionData = 'update-selection-data';\n/** @hidden */\nexport const methodCall = 'method-call';\n/** @hidden */\nexport const permissionRead = 'read';\n/** @hidden */\nexport const permissionEdit = 'write';\n/** @hidden */\nexport const permissionEditContents = 'writeContents';\n/** @hidden */\nexport const permissionCopy = 'copy';\n/** @hidden */\nexport const permissionUpload = 'upload';\n/** @hidden */\nexport const permissionDownload = 'download';\n","import * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { read, paste, Search, filter, Download, Delete, isFileSystemData } from '../common/operations';\nimport { getValue, setValue, isNullOrUndefined as isNOU, matches, select, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest, detach } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createDialog } from '../pop-up/dialog';\n/**\n * Utility function to compare two strings in a way similar to Windows Explorer.\n * Files and folders are sorted separately, with folders coming before files.\n *\n * @param {string} reference - The first string to compare. This could be a file or folder name.\n * @param {string} comparer - The second string to compare. This could be a file or folder name.\n * @returns {number} - A negative number if `reference` should come before `comparer`, a positive number if `comparer` should come before `reference`, and 0 if they are considered equal.\n */\nexport function sortComparer(reference, comparer) {\n // Check if reference and comparer are files or folders\n const referenceIsFile = /\\.\\S+/.test(reference);\n const comparerIsFile = /\\.\\S+/.test(comparer);\n // If one is a file and the other is a folder, the folder should come first\n if (referenceIsFile && !comparerIsFile) {\n return 1;\n }\n if (!referenceIsFile && comparerIsFile) {\n return -1;\n }\n const referenceParts = [];\n const comparerParts = [];\n (reference + '').replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { referenceParts.push([$1 || Infinity, $2 || '']); return ''; });\n (comparer + '').replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { comparerParts.push([$1 || Infinity, $2 || '']); return ''; });\n // Compare each part of reference and comparer\n while (referenceParts.length && comparerParts.length) {\n const referencePart = referenceParts.shift();\n const comparerPart = comparerParts.shift();\n if (referencePart && comparerPart) {\n const comparisonResult = referencePart[0] - comparerPart[0] ||\n referencePart[1].localeCompare(comparerPart[1]);\n if (comparisonResult) {\n return comparisonResult;\n }\n }\n }\n return referenceParts.length - comparerParts.length;\n}\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 */\nexport function updatePath(node, data, instance) {\n const text = getValue('name', data);\n const id = node.getAttribute('data-id');\n const 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 const matched = getParents(element, text, false, hasId);\n let path = '/';\n const len = matched.length - (2);\n for (let 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 const matched = getParents(node, node.getAttribute('data-uid'), true);\n const ids = [];\n for (let 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 const matched = getParents(element, text, false);\n const names = [];\n for (let 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 const matched = [text];\n let el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, '.' + CLS.LIST_ITEM)) {\n const 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 const key = parent.hasId ? 'id' : 'name';\n let newPath = '/';\n let i = 1;\n for (i; i < parent.pathId.length; i++) {\n const data = getValue(parent.pathId[parseInt(i.toString(), 10)], 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 const blurEle = parent.activeElements;\n if (parent.activeModule !== 'navigationpane') {\n parent.targetPath = parent.path;\n }\n else {\n parent.targetPath = getParentPath(parent.path);\n }\n let 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 let i = 0;\n while (i < parent.selectedItems.length) {\n parent.selectedNodes.push(parent.selectedItems[i]);\n i++;\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 const blurEle = (!hover) ? parent.element.querySelectorAll('.' + CLS.BLUR) :\n parent.element.querySelectorAll('.' + CLS.HOVER);\n let 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 let searchWord;\n if (value.length === 0 && !parent.isFiltered) {\n parent.notify(events.pathColumn, { args: parent });\n }\n if (isFileSystemData(parent)) {\n if (value === '') {\n parent.itemData = parent.fileSystemData;\n read(parent, events.layoutChange, parent.path);\n }\n else {\n parent.searchSettings.filterType = isNOU(parent.searchSettings.filterType) ? 'contains' : parent.searchSettings.filterType;\n const filteredData = parent.fileSystemData.filter((obj) => obj.parentId !== null);\n const data = new DataManager(filteredData).\n executeLocal(new Query().where('name', parent.searchSettings.filterType, value, parent.searchSettings.ignoreCase));\n const searchValue = parent.searchSettings.ignoreCase ? value.toLowerCase() : value;\n parent.itemData = data;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchValue, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n return;\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 const caseSensitive = parent.searchSettings.ignoreCase;\n const hiddenItems = parent.showHiddenItems;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchWord, hiddenItems, !caseSensitive);\n }\n else {\n if (!parent.isFiltered) {\n if (parent.isSortByClicked) {\n parent.notify(events.layoutChange, { files: (parent.oldView === 'Details') ? parent.detailsviewModule.gridObj.dataSource : parent.largeiconsviewModule.allItems });\n parent.isSortByClicked = false;\n }\n else {\n read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n }\n else {\n filter(parent, events.layoutChange);\n }\n }\n}\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} view - specifies the view.\n * @returns {void}\n * @private\n */\nexport function updateLayout(parent, view) {\n parent.oldView = parent.view;\n parent.setProperties({ view: view }, true);\n if (parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) {\n parent.layoutSelectedItems = parent.selectedItems;\n }\n let 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 let tartgetModule = '';\n if (element) {\n if (closest(element, '.' + CLS.ROOT + '.' + CLS.CONTROL + ' .' + CLS.GRID_CONTENT)) {\n tartgetModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICONS)) {\n tartgetModule = 'largeiconsview';\n }\n else if (element.classList.contains('e-fullrow') ||\n element.classList.contains('e-icon-expandable')) {\n tartgetModule = 'navigationpane';\n }\n else if (closest(element, '.e-address-list-item')) {\n tartgetModule = 'breadcrumbbar';\n }\n else {\n tartgetModule = '';\n }\n }\n parent.targetModule = tartgetModule;\n}\n/* istanbul ignore next */\n/**\n * refresh the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function refresh(parent) {\n parent.itemData = [getPathObject(parent)];\n if (!hasReadAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionRead);\n }\n else {\n read(parent, events.refreshEnd, parent.path);\n }\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function openAction(parent) {\n read(parent, events.openEnd, parent.path);\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {Object} - returns the path data.\n * @private\n */\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 */\nexport function fileType(file) {\n const isFile = getValue('isFile', file);\n if (!isFile) {\n return CLS.FOLDER;\n }\n const imageFormat = ['bmp', 'dib', 'jpg', 'jpeg', 'jpe', 'jfif', 'gif', 'tif', 'tiff', 'png', 'ico'];\n const audioFormat = ['mp3', 'wav', 'aac', 'ogg', 'wma', 'aif', 'fla', 'm4a'];\n const videoFormat = ['webm', 'mkv', 'flv', 'vob', 'ogv', 'ogg', 'avi', 'wmv', 'mp4', '3gp'];\n const knownFormat = ['css', 'exe', 'html', 'js', 'msi', 'pdf', 'pptx', 'ppt', 'rar', 'zip', 'txt', 'docx', 'doc',\n 'xlsx', 'xls', 'xml', 'rtf', 'php'];\n let filetype = getValue('type', file);\n filetype = filetype.toLowerCase();\n if (filetype.indexOf('.') !== -1) {\n filetype = filetype.split('.').join('');\n }\n let 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 */\nexport function getImageUrl(parent, item) {\n let imgUrl = isFileSystemData(parent) ? getValue('imageUrl', item) : '';\n if (isFileSystemData(parent)) {\n const eventArgs = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs);\n return eventArgs.imageUrl;\n }\n const baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n const pathUrl = (baseUrl.indexOf('?') !== -1) ? '&path=' : '?path=';\n const fileName = encodeURIComponent(getValue('name', item));\n const fPath = getValue('filterPath', item);\n if (parent.hasId) {\n const imgId = getValue('id', item);\n imgUrl = baseUrl + pathUrl + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + pathUrl + encodeURIComponent(fPath.replace(/\\\\/g, '/')) + fileName;\n }\n else {\n imgUrl = baseUrl + pathUrl + parent.path + fileName;\n }\n imgUrl = imgUrl + '&time=' + (new Date().getTime()).toString();\n const 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 */\nexport function getFullPath(parent, data, path) {\n const filePath = getValue(parent.hasId ? 'id' : 'name', data) + '/';\n const 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 */\nexport function getName(parent, data) {\n let name = getValue('name', data);\n let 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 */\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n let query;\n if (parent.sortOrder !== 'None' && !isNullOrUndefined(parent.sortOrder)) {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\n const 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 */\nexport function getObject(parent, key, value) {\n const currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n const query = new Query().where(key, 'equal', value);\n const 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 let top;\n const layoutElement = select('#' + parent.element.id + CLS.LAYOUT_ID, parent.element);\n const 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 const emptyDiv = createElement('div', { className: CLS.EMPTY });\n const emptyFolder = createElement('div', { className: CLS.LARGE_EMPTY_FOLDER });\n const emptyEle = createElement('div', { className: CLS.EMPTY_CONTENT });\n const 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 const 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 */\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 const dirs = getDirectories(result.files);\n for (let 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 * @param {Internationalization} localeString - The internationalization object for formatting dates.\n * @param {string} dateFormat - The date format string.\n * @returns {void}\n * @private\n */\nexport function setDateObject(args, localeString, dateFormat) {\n for (let i = 0; i < args.length; i++) {\n const createdDate = new Date(getValue('dateCreated', args[i]));\n const modifiedDate = new Date(getValue('dateModified', args[i]));\n if (isNOU(dateFormat)) {\n dateFormat = 'MM/dd/yyyy';\n }\n setValue('_fm_created', localeString.formatDate(createdDate, { format: dateFormat }), args[i]);\n setValue('_fm_modified', localeString.formatDate(modifiedDate, { format: dateFormat }), args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nexport function getLocaleText(parent, text) {\n const 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 let 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 let tick;\n parent.isSortByClicked = true;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id, parent);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(events.sortColumn, { module: 'detailsview' });\n parent.isSortByClicked = false;\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(events.sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @param {IFileManager} [parent] - optional parameter representing the parent IFileManager.\n * @returns {string} - returns the sorted fields\n * @private\n */\nexport function getSortField(id, parent) {\n const text = id.substring(id.lastIndexOf('_') + 1);\n let field = text;\n let column;\n if (parent) {\n column = parent.detailsViewSettings.columns;\n }\n switch (text) {\n case 'date':\n for (let i = 0, len = column.length; i < len; i++) {\n if (column[i].field === 'dateModified' || column[i].field === 'dateCreated') {\n field = column[i].field;\n break;\n }\n else {\n field = '_fm_modified';\n }\n }\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function setNextPath(parent, path) {\n const currfolders = path.split('/');\n const folders = parent.originalPath.split('/');\n const root = getValue(parent.pathId[0], parent.feParent);\n const key = isNOU(getValue('id', root)) ? 'name' : 'id';\n for (let i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n const eventName = (folders[i + 1] === '') ? events.finalizeEnd : events.initialEnd;\n const newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n const data = getObject(parent, key, folders[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(data)) {\n const 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 }\n else {\n parent.originalPath = newPath;\n }\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 */\nexport function openSearchFolder(parent, data) {\n parent.originalPath = getFullPath(parent, data, parent.path);\n const root = getValue(parent.pathId[0], parent.feParent);\n const isRoot = getValue('_fm_id', parent.itemData[0]) === 'fe_tree';\n const key = isNOU(getValue('id', root)) ? 'name' : 'id';\n const searchData = getObject(parent, key, isFileSystemData(parent) ? getValue('id', data) : getValue('name', data));\n if (isNullOrUndefined(searchData)) {\n if (!isRoot) {\n parent.notify(events.clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n }\n else {\n setNextPath(parent, parent.path);\n return;\n }\n }\n else {\n const id = getValue('_fm_id', searchData);\n parent.setProperties({ path: parent.originalPath }, true);\n parent.pathId.push(id);\n parent.itemData = [searchData];\n parent.pathNames.push(getValue('name', searchData));\n }\n read(parent, (parent.path !== parent.originalPath) ? events.initialEnd : events.finalizeEnd, parent.path);\n}\n/**\n * Paste handling function\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function pasteHandler(parent) {\n parent.isDragDrop = false;\n if (parent.selectedNodes.length !== 0 && parent.enablePaste) {\n const path = (parent.folderPath === '') ? parent.path : parent.folderPath;\n const 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 const result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n }\n }\n }\n}\n/**\n * Validates the sub folders\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {'{ [key: string]: Object; }[]'} data - specifies the data.\n * @param {string} dropPath - specifies the drop path.\n * @param {string} dragPath - specifies the drag path.\n * @returns {boolean} - returns the validated sub folder.\n * @private\n */\nexport function validateSubFolder(parent, data, dropPath, dragPath) {\n let subFolder = false;\n for (let i = 0; i < data.length; i++) {\n if (!getValue('isFile', data[i])) {\n const tempTarget = getFullPath(parent, data[i], dragPath);\n if (dropPath.indexOf(tempTarget) === 0) {\n const 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 const name = parent.dragData[i] ? parent.dragData[i].name : null;\n const srcData = isFileSystemData(parent) ? name : parent.dragNodes[i];\n let len = 0;\n if (srcData) {\n len = srcData.lastIndexOf('/');\n }\n let path = '';\n if (len > 0) {\n path = dragPath + srcData.substring(0, len + 1);\n }\n if (path === dropPath) {\n const 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 const 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 const path = oldPath.split('/');\n let newPath = path[0] + '/';\n for (let 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 const filePath = getValue(parent.hasId ? 'id' : 'name', args.cwd) + '/';\n const fPath = getValue(parent.hasId && !isNullOrUndefined(parent.ajaxSettings.url) ? 'filterId' : 'filterPath', args.cwd);\n if (!isNOU(fPath)) {\n if (fPath === '') {\n return parent.hasId && !isNullOrUndefined(parent.ajaxSettings.url) ? filePath : '/';\n }\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return isFileSystemData(parent) ? filePath : 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 const flag = false;\n for (let 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 let 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 let node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n if (!node) {\n const liElement = document.querySelector('[data-id = \"' + getValue('id', parent.dropData) + '\"]');\n pathId = liElement.getAttribute('data-uid');\n node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n }\n updatePath(node, parent.dropData, parent);\n }\n read(parent, events.dropPath, parent.dropPath);\n }\n}\n/**\n * Gets the duplicated path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} name - specifies the name.\n * @returns {object} - returns the duplicated path.\n * @private\n */\nexport function getDuplicateData(parent, name) {\n let data = null;\n const records = parent.isDragDrop ? parent.dragData : parent.actionRecords;\n for (let 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 let 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 const cloneIcon = parent.createElement('div', {\n className: 'e-fe-icon ' + fileType(parent.dragData[0])\n });\n const cloneName = parent.createElement('div', {\n className: 'e-fe-name',\n innerHTML: parent.dragData[0].name\n });\n const virtualEle = parent.createElement('div', {\n className: 'e-fe-content'\n });\n virtualEle.appendChild(cloneIcon);\n virtualEle.appendChild(cloneName);\n const ele = parent.createElement('div', {\n className: CLS.CLONE\n });\n ele.appendChild(virtualEle);\n if (parent.dragNodes.length > 1) {\n const 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 const 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 const 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, (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 const 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 let i = 0;\n while (i < parent.activeElements.length) {\n addBlur(parent.activeElements[i]);\n i++;\n }\n parent.trigger('fileDragStart', dragArgs, (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 const 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 const ele = parent.element.querySelectorAll('.' + value);\n for (let i = 0; i < ele.length; i++) {\n ele[i].classList.remove(value);\n }\n}\n/**\n * Remove item class handler\n *\n * @param {Element} scrollParent - specifies the scrolling target.\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} nodeClass - specifies the node class.\n * @param {number} screenY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the entire screen.\n * @param {number} clientY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the target element.\n * @returns {void}\n * @private\n */\nexport function scrollHandler(scrollParent, parent, nodeClass, screenY, clientY) {\n let position;\n const elementData = scrollParent.getBoundingClientRect();\n const node = select('.' + nodeClass, scrollParent);\n if ((screenY >= (elementData.top + scrollParent.clientHeight - 30)) && !isNullOrUndefined(node)) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, position);\n }\n if (!isNullOrUndefined(node) && (clientY <= (elementData.top + 30))) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, -position);\n }\n}\n/**\n * Dragging handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nexport function draggingHandler(parent, args) {\n const dragArgs = args;\n dragArgs.fileDetails = parent.dragData;\n let 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 let node = null;\n let scrollParent;\n if (parent.targetModule === 'navigationpane') {\n node = closest(args.target, 'li');\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n canDrop = true;\n /* istanbul ignore next */\n parent.treeExpandTimer = window.setTimeout(() => { parent.notify(events.dragging, args); }, 800);\n scrollParent = parent.navigationpaneModule.treeObj.element.parentElement;\n scrollHandler(scrollParent, parent, 'e-level-2', args.event.screenY, args.event.y);\n }\n else if (parent.targetModule === 'detailsview') {\n node = closest(args.target, 'tr');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FOLDER);\n }\n else if (node && !node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FILE);\n }\n canDrop = true;\n scrollParent = parent.detailsviewModule.gridObj.element.querySelector('.e-content');\n scrollHandler(scrollParent, parent, 'e-row', args.event.screenY, args.event.y);\n }\n else if (parent.targetModule === 'largeiconsview') {\n node = closest(args.target, 'li');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n }\n canDrop = true;\n scrollParent = parent.largeiconsviewModule.element.firstElementChild;\n scrollHandler(scrollParent, parent, 'e-large-icon', args.event.screenY, args.event.y);\n /* istanbul ignore next */\n }\n else if (parent.targetModule === 'breadcrumbbar') {\n canDrop = true;\n }\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n parent.element.classList.add(canDrop ? 'e-fe-drop' : 'e-no-drop');\n parent.dragCount = parent.dragCount + 1;\n parent.trigger('fileDragging', dragArgs);\n}\n/**\n * Object to string handler\n *\n * @param {Object} data - specifies the data.\n * @returns {string} returns string converted from Object.\n * @private\n */\n// Ignored the message key value in permission object\nexport function objectToString(data) {\n let str = '';\n const keys = Object.keys(data);\n for (let 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 */\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 */\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 const items = parent.itemData;\n for (let 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 */\nexport function doDeleteFiles(parent, data, newIds) {\n for (let 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 */\nexport function doDownloadFiles(parent, data, newIds) {\n for (let 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 */\nexport function createDeniedDialog(parent, data, action) {\n let 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 const 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 */\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 */\nexport function hasReadAccess(data) {\n const 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 */\nexport function hasEditAccess(data) {\n const 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 */\nexport function hasContentAccess(data) {\n const 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 */\nexport function hasUploadAccess(data) {\n const 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 */\nexport function hasDownloadAccess(data) {\n const 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 const 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 const details = parent.itemData[0];\n if (!hasUploadAccess(details)) {\n createDeniedDialog(parent, details, events.permissionUpload);\n }\n else {\n const eleId = '#' + parent.element.id + CLS.UPLOAD_ID;\n const uploadEle = document.querySelector(eleId);\n uploadEle.click();\n }\n}\n/**\n * Close dialog popup handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function closePopup(parent) {\n if (!isNullOrUndefined(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n}\n/**\n * Access control handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} itemData - specifies the item elements.\n * @param {string} action - specifies the action.\n * @param {boolean} isPathPermision - specifies the path permission.\n * @returns {string} returns the path.\n * @private\n */\nexport function getAccessDetails(parent, itemData, action, isPathPermision) {\n let accessMessage = '';\n for (let i = 0; i < itemData.length; i++) {\n let permission = getValue('permission', itemData[i]);\n if (permission == null) {\n permission = undefined;\n }\n if (isPathPermision) {\n if (permission && (!getValue('read', permission) || !getValue('writeContents', permission))) {\n accessMessage = getValue('message', getValue('permission', itemData[i]));\n if (accessMessage === '') {\n accessMessage = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', itemData[i])).replace('{1}', 'writeContents');\n }\n }\n }\n else {\n const copyOrMovePermission = action === 'copy' ? getValue('copy', permission) : getValue('write', permission);\n if (permission && (!getValue('read', permission) || !copyOrMovePermission)) {\n accessMessage = getValue('message', getValue('permission', itemData[i]));\n if (accessMessage === '') {\n accessMessage = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', itemData[i])).replace('{1}', action);\n }\n }\n }\n if (accessMessage !== '') {\n parent.responseData = {\n cwd: null,\n details: null,\n error: {\n code: '401',\n message: accessMessage,\n fileExists: null\n },\n files: null\n };\n break;\n }\n }\n return accessMessage;\n}\n","import { Ajax, Fetch, createElement, select, extend, Internationalization } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, setValue, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate, getPathObject } from '../common/utility';\nimport { generatePath, getAccessDetails } from '../common/utility';\nimport { getUid } from '@syncfusion/ej2-grids';\n/* eslint-disable @typescript-eslint/no-explicit-any */\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 const itemData = parent.itemData;\n for (let i = 0; i < itemData.length; i++) {\n if (isNOU(getValue('hasChild', itemData[i]))) {\n setValue('hasChild', false, itemData[i]);\n }\n }\n const 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 const 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 const data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n let filterData;\n const 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 let name;\n let newName;\n if (parent.breadcrumbbarModule.searchObj.element.value === '' && !parent.isFiltered) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n let 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 const data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData, showFileExtension: parent.showFileExtension\n };\n createAjax(parent, data, renameSuccess, path);\n}\n/**\n * Function to paste file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} names - specifies the names.\n * @param {string} targetPath - specifies the target path.\n * @param {string} pasteOperation - specifies the paste operation.\n * @param {string[]} renameItems - specifies the rename items.\n * @param {Object[]} actionRecords - specifies the action records.\n * @returns {void}\n * @private\n */\nexport function paste(parent, path, names, targetPath, pasteOperation, renameItems, actionRecords) {\n const 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 const 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 const data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Function for getDateFormat in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction getDateFormat(parent) {\n const columns = parent.detailsViewSettings.columns;\n let dateFormat;\n if (!columns) {\n return null;\n }\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].field === '_fm_modified') {\n if (!isNOU(columns[i].format)) {\n dateFormat = columns[i].format.toString();\n }\n break;\n }\n }\n return dateFormat;\n}\n/**\n * Checks whether fileSystemData is enabled.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns the boolean value.\n */\nexport function isFileSystemData(parent) {\n const isFileSystemData = parent.fileSystemData.length >= 0 && isNOU(parent.ajaxSettings.url);\n return isFileSystemData;\n}\n/**\n * Function to check whether file already exist or not.\n *\n * @param {Record<string, any>} fileSystemData - specifies the file data.\n * @param {string} name - specifies the name.\n * @returns {boolean} - returns the boolean value.\n * @private\n */\nfunction isFileExists(fileSystemData, name) {\n const isExists = fileSystemData.some((item) => item.name === name);\n return isExists;\n}\n/**\n * Function to find the index value of a file or folder.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number} id - specifies the id.\n * @returns {number} - returns the index value.\n * @private\n */\nfunction findIndexById(parent, id) {\n const index = parent.fileSystemData.findIndex((item) => String(item.id) === String(id));\n return index;\n}\n/**\n * Function to get the entire data of a file or folder using id value.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number | string} id - specifies the id.\n * @returns {Object} - returns the data.\n * @private\n */\nfunction filterById(parent, id) {\n const data = parent.fileSystemData.filter((item) => String(item.id) === String(id))[0];\n return data;\n}\n/**\n * Function to get the entire data of a file or folder for a parent.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number | string} parentId - specifies the parent id.\n * @returns {Object[]} - returns the data.\n * @private\n */\nfunction filterByParent(parent, parentId) {\n const data = parent.fileSystemData.filter((item) => String(item.parentId) === String(parentId));\n return data;\n}\n/**\n * Function to create a new copied file or folder.\n *\n * @param {Record<string, any>} data - specifies the file or folder data.\n * @param {Record<string, any>} target - specifies the target data.\n * @param {string} itemName - specifies the item name.\n * @param {boolean} isCopy - specifies the copy operation.\n * @returns {Record<string, Object>} - returns the data.\n * @private\n */\nfunction createNewItem(data, target, itemName, isCopy) {\n const newItem = {};\n //Construct the new folder details.\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newItem[key] = null;\n }\n }\n const currentDate = new Date();\n const folderPath = target.id !== 0 ? target.filterPath + target.name : '\\\\';\n Object.assign(newItem, {\n dateCreated: currentDate,\n dateModified: currentDate,\n filterPath: folderPath,\n hasChild: isCopy ? data.hasChild : false,\n id: getUid(itemName === null ? data.name : itemName),\n isFile: isCopy ? data.isFile : false,\n name: itemName === null ? data.name : itemName,\n parentId: target.id,\n size: isCopy ? data.size : 0,\n type: isCopy ? data.type : ''\n });\n return newItem;\n}\n/**\n * Function to create an error response.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} message - specifies the error message.\n * @param {string} code - specifies the error code.\n * @param {Object[]} fileName - specifies the file name.\n * @returns {void}\n * @private\n */\nfunction createErrorObject(parent, message, code, fileName) {\n parent.responseData = {\n cwd: null,\n details: null,\n error: {\n code: code,\n message: message,\n fileExists: fileName != null ? fileName : null\n },\n files: null\n };\n}\n/**\n * Function to trigger folder creation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerFolderCreation(parent, data, eventArgs) {\n const createEventArgs = {\n folderName: getValue('name', data),\n cancel: false,\n path: getValue('path', data),\n parentFolder: getValue('data', data)\n };\n parent.trigger('beforeFolderCreate', createEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n if (!isFileExists(parent.fileSystemData, args.folderName)) {\n const data = args.parentFolder[0];\n const newObject = createNewItem(data, data, args.folderName, false);\n parent.fileSystemData.push(newObject);\n }\n else {\n const message = 'A file or folder with the name ' + args.folderName + ' already exists.';\n createErrorObject(parent, message, '400', null);\n }\n }\n });\n}\n/**\n * Function to trigger delete operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerDeleteOperation(parent, data, eventArgs) {\n const deleteEventArgs = {\n cancel: false,\n itemData: getValue('data', data),\n path: getValue('path', data)\n };\n parent.trigger('beforeDelete', deleteEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n args.itemData.forEach((itemData) => {\n const index = findIndexById(parent, itemData.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n if (!itemData.isFile) {\n const subItems = parent.fileSystemData.filter(function (obj) { return obj.filterPath.includes(itemData.name); });\n subItems.forEach((subItem) => {\n const index = findIndexById(parent, subItem.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n });\n }\n });\n }\n });\n}\n/**\n * Function to trigger rename operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerRenameOperation(parent, data, eventArgs) {\n const renameEventArgs = {\n cancel: false,\n newName: getValue('newName', data),\n itemData: getValue('data', data),\n path: getValue('path', data)\n };\n parent.trigger('beforeRename', renameEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n if (!isFileExists(parent.fileSystemData, args.newName)) {\n const fileData = filterById(parent, args.itemData[0].id);\n fileData.name = args.newName;\n }\n else {\n const message = 'Cannot rename' + args.itemData[0].name + 'to' + args.newName + ': destination already exists.';\n createErrorObject(parent, message, '400', null);\n }\n }\n });\n}\n/**\n * Function to trigger move or copy operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerMoveOrCopyOperation(parent, data, eventArgs) {\n const moveEventArgs = {\n cancel: false,\n itemData: getValue('data', data),\n isCopy: getValue('action', data) === 'copy' ? true : false,\n path: getValue('path', data),\n targetData: getValue('targetData', data),\n targetPath: getValue('targetPath', data)\n };\n parent.trigger('beforeMove', moveEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n const message = 'File Already Exists';\n const action = getValue('action', data);\n const itemPermission = getAccessDetails(parent, args.itemData, action, false);\n const pathPermission = getAccessDetails(parent, [args.targetData], action, true);\n const file = [];\n parent.pasteNodes = [];\n if (itemPermission === '' && pathPermission === '') {\n if (args.isCopy) {\n const folderSubItems = filterByParent(parent, args.targetData.id);\n const copiedFolders = args.itemData;\n copiedFolders.forEach((itemData) => {\n if (!isFileExists(folderSubItems, itemData.name) || getValue('renameFiles', data).length > 0) {\n if (getValue('renameFiles', data).length > 0) {\n const names = itemData.name.split('.');\n const name = itemData.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n copyFolderItems(parent, itemData, args.targetData, name);\n parent.responseData.error = null;\n parent.existingFileCount++;\n return;\n }\n copyFolderItems(parent, itemData, args.targetData, null);\n }\n else {\n file.push(itemData.name);\n }\n });\n if (file.length > 0) {\n createErrorObject(parent, message, '400', file);\n }\n return;\n }\n let target = args.targetData;\n const getTargetFiles = filterByParent(parent, target.id);\n for (let i = 0; i < args.itemData.length; i++) {\n const currItem = args.itemData[i];\n if (!isFileExists(getTargetFiles, currItem.name) || getValue('renameFiles', data).length > 0) {\n if (!target.hasChild) {\n target.hasChild = !currItem.isFile;\n }\n if (!currItem.isFile) {\n //Check whether the source folder include other sub folders or not.\n const subItems = currItem.parentId !== 0\n ? filterByParent(parent, currItem.parentID) : [];\n const itemData = filterById(parent, currItem.parentId);\n itemData.hasChild = subItems.length > 1 ? true : false;\n }\n const fileData = filterById(parent, currItem.id);\n if (getValue('renameFiles', data).length > 0) {\n const names = currItem.name.split('.');\n currItem.name = currItem.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n fileData.name = currItem.name;\n parent.responseData.error = null;\n parent.existingFileCount++;\n parent.dropData = target;\n parent.dropPath = args.path;\n const pathArray = args.targetPath.replace(/^\\/|\\/$/g, '').split('/');\n target = filterById(parent, pathArray[pathArray.length - 1]);\n }\n fileData.parentId = target.id;\n fileData.filterPath = target.id === 0 ? '\\\\' : target.filterPath + target.name + '\\\\';\n }\n else {\n file.push(currItem.name);\n }\n }\n if (file.length > 0) {\n createErrorObject(parent, message, '400', file);\n }\n }\n }\n });\n}\n/**\n * Function to trigger search operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerSearchOperation(parent, data, eventArgs) {\n const searchEventArgs = {\n searchResults: getValue('data', data),\n cancel: false,\n path: getValue('path', data),\n searchText: getValue('searchString', data),\n caseSensitive: getValue('caseSensitive', data),\n showHiddenItems: getValue('showHiddenItems', data)\n };\n parent.trigger('search', searchEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n }\n });\n}\n/**\n * Function to trigger client side events.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerClientEvents(parent, data, eventArgs) {\n switch (getValue('action', data)) {\n case 'create': {\n triggerFolderCreation(parent, data, eventArgs);\n break;\n }\n case 'delete': {\n triggerDeleteOperation(parent, data, eventArgs);\n break;\n }\n case 'rename': {\n triggerRenameOperation(parent, data, eventArgs);\n break;\n }\n case 'move':\n case 'copy': {\n triggerMoveOrCopyOperation(parent, data, eventArgs);\n break;\n }\n case 'search': {\n triggerSearchOperation(parent, data, eventArgs);\n break;\n }\n }\n}\n/**\n * Creates an AJAX request for the file manager.\n *\n * @param {IFileManager} parent - The parent file manager instance.\n * @param {Object} data - The data object for the AJAX request.\n * @param {Function} fn - The callback function to be executed after the AJAX request.\n * @param {string} [event] - The event type for the AJAX request.\n * @param {string} [operation] - The operation type for the AJAX request.\n * @param {string} [targetPath] - The target path for the AJAX request.\n * @returns {void}\n * @private\n */\nfunction createAjax(parent, data, fn, event, operation, targetPath) {\n const 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 const eventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };\n triggerClientEvents(parent, data, eventArgs);\n parent.trigger('beforeSend', eventArgs, (beforeSendArgs) => {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\n if (isFileSystemData(parent)) {\n const filePath = event === 'node-expand' || event === 'finalize-end' ? getValue('path', data) : parent.path;\n const pathArray = filePath.replace(/^\\/|\\/$/g, '').split('/');\n const idValue = event === 'rename-end-parent' || (event === 'path-changed' && getValue('data', data).length !== 0)\n || (event === 'paste-end' && (parent.targetModule === 'largeiconsview' || parent.targetModule === 'detailsview'))\n ? getValue('data', data)[0].id : pathArray[pathArray.length - 1];\n const action = getValue('action', data);\n const isFileOperation = (action === 'move' || action === 'rename' || action === 'copy' || action === 'delete' || action === 'search') && event !== 'rename-end';\n if (action === 'read' || action === 'create' || event === 'rename-end') {\n parent.responseData = {\n cwd: filterById(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? 0 : idValue),\n details: null,\n error: null,\n files: filterByParent(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? 0 : idValue)\n };\n if (isNOU(parent.responseData.cwd)) {\n const message = 'Cannot load empty data within the File Manager.';\n createErrorObject(parent, message, '400', null);\n }\n }\n else if (isFileOperation && parent.responseData.error === null) {\n let itemData = action === 'search' || action === 'delete' ? getValue('data', data) : [];\n if (itemData.length === 0) {\n itemData = getValue('data', data).map((item) => filterById(parent, item.id));\n }\n parent.responseData = {\n cwd: null,\n details: null,\n error: null,\n files: itemData\n };\n }\n else if (getValue('action', data) === 'details') {\n const itemData = getValue('data', data);\n const details = itemData[0];\n const isMultipleFiles = itemData.length > 1;\n const itemNames = itemData.map((item) => item.name);\n const totalSize = isMultipleFiles ? getSize(itemData.reduce((accumulator, currentObject) => accumulator + (currentObject.size || 0), 0)) : getSize(details.size);\n const path = (parent.pathNames.includes(details.name) ? parent.pathNames.join('/') : parent.pathNames.join('/') + '/' + details.name);\n parent.responseData.details = Object.assign({\n location: isMultipleFiles ? null : path,\n multipleFiles: isMultipleFiles,\n name: itemNames.join(', '),\n size: totalSize\n }, isMultipleFiles ? {} : {\n created: details.dateCreated,\n isFile: details.isFile,\n modified: details.dateModified,\n permission: details.permission\n });\n }\n performReadOperation(parent, parent.responseData, fn, data, event, operation, targetPath, beforeSendArgs);\n return;\n }\n const 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: (result) => {\n if (isNOU(result)) {\n const result = {\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, event, operation, targetPath);\n return;\n }\n if (typeof (result) === 'string') {\n result = JSON.parse(result);\n }\n performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs);\n },\n onFailure: () => {\n const 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 to get file size.\n *\n * @param {number} size - specifies the size.\n * @returns {string} - returns the size.\n * @private\n */\nfunction getSize(size) {\n let hz;\n if (size < 1024) {\n hz = size + ' B';\n }\n else if (size < 1024 * 1024) {\n hz = (size / 1024).toFixed(2) + ' KB';\n }\n else if (size < 1024 * 1024 * 1024) {\n hz = (size / 1024 / 1024).toFixed(2) + ' MB';\n }\n else {\n hz = (size / 1024 / 1024 / 1024).toFixed(2) + ' GB';\n }\n return hz;\n}\n/**\n * Function to perform read operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {Function} fn - specifies the function.\n * @param {Object} data - specifies the data.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs) {\n parent.notify(events.afterRequest, { action: 'success' });\n const 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 const 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 const intl = new Internationalization(parent.locale);\n if (!isNOU(result.files)) {\n setDateObject(result.files, intl, getDateFormat(parent));\n for (let i = 0, len = result.files.length; i < len; i++) {\n const item = result.files[i];\n setValue('_fm_iconClass', fileType(item), item);\n }\n if (getValue('action', data) === 'read' || isFileSystemData(parent) && getValue('action', data) === 'search') {\n setNodeId(result, id);\n setValue(id, result.files, parent.feFiles);\n }\n }\n if (!isNOU(result.details) && !isNOU(parent.rootAliasName)) {\n const rootName = parent.rootAliasName || getValue('name', result.details);\n let location = 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 = rootName;\n }\n else {\n location = location.replace(location.substring(0, location.indexOf('\\\\')), rootName);\n }\n }\n else {\n location = location.replace(location.substring(0, location.indexOf('\\\\')), rootName);\n }\n setValue('location', location, result.details);\n }\n fn(parent, result, event, operation, targetPath);\n if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end' || event === 'drop-path')) {\n parent.notify(events.searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function to copy operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} target - specifies the target.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction copyFolderItems(parent, data, target, itemName) {\n const newObject = createNewItem(data, target, itemName, true);\n parent.fileSystemData.push(newObject);\n parent.pasteNodes.push(newObject.id);\n const copiedItems = filterByParent(parent, data.id);\n for (let i = 0; i < copiedItems.length; i++) {\n copyFolderItems(parent, copiedItems[i], newObject, null);\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(parent, 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 const args = { action: 'read', result: result };\n parent.trigger('success', args);\n }\n else {\n if (result.error.code === '401') {\n result.files = [];\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n }\n onFailure(parent, result, 'read');\n parent.setProperties({ path: parent.oldPath }, true);\n parent.pathNames.pop();\n }\n if (parent.isDragDrop && parent.isDropEnd) {\n if (parent.droppedObjects.length !== 0) {\n const 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 const 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 = isFileSystemData(parent) ? result.files[result.files.length - 1] : result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\n const createEventArgs = {\n folderName: itemName,\n path: parent.path,\n parentFolder: parent.itemData\n };\n parent.trigger('folderCreate', createEventArgs);\n const 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 const ele = select('#newname', parent.dialogObj.element);\n const error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n else {\n const result = {\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);\n }\n const 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 * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result) {\n if (!isNOU(result.files)) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n const args = { action: 'rename', result: result };\n parent.trigger('success', args);\n parent.renamedItem = Array.isArray(result.files) ? result.files[0] : result.files;\n const renameEventArgs = {\n newName: parent.renamedItem.name,\n itemData: parent.renamedItem,\n path: parent.path\n };\n parent.trigger('rename', renameEventArgs);\n if (parent.activeModule === 'navigationpane') {\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n read(parent, events.renameEndParent, getValue('filterPath', parent.renamedItem).replace(/\\\\/g, '/'));\n parent.itemData[0] = parent.renamedItem;\n if (getValue('filterPath', parent.renamedItem) === getValue('filterPath', parent.itemData[0]) && parent.pathNames.length > 1) {\n parent.pathNames[parent.pathNames.length - 1] = parent.renameText;\n }\n read(parent, events.pathChanged, parent.path === '/' ? parent.path : getValue('filterPath', parent.renamedItem).replace(/\\\\/g, '/') + parent.renamedItem.name + '/');\n parent.renamedItem = null;\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 const ele = select('#rename', parent.dialogObj.element);\n let error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '\"' + parent.currentItemText + '\"');\n error = error.replace('{1}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n const 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 const moveorcopyEventArgs = {\n itemData: result.files,\n isCopy: operation === 'copy' ? true : false,\n path: path,\n targetData: parent.itemData[0],\n targetPath: parent.path\n };\n parent.trigger('move', moveorcopyEventArgs);\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 const deleteEventArgs = {\n itemData: result.files,\n path: path\n };\n parent.trigger('delete', deleteEventArgs);\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 const 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 const 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 const 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(parent, event, path, searchString, showHiddenItems, caseSensitive) {\n const 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 const 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 const downloadUrl = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;\n const data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n const ajaxSettings = {\n url: downloadUrl,\n type: 'POST',\n contentType: 'application/json',\n responseType: 'blob',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n const eventArgs = { data: data, cancel: false, useFormPost: true, ajaxSettings: ajaxSettings };\n parent.trigger('beforeDownload', eventArgs, (downloadArgs) => {\n if (!downloadArgs.cancel) {\n if (downloadArgs.useFormPost) {\n const form = createElement('form', {\n id: parent.element.id + '_downloadForm',\n attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }\n });\n const 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 else {\n let contentDisposition;\n let fileName;\n const fetch = new Fetch({\n url: getValue('url', downloadArgs.ajaxSettings),\n type: getValue('type', downloadArgs.ajaxSettings),\n contentType: getValue('contentType', downloadArgs.ajaxSettings),\n responseType: getValue('responseType', downloadArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', downloadArgs.ajaxSettings),\n onLoad: (e) => {\n contentDisposition = e.headers.get('Content-Disposition');\n if (contentDisposition) {\n const filenameMatch = contentDisposition.match(/filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/);\n const extractedFilename = filenameMatch && filenameMatch[1];\n fileName = extractedFilename ? extractedFilename.replace(/['\"]/g, '') : fileName;\n }\n else {\n fileName = parent.itemData.length > 1 ? 'files.zip' : getValue('isFile', parent.itemData[0]) ? getValue('name', parent.itemData[0]) : getValue('name', parent.itemData[0]) + '.zip';\n }\n },\n onSuccess: (e) => {\n parent.trigger('success', downloadArgs);\n const blob = e;\n const blobUrl = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = blobUrl;\n link.download = fileName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n },\n onFailure: (e) => {\n const result = {\n error: {\n code: e.status.toString(),\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.downloadUrl\n }\n };\n createDialog(parent, 'Error', result);\n parent.trigger('failure', downloadArgs);\n }\n });\n fetch.send(JSON.stringify(downloadArgs.data));\n }\n }\n });\n}\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { select, isNullOrUndefined as isNOU, createElement, Internationalization } from '@syncfusion/ej2-base';\nimport { getValue, remove, selectAll } from '@syncfusion/ej2-base';\nimport { createFolder } from '../common/operations';\nimport * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { paste, rename } from '../common/operations';\nimport { getLocaleText, getDuplicateData, objectToString, getCssClass } from '../common/utility';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the type of event args.\n * @param {FileDetails} details - specifies the file details.\n * @returns {void}\n * @private\n */\nexport function createDialog(parent, text, e, details) {\n const options = getOptions(parent, text, e, details);\n if (isNOU(parent.dialogObj)) {\n parent.dialogObj = new Dialog({\n beforeOpen: keydownAction.bind(this, parent, options.dialogName),\n beforeClose: (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 const 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: (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 = (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 const eventArgs = {\n cancel: args.cancel, popupName: dialogName, popupModule: dlgModule\n };\n parent.trigger('beforePopupOpen', eventArgs, (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 const eventArgs = {\n cancel: args.cancel, popupModule: dlgModule, popupName: dialogName\n };\n parent.trigger('beforePopupClose', eventArgs, (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 const 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 const args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupClose', args);\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {DialogOptions} - returns the dialog options.\n * @private\n */\nfunction getExtOptions(parent, text, replaceItems, newPath) {\n const options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n let duplicateContent;\n let item;\n let index;\n options.open = () => { triggerPopupOpen(parent, parent.extDialogObj, options.dialogName); };\n options.close = () => { 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: () => {\n parent.extDialogObj.hide();\n rename(parent, newPath, parent.renameText);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: () => {\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 = () => {\n if (!parent.isDropEnd && parent.duplicateItems.length === 0) {\n const 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: () => {\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 let item = parent.replaceItems[parent.fileLength];\n const indexval = item.lastIndexOf('/');\n item = indexval === -1 ? item : item.substring(indexval);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n const targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n const path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n const 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: () => {\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n let item = parent.replaceItems[parent.fileLength];\n const ind = item.lastIndexOf('/');\n item = ind === -1 ? item : item.substring(ind);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n if (parent.duplicateItems.length !== 0) {\n const action = parent.isDragDrop ? 'move' : parent.fileAction;\n const targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n const 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 = () => {\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: () => {\n retryDlgUpdate(parent, true);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Replace') },\n click: () => {\n retryDlgUpdate(parent, false);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Skip') },\n click: () => {\n let 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 let flag = true;\n if (parent.isRetryOpened) {\n parent.isRetryOpened = false;\n }\n else {\n flag = false;\n }\n const ele = select('.e-dlg-checkbox', parent.extDialogObj.element);\n if (ele) {\n remove(ele);\n }\n if (flag) {\n parent.extDialogObj.hide();\n }\n else {\n parent.retryFiles = [];\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {object} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nfunction onRetryOpen(parent, args) {\n parent.isRetryOpened = true;\n const dialogEle = getValue('element', args);\n const container = select('.e-dlg-content', dialogEle);\n const checkContainer = parent.createElement('div', {\n className: 'e-dlg-checkbox'\n });\n const checkbox = parent.createElement('input', {\n id: parent.element.id + '_applyall'\n });\n checkContainer.appendChild(checkbox);\n container.appendChild(checkContainer);\n const checkBoxObj = new CheckBox({\n label: getLocaleText(parent, 'ApplyAll-Label'),\n change: (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 const ele = select('#newname', parent.dialogObj.element);\n ele.focus();\n ele.value = '';\n const 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 const 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 = () => {\n onValidate(parent, ele);\n };\n ele.onkeyup = (e) => {\n const 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 const 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 = () => {\n onValidate(parent, inputEle);\n };\n inputEle.onkeyup = (e) => {\n const 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 let txt = '';\n if (parent.isFile && !parent.showFileExtension) {\n const index = parent.currentItemText.lastIndexOf('.');\n txt = (index === -1) ? parent.currentItemText : parent.currentItemText.substring(0, index);\n }\n else {\n txt = parent.currentItemText;\n }\n inputEle.value = txt;\n if (parent.isFile && parent.showFileExtension && (inputEle.value.indexOf('.') !== -1)) {\n inputEle.setSelectionRange(0, inputEle.value.lastIndexOf('.'));\n }\n else {\n inputEle.setSelectionRange(0, inputEle.value.length);\n }\n}\n/**\n *\n * @param {HTMLInputElement} ele - specifies the element.\n * @param {string} placeholder - specifies the place holder.\n * @returns {void}\n * @private\n */\nfunction createInput(ele, placeholder) {\n Input.createInput({\n element: ele,\n properties: {\n placeholder: placeholder\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the event arguements.\n * @param {FileDetails} details - specifies the file details.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details) {\n const options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n let permission;\n let formattedString;\n let intl;\n let strArr;\n let fileType;\n let location;\n options.open = () => { triggerPopupOpen(parent, parent.dialogObj, options.dialogName); };\n options.close = () => { triggerPopupClose(parent, parent.dialogObj, options.dialogName); };\n text = (details && details.multipleFiles === true) ? 'MultipleFileDetails' : text;\n let index;\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: (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: () => {\n onDeleteSubmit(parent);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: () => {\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: (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: () => {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n options.dialogName = 'File Details';\n strArr = parent.itemData.map((val) => {\n index = val.name.indexOf('.') + 1;\n return (index === 0 && (!val.isFile)) ? 'Folder' : ((index !== 0) ? val.name.substr(index).replace(' ', '') : 'undetermined');\n });\n if (strArr[0] === undefined) {\n strArr = details.name.split(',').map((val) => {\n index = val.indexOf('.') + 1;\n return (index === 0) ? 'Folder' : val.substr(index).replace(' ', '');\n });\n }\n fileType = strArr.every((val, i, arr) => 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: (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: () => {\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 const 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 const 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 for (let btnCount = 0; btnCount < btnElement.length; btnCount++) {\n btnElement[btnCount].onkeydown = (e) => {\n if (e.keyCode === 13) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = (e) => {\n if (e.keyCode === 13) {\n btnElement[btnCount].click();\n }\n };\n }\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 = (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 const 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 const ele = select('#rename', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n let text = ele.value;\n const oIndex = parent.currentItemText.lastIndexOf('.');\n if (parent.isFile && !parent.showFileExtension) {\n const 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 const newPath = (parent.activeModule === 'navigationpane') ? getValue('filterPath', parent.itemData[0]).replace(/\\\\/g, '/') : parent.path;\n parent.renamedId = getValue('id', parent.itemData[0]);\n if (parent.isFile) {\n const oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n const nIndex = text.lastIndexOf('.');\n const 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 const len = ele.value.length - 1;\n if (ele.value !== '' && ((ele.value.lastIndexOf('.') === len) || (ele.value.lastIndexOf(' ') === len)) &&\n (parent.showFileExtension || (ele.value.lastIndexOf('.') === -1 || ele.value.substring(ele.value.indexOf('.') + 1).length === 0))) {\n addInvalid(parent, ele);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction addInvalid(parent, ele) {\n const 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 let 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 const content = createElement('div', { className: 'e-image-wrap' });\n const 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: () => { triggerPopupClose(parent, parent.viewerObj, 'Image Preview'); },\n beforeOpen: (args) => {\n triggerPopupBeforeOpen(parent, parent.viewerObj, args, 'Image Preview');\n },\n beforeClose: (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(() => {\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 const content = select('.e-dlg-content', parent.viewerObj.element);\n const imgWrap = select('.e-image-wrap', parent.viewerObj.element);\n const cssObj = window.getComputedStyle(content, null);\n const paddingWidth = cssObj ? (2 * parseFloat(cssObj.paddingRight)) : 36;\n const 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","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, DataUtil } 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 */\nexport class LargeIconsView {\n /**\n * Constructor for the LargeIcons module.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n constructor(parent) {\n this.isInteraction = true;\n this.uploadOperation = false;\n this.count = 0;\n this.isRendered = true;\n this.tapCount = 0;\n this.isSelectAllCalled = false;\n this.isPasteOperation = false;\n this.isInteracted = true;\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n addClass([this.element], CLS.LARGE_ICONS);\n this.addEventListener();\n this.keyConfigs = {\n end: 'end',\n home: 'home',\n tab: 'tab',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n ctrlUp: 'ctrl+uparrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftLeft: 'shift+leftarrow',\n shiftRight: 'shift+rightarrow',\n shiftUp: 'shift+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csLeft: 'ctrl+shift+leftarrow',\n csRight: 'ctrl+shift+rightarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n f2: 'f2',\n shiftdel: 'shift+delete',\n back: 'backspace',\n ctrlD: 'ctrl+d'\n };\n }\n render(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 const iconsView = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n const 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 if (this.parent.sortComparer && this.parent.sortBy !== 'None') {\n this.items = this.allItems = DataUtil.sort(this.items, this.parent.sortBy, this.comparer.bind(this));\n }\n else {\n this.items = this.allItems = getSortedData(this.parent, this.items);\n }\n iconsView.classList.remove(CLS.DISPLAY_NONE);\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n if (!this.element.style.height) {\n this.adjustHeight();\n }\n this.parent.virtualizationModule.setUIVirtualization();\n }\n this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.listElements));\n this.element.appendChild(this.listElements);\n this.listElements.setAttribute('aria-label', 'listbox');\n this.preventImgDrag();\n this.createDragObj();\n if (this.itemList.length === 0) {\n const 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 const activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.parent.activeModule = 'largeiconsview';\n }\n for (let i = 0; i < activeEle.length; i++) {\n activeEle[i].setAttribute('aria-selected', 'true');\n }\n this.adjustHeight();\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n this.parent.virtualizationModule.setUlElementHeight();\n this.parent.virtualizationModule.wireScrollEvent(false);\n }\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\n }\n comparer(x, y) {\n if (this.parent.sortOrder === 'Descending') {\n const z = x;\n x = y;\n y = z;\n }\n return this.parent.sortComparer(x, y);\n }\n preventImgDrag() {\n let i = 0;\n while (i < this.itemList.length) {\n if (this.itemList[i].querySelector('img')) {\n /* istanbul ignore next */\n this.itemList[i].ondragstart = () => { return false; };\n }\n i++;\n }\n }\n createDragObj() {\n if (this.listObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.listElements, {\n enableTailMode: true,\n distance: 5,\n enableAutoScroll: false,\n dragTarget: '.' + CLS.LARGE_ICON,\n helper: this.dragHelper.bind(this),\n cursorAt: this.parent.dragCursorPosition,\n dragArea: this.parent.element,\n dragStop: dragStopHandler.bind(this, this.parent),\n drag: draggingHandler.bind(this, this.parent),\n clone: true,\n dragStart: (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 dragHelper(args) {\n const dragTarget = args.sender.target;\n const 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 const activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n for (let i = 0; i < activeEle.length; i++) {\n this.parent.dragData.push(this.getItemObject(activeEle[parseInt(i.toString(), 10)]));\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 onDropInit(args) {\n if (this.parent.targetModule === this.getModuleName()) {\n const dropLi = closest(args.target, '.e-list-item');\n const cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n const 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 getModuleName() {\n return 'largeiconsview';\n }\n adjustHeight() {\n const pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n const bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n this.element.style.height = (pane.offsetHeight - bar.offsetHeight) + 'px';\n }\n onItemCreated(args) {\n args.item.removeAttribute('aria-level');\n if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {\n const textEle = args.item.querySelector('.' + CLS.LIST_TEXT);\n const txt = getValue('name', args.curData);\n const type = getValue('type', args.curData);\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\n this.renderCheckbox(args);\n const eventArgs = {\n element: args.item,\n fileDetails: args.curData,\n module: 'LargeIconsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n }\n renderCheckbox(args) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n const checkElement = createCheckBox(createElement, false, {\n checked: false,\n cssClass: 'e-small'\n });\n checkElement.setAttribute('role', 'checkbox');\n checkElement.setAttribute('aria-checked', 'false');\n checkElement.setAttribute('aria-label', 'checkbox');\n args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);\n }\n onLayoutChange(args) {\n if (this.parent.view === 'LargeIcons') {\n this.destroy();\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.render(args);\n /* istanbul ignore next */\n if (getValue('name', args) === 'layout-change' && this.parent.fileAction === 'move' &&\n this.parent.isCut && this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n const indexes = this.getIndexes(this.parent.selectedNodes);\n let length = 0;\n while (length < indexes.length) {\n addBlur(this.itemList[indexes[length]]);\n length++;\n }\n }\n const 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 checkItem() {\n const checkEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (checkEle) {\n let checkLength = 0;\n while (checkLength < checkEle.length) {\n this.checkState(checkEle[checkLength], true);\n checkLength++;\n }\n }\n }\n renderList(args) {\n let i = 0;\n const items = JSON.parse(JSON.stringify(args.files));\n while (i < items.length) {\n const icon = fileType(items[i]);\n const name = getValue('name', items[i]);\n const selected = getItemName(this.parent, items[i]);\n let 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 const imgUrl = getImageUrl(this.parent, items[i]);\n setValue('_fm_imageUrl', imgUrl, items[i]);\n setValue('_fm_imageAttr', { alt: name }, items[i]);\n }\n else {\n setValue('_fm_icon', icon, items[i]);\n }\n setValue('_fm_htmlAttr', { class: className, title: name }, items[i]);\n i++;\n }\n return items;\n }\n onFinalizeEnd(args) {\n this.render(args);\n }\n onCreateEnd(args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.clearSelect();\n this.selectItems([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n this.parent.largeiconsviewModule.element.focus();\n this.parent.activeModule = 'largeiconsview';\n }\n onSelectedData() {\n if (this.parent.activeModule === 'largeiconsview') {\n this.updateSelectedData();\n }\n }\n onDeleteInit() {\n if (this.parent.activeModule === 'largeiconsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n }\n /* istanbul ignore next */\n onDeleteEnd(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 onRefreshEnd(args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n }\n onRenameInit() {\n if (this.parent.activeModule === 'largeiconsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n }\n onPathChanged(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 }\n }\n }\n onOpenInit(args) {\n if (this.parent.activeModule === 'largeiconsview') {\n this.doOpenAction(args.target);\n }\n }\n onHideLayout() {\n if (this.parent.view !== 'LargeIcons' && this.element) {\n this.element.classList.add(CLS.DISPLAY_NONE);\n }\n }\n onSelectAllInit() {\n if (this.parent.view === 'LargeIcons') {\n this.startItem = this.getFirstItem();\n const lastItem = this.getLastItem();\n const eveArgs = { ctrlKey: true, shiftKey: true };\n this.doSelection(lastItem, eveArgs);\n this.isInteraction = true;\n this.isInteracted = true;\n }\n }\n onClearAllInit() {\n if (this.parent.view === 'LargeIcons') {\n this.clearSelection();\n this.isInteraction = true;\n this.isInteracted = true;\n }\n }\n onBeforeRequest() {\n this.isRendered = false;\n }\n onAfterRequest() {\n this.isRendered = true;\n }\n /* istanbul ignore next */\n onSearch(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 onLayoutRefresh() {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.adjustHeight();\n }\n onUpdateSelectionData() {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.updateSelectedData();\n }\n onPathColumn() {\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 removeEventListener() {\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 addEventListener() {\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 onActionFailure() { this.isInteraction = true; this.isInteracted = true; }\n onMenuItemData(args) {\n if (this.parent.activeModule === this.getModuleName()) {\n const ele = closest(args.target, 'li');\n this.parent.itemData = [this.getItemObject(ele)];\n }\n }\n onDetailsInit() {\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 onpasteInit() {\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 oncutCopyInit() {\n if (this.parent.activeModule === this.getModuleName()) {\n const activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeRecords = [];\n this.parent.activeElements = [];\n for (let 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 onpasteEnd(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 onDropPath(args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n }\n onPropertyChanged(e) {\n let currentSelected;\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (const prop of Object.keys(e.newProp)) {\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 destroy() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.listObj) {\n this.unWireEvents();\n }\n this.startItem = null;\n this.listElements = null;\n }\n wireEvents() {\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 unWireEvents() {\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 onMouseOver(e) {\n const 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 wireClickEvent(toBind) {\n if (toBind) {\n this.clickObj = new Touch(this.element, {\n tap: (eve) => {\n eve.originalEvent.preventDefault();\n if (this.parent.isDevice) {\n this.tapCount = eve.tapCount;\n this.tapEvent = eve;\n setTimeout(() => {\n if (this.tapCount > 0) {\n this.doTapAction(this.tapEvent);\n }\n this.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n this.dblClickHandler(eve);\n }\n else {\n this.clickHandler(eve);\n }\n }\n },\n tapHold: (e) => {\n if (this.parent.isDevice) {\n this.multiSelect = this.parent.allowMultiSelection ? true : false;\n if (this.parent.allowMultiSelection) {\n addClass([this.parent.element], CLS.MULTI_SELECT);\n }\n this.clickHandler(e);\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n }\n doTapAction(eve) {\n const target = eve.originalEvent.target;\n const 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 clickHandler(e) {\n const 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 doSelection(target, e) {\n const item = closest(target, '.' + CLS.LIST_ITEM);\n const cList = target.classList;\n this.parent.isFile = false;\n let action = 'select';\n if (e.which === 3 && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {\n this.addActive(item);\n this.updateType(item);\n return;\n }\n else if (!isNOU(item)) {\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)\n && (e.ctrlKey || target.classList.contains(CLS.CHECK))) {\n action = 'unselect';\n }\n if (e.ctrlKey && e.shiftKey) {\n this.isSelectAllCalled = true;\n }\n const 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 const startIndex = this.itemList.indexOf(this.startItem);\n const endIndex = this.itemList.indexOf(item);\n if (startIndex > endIndex) {\n for (let i = startIndex; i >= endIndex; i--) {\n this.addActive(this.itemList[i]);\n }\n }\n else {\n for (let i = startIndex; i <= endIndex; i++) {\n this.addActive(this.itemList[i]);\n }\n }\n this.addFocus(this.itemList[endIndex]);\n }\n else {\n this.startItem = item;\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)) {\n this.removeActive(item);\n }\n else {\n this.addActive(item);\n }\n this.addFocus(item);\n }\n if (this.parent.selectedItems.length === 0) {\n this.resetMultiSelect();\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect(action, item);\n }\n }\n else {\n if (this.parent.selectedItems.length === this.itemList.length) {\n this.isSelectAllCalled = true;\n }\n this.clearSelection();\n }\n if (!isNOU(item)) {\n this.isSelectAllCalled = false;\n this.updateType(item);\n }\n }\n dblClickHandler(e) {\n this.parent.activeModule = 'largeiconsview';\n const target = e.originalEvent.target;\n this.doOpenAction(target);\n }\n clearSelection() {\n this.clearSelect();\n this.resetMultiSelect();\n this.parent.notify(events.selectionChanged, {});\n }\n resetMultiSelect() {\n this.multiSelect = false;\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n }\n doOpenAction(target) {\n if (isNOU(target)) {\n return;\n }\n const item = closest(target, '.' + CLS.LIST_ITEM);\n this.parent.isFile = false;\n if (!isNOU(item)) {\n this.updateType(item);\n const details = this.getItemObject(item);\n if (!hasReadAccess(details)) {\n createDeniedDialog(this.parent, details, events.permissionRead);\n return;\n }\n const eventArgs = { cancel: false, fileDetails: details, module: 'LargeIconsView' };\n this.parent.trigger('fileOpen', eventArgs, (fileOpenArgs) => {\n if (!fileOpenArgs.cancel) {\n const text = getValue('name', details);\n if (!this.parent.isFile) {\n const val = this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !this.parent.isFiltered) {\n const id = getValue('id', details);\n this.parent.oldPath = this.parent.path;\n const 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));\n this.parent.itemData = [details];\n openAction(this.parent);\n }\n else {\n openSearchFolder(this.parent, details);\n }\n this.parent.isFiltered = false;\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n else {\n const icon = fileType(details);\n if (icon === CLS.ICON_IMAGE) {\n const imgUrl = getImageUrl(this.parent, details);\n createImageDialog(this.parent, text, imgUrl);\n }\n }\n }\n });\n }\n }\n updateType(item) {\n const folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n }\n /* istanbul ignore next */\n keydownActionHandler(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 keyActionHandler(e) {\n if (!this.isRendered) {\n return;\n }\n const fItem = this.getFocusedItem();\n const firstItem = this.getFirstItem();\n const lastItem = this.getLastItem();\n switch (e.action) {\n case 'end':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTo(0, this.element.firstElementChild.scrollHeight);\n setTimeout(() => {\n this.navigateItem(this.itemList[this.itemList.length - 1]);\n }, 10);\n }\n else {\n this.navigateItem(lastItem);\n }\n break;\n case 'home':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTop = 0;\n setTimeout(() => {\n this.navigateItem(this.itemList[0]);\n }, 10);\n }\n else {\n this.navigateItem(firstItem);\n }\n break;\n case 'tab':\n if (!isNOU(fItem)) {\n this.addFocus(fItem);\n }\n else if (!isNOU(firstItem)) {\n this.addFocus(firstItem);\n }\n break;\n case 'moveDown':\n this.navigateDown(fItem, true);\n break;\n case 'moveLeft':\n this.navigateRight(fItem, false);\n break;\n case 'moveRight':\n this.navigateRight(fItem, true);\n break;\n case 'moveUp':\n this.navigateDown(fItem, false);\n break;\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n this.csEndKey(lastItem, e);\n break;\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n this.csHomeKey(firstItem, e);\n break;\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n this.csDownKey(fItem, e);\n break;\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n this.csLeftKey(fItem, e);\n break;\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n this.csRightKey(fItem, e);\n break;\n case 'ctrlUp':\n case 'shiftUp':\n case 'csUp':\n this.csUpKey(fItem, e);\n break;\n case 'space':\n this.spaceKey(fItem);\n break;\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n if (!isNOU(fItem)) {\n this.doSelection(fItem, e);\n }\n break;\n case 'ctrlA':\n this.ctrlAKey(firstItem, lastItem);\n break;\n case 'enter':\n this.doOpenAction(this.parent.visitedItem ? this.parent.visitedItem : this.getVisitedItem());\n break;\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n }\n }\n doDownload() {\n this.updateSelectedData();\n doDownload(this.parent);\n }\n performDelete() {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.updateSelectedData();\n const data = this.parent.itemData;\n for (let 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 performRename() {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n }\n updateRenameData() {\n const item = select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n const data = this.getItemObject(item);\n updateRenamingData(this.parent, data);\n }\n getVisitedItem() {\n const item = this.parent.selectedItems[this.parent.selectedItems.length - 1];\n const indexes = this.getIndexes([item], this.parent.hasId);\n return this.itemList[indexes[0]];\n }\n getFocusedItem() {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.FOCUS, this.element);\n }\n getActiveItem() {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n }\n getFirstItem() {\n return this.itemList[0];\n }\n getLastItem() {\n return this.itemList[this.itemList.length - 1];\n }\n navigateItem(item) {\n this.setFocus(item);\n }\n navigateDown(fItem, isTowards) {\n const nItem = this.getNextItem(fItem, isTowards, this.perRow);\n this.setFocus(nItem);\n }\n navigateRight(fItem, isTowards) {\n const nItem = this.getNextItem(fItem, isTowards);\n this.setFocus(nItem);\n }\n getNextItem(li, isTowards, perRow) {\n if (isNOU(li)) {\n return this.getFocusedItem() || this.getActiveItem() || this.getFirstItem();\n }\n let index = this.itemList.indexOf(li);\n let nextItem;\n do {\n if (isTowards) {\n index = perRow ? index + perRow : index + 1;\n }\n else {\n index = perRow ? index - perRow : index - 1;\n }\n nextItem = this.itemList[index];\n if (this.parent.enableVirtualization && isNOU(nextItem)) {\n const marginValue = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-bottom'), 10);\n const scrollHeight = this.itemList[0].getBoundingClientRect().height + marginValue;\n this.element.firstElementChild.scrollTo(this.element.firstElementChild.scrollTop, this.element.firstElementChild.scrollTop + scrollHeight);\n }\n if (isNOU(nextItem)) {\n return li;\n }\n } while (!isVisible(nextItem));\n return nextItem;\n }\n setFocus(nextItem) {\n if (!isNOU(nextItem)) {\n const 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 spaceKey(fItem) {\n if (!isNOU(fItem) && !fItem.classList.contains(CLS.ACTIVE)) {\n const 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 ctrlAKey(firstItem, lastItem) {\n if (this.parent.allowMultiSelection && !isNOU(firstItem)) {\n this.startItem = firstItem;\n const eveArgs = { ctrlKey: true, shiftKey: true };\n const liParent = this.element.querySelector('.' + CLS.LIST_PARENT);\n const liScrPos = liParent.scrollTop;\n const getCurFocusedItem = this.getFocusedItem();\n this.doSelection(lastItem, eveArgs);\n liParent.scrollTop = liScrPos;\n if (!isNOU(getCurFocusedItem)) {\n this.addFocus(getCurFocusedItem);\n }\n }\n }\n csEndKey(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 csHomeKey(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 csDownKey(fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, true);\n }\n else {\n const 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 csLeftKey(fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, false);\n }\n else {\n const 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 csRightKey(fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, true);\n }\n else {\n const 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 csUpKey(fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, false);\n }\n else {\n const 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 addActive(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 removeActive(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 const 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 getDataName(item) {\n const data = this.getItemObject(item);\n return getItemName(this.parent, data);\n }\n addFocus(item) {\n this.element.setAttribute('tabindex', '-1');\n const 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 checkState(item, toCheck) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n const 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 clearSelect() {\n const eles = Array.prototype.slice.call(selectAll('.' + CLS.ACTIVE, this.listElements));\n let fileSelectionArgs;\n if (eles.length !== 0) {\n fileSelectionArgs = this.triggerSelection('unselect', eles[0]);\n if (fileSelectionArgs.cancel !== true) {\n for (let i = 0, len = eles.length; i < len; i++) {\n this.removeActive(eles[i]);\n }\n }\n this.triggerSelect('unselect', eles[0]);\n }\n }\n resizeHandler() {\n this.getItemCount();\n if (!isNOU(this.listObj)) {\n this.adjustHeight();\n }\n }\n splitterResizeHandler() {\n this.getItemCount();\n }\n getItemCount() {\n let perRow = 1;\n if (this.itemList) {\n for (let 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 triggerSelection(action, item) {\n const data = [];\n if (this.isSelectAllCalled) {\n for (let i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n }\n else {\n data[0] = this.getItemObject(item);\n }\n const eventArgs = { action: action, fileDetails: data.length > 1\n ? data : data[0], isInteracted: this.isInteraction, cancel: false, target: this.isSelectAllCalled ? null\n : item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n }\n triggerSelect(action, item) {\n const data = [];\n if (this.isSelectAllCalled) {\n for (let i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n this.isSelectAllCalled = false;\n }\n else {\n data[0] = this.getItemObject(item);\n }\n this.parent.visitedData = data.length > 1 ? data[data.length - 1] : data[0];\n const eventArgs = { action: action, fileDetails: data.length > 1\n ? data\n : data[0], isInteracted: this.isInteracted };\n this.parent.trigger('fileSelect', eventArgs);\n this.isInteracted = true;\n }\n selectItems(items) {\n const indexes = this.getIndexes(items, this.parent.hasId);\n for (let j = 0, len = indexes.length; j < len; j++) {\n const eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[indexes[j]], eveArgs);\n }\n }\n getIndexes(items, byId) {\n const indexes = [];\n const filter = byId ? 'id' : 'name';\n for (let 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 getItemObject(item) {\n const index = this.itemList.indexOf(item);\n return this.items[index];\n }\n addSelection(data) {\n let 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 const 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 const index = this.items.indexOf(resultData[0]);\n const eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[index], eveArgs);\n }\n }\n updateSelectedData() {\n const data = [];\n const items = selectAll('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n for (let i = 0; i < items.length; i++) {\n data[i] = this.getItemObject(items[i]);\n }\n this.parent.itemData = data;\n }\n onMethodCall(args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n const 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 getItemsIndex(items) {\n const indexes = [];\n const isFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n const filterName = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !isFilter) {\n for (let 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 (let i = 0, len = this.items.length; i < len; i++) {\n const name = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);\n if ((items.indexOf(name) !== -1) || (items.indexOf(getValue(filterName, this.items[i])) !== -1)) {\n indexes.push(i);\n }\n }\n }\n return indexes;\n }\n deleteFiles(ids) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n const indexes = this.getItemsIndex(ids);\n if (indexes.length === 0) {\n return;\n }\n const data = [];\n const newIds = [];\n for (let 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 downloadFiles(ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n const index = this.getItemsIndex(ids);\n if (index.length === 0) {\n return;\n }\n const data = [];\n const newIds = [];\n for (let 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 openFile(id) {\n if (isNOU(id)) {\n return;\n }\n const indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n this.doOpenAction(this.itemList[indexes[0]]);\n }\n }\n renameFile(id, name) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n const 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}\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 */\nexport class BreadCrumbBar {\n /**\n * constructor for addressbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies parent element.\n * @private\n *\n */\n constructor(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 onPropertyChanged(e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (const prop of Object.keys(e.newProp)) {\n const 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 render() {\n this.addEventListener();\n }\n onPathChange() {\n const pathNames = this.parent.pathNames;\n const paths = this.parent.path.split('/');\n const addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n let addressbarLI = null;\n const pathNamesLen = pathNames.length;\n if (pathNames.length > 0) {\n let id = '';\n for (let i = 0; i < pathNamesLen; i++) {\n let addressATag = null;\n addressbarLI = this.parent.createElement('li', { className: 'e-address-list-item' });\n for (let j = 0; j <= i; j++) {\n id = id + paths[j] + '/';\n }\n addressbarLI.setAttribute('data-utext', id);\n if (i !== 0) {\n const 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 const 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 const 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 updateBreadCrumbBar(addresBarUL) {\n const liElements = addresBarUL.querySelectorAll('li');\n const ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n const style = window.getComputedStyle(ulElement, null);\n const pRight = parseFloat(style.getPropertyValue('padding-right'));\n const pLeft = parseFloat(style.getPropertyValue('padding-left'));\n let breadCrumbBarWidth = ulElement.offsetWidth - pRight - pLeft;\n const addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n let liElementsWidth = 0;\n const liElementsWidths = [];\n for (let i = 0; i < liElements.length; i++) {\n const width = liElements[i].clientWidth;\n liElementsWidths.push(width);\n liElementsWidth = liElementsWidth + width;\n }\n if (!isNullOrUndefined(ulElement)) {\n remove(ulElement);\n }\n const searchContainer = this.parent.createElement('div');\n searchContainer.setAttribute('class', 'e-search-wrap');\n const id = this.parent.element.id + CLS.SEARCH_ID;\n const searchInput = createElement('input', { id: id,\n attrs: { autocomplete: 'off', 'aria-label': getLocaleText(this.parent, 'Search') } });\n searchContainer.appendChild(searchInput);\n const searchEle = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap .e-input');\n if (isNullOrUndefined(searchEle)) {\n this.parent.breadCrumbBarNavigation.appendChild(searchContainer);\n const 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 const 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 const searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n breadCrumbBarWidth = breadCrumbBarWidth - (this.searchWrapWidth ? this.searchWrapWidth : searchWrap.offsetWidth);\n if (liElementsWidth > breadCrumbBarWidth) {\n let i = liElements.length;\n while (i--) {\n const diff = breadCrumbBarWidth - liElementsWidths[i];\n if (diff > 40) {\n addressbarUL.insertBefore(liElements[i], addressbarUL.querySelector('li'));\n breadCrumbBarWidth = diff;\n }\n else {\n const items = [];\n for (let j = 0; j <= i; j++) {\n const liElement = liElements[j];\n items.push({\n text: liElement.innerText,\n utext: liElement.getAttribute('data-utext')\n });\n }\n const subMenuLi = this.parent.createElement('li', { className: 'e-breadcrumb-menu' });\n const attributes = { className: 'e-breadcrumb-submenu' };\n const 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 onFocus() {\n const wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.add('e-focus');\n }\n /* istanbul ignore next */\n onKeyUp() {\n this.parent.notify(events.pathColumn, { args: this.parent });\n }\n /* istanbul ignore next */\n onBlur() {\n const wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.remove('e-focus');\n }\n /* istanbul ignore next */\n subMenuSelectOperations(event) {\n const args = { target: event.element };\n this.addressPathClickHandler(args);\n }\n /* istanbul ignore next */\n addSubMenuAttributes(args) {\n args.element.setAttribute('data-utext', getValue('utext', args.item));\n const anchor = this.parent.createElement('a', { className: 'e-list-text' });\n args.element.appendChild(anchor);\n }\n searchEventBind(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 searchChangeHandler(args) {\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(() => { searchWordHandler(this.parent, args.value, false); }, 300);\n }\n else {\n searchWordHandler(this.parent, args.value, false);\n }\n }\n }\n addressPathClickHandler(e) {\n const li = e.target;\n if (li.nodeName === 'LI' || li.nodeName === 'A') {\n const node = li.nodeName === 'LI' ? li.children[0] : li;\n if (!isNullOrUndefined(node)) {\n this.parent.isFiltered = false;\n const 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 const treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n }\n }\n triggerFileOpen(data) {\n const eventArgs = { cancel: false, fileDetails: data, module: 'BreadCrumbBar' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n }\n /* istanbul ignore next */\n onShowInput() {\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 const 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 updatePath(list) {\n const li = closest(list, 'li');\n const liElementId = li.getAttribute('data-utext');\n this.addressBarLink = liElementId;\n const link = this.addressBarLink.split('/');\n const ids = this.parent.pathId;\n const names = this.parent.pathNames;\n this.parent.pathId = [];\n this.parent.pathNames = [];\n let newpath = '';\n for (let 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 onUpdatePath() {\n this.onPathChange();\n this.removeSearchValue();\n }\n onCreateEnd() {\n this.onPathChange();\n }\n onRenameEnd() {\n this.onPathChange();\n }\n /* istanbul ignore next */\n onDeleteEnd() {\n this.onUpdatePath();\n }\n /* istanbul ignore next */\n removeSearchValue() {\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 onResize() {\n this.onPathChange();\n }\n onPasteEnd() {\n this.onPathChange();\n }\n addEventListener() {\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 keyActionHandler(e) {\n switch (e.action) {\n case 'enter':\n this.addressPathClickHandler(e);\n break;\n }\n }\n removeEventListener() {\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 onDropInit(args) {\n if (this.parent.targetModule === this.getModuleName()) {\n const 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 const 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 getModuleName() {\n return 'breadcrumbbar';\n }\n destroy() {\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 onSearchTextChange(args) {\n this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + getLocaleText(this.parent, args.cwd.name.toString());\n }\n}\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 */\nexport class ContextMenu {\n /**\n * Constructor for the ContextMenu module\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @hidden\n */\n constructor(parent) {\n this.isMenuItemClicked = false;\n this.currentItems = [];\n this.currentElement = null;\n this.disabledItems = [];\n this.parent = parent;\n this.render();\n }\n render() {\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 onBeforeItemRender(args) {\n if (args.item.id === this.getMenuId('largeiconsview')) {\n const iconSpan = createElement('span');\n const 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 const iconSpan = createElement('span');\n const 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 onBeforeClose() {\n this.menuTarget = null;\n if (!this.isMenuItemClicked && this.parent.pathId.length > 1 && this.parent.activeModule === 'navigationpane') {\n this.parent.pathId.pop();\n const parentKey = [];\n const itemKeys = Object.keys(this.parent.feParent);\n for (const item of itemKeys) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const itemData = getValue(item, this.parent.feParent);\n if (this.parent.pathNames.indexOf(itemData.name) !== -1) {\n parentKey.push(itemData._fm_id);\n }\n }\n this.parent.pathId.push(parentKey[parentKey.length - 1]);\n this.parent.navigationpaneModule.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n }\n this.isMenuItemClicked = false;\n }\n /* istanbul ignore next */\n onBeforeOpen(args) {\n let selected = false;\n let uid;\n let data;\n let treeFolder = false;\n let target = args.event.target;\n this.menuTarget = this.targetNodeElement = target;\n this.currentElement = args.element;\n if (target.classList.contains('e-spinner-pane')) {\n target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(CLS.FULLROW)[0];\n this.menuTarget = this.targetNodeElement = target;\n }\n this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr.e-row') : target;\n if (this.parent.enableVirtualization && (target.classList.contains('e-virtual-bottom') || target.classList.contains('e-virtualtable'))) {\n target = target.parentElement.closest('div');\n }\n const 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 }\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 }\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 if (this.parent.view === 'LargeIcons' && !isNOU(closest(target, 'li')) && !closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n const eveArgs = { ctrlKey: true, shiftKey: true };\n if (!closest(target, 'li').classList.contains('e-active')) {\n this.parent.largeiconsviewModule.doSelection(target, eveArgs);\n }\n data = this.parent.visitedData;\n selected = true;\n }\n else if (!isNOU(closest(target, 'tr.e-row'))) {\n uid = this.targetElement.getAttribute('data-uid');\n data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;\n if (isNOU(this.targetElement.getAttribute('aria-selected'))) {\n /* istanbul ignore next */\n this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('data-rowindex'), 10)]);\n }\n selected = true;\n /* istanbul ignore next */\n }\n else if (closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n uid = closest(target, 'li').getAttribute('data-uid');\n treeFolder = true;\n }\n /* istanbul ignore next */\n if (selected) {\n if (getValue('isFile', data) === true) {\n this.setFileItem();\n }\n else {\n this.setFolderItem(false);\n }\n /* istanbul ignore next */\n }\n else if (treeFolder) {\n this.setFolderItem(true);\n if (uid === this.parent.pathId[0]) {\n this.disabledItems.push('Delete', 'Rename', 'Cut', 'Copy');\n }\n else {\n const itemsToRemove = ['Delete', 'Rename', 'Cut', 'Copy'];\n for (let i = 0; i < this.disabledItems.length; i++) {\n const item = this.disabledItems[i];\n if (itemsToRemove.indexOf(item) !== -1) {\n this.disabledItems.splice(i, 1);\n i--;\n }\n }\n }\n /* istanbul ignore next */\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 const pasteEle = select('#' + this.getMenuId('Paste'), this.contextMenu.element);\n if (!args.cancel && !this.parent.enablePaste &&\n pasteEle && !pasteEle.classList.contains('e-disabled')) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n else {\n const pasteIndex = this.disabledItems.indexOf('Paste');\n if (pasteIndex !== -1) {\n this.disabledItems.splice(pasteIndex, 1);\n }\n }\n if (args.cancel) {\n this.menuTarget = this.currentElement = null;\n return;\n }\n this.contextMenu.dataBind();\n let 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 const 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, (menuOpenArgs) => {\n if (!isSubMenu) {\n this.contextMenu.dataBind();\n this.contextMenu.items = menuOpenArgs.items;\n this.contextMenu.dataBind();\n }\n this.enableItems(this.disabledItems, false, true);\n args.cancel = menuOpenArgs.cancel;\n if (menuOpenArgs.cancel) {\n this.menuTarget = this.targetNodeElement = this.currentElement = null;\n }\n });\n }\n updateActiveModule() {\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 getTargetView(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 getItemIndex(item) {\n const itemId = this.getMenuId(item);\n for (let 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 disableItem(items) {\n if (items.length !== 0) {\n this.disabledItems = this.disabledItems.concat(items);\n }\n }\n enableItems(items, enable, isUniqueId) {\n for (let 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 setFolderItem(isTree) {\n this.menuType = 'folder';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map((item) => item.trim()));\n this.contextMenu.dataBind();\n if (isTree) {\n const selectedTreeNode = select('[data-uid=\"' + this.parent.navigationpaneModule.treeObj.selectedNodes[0] + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {\n this.disabledItems.push('Open');\n }\n else {\n const indexToRemove = this.disabledItems.indexOf('Open');\n if (indexToRemove !== -1) {\n this.disabledItems.splice(indexToRemove, 1);\n }\n }\n if (this.parent.selectedItems.length === 0) {\n const renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n }\n else if (this.parent.activeModule !== 'navigationpane') {\n if (this.parent.selectedItems.length === 1) {\n const renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n else {\n this.disabledItems.push('Rename', 'Paste');\n }\n }\n }\n setFileItem() {\n this.menuType = 'file';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.file.map((item) => item.trim()));\n this.contextMenu.dataBind();\n if (this.parent.selectedItems.length === 1) {\n const renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n else {\n this.disabledItems.push('Rename');\n }\n }\n setLayoutItem(target) {\n this.menuType = 'layout';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map((item) => 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 else {\n this.disabledItems = this.disabledItems.filter((item) => item !== 'SelectAll');\n }\n if (this.parent.selectedNodes.length === 0) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n this.contextMenu.dataBind();\n }\n checkValidItem(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 getMenuItemData() {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n const args = { target: this.menuTarget };\n this.parent.notify(events.menuItemData, args);\n return this.parent.itemData[0];\n }\n }\n /* istanbul ignore next */\n onSelect(args) {\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n const itemText = args.item.id.substr((this.parent.element.id + '_cm_').length);\n let details;\n if (itemText === 'refresh' || itemText === 'newfolder' || itemText === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n if (this.parent.activeModule === 'navigationpane' && itemText === 'open') {\n details = [this.menuItemData];\n }\n else {\n details = this.parent.itemData;\n }\n }\n const eventArgs = {\n cancel: false,\n element: args.element,\n fileDetails: details,\n item: args.item\n };\n this.parent.trigger('menuClick', eventArgs, (menuClickArgs) => {\n let sItems;\n if (!menuClickArgs.cancel) {\n this.isMenuItemClicked = true;\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 (let 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 (let i = 0; i < details.length; i++) {\n if (!hasDownloadAccess(details[i])) {\n createDeniedDialog(this.parent, details[i], events.permissionDownload);\n return;\n }\n }\n if (this.parent.activeModule === 'navigationpane') {\n this.parent.notify(events.downloadInit, {});\n }\n else if (this.parent.selectedItems.length > 0) {\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(this.parent, details[0], events.permissionEdit);\n }\n else {\n this.parent.notify(events.renameInit, {});\n createDialog(this.parent, 'Rename');\n }\n break;\n case 'selectall':\n /* istanbul ignore next */\n this.parent.notify(events.selectAllInit, {});\n break;\n case 'refresh':\n refresh(this.parent);\n break;\n case 'open':\n if (this.parent.visitedItem && this.parent.activeModule !== 'navigationpane') {\n this.parent.notify(events.openInit, { target: this.parent.visitedItem });\n }\n else if (this.parent.activeModule === 'navigationpane') {\n if (this.parent.visitedItem) {\n this.parent.notify(events.openInit, { target: this.parent.visitedItem });\n }\n this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(this.targetNodeElement, 'li'));\n }\n break;\n case 'details':\n this.parent.notify(events.detailsInit, {});\n sItems = this.parent.selectedItems;\n if (this.parent.activeModule === 'navigationpane') {\n sItems = [];\n this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(this.targetNodeElement, 'li'));\n }\n GetDetails(this.parent, sItems, this.parent.path, 'details');\n break;\n case 'newfolder':\n createNewFolder(this.parent);\n break;\n case 'upload':\n uploadItem(this.parent);\n break;\n case 'name':\n case 'size':\n case 'date':\n case 'ascending':\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 case 'largeiconsview':\n updateLayout(this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\n case 'detailsview':\n updateLayout(this.parent, 'Details');\n break;\n }\n }\n });\n }\n onPropertyChanged(e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (const prop of Object.keys(e.newProp)) {\n switch (prop) {\n case 'cssClass':\n this.contextMenu.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n break;\n }\n }\n }\n addEventListener() {\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 removeEventListener() {\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.keyboardModule.destroy();\n }\n keyActionHandler(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 getModuleName() {\n return 'contextmenu';\n }\n destroy() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.contextMenu.destroy();\n this.targetElement = null;\n }\n /* istanbul ignore next */\n getItemData(data) {\n const items = [];\n for (let i = 0; i < data.length; i++) {\n let item;\n const itemId = this.getMenuId(data[i]);\n const 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 getMenuId(id) {\n return this.parent.element.id + '_cm_' + id.split(' ').join('').toLowerCase();\n }\n}\n","/**\n * Specifies the default locale of FileManager component\n */\nexport const 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 __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};\nvar FileManager_1;\nimport { Component, isNullOrUndefined, L10n, closest, Collection } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Complex, select } from '@syncfusion/ej2-base';\nimport { createElement, addClass, removeClass, setStyleAttribute as setAttr, getUniqueID } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Splitter } from '@syncfusion/ej2-layouts';\nimport { Dialog, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { ToolbarSettings, AjaxSettings, NavigationPaneSettings, DetailsViewSettings } from '../models/index';\nimport { ToolbarItem } from '../models/index';\nimport { SearchSettings } from '../models/index';\nimport { LargeIconsView } from '../layout/large-icons-view';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { UploadSettings } from '../models/upload-settings';\nimport * as events from './constant';\nimport * as CLS from './classes';\nimport { read, filter, createFolder } from '../common/operations';\nimport { refresh, getPathObject, getLocaleText, setNextPath, createDeniedDialog, getCssClass } from '../common/utility';\nimport { hasContentAccess, hasUploadAccess, updateLayout, createNewFolder, uploadItem, closePopup } 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 */\nlet FileManager = FileManager_1 = class FileManager extends Component {\n constructor(options, element) {\n super(options, element);\n this.filterData = null;\n this.selectedNodes = [];\n this.duplicateItems = [];\n this.duplicateRecords = [];\n this.previousPath = [];\n this.nextPath = [];\n this.existingFileCount = 0;\n this.isLayoutChange = false;\n this.layoutSelectedItems = [];\n this.renamedId = null;\n this.uploadItem = [];\n this.deleteRecords = [];\n this.isFile = false;\n this.isCut = false;\n this.isSearchCut = false;\n this.isSearchDrag = false;\n this.isPasteError = false;\n this.folderPath = '';\n this.isSameAction = false;\n this.isFiltered = false;\n // Specifies whether the sort by option is clicked or not.\n this.isSortByClicked = false;\n this.enablePaste = false;\n this.persistData = false;\n this.retryArgs = [];\n this.isOpened = false;\n this.isRetryOpened = false;\n this.isPathDrag = false;\n this.searchedItems = [];\n this.retryFiles = [];\n this.isApplySame = false;\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 this.droppedObjects = [];\n this.uploadingCount = 0;\n this.uploadedCount = 0;\n //Specifies whether the operating system is MAC or not\n this.isMac = false;\n FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu);\n }\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n getModuleName() {\n return 'filemanager';\n }\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n preRender() {\n if (isNOU(this.element.id) || this.element.id === '') {\n this.element.setAttribute('id', getUniqueID('filemanager'));\n }\n this.ensurePath();\n this.feParent = [];\n this.feFiles = [];\n setAttr(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.isDevice = Browser.isDevice;\n this.isMobile = this.checkMobile();\n if (this.isMobile) {\n this.setProperties({ navigationPaneSettings: { visible: false } }, true);\n }\n const 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 getPersistData() {\n const 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 requiredModules() {\n const 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 name: 'Toolbar'\n });\n }\n if (this.navigationPaneSettings.visible) {\n modules.push({\n member: 'navigationpane',\n args: [this],\n name: 'NavigationPane'\n });\n }\n if (this.view) {\n modules.push({\n member: 'detailsview',\n args: [this],\n name: 'DetailsView'\n });\n }\n if (this.contextMenuSettings.visible && !this.isDevice) {\n modules.push({\n member: 'contextmenu',\n args: [this],\n name: 'ContextMenu'\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualization',\n args: [this],\n name: 'Virtualization'\n });\n }\n return modules;\n }\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n render() {\n this.initialize();\n const slItems = isNOU(this.selectedItems) ? [] :\n this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);\n this.setProperties({ selectedItems: slItems }, true);\n this.fileView = this.view;\n this.isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n this.setRtl(this.enableRtl);\n this.addEventListeners();\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n this.adjustHeight();\n if (isNOU(this.navigationpaneModule)) {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n const bar = select('.' + CLS.SPLIT_BAR, this.element);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n this.wireEvents();\n this.renderComplete();\n }\n ensurePath() {\n let 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 const paths = currentPath.split('/');\n this.setProperties({ path: paths[0] + '/' }, true);\n this.pathNames = [];\n this.pathId = ['fe_tree'];\n this.itemData = [];\n }\n initialize() {\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 addWrapper() {\n const headerWrap = this.createElement('div', { id: this.element.id + CLS.TOOLBAR_ID });\n this.element.appendChild(headerWrap);\n const layoutWrap = this.createElement('div', {\n id: this.element.id + CLS.LAYOUT_ID, className: CLS.LAYOUT\n });\n this.element.appendChild(layoutWrap);\n const navigationWrap = this.createElement('div', {\n id: this.element.id + CLS.NAVIGATION_ID, className: CLS.NAVIGATION\n });\n const treeWrap = this.createElement('div', {\n id: this.element.id + CLS.TREE_ID\n });\n navigationWrap.appendChild(treeWrap);\n const 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 const gridWrap = this.createElement('div', {\n id: this.element.id + CLS.GRID_ID\n });\n contentWrap.appendChild(gridWrap);\n const 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 const overlay = this.createElement('span', { className: CLS.OVERLAY });\n contentWrap.appendChild(overlay);\n let 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 const dialogWrap = this.createElement('div', { id: this.element.id + CLS.DIALOG_ID });\n this.element.appendChild(dialogWrap);\n const menuWrap = this.createElement('ul', { id: this.element.id + CLS.CONTEXT_MENU_ID });\n this.element.appendChild(menuWrap);\n const dialogImgWrap = this.createElement('div', { id: this.element.id + CLS.IMG_DIALOG_ID });\n this.element.appendChild(dialogImgWrap);\n const extnDialogWrap = this.createElement('div', { id: this.element.id + CLS.EXTN_DIALOG_ID });\n this.element.appendChild(extnDialogWrap);\n const uploadDialogWrap = this.createElement('div', { id: this.element.id + CLS.UPLOAD_DIALOG_ID });\n this.element.appendChild(uploadDialogWrap);\n }\n adjustHeight() {\n const toolbar = select('#' + this.element.id + CLS.TOOLBAR_ID, this.element);\n const 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 splitterResize() {\n this.notify(events.splitterResize, {});\n }\n splitterAdjust() {\n const 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 addCssClass(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 showSpinner() {\n showSpinner(this.element);\n }\n hideSpinner() {\n hideSpinner(this.element);\n }\n onContextMenu(e) {\n e.preventDefault();\n }\n checkMobile() {\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 renderFileUpload() {\n const id = this.element.id + CLS.UPLOAD_ID;\n const 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 renderUploadBox() {\n const uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n this.uploadObj = new Uploader({\n dropArea: select('#' + this.element.id + CLS.CONTENT_ID, this.element),\n asyncSettings: {\n saveUrl: uploadUrl,\n removeUrl: uploadUrl\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n removing: this.onRemoving.bind(this),\n canceling: this.onCancel.bind(this),\n clearing: this.onClearing.bind(this),\n selected: this.onSelected.bind(this),\n success: this.onUploadSuccess.bind(this),\n failure: this.onUploadFailure.bind(this),\n autoUpload: this.uploadSettings.autoUpload,\n minFileSize: this.uploadSettings.minFileSize,\n maxFileSize: this.uploadSettings.maxFileSize,\n allowedExtensions: this.uploadSettings.allowedExtensions,\n directoryUpload: this.uploadSettings.directoryUpload,\n fileListRendering: this.onFileListRender.bind(this)\n });\n this.uploadObj.appendTo('#' + this.element.id + CLS.UPLOAD_ID);\n }\n onFileListRender(args) {\n this.trigger('uploadListCreate', args);\n }\n updateUploader() {\n this.uploadObj.autoUpload = this.uploadSettings.autoUpload;\n this.uploadObj.minFileSize = this.uploadSettings.minFileSize;\n this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;\n this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;\n this.uploadObj.directoryUpload = this.uploadSettings.directoryUpload;\n this.uploadObj.dataBind();\n }\n onBeforeOpen(args) {\n const eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupOpen', eventArgs, (eventargs) => {\n args.cancel = eventargs.cancel;\n });\n }\n onBeforeClose(args) {\n const eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupClose', eventArgs, (eventargs) => {\n args.cancel = eventargs.cancel;\n });\n }\n onOpen() {\n this.isOpened = true;\n this.uploadDialogObj.element.focus();\n const args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupOpen', args);\n }\n onClose() {\n this.isOpened = false;\n this.uploadObj.clearAll();\n const args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupClose', args);\n }\n /* istanbul ignore next */\n onUploading(args) {\n let action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (let 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 const data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\n const uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n const 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, (uploadEventArgs) => {\n args.customFormData = JSON.parse(getValue('data', uploadEventArgs.ajaxSettings));\n args.cancel = uploadEventArgs.cancel;\n const 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 onRemoving() {\n this.onFileUploadSuccess({ count: 1 });\n if (this.uploadObj.getFilesData().length === 1) {\n this.uploadDialogObj.hide();\n }\n }\n /* istanbul ignore next */\n onCancel(args) {\n const data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': 'remove' }, { 'data': data }];\n }\n /* istanbul ignore next */\n onClearing() {\n if (this.isOpened) {\n this.uploadDialogObj.hide();\n }\n }\n /* istanbul ignore next */\n onSelected(args) {\n if (args.filesData.length === 0) {\n return;\n }\n this.uploadingCount = args.filesData.length;\n this.uploadedCount = 0;\n const 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 onFileUploadSuccess(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 onUploadSuccess(files) {\n const 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 onUploadFailure(files) {\n const response = getValue('response', files);\n const statusText = getValue('statusText', response);\n if (statusText !== '') {\n setValue('statusText', statusText, files);\n }\n const 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 onInitialEnd() {\n setNextPath(this, this.path);\n }\n addEventListeners() {\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 removeEventListeners() {\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 onDetailsInit() {\n if (isNOU(this.activeModule)) {\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n }\n }\n resizeHandler() {\n this.adjustHeight();\n this.notify(events.resizeEnd, {});\n }\n keyActionHandler(e) {\n let uploadEle;\n switch (e.action) {\n case 'altN':\n e.preventDefault();\n this.itemData = [getPathObject(this)];\n if (!hasContentAccess(this.itemData[0])) {\n createDeniedDialog(this, this.itemData[0], events.permissionEditContents);\n }\n else {\n createDialog(this, 'NewFolder');\n }\n break;\n case 'f5':\n e.preventDefault();\n refresh(this);\n break;\n /* istanbul ignore next */\n case 'ctrlShift1':\n e.preventDefault();\n this.fileView = 'Details';\n this.setProperties({ view: 'Details' }, true);\n showSpinner(this.element);\n updateLayout(this, 'Details');\n break;\n /* istanbul ignore next */\n case 'ctrlShift2':\n e.preventDefault();\n this.fileView = 'LargeIcons';\n this.setProperties({ view: 'LargeIcons' }, true);\n showSpinner(this.element);\n updateLayout(this, 'LargeIcons');\n break;\n case 'ctrlU':\n e.preventDefault();\n if (this.toolbarSettings.items.indexOf('Upload') !== -1) {\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n }\n break;\n }\n }\n wireEvents() {\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 unWireEvents() {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\n }\n setPath() {\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 onPropertyChanged(newProp, oldProp) {\n let height;\n for (const prop of Object.keys(newProp)) {\n switch (prop) {\n case 'ajaxSettings':\n this.ajaxSettingSetModel(newProp);\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'allowMultiSelection':\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n else {\n if (this.selectedItems.length > 1) {\n this.setProperties({ selectedItems: this.selectedItems.slice(this.selectedItems.length - 1) }, true);\n }\n removeClass([this.element], CLS.CHECK_SELECT);\n }\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'cssClass':\n this.addCssClass(oldProp.cssClass, newProp.cssClass);\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'detailsViewSettings':\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n this.refresh();\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n this.refresh();\n break;\n case 'height':\n height = !isNOU(newProp.height) ? formatUnit(newProp.height) : newProp.height;\n setAttr(this.element, { 'height': height });\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'locale':\n if (!isNOU(newProp.enableRtl)) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n }\n this.localeSetModelOption(newProp);\n break;\n case 'navigationPaneSettings':\n this.splitterAdjust();\n this.notify(events.modelChanged, { module: 'navigationpane', newProp: newProp, oldProp: oldProp });\n break;\n case 'path':\n this.setPath();\n break;\n case 'searchSettings':\n if (!isNullOrUndefined(newProp.searchSettings.allowSearchOnTyping)) {\n this.setProperties({ searchSettings: { allowSearchOnTyping: newProp.searchSettings.allowSearchOnTyping } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.ignoreCase)) {\n this.setProperties({ searchSettings: { ignoreCase: newProp.searchSettings.ignoreCase } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.filterType)) {\n this.setProperties({ searchSettings: { filterType: newProp.searchSettings.filterType } }, true);\n }\n this.notify(events.modelChanged, { module: 'breadcrumbbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'selectedItems':\n if (this.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (this.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'showFileExtension':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showHiddenItems':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showThumbnail':\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'uploadSettings':\n this.updateUploader();\n break;\n case 'view':\n if (newProp.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (newProp.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'width':\n setAttr(this.element, { 'width': !isNOU(newProp.width) ? formatUnit(newProp.width) : newProp.width });\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'sortOrder':\n refresh(this);\n this.notify(events.sortByChange, {});\n break;\n case 'sortBy':\n refresh(this);\n this.notify(events.sortByChange, {});\n if (this.view === 'Details') {\n this.notify(events.sortColumn, {});\n }\n break;\n case 'popupTarget':\n if (this.uploadDialogObj) {\n this.uploadDialogObj.target = newProp.popupTarget;\n }\n if (this.dialogObj) {\n this.dialogObj.target = newProp.popupTarget;\n }\n if (this.extDialogObj) {\n this.extDialogObj.target = newProp.popupTarget;\n }\n if (this.viewerObj) {\n this.viewerObj.target = newProp.popupTarget;\n }\n break;\n case 'fileSystemData':\n this.fileSystemData = newProp.fileSystemData;\n this.refresh();\n break;\n }\n }\n }\n /* istanbul ignore next */\n ajaxSettingSetModel(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.refresh();\n }\n /* istanbul ignore next */\n localeSetModelOption(newProp) {\n this.uploadObj.locale = newProp.locale;\n super.refresh();\n }\n /**\n * Triggers when the component is destroyed.\n *\n * @returns {void}\n */\n destroy() {\n if (this.isDestroyed) {\n return;\n }\n if (!this.refreshing) {\n this.notify(events.destroy, {});\n }\n this.uploadObj.destroy();\n this.uploadObj = null;\n this.uploadDialogObj.destroy();\n this.uploadDialogObj = null;\n this.splitterObj.destroy();\n this.splitterObj = null;\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.dialogObj = null;\n }\n if (this.viewerObj) {\n this.viewerObj.destroy();\n this.viewerObj = null;\n }\n if (this.extDialogObj) {\n this.extDialogObj.destroy();\n this.extDialogObj = null;\n }\n this.element.removeAttribute('style');\n this.element.removeAttribute('tabindex');\n this.removeEventListeners();\n this.unWireEvents();\n this.addCssClass(this.cssClass, null);\n removeClass([this.element], [CLS.RTL, CLS.MOBILE, CLS.CHECK_SELECT]);\n this.element.innerHTML = '';\n this.breadCrumbBarNavigation = null;\n this.activeElements = null;\n this.virtualDragElement = null;\n this.visitedItem = null;\n super.destroy();\n this.virtualizationModule = null;\n this.navigationpaneModule = null;\n this.toolbarModule = null;\n this.contextmenuModule = null;\n this.largeiconsviewModule = null;\n this.detailsviewModule = null;\n this.breadcrumbbarModule = null;\n }\n /**\n * Creates a new folder in file manager.\n *\n * @param {string} name – Specifies the name of new folder in current path.\n * If it is not specified, then the default new folder dialog will be opened.\n * @returns {void}\n */\n createFolder(name) {\n this.notify(events.methodCall, { action: 'createFolder' });\n const details = [getPathObject(this)];\n this.itemData = details;\n if (name) {\n if (/[/\\\\|*?\"<>:]/.test(name)) {\n const 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 deleteFiles(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 disableToolbarItems(items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, false);\n }\n }\n /**\n * Downloads the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to download the nested level folders\n * or files, then specify the filter path along with name of the folders or files when performing search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then the selected items will be downloaded.\n *\n * @returns {void}\n */\n downloadFiles(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 enableToolbarItems(items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, true);\n }\n }\n /**\n * Disables the specified context menu items in file manager. This method is used only in the menuOpen event.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n disableMenuItems(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 getMenuItemIndex(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 getToolbarItemIndex(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 filterFiles(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 getSelectedFiles() {\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 openFile(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 refreshFiles() {\n refresh(this);\n }\n /**\n * Refreshes the layout of the file manager.\n *\n * @returns {void}\n */\n refreshLayout() {\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 selectAll() {\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 clearSelection() {\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 renameFile(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 uploadFiles() {\n const details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(this);\n }\n /**\n * Specifies the method which must be invoked to programmatically close the dialog popup in the file manager.\n *\n * @returns {void}\n */\n closeDialog() {\n closePopup(this);\n }\n /**\n * Specifies the direction of FileManager\n *\n * @param {boolean} rtl - specifies rtl parameter.\n * @returns {void}\n */\n setRtl(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};\n__decorate([\n Complex({}, AjaxSettings)\n], FileManager.prototype, \"ajaxSettings\", void 0);\n__decorate([\n Property([])\n], FileManager.prototype, \"fileSystemData\", void 0);\n__decorate([\n Property(false)\n], FileManager.prototype, \"allowDragAndDrop\", void 0);\n__decorate([\n Property(true)\n], FileManager.prototype, \"allowMultiSelection\", void 0);\n__decorate([\n Property(true)\n], FileManager.prototype, \"showItemCheckBoxes\", void 0);\n__decorate([\n Complex({}, ContextMenuSettings)\n], FileManager.prototype, \"contextMenuSettings\", void 0);\n__decorate([\n Property('')\n], FileManager.prototype, \"cssClass\", void 0);\n__decorate([\n Complex({}, DetailsViewSettings)\n], FileManager.prototype, \"detailsViewSettings\", void 0);\n__decorate([\n Property(true)\n], FileManager.prototype, \"enableHtmlSanitizer\", void 0);\n__decorate([\n Property(false)\n], FileManager.prototype, \"enablePersistence\", void 0);\n__decorate([\n Property(false)\n], FileManager.prototype, \"enableVirtualization\", void 0);\n__decorate([\n Property('400px')\n], FileManager.prototype, \"height\", void 0);\n__decorate([\n Property('LargeIcons')\n], FileManager.prototype, \"view\", void 0);\n__decorate([\n Complex({}, NavigationPaneSettings)\n], FileManager.prototype, \"navigationPaneSettings\", void 0);\n__decorate([\n Property('/')\n], FileManager.prototype, \"path\", void 0);\n__decorate([\n Property(null)\n], FileManager.prototype, \"popupTarget\", void 0);\n__decorate([\n Complex({}, SearchSettings)\n], FileManager.prototype, \"searchSettings\", void 0);\n__decorate([\n Property()\n], FileManager.prototype, \"selectedItems\", void 0);\n__decorate([\n Property(true)\n], FileManager.prototype, \"showFileExtension\", void 0);\n__decorate([\n Property(null)\n], FileManager.prototype, \"rootAliasName\", void 0);\n__decorate([\n Property(false)\n], FileManager.prototype, \"showHiddenItems\", void 0);\n__decorate([\n Property(true)\n], FileManager.prototype, \"showThumbnail\", void 0);\n__decorate([\n Property('Ascending')\n], FileManager.prototype, \"sortOrder\", void 0);\n__decorate([\n Property('name')\n], FileManager.prototype, \"sortBy\", void 0);\n__decorate([\n Property(null)\n], FileManager.prototype, \"sortComparer\", void 0);\n__decorate([\n Complex({}, ToolbarSettings)\n], FileManager.prototype, \"toolbarSettings\", void 0);\n__decorate([\n Collection([], ToolbarItem)\n], FileManager.prototype, \"toolbarItems\", void 0);\n__decorate([\n Complex({}, UploadSettings)\n], FileManager.prototype, \"uploadSettings\", void 0);\n__decorate([\n Property('100%')\n], FileManager.prototype, \"width\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"fileLoad\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"fileOpen\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforeDownload\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforeImageLoad\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforePopupClose\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforePopupOpen\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforeSend\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"created\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforeFolderCreate\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"folderCreate\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"destroyed\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforeDelete\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"delete\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforeRename\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"rename\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"beforeMove\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"move\", void 0);\n__decorate([\n Event()\n], FileManager.prototype, \"search\", 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);\nFileManager = FileManager_1 = __decorate([\n NotifyPropertyChanges\n], FileManager);\nexport { FileManager };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Toolbar as BaseToolbar } from '@syncfusion/ej2-navigations';\nimport { select, isNullOrUndefined as isNOU, closest, selectAll } from '@syncfusion/ej2-base';\nimport { createDialog } from '../pop-up/dialog';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { refresh, getPathObject, getLocaleText, getCssClass, sortbyClickHandler } from '../common/utility';\nimport { createDeniedDialog, updateLayout } from '../common/utility';\nimport { GetDetails } from '../common/operations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { cutFiles, copyFiles, pasteHandler, hasEditAccess } from '../common/index';\nimport { doDownload, createNewFolder, uploadItem } from '../common/index';\n/**\n * Toolbar module\n */\nexport class Toolbar {\n /**\n * Constructor for the Toolbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies the parent element.\n * @private\n */\n constructor(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 render() {\n this.items = this.toolbarItemData(this.getItems(this.parent.toolbarSettings.items.map((item) => item.trim())));\n const eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, (toolbarCreateArgs) => {\n this.items = toolbarCreateArgs.items;\n this.toolbarObj = new BaseToolbar({\n items: this.items,\n created: this.toolbarCreateHandler.bind(this),\n overflowMode: 'Popup',\n clicked: this.onClicked.bind(this),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl\n });\n this.toolbarObj.isStringTemplate = true;\n this.toolbarObj.root = this.parent.root ? this.parent.root : this.parent;\n this.toolbarObj.appendTo('#' + this.parent.element.id + CLS.TOOLBAR_ID);\n });\n }\n getItemIndex(item) {\n const itemId = this.getId(item);\n for (let i = 0; i < this.items.length; i++) {\n if (this.items[i].id === itemId) {\n return i;\n }\n }\n return -1;\n }\n getItems(items) {\n let currItems = items.slice();\n if (this.parent.isDevice && this.parent.allowMultiSelection) {\n currItems.push('SelectAll');\n }\n if (this.parent.toolbarItems.length > 0) {\n currItems = this.parent.toolbarItems.map((item) => item.name);\n }\n return currItems;\n }\n /* istanbul ignore next */\n onClicked(args) {\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n const tool = args.item.id.substr((this.parent.element.id + '_tb_').length);\n let 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 const eventArgs = { cancel: false, fileDetails: details, item: args.item };\n this.parent.trigger('toolbarClick', eventArgs, (toolbarClickArgs) => {\n let sItems;\n let 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 (let 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 toolbarCreateHandler() {\n if (!isNOU(select('#' + this.getId('SortBy'), this.parent.element))) {\n const items = [\n { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '' },\n { separator: true },\n { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('none'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '' }\n ];\n this.buttonObj = new DropDownButton({\n items: items, cssClass: getCssClass(this.parent, CLS.ROOT_POPUP),\n select: sortbyClickHandler.bind(this, this.parent),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl, iconCss: CLS.ICON_SHORTBY\n });\n this.buttonObj.isStringTemplate = true;\n this.buttonObj.appendTo('#' + this.getId('SortBy'));\n }\n if (!isNOU(select('#' + this.getId('View'), this.parent.element))) {\n const gridSpan = '<span class=\"' + CLS.ICON_GRID + ' ' + CLS.MENU_ICON + '\"></span>';\n const largeIconSpan = '<span class=\"' + CLS.ICON_LARGE + ' ' + CLS.MENU_ICON + '\"></span>';\n const layoutItems = [\n {\n id: this.getPupupId('large'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? '' : CLS.TB_OPTION_TICK\n },\n {\n id: this.getPupupId('details'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : ''\n }\n ];\n this.layoutBtnObj = new DropDownButton({\n iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n cssClass: getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP),\n items: layoutItems, select: this.layoutChange.bind(this),\n enableRtl: this.parent.enableRtl,\n content: '<span class=\"e-tbar-btn-text\">' + getLocaleText(this.parent, 'View') + '</span>',\n beforeItemRender: (args) => {\n const tickIcon = args.item.iconCss;\n const viewText = args.item.text === getLocaleText(this.parent, 'View-LargeIcons');\n const iconClass = tickIcon ? ' e-menu-icon ' + tickIcon : '';\n args.element.innerHTML = '<span class=\"' + iconClass + '\"></span>' + (viewText ? largeIconSpan : gridSpan) + args.item.text;\n const span = args.element.firstChild;\n if (span && span.className === '') {\n args.element.removeChild(span);\n }\n }\n });\n this.layoutBtnObj.isStringTemplate = true;\n this.layoutBtnObj.appendTo('#' + this.getId('View'));\n }\n this.hideItems(this.default, true);\n this.hideStatus();\n if (this.parent.portals && this.toolbarObj.portals) {\n this.parent.portals = this.parent.portals.concat(this.toolbarObj.portals);\n this.parent['renderReactTemplates']();\n }\n const btnElement = selectAll('.e-btn', this.toolbarObj.element);\n for (let btnCount = 0; btnCount < btnElement.length; btnCount++) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = (e) => {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = (e) => {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n }\n this.parent.refreshLayout();\n }\n updateSortByButton() {\n if (this.buttonObj) {\n const items = this.buttonObj.items;\n for (let itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n if (this.parent.sortBy === 'dateModified' || this.parent.sortBy === 'dateCreated') {\n items[itemCount].iconCss = this.parent.sortBy === this.parent.sortBy ? CLS.TB_OPTION_DOT : '';\n }\n else {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n }\n getPupupId(id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n }\n layoutChange(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 toolbarItemData(data) {\n const items = [];\n let mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (let i = 0; i < data.length; i++) {\n let item;\n let propItem;\n if (this.parent.toolbarItems.length > 0) {\n propItem = this.getItemModel(this.parent.toolbarItems[parseInt(i.toString(), 10)]);\n }\n const itemId = this.getId(data[i]);\n const itemText = getLocaleText(this.parent, data[i]);\n const itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n switch (data[i]) {\n case '|':\n item = { type: 'Separator' };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_UPLOAD, showTextOn: mode };\n break;\n case 'SortBy': {\n let spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\n if (propItem && propItem.text) {\n spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + propItem.text + '</span>';\n }\n item = {\n id: itemId, tooltipText: itemTooltip,\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\">' + spanElement + '</button>'\n };\n break;\n }\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: CLS.ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View': {\n let viewText;\n if (propItem && propItem.text) {\n viewText = propItem.text;\n }\n else {\n viewText = getLocaleText(this.parent, 'View');\n }\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\" aria-label=' +\n viewText + '></button>'\n };\n break;\n }\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, template: '' };\n break;\n }\n if (this.parent.toolbarItems.length > 0 && propItem) {\n const mergedItems = Object.assign({}, item, propItem);\n items.push(mergedItems);\n }\n else {\n items.push(item);\n }\n }\n return items;\n }\n getItemModel(propItem) {\n const item = {};\n if (propItem.id) {\n item.id = propItem.id;\n }\n if (propItem.text) {\n item.text = propItem.text;\n }\n if (propItem.tooltipText) {\n item.tooltipText = propItem.tooltipText;\n }\n if (propItem.prefixIcon) {\n item.prefixIcon = propItem.prefixIcon;\n }\n if (propItem.cssClass) {\n item.cssClass = propItem.cssClass;\n }\n if (propItem.showTextOn !== 'Both') {\n item.showTextOn = propItem.showTextOn;\n }\n if (propItem.template) {\n item.template = propItem.template;\n }\n if (propItem.disabled) {\n item.disabled = propItem.disabled;\n }\n if (propItem.width !== 'auto') {\n item.width = propItem.width;\n }\n if (propItem.suffixIcon) {\n item.suffixIcon = propItem.suffixIcon;\n }\n if (propItem.align !== 'Left') {\n item.align = propItem.align;\n }\n if (propItem.overflow !== 'None') {\n item.overflow = propItem.overflow;\n }\n if (propItem.htmlAttributes) {\n item.htmlAttributes = propItem.htmlAttributes;\n }\n if (propItem.type !== 'Button') {\n item.type = propItem.type;\n }\n if (propItem.visible !== true) {\n item.visible = propItem.visible;\n }\n if (propItem.showAlwaysInPopup) {\n item.showAlwaysInPopup = propItem.showAlwaysInPopup;\n }\n if (propItem.tabIndex !== -1) {\n item.tabIndex = propItem.tabIndex;\n }\n return item;\n }\n getId(id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n }\n addEventListener() {\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 reRenderToolbar(e) {\n let itemsToProcess = [];\n if (this.parent.toolbarItems.length > 0) {\n itemsToProcess = this.parent.toolbarItems.map((item) => {\n return item.name;\n });\n }\n else if (e.newProp.toolbarSettings.items !== undefined) {\n itemsToProcess = e.newProp.toolbarSettings.items.map((item) => {\n return item.trim();\n });\n }\n if (itemsToProcess.length > 0) {\n this.items = this.toolbarItemData(this.getItems(itemsToProcess));\n const eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, (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 onSelectionChanged() {\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 const ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele && !this.parent.enableVirtualization) {\n let txt;\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 hideItems(tools, toHide) {\n for (let i = 0; i < tools.length; i++) {\n const ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n }\n hideStatus() {\n const ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n }\n showPaste() {\n this.hideItems(['Paste'], false);\n }\n hidePaste() {\n this.hideItems(['Paste'], true);\n }\n onLayoutChange() {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE;\n const items = this.layoutBtnObj.items;\n for (let 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 removeEventListener() {\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 getModuleName() {\n return 'toolbar';\n }\n onPropertyChanged(e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (const prop of Object.keys(e.newProp)) {\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.reRenderToolbar(e);\n break;\n }\n }\n }\n destroy() {\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 enableItems(items, isEnable) {\n for (let i = 0; i < items.length; i++) {\n const ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n }\n}\n","import { EventHandler, isNullOrUndefined, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, selectAll } from '@syncfusion/ej2-base';\nimport * as CLS from '../base/classes';\nexport class Virtualization {\n constructor(instance) {\n this.filemanagerInstance = instance;\n this.largeIconInstance = instance.largeiconsviewModule;\n }\n /**\n * Sets up UI virtualization for the large icon view.\n *\n * @returns {void}\n */\n setUIVirtualization() {\n // Get the current view data source\n const currentViewItems = this.largeIconInstance.items;\n // Get the first item in the data source\n const firstItem = currentViewItems.slice(0, 1);\n // Create a list element from the first item in the data source\n const listElements = ListBase.createListFromJson(createElement, firstItem, this.largeIconInstance.listObj);\n // Get the list items from the list element\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Append the list element to the large icon element\n this.largeIconInstance.element.appendChild(listElements);\n if (this.itemList.length !== 0 && this.largeIconInstance.element.querySelector('.' + CLS.EMPTY)) {\n this.largeIconInstance.element.removeChild(this.largeIconInstance.element.querySelector('.' + CLS.EMPTY));\n }\n // Get the total number of items\n this.itemCount = this.getItemCount(Object.keys(this.largeIconInstance.allItems).length);\n // Remove the first child element from the large icon element\n this.largeIconInstance.element.firstChild.remove();\n // Set the items for the large icon view to the current view data source, limited to the number of items to display\n this.largeIconInstance.items = currentViewItems.slice(0, this.itemCount);\n }\n /**\n * Sets the height of the top and bottom elements that are used for virtualization.\n * These elements are used to give the appearance of an infinitely scrolling list.\n *\n * @returns {void}\n */\n setUlElementHeight() {\n // Calculate the number of items in the last row\n this.lastRowCount = (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount ?\n (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount : this.rowItemCount;\n // Create top and bottom elements\n this.topElement = this.filemanagerInstance.createElement('div');\n this.topElement.classList.add('e-virtual-top');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.topElement, this.largeIconInstance.element.firstElementChild.firstChild);\n this.bottomElement = this.filemanagerInstance.createElement('div');\n this.bottomElement.classList.add('e-virtual-bottom');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.bottomElement, null);\n // Get the margin value for list items\n const marginValue = parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-bottom'), 10);\n // Calculate the height of a single list item\n this.listItemHeight = this.largeIconInstance.itemList[0].getBoundingClientRect().height + marginValue;\n // Calculate the total height of the list\n this.totalHeight = (Object.keys(this.largeIconInstance.allItems).length / this.rowItemCount) * this.listItemHeight;\n // Set the initial height of the top and bottom elements\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n // Initialize the top and bottom element heights\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n // Initialize the list difference variable\n this.listDiff = 0;\n // Set the initial rendered count\n this.renderedCount = this.itemCount;\n }\n /**\n * Calculates the number of items to display in the list based on the available width and height.\n *\n * @param {number} dataSourceLength The length of the data source.\n * @returns {number} The number of items to display.\n */\n getItemCount(dataSourceLength) {\n // Get the margin values for list items\n const widthMargin = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-right'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-left'), 10);\n // Calculate the number of items that can fit in a single row\n this.rowItemCount =\n Math.floor(parseFloat(formatUnit(this.largeIconInstance.element.firstElementChild.clientWidth)) /\n (this.itemList[0].offsetWidth + widthMargin));\n // Calculate the number of items that can fit in the available height\n let itemCount = this.rowItemCount *\n (Math.round(parseFloat(formatUnit(this.largeIconInstance.element.clientHeight)) / this.itemList[0].offsetHeight));\n // If the calculated item count is greater than the data source length, set the item count to the data source length\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n }\n /**\n * Wires or un wires the scroll event for the list element.\n *\n * @param {boolean} destroy - Set `true` to unwire the scroll event.\n * @returns {void}\n */\n wireScrollEvent(destroy) {\n if (!destroy) {\n // Wire the scroll event\n EventHandler.add(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll, this);\n }\n else {\n // Unwire the scroll event\n EventHandler.remove(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll);\n }\n }\n /**\n * Handles the scroll event for the list element.\n * This method updates the top and bottom elements and the displayed items based on the scroll position.\n *\n * @returns {void}\n * @private\n */\n onVirtualUiScroll() {\n // Set the starting height to 0\n const startingHeight = 0;\n // Get the current scroll position\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n const scroll = this.getscrollerHeight(startingHeight);\n // Calculate the height of the top element\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n // Calculate the height of the bottom element\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n // If the scroll position is less than or equal to the total height, set the top and bottom element heights.\n // Otherwise, set the top element height to the total height and the bottom element height to 0.\n [this.topElementHeight, this.bottomElementHeight] = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0];\n // If the top element height has changed, update the top and bottom element heights and re-render the items.\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n // Check whether the scroll direction is upward or downward\n if (scroll > this.scrollPosition) {\n // Scrolling is upward\n const listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n this.onNormalScroll(listDiff, true);\n }\n else {\n // Scrolling is downward\n const listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n this.onNormalScroll(listDiff, false);\n }\n }\n // Update the list difference and scroll position variables\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n this.scrollPosition = scroll;\n // Update the list of items and the items property of the largeIconInstance\n this.largeIconInstance.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.largeIconInstance.element));\n this.itemCount = this.itemCount !== this.largeIconInstance.itemList.length ?\n this.largeIconInstance.itemList.length : this.itemCount;\n this.largeIconInstance.items = this.largeIconInstance.allItems.slice(this.renderedCount -\n this.itemCount, this.renderedCount);\n }\n /**\n * Calculates the current scroll position of the list element.\n *\n * @param {number} startingHeight The starting height from which to calculate the scroll position.\n * @returns {number} The current scroll position.\n * @private\n */\n getscrollerHeight(startingHeight) {\n // If the scroll position is less than or equal to the starting height, return 0.\n // Otherwise, return the scroll position minus the starting height.\n return ((this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight) <= 0) ? 0 :\n (this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight);\n }\n /**\n * This method updates the displayed items and the selection based on the scroll direction.\n *\n * @param {number} listDiff The number of rows to update.\n * @param {boolean} isScrollingDown If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\n */\n onNormalScroll(listDiff, isScrollingDown) {\n // Update the displayed items\n for (let i = 0; i < listDiff; i++) {\n this.updateUI(isScrollingDown);\n }\n }\n /**\n * Updates the items in the large icons view.\n *\n * @param {boolean} isScrollingDown - If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\n */\n updateUI(isScrollingDown) {\n if (isScrollingDown) {\n // Get the next batch of items to be displayed\n this.items = this.largeIconInstance.allItems.slice(this.renderedCount, this.renderedCount + this.rowItemCount);\n // If there are items to be displayed, create list elements for them and append them to the list\n if (this.items.length > 0) {\n const listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n this.itemList.forEach((liEle) => {\n this.largeIconInstance.element.firstElementChild.insertBefore(liEle, this.bottomElement);\n });\n // Update the rendered count variable\n this.renderedCount = (this.largeIconInstance.allItems.length >= this.renderedCount + this.rowItemCount) ?\n this.renderedCount + this.rowItemCount : this.renderedCount + this.lastRowCount;\n // Remove the first batch of items from the list\n for (let i = 0; i < this.rowItemCount; i++) {\n detach(this.topElement.nextElementSibling);\n }\n }\n }\n else {\n // Scrolling up\n let lastItemIndex;\n let isAllRendered;\n if (this.renderedCount === this.largeIconInstance.allItems.length) {\n // Set lastItemIndex to the last item in the last row\n lastItemIndex = this.renderedCount - (this.itemCount - this.rowItemCount + this.lastRowCount);\n // Set renderedCount to the total number of items that have been rendered, except for the items in the last row\n this.renderedCount = ((this.renderedCount - this.lastRowCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.lastRowCount);\n // Set isAllRendered to true to indicate that all items have been rendered\n isAllRendered = true;\n }\n else {\n // Set lastItemIndex to the last item in the current row\n lastItemIndex = this.renderedCount - this.itemCount;\n // Set renderedCount to the total number of items that have been rendered, except for the items in the current row\n this.renderedCount = ((this.renderedCount - this.rowItemCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.rowItemCount);\n }\n // Set startItemIndex to the first item in the current or previous row\n const startItemIndex = (lastItemIndex - this.rowItemCount > 0) ? lastItemIndex - this.rowItemCount : 0;\n // Set the items array to the items in the current or previous row\n this.items = this.largeIconInstance.allItems.slice(startItemIndex, lastItemIndex);\n if (this.items.length > 0) {\n // Create a list of elements from the items array\n const listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n // Set the itemList array to the list items in the list elements\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Add the items to the beginning of the list\n for (let len = this.itemList.length; len > 0; len--) {\n this.largeIconInstance.element.firstElementChild.insertBefore(this.itemList[len - 1], this.topElement.nextElementSibling);\n }\n // Remove the last row of items from the list\n for (let i = 0; i < ((isAllRendered) ? this.lastRowCount : this.rowItemCount); i++) {\n detach(this.bottomElement.previousElementSibling);\n }\n }\n }\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n getModuleName() {\n return 'virtualization';\n }\n /**\n * Destroys the component.\n *\n * @returns {void}\n */\n destroy() {\n // If the file manager has already been destroyed, return immediately\n if (this.filemanagerInstance.isDestroyed) {\n return;\n }\n // If the large icon element has a child element, unwire the scroll event\n if (!isNullOrUndefined(this.largeIconInstance.element.firstElementChild)) {\n this.wireScrollEvent(true);\n }\n }\n}\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, isFileSystemData } from '../common/operations';\nimport { createDialog } from '../pop-up/dialog';\nimport { updatePath, getPath, getDirectories } from '../common/utility';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getDirectoryPath, getModule, getPathId } from '../common/index';\nimport { copyFiles, cutFiles, removeActive, pasteHandler, getParentPath, readDropPath } from '../common/index';\nimport { hasEditAccess, createDeniedDialog, hasDownloadAccess, getAccessClass } from '../common/index';\n/**\n * NavigationPane module\n */\nexport class NavigationPane {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n /* istanbul ignore next */\n constructor(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n this.expandTree = false;\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.isSameNodeClicked = false;\n this.isNodeExpandCalled = false;\n this.renameParent = null;\n // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = null;\n // Specifies whether the nodeClicked event of the treeview control is triggered or not.\n this.isNodeClickCalled = false;\n // Specifies whether to restrict node selection in the treeview control.\n this.restrictSelecting = false;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n onInit() {\n if (!isNOU(this.treeObj)) {\n return;\n }\n const rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n const attr = {};\n const id = getValue('id', rootData);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new BaseTreeView({\n fields: {\n dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name',\n hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'\n },\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n sortOrder: this.parent.navigationPaneSettings.sortOrder,\n nodeSelecting: this.onNodeSelecting.bind(this),\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + CLS.TREE_ID);\n this.wireEvents();\n }\n addDragDrop() {\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: (args) => {\n dragStartHandler(this.parent, args, this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n }\n dragHelper(args) {\n const dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(CLS.FULLROW)) {\n return null;\n }\n const 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 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 getDragPath(dragLi, text) {\n const path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n }\n getDropPath(node, text) {\n const id = node.getAttribute('data-id');\n const newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId);\n }\n onDrowNode(args) {\n const eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n }\n addChild(files, target, prevent) {\n const directories = getDirectories(files);\n const targetDirectory = this.getTreeData(target);\n if (directories.length > 0 && targetDirectory.length > 0 &&\n (directories[0].filterPath == null ||\n isNOU(targetDirectory[0])\n && targetDirectory[0].filterPath == null\n || directories[0].filterPath !==\n targetDirectory[0].filterPath)) {\n let length = 0;\n const folders = directories;\n while (length < directories.length) {\n // eslint-disable-next-line camelcase\n folders[parseInt(length.toString(), 10)]._fm_icon = 'e-fe-folder';\n const attr = {};\n const id = getValue('id', folders[length]);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length])) {\n setValue('class', getAccessClass(folders[length]), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length]);\n }\n length++;\n }\n const element = select('[data-uid=\"' + target + '\"]', this.treeObj.element);\n const childElements = select('ul', element);\n if (isNOU(childElements)) {\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n }\n }\n // Node Selecting event handler\n onNodeSelecting(args) {\n if (!args.isInteracted && !this.isRightClick &&\n !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {\n this.restrictSelecting = false;\n this.isNodeClickCalled = false;\n return;\n }\n if (!this.renameParent) {\n this.parent.activeModule = 'navigationpane';\n const nodeData = this.getTreeData(getValue('id', args.nodeData));\n if (args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1] && !this.isRightClick && !this.isNodeClickCalled || this.isSameNodeClicked) {\n this.isNodeClickCalled = false;\n if (!this.isSameNodeClicked) {\n this.isSameNodeClicked = true;\n const selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n if (!this.isRightClick) {\n const eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n }\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.isNodeClickCalled = true;\n this.isSameNodeClicked = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n }\n else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {\n const selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: this.isNodeClickCalled };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n }\n }\n // Opens the folder while clicking open context menu item in the treeview.\n openFileOnContextMenuClick(node) {\n const data = this.treeObj.getTreeData(node);\n this.parent.selectedItems = [];\n this.parent.itemData = data;\n this.activeNode = node;\n this.parent.activeModule = 'navigationpane';\n const eventArgs = { cancel: false, fileDetails: data[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n this.isNodeClickCalled = true;\n if (!eventArgs.cancel) {\n updatePath(node, this.parent.itemData[0], this.parent);\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n this.treeObj.selectedNodes = [node.getAttribute('data-uid')];\n }\n }\n onNodeSelected(args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n this.isNodeClickCalled = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent) {\n this.parent.pathId = getPathId(args.node);\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n const nodeData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n const previousPath = this.parent.path;\n if (!this.isRightClick && this.isSameNodeClicked) {\n updatePath(args.node, this.parent.itemData[0], this.parent);\n }\n else {\n this.parent.pathId = getPathId(args.node);\n this.parent.visitedItem = args.node;\n }\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n if (previousPath !== this.parent.path) {\n if (!this.isRightClick && this.isSameNodeClicked) {\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.isNodeClickCalled = true;\n }\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = this.isSameNodeClicked = false;\n }\n /* istanbul ignore next */\n onPathDrag(args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n }\n /* istanbul ignore next */\n onNodeExpand(args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.isNodeExpandCalled = true;\n const text = getValue('text', args.nodeData);\n const id = args.node.getAttribute('data-id');\n const isId = isNOU(id) ? false : true;\n const newText = isNOU(id) ? text : id;\n const path = getPath(args.node, newText, isId);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.pathId.push(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n }\n }\n /* istanbul ignore next */\n onNodeExpanded(args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n this.isNodeExpandCalled = false;\n }\n onNodeClicked(args) {\n this.parent.activeModule = 'navigationpane';\n this.previousSelected = this.treeObj.selectedNodes;\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n const layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(events.modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && !this.isNodeClickCalled && !this.isNodeExpandCalled) {\n if (args.event.which === 3) {\n this.isRightClick = true;\n }\n this.isSameNodeClicked = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n }\n /* istanbul ignore next */\n onNodeEditing(args) {\n if (!isNOU(args.innerHtml)) {\n args.cancel = true;\n }\n }\n onPathChanged(args) {\n this.parent.isCut = false;\n const currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n const sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n const ul = (!isNOU(sNode)) ? select('.' + CLS.LIST_PARENT, sNode) : null;\n if (isNOU(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], !this.expandTree);\n }\n this.expandNodeTarget = '';\n }\n this.expandTree = false;\n if (isNOU(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n if (this.parent.uploadObj.directoryUpload && !(this.parent.hasId)) {\n this.updateTree(args);\n }\n }\n updateTree(args) {\n if (this.treeObj) {\n const id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n }\n updateTreeNode(args, id) {\n const toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n }\n removeChildNodes(id) {\n const sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n const parent = select('.' + CLS.LIST_PARENT, sNode);\n const childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n }\n onOpenEnd(args) {\n const 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 onOpenInit(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 onInitialEnd(args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n }\n onFinalizeEnd(args) {\n this.onInit();\n const id = getValue('_fm_id', args.cwd);\n this.addChild(args.files, id, false);\n this.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n }\n onCreateEnd(args) {\n this.updateTree(args);\n }\n onSelectedData() {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n }\n onDeleteInit() {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n const name = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name], this.parent.path, 'delete');\n }\n }\n /* istanbul ignore next */\n onDeleteEnd(args) {\n if (this.parent.activeModule === 'navigationpane') {\n const selectedNode = this.treeObj.selectedNodes[0];\n const selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n const 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 onRefreshEnd(args) {\n this.updateTree(args);\n }\n onRenameInit() {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n }\n /* istanbul ignore next */\n onRenameEndParent(args) {\n const 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 let 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 const 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 const id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n /* istanbul ignore next */\n onRenameEnd(args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n const data = this.treeObj.getTreeData();\n let 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 const 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 onPropertyChanged(e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (const prop of Object.keys(e.newProp)) {\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, events.finalizeEnd, '/');\n if (e.oldProp.navigationPaneSettings.sortOrder !== e.newProp.navigationPaneSettings.sortOrder) {\n this.treeObj.sortOrder = e.newProp.navigationPaneSettings.sortOrder;\n }\n break;\n }\n }\n }\n /* istanbul ignore next */\n onDownLoadInit() {\n this.doDownload();\n }\n onSelectionChanged(e) {\n this.treeObj.selectedNodes = [e.selectedNode];\n }\n onClearPathInit(e) {\n this.removeChildNodes(e.selectedNode);\n }\n onDragEnd(args) {\n let 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 getMoveNames(files, flag, path) {\n const moveNames = [];\n for (let i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n let name = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n const index = path.lastIndexOf('/');\n name = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n const resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name, false));\n for (let j = 0; j < resultData.length; j++) {\n let 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 onCutEnd(args) {\n let 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 selectResultNode(resultObj) {\n if (!this.parent.hasId) {\n const path = getValue('filterPath', resultObj);\n const itemname = getValue('name', resultObj);\n const data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n const resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n const id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n const selectedNode = this.treeObj.getTreeData().filter((obj) => obj.name === resultObj.name)[0];\n this.treeObj.selectedNodes = [getValue('_fm_id', selectedNode)];\n this.treeObj.dataBind();\n }\n }\n onDropPath(args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n }\n onpasteEnd(args) {\n let 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 const 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 const id = getValue(this.treeObj.fields.id, resultData[0]);\n const 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 checkDropPath(args) {\n if (isFileSystemData(this.parent) && this.parent.path === this.parent.dropPath || this.parent.targetModule === 'navigationpane') {\n return;\n }\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 onpasteInit() {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n const obj = this.parent.isDragDrop || isFileSystemData(this.parent) ? this.parent.dragData : this.parent.actionRecords;\n for (let 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 oncutCopyInit() {\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 addEventListener() {\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 removeEventListener() {\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 onDetailsInit() {\n if (this.parent.activeModule === this.getModuleName()) {\n const dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n }\n onMenuItemData(args) {\n if (this.parent.activeModule === this.getModuleName()) {\n const liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n }\n /* istanbul ignore next */\n onDragging(args) {\n const ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n const level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n }\n onDropInit(args) {\n if (this.parent.targetModule === this.getModuleName()) {\n const 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 getModuleName() {\n return 'navigationpane';\n }\n destroy() {\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 wireEvents() {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n }\n unWireEvents() {\n this.keyboardModule.destroy();\n }\n /* istanbul ignore next */\n keyDown(e) {\n const action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n if (this.parent.pathId[0] !== this.activeNode.getAttribute('data-uid')) {\n this.updateItemData();\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n this.removeNodes = [];\n createDialog(this.parent, 'Delete');\n }\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n const 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 getTreeData(args) {\n const data = this.treeObj.getTreeData(args);\n for (let 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 updateRenameData() {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n }\n updateItemData() {\n const data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n }\n updateActionData() {\n this.updateItemData();\n const 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 doDownload() {\n const newPath = getParentPath(this.parent.path);\n const itemId = this.treeObj.selectedNodes[0];\n const name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n }\n}\n","import { Grid, Resize, ContextMenu, Sort, VirtualScroll } from '@syncfusion/ej2-grids';\nimport { select, KeyboardEvents, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, Touch, setValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Internationalization, closest, Draggable, initializeCSPTemplate, extend, SanitizeHtmlHelper } 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/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * DetailsView module\n */\nexport class DetailsView {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n constructor(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.pasteOperation = false;\n this.uploadOperation = false;\n Grid.Inject(Resize, ContextMenu, Sort, VirtualScroll);\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.GRID_ID, this.parent.element);\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n tab: 'tab',\n moveDown: 'downarrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n ctrlUp: 'ctrl+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n end: 'end',\n home: 'home',\n moveUp: 'uparrow',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftdel: 'shift+delete',\n ctrlD: 'ctrl+d',\n f2: 'f2',\n ctrlA: 'ctrl+a',\n enter: 'enter'\n };\n }\n /* istanbul ignore next */\n render(args) {\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n const items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n const columns = this.getColumns();\n let sortSettings;\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 enableVirtualization: this.parent.enableVirtualization,\n enablePersistence: this.parent.enablePersistence,\n enableVirtualMaskRow: true,\n sortSettings: { allowUnsort: false, columns: sortSettings },\n columns: columns,\n recordDoubleClick: this.DblClickEvents.bind(this),\n beforeDataBound: this.onBeforeDataBound.bind(this),\n dataBound: this.onDataBound.bind(this),\n rowDataBound: this.onRowDataBound.bind(this),\n actionBegin: this.onActionBegin.bind(this),\n headerCellInfo: this.onHeaderCellInfo.bind(this),\n width: '100%',\n height: (this.parent.enableVirtualization) ? this.getGridHeight() : 'auto',\n beforeCopy: (args) => { args.cancel = true; },\n load: function () {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\n });\n if (this.parent.isReact) {\n this.gridObj.isReact = true;\n this.gridObj.portals = [];\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n this.gridObj.isStringTemplate = true;\n this.gridObj.appendTo('#' + this.parent.element.id + CLS.GRID_ID);\n this.wireEvents();\n this.adjustHeight();\n this.emptyArgs = args;\n }\n }\n reactTemplateRender(args) {\n this.parent['portals'] = args;\n if (this.parent.portals && this.parent.toolbarModule && this.parent.toolbarModule.toolbarObj &&\n this.parent.toolbarModule.toolbarObj.portals) {\n this.parent['portals'] = this.parent['portals'].concat(this.parent.toolbarModule.toolbarObj.portals);\n }\n this.parent.notify('renderReactTemplate', this.parent['portals']);\n this.parent['renderReactTemplates']();\n }\n /**\n * Gets the grid height.\n *\n * @returns {number} - The grid height.\n * @private\n */\n getGridHeight() {\n // Get the content pane and breadcrumb bar elements\n const pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n const bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n // The maximum height of the header is 36\n const headerMaxHeight = 36;\n // Calculate and return the grid height\n return (pane.offsetHeight - bar.offsetHeight - headerMaxHeight);\n }\n checkNameWidth() {\n const initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (let 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 adjustWidth(columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n let nameWidth;\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 getColumns() {\n let columns;\n const enableHtmlSanitizer = this.parent.enableHtmlSanitizer;\n if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: initializeCSPTemplate(function (data) {\n const name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return `<div class=\"e-fe-text\">${name}</div><div class=\"e-fe-date\">${data._fm_modified}</div><span class=\"e-fe-size\">${data.size}</span>`;\n })\n }\n ];\n }\n else {\n columns = extend([], this.parent.detailsViewSettings.columns, null, true);\n this.adjustWidth(columns, 'name');\n for (let i = 0, len = columns.length; i < len; i++) {\n columns[i].headerText = getLocaleText(this.parent, columns[i].headerText);\n if (columns[i].field === 'name' && !isNOU(columns[i].template) && !(typeof columns[i].template === 'function')) {\n const template = columns[i].template;\n columns[i].template = initializeCSPTemplate(function (data) {\n const name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return template.replace(/\\${name}/g, name);\n });\n }\n }\n }\n const iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n const icon = {\n field: 'type', width: iWidth, minWidth: iWidth,\n template: initializeCSPTemplate(function (data) {\n return `<span class=\"e-fe-icon ${data._fm_iconClass}\"></span>`;\n }), allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: initializeCSPTemplate(function () {\n return '<span class=\\'e-fe-icon e-fe-folder\\'></span>';\n })\n };\n columns.unshift(icon);\n if (this.parent.showItemCheckBoxes) {\n const cWidth = (this.parent.isBigger ? '36' : '26');\n const 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 (let i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n return columns;\n }\n adjustHeight() {\n if (!this.gridObj) {\n return;\n }\n const pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n const bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n const gridHeader = select('.' + CLS.GRID_HEADER, this.parent.element);\n const height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n }\n renderCheckBox() {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n onRowDataBound(args) {\n let td = select('.e-fe-grid-name', args.row);\n if (!td) {\n const columns = this.parent.detailsViewSettings.columns;\n for (let 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 const text = getValue('name', args.data);\n const textEle = args.row.querySelector('[title= \"' + text + '\"]');\n if (textEle) {\n const name = getValue('name', args.data);\n const type = getValue('type', args.data);\n textEle.innerHTML = name.substr(0, name.length - type.length);\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n const sizeEle = args.row.querySelector('.e-fe-size');\n let modifiedSize;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n const sizeValue = getValue('size', args.data);\n const intl = new Internationalization(this.parent.locale);\n let sizeFormat;\n const columns = this.parent.detailsViewSettings.columns;\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].field === 'size') {\n sizeFormat = !isNullOrUndefined(columns[i].format) ? columns[i].format.toString() : 'n';\n break;\n }\n }\n const value = intl.formatNumber((sizeValue / 1024), { format: sizeFormat });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n const dateEle = args.row.querySelector('.e-fe-date');\n const intl = new Internationalization(this.parent.locale);\n const columns = this.parent.detailsViewSettings.columns;\n let format;\n for (let i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n const formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n const 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 const eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n }\n onActionBegin(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 const rows = this.gridObj.getSelectedRowIndexes();\n let len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n const 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 onHeaderCellInfo(args) {\n const checkWrap = args.node.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n }\n onBeforeDataBound(args) {\n showSpinner(this.parent.element);\n const nameColumn = this.parent.detailsViewSettings.columns.find((column) => column.field === this.parent.sortBy);\n if (nameColumn && !('sortComparer' in nameColumn)) {\n const items = getSortedData(this.parent, (this.parent.enableVirtualization)\n ? args.result\n : this.gridObj.dataSource);\n args.result = items;\n }\n }\n /* istanbul ignore next */\n onDataBound() {\n this.createDragObj();\n if ((this.parent.selectedItems.length !== 0 && !this.parent.enableVirtualization) ||\n ((this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization &&\n this.element.querySelector('.e-content').scrollTop === 0))) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem) {\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n const hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n const hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n const cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n const hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n const 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 selectRecords(nodes) {\n const gridRecords = this.gridObj.getCurrentViewRecords();\n const sRecords = [];\n for (let i = 0, len = gridRecords.length; i < len; i++) {\n const node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n else if (!this.parent.showFileExtension && !this.parent.hasId && node.includes('.')) {\n const Str2 = node.split('.').slice(0, -1).join('.');\n if (nodes.indexOf(Str2) !== -1) {\n sRecords.push(i);\n }\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n }\n addSelection(data) {\n const items = this.gridObj.getCurrentViewRecords();\n let 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 const 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 const index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n }\n onSortColumn() {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n if (this.element.querySelector('.e-content').scrollTop !== 0) {\n this.gridObj.freezeRefresh();\n }\n }\n onPropertyChanged(e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (const prop of Object.keys(e.newProp)) {\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 const 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 const slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNOU(this.gridObj)) {\n this.gridObj.clearSelection();\n this.interaction = true;\n }\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n }\n onPathChanged(args) {\n this.parent.isCut = false;\n const pathField = this.parent.detailsViewSettings.columns.find((column) => column.field === 'filterPath');\n if ((this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) ||\n (!isNullOrUndefined(pathField) && !isNullOrUndefined(pathField.hideAtMedia) && pathField.hideAtMedia !== '')) {\n this.parent.searchedItems = [];\n if (!this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n else {\n this.updatePathColumn();\n }\n }\n removeBlur(this.parent);\n if (this.parent.view === 'Details') {\n /* istanbul ignore next */\n this.isInteracted = false;\n showSpinner(this.parent.element);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.gridObj.freezeRefresh();\n if (this.parent.isReact) {\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n }\n this.emptyArgs = args;\n }\n updatePathColumn() {\n const len = this.gridObj.columns.length;\n const columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n const 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 checkEmptyDiv(args) {\n const 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 const 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 onOpenInit() {\n if (this.parent.activeModule === 'detailsview') {\n const data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n }\n DblClickEvents(args) {\n this.gridObj.selectRows([args.rowIndex]);\n let data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n }\n openContent(data) {\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionRead);\n return;\n }\n const eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, (fileOpenArgs) => {\n if (!fileOpenArgs.cancel) {\n const name = getValue('name', data);\n if (getValue('isFile', data)) {\n const icon = fileType(data);\n if (icon === CLS.ICON_IMAGE) {\n const imgUrl = getImageUrl(this.parent, data);\n createImageDialog(this.parent, name, imgUrl);\n }\n }\n else {\n const val = this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !this.parent.isFiltered) {\n const id = getValue('id', data);\n this.parent.oldPath = this.parent.path;\n const newPath = this.parent.path + (isNOU(id) ? name : id) + '/';\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathNames.push(name);\n this.parent.pathId.push(getValue('_fm_id', data));\n this.parent.itemData = [data];\n openAction(this.parent);\n }\n else {\n openSearchFolder(this.parent, data);\n }\n this.parent.isFiltered = false;\n }\n this.element.focus();\n if (this.parent.enableVirtualization) {\n this.parent.element.querySelector('#' + this.parent.element.id + CLS.IMG_DIALOG_ID).focus();\n }\n }\n });\n }\n /* istanbul ignore next */\n onLayoutChange(args) {\n if (this.parent.view === 'Details') {\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(events.hideLayout, {});\n this.gridObj.element.classList.remove(CLS.DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n }\n /* istanbul ignore next */\n onSearchFiles(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 removePathColumn(isRefresh) {\n const len = this.gridObj.columns.length;\n const columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath')) {\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.gridObj.sortSettings.columns[0]) && this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n 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 onFinalizeEnd(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 onCreateEnd(args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n }\n onRenameInit() {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n }\n onSelectedData() {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n }\n onDeleteInit() {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n }\n /* istanbul ignore next */\n onDeleteEnd(args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n onRefreshEnd(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 onHideLayout() {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(CLS.DISPLAY_NONE);\n }\n }\n onSelectAllInit() {\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 onClearAllInit() {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n }\n /* istanbul ignore next */\n onSelectionChanged() {\n removeClass([this.element], CLS.HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], CLS.HEADER_CHECK);\n }\n }\n onLayoutRefresh() {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n }\n onBeforeRequest() {\n this.isRendered = false;\n }\n onAfterRequest() {\n this.isRendered = true;\n }\n onUpdateSelectionData() {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n addEventListener() {\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 removeEventListener() {\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 onActionFailure() { this.interaction = true; }\n onMenuItemData(args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n }\n onPasteInit() {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n }\n onDetailsInit() {\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 dragHelper(args) {\n const dragTarget = args.sender.target;\n const dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n let name;\n if (dragLi.getElementsByClassName('e-fe-text')[0]) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling.innerText;\n }\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n this.parent.dragData = this.gridObj.getSelectedRecords();\n let 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 onDetailsResize() {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n const gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n const gridHeaderColGroup = gridHeader.firstChild.childNodes[0];\n const gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n const gridHeaderColNames = this.gridObj.getColumns();\n for (let 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 onDetailsResizeHandler() {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n this.adjustHeight();\n }\n }\n createDragObj() {\n if (this.gridObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + CLS.ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: (args) => {\n dragStartHandler(this.parent, args, this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n }\n onDropInit(args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n const 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 let info = null;\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 oncutCopyInit() {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n }\n onpasteEnd(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 onDropPath(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 getModuleName() {\n return 'detailsview';\n }\n destroy() {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n if (this.parent.isReact) {\n this.gridObj.off('reactTemplateRender', this.reactTemplateRender);\n }\n this.unWireEvents();\n this.gridObj.destroy();\n }\n }\n updateType(item) {\n const folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n }\n /* istanbul ignore next */\n onSelection(action, args) {\n const 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 onSelected(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 const 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 const lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n const 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 const rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (let 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 const len = rows.length;\n if (this.parent.enableVirtualization) {\n this.parent.currentItemText = getValue('name', args.data);\n }\n else if (len > 0) {\n const data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n const indexes = getValue('rowIndexes', args);\n const multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNOU(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if ((!this.parent.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n }\n /* istanbul ignore next */\n onPathColumn() {\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 selectedRecords() {\n this.parent.setProperties({ selectedItems: [] }, true);\n const selectedRecords = this.gridSelectNodes();\n let selectSize = 0;\n while (selectSize < selectedRecords.length) {\n const record = selectedRecords[selectSize];\n const name = getItemName(this.parent, record);\n this.parent.selectedItems.push(name);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n onDeSelection(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 const 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 triggerSelect(action, args) {\n const eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n }\n wireEvents() {\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 EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n }\n unWireEvents() {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n }\n wireClickEvent(toBind) {\n if (toBind) {\n const ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: (eve) => {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n this.onClearAllInit();\n }\n },\n tapHold: (e) => {\n if (this.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (this.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', this.parent.allowMultiSelection, this.gridObj.selectionModule);\n addClass([this.parent.element], CLS.MULTI_SELECT);\n }\n const target = e.originalEvent.target;\n if (target) {\n const row = closest(target, '.' + CLS.ROW);\n const index = this.gridObj.getRows().indexOf(row);\n this.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 removeSelection() {\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 removeFocus() {\n this.addFocus(null);\n }\n onBlur(e) {\n if ((e.relatedTarget !== null && closest(e.relatedTarget, '.e-grid') !== e.relatedTarget)) {\n return;\n }\n if (!isNOU(this.gridObj.element)) {\n const thElements = this.gridObj.element.querySelectorAll('th');\n for (let i = 0; i < thElements.length; i++) {\n if (thElements[i].classList.contains('e-focus')) {\n this.addFocus(null);\n }\n }\n }\n }\n getFocusedItemIndex() {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('data-rowindex'), 10) : null;\n }\n /* istanbul ignore next */\n keydownHandler(e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n }\n /* istanbul ignore next */\n keyupHandler(e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n const action = e.action;\n const gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n const gridLength = gridItems.length;\n const focIndex = this.getFocusedItemIndex();\n const selIndex = this.gridObj.selectedRowIndex;\n const selRowIndeces = this.gridObj.getSelectedRowIndexes();\n let rowData;\n let firstItem;\n let lastItem;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1 && this.gridObj.allowSorting === true) {\n if (!e.target.classList.contains('e-fe-grid-icon')) {\n const direction = !e.target.getElementsByClassName('e-ascending').length ? 'Ascending' : 'Descending';\n const currentField = this.gridObj.getColumnByUid(e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid')).field;\n this.gridObj.sortColumn(currentField, direction);\n if (!isNOU(this.getFocusedItem().nextSibling)) {\n this.getFocusedItem().nextSibling.setAttribute('tabindex', '0');\n }\n }\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n const 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 const cnTable = this.gridObj.getContent().querySelector('.e-content');\n const crtSrlPos = cnTable.scrollTop;\n const 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.addHeaderFocus(e);\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 gridSelectNodes() {\n return this.gridObj.getSelectedRecords();\n }\n doDownload() {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n const items = this.parent.itemData;\n for (let 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 performDelete() {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n const items = this.parent.itemData;\n for (let 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 performRename() {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n }\n updateRenameData() {\n const data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n }\n shiftMoveMethod(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 moveFunction(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 spaceSelection(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 const 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 ctrlMoveFunction(items, e, rowIndex) {\n let nextItem;\n if (!isNOU(this.getFocusedItem())) {\n const 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 checkRowsKey(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 InnerItems(fItem, lItem, e) {\n const itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (let i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (let i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n }\n shiftSelectFocusItem(selIndex, fIndex, selRowIndexes, e) {\n const lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n const 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 addFocus(item) {\n const fItem = this.getFocusedItem();\n const 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 addHeaderFocus(e) {\n const treeFocus = select('.e-row', this.element);\n this.gridObj.element.setAttribute('tabindex', '-1');\n let nameFocus;\n if (!isNOU(e.target) && e.target.classList.contains('e-defaultcursor')) {\n this.addFocus(0);\n nameFocus = e.target.nextElementSibling;\n }\n else if (!isNOU(this.gridObj.element.querySelector('.e-focus')) && (this.gridObj.element.querySelector('.e-focus').tagName === 'TH')) {\n nameFocus = this.gridObj.element.querySelector('.e-focus').nextElementSibling;\n this.addFocus(0);\n }\n else {\n nameFocus = select('th.e-fe-grid-icon', this.element);\n }\n if (!isNOU(nameFocus)) {\n nameFocus.setAttribute('tabindex', '0');\n nameFocus.focus();\n addClass([nameFocus], [CLS.FOCUS, CLS.FOCUSED]);\n treeFocus.setAttribute('tabindex', '0');\n if (treeFocus.tabIndex === 0 && nameFocus.tabIndex === 0) {\n removeClass([treeFocus], [CLS.FOCUS, CLS.FOCUSED]);\n }\n }\n }\n getFocusedItem() {\n return select('.' + CLS.FOCUSED, this.element);\n }\n isSelected(selRowIndexes, focIndex) {\n let check = false;\n for (let i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n }\n shiftSelectedItem(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 onMethodCall(e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n const 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 getRecords(nodes) {\n const gridRecords = this.gridObj.getCurrentViewRecords();\n const records = [];\n const hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n const filter = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (let 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 (let i = 0, len = gridRecords.length; i < len; i++) {\n const name = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n }\n deleteFiles(ids) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n const records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n const data = [];\n const newIds = [];\n for (let 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 downloadFiles(ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n const dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n const data = [];\n const newIds = [];\n for (let 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 openFile(id) {\n if (isNOU(id)) {\n return;\n }\n const records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n }\n renameFile(id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n const 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}\n"],"names":["this","__decorate","isNOU","CLS.LIST_ITEM","CLS.LIST_TEXT","CLS.TREE_VIEW","events.hidePaste","events.cutCopyInit","events.showPaste","CLS.BLUR","CLS.HOVER","CLS.ROW","CLS.LARGE_ICON","events.pathColumn","events.layoutChange","events.search","CLS.ROOT","CLS.CONTROL","CLS.GRID_CONTENT","CLS.LARGE_ICONS","events.permissionRead","events.refreshEnd","events.openEnd","CLS.FOLDER","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","CLS.LAYOUT_ID","CLS.BREADCRUMBBAR_ID","CLS.GRID_HEADER","CLS.EMPTY","CLS.LARGE_EMPTY_FOLDER","CLS.EMPTY_CONTENT","CLS.EMPTY_INNER_CONTENT","CLS.GRID_VIEW","events.isFile","events.sortColumn","events.sortByChange","events.finalizeEnd","events.initialEnd","events.clearPathInit","events.pasteInit","events.cutEnd","events.dragEnd","events.pasteEnd","events.pathDrag","events.dropPath","CLS.CLONE","CLS.CONTENT_ID","events.dropInit","CLS.DROP_FOLDER","CLS.DROP_FILE","events.dragging","events.permissionEdit","events.permissionDownload","events.permissionEditContents","events.permissionUpload","CLS.UPLOAD_ID","events.beforeRequest","events.afterRequest","events.searchTextChange","events.selectionChanged","events.createEnd","events.renameEndParent","events.pathChanged","events.renameEnd","events.deleteEnd","CLS.MOB_POPUP","CLS.ROOT_POPUP","CLS.DIALOG_ID","CLS.EXTN_DIALOG_ID","events.actionFailure","events.skipUpload","CLS.VALUE","CLS.ERROR_CONTENT","events.deleteInit","CLS.IMG_DIALOG_ID","CLS.LARGEICON_ID","events.hideLayout","CLS.DISPLAY_NONE","CLS.LIST_PARENT","CLS.ACTIVE","events.selectedData","events.openInit","events.modelChanged","events.methodCall","events.renameInit","events.selectAllInit","events.clearAllInit","events.menuItemData","events.splitterResize","events.resizeEnd","events.detailsInit","events.layoutRefresh","events.updateSelectionData","events.filterEnd","CLS.MULTI_SELECT","CLS.CHECK","CLS.FRAME","CLS.FOCUS","CLS.CB_WRAP","CLS.ICONS","CLS.SEARCH_ID","CLS.ICON_BREADCRUMB","events.updateTreeSelection","CLS.FILTER","events.destroy","Menu","CLS.CONTEXT_MENU_ID","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","CLS.FULLROW","CLS.TOOLBAR_ID","CLS.MENU_ITEM","CLS.SUBMENU_ICON","CLS.TREE_ID","CLS.GRID_ID","CLS.ICON_VIEW","events.downloadInit","CLS.ICON_OPEN","CLS.ICON_UPLOAD","CLS.ICON_CUT","CLS.ICON_COPY","CLS.ICON_PASTE","CLS.ICON_DELETE","CLS.ICON_RENAME","CLS.ICON_NEWFOLDER","CLS.ICON_DETAILS","CLS.ICON_SHORTBY","CLS.TB_OPTION_DOT","CLS.TB_OPTION_TICK","CLS.ICON_REFRESH","CLS.ICON_SELECTALL","CLS.ICON_DOWNLOAD","setAttr","CLS.SPLIT_BAR","CLS.MOBILE","CLS.CHECK_SELECT","CLS.LAYOUT","CLS.NAVIGATION_ID","CLS.NAVIGATION","CLS.LAYOUT_CONTENT","CLS.BREADCRUMBS","CLS.OVERLAY","CLS.UPLOAD_DIALOG_ID","CLS.RTL","BaseToolbar","CLS.TB_ITEM","CLS.ICON_CLEAR","BaseTreeView","events.nodeExpand","ContextMenu","CLS.HEADER_CHECK","CLS.FOCUSED"],"mappings":"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"}