@syncfusion/ej2-filemanager 27.1.52 → 27.1.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +4 -2
- package/dist/ej2-filemanager.min.js +2 -2
- package/dist/ej2-filemanager.umd.min.js +2 -2
- package/dist/ej2-filemanager.umd.min.js.map +1 -1
- package/dist/es6/ej2-filemanager.es2015.js +102 -61
- package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
- package/dist/es6/ej2-filemanager.es5.js +104 -61
- package/dist/es6/ej2-filemanager.es5.js.map +1 -1
- package/dist/global/ej2-filemanager.min.js +2 -2
- package/dist/global/ej2-filemanager.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +11 -11
- package/src/file-manager/base/file-manager-model.d.ts +1 -1
- package/src/file-manager/base/file-manager.js +28 -5
- package/src/file-manager/common/operations.js +57 -44
- package/src/file-manager/common/utility.d.ts +1 -2
- package/src/file-manager/common/utility.js +7 -9
- package/src/file-manager/layout/details-view.js +8 -2
- package/src/file-manager/layout/large-icons-view.js +4 -1
- package/tslint.json +111 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ej2-filemanager.umd.min.js","sources":["../src/file-manager/models/ajax-settings.js","../src/file-manager/models/toolbar-settings.js","../src/file-manager/models/search-settings.js","../src/file-manager/models/details-view-settings.js","../src/file-manager/models/contextMenu-settings.js","../src/file-manager/models/navigation-pane-settings.js","../src/file-manager/models/upload-settings.js","../src/file-manager/models/column.js","../src/file-manager/base/classes.js","../src/file-manager/base/constant.js","../src/file-manager/common/utility.js","../src/file-manager/common/operations.js","../src/file-manager/pop-up/dialog.js","../src/file-manager/layout/large-icons-view.js","../src/file-manager/actions/breadcrumb-bar.js","../src/file-manager/pop-up/context-menu.js","../src/file-manager/models/default-locale.js","../src/file-manager/base/file-manager.js","../src/file-manager/actions/toolbar.js","../src/file-manager/actions/virtualization.js","../src/file-manager/layout/navigation-pane.js","../src/file-manager/layout/details-view.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar AjaxSettings = /** @class */ (function (_super) {\n __extends(AjaxSettings, _super);\n function AjaxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"downloadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"getImageUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"uploadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"url\", void 0);\n return AjaxSettings;\n}(ChildProperty));\nexport { AjaxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var defaultToolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(defaultToolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\nvar ToolbarItem = /** @class */ (function (_super) {\n __extends(ToolbarItem, _super);\n function ToolbarItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], ToolbarItem.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], ToolbarItem.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], ToolbarItem.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], ToolbarItem.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ToolbarItem.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], ToolbarItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], ToolbarItem.prototype, \"align\", void 0);\n __decorate([\n Property(-1)\n ], ToolbarItem.prototype, \"tabIndex\", void 0);\n __decorate([\n Property()\n ], ToolbarItem.prototype, \"name\", void 0);\n return ToolbarItem;\n}(ChildProperty));\nexport { ToolbarItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Search settings of the File Manager.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], SearchSettings.prototype, \"placeholder\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, initializeCSPTemplate } from '@syncfusion/ej2-base';\n/**\n * Specifies the columns in the details view of the file manager.\n */\nexport var columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120,\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 */\nvar DetailsViewSettings = /** @class */ (function (_super) {\n __extends(DetailsViewSettings, _super);\n function DetailsViewSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n __decorate([\n Property(columnArray)\n ], DetailsViewSettings.prototype, \"columns\", void 0);\n return DetailsViewSettings;\n}(ChildProperty));\nexport { DetailsViewSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nexport var folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nexport var layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nvar ContextMenuSettings = /** @class */ (function (_super) {\n __extends(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(fileItems)\n ], ContextMenuSettings.prototype, \"file\", void 0);\n __decorate([\n Property(folderItems)\n ], ContextMenuSettings.prototype, \"folder\", void 0);\n __decorate([\n Property(layoutItems)\n ], ContextMenuSettings.prototype, \"layout\", void 0);\n __decorate([\n Property(true)\n ], ContextMenuSettings.prototype, \"visible\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\nexport { ContextMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the navigationpane settings of the File Manager.\n */\nvar NavigationPaneSettings = /** @class */ (function (_super) {\n __extends(NavigationPaneSettings, _super);\n function NavigationPaneSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('650px')\n ], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('240px')\n ], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(true)\n ], NavigationPaneSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], NavigationPaneSettings.prototype, \"sortOrder\", void 0);\n return NavigationPaneSettings;\n}(ChildProperty));\nexport { NavigationPaneSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar UploadSettings = /** @class */ (function (_super) {\n __extends(UploadSettings, _super);\n function UploadSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], UploadSettings.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(true)\n ], UploadSettings.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"autoClose\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"directoryUpload\", void 0);\n __decorate([\n Property(0)\n ], UploadSettings.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], UploadSettings.prototype, \"maxFileSize\", void 0);\n return UploadSettings;\n}(ChildProperty));\nexport { UploadSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Interface for a class Column\n */\n/* istanbul ignore next */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"headerText\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"minWidth\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('Left')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTextAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"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 return Column;\n}(ChildProperty));\nexport { Column };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var TOOLBAR_ID = '_toolbar';\n/** @hidden */\nexport var LAYOUT_ID = '_layout';\n/** @hidden */\nexport var NAVIGATION_ID = '_navigation';\n/** @hidden */\nexport var TREE_ID = '_tree';\n/** @hidden */\nexport var GRID_ID = '_grid';\n/** @hidden */\nexport var LARGEICON_ID = '_largeicons';\n/** @hidden */\nexport var DIALOG_ID = '_dialog';\n/** @hidden */\nexport var ALT_DIALOG_ID = '_alt_dialog';\n/** @hidden */\nexport var IMG_DIALOG_ID = '_img_dialog';\n/** @hidden */\nexport var EXTN_DIALOG_ID = '_extn_dialog';\n/** @hidden */\nexport var UPLOAD_DIALOG_ID = '_upload_dialog';\n/** @hidden */\nexport var RETRY_DIALOG_ID = '_retry_dialog';\n/** @hidden */\nexport var CONTEXT_MENU_ID = '_contextmenu';\n/** @hidden */\nexport var SORTBY_ID = '_sortby';\n/** @hidden */\nexport var VIEW_ID = '_view';\n/** @hidden */\nexport var SPLITTER_ID = '_splitter';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var BREADCRUMBBAR_ID = '_breadcrumbbar';\n/** @hidden */\nexport var UPLOAD_ID = '_upload';\n/** @hidden */\nexport var RETRY_ID = '_retry';\n/** @hidden */\nexport var SEARCH_ID = '_search';\n/**\n * Specifies the File Manager internal class names\n */\n/** @hidden */\nexport var ROOT = 'e-filemanager';\n/** @hidden */\nexport var CONTROL = 'e-control';\n/** @hidden */\nexport var CHECK_SELECT = 'e-fe-cb-select';\n/** @hidden */\nexport var ROOT_POPUP = 'e-fe-popup';\n/** @hidden */\nexport var MOBILE = 'e-fe-mobile';\n/** @hidden */\nexport var MOB_POPUP = 'e-fe-popup e-fe-mobile';\n/** @hidden */\nexport var MULTI_SELECT = 'e-fe-m-select';\n/** @hidden */\nexport var FILTER = 'e-fe-m-filter';\n/** @hidden */\nexport var LAYOUT = 'e-layout';\n/** @hidden */\nexport var NAVIGATION = 'e-navigation';\n/** @hidden */\nexport var LAYOUT_CONTENT = 'e-layout-content';\n/** @hidden */\nexport var LARGE_ICONS = 'e-large-icons';\n/** @hidden */\nexport var TB_ITEM = 'e-toolbar-item';\n/** @hidden */\nexport var LIST_ITEM = 'e-list-item';\n/** @hidden */\nexport var LIST_TEXT = 'e-list-text';\n/** @hidden */\nexport var LIST_PARENT = 'e-list-parent';\n/** @hidden */\nexport var TB_OPTION_TICK = 'e-icons e-fe-tick';\n/** @hidden */\nexport var TB_OPTION_DOT = 'e-icons e-fe-dot';\n/** @hidden */\nexport var BLUR = 'e-blur';\n/** @hidden */\nexport var ACTIVE = 'e-active';\n/** @hidden */\nexport var HOVER = 'e-hover';\n/** @hidden */\nexport var FOCUS = 'e-focus';\n/** @hidden */\nexport var FOCUSED = 'e-focused';\n/** @hidden */\nexport var CHECK = 'e-check';\n/** @hidden */\nexport var FRAME = 'e-frame';\n/** @hidden */\nexport var CB_WRAP = 'e-checkbox-wrapper';\n/** @hidden */\nexport var ROW = 'e-row';\n/** @hidden */\nexport var ROWCELL = 'e-rowcell';\n/** @hidden */\nexport var EMPTY = 'e-empty';\n/** @hidden */\nexport var EMPTY_CONTENT = 'e-empty-content';\n/** @hidden */\nexport var EMPTY_INNER_CONTENT = 'e-empty-inner-content';\n/** @hidden */\nexport var CLONE = 'e-fe-clone';\n/** @hidden */\nexport var DROP_FOLDER = 'e-fe-drop-folder';\n/** @hidden */\nexport var DROP_FILE = 'e-fe-drop-file';\n/** @hidden */\nexport var FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var ICON_IMAGE = 'e-fe-image';\n/** @hidden */\nexport var ICON_MUSIC = 'e-fe-music';\n/** @hidden */\nexport var ICON_VIDEO = 'e-fe-video';\n/** @hidden */\nexport var LARGE_ICON = 'e-large-icon';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER = 'e-empty-icon e-fe-folder';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER_TWO = 'e-empty-icon.e-fe-folder';\n/** @hidden */\nexport var LARGE_ICON_FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var SELECTED_ITEMS = 'e-items';\n/** @hidden */\nexport var TEXT_CONTENT = 'e-text-content';\n/** @hidden */\nexport var GRID_HEADER = 'e-gridheader';\n/** @hidden */\nexport var TEMPLATE_CELL = 'e-templatecell';\n/** @hidden */\nexport var TREE_VIEW = 'e-treeview';\n/** @hidden */\nexport var MENU_ITEM = 'e-menu-item';\n/** @hidden */\nexport var MENU_ICON = 'e-menu-icon';\n/** @hidden */\nexport var SUBMENU_ICON = 'e-caret';\n/** @hidden */\nexport var GRID_VIEW = 'e-content';\n/** @hidden */\nexport var GRID_CONTENT = 'e-gridcontent';\n/** @hidden */\nexport var ICON_VIEW = 'e-list-parent';\n/** @hidden */\nexport var ICON_OPEN = 'e-icons e-fe-open';\n/** @hidden */\nexport var ICON_UPLOAD = 'e-icons e-fe-upload';\n/** @hidden */\nexport var ICON_CUT = 'e-icons e-fe-cut';\n/** @hidden */\nexport var ICON_COPY = 'e-icons e-fe-copy';\n/** @hidden */\nexport var ICON_PASTE = 'e-icons e-fe-paste';\n/** @hidden */\nexport var ICON_DELETE = 'e-icons e-fe-delete';\n/** @hidden */\nexport var ICON_RENAME = 'e-icons e-fe-rename';\n/** @hidden */\nexport var ICON_NEWFOLDER = 'e-icons e-fe-newfolder';\n/** @hidden */\nexport var ICON_DETAILS = 'e-icons e-fe-details';\n/** @hidden */\nexport var ICON_SHORTBY = 'e-icons e-fe-sort';\n/** @hidden */\nexport var ICON_REFRESH = 'e-icons e-fe-refresh';\n/** @hidden */\nexport var ICON_SELECTALL = 'e-icons e-fe-select';\n/** @hidden */\nexport var ICON_DOWNLOAD = 'e-icons e-fe-download';\n/** @hidden */\nexport var ICON_OPTIONS = 'e-icons e-fe-options';\n/** @hidden */\nexport var ICON_GRID = 'e-icons e-fe-grid';\n/** @hidden */\nexport var ICON_LARGE = 'e-icons e-fe-large';\n/** @hidden */\nexport var ICON_BREADCRUMB = 'e-icons e-fe-breadcrumb';\n/** @hidden */\nexport var ICON_CLEAR = 'e-icons e-fe-clear';\n/** @hidden */\nexport var ICON_DROP_IN = 'e-icons e-fe-drop-in';\n/** @hidden */\nexport var ICON_DROP_OUT = 'e-icons e-fe-drop-out';\n/** @hidden */\nexport var ICON_NO_DROP = 'e-icons e-fe-no-drop';\n/** @hidden */\nexport var ICONS = 'e-icons';\n/** @hidden */\nexport var DETAILS_LABEL = 'e-detailslabel';\n/** @hidden */\nexport var ERROR_CONTENT = 'e-fe-errorcontent';\n/** @hidden */\nexport var STATUS = 'e-status';\n/** @hidden */\nexport var BREADCRUMBS = 'e-address';\n/** @hidden */\nexport var RTL = 'e-rtl';\n/** @hidden */\nexport var DISPLAY_NONE = 'e-display-none';\n/** @hidden */\nexport var COLLAPSED = 'e-node-collapsed';\n/** @hidden */\nexport var FULLROW = 'e-fullrow';\n/** @hidden */\nexport var ICON_COLLAPSIBLE = 'e-icon-collapsible';\n/** @hidden */\nexport var SPLIT_BAR = 'e-split-bar';\n/** @hidden */\nexport var HEADER_CHECK = 'e-headercheck';\n/** @hidden */\nexport var OVERLAY = 'e-fe-overlay';\n/** @hidden */\nexport var VALUE = 'e-fe-value';\n","/**\n * Specifies the File Manager internal variables\n */\n/** @hidden */\nexport var isFile = 'isFile';\n/**\n * Specifies the File Manager internal events\n */\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var finalizeEnd = 'finalize-end';\n/** @hidden */\nexport var createEnd = 'create-end';\n/** @hidden */\nexport var filterEnd = 'filter-end';\n/** @hidden */\nexport var beforeDelete = 'before-delete';\n/** @hidden */\nexport var pathDrag = 'path-drag';\n/** @hidden */\nexport var deleteInit = 'delete-init';\n/** @hidden */\nexport var deleteEnd = 'delete-end';\n/** @hidden */\nexport var refreshEnd = 'refresh-end';\n/** @hidden */\nexport var resizeEnd = 'resize-end';\n/** @hidden */\nexport var splitterResize = 'splitter-resize';\n/** @hidden */\nexport var pathChanged = 'path-changed';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var beforeRequest = 'before-request';\n/** @hidden */\nexport var upload = 'upload';\n/** @hidden */\nexport var skipUpload = 'skip-upload';\n/** @hidden */\nexport var afterRequest = 'after-request';\n/** @hidden */\nexport var download = 'download';\n/** @hidden */\nexport var layoutRefresh = 'layout-refresh';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var search = 'search';\n/** @hidden */\nexport var openInit = 'open-init';\n/** @hidden */\nexport var openEnd = 'open-end';\n/** @hidden */\nexport var selectionChanged = 'selection-changed';\n/** @hidden */\nexport var selectAllInit = 'select-all-init';\n/** @hidden */\nexport var clearAllInit = 'clear-all-init';\n/** @hidden */\nexport var clearPathInit = 'clear-path-init';\n/** @hidden */\nexport var layoutChange = 'layout-change';\n/** @hidden */\nexport var sortByChange = 'sort-by-change';\n/** @hidden */\nexport var nodeExpand = 'node-expand';\n/** @hidden */\nexport var detailsInit = 'details-init';\n/** @hidden */\nexport var menuItemData = 'menu-item-data';\n/** @hidden */\nexport var renameInit = 'rename-init';\n/** @hidden */\nexport var renameEndParent = 'rename-end-parent';\n/** @hidden */\nexport var renameEnd = 'rename-end';\n/** @hidden */\nexport var showPaste = 'show-paste';\n/** @hidden */\nexport var hidePaste = 'hide-paste';\n/** @hidden */\nexport var selectedData = 'selected-data';\n/** @hidden */\nexport var cutCopyInit = 'cut-copy-init';\n/** @hidden */\nexport var pasteInit = 'paste-init';\n/** @hidden */\nexport var pasteEnd = 'paste-end';\n/** @hidden */\nexport var cutEnd = 'cut-end';\n/** @hidden */\nexport var hideLayout = 'hide-layout';\n/** @hidden */\nexport var updateTreeSelection = 'update-tree-selection';\n/** @hidden */\nexport var treeSelect = 'select-node';\n/** @hidden */\nexport var sortColumn = 'sort-column';\n/** @hidden */\nexport var pathColumn = 'path-column';\n/** @hidden */\nexport var searchTextChange = 'search-change';\n/** @hidden */\nexport var beforeDownload = 'before-download';\n/** @hidden */\nexport var downloadInit = 'download-init';\n/** @hidden */\nexport var dropInit = 'drop-init';\n/** @hidden */\nexport var dragEnd = 'drag-end';\n/** @hidden */\nexport var dropPath = 'drop-path';\n/** @hidden */\nexport var dragHelper = 'drag-helper';\n/** @hidden */\nexport var dragging = 'dragging';\n/** @hidden */\nexport var updateSelectionData = 'update-selection-data';\n/** @hidden */\nexport var methodCall = 'method-call';\n/** @hidden */\nexport var permissionRead = 'read';\n/** @hidden */\nexport var permissionEdit = 'write';\n/** @hidden */\nexport var permissionEditContents = 'writeContents';\n/** @hidden */\nexport var permissionCopy = 'copy';\n/** @hidden */\nexport var permissionUpload = 'upload';\n/** @hidden */\nexport var permissionDownload = 'download';\n","import * 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 var referenceIsFile = /\\.\\S+/.test(reference);\n var 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 var referenceParts = [];\n var 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 var referencePart = referenceParts.shift();\n var comparerPart = comparerParts.shift();\n if (referencePart && comparerPart) {\n var 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 var text = getValue('name', data);\n var id = node.getAttribute('data-id');\n var newText = isNOU(id) ? text : id;\n instance.setProperties({ path: getPath(node, newText, instance.hasId) }, true);\n instance.pathId = getPathId(node);\n instance.pathNames = getPathNames(node, text);\n}\n/**\n * Functions for get path in FileManager\n *\n * @param {Element | Node} element - specifies the element.\n * @param {string} text - specifies the text.\n * @param {boolean} hasId - specifies the id.\n * @returns {string} returns the path.\n * @private\n */\nexport function getPath(element, text, hasId) {\n var matched = getParents(element, text, false, hasId);\n var path = '/';\n var len = matched.length - (2);\n for (var i = len; i >= 0; i--) {\n path += matched[i] + '/';\n }\n return path;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} node - specifies the node element.\n * @returns {string[]} returns the path ids.\n * @private\n */\nexport function getPathId(node) {\n var matched = getParents(node, node.getAttribute('data-uid'), true);\n var ids = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n ids.push(matched[i]);\n }\n return ids;\n}\n/**\n * Functions for get path names in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @returns {string[]} returns the path names.\n * @private\n */\nexport function getPathNames(element, text) {\n var matched = getParents(element, text, false);\n var names = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n names.push(matched[i]);\n }\n return names;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @param {boolean} isId - specifies the id.\n * @param {boolean} hasId - checks the id exists.\n * @returns {string[]} returns parent element.\n * @private\n */\nexport function getParents(element, text, isId, hasId) {\n var matched = [text];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, '.' + CLS.LIST_ITEM)) {\n var parentText = isId ? el.getAttribute('data-uid') : (hasId ? el.getAttribute('data-id') :\n select('.' + CLS.LIST_TEXT, el).textContent);\n matched.push(parentText);\n }\n el = el.parentNode;\n if (el.classList.contains(CLS.TREE_VIEW)) {\n break;\n }\n }\n return matched;\n}\n/**\n * Functions for generate path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function generatePath(parent) {\n var key = parent.hasId ? 'id' : 'name';\n var newPath = '/';\n var i = 1;\n for (i; i < parent.pathId.length; i++) {\n var 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 var blurEle = parent.activeElements;\n if (parent.activeModule !== 'navigationpane') {\n parent.targetPath = parent.path;\n }\n else {\n parent.targetPath = getParentPath(parent.path);\n }\n var i = 0;\n if (blurEle) {\n getModule(parent, blurEle[0]);\n if (action === 'cut') {\n while (i < blurEle.length) {\n addBlur(blurEle[i]);\n i++;\n }\n }\n }\n i = 0;\n parent.selectedNodes = [];\n parent.enablePaste = true;\n parent.notify(events.showPaste, {});\n while (i < parent.activeRecords.length) {\n parent.actionRecords.push(parent.activeRecords[i]);\n parent.selectedNodes.push(getValue('name', parent.activeRecords[i]));\n i++;\n }\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) &&\n parent.activeModule !== 'navigationpane') {\n parent.selectedNodes = [];\n parent.isSearchCut = true;\n var i_1 = 0;\n while (i_1 < parent.selectedItems.length) {\n parent.selectedNodes.push(parent.selectedItems[i_1]);\n i_1++;\n }\n }\n return true;\n}\n/**\n * Adds blur to the elements\n *\n * @param {Element} nodes - specifies the nodes.\n * @returns {void}\n * @private\n */\nexport function addBlur(nodes) {\n nodes.classList.add(CLS.BLUR);\n}\n/**\n * Removes blur from elements\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} hover - specifies the hover string.\n * @returns {void}\n * @private\n */\nexport function removeBlur(parent, hover) {\n var blurEle = (!hover) ? parent.element.querySelectorAll('.' + CLS.BLUR) :\n parent.element.querySelectorAll('.' + CLS.HOVER);\n var i = 0;\n while (i < blurEle.length) {\n blurEle[i].classList.remove((!hover) ? CLS.BLUR : CLS.HOVER);\n i++;\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getModule(parent, element) {\n if (element) {\n if (element.classList.contains(CLS.ROW)) {\n parent.activeModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICON)) {\n parent.activeModule = 'largeiconsview';\n }\n else {\n parent.activeModule = 'navigationpane';\n }\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} value - specifies the value.\n * @param {boolean} isLayoutChange - specifies the layout change.\n * @returns {void}\n * @private\n */\nexport function searchWordHandler(parent, value, isLayoutChange) {\n var searchWord;\n if (value.length === 0 && !parent.isFiltered) {\n parent.notify(events.pathColumn, { args: parent });\n }\n if (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 var filteredData = parent.fileSystemData.filter(function (obj) { return obj.parentId !== null; });\n var data = new DataManager(filteredData).\n executeLocal(new Query().where('name', parent.searchSettings.filterType, value, parent.searchSettings.ignoreCase));\n var 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 var caseSensitive = parent.searchSettings.ignoreCase;\n var hiddenItems = parent.showHiddenItems;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchWord, hiddenItems, !caseSensitive);\n }\n else {\n if (!parent.isFiltered) {\n if (parent.isSortByClicked) {\n parent.notify(events.layoutChange, { files: (parent.oldView === 'Details') ? parent.detailsviewModule.gridObj.dataSource : parent.largeiconsviewModule.allItems });\n parent.isSortByClicked = false;\n }\n else {\n read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n }\n else {\n filter(parent, events.layoutChange);\n }\n }\n}\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} view - specifies the view.\n * @returns {void}\n * @private\n */\nexport function updateLayout(parent, view) {\n parent.oldView = parent.view;\n parent.setProperties({ view: view }, true);\n if (parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) {\n parent.layoutSelectedItems = parent.selectedItems;\n }\n var searchWord = '';\n if (parent.breadcrumbbarModule.searchObj.element.value) {\n searchWord = parent.breadcrumbbarModule.searchObj.element.value;\n }\n parent.isLayoutChange = true;\n searchWordHandler(parent, searchWord, true);\n}\n/* istanbul ignore next */\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getTargetModule(parent, element) {\n var tartgetModule = '';\n if (element) {\n if (closest(element, '.' + CLS.ROOT + '.' + CLS.CONTROL + ' .' + CLS.GRID_CONTENT)) {\n tartgetModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICONS)) {\n tartgetModule = 'largeiconsview';\n }\n else if (element.classList.contains('e-fullrow') ||\n element.classList.contains('e-icon-expandable')) {\n tartgetModule = 'navigationpane';\n }\n else if (closest(element, '.e-address-list-item')) {\n tartgetModule = 'breadcrumbbar';\n }\n else {\n tartgetModule = '';\n }\n }\n parent.targetModule = tartgetModule;\n}\n/* istanbul ignore next */\n/**\n * refresh the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function refresh(parent) {\n parent.itemData = [getPathObject(parent)];\n if (!hasReadAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionRead);\n }\n else {\n read(parent, events.refreshEnd, parent.path);\n }\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function openAction(parent) {\n read(parent, events.openEnd, parent.path);\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {Object} - returns the path data.\n * @private\n */\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 var isFile = getValue('isFile', file);\n if (!isFile) {\n return CLS.FOLDER;\n }\n var imageFormat = ['bmp', 'dib', 'jpg', 'jpeg', 'jpe', 'jfif', 'gif', 'tif', 'tiff', 'png', 'ico'];\n var audioFormat = ['mp3', 'wav', 'aac', 'ogg', 'wma', 'aif', 'fla', 'm4a'];\n var videoFormat = ['webm', 'mkv', 'flv', 'vob', 'ogv', 'ogg', 'avi', 'wmv', 'mp4', '3gp'];\n var knownFormat = ['css', 'exe', 'html', 'js', 'msi', 'pdf', 'pptx', 'ppt', 'rar', 'zip', 'txt', 'docx', 'doc',\n 'xlsx', 'xls', 'xml', 'rtf', 'php'];\n var filetype = getValue('type', file);\n filetype = filetype.toLowerCase();\n if (filetype.indexOf('.') !== -1) {\n filetype = filetype.split('.').join('');\n }\n var iconType;\n if (imageFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_IMAGE;\n }\n else if (audioFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_MUSIC;\n }\n else if (videoFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_VIDEO;\n }\n else if (knownFormat.indexOf(filetype) !== -1) {\n iconType = 'e-fe-' + filetype;\n }\n else {\n iconType = 'e-fe-unknown e-fe-' + filetype;\n }\n return iconType;\n}\n/* istanbul ignore next */\n/**\n * To get the image URL\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} item - specifies the item.\n * @returns {string} - returns the image url.\n * @private\n */\nexport function getImageUrl(parent, item) {\n var imgUrl = isFileSystemData(parent) ? getValue('imageUrl', item) : '';\n if (isFileSystemData(parent)) {\n var eventArgs_1 = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs_1);\n return eventArgs_1.imageUrl;\n }\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var pathUrl = (baseUrl.indexOf('?') !== -1) ? '&path=' : '?path=';\n var fileName = encodeURIComponent(getValue('name', item));\n var fPath = getValue('filterPath', item);\n if (parent.hasId) {\n var imgId = getValue('id', item);\n imgUrl = baseUrl + pathUrl + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + pathUrl + encodeURIComponent(fPath.replace(/\\\\/g, '/')) + fileName;\n }\n else {\n imgUrl = baseUrl + pathUrl + parent.path + fileName;\n }\n imgUrl = imgUrl + '&time=' + (new Date().getTime()).toString();\n var eventArgs = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs);\n return eventArgs.imageUrl;\n}\n/* istanbul ignore next */\n/**\n * Gets the full path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} path - specifies the path.\n * @returns {string} - returns the image url.\n * @private\n */\nexport function getFullPath(parent, data, path) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', data) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', data);\n if (!isNOU(fPath)) {\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return path + filePath;\n }\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @returns {string} - returns the name.\n * @private\n */\nexport function getName(parent, data) {\n var name = getValue('name', data);\n var fPath = getValue('filterPath', data);\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) && !isNOU(fPath)) {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(parent.path, '') + name;\n }\n return name;\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object[]} items - specifies the item elements.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var 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 var lists = new DataManager(items).executeLocal(query);\n return getValue('records', lists);\n}\n/**\n * Gets the data object\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} key - specifies the key.\n * @param {string} value - specifies the value.\n * @returns {Object} - returns the sorted data.\n * @private\n */\nexport function getObject(parent, key, value) {\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var query = new Query().where(key, 'equal', value);\n var lists = new DataManager(currFiles).executeLocal(query);\n return lists[0];\n}\n/**\n * Creates empty element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLElement} element - specifies the element.\n * @param {ReadArgs | SearchArgs} args - specifies the args.\n * @returns {void}\n * @private\n */\nexport function createEmptyElement(parent, element, args) {\n var top;\n var layoutElement = select('#' + parent.element.id + CLS.LAYOUT_ID, parent.element);\n var addressBarHeight = select('#' + parent.element.id + CLS.BREADCRUMBBAR_ID, layoutElement).offsetHeight;\n top = layoutElement.offsetHeight - addressBarHeight;\n if (parent.view === 'Details') {\n top = top - select('.' + CLS.GRID_HEADER, layoutElement).offsetHeight;\n }\n if (isNOU(element.querySelector('.' + CLS.EMPTY))) {\n var emptyDiv = createElement('div', { className: CLS.EMPTY });\n var emptyFolder = createElement('div', { className: CLS.LARGE_EMPTY_FOLDER });\n var emptyEle = createElement('div', { className: CLS.EMPTY_CONTENT });\n var dragFile = createElement('div', { className: CLS.EMPTY_INNER_CONTENT });\n if (parent.view === 'Details') {\n element.querySelector('.' + CLS.GRID_VIEW).appendChild(emptyDiv);\n }\n else {\n element.appendChild(emptyDiv);\n }\n emptyDiv.appendChild(emptyFolder);\n emptyDiv.appendChild(emptyEle);\n emptyDiv.appendChild(dragFile);\n }\n if (element.querySelector('.' + CLS.EMPTY)) {\n if (!isNOU(args.error)) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Access-Denied');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Access-Details');\n }\n else if (parent.isFiltered) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Key');\n }\n else if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Search-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Search-Key');\n }\n else {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Folder-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'File-Upload');\n }\n }\n var eDiv = select('.' + CLS.EMPTY, element);\n top = (top - eDiv.offsetHeight) / 2;\n eDiv.style.marginTop = top + 'px';\n}\n/**\n * Gets the directories\n *\n * @param {Object[]} files - specifies the file object.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\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 var dirs = getDirectories(result.files);\n for (var i = 0, len = dirs.length; i < len; i++) {\n setValue('_fm_id', rootId + '_' + i, dirs[i]);\n }\n}\n/**\n * set the date object\n *\n * @param {Object[]} args - specifies the file object.\n * @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 (var i = 0; i < args.length; i++) {\n var createdDate = new Date(getValue('dateCreated', args[i]));\n var modifiedDate = new Date(getValue('dateModified', args[i]));\n if (isNOU(dateFormat)) {\n dateFormat = 'MM/dd/yyyy';\n }\n setValue('_fm_created', localeString.formatDate(createdDate, { format: dateFormat }), args[i]);\n setValue('_fm_modified', localeString.formatDate(modifiedDate, { format: dateFormat }), args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nexport function getLocaleText(parent, text) {\n var locale = parent.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n}\n/**\n * get the CSS class\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} css - specifies the css.\n * @returns {string} - returns the css classes.\n * @private\n */\nexport function getCssClass(parent, css) {\n var cssClass = parent.cssClass;\n cssClass = (isNOU(cssClass) || cssClass === '') ? css : (cssClass + ' ' + css);\n return cssClass;\n}\n/**\n * sort on click\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {MenuEventArgs} args - specifies the menu event arguements.\n * @returns {void}\n * @private\n */\nexport function sortbyClickHandler(parent, args) {\n var tick;\n parent.isSortByClicked = true;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id, parent);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(events.sortColumn, { module: 'detailsview' });\n parent.isSortByClicked = false;\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(events.sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @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 var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n var column;\n if (parent) {\n column = parent.detailsViewSettings.columns;\n }\n switch (text) {\n case 'date':\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[i].field === 'dateModified' || column[i].field === 'dateCreated') {\n field = column[i].field;\n break;\n }\n else {\n field = '_fm_modified';\n }\n }\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function setNextPath(parent, path) {\n var currfolders = path.split('/');\n var folders = parent.originalPath.split('/');\n var root = getValue(parent.pathId[0], parent.feParent);\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n for (var i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n var eventName = (folders[i + 1] === '') ? events.finalizeEnd : events.initialEnd;\n var newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n var data = getObject(parent, key, folders[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(data)) {\n var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n parent.pathId.push(id);\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n }\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 var root = getValue(parent.pathId[0], parent.feParent);\n var isRoot = getValue('_fm_id', parent.itemData[0]) === 'fe_tree';\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n var searchData = getObject(parent, key, 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 var id = getValue('_fm_id', searchData);\n parent.setProperties({ path: parent.originalPath }, true);\n parent.pathId.push(id);\n parent.itemData = [searchData];\n parent.pathNames.push(getValue('name', searchData));\n }\n read(parent, (parent.path !== parent.originalPath) ? events.initialEnd : events.finalizeEnd, parent.path);\n}\n/**\n * Paste handling function\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function pasteHandler(parent) {\n parent.isDragDrop = false;\n if (parent.selectedNodes.length !== 0 && parent.enablePaste) {\n var path = (parent.folderPath === '') ? parent.path : parent.folderPath;\n if (parent.activeModule === 'navigationpane' && !parent.selectedNodes[0].includes('/')) {\n parent.targetPath = getValue('filterPath', parent.actionRecords[0]).replace(/\\\\/g, '/');\n }\n var subFolder = validateSubFolder(parent, parent.actionRecords, path, parent.path);\n if (!subFolder) {\n if ((parent.fileAction === 'move' && parent.targetPath !== path) || parent.fileAction === 'copy') {\n parent.notify(events.pasteInit, {});\n paste(parent, parent.targetPath, parent.selectedNodes, path, parent.fileAction, [], parent.actionRecords);\n }\n else {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n removeBlur(parent);\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n }\n }\n }\n}\n/**\n * Validates the sub folders\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {'{ [key: string]: Object; }[]'} data - specifies the data.\n * @param {string} dropPath - specifies the drop path.\n * @param {string} dragPath - specifies the drag path.\n * @returns {boolean} - returns the validated sub folder.\n * @private\n */\nexport function validateSubFolder(parent, data, dropPath, dragPath) {\n var subFolder = false;\n for (var i = 0; i < data.length; i++) {\n if (!getValue('isFile', data[i])) {\n var tempTarget = getFullPath(parent, data[i], dragPath);\n if (dropPath.indexOf(tempTarget) === 0) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Sub-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n else {\n var name_1 = parent.dragData[i] ? parent.dragData[i].name : null;\n var srcData = isFileSystemData(parent) ? name_1 : parent.dragNodes[i];\n var len = 0;\n if (srcData) {\n len = srcData.lastIndexOf('/');\n }\n var path = '';\n if (len > 0) {\n path = dragPath + srcData.substring(0, len + 1);\n }\n if (path === dropPath) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n }\n return subFolder;\n}\n/**\n * Validates the drop handler\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function dropHandler(parent) {\n parent.isDragDrop = true;\n if (parent.dragData.length !== 0) {\n parent.dragPath = parent.dragPath.replace(/\\\\/g, '/');\n parent.dropPath = parent.dropPath.replace(/\\\\/g, '/');\n var subFolder = validateSubFolder(parent, parent.dragData, parent.dropPath, parent.dragPath);\n if (!subFolder && (parent.dragPath !== parent.dropPath)) {\n parent.itemData = [parent.dropData];\n paste(parent, parent.dragPath, parent.dragNodes, parent.dropPath, 'move', [], parent.dragData);\n parent.notify(events.pasteInit, {});\n }\n }\n}\n/**\n * Gets the parent path\n *\n * @param {string} oldPath - specifies the old path.\n * @returns {string} - returns the parent path.\n * @private\n */\nexport function getParentPath(oldPath) {\n var path = oldPath.split('/');\n var newPath = path[0] + '/';\n for (var i = 1; i < path.length - 2; i++) {\n newPath += path[i] + '/';\n }\n return newPath;\n}\n/**\n * Gets the directory path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {ReadArgs} args - returns the read arguements.\n * @returns {string} - returns the directory path\n * @private\n */\nexport function getDirectoryPath(parent, args) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', args.cwd) + '/';\n var fPath = getValue(parent.hasId && !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 var flag = false;\n for (var count = 0; (count < result.files.length) && !flag; count++) {\n parent.pasteNodes.push(result.files[count][parent.hasId ? 'id' : 'name']);\n if (parent.isDragDrop) {\n parent.droppedObjects.push(result.files[count]);\n }\n }\n parent.duplicateItems = [];\n parent.duplicateRecords = [];\n if (parent.isDragDrop && !parent.isPasteError) {\n parent.isDropEnd = true;\n }\n else {\n parent.isDropEnd = false;\n }\n if (!parent.isDragDrop || (parent.path === parent.dragPath) || (parent.path === parent.dropPath)\n || parent.isSearchDrag) {\n parent.isPathDrag = false;\n read(parent, events.pasteEnd, parent.path);\n }\n else {\n readDropPath(parent);\n }\n parent.trigger('success', { action: operation, result: result });\n}\n/**\n * Reads the drop path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function readDropPath(parent) {\n var pathId = getValue('_fm_id', parent.dropData);\n parent.expandedId = pathId;\n parent.itemData = [parent.dropData];\n if (parent.isPathDrag) {\n parent.notify(events.pathDrag, parent.itemData);\n }\n else {\n if (parent.navigationpaneModule) {\n var node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n if (!node) {\n var liElement = document.querySelector('[data-id = \"' + getValue('id', parent.dropData) + '\"]');\n pathId = liElement.getAttribute('data-uid');\n node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n }\n updatePath(node, parent.dropData, parent);\n }\n read(parent, events.dropPath, parent.dropPath);\n }\n}\n/**\n * Gets the duplicated path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} name - specifies the name.\n * @returns {object} - returns the duplicated path.\n * @private\n */\nexport function getDuplicateData(parent, name) {\n var data = null;\n var records = parent.isDragDrop ? parent.dragData : parent.actionRecords;\n for (var i = 0; i < records.length; i++) {\n if (getValue('name', records[i]) === name) {\n data = records[i];\n break;\n }\n }\n return data;\n}\n/**\n * Gets the create the virtual drag element\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createVirtualDragElement(parent) {\n parent.isSearchDrag = false;\n if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n parent.isSearchDrag = true;\n }\n if (parent.activeModule !== 'navigationpane') {\n parent.dragNodes = [];\n var i = 0;\n while (i < parent.selectedItems.length) {\n parent.dragNodes.push(parent.selectedItems[i]);\n i++;\n }\n if (parent.selectedItems.length === 0 && parent.dragData && parent.dragData.length === 1) {\n parent.dragNodes.push(getItemName(parent, parent.dragData[0]));\n }\n }\n var cloneIcon = parent.createElement('div', {\n className: 'e-fe-icon ' + fileType(parent.dragData[0])\n });\n var cloneName = parent.createElement('div', {\n className: 'e-fe-name',\n innerHTML: parent.dragData[0].name\n });\n var virtualEle = parent.createElement('div', {\n className: 'e-fe-content'\n });\n virtualEle.appendChild(cloneIcon);\n virtualEle.appendChild(cloneName);\n var ele = parent.createElement('div', {\n className: CLS.CLONE\n });\n ele.appendChild(virtualEle);\n if (parent.dragNodes.length > 1) {\n var badge = parent.createElement('span', {\n className: 'e-fe-count',\n innerHTML: (parent.dragNodes.length).toString(10)\n });\n ele.appendChild(badge);\n }\n parent.virtualDragElement = ele;\n parent.element.appendChild(parent.virtualDragElement);\n}\n/**\n * Drops the stop handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStopHandler(parent, args) {\n var dragArgs = args;\n dragArgs.cancel = false;\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeDropTarget(parent);\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n removeBlur(parent);\n parent.uploadObj.dropArea = select('#' + parent.element.id + CLS.CONTENT_ID, parent.element);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n getTargetModule(parent, args.target);\n parent.notify(events.dropInit, args);\n removeBlur(parent, 'hover');\n dragArgs.fileDetails = parent.dragData;\n parent.trigger('fileDragStop', dragArgs, function (dragArgs) {\n if (!dragArgs.cancel && !isNOU(parent.targetModule) && parent.targetModule !== '' && parent.dragCount > 2) {\n dropHandler(parent);\n }\n parent.dragCount = 0;\n });\n}\n/**\n * Drag the start handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {'DragEventArgs'} args - specifies the drag event arguements.\n * @param {Draggable} dragObj - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStartHandler(parent, args, dragObj) {\n var dragArgs = args;\n dragArgs.cancel = false;\n dragArgs.fileDetails = parent.dragData;\n parent.dragCount = 0;\n parent.droppedObjects = [];\n if (!parent.allowDragAndDrop || ((parent.activeModule === 'navigationpane') &&\n (closest(args.element, 'li').getAttribute('data-uid') === parent.pathId[0]))) {\n dragArgs.cancel = true;\n }\n if ((parent.activeModule === 'navigationpane') &&\n (parent.pathId.indexOf(closest(args.element, 'li').getAttribute('data-uid')) !== -1)) {\n parent.isPathDrag = true;\n }\n else {\n parent.isPathDrag = false;\n }\n removeBlur(parent);\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else if (!dragArgs.cancel) {\n var i = 0;\n while (i < parent.activeElements.length) {\n addBlur(parent.activeElements[i]);\n i++;\n }\n parent.trigger('fileDragStart', dragArgs, function (dragArgs) {\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else {\n parent.uploadObj.dropArea = null;\n }\n });\n }\n}\n/**\n * Drag the cancel handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function dragCancel(parent) {\n removeBlur(parent);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n}\n/**\n * Remove drop target handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function removeDropTarget(parent) {\n removeItemClass(parent, CLS.DROP_FOLDER);\n removeItemClass(parent, CLS.DROP_FILE);\n}\n/**\n * Remove item class handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} value - specifies the value.\n * @returns {void}\n * @private\n */\nexport function removeItemClass(parent, value) {\n var ele = parent.element.querySelectorAll('.' + value);\n for (var i = 0; i < ele.length; i++) {\n ele[i].classList.remove(value);\n }\n}\n/**\n * Remove item class handler\n *\n * @param {Element} scrollParent - specifies the scrolling target.\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} nodeClass - specifies the node class.\n * @param {number} screenY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the entire screen.\n * @param {number} clientY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the target element.\n * @returns {void}\n * @private\n */\nexport function scrollHandler(scrollParent, parent, nodeClass, screenY, clientY) {\n var position;\n var elementData = scrollParent.getBoundingClientRect();\n var node = select('.' + nodeClass, scrollParent);\n if ((screenY >= (elementData.top + scrollParent.clientHeight - 30)) && !isNullOrUndefined(node)) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, position);\n }\n if (!isNullOrUndefined(node) && (clientY <= (elementData.top + 30))) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, -position);\n }\n}\n/**\n * Dragging handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nexport function draggingHandler(parent, args) {\n var dragArgs = args;\n dragArgs.fileDetails = parent.dragData;\n var canDrop = false;\n getTargetModule(parent, args.target);\n removeDropTarget(parent);\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeBlur(parent, 'hover');\n var node = null;\n var scrollParent;\n if (parent.targetModule === 'navigationpane') {\n node = closest(args.target, 'li');\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n canDrop = true;\n /* istanbul ignore next */\n parent.treeExpandTimer = window.setTimeout(function () { parent.notify(events.dragging, args); }, 800);\n scrollParent = parent.navigationpaneModule.treeObj.element.parentElement;\n scrollHandler(scrollParent, parent, 'e-level-2', args.event.screenY, args.event.y);\n }\n else if (parent.targetModule === 'detailsview') {\n node = closest(args.target, 'tr');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FOLDER);\n }\n else if (node && !node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FILE);\n }\n canDrop = true;\n scrollParent = parent.detailsviewModule.gridObj.element.querySelector('.e-content');\n scrollHandler(scrollParent, parent, 'e-row', args.event.screenY, args.event.y);\n }\n else if (parent.targetModule === 'largeiconsview') {\n node = closest(args.target, 'li');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n }\n canDrop = true;\n scrollParent = parent.largeiconsviewModule.element.firstElementChild;\n scrollHandler(scrollParent, parent, 'e-large-icon', args.event.screenY, args.event.y);\n /* istanbul ignore next */\n }\n else if (parent.targetModule === 'breadcrumbbar') {\n canDrop = true;\n }\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n parent.element.classList.add(canDrop ? 'e-fe-drop' : 'e-no-drop');\n parent.dragCount = parent.dragCount + 1;\n parent.trigger('fileDragging', dragArgs);\n}\n/**\n * Object to string handler\n *\n * @param {Object} data - specifies the data.\n * @returns {string} returns string converted from Object.\n * @private\n */\n// Ignored the message key value in permission object\nexport function objectToString(data) {\n var str = '';\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] !== 'message') {\n str += (i === 0 ? '' : ', ') + keys[i] + ': ' + getValue(keys[i], data);\n }\n }\n return str;\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {string} returns the item name.\n * @private\n */\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 var items = parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(parent, items[i], events.permissionDownload);\n return;\n }\n }\n if (parent.selectedItems.length > 0) {\n Download(parent, parent.path, parent.selectedItems);\n }\n}\n/**\n * Delete Files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\nexport function doDeleteFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionEdit);\n return;\n }\n }\n parent.itemData = data;\n Delete(parent, newIds, parent.path, 'delete');\n}\n/* istanbul ignore next */\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\nexport function doDownloadFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasDownloadAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionDownload);\n return;\n }\n }\n parent.itemData = data;\n if (newIds.length > 0) {\n Download(parent, parent.path, newIds);\n }\n}\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @param {string} action - specifies the actions.\n * @returns {void}\n * @private\n */\nexport function createDeniedDialog(parent, data, action) {\n var message = getValue('message', getValue('permission', data));\n if (message === '') {\n message = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', data)).replace('{1}', action);\n }\n var response = {\n error: {\n code: '401',\n fileExists: null,\n message: message\n }\n };\n createDialog(parent, 'Error', response);\n}\n/**\n * Get Access Classes\n *\n * @param {Object} data - specifies the data.\n * @returns {string} - returns accesses classes.\n * @private\n */\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 var permission = getValue('permission', data);\n return (permission && !getValue('read', permission)) ? false : true;\n}\n/**\n * Check edit access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns edit access.\n * @private\n */\nexport function hasEditAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('write', permission))) : true;\n}\n/**\n * Check content access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns content access.\n * @private\n */\nexport function hasContentAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('writeContents', permission))) : true;\n}\n/**\n * Check upload access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns upload access.\n * @private\n */\nexport function hasUploadAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('upload', permission))) : true;\n}\n/**\n * Check download access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns download access.\n * @private\n */\nexport function hasDownloadAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('download', permission))) : true;\n}\n/**\n * Create new folder handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createNewFolder(parent) {\n var details = parent.itemData[0];\n if (!hasContentAccess(details)) {\n createDeniedDialog(parent, details, events.permissionEditContents);\n }\n else {\n createDialog(parent, 'NewFolder');\n }\n}\n/**\n * Upload item handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function uploadItem(parent) {\n var details = parent.itemData[0];\n if (!hasUploadAccess(details)) {\n createDeniedDialog(parent, details, events.permissionUpload);\n }\n else {\n var eleId = '#' + parent.element.id + CLS.UPLOAD_ID;\n var uploadEle = document.querySelector(eleId);\n uploadEle.click();\n }\n}\n/**\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 var accessMessage = '';\n for (var i = 0; i < itemData.length; i++) {\n var 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 var 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 var itemData = parent.itemData;\n for (var i = 0; i < itemData.length; i++) {\n if (isNOU(getValue('hasChild', itemData[i]))) {\n setValue('hasChild', false, itemData[i]);\n }\n }\n var data = { action: 'read', path: path, showHiddenItems: parent.showHiddenItems, data: itemData };\n createAjax(parent, data, readSuccess, event);\n}\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nexport function createFolder(parent, itemName) {\n var data = { action: 'create', path: parent.path, name: itemName, data: parent.itemData };\n createAjax(parent, data, createSuccess, itemName);\n}\n/**\n * Function to filter the files in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nexport function filter(parent, event) {\n var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n var filterData;\n var filterDataVal = parent.filterData ? extend(filterData, data, parent.filterData) : data;\n createAjax(parent, filterDataVal, filterSuccess, event, getValue('action', filterDataVal));\n}\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string} itemNewName - specifies the item's new name.\n * @returns {void}\n * @private\n */\nexport function rename(parent, path, itemNewName) {\n var name;\n var newName;\n if (parent.breadcrumbbarModule.searchObj.element.value === '' && !parent.isFiltered) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n var fPath = parent.filterPath;\n if (parent.hasId) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(path, '') + parent.currentItemText;\n newName = fPath.replace(path, '') + itemNewName;\n }\n }\n var data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData, showFileExtension: parent.showFileExtension\n };\n createAjax(parent, data, renameSuccess, path);\n}\n/**\n * Function to paste file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} names - specifies the names.\n * @param {string} targetPath - specifies the target path.\n * @param {string} pasteOperation - specifies the paste operation.\n * @param {string[]} renameItems - specifies the rename items.\n * @param {Object[]} actionRecords - specifies the action records.\n * @returns {void}\n * @private\n */\nexport function paste(parent, path, names, targetPath, pasteOperation, renameItems, actionRecords) {\n var data = {\n action: pasteOperation, path: path, targetData: parent.itemData[0],\n targetPath: targetPath, names: names, renameFiles: renameItems, data: actionRecords\n };\n parent.destinationPath = targetPath;\n createAjax(parent, data, pasteSuccess, path, pasteOperation, targetPath);\n}\n/**\n * Function to delete file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} items - specifies the items.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nexport function Delete(parent, items, path, operation) {\n var data = { action: operation, path: path, names: items, data: parent.itemData };\n createAjax(parent, data, deleteSuccess, path);\n}\n/* istanbul ignore next */\n/**\n * Function to get details of file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} names - specifies the names.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation data.\n * @returns {void}\n * @private\n */\nexport function GetDetails(parent, names, path, operation) {\n var 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 var columns = parent.detailsViewSettings.columns;\n var dateFormat;\n if (!columns) {\n return null;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === '_fm_modified') {\n if (!isNOU(columns[i].format)) {\n dateFormat = columns[i].format.toString();\n }\n break;\n }\n }\n return dateFormat;\n}\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 var 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 var isExists = fileSystemData.some(function (item) { return 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 var index = parent.fileSystemData.findIndex(function (item) { return 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 var data = parent.fileSystemData.filter(function (item) { return 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 var data = parent.fileSystemData.filter(function (item) { return 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 var newItem = {};\n //Construct the new folder details.\n for (var key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newItem[key] = null;\n }\n }\n var currentDate = new Date();\n var 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 var 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 var data_1 = args.parentFolder[0];\n var newObject = createNewItem(data_1, data_1, args.folderName, false);\n parent.fileSystemData.push(newObject);\n }\n else {\n var 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 var 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(function (itemData) {\n var index = findIndexById(parent, itemData.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n if (!itemData.isFile) {\n var subItems = parent.fileSystemData.filter(function (obj) { return obj.filterPath.includes(itemData.name); });\n subItems.forEach(function (subItem) {\n var 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 var 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 var fileData = filterById(parent, args.itemData[0].id);\n fileData.name = args.newName;\n }\n else {\n var 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 var 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 var message = 'File Already Exists';\n var action = getValue('action', data);\n var itemPermission = getAccessDetails(parent, args.itemData, action, false);\n var pathPermission = getAccessDetails(parent, [args.targetData], action, true);\n var file_1 = [];\n parent.pasteNodes = [];\n if (itemPermission === '' && pathPermission === '') {\n if (args.isCopy) {\n var folderSubItems_1 = filterByParent(parent, args.targetData.id);\n var copiedFolders = args.itemData;\n copiedFolders.forEach(function (itemData) {\n if (!isFileExists(folderSubItems_1, itemData.name) || getValue('renameFiles', data).length > 0) {\n if (getValue('renameFiles', data).length > 0) {\n var names = itemData.name.split('.');\n var name_1 = itemData.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n copyFolderItems(parent, itemData, args.targetData, name_1);\n parent.responseData.error = null;\n parent.existingFileCount++;\n return;\n }\n copyFolderItems(parent, itemData, args.targetData, null);\n }\n else {\n file_1.push(itemData.name);\n }\n });\n if (file_1.length > 0) {\n createErrorObject(parent, message, '400', file_1);\n }\n return;\n }\n var target = args.targetData;\n var getTargetFiles = filterByParent(parent, target.id);\n for (var i = 0; i < args.itemData.length; i++) {\n var 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 var subItems = currItem.parentId !== 0\n ? filterByParent(parent, currItem.parentID) : [];\n var itemData = filterById(parent, currItem.parentId);\n itemData.hasChild = subItems.length > 1 ? true : false;\n }\n var fileData = filterById(parent, currItem.id);\n if (getValue('renameFiles', data).length > 0) {\n var 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 var 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_1.push(currItem.name);\n }\n }\n if (file_1.length > 0) {\n createErrorObject(parent, message, '400', file_1);\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 var 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 setValue('data', args.searchResults, data);\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 var ajaxSettings = {\n url: parent.ajaxSettings.url,\n type: 'POST',\n mode: true,\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };\n triggerClientEvents(parent, data, eventArgs);\n parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\n if (isFileSystemData(parent)) {\n var filePath = event === 'node-expand' || event === 'finalize-end' ? getValue('path', data) : parent.path;\n var pathArray = filePath.replace(/^\\/|\\/$/g, '').split('/');\n var 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 var action = getValue('action', data);\n var isFileOperation = (action === 'move' || action === 'rename' || action === 'copy' || action === 'delete' || action === 'search') && event !== 'rename-end';\n if (action === 'read' || action === 'create' || event === 'rename-end') {\n var rootId = parent.fileSystemData\n .filter(function (item) { return isNOU(item.parentId); })\n .length > 0\n ? parent.fileSystemData\n .filter(function (item) { return isNOU(item.parentId); })[0].id\n : 0;\n parent.responseData = {\n cwd: filterById(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue),\n details: null,\n error: null,\n files: filterByParent(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue)\n };\n if (isNOU(parent.responseData.cwd)) {\n var 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 var itemData = action === 'search' || action === 'delete' ? getValue('data', data) : [];\n if (itemData.length === 0) {\n itemData = getValue('data', data).map(function (item) { return 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 var itemData = getValue('data', data);\n var details = itemData[0];\n var isMultipleFiles = itemData.length > 1;\n var itemNames = itemData.map(function (item) { return item.name; });\n var totalSize = isMultipleFiles ? getSize(itemData.reduce(function (accumulator, currentObject) { return accumulator + (currentObject.size || 0); }, 0)) : getSize(details.size);\n var 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 var ajax = new Ajax({\n url: getValue('url', beforeSendArgs.ajaxSettings),\n type: getValue('type', beforeSendArgs.ajaxSettings),\n mode: getValue('mode', beforeSendArgs.ajaxSettings),\n dataType: getValue('dataType', beforeSendArgs.ajaxSettings),\n contentType: getValue('contentType', beforeSendArgs.ajaxSettings),\n data: getValue('data', beforeSendArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', beforeSendArgs.ajaxSettings),\n onSuccess: function (result) {\n if (isNOU(result)) {\n var result_1 = {\n error: {\n fileExists: null,\n message: getLocaleText(parent, 'Server-Error') + ' ' + parent.ajaxSettings.url,\n code: '406'\n },\n files: null\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result_1, event, operation, targetPath);\n return;\n }\n if (typeof (result) === 'string') {\n result = JSON.parse(result);\n }\n performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs);\n },\n onFailure: function () {\n var result = {\n files: null,\n error: {\n code: '404',\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.url,\n fileExists: null\n }\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath);\n }\n });\n ajax.send();\n }\n });\n}\n/**\n * Function 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 var 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 var id = parent.expandedId ? parent.expandedId : parent.pathId[parent.pathId.length - 1];\n if (!isNOU(result.cwd) && (getValue('action', data) === 'read')) {\n result.cwd.name = (parent.pathId.length === 1) ? (parent.rootAliasName || result.cwd.name) : result.cwd.name;\n setValue('_fm_id', id, result.cwd);\n setValue(id, result.cwd, parent.feParent);\n if (!isNOU(result.files) || result.error.code === '401') {\n if ((event === 'finalize-end' || event === 'initial-end') && parent.pathNames.length === 0) {\n var root = getValue(parent.pathId[0], parent.feParent);\n parent.pathNames[0] = getValue('name', root);\n parent.hasId = !isNOU(getValue('id', root));\n }\n if (event === 'finalize-end') {\n generatePath(parent);\n }\n }\n }\n var intl = new Internationalization(parent.locale);\n if (!isNOU(result.files)) {\n setDateObject(result.files, intl, getDateFormat(parent));\n for (var i = 0, len = result.files.length; i < len; i++) {\n var 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 var rootName = parent.rootAliasName || getValue('name', result.details);\n var location_1 = getValue('location', result.details).replace(new RegExp('/', 'g'), '\\\\');\n if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {\n if (getValue('names', data).length === 0) {\n setValue('name', rootName, result.details);\n location_1 = rootName;\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n setValue('location', location_1, result.details);\n }\n fn(parent, result, event, operation, targetPath);\n if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end' || event === 'drop-path')) {\n parent.notify(events.searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\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 var newObject = createNewItem(data, target, itemName, true);\n parent.fileSystemData.push(newObject);\n parent.pasteNodes.push(newObject.id);\n var copiedItems = filterByParent(parent, data.id);\n for (var 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 try {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n var args = { action: 'read', result: result };\n parent.trigger('success', args);\n }\n else {\n if (!isNOU(result.error) && 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 }\n catch (error) {\n handleCatchError(parent, error, 'read');\n parent.setProperties({ path: parent.oldPath }, true);\n parent.pathNames.pop();\n }\n if (parent.isDragDrop && parent.isDropEnd) {\n if (parent.droppedObjects.length !== 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n }\n parent.isDropEnd = parent.isDragDrop = false;\n }\n}\n/**\n * Function for filter success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction filterSuccess(parent, result, event, action) {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: action, result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, action);\n }\n}\n/* istanbul ignore next */\n/**\n * Function for create success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction createSuccess(parent, result, itemName) {\n if (!isNOU(result.files)) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n parent.createdItem = isFileSystemData(parent) ? result.files[result.files.length - 1] : result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\n var createEventArgs = {\n folderName: itemName,\n path: parent.path,\n parentFolder: parent.itemData\n };\n parent.trigger('folderCreate', createEventArgs);\n var args = { action: 'create', result: result };\n parent.trigger('success', args);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.createEnd, parent.path);\n }\n else {\n if (result.error.code === '400') {\n if (parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#newname', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n else {\n var result_2 = {\n files: null,\n error: {\n code: '400',\n message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + itemName + '\"'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result_2);\n }\n var args = { action: 'create', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'create');\n }\n }\n}\n/* istanbul ignore next */\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result) {\n try {\n if (!isNOU(result.files)) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n var args = { action: 'rename', result: result };\n parent.trigger('success', args);\n parent.renamedItem = Array.isArray(result.files) ? result.files[0] : result.files;\n var 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 var ele = select('#rename', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '\"' + parent.currentItemText + '\"');\n error = error.replace('{1}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n var args = { action: 'rename', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'rename');\n }\n }\n }\n catch (error) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n handleCatchError(parent, error, 'rename');\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 try {\n var 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 catch (error) {\n handleCatchError(parent, error, 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 try {\n var 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 var args = { action: 'delete', result: result };\n parent.trigger('success', args);\n }\n }\n else {\n onFailure(parent, result, 'delete');\n }\n }\n catch (error) {\n handleCatchError(parent, error, '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 try {\n if (!isNOU(result.details)) {\n createDialog(parent, operation, null, result.details);\n var args = { action: 'details', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'details');\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'details');\n }\n}\n/**\n * Function for on failure event in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction onFailure(parent, result, action) {\n createDialog(parent, 'Error', result);\n var args = { action: action, error: result.error };\n parent.trigger('failure', args);\n}\n/**\n * Function for search in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @param {string} searchString - specifies the search string.\n * @param {boolean} showHiddenItems - specifies the hidden items.\n * @param {boolean} caseSensitive - specifies the casing of search text.\n * @returns {void}\n * @private\n */\nexport function Search(parent, event, path, searchString, showHiddenItems, caseSensitive) {\n var data = {\n action: 'search', path: path, searchString: searchString, showHiddenItems: showHiddenItems, caseSensitive: caseSensitive,\n data: parent.itemData\n };\n createAjax(parent, data, searchSuccess, event);\n}\n/* istanbul ignore next */\n/**\n * Function for search success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction searchSuccess(parent, result, event) {\n try {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: 'search', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'search');\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'search');\n }\n}\n/* istanbul ignore next */\n/**\n * Function for download in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} items - specifies the items.\n * @returns {void}\n * @private\n */\nexport function Download(parent, path, items) {\n var downloadUrl = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;\n var data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n var 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 var eventArgs = { data: data, cancel: false, useFormPost: true, ajaxSettings: ajaxSettings };\n parent.trigger('beforeDownload', eventArgs, function (downloadArgs) {\n if (!downloadArgs.cancel) {\n if (downloadArgs.useFormPost) {\n var form = createElement('form', {\n id: parent.element.id + '_downloadForm',\n attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }\n });\n var input = createElement('input', {\n id: parent.element.id + '_hiddenForm',\n attrs: { name: 'downloadInput', value: JSON.stringify(downloadArgs.data), type: 'hidden' }\n });\n form.appendChild(input);\n parent.element.appendChild(form);\n document.forms.namedItem('downloadForm').submit();\n parent.element.removeChild(form);\n }\n else {\n try {\n var contentDisposition_1;\n var fileName_1;\n var fetch_1 = 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: function (e) {\n contentDisposition_1 = e.headers.get('Content-Disposition');\n if (contentDisposition_1) {\n var filenameMatch = contentDisposition_1.match(/filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/);\n var extractedFilename = filenameMatch && filenameMatch[1];\n fileName_1 = extractedFilename ? extractedFilename.replace(/['\"]/g, '') : fileName_1;\n }\n else {\n fileName_1 = 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: function (e) {\n parent.trigger('success', downloadArgs);\n var blob = e;\n var blobUrl = URL.createObjectURL(blob);\n var link = document.createElement('a');\n link.href = blobUrl;\n link.download = fileName_1;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n },\n onFailure: function (e) {\n var 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_1.send(JSON.stringify(downloadArgs.data));\n }\n catch (error) {\n handleCatchError(parent, error, 'download');\n }\n }\n }\n });\n}\n/**\n * Function for on catch handler in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {any} error - specifies the catch error.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction handleCatchError(parent, error, action) {\n var errorResult = {\n files: null,\n error: {\n message: error.message,\n fileExists: null\n }\n };\n onFailure(parent, errorResult, action);\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 var 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: function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n },\n header: options.header,\n content: options.content,\n buttons: options.buttons,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n allowDragging: true,\n isModal: true,\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n width: '350px',\n open: options.open,\n close: options.close,\n enableRtl: parent.enableRtl,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.dialogObj.isStringTemplate = true;\n parent.dialogObj.appendTo('#' + parent.element.id + CLS.DIALOG_ID);\n }\n else {\n changeOptions(parent, options);\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {void}\n * @private\n */\nexport function createExtDialog(parent, text, replaceItems, newPath) {\n var extOptions = getExtOptions(parent, text, replaceItems, newPath);\n parent.isApplySame = false;\n if (isNOU(parent.extDialogObj)) {\n parent.extDialogObj = new Dialog({\n beforeOpen: beforeExtOpen.bind(this, parent, extOptions.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n },\n content: extOptions.content,\n header: extOptions.header,\n closeOnEscape: true,\n allowDragging: true,\n animationSettings: { effect: 'None' },\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n enableRtl: parent.enableRtl,\n showCloseIcon: true,\n isModal: true,\n width: 350,\n buttons: extOptions.buttons,\n open: extOptions.open,\n close: extOptions.close,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.extDialogObj.isStringTemplate = true;\n parent.extDialogObj.appendTo('#' + parent.element.id + CLS.EXTN_DIALOG_ID);\n }\n else {\n parent.extDialogObj.header = extOptions.header;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.open = extOptions.open;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.content = extOptions.content;\n parent.extDialogObj.buttons = extOptions.buttons;\n parent.extDialogObj.enableRtl = parent.enableRtl;\n parent.extDialogObj.locale = parent.locale;\n parent.extDialogObj.beforeOpen = beforeExtOpen.bind(this, parent, extOptions.dialogName);\n parent.extDialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n };\n parent.extDialogObj.dataBind();\n parent.extDialogObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {Dialog} dlgModule - Specifies the dialog module.\n * @param {BeforeOpenEventArgs} args - specifies the before open arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeOpen(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupName: dialogName, popupModule: dlgModule\n };\n parent.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {BeforeCloseEventArgs} args - specifies the before close event arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeClose(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupModule: dlgModule, popupName: dialogName\n };\n parent.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n if (!args.cancel && args.isInteracted && ((dialogName === 'Rename') || (dialogName === 'Create Folder'))) {\n parent.trigger(events.actionFailure, {});\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupOpen(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupOpen', args);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupClose(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupClose', args);\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {DialogOptions} - returns the dialog options.\n * @private\n */\nfunction getExtOptions(parent, text, replaceItems, newPath) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var duplicateContent;\n var item;\n var index;\n options.open = function () { triggerPopupOpen(parent, parent.extDialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.extDialogObj, options.dialogName); };\n switch (text) {\n case 'Extension':\n options.header = getLocaleText(parent, 'Header-Rename-Confirmation');\n options.content = '<div>' + getLocaleText(parent, 'Content-Rename-Confirmation') + '</div>';\n options.buttons = [{\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.extDialogObj.hide();\n rename(parent, newPath, parent.renameText);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.extDialogObj.hide();\n parent.dialogObj.hide();\n }\n }];\n options.dialogName = 'Extension Change';\n break;\n case 'DuplicateItems':\n options.dialogName = 'Duplicate Items';\n parent.replaceItems = replaceItems;\n item = parent.replaceItems[parent.fileLength];\n index = item.lastIndexOf('/');\n item = index === -1 ? item : item.substring(index);\n options.header = getLocaleText(parent, 'Header-Duplicate');\n duplicateContent = '<div>' + getLocaleText(parent, 'Content-Duplicate') + '</div>';\n options.content = (duplicateContent).replace('{0}', item);\n options.close = function () {\n if (!parent.isDropEnd && parent.duplicateItems.length === 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n parent.isDropEnd = parent.isDragDrop = false;\n }\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.duplicateItems.push(parent.replaceItems[parent.fileLength]);\n parent.duplicateRecords.push(getDuplicateData(parent, parent.replaceItems[parent.fileLength]));\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_1 = parent.replaceItems[parent.fileLength];\n var indexval = item_1.lastIndexOf('/');\n item_1 = indexval === -1 ? item_1 : item_1.substring(indexval);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_1);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_2 = parent.replaceItems[parent.fileLength];\n var ind = item_2.lastIndexOf('/');\n item_2 = ind === -1 ? item_2 : item_2.substring(ind);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_2);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n if (parent.duplicateItems.length !== 0) {\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n }\n }\n ];\n break;\n case 'UploadRetry':\n options.dialogName = 'Retry Upload';\n options.header = getLocaleText(parent, 'Header-Retry');\n options.content = parent.retryFiles[0].name + '<div class=\"e-fe-retrycontent\">' +\n (getLocaleText(parent, 'Content-Retry')) + '</div>';\n options.open = onRetryOpen.bind(this, parent);\n options.close = function () {\n parent.isRetryOpened = false;\n retryDlgClose(parent);\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Keep-Both') },\n click: function () {\n retryDlgUpdate(parent, true);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Replace') },\n click: function () {\n retryDlgUpdate(parent, false);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Skip') },\n click: function () {\n var count = 0;\n if (parent.isApplySame) {\n count = parent.retryFiles.length;\n parent.retryFiles = [];\n retryDlgClose(parent);\n }\n else {\n count = 1;\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n parent.notify(events.skipUpload, { count: count });\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {boolean} isKeepBoth - checks the arguement to keep both.\n * @returns {void}\n * @private\n */\nfunction retryDlgUpdate(parent, isKeepBoth) {\n if (parent.isApplySame) {\n if (isKeepBoth) {\n onKeepBothAll(parent);\n }\n else {\n onReplaceAll(parent);\n }\n retryDlgClose(parent);\n }\n else {\n parent.retryArgs.push({\n action: isKeepBoth ? 'keepboth' : 'replace',\n file: parent.retryFiles[0]\n });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction retryDlgClose(parent) {\n var flag = true;\n if (parent.isRetryOpened) {\n parent.isRetryOpened = false;\n }\n else {\n flag = false;\n }\n var ele = select('.e-dlg-checkbox', parent.extDialogObj.element);\n if (ele) {\n remove(ele);\n }\n if (flag) {\n parent.extDialogObj.hide();\n }\n else {\n parent.retryFiles = [];\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {object} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nfunction onRetryOpen(parent, args) {\n parent.isRetryOpened = true;\n var dialogEle = getValue('element', args);\n var container = select('.e-dlg-content', dialogEle);\n var checkContainer = parent.createElement('div', {\n className: 'e-dlg-checkbox'\n });\n var checkbox = parent.createElement('input', {\n id: parent.element.id + '_applyall'\n });\n checkContainer.appendChild(checkbox);\n container.appendChild(checkContainer);\n var checkBoxObj = new CheckBox({\n label: getLocaleText(parent, 'ApplyAll-Label'),\n change: function (args) {\n parent.isApplySame = args.checked;\n }\n });\n checkBoxObj.appendTo('#' + parent.element.id + '_applyall');\n triggerPopupOpen(parent, parent.extDialogObj, 'Retry Upload');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onKeepBothAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'keepboth', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReplaceAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'replace', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction focusInput(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n ele.focus();\n ele.value = '';\n var len = ele.value.length;\n ele.setSelectionRange(0, len);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onFolderDialogOpen(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n if (!ele.parentElement.classList.contains('e-control-wrapper')) {\n createInput(ele, getLocaleText(parent, 'Content-NewFolder'));\n }\n ele.parentElement.nextElementSibling.innerHTML = '';\n ele.oninput = function () {\n onValidate(parent, ele);\n };\n ele.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onSubmit(parent);\n }\n };\n focusInput(parent);\n triggerPopupOpen(parent, parent.dialogObj, 'Create Folder');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onRenameDialogOpen(parent) {\n var inputEle = select('#rename', parent.dialogObj.element);\n if (!inputEle.parentElement.classList.contains('e-control-wrapper')) {\n createInput(inputEle, getLocaleText(parent, 'Content-Rename'));\n }\n inputEle.parentElement.nextElementSibling.innerHTML = '';\n inputEle.oninput = function () {\n onValidate(parent, inputEle);\n };\n inputEle.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onReSubmit(parent);\n }\n };\n onFocusRenameInput(parent, inputEle);\n triggerPopupOpen(parent, parent.dialogObj, 'Rename');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} inputEle - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onFocusRenameInput(parent, inputEle) {\n inputEle.focus();\n var txt = '';\n if (parent.isFile && !parent.showFileExtension) {\n var index = parent.currentItemText.lastIndexOf('.');\n txt = (index === -1) ? parent.currentItemText : parent.currentItemText.substring(0, index);\n }\n else {\n txt = parent.currentItemText;\n }\n inputEle.value = txt;\n if (parent.isFile && parent.showFileExtension && (inputEle.value.indexOf('.') !== -1)) {\n inputEle.setSelectionRange(0, inputEle.value.lastIndexOf('.'));\n }\n else {\n inputEle.setSelectionRange(0, inputEle.value.length);\n }\n}\n/**\n *\n * @param {HTMLInputElement} ele - specifies the element.\n * @param {string} placeholder - specifies the place holder.\n * @returns {void}\n * @private\n */\nfunction createInput(ele, placeholder) {\n Input.createInput({\n element: ele,\n properties: {\n placeholder: placeholder\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the event arguements.\n * @param {FileDetails} details - specifies the file details.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var permission;\n var formattedString;\n var intl;\n var strArr;\n var fileType;\n var location;\n options.open = function () { triggerPopupOpen(parent, parent.dialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.dialogObj, options.dialogName); };\n text = (details && details.multipleFiles === true) ? 'MultipleFileDetails' : text;\n var 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: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onSubmit(parent);\n }\n }\n ];\n options.open = onFolderDialogOpen.bind(this, parent);\n break;\n case 'Delete':\n options.dialogName = 'Delete';\n if (parent.selectedItems.length > 1) {\n options.content = ('<div>' + getLocaleText(parent, 'Content-Multiple-Delete') + '</div>')\n .replace('{0}', parent.selectedItems.length.toString());\n options.header = getLocaleText(parent, 'Header-Multiple-Delete');\n }\n else {\n options.content = '<div>' + getLocaleText(parent, parent.isFile ? 'Content-Delete' : 'Content-Folder-Delete') + '</div>';\n options.header = getLocaleText(parent, parent.isFile ? 'Header-Delete' : 'Header-Folder-Delete');\n }\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n onDeleteSubmit(parent);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Rename':\n options.dialogName = 'Rename';\n options.header = getLocaleText(parent, 'Header-Rename');\n options.content = '<input type=\"text\" class=\"e-input\" id=\"rename\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Save') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onReSubmit(parent);\n }\n }\n ];\n options.open = onRenameDialogOpen.bind(this, parent);\n break;\n case 'details':\n options.dialogName = 'File Details';\n intl = new Internationalization(parent.locale);\n formattedString = intl.formatDate(new Date(details.modified), { format: 'MMMM dd, yyyy HH:mm:ss' });\n permission = '';\n if (!isNOU(details.permission)) {\n permission = '<tr><td>' + getLocaleText(parent, 'Permission') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + objectToString(details.permission) + '</td></tr>';\n }\n options.header = details.name;\n options.content = '<table>' +\n '<tr><td>' + getLocaleText(parent, 'Type') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n (details.isFile ? 'File' : 'Folder') + '\">' + (details.isFile ? 'File' : 'Folder') + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + '</td><td><span class=\"' + CLS.VALUE + '\" title =\"' +\n details.size + '\">' + details.size + '</span></td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Location') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n details.location + '\">' + details.location + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Modified') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + formattedString + '</td></tr>'\n + permission + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n options.dialogName = 'File Details';\n strArr = parent.itemData.map(function (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(function (val) {\n index = val.indexOf('.') + 1;\n return (index === 0) ? 'Folder' : val.substr(index).replace(' ', '');\n });\n }\n fileType = strArr.every(function (val, i, arr) { return val === arr[0]; }) ?\n ((strArr[0] === 'Folder') ? 'Folder' : strArr[0].toLocaleUpperCase() + ' Type') : 'Multiple Types';\n location = details.location;\n options.header = details.name;\n options.content = '<table><tr><td>' + getLocaleText(parent, 'Type')\n + ':</td><td class=\"' + CLS.VALUE + '\">' + fileType + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + ':</td><td>' +\n details.size + '<span class=\"' + CLS.VALUE + '\" title =\"' + details.size\n + '\"></span></td></tr>' + '<tr><td>' + getLocaleText(parent, 'Location') +\n ':</td><td class=\"' + CLS.VALUE + '\" title=\"' + location + '\">'\n + location + '</td></tr>' + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Error':\n parent.notify(events.actionFailure, {});\n options.dialogName = 'Error';\n if (e.error.code === '401') {\n options.header = '<span class=\"e-fe-icon e-fe-access-error\"></span><div class=\"e-fe-access-header\">' +\n getLocaleText(parent, 'Access-Denied') + '</div>';\n }\n else {\n options.header = getLocaleText(parent, 'Error');\n }\n options.content = '<div class=\"' + CLS.ERROR_CONTENT + '\">' + e.error.message + '</div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dialogName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction keydownAction(parent, dialogName, args) {\n var btnElement = selectAll('.e-btn', parent.dialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.dialogObj, args, dialogName);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dlgName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction beforeExtOpen(parent, dlgName, args) {\n var btnElement = selectAll('.e-btn', parent.extDialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.extDialogObj, args, dlgName);\n}\n/**\n *\n * @param {HTMLInputElement[]} btnElement - specifies the button element.\n * @returns {void}\n * @private\n */\nfunction preventKeydown(btnElement) {\n var _loop_1 = function (btnCount) {\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {DialogOptions} options - specifies the dialog options.\n * @returns {void}\n * @private\n */\nfunction changeOptions(parent, options) {\n parent.dialogObj.header = options.header;\n parent.dialogObj.content = options.content;\n parent.dialogObj.buttons = options.buttons;\n parent.dialogObj.enableRtl = parent.enableRtl;\n parent.dialogObj.open = options.open;\n parent.dialogObj.close = options.close;\n parent.dialogObj.beforeOpen = keydownAction.bind(this, parent, options.dialogName);\n parent.dialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n };\n parent.dialogObj.dataBind();\n parent.dialogObj.show();\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onSubmit(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n createFolder(parent, ele.value);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReSubmit(parent) {\n var ele = select('#rename', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n var text = ele.value;\n var oIndex = parent.currentItemText.lastIndexOf('.');\n if (parent.isFile && !parent.showFileExtension) {\n var extn = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n text += extn;\n }\n parent.renameText = text;\n if (parent.currentItemText === text) {\n parent.dialogObj.hide();\n return;\n }\n var newPath = (parent.activeModule === 'navigationpane') ? getValue('filterPath', parent.itemData[0]).replace(/\\\\/g, '/') : parent.path;\n parent.renamedId = getValue('id', parent.itemData[0]);\n if (parent.isFile) {\n var oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n var nIndex = text.lastIndexOf('.');\n var newExtension = (nIndex === -1) ? '' : text.substr(nIndex);\n if (parent.showFileExtension && oldExtension !== newExtension) {\n createExtDialog(parent, 'Extension', null, newPath);\n }\n else {\n rename(parent, newPath, text);\n }\n }\n else {\n rename(parent, newPath, text);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onDeleteSubmit(parent) {\n parent.dialogObj.hide();\n parent.notify(events.deleteInit, {});\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onValidate(parent, ele) {\n if (/[/\\\\|*?\"<>:]/.test(ele.value)) {\n addInvalid(parent, ele);\n }\n else if (ele.value === '') {\n ele.parentElement.nextElementSibling.innerHTML = getLocaleText(parent, 'Validation-Empty');\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = '';\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onSubmitValidate(parent, ele) {\n onValidate(parent, ele);\n var len = ele.value.length - 1;\n if (ele.value !== '' && ((ele.value.lastIndexOf('.') === len) || (ele.value.lastIndexOf(' ') === len)) &&\n (parent.showFileExtension || (ele.value.lastIndexOf('.') === -1 || ele.value.substring(ele.value.indexOf('.') + 1).length === 0))) {\n addInvalid(parent, ele);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction addInvalid(parent, ele) {\n var error = getLocaleText(parent, 'Validation-Invalid').replace('{0}', '\"' + ele.value + '\"');\n if (parent.enableHtmlSanitizer) {\n ele.parentElement.nextElementSibling.textContent = error;\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n}\n/**\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {number} - returns the key code.\n * @private\n */\nfunction getKeyCode(e) {\n var code;\n if (e.keyCode) {\n code = e.keyCode;\n }\n else if (e.which) {\n code = e.which;\n }\n else {\n code = e.charCode;\n }\n return code;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} header - specifies the header element.\n * @param {string} imageUrl - specifies the image URL.\n * @returns {void}\n * @private\n */\nexport function createImageDialog(parent, header, imageUrl) {\n var content = createElement('div', { className: 'e-image-wrap' });\n var image = createElement('img', { className: 'e-image', attrs: { src: imageUrl, alt: header } });\n content.appendChild(image);\n if (isNOU(parent.viewerObj)) {\n parent.viewerObj = new Dialog({\n header: header,\n content: content,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n isModal: true,\n width: '350px',\n height: '350px',\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: parent.locale,\n enableResize: true,\n allowDragging: true,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n position: { X: 'center', Y: 'center' },\n enableRtl: parent.enableRtl,\n open: openImage.bind(this, parent),\n close: function () { triggerPopupClose(parent, parent.viewerObj, 'Image Preview'); },\n beforeOpen: function (args) {\n triggerPopupBeforeOpen(parent, parent.viewerObj, args, 'Image Preview');\n },\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.viewerObj, args, 'Image Preview');\n },\n resizing: updateImage.bind(this, parent),\n resizeStop: updateImage.bind(this, parent)\n });\n parent.viewerObj.isStringTemplate = true;\n parent.viewerObj.appendTo('#' + parent.element.id + CLS.IMG_DIALOG_ID);\n }\n else {\n parent.viewerObj.refresh();\n parent.viewerObj.header = header;\n parent.viewerObj.content = content;\n parent.viewerObj.enableRtl = parent.enableRtl;\n parent.viewerObj.dataBind();\n parent.viewerObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction openImage(parent) {\n setTimeout(function () {\n if (parent.viewerObj) {\n parent.viewerObj.element.focus();\n }\n });\n updateImage(parent);\n triggerPopupOpen(parent, parent.viewerObj, 'Image Preview');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction updateImage(parent) {\n var content = select('.e-dlg-content', parent.viewerObj.element);\n var imgWrap = select('.e-image-wrap', parent.viewerObj.element);\n var cssObj = window.getComputedStyle(content, null);\n var paddingWidth = cssObj ? (2 * parseFloat(cssObj.paddingRight)) : 36;\n var paddingHeight = cssObj ? (2 * parseFloat(cssObj.paddingBottom)) : 20;\n imgWrap.style.width = (content.offsetWidth - paddingWidth) + 'px';\n imgWrap.style.height = (content.offsetHeight - paddingHeight) + 'px';\n}\n","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 */\nvar LargeIconsView = /** @class */ (function () {\n /**\n * Constructor for the LargeIcons module.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function LargeIconsView(parent) {\n this.isInteraction = true;\n this.uploadOperation = false;\n this.count = 0;\n this.isRendered = true;\n this.tapCount = 0;\n this.isSelectAllCalled = false;\n this.isPasteOperation = false;\n this.isInteracted = true;\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n addClass([this.element], CLS.LARGE_ICONS);\n this.addEventListener();\n this.keyConfigs = {\n end: 'end',\n home: 'home',\n tab: 'tab',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n ctrlUp: 'ctrl+uparrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftLeft: 'shift+leftarrow',\n shiftRight: 'shift+rightarrow',\n shiftUp: 'shift+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csLeft: 'ctrl+shift+leftarrow',\n csRight: 'ctrl+shift+rightarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n f2: 'f2',\n shiftdel: 'shift+delete',\n back: 'backspace',\n ctrlD: 'ctrl+d'\n };\n }\n LargeIconsView.prototype.render = function (args) {\n this.parent.visitedItem = null;\n this.startItem = null;\n showSpinner(this.parent.element);\n if (this.parent.view === 'LargeIcons') {\n this.resetMultiSelect();\n this.element.setAttribute('tabindex', '0');\n if (this.listObj) {\n this.unWireEvents();\n this.removeEventListener();\n }\n this.parent.notify(events.hideLayout, {});\n var iconsView = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n var ul = select('ul', iconsView);\n if (ul) {\n remove(ul);\n }\n this.listObj = {\n ariaAttributes: {\n itemRole: 'option', listRole: 'listbox', itemText: '',\n groupItemRole: 'group', wrapperRole: ''\n },\n showIcon: true,\n fields: { text: 'name', iconCss: '_fm_icon', imageUrl: '_fm_imageUrl', htmlAttributes: '_fm_htmlAttr' },\n sortOrder: this.parent.sortOrder,\n itemCreated: this.onItemCreated.bind(this),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer\n };\n this.items = [];\n this.items = this.renderList(args);\n 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 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 var emptyList = this.element.querySelector('.' + CLS.LIST_PARENT);\n this.element.removeChild(emptyList);\n createEmptyElement(this.parent, this.element, args);\n }\n else if (this.itemList.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n if (this.isPasteOperation === true) {\n this.selectItems(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n /* istanbul ignore next */\n if (this.uploadOperation === true) {\n this.selectItems(this.parent.uploadItem);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.count++;\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.parent.activeModule = 'largeiconsview';\n }\n for (var i = 0; i < activeEle.length; i++) {\n activeEle[i].setAttribute('aria-selected', 'true');\n }\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n this.parent.virtualizationModule.setUlElementHeight();\n this.parent.virtualizationModule.wireScrollEvent(false);\n }\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\n };\n LargeIconsView.prototype.comparer = function (x, y) {\n if (this.parent.sortOrder === 'Descending') {\n var z = x;\n x = y;\n y = z;\n }\n return this.parent.sortComparer(x, y);\n };\n LargeIconsView.prototype.preventImgDrag = function () {\n var i = 0;\n while (i < this.itemList.length) {\n if (this.itemList[i].querySelector('img')) {\n /* istanbul ignore next */\n this.itemList[i].ondragstart = function () { return false; };\n }\n i++;\n }\n };\n LargeIconsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.listObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.listElements, {\n enableTailMode: true,\n distance: 5,\n enableAutoScroll: false,\n dragTarget: '.' + CLS.LARGE_ICON,\n helper: this.dragHelper.bind(this),\n cursorAt: this.parent.dragCursorPosition,\n dragArea: this.parent.element,\n dragStop: dragStopHandler.bind(this, this.parent),\n drag: draggingHandler.bind(this, this.parent),\n clone: true,\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n }\n });\n }\n else if (this.dragObj && !this.parent.allowDragAndDrop) {\n this.dragObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = closest(dragTarget, '.e-list-item');\n if (!dragLi) {\n return null;\n }\n if (dragLi && !dragLi.classList.contains('e-active')) {\n this.setFocus(dragLi);\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n for (var i = 0; i < activeEle.length; i++) {\n 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 LargeIconsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, '.e-list-item');\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n var info = this.getItemObject(dropLi);\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n else {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n LargeIconsView.prototype.getModuleName = function () {\n return 'largeiconsview';\n };\n LargeIconsView.prototype.onItemCreated = function (args) {\n args.item.removeAttribute('aria-level');\n if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {\n var textEle = args.item.querySelector('.' + CLS.LIST_TEXT);\n var txt = getValue('name', args.curData);\n var type = getValue('type', args.curData);\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\n this.renderCheckbox(args);\n var eventArgs = {\n element: args.item,\n fileDetails: args.curData,\n module: 'LargeIconsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n LargeIconsView.prototype.renderCheckbox = function (args) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n var checkElement = createCheckBox(createElement, false, {\n checked: false,\n cssClass: 'e-small'\n });\n checkElement.setAttribute('role', 'checkbox');\n checkElement.setAttribute('aria-checked', 'false');\n checkElement.setAttribute('aria-label', 'checkbox');\n args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);\n };\n LargeIconsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.destroy();\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.render(args);\n /* istanbul ignore next */\n if (getValue('name', args) === 'layout-change' && this.parent.fileAction === 'move' &&\n this.parent.isCut && this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n var indexes = this.getIndexes(this.parent.selectedNodes);\n var length_1 = 0;\n while (length_1 < indexes.length) {\n addBlur(this.itemList[indexes[length_1]]);\n length_1++;\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.element.focus();\n }\n this.checkItem();\n this.parent.isLayoutChange = false;\n }\n else {\n this.element.setAttribute('tabindex', '-1');\n }\n };\n LargeIconsView.prototype.checkItem = function () {\n var checkEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (checkEle) {\n var checkLength = 0;\n while (checkLength < checkEle.length) {\n this.checkState(checkEle[checkLength], true);\n checkLength++;\n }\n }\n };\n LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\n var items = JSON.parse(JSON.stringify(args.files));\n while (i < items.length) {\n var icon = fileType(items[i]);\n var name_1 = getValue('name', items[i]);\n var selected = getItemName(this.parent, items[i]);\n var className = ((this.parent.selectedItems &&\n this.parent.selectedItems.indexOf(selected) !== -1)) ?\n CLS.LARGE_ICON + ' e-active' : CLS.LARGE_ICON;\n if (!hasEditAccess(items[i])) {\n className += ' ' + getAccessClass(items[i]);\n }\n if (icon === CLS.ICON_IMAGE && this.parent.showThumbnail && hasReadAccess(items[i])) {\n var imgUrl = getImageUrl(this.parent, items[i]);\n setValue('_fm_imageUrl', imgUrl, items[i]);\n setValue('_fm_imageAttr', { alt: name_1 }, items[i]);\n }\n else {\n setValue('_fm_icon', icon, items[i]);\n }\n setValue('_fm_htmlAttr', { class: className, title: name_1 }, items[i]);\n i++;\n }\n return items;\n };\n LargeIconsView.prototype.onFinalizeEnd = function (args) {\n this.render(args);\n };\n LargeIconsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.clearSelect();\n this.selectItems([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n this.parent.largeiconsviewModule.element.focus();\n this.parent.activeModule = 'largeiconsview';\n };\n LargeIconsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n this.updateSelectedData();\n }\n };\n LargeIconsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.clearSelect();\n };\n LargeIconsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n };\n LargeIconsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'largeiconsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n LargeIconsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n /* istanbul ignore next */\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '') {\n this.parent.searchedItems = [];\n }\n if (this.parent.view === 'LargeIcons') {\n removeBlur(this.parent);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onLayoutChange(args);\n if (this.parent.renamedItem) {\n this.clearSelect();\n this.addSelection(this.parent.renamedItem);\n }\n }\n };\n LargeIconsView.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'largeiconsview') {\n this.doOpenAction(args.target);\n }\n };\n LargeIconsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'LargeIcons' && this.element) {\n this.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n LargeIconsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.startItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n var eveArgs = { ctrlKey: true, shiftKey: true };\n this.doSelection(lastItem, eveArgs);\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.clearSelection();\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n LargeIconsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onSearch = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n this.parent.searchedItems = args.files;\n this.onLayoutChange(args);\n }\n };\n LargeIconsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n };\n LargeIconsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.updateSelectedData();\n };\n LargeIconsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'LargeIcons' && !isNOU(this.listObj) &&\n this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered\n && this.parent.sortBy === 'filterPath') {\n this.parent.sortBy = 'name';\n this.parent.notify(events.sortByChange, {});\n }\n };\n LargeIconsView.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.search, this.onSearch);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.splitterResize, this.splitterResizeHandler);\n this.parent.off(events.resizeEnd, this.resizeHandler);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n this.parent.off(events.filterEnd, this.onPathChanged);\n };\n LargeIconsView.prototype.addEventListener = function () {\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.search, this.onSearch, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.splitterResize, this.splitterResizeHandler, this);\n this.parent.on(events.resizeEnd, this.resizeHandler, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n };\n LargeIconsView.prototype.onActionFailure = function () { this.isInteraction = true; this.isInteracted = true; };\n LargeIconsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var ele = closest(args.target, 'li');\n this.parent.itemData = [this.getItemObject(ele)];\n }\n };\n LargeIconsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.updateSelectedData();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n LargeIconsView.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath === '') ? [getPathObject(this.parent)] :\n [this.getItemObject(select('.e-active', this.element))];\n }\n };\n LargeIconsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeRecords = [];\n this.parent.activeElements = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.activeElements.push(activeEle[i]);\n this.parent.activeRecords.push(this.getItemObject(activeEle[i]));\n }\n }\n };\n LargeIconsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath ||\n this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {\n this.onPathChanged(args);\n }\n }\n };\n LargeIconsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n LargeIconsView.prototype.onPropertyChanged = function (e) {\n var currentSelected;\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'selectedItems':\n this.isInteraction = false;\n this.isInteracted = false;\n currentSelected = isNOU(this.parent.selectedItems) ? [] : this.parent.selectedItems.slice(0);\n currentSelected = this.parent.allowMultiSelection ? currentSelected :\n currentSelected.slice(currentSelected.length - 1);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onClearAllInit();\n if (currentSelected.length) {\n this.selectItems(currentSelected);\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n this.isInteraction = true;\n this.isInteracted = true;\n break;\n case 'showThumbnail':\n refresh(this.parent);\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (this.parent.view !== 'LargeIcons') {\n break;\n }\n refresh(this.parent);\n break;\n case 'view':\n updateLayout(this.parent, 'LargeIcons');\n break;\n }\n }\n };\n LargeIconsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.listObj) {\n this.unWireEvents();\n }\n this.startItem = null;\n this.listElements = null;\n };\n LargeIconsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n };\n LargeIconsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onMouseOver = function (e) {\n var targetEle = closest(e.target, '.e-list-item');\n removeBlur(this.parent, 'hover');\n if (targetEle !== null) {\n targetEle.classList.add(CLS.HOVER);\n }\n };\n LargeIconsView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n if (_this.parent.isDevice) {\n _this.tapCount = eve.tapCount;\n _this.tapEvent = eve;\n setTimeout(function () {\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: function (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 LargeIconsView.prototype.doTapAction = function (eve) {\n var target = eve.originalEvent.target;\n var item = closest(target, '.' + CLS.LIST_ITEM);\n if (this.multiSelect || target.classList.contains(CLS.LIST_PARENT) || isNOU(item)) {\n this.clickHandler(eve);\n }\n else {\n this.parent.isFile = false;\n this.updateType(item);\n if (!this.parent.isFile) {\n this.dblClickHandler(eve);\n }\n else if (eve.tapCount === 2) {\n this.clickHandler(eve);\n this.dblClickHandler(eve);\n }\n else {\n this.clickHandler(eve);\n }\n }\n };\n LargeIconsView.prototype.clickHandler = function (e) {\n var target = e.originalEvent.target;\n removeBlur(this.parent, 'hover');\n this.doSelection(target, e.originalEvent);\n this.parent.activeModule = 'largeiconsview';\n };\n /**\n *\n * @param {Element} target - specifies the target element.\n * @param {TouchEventArgs | MouseEventArgs | KeyboardEventArgs} e - specifies event arguements.\n * @returns {void}\n * @hidden\n */\n LargeIconsView.prototype.doSelection = function (target, e) {\n var item = closest(target, '.' + CLS.LIST_ITEM);\n var cList = target.classList;\n this.parent.isFile = false;\n var action = 'select';\n if (e.which === 3 && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {\n this.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 var fileSelectionArgs = this.triggerSelection(action, item);\n if (fileSelectionArgs.cancel !== true) {\n if ((!this.parent.allowMultiSelection || (!this.multiSelect && (e && !e.ctrlKey)))\n && !cList.contains(CLS.FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey) {\n if (!(e && e.ctrlKey)) {\n this.clearSelect();\n }\n if (!this.startItem) {\n this.startItem = item;\n }\n var startIndex = this.itemList.indexOf(this.startItem);\n var endIndex = this.itemList.indexOf(item);\n if (startIndex > endIndex) {\n for (var i = startIndex; i >= endIndex; i--) {\n this.addActive(this.itemList[i]);\n }\n }\n else {\n for (var i = startIndex; i <= endIndex; i++) {\n this.addActive(this.itemList[i]);\n }\n }\n this.addFocus(this.itemList[endIndex]);\n }\n else {\n this.startItem = item;\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)) {\n this.removeActive(item);\n }\n else {\n this.addActive(item);\n }\n this.addFocus(item);\n }\n if (this.parent.selectedItems.length === 0) {\n this.resetMultiSelect();\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect(action, item);\n }\n }\n else {\n if (this.parent.selectedItems.length === this.itemList.length) {\n this.isSelectAllCalled = true;\n }\n this.clearSelection();\n }\n if (!isNOU(item)) {\n this.isSelectAllCalled = false;\n this.updateType(item);\n }\n };\n LargeIconsView.prototype.dblClickHandler = function (e) {\n this.parent.activeModule = 'largeiconsview';\n var target = e.originalEvent.target;\n this.doOpenAction(target);\n };\n LargeIconsView.prototype.clearSelection = function () {\n this.clearSelect();\n this.resetMultiSelect();\n this.parent.notify(events.selectionChanged, {});\n };\n LargeIconsView.prototype.resetMultiSelect = function () {\n this.multiSelect = false;\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n };\n LargeIconsView.prototype.doOpenAction = function (target) {\n var _this = this;\n if (isNOU(target)) {\n return;\n }\n var item = closest(target, '.' + CLS.LIST_ITEM);\n this.parent.isFile = false;\n if (!isNOU(item)) {\n this.updateType(item);\n var details_1 = this.getItemObject(item);\n if (!hasReadAccess(details_1)) {\n createDeniedDialog(this.parent, details_1, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: details_1, module: 'LargeIconsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var text = getValue('name', details_1);\n if (!_this.parent.isFile) {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', details_1);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNOU(id) ? text : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(text);\n _this.parent.pathId.push(getValue('_fm_id', details_1));\n _this.parent.itemData = [details_1];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, details_1);\n }\n _this.parent.isFiltered = false;\n _this.parent.setProperties({ selectedItems: [] }, true);\n }\n else {\n var icon = fileType(details_1);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, details_1);\n createImageDialog(_this.parent, text, imgUrl);\n }\n }\n }\n });\n }\n };\n LargeIconsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.keydownActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'moveDown':\n case 'moveLeft':\n case 'moveRight':\n case 'moveUp':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.keyActionHandler = function (e) {\n var _this = this;\n if (!this.isRendered) {\n return;\n }\n var fItem = this.getFocusedItem();\n var firstItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n switch (e.action) {\n case 'end':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTo(0, this.element.firstElementChild.scrollHeight);\n setTimeout(function () {\n _this.navigateItem(_this.itemList[_this.itemList.length - 1]);\n }, 10);\n }\n else {\n this.navigateItem(lastItem);\n }\n break;\n case 'home':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTop = 0;\n setTimeout(function () {\n _this.navigateItem(_this.itemList[0]);\n }, 10);\n }\n else {\n this.navigateItem(firstItem);\n }\n break;\n case 'tab':\n if (!isNOU(fItem)) {\n this.addFocus(fItem);\n }\n else if (!isNOU(firstItem)) {\n this.addFocus(firstItem);\n }\n break;\n case 'moveDown':\n this.navigateDown(fItem, true);\n break;\n case 'moveLeft':\n this.navigateRight(fItem, false);\n break;\n case 'moveRight':\n this.navigateRight(fItem, true);\n break;\n case 'moveUp':\n this.navigateDown(fItem, false);\n break;\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n this.csEndKey(lastItem, e);\n break;\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n this.csHomeKey(firstItem, e);\n break;\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n this.csDownKey(fItem, e);\n break;\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n this.csLeftKey(fItem, e);\n break;\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n this.csRightKey(fItem, e);\n break;\n case 'ctrlUp':\n case 'shiftUp':\n case 'csUp':\n this.csUpKey(fItem, e);\n break;\n case 'space':\n this.spaceKey(fItem);\n break;\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n if (!isNOU(fItem)) {\n this.doSelection(fItem, e);\n }\n break;\n case 'ctrlA':\n this.ctrlAKey(firstItem, lastItem);\n break;\n case 'enter':\n this.doOpenAction(this.parent.visitedItem ? this.parent.visitedItem : this.getVisitedItem());\n break;\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'back':\n this.parent.traverseBackward();\n break;\n }\n };\n LargeIconsView.prototype.doDownload = function () {\n this.updateSelectedData();\n doDownload(this.parent);\n };\n LargeIconsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.updateSelectedData();\n var data = this.parent.itemData;\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(this.parent, data[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n LargeIconsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n LargeIconsView.prototype.updateRenameData = function () {\n var item = select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n var data = this.getItemObject(item);\n updateRenamingData(this.parent, data);\n };\n LargeIconsView.prototype.getVisitedItem = function () {\n var item = this.parent.selectedItems[this.parent.selectedItems.length - 1];\n var indexes = this.getIndexes([item], this.parent.hasId);\n return this.itemList[indexes[0]];\n };\n LargeIconsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.FOCUS, this.element);\n };\n LargeIconsView.prototype.getActiveItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n };\n LargeIconsView.prototype.getFirstItem = function () {\n return this.itemList[0];\n };\n LargeIconsView.prototype.getLastItem = function () {\n return this.itemList[this.itemList.length - 1];\n };\n LargeIconsView.prototype.navigateItem = function (item) {\n this.setFocus(item);\n };\n LargeIconsView.prototype.navigateDown = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards, this.perRow);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.navigateRight = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.getNextItem = function (li, isTowards, perRow) {\n if (isNOU(li)) {\n return this.getFocusedItem() || this.getActiveItem() || this.getFirstItem();\n }\n var index = this.itemList.indexOf(li);\n var nextItem;\n do {\n if (isTowards) {\n index = perRow ? index + perRow : index + 1;\n }\n else {\n index = perRow ? index - perRow : index - 1;\n }\n nextItem = this.itemList[index];\n if (this.parent.enableVirtualization && isNOU(nextItem)) {\n var marginValue = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-bottom'), 10);\n var scrollHeight = this.itemList[0].getBoundingClientRect().height + marginValue;\n this.element.firstElementChild.scrollTo(this.element.firstElementChild.scrollTop, this.element.firstElementChild.scrollTop + scrollHeight);\n }\n if (isNOU(nextItem)) {\n return li;\n }\n } while (!isVisible(nextItem));\n return nextItem;\n };\n LargeIconsView.prototype.setFocus = function (nextItem) {\n if (!isNOU(nextItem)) {\n var fileSelectionArgs = this.triggerSelection('select', nextItem);\n if (fileSelectionArgs.cancel !== true) {\n this.startItem = nextItem;\n this.clearSelect();\n this.addActive(nextItem);\n this.addFocus(nextItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', nextItem);\n }\n }\n };\n LargeIconsView.prototype.spaceKey = function (fItem) {\n if (!isNOU(fItem) && !fItem.classList.contains(CLS.ACTIVE)) {\n var fileSelectionArgs = this.triggerSelection('select', fItem);\n if (fileSelectionArgs.cancel !== true) {\n this.addActive(fItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', fItem);\n }\n }\n };\n LargeIconsView.prototype.ctrlAKey = function (firstItem, lastItem) {\n if (this.parent.allowMultiSelection && !isNOU(firstItem)) {\n this.startItem = firstItem;\n var eveArgs = { ctrlKey: true, shiftKey: true };\n var liParent = this.element.querySelector('.' + CLS.LIST_PARENT);\n var liScrPos = liParent.scrollTop;\n var getCurFocusedItem = this.getFocusedItem();\n this.doSelection(lastItem, eveArgs);\n liParent.scrollTop = liScrPos;\n if (!isNOU(getCurFocusedItem)) {\n this.addFocus(getCurFocusedItem);\n }\n }\n };\n LargeIconsView.prototype.csEndKey = function (lastItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(lastItem);\n }\n else if (!isNOU(lastItem)) {\n if (e.action === 'ctrlEnd') {\n this.addFocus(lastItem);\n }\n else {\n this.doSelection(lastItem, e);\n }\n }\n };\n LargeIconsView.prototype.csHomeKey = function (firstItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(firstItem);\n }\n else if (!isNOU(firstItem)) {\n if (e.action === 'ctrlHome') {\n this.addFocus(firstItem);\n }\n else {\n this.doSelection(firstItem, e);\n }\n }\n };\n LargeIconsView.prototype.csDownKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, true);\n }\n else {\n var dItem = this.getNextItem(fItem, true, this.perRow);\n if (!isNOU(dItem)) {\n if (e.action === 'ctrlDown') {\n this.addFocus(dItem);\n }\n else {\n this.doSelection(dItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csLeftKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, false);\n }\n else {\n var lItem = this.getNextItem(fItem, false);\n if (!isNOU(lItem)) {\n if (e.action === 'ctrlLeft') {\n this.addFocus(lItem);\n }\n else {\n this.doSelection(lItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csRightKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, true);\n }\n else {\n var rItem = this.getNextItem(fItem, true);\n if (!isNOU(rItem)) {\n if (e.action === 'ctrlRight') {\n this.addFocus(rItem);\n }\n else {\n this.doSelection(rItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csUpKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, false);\n }\n else {\n var uItem = this.getNextItem(fItem, false, this.perRow);\n if (!isNOU(uItem)) {\n if (e.action === 'ctrlUp') {\n this.addFocus(uItem);\n }\n else {\n this.doSelection(uItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.addActive = function (nextItem) {\n if (!isNOU(nextItem)) {\n if (!nextItem.classList.contains(CLS.ACTIVE)) {\n this.parent.selectedItems.push(this.getDataName(nextItem));\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n addClass([nextItem], [CLS.ACTIVE]);\n nextItem.setAttribute('aria-selected', 'true');\n this.checkState(nextItem, true);\n }\n this.parent.visitedItem = nextItem;\n }\n };\n LargeIconsView.prototype.removeActive = function (preItem) {\n if (!isNOU(preItem)) {\n removeClass([preItem], [CLS.ACTIVE]);\n if (this.parent.allowMultiSelection) {\n preItem.setAttribute('aria-selected', 'false');\n }\n else {\n preItem.removeAttribute('aria-selected');\n }\n this.checkState(preItem, false);\n var index = this.parent.selectedItems.indexOf(this.getDataName(preItem));\n if (index > -1) {\n this.parent.selectedItems.splice(index, 1);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n this.parent.visitedItem = null;\n }\n };\n LargeIconsView.prototype.getDataName = function (item) {\n var data = this.getItemObject(item);\n return getItemName(this.parent, data);\n };\n LargeIconsView.prototype.addFocus = function (item) {\n this.element.setAttribute('tabindex', '-1');\n var fItem = this.getFocusedItem();\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS]);\n }\n addClass([item], [CLS.FOCUS]);\n item.setAttribute('tabindex', '0');\n item.focus();\n };\n LargeIconsView.prototype.checkState = function (item, toCheck) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n var checkEle = select('.' + CLS.FRAME, item);\n if (isNOU(checkEle)) {\n return;\n }\n if (toCheck) {\n if (!checkEle.classList.contains(CLS.CHECK)) {\n addClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'true');\n }\n }\n else {\n if (checkEle.classList.contains(CLS.CHECK)) {\n removeClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'false');\n }\n }\n };\n LargeIconsView.prototype.clearSelect = function () {\n var eles = Array.prototype.slice.call(selectAll('.' + CLS.ACTIVE, this.listElements));\n var fileSelectionArgs;\n if (eles.length !== 0) {\n fileSelectionArgs = this.triggerSelection('unselect', eles[0]);\n if (fileSelectionArgs.cancel !== true) {\n for (var i = 0, len = eles.length; i < len; i++) {\n this.removeActive(eles[i]);\n }\n }\n this.triggerSelect('unselect', eles[0]);\n }\n };\n LargeIconsView.prototype.resizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.splitterResizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.getItemCount = function () {\n var perRow = 1;\n if (this.itemList) {\n for (var i = 0, len = this.itemList.length - 1; i < len; i++) {\n if (this.itemList[i].getBoundingClientRect().top === this.itemList[i + 1].getBoundingClientRect().top) {\n perRow++;\n }\n else {\n break;\n }\n }\n }\n this.perRow = perRow;\n };\n LargeIconsView.prototype.triggerSelection = function (action, item) {\n var data = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n }\n else {\n data[0] = this.getItemObject(item);\n }\n var eventArgs = { 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 LargeIconsView.prototype.triggerSelect = function (action, item) {\n var data = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n this.isSelectAllCalled = false;\n }\n else {\n data[0] = this.getItemObject(item);\n }\n this.parent.visitedData = data.length > 1 ? data[data.length - 1] : data[0];\n var eventArgs = { action: action, fileDetails: data.length > 1\n ? data\n : data[0], isInteracted: this.isInteracted };\n this.parent.trigger('fileSelect', eventArgs);\n this.isInteracted = true;\n };\n LargeIconsView.prototype.selectItems = function (items) {\n var indexes = this.getIndexes(items, this.parent.hasId);\n for (var j = 0, len = indexes.length; j < len; j++) {\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[indexes[j]], eveArgs);\n }\n };\n LargeIconsView.prototype.getIndexes = function (items, byId) {\n var indexes = [];\n var filter = byId ? 'id' : 'name';\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filter, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n LargeIconsView.prototype.addSelection = function (data) {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var newData = new DataManager(this.items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (newData.length > 0) {\n resultData = new DataManager(newData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n var index = this.items.indexOf(resultData[0]);\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[index], eveArgs);\n }\n };\n LargeIconsView.prototype.updateSelectedData = function () {\n var data = [];\n var items = selectAll('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n for (var i = 0; i < items.length; i++) {\n data[i] = this.getItemObject(items[i]);\n }\n this.parent.itemData = data;\n };\n LargeIconsView.prototype.onMethodCall = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n var action = getValue('action', args);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', args));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', args));\n break;\n case 'openFile':\n this.openFile(getValue('id', args));\n break;\n case 'renameFile':\n this.isInteraction = false;\n this.isInteracted = false;\n this.renameFile(getValue('id', args), getValue('newName', args));\n break;\n case 'createFolder':\n this.isInteraction = false;\n this.isInteracted = false;\n break;\n case 'clearSelection':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onClearAllInit();\n break;\n case 'selectAll':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onSelectAllInit();\n break;\n }\n };\n LargeIconsView.prototype.getItemsIndex = function (items) {\n var indexes = [];\n var isFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filterName = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !isFilter) {\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filterName, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n }\n else {\n for (var i = 0, len = this.items.length; i < len; i++) {\n var name_2 = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);\n if ((items.indexOf(name_2) !== -1) || (items.indexOf(getValue(filterName, this.items[i])) !== -1)) {\n indexes.push(i);\n }\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n var indexes = this.getItemsIndex(ids);\n if (indexes.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < indexes.length; i++) {\n data[i] = this.items[indexes[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n var index = this.getItemsIndex(ids);\n if (index.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < index.length; i++) {\n data[i] = this.items[index[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n this.doOpenAction(this.itemList[indexes[0]]);\n }\n };\n LargeIconsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n updateRenamingData(this.parent, this.items[indexes[0]]);\n if (isNOU(name)) {\n doRename(this.parent);\n }\n else {\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n rename(this.parent, this.parent.path, name);\n }\n }\n }\n };\n return LargeIconsView;\n}());\nexport { LargeIconsView };\n","import { EventHandler, closest, isNullOrUndefined, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, addClass, removeClass, remove, createElement } from '@syncfusion/ej2-base';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { read } from '../common/operations';\nimport { getLocaleText, searchWordHandler } from '../common/utility';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * BreadCrumbBar module\n */\nvar BreadCrumbBar = /** @class */ (function () {\n /**\n * constructor for addressbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies parent element.\n * @private\n *\n */\n function BreadCrumbBar(parent) {\n this.addressPath = '';\n this.addressBarLink = '';\n this.searchTimer = null;\n this.searchWrapWidth = null;\n this.parent = parent;\n this.keyConfigs = {\n enter: 'enter'\n };\n this.render();\n }\n BreadCrumbBar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var value = e.newProp.searchSettings;\n switch (prop) {\n case 'searchSettings':\n if (!isNullOrUndefined(value.allowSearchOnTyping)) {\n this.searchEventBind(value.allowSearchOnTyping);\n }\n if (this.parent.breadcrumbbarModule.searchObj.value && this.parent.breadcrumbbarModule.searchObj.value !== '' &&\n !(!isNullOrUndefined(value.allowSearchOnTyping) && isNullOrUndefined(value.filterType) &&\n isNullOrUndefined(value.ignoreCase))) {\n searchWordHandler(this.parent, this.parent.breadcrumbbarModule.searchObj.value, false);\n }\n break;\n }\n }\n };\n BreadCrumbBar.prototype.render = function () {\n this.addEventListener();\n };\n BreadCrumbBar.prototype.onPathChange = function () {\n var pathNames = this.parent.pathNames;\n var paths = this.parent.path.split('/');\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var addressbarLI = null;\n var pathNamesLen = pathNames.length;\n if (pathNames.length > 0) {\n var id = '';\n for (var i = 0; i < pathNamesLen; i++) {\n var addressATag = null;\n addressbarLI = this.parent.createElement('li', { className: 'e-address-list-item' });\n for (var j = 0; j <= i; j++) {\n id = id + paths[j] + '/';\n }\n addressbarLI.setAttribute('data-utext', id);\n if (i !== 0) {\n var icon = createElement('span', { className: CLS.ICONS });\n addressbarLI.appendChild(icon);\n }\n if (pathNamesLen - i !== 1) {\n addressATag = createElement('a', { className: CLS.LIST_TEXT });\n addressbarLI.setAttribute('tabindex', '0');\n }\n else {\n addressATag = createElement('span', { className: CLS.LIST_TEXT });\n }\n id = '';\n addressATag.innerText = pathNames[i];\n addressbarLI.appendChild(addressATag);\n addressbarUL.appendChild(addressbarLI);\n }\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n if (!isNullOrUndefined(ulElement)) {\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n remove(ulElement);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n if (!searchWrap) {\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.appendChild(addressbarUL);\n }\n this.updateBreadCrumbBar(addressbarUL);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.updateBreadCrumbBar = function (addresBarUL) {\n var liElements = addresBarUL.querySelectorAll('li');\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n var style = window.getComputedStyle(ulElement, null);\n var pRight = parseFloat(style.getPropertyValue('padding-right'));\n var pLeft = parseFloat(style.getPropertyValue('padding-left'));\n var breadCrumbBarWidth = ulElement.offsetWidth - pRight - pLeft;\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var liElementsWidth = 0;\n var liElementsWidths = [];\n for (var i = 0; i < liElements.length; i++) {\n var width = liElements[i].clientWidth;\n liElementsWidths.push(width);\n liElementsWidth = liElementsWidth + width;\n }\n if (!isNullOrUndefined(ulElement)) {\n remove(ulElement);\n }\n var searchContainer = this.parent.createElement('div');\n searchContainer.setAttribute('class', 'e-search-wrap');\n var id = this.parent.element.id + CLS.SEARCH_ID;\n var searchInput = createElement('input', { id: id,\n attrs: { autocomplete: 'off', 'aria-label': getLocaleText(this.parent, 'Search') } });\n searchContainer.appendChild(searchInput);\n var searchEle = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap .e-input');\n if (isNullOrUndefined(searchEle)) {\n this.parent.breadCrumbBarNavigation.appendChild(searchContainer);\n var span = createElement('span', { className: 'e-icons e-fe-search' });\n EventHandler.add(span, 'click', this.onShowInput, this);\n searchInput.parentElement.insertBefore(span, searchInput);\n this.searchObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: getLocaleText(this.parent, 'Search'),\n focus: this.onFocus.bind(this),\n blur: this.onBlur.bind(this)\n });\n this.searchObj.appendTo('#' + this.parent.element.id + CLS.SEARCH_ID);\n this.searchEventBind(this.parent.searchSettings.allowSearchOnTyping);\n var search = this.searchObj.element.nextElementSibling;\n EventHandler.add(search, 'mousedown', this.searchChangeHandler.bind(this), this);\n EventHandler.add(this.searchObj.element, 'keyup', this.onKeyUp.bind(this), this);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n breadCrumbBarWidth = breadCrumbBarWidth - (this.searchWrapWidth ? this.searchWrapWidth : searchWrap.offsetWidth);\n if (liElementsWidth > breadCrumbBarWidth) {\n var i = liElements.length;\n while (i--) {\n var diff = breadCrumbBarWidth - liElementsWidths[i];\n if (diff > 40) {\n addressbarUL.insertBefore(liElements[i], addressbarUL.querySelector('li'));\n breadCrumbBarWidth = diff;\n }\n else {\n var items = [];\n for (var j = 0; j <= i; j++) {\n var liElement = liElements[j];\n items.push({\n text: liElement.innerText,\n utext: liElement.getAttribute('data-utext')\n });\n }\n var subMenuLi = this.parent.createElement('li', { className: 'e-breadcrumb-menu' });\n var attributes = { className: 'e-breadcrumb-submenu' };\n var subMenuSpan = this.parent.createElement('button', attributes);\n subMenuLi.appendChild(subMenuSpan);\n addressbarUL.insertBefore(subMenuLi, addressbarUL.querySelector('li'));\n this.subMenuObj = new DropDownButton({\n items: items,\n cssClass: 'e-caret-hide e-submenu',\n iconCss: CLS.ICON_BREADCRUMB,\n iconPosition: 'Top',\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.addSubMenuAttributes.bind(this),\n select: this.subMenuSelectOperations.bind(this)\n });\n this.subMenuObj.isStringTemplate = true;\n this.subMenuObj.appendTo(subMenuSpan);\n break;\n }\n }\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.insertBefore(addresBarUL, searchWrap);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onFocus = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.add('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onKeyUp = function () {\n this.parent.notify(events.pathColumn, { args: this.parent });\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onBlur = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.remove('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.subMenuSelectOperations = function (event) {\n var args = { target: event.element };\n this.addressPathClickHandler(args);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.addSubMenuAttributes = function (args) {\n args.element.setAttribute('data-utext', getValue('utext', args.item));\n var anchor = this.parent.createElement('a', { className: 'e-list-text' });\n args.element.appendChild(anchor);\n };\n BreadCrumbBar.prototype.searchEventBind = function (allow) {\n if (allow) {\n this.searchObj.input = this.searchChangeHandler.bind(this);\n this.searchObj.change = null;\n }\n else {\n this.searchObj.change = this.searchChangeHandler.bind(this);\n this.searchObj.input = null;\n }\n };\n BreadCrumbBar.prototype.searchChangeHandler = function (args) {\n var _this = this;\n if (!isNullOrUndefined(args.value)) {\n this.parent.isFiltered = false;\n if (this.parent.searchSettings.allowSearchOnTyping) {\n window.clearTimeout(this.searchTimer);\n this.searchTimer = window.setTimeout(function () { searchWordHandler(_this.parent, args.value, false); }, 300);\n }\n else {\n searchWordHandler(this.parent, args.value, false);\n }\n }\n };\n BreadCrumbBar.prototype.addressPathClickHandler = function (e) {\n var li = e.target;\n if (li.nodeName === 'LI' || li.nodeName === 'A') {\n var node = li.nodeName === 'LI' ? li.children[0] : li;\n if (!isNullOrUndefined(node)) {\n this.parent.isFiltered = false;\n var currentPath = this.updatePath(node);\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n this.triggerFileOpen(this.parent.itemData[0]);\n read(this.parent, events.pathChanged, currentPath);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n }\n };\n BreadCrumbBar.prototype.triggerFileOpen = function (data) {\n var eventArgs = { cancel: false, fileDetails: data, module: 'BreadCrumbBar' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onShowInput = function () {\n if (this.parent.isMobile) {\n if (this.parent.element.classList.contains(CLS.FILTER)) {\n removeClass([this.parent.element], CLS.FILTER);\n this.searchWrapWidth = null;\n }\n else {\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n this.searchWrapWidth = searchWrap.offsetWidth;\n addClass([this.parent.element], CLS.FILTER);\n this.searchObj.element.focus();\n }\n }\n };\n BreadCrumbBar.prototype.updatePath = function (list) {\n var li = closest(list, 'li');\n var liElementId = li.getAttribute('data-utext');\n this.addressBarLink = liElementId;\n var link = this.addressBarLink.split('/');\n var ids = this.parent.pathId;\n var names = this.parent.pathNames;\n this.parent.pathId = [];\n this.parent.pathNames = [];\n var newpath = '';\n for (var i = 0, len = link.length - 1; i < len; i++) {\n this.parent.pathId.push(ids[i]);\n this.parent.pathNames.push(names[i]);\n newpath += link[i] + '/';\n }\n this.parent.setProperties({ path: newpath }, true);\n return newpath;\n };\n BreadCrumbBar.prototype.onUpdatePath = function () {\n this.onPathChange();\n this.removeSearchValue();\n };\n BreadCrumbBar.prototype.onCreateEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onRenameEnd = function () {\n this.onPathChange();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDeleteEnd = function () {\n this.onUpdatePath();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.removeSearchValue = function () {\n this.parent.isFiltered = false;\n if (this.searchObj && (this.searchObj.value !== '' || this.searchObj.element.value !== '')) {\n this.searchObj.value = '';\n this.searchObj.element.value = '';\n this.searchObj.dataBind();\n }\n };\n BreadCrumbBar.prototype.onResize = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onPasteEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.addEventListener = function () {\n this.keyboardModule = new KeyboardEvents(this.parent.breadCrumbBarNavigation, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n EventHandler.add(this.parent.breadCrumbBarNavigation, 'click', this.addressPathClickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.pathChanged, this.onUpdatePath, this);\n this.parent.on(events.finalizeEnd, this.onUpdatePath, this);\n this.parent.on(events.refreshEnd, this.onUpdatePath, this);\n this.parent.on(events.openEnd, this.onUpdatePath, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.splitterResize, this.onResize, this);\n this.parent.on(events.pasteEnd, this.onPasteEnd, this);\n this.parent.on(events.resizeEnd, this.onResize, this);\n this.parent.on(events.searchTextChange, this.onSearchTextChange, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.layoutRefresh, this.onResize, this);\n this.parent.on(events.dropPath, this.onPathChange, this);\n };\n BreadCrumbBar.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'enter':\n this.addressPathClickHandler(e);\n break;\n }\n };\n BreadCrumbBar.prototype.removeEventListener = function () {\n this.keyboardModule.destroy();\n this.parent.off(events.pathChanged, this.onUpdatePath);\n this.parent.off(events.finalizeEnd, this.onUpdatePath);\n this.parent.off(events.refreshEnd, this.onUpdatePath);\n this.parent.off(events.openEnd, this.onUpdatePath);\n this.parent.off(events.pasteEnd, this.onPasteEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.splitterResize, this.onResize);\n this.parent.off(events.resizeEnd, this.onResize);\n this.parent.off(events.searchTextChange, this.onSearchTextChange);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.layoutRefresh, this.onResize);\n this.parent.off(events.dropPath, this.onPathChange);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var liEle = args.target.closest('li');\n this.parent.dropPath = this.updatePath((liEle.children[0]));\n this.parent.dropData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n this.triggerFileOpen(this.parent.dropData);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n BreadCrumbBar.prototype.getModuleName = function () {\n return 'breadcrumbbar';\n };\n BreadCrumbBar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n if (!isNullOrUndefined(this.searchObj)) {\n this.searchObj.destroy();\n }\n };\n BreadCrumbBar.prototype.onSearchTextChange = function (args) {\n this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + getLocaleText(this.parent, args.cwd.name.toString());\n };\n return BreadCrumbBar;\n}());\nexport { BreadCrumbBar };\n","import { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, createElement, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, select } from '@syncfusion/ej2-base';\nimport { Download, GetDetails } from './../common/operations';\nimport { createDialog } from './dialog';\nimport { cutFiles, copyFiles, refresh, getPathObject, getLocaleText, updateLayout, getFullPath } from './../common/utility';\nimport { getCssClass, sortbyClickHandler, pasteHandler } from './../common/utility';\nimport { createDeniedDialog, createNewFolder, uploadItem, hasEditAccess, hasDownloadAccess } from './../common/utility';\nimport * as events from './../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * ContextMenu module\n */\nvar ContextMenu = /** @class */ (function () {\n /**\n * Constructor for the ContextMenu module\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @hidden\n */\n function ContextMenu(parent) {\n this.isMenuItemClicked = false;\n this.currentItems = [];\n this.currentElement = null;\n this.disabledItems = [];\n this.parent = parent;\n this.render();\n }\n ContextMenu.prototype.render = function () {\n this.keyConfigs = {\n downarrow: 'downarrow',\n uparrow: 'uparrown'\n };\n this.contextMenu = new Menu({\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n target: '#' + this.parent.element.id,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.onBeforeItemRender.bind(this),\n select: this.onSelect.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this),\n cssClass: getCssClass(this.parent, CLS.ROOT_POPUP)\n });\n this.contextMenu.isStringTemplate = true;\n this.contextMenu.appendTo('#' + this.parent.element.id + CLS.CONTEXT_MENU_ID);\n this.addEventListener();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeItemRender = function (args) {\n if (args.item.id === this.getMenuId('largeiconsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'LargeIcons' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_LARGE + ' ' + CLS.MENU_ICON);\n }\n if (args.item.id === this.getMenuId('detailsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'Details' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_GRID + ' ' + CLS.MENU_ICON);\n }\n };\n ContextMenu.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: false,\n element: args.element,\n event: args.event,\n isFocused: args.isFocused,\n fileDetails: [this.menuItemData],\n items: args.items,\n parentItem: args.parentItem,\n menuType: this.menuType\n };\n this.parent.trigger('menuClose', eventArgs, function (menuCloseArgs) {\n if (menuCloseArgs.cancel) {\n args.cancel = menuCloseArgs.cancel;\n return;\n }\n });\n this.menuTarget = null;\n if (!this.isMenuItemClicked && this.parent.pathId.length > 1 && this.parent.activeModule === 'navigationpane') {\n this.parent.pathId.pop();\n var parentKey = [];\n var itemKeys = Object.keys(this.parent.feParent);\n for (var _i = 0, itemKeys_1 = itemKeys; _i < itemKeys_1.length; _i++) {\n var item = itemKeys_1[_i];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var 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 ContextMenu.prototype.onBeforeOpen = function (args) {\n var _this = this;\n var selected = false;\n var uid;\n var data;\n var treeFolder = false;\n var target = args.event.target;\n this.menuTarget = this.targetNodeElement = target;\n this.currentElement = args.element;\n if (target.classList.contains('e-spinner-pane')) {\n target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(CLS.FULLROW)[0];\n this.menuTarget = this.targetNodeElement = target;\n }\n this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr.e-row') : target;\n if (this.parent.enableVirtualization && (target.classList.contains('e-virtual-bottom') || target.classList.contains('e-virtualtable'))) {\n target = target.parentElement.closest('div');\n }\n var view = this.getTargetView(target);\n this.updateActiveModule();\n /* istanbul ignore next */\n if (target.classList.contains(CLS.TREE_VIEW) || closest(target, 'th') ||\n (closest(target, '#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID)) ||\n (closest(target, '#' + this.parent.element.id + CLS.TOOLBAR_ID))) {\n args.cancel = true;\n }\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 var 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 if (!isNOU(uid)) {\n this.parent.navigationpaneModule.treeObj.selectedNodes = [uid];\n }\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 var itemsToRemove = ['Delete', 'Rename', 'Cut', 'Copy'];\n for (var i = 0; i < this.disabledItems.length; i++) {\n var 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 var 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 var 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 var isSubMenu = false;\n if (target.classList.contains(CLS.MENU_ITEM) ||\n target.classList.contains(CLS.MENU_ICON) || target.classList.contains(CLS.SUBMENU_ICON)) {\n isSubMenu = true;\n }\n this.menuItemData = isSubMenu ? this.menuItemData : this.getMenuItemData();\n var eventArgs = {\n fileDetails: [this.menuItemData],\n element: args.element,\n target: target,\n items: isSubMenu ? args.items : this.contextMenu.items,\n menuModule: this.contextMenu,\n cancel: false,\n menuType: this.menuType,\n isSubMenu: isSubMenu\n };\n this.currentItems = eventArgs.items;\n this.parent.trigger('menuOpen', eventArgs, function (menuOpenArgs) {\n if (!isSubMenu) {\n _this.contextMenu.dataBind();\n _this.contextMenu.items = menuOpenArgs.items;\n _this.contextMenu.dataBind();\n }\n _this.enableItems(_this.disabledItems, false, true);\n args.cancel = menuOpenArgs.cancel;\n if (menuOpenArgs.cancel) {\n _this.menuTarget = _this.targetNodeElement = _this.currentElement = null;\n }\n });\n };\n ContextMenu.prototype.updateActiveModule = function () {\n this.parent.activeModule = closest(this.menuTarget, '#' + this.parent.element.id + CLS.TREE_ID) ?\n 'navigationpane' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.GRID_ID) ?\n 'detailsview' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.LARGEICON_ID) ?\n 'largeiconsview' : this.parent.activeModule;\n };\n /* istanbul ignore next */\n /**\n *\n * @param {Element} target - specifies the target element.\n * @returns {string} -returns the target view.\n * @hidden\n */\n ContextMenu.prototype.getTargetView = function (target) {\n return target.classList.contains(CLS.TREE_VIEW) ?\n 'TreeView' : target.classList.contains(CLS.GRID_VIEW) ?\n 'GridView' : target.classList.contains(CLS.ICON_VIEW) ?\n 'LargeIcon' : target.classList.contains(CLS.LARGE_ICONS) ?\n 'LargeIcon' : '';\n };\n ContextMenu.prototype.getItemIndex = function (item) {\n var itemId = this.getMenuId(item);\n for (var i = 0; i < this.currentItems.length; i++) {\n if ((this.currentItems[i].id === itemId) || (this.currentItems[i].id === item)) {\n return i;\n }\n }\n return -1;\n };\n ContextMenu.prototype.disableItem = function (items) {\n if (items.length !== 0) {\n this.disabledItems = this.disabledItems.concat(items);\n }\n };\n ContextMenu.prototype.enableItems = function (items, enable, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n if (this.checkValidItem(items[i]) === 1) {\n this.contextMenu.enableItems([this.getMenuId(items[i])], enable, isUniqueId);\n }\n else if (this.checkValidItem(items[i]) === 2) {\n this.contextMenu.enableItems([items[i]], enable, isUniqueId);\n }\n }\n };\n ContextMenu.prototype.setFolderItem = function (isTree) {\n this.menuType = 'folder';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (isTree) {\n var selectedTreeNode = select('[data-uid=\"' + this.parent.navigationpaneModule.treeObj.selectedNodes[0] + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {\n this.disabledItems.push('Open');\n }\n else {\n var 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 var 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 var 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 ContextMenu.prototype.setFileItem = function () {\n this.menuType = 'file';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.file.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (this.parent.selectedItems.length === 1) {\n var 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 ContextMenu.prototype.setLayoutItem = function (target) {\n this.menuType = 'layout';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' &&\n (closest(target, '#' + this.parent.element.id + CLS.LARGEICON_ID).getElementsByClassName(CLS.EMPTY).length !== 0))\n || (this.parent.view === 'Details' &&\n (closest(target, '#' + this.parent.element.id + CLS.GRID_ID).getElementsByClassName(CLS.EMPTY).length !== 0)))) {\n this.disabledItems.push('SelectAll');\n }\n else {\n this.disabledItems = this.disabledItems.filter(function (item) { return 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 ContextMenu.prototype.checkValidItem = function (nameEle) {\n if (!isNOU(select('#' + this.getMenuId(nameEle), this.currentElement))) {\n return 1;\n }\n else if (!isNOU(select('#' + nameEle, this.currentElement))) {\n return 2;\n }\n else {\n return -1;\n }\n };\n ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n var args = { target: this.menuTarget };\n this.parent.notify(events.menuItemData, args);\n return this.parent.itemData[0];\n }\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onSelect = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var itemText = args.item.id.substr((this.parent.element.id + '_cm_').length);\n var details;\n if (itemText === 'refresh' || itemText === 'newfolder' || itemText === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n if (this.parent.activeModule === 'navigationpane' && itemText === 'open') {\n details = [this.menuItemData];\n }\n else {\n details = this.parent.itemData;\n }\n }\n var eventArgs = {\n cancel: false,\n element: args.element,\n fileDetails: details,\n item: args.item\n };\n this.parent.trigger('menuClick', eventArgs, function (menuClickArgs) {\n var sItems;\n if (!menuClickArgs.cancel) {\n _this.isMenuItemClicked = true;\n 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 === 'navigationpane') {\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n _this.parent.folderPath = _this.parent.path;\n }\n else {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\n }\n }\n else {\n _this.parent.folderPath = '';\n }\n pasteHandler(_this.parent);\n break;\n case 'delete':\n for (var j = 0; j < details.length; j++) {\n if (!hasEditAccess(details[j])) {\n createDeniedDialog(_this.parent, details[j], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n /* istanbul ignore next */\n case 'download':\n for (var i = 0; i < details.length; i++) {\n if (!hasDownloadAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionDownload);\n return;\n }\n }\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.notify(events.downloadInit, {});\n }\n else if (_this.parent.selectedItems.length > 0) {\n Download(_this.parent, _this.parent.path, _this.parent.selectedItems);\n }\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'selectall':\n /* istanbul ignore next */\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'open':\n if (_this.parent.visitedItem && _this.parent.activeModule !== 'navigationpane') {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n else if (_this.parent.activeModule === 'navigationpane') {\n if (_this.parent.visitedItem) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n 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 ContextMenu.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.contextMenu.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n break;\n }\n }\n };\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.keyboardModule = new KeyboardEvents(this.contextMenu.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n ContextMenu.prototype.removeEventListener = function () {\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.keyboardModule.destroy();\n };\n ContextMenu.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n e.preventDefault();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n ContextMenu.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.contextMenu.destroy();\n this.targetElement = null;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.getItemData = function (data) {\n var items = [];\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getMenuId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n switch (data[i]) {\n case '|':\n item = { separator: true };\n break;\n case 'Open':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_OPEN };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_UPLOAD };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_CUT };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_COPY };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_PASTE };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DELETE };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_RENAME };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_NEWFOLDER };\n break;\n case 'Details':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DETAILS };\n break;\n case 'SortBy':\n item = {\n id: itemId, text: itemText, iconCss: CLS.ICON_SHORTBY,\n items: [\n {\n id: this.getMenuId('Name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : null\n },\n { separator: true },\n {\n id: this.getMenuId('Ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('Descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('None'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n /* istanbul ignore next */\n case 'View':\n item = {\n id: itemId, text: itemText, iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n items: [\n {\n id: this.getMenuId('largeiconsview'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? null : CLS.TB_OPTION_TICK\n },\n {\n id: this.getMenuId('detailsview'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_REFRESH };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_SELECTALL };\n break;\n /* istanbul ignore next */\n case 'Download':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DOWNLOAD };\n break;\n /* istanbul ignore next */\n default:\n item = { id: itemId, text: itemText };\n break;\n }\n items.push(item);\n }\n return items;\n };\n ContextMenu.prototype.getMenuId = function (id) {\n return this.parent.element.id + '_cm_' + id.split(' ').join('').toLowerCase();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","/**\n * Specifies the default locale of FileManager component\n */\nexport var defaultLocale = {\n 'NewFolder': 'New folder',\n 'Upload': 'Upload',\n 'Delete': 'Delete',\n 'Rename': 'Rename',\n 'Download': 'Download',\n 'Cut': 'Cut',\n 'Copy': 'Copy',\n 'Paste': 'Paste',\n 'SortBy': 'Sort by',\n 'Refresh': 'Refresh',\n 'Item-Selection': 'item selected',\n 'Items-Selection': 'items selected',\n 'View': 'View',\n 'Details': 'Details',\n 'SelectAll': 'Select all',\n 'Open': 'Open',\n 'Tooltip-NewFolder': 'New folder',\n 'Tooltip-Upload': 'Upload',\n 'Tooltip-Delete': 'Delete',\n 'Tooltip-Rename': 'Rename',\n 'Tooltip-Download': 'Download',\n 'Tooltip-Cut': 'Cut',\n 'Tooltip-Copy': 'Copy',\n 'Tooltip-Paste': 'Paste',\n 'Tooltip-SortBy': 'Sort by',\n 'Tooltip-Refresh': 'Refresh',\n 'Tooltip-Selection': 'Clear selection',\n 'Tooltip-View': 'View',\n 'Tooltip-Details': 'Details',\n 'Tooltip-SelectAll': 'Select all',\n 'Name': 'Name',\n 'Size': 'Size',\n 'DateModified': 'Modified',\n 'DateCreated': 'Date created',\n 'Path': 'Path',\n 'Modified': 'Modified',\n 'Created': 'Created',\n 'Location': 'Location',\n 'Type': 'Type',\n 'Permission': 'Permission',\n 'Ascending': 'Ascending',\n 'Descending': 'Descending',\n 'None': 'None',\n 'View-LargeIcons': 'Large icons',\n 'View-Details': 'Details',\n 'Search': 'Search',\n 'Button-Ok': 'OK',\n 'Button-Cancel': 'Cancel',\n 'Button-Yes': 'Yes',\n 'Button-No': 'No',\n 'Button-Create': 'Create',\n 'Button-Save': 'Save',\n 'Header-NewFolder': 'Folder',\n 'Content-NewFolder': 'Enter your folder name',\n 'Header-Rename': 'Rename',\n 'Content-Rename': 'Enter your new name',\n 'Header-Rename-Confirmation': 'Rename Confirmation',\n 'Content-Rename-Confirmation': 'If you change a file name extension, the file might become unstable. ' +\n 'Are you sure you want to change it?',\n 'Header-Delete': 'Delete File',\n 'Content-Delete': 'Are you sure you want to delete this file?',\n 'Header-Folder-Delete': 'Delete Folder',\n 'Content-Folder-Delete': 'Are you sure you want to delete this folder?',\n 'Header-Multiple-Delete': 'Delete Multiple Items',\n 'Content-Multiple-Delete': 'Are you sure you want to delete these {0} items?',\n 'Header-Duplicate': 'File/Folder exists',\n 'Content-Duplicate': '{0} already exists. Do you want to rename and paste?',\n 'Header-Upload': 'Upload Files',\n 'Error': 'Error',\n 'Validation-Empty': 'The file or folder name cannot be empty.',\n 'Validation-Invalid': 'The file or folder name {0} contains invalid characters. Please use a different name. ' +\n // eslint-disable-next-line no-useless-escape\n 'Valid file or folder names cannot end with a dot or space, and cannot contain any of the following characters: \\\\/:*?\\\"<>|',\n 'Validation-NewFolder-Exists': 'A file or folder with the name {0} already exists.',\n 'Validation-Rename-Exists': 'Cannot rename {0} to {1}: destination already exists.',\n 'Folder-Empty': 'This folder is empty',\n 'File-Upload': 'Drag files here to upload',\n 'Search-Empty': 'No results found',\n 'Search-Key': 'Try with different keywords',\n 'Filter-Empty': 'No results found',\n 'Filter-Key': 'Try with different filter',\n 'Sub-Folder-Error': 'The destination folder is the subfolder of the source folder.',\n 'Same-Folder-Error': 'The destination folder is the same as the source folder.',\n 'Access-Denied': 'Access Denied',\n 'Access-Details': 'You don\"t have permission to access this folder.',\n 'Header-Retry': 'File Already Exists',\n 'Content-Retry': 'A file with this name already exists in this folder. What would you like to do?',\n 'Button-Keep-Both': 'Keep both',\n 'Button-Replace': 'Replace',\n 'Button-Skip': 'Skip',\n 'ApplyAll-Label': 'Do this for all current items',\n 'KB': 'KB',\n 'Access-Message': '{0} is not accessible. You need permission to perform the {1} action.',\n 'Network-Error': 'NetworkError: Failed to send on XMLHTTPRequest: Failed to load',\n 'Server-Error': 'ServerError: Invalid response from'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isNullOrUndefined, L10n, closest, Collection, detach, selectAll, setStyleAttribute } 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 */\nvar FileManager = /** @class */ (function (_super) {\n __extends(FileManager, _super);\n function FileManager(options, element) {\n var _this = _super.call(this, options, element) || this;\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 _this.dragSelectedItems = [];\n FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu);\n return _this;\n }\n FileManager_1 = FileManager;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n FileManager.prototype.getModuleName = function () {\n return 'filemanager';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n FileManager.prototype.preRender = function () {\n if (isNOU(this.element.id) || this.element.id === '') {\n this.element.setAttribute('id', getUniqueID('filemanager'));\n }\n this.ensurePath();\n this.feParent = [];\n this.feFiles = [];\n setAttr(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.isDevice = Browser.isDevice;\n this.isMobile = this.checkMobile();\n if (this.isMobile) {\n this.setProperties({ navigationPaneSettings: { visible: false } }, true);\n }\n var ele = closest(this.element, '.e-bigger');\n this.isBigger = ele ? true : false;\n this.activeModule = (this.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n createSpinner({ target: this.element }, createElement);\n this.addWrapper();\n this.keyConfigs = {\n altN: 'alt+n',\n f5: 'f5',\n ctrlShift1: 'ctrl+shift+1',\n ctrlShift2: 'ctrl+shift+2',\n ctrlU: 'ctrl+u'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string} - returns the persisted data.\n * @hidden\n */\n FileManager.prototype.getPersistData = function () {\n var keyEntity = ['view', 'path', 'selectedItems'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n FileManager.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'breadcrumbbar',\n args: [this]\n });\n modules.push({\n member: 'largeiconsview',\n args: [this]\n });\n if (this.toolbarSettings.visible) {\n modules.push({\n member: 'toolbar',\n args: [this],\n 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 FileManager.prototype.render = function () {\n this.initialize();\n var slItems = isNOU(this.selectedItems) ? [] :\n this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);\n this.setProperties({ selectedItems: slItems }, true);\n this.fileView = this.view;\n this.isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n this.setRtl(this.enableRtl);\n this.addEventListeners();\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n if (this.fileView === 'Details') {\n this.largeiconsviewModule.element.classList.add(CLS.DISPLAY_NONE);\n }\n this.adjustHeight();\n if (isNOU(this.navigationpaneModule)) {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n this.wireEvents();\n this.renderComplete();\n };\n FileManager.prototype.ensurePath = function () {\n var currentPath = this.path;\n if (isNOU(currentPath)) {\n currentPath = '/';\n }\n if (currentPath.lastIndexOf('/') !== (currentPath.length - 1)) {\n currentPath = currentPath + '/';\n }\n this.originalPath = currentPath;\n var paths = currentPath.split('/');\n this.setProperties({ path: paths[0] + '/' }, true);\n this.pathNames = [];\n this.pathId = ['fe_tree'];\n this.itemData = [];\n };\n FileManager.prototype.initialize = function () {\n if (this.isMobile) {\n addClass([this.element], CLS.MOBILE);\n }\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n this.addCssClass(null, this.cssClass);\n this.renderFileUpload();\n };\n FileManager.prototype.addWrapper = function () {\n var headerWrap = this.createElement('div', { id: this.element.id + CLS.TOOLBAR_ID });\n this.element.appendChild(headerWrap);\n var layoutWrap = this.createElement('div', {\n id: this.element.id + CLS.LAYOUT_ID, className: CLS.LAYOUT\n });\n this.element.appendChild(layoutWrap);\n var navigationWrap = this.createElement('div', {\n id: this.element.id + CLS.NAVIGATION_ID, className: CLS.NAVIGATION\n });\n var treeWrap = this.createElement('div', {\n id: this.element.id + CLS.TREE_ID\n });\n navigationWrap.appendChild(treeWrap);\n var contentWrap = this.createElement('div', {\n id: this.element.id + CLS.CONTENT_ID, className: CLS.LAYOUT_CONTENT\n });\n this.breadCrumbBarNavigation = this.createElement('div', {\n id: this.element.id + CLS.BREADCRUMBBAR_ID,\n className: CLS.BREADCRUMBS\n });\n contentWrap.appendChild(this.breadCrumbBarNavigation);\n var gridWrap = this.createElement('div', {\n id: this.element.id + CLS.GRID_ID\n });\n contentWrap.appendChild(gridWrap);\n var largeiconWrap = this.createElement('div', {\n id: this.element.id + CLS.LARGEICON_ID,\n className: CLS.LARGE_ICONS, attrs: { 'role': 'group' }\n });\n contentWrap.appendChild(largeiconWrap);\n var overlay = this.createElement('span', { className: CLS.OVERLAY });\n contentWrap.appendChild(overlay);\n var paneSettings;\n if (!this.enableRtl) {\n layoutWrap.appendChild(navigationWrap);\n layoutWrap.appendChild(contentWrap);\n paneSettings = [\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n },\n { size: '75%', min: '270px' }\n ];\n }\n else {\n layoutWrap.appendChild(contentWrap);\n layoutWrap.appendChild(navigationWrap);\n paneSettings = [\n { size: '75%', min: '270px' },\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n }\n ];\n }\n this.splitterObj = new Splitter({\n paneSettings: paneSettings,\n width: '100%',\n enableRtl: false,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n resizing: this.splitterResize.bind(this)\n });\n this.splitterObj.isStringTemplate = true;\n this.splitterObj.appendTo(layoutWrap);\n var dialogWrap = this.createElement('div', { id: this.element.id + CLS.DIALOG_ID });\n this.element.appendChild(dialogWrap);\n var menuWrap = this.createElement('ul', { id: this.element.id + CLS.CONTEXT_MENU_ID });\n this.element.appendChild(menuWrap);\n var dialogImgWrap = this.createElement('div', { id: this.element.id + CLS.IMG_DIALOG_ID });\n this.element.appendChild(dialogImgWrap);\n var extnDialogWrap = this.createElement('div', { id: this.element.id + CLS.EXTN_DIALOG_ID });\n this.element.appendChild(extnDialogWrap);\n var uploadDialogWrap = this.createElement('div', { id: this.element.id + CLS.UPLOAD_DIALOG_ID });\n this.element.appendChild(uploadDialogWrap);\n };\n FileManager.prototype.adjustHeight = function () {\n var toolbar = select('#' + this.element.id + CLS.TOOLBAR_ID, this.element);\n var toolBarHeight = toolbar ? toolbar.offsetHeight : 0;\n if (this.splitterObj) {\n this.splitterObj.height = (this.element.clientHeight - toolBarHeight).toString();\n this.splitterObj.dataBind();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.splitterResize = function () {\n this.notify(events.splitterResize, {});\n };\n FileManager.prototype.splitterAdjust = function () {\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n if (this.navigationPaneSettings.visible) {\n this.splitterObj.expand(this.enableRtl ? 1 : 0);\n bar.classList.remove(CLS.DISPLAY_NONE);\n }\n else {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n };\n FileManager.prototype.addCssClass = function (oldOne, newOne) {\n if (!isNOU(oldOne) && oldOne !== '') {\n removeClass([this.element], oldOne.split(' '));\n }\n if (!isNOU(newOne) && newOne !== '') {\n addClass([this.element], newOne.split(' '));\n }\n };\n FileManager.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n FileManager.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n FileManager.prototype.onContextMenu = function (e) {\n e.preventDefault();\n };\n FileManager.prototype.checkMobile = function () {\n return (/iphone|ipod|android|blackberry|opera|mini|windows\\sce|palm|smartphone|iemobile/i.test(Browser.userAgent.toLowerCase())\n && /mobile/i.test(Browser.userAgent.toLowerCase()));\n };\n FileManager.prototype.renderFileUpload = function () {\n var id = this.element.id + CLS.UPLOAD_ID;\n var uploadEle = this.createElement('input', { id: id, attrs: { name: 'uploadFiles', type: 'file' } });\n this.element.appendChild(uploadEle);\n this.uploadDialogObj = new Dialog({\n header: getLocaleText(this, 'Header-Upload'),\n content: uploadEle,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: false,\n isModal: true,\n width: '350px',\n target: this.popupTarget ? this.popupTarget : '#' + this.element.id,\n cssClass: getCssClass(this, this.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: this.locale,\n allowDragging: true,\n position: { X: 'center', Y: 'center' },\n enableRtl: this.enableRtl,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n open: this.onOpen.bind(this),\n close: this.onClose.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n });\n this.uploadDialogObj.appendTo('#' + this.element.id + CLS.UPLOAD_DIALOG_ID);\n this.renderUploadBox();\n };\n FileManager.prototype.renderUploadBox = function () {\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n this.uploadObj = new Uploader({\n dropArea: select('#' + this.element.id + CLS.CONTENT_ID, this.element),\n asyncSettings: {\n saveUrl: uploadUrl,\n removeUrl: uploadUrl\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n removing: this.onRemoving.bind(this),\n canceling: this.onCancel.bind(this),\n clearing: this.onClearing.bind(this),\n selected: this.onSelected.bind(this),\n success: this.onUploadSuccess.bind(this),\n failure: this.onUploadFailure.bind(this),\n autoUpload: this.uploadSettings.autoUpload,\n minFileSize: this.uploadSettings.minFileSize,\n maxFileSize: this.uploadSettings.maxFileSize,\n allowedExtensions: this.uploadSettings.allowedExtensions,\n directoryUpload: this.uploadSettings.directoryUpload,\n fileListRendering: this.onFileListRender.bind(this)\n });\n this.uploadObj.appendTo('#' + this.element.id + CLS.UPLOAD_ID);\n };\n FileManager.prototype.onFileListRender = function (args) {\n this.trigger('uploadListCreate', args);\n };\n FileManager.prototype.updateUploader = function () {\n this.uploadObj.autoUpload = this.uploadSettings.autoUpload;\n this.uploadObj.minFileSize = this.uploadSettings.minFileSize;\n this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;\n this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;\n this.uploadObj.directoryUpload = this.uploadSettings.directoryUpload;\n this.uploadObj.dataBind();\n };\n FileManager.prototype.onBeforeOpen = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onOpen = function () {\n this.isOpened = true;\n this.uploadDialogObj.element.focus();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupOpen', args);\n };\n FileManager.prototype.onClose = function () {\n this.isOpened = false;\n this.uploadObj.clearAll();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupClose', args);\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploading = function (args) {\n var action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n if (args.fileData.name === this.retryArgs[i].file.name) {\n action = this.retryArgs[i].action;\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n var ajaxSettings = {\n url: uploadUrl,\n type: 'POST',\n mode: true,\n dataType: null,\n contentType: null,\n data: JSON.stringify(args.customFormData),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n this.uploadEventArgs = { action: 'Upload', ajaxSettings: ajaxSettings, cancel: false };\n this.trigger('beforeSend', this.uploadEventArgs, function (uploadEventArgs) {\n args.customFormData = JSON.parse(getValue('data', uploadEventArgs.ajaxSettings));\n args.cancel = uploadEventArgs.cancel;\n var eventArgs = {\n cancel: false,\n httpRequest: args.currentRequest\n };\n if (typeof getValue('beforeSend', uploadEventArgs.ajaxSettings) === 'function') {\n getValue('beforeSend', uploadEventArgs.ajaxSettings)(eventArgs);\n if (getValue('cancel', eventArgs)) {\n args.cancel = getValue('cancel', eventArgs);\n }\n }\n });\n };\n FileManager.prototype.onRemoving = function () {\n this.onFileUploadSuccess({ count: 1 });\n if (this.uploadObj.getFilesData().length === 1) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onCancel = function (args) {\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': 'remove' }, { 'data': data }];\n };\n /* istanbul ignore next */\n FileManager.prototype.onClearing = function () {\n if (this.isOpened) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onSelected = function (args) {\n if (args.filesData.length === 0) {\n return;\n }\n this.uploadingCount = args.filesData.length;\n this.uploadedCount = 0;\n var details = getPathObject(this);\n if (!hasUploadAccess(details)) {\n args.cancel = true;\n createDeniedDialog(this, details, events.permissionUpload);\n return;\n }\n this.uploadDialogObj.show();\n };\n FileManager.prototype.onFileUploadSuccess = function (args) {\n this.uploadedCount = this.uploadedCount + args.count;\n if (this.uploadSettings.autoClose && (this.uploadingCount === this.uploadedCount)) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploadSuccess = function (files) {\n var args = { action: 'Upload', result: files };\n this.trigger('success', args);\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n read(this, events.pathChanged, this.path);\n this.onFileUploadSuccess({ count: 1 });\n if (typeof getValue('onSuccess', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', this.uploadEventArgs.ajaxSettings)();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploadFailure = function (files) {\n var response = getValue('response', files);\n var statusText = getValue('statusText', response);\n if (statusText !== '') {\n setValue('statusText', statusText, files);\n }\n var args = { action: 'Upload', error: files };\n this.trigger('failure', args);\n if (getValue('statusCode', response) === 400) {\n this.retryFiles.push(getValue('file', files));\n if (!this.isRetryOpened) {\n createExtDialog(this, 'UploadRetry');\n }\n }\n if (typeof getValue('onFailure', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onFailure', this.uploadEventArgs.ajaxSettings)();\n }\n };\n FileManager.prototype.onInitialEnd = function () {\n setNextPath(this, this.path);\n };\n FileManager.prototype.addEventListeners = function () {\n this.on(events.beforeRequest, this.showSpinner, this);\n this.on(events.afterRequest, this.hideSpinner, this);\n this.on(events.initialEnd, this.onInitialEnd, this);\n this.on(events.detailsInit, this.onDetailsInit, this);\n this.on(events.skipUpload, this.onFileUploadSuccess, this);\n EventHandler.add(this.element, 'contextmenu', this.onContextMenu, this);\n };\n FileManager.prototype.removeEventListeners = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.beforeRequest, this.showSpinner);\n this.off(events.afterRequest, this.hideSpinner);\n this.off(events.initialEnd, this.onInitialEnd);\n this.off(events.detailsInit, this.onDetailsInit);\n this.off(events.skipUpload, this.onFileUploadSuccess);\n EventHandler.remove(this.element, 'contextmenu', this.onContextMenu);\n };\n FileManager.prototype.onDetailsInit = function () {\n if (isNOU(this.activeModule)) {\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n }\n };\n FileManager.prototype.resizeHandler = function () {\n this.adjustHeight();\n this.notify(events.resizeEnd, {});\n };\n FileManager.prototype.keyActionHandler = function (e) {\n var uploadEle;\n switch (e.action) {\n case 'altN':\n e.preventDefault();\n this.itemData = [getPathObject(this)];\n if (!hasContentAccess(this.itemData[0])) {\n createDeniedDialog(this, this.itemData[0], events.permissionEditContents);\n }\n else {\n createDialog(this, 'NewFolder');\n }\n break;\n case 'f5':\n e.preventDefault();\n refresh(this);\n break;\n /* istanbul ignore next */\n case 'ctrlShift1':\n e.preventDefault();\n this.fileView = 'Details';\n this.setProperties({ view: 'Details' }, true);\n showSpinner(this.element);\n updateLayout(this, 'Details');\n break;\n /* istanbul ignore next */\n case 'ctrlShift2':\n e.preventDefault();\n this.fileView = 'LargeIcons';\n this.setProperties({ view: 'LargeIcons' }, true);\n showSpinner(this.element);\n updateLayout(this, 'LargeIcons');\n break;\n case 'ctrlU':\n e.preventDefault();\n if (this.toolbarSettings.items.indexOf('Upload') !== -1) {\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n }\n break;\n }\n };\n FileManager.prototype.wireSelectOnDragEvent = function (isBind) {\n if (isNOU(this.view)) {\n return;\n }\n if (isBind) {\n this.viewElem = this.view === 'LargeIcons' ? this.largeiconsviewModule.element : this.element.querySelector('.e-gridcontent');\n }\n if (!this.viewElem) {\n return;\n }\n if (isBind) {\n if (this.allowMultiSelection) {\n EventHandler.add(this.viewElem, 'mousedown', this.onDragStart, this);\n this.on(events.layoutChange, this.onLayoutChange, this);\n this.on(events.selectionChanged, this.onLayoutChange, this);\n }\n }\n else {\n EventHandler.remove(this.viewElem, 'mousedown', this.onDragStart);\n this.off(events.layoutChange, this.onLayoutChange);\n this.off(events.selectionChanged, this.onLayoutChange);\n }\n };\n FileManager.prototype.wireEvents = function () {\n if (this.enableRangeSelection) {\n this.wireSelectOnDragEvent(true);\n }\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n FileManager.prototype.unWireEvents = function () {\n this.wireSelectOnDragEvent(false);\n EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\n };\n FileManager.prototype.onDragStart = function (event) {\n if (this.viewElem) {\n if (this.allowDragAndDrop) {\n var targetElement = closest(event.target, this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-fe-text');\n if (targetElement) {\n return;\n }\n }\n event.preventDefault();\n this.dragX = event.pageX;\n this.dragY = event.pageY;\n if (!this.dragSelectElement) {\n this.dragSelectElement = createElement('div', {\n id: this.element.id + '_drag',\n className: 'e-filemanager e-drag-select',\n styles: 'left: ' + this.dragX + 'px;top: ' + this.dragY + 'px;'\n });\n document.body.append(this.dragSelectElement);\n }\n EventHandler.add(document, 'mouseup', this.onDragStop, this);\n EventHandler.add(this.viewElem, 'mousemove', this.onDrag, this);\n EventHandler.add(this.dragSelectElement, 'mousemove', this.onDrag, this);\n }\n };\n FileManager.prototype.onDrag = function (event) {\n event.stopPropagation();\n if (this.dragSelectElement) {\n var diffX = event.pageX - this.dragX;\n var diffY = event.pageY - this.dragY;\n setStyleAttribute(this.dragSelectElement, {\n 'left': diffX < 0 ? this.dragX + diffX + 'px' : this.dragX + 'px', 'top': diffY < 0 ? this.dragY + diffY + 'px' : this.dragY + 'px',\n 'height': Math.abs(diffY) + 'px', 'width': Math.abs(diffX) + 'px'\n });\n this.selectItems();\n }\n else {\n EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);\n }\n };\n FileManager.prototype.onDragStop = function () {\n if (this.viewElem) {\n EventHandler.remove(document, 'mouseup', this.onDragStop);\n EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);\n }\n if (this.dragSelectElement) {\n EventHandler.remove(this.dragSelectElement, 'mousemove', this.onDrag);\n if (this.dragSelectElement.clientHeight > 0 && this.dragSelectElement.clientWidth > 0) {\n this.setProperties({ selectedItems: this.dragSelectedItems });\n }\n this.dragSelectedItems = [];\n detach(this.dragSelectElement);\n this.dragSelectElement = null;\n }\n };\n FileManager.prototype.selectItems = function () {\n this.dragSelectedItems = [];\n var dragRect = this.dragSelectElement.getBoundingClientRect();\n var allItems = selectAll(this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-row', this.viewElem);\n removeClass(selectAll('.e-active', this.viewElem), ['e-active', 'e-focus']);\n removeClass(selectAll('.e-check', this.viewElem), ['e-check']);\n for (var _i = 0, allItems_1 = allItems; _i < allItems_1.length; _i++) {\n var item = allItems_1[_i];\n var itemRect = item.getBoundingClientRect();\n if (!(dragRect.right < itemRect.left || dragRect.left > itemRect.right\n || dragRect.bottom < itemRect.top || dragRect.top > itemRect.bottom)\n && (this.dragSelectElement.clientHeight > 0 && this.dragSelectElement.clientWidth > 0)) {\n if (this.viewElem.classList.contains('e-large-icons')) {\n item.classList.add('e-active');\n this.dragSelectedItems.push(item.getAttribute('title'));\n }\n else {\n addClass(selectAll('.e-rowcell', item), ['e-active']);\n this.dragSelectedItems.push(item.querySelector('.e-drag-text').textContent);\n }\n item.querySelector('.e-frame').classList.add('e-check');\n }\n }\n };\n FileManager.prototype.onLayoutChange = function () {\n if (this.enableRangeSelection) {\n this.unWireEvents();\n this.wireEvents();\n }\n };\n FileManager.prototype.setPath = function () {\n this.setProperties({ selectedItems: [] }, true);\n this.ensurePath();\n this.notify(events.clearPathInit, { selectedNode: this.pathId[0] });\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FileManager} newProp\n * @param {FileManager} oldProp\n * @returns void\n * @private\n */\n /* istanbul ignore next */\n FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var height;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'ajaxSettings':\n this.ajaxSettingSetModel(newProp);\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'allowMultiSelection':\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n else {\n if (this.selectedItems.length > 1) {\n this.setProperties({ selectedItems: this.selectedItems.slice(this.selectedItems.length - 1) }, true);\n }\n removeClass([this.element], CLS.CHECK_SELECT);\n }\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'cssClass':\n this.addCssClass(oldProp.cssClass, newProp.cssClass);\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'detailsViewSettings':\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableRangeSelection':\n this.wireSelectOnDragEvent(false);\n if (newProp.enableRangeSelection) {\n this.wireSelectOnDragEvent(true);\n }\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 FileManager.prototype.ajaxSettingSetModel = function (newProp) {\n if (!isNullOrUndefined(newProp.ajaxSettings.url)) {\n this.setProperties({ ajaxSettings: { url: newProp.ajaxSettings.url } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.uploadUrl)) {\n this.setProperties({ ajaxSettings: { uploadUrl: newProp.ajaxSettings.uploadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.downloadUrl)) {\n this.setProperties({ ajaxSettings: { downloadUrl: newProp.ajaxSettings.downloadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.getImageUrl)) {\n this.setProperties({ ajaxSettings: { getImageUrl: newProp.ajaxSettings.getImageUrl } }, true);\n }\n this.setProperties({ path: '/' }, true);\n this.setProperties({ selectedItems: [] }, true);\n _super.prototype.refresh.call(this);\n };\n /* istanbul ignore next */\n FileManager.prototype.localeSetModelOption = function (newProp) {\n this.uploadObj.locale = newProp.locale;\n _super.prototype.refresh.call(this);\n };\n /**\n * Triggers when the component is destroyed.\n *\n * @returns {void}\n */\n FileManager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.refreshing) {\n this.notify(events.destroy, {});\n }\n this.uploadObj.destroy();\n this.uploadObj = null;\n this.uploadDialogObj.destroy();\n this.uploadDialogObj = null;\n this.splitterObj.destroy();\n this.splitterObj = null;\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.dialogObj = null;\n }\n if (this.viewerObj) {\n this.viewerObj.destroy();\n this.viewerObj = null;\n }\n if (this.extDialogObj) {\n this.extDialogObj.destroy();\n this.extDialogObj = null;\n }\n this.element.removeAttribute('style');\n this.element.removeAttribute('tabindex');\n this.removeEventListeners();\n this.unWireEvents();\n this.addCssClass(this.cssClass, null);\n removeClass([this.element], [CLS.RTL, CLS.MOBILE, CLS.CHECK_SELECT]);\n this.element.innerHTML = '';\n this.breadCrumbBarNavigation = null;\n this.activeElements = null;\n this.virtualDragElement = null;\n this.visitedItem = null;\n _super.prototype.destroy.call(this);\n this.virtualizationModule = null;\n this.navigationpaneModule = null;\n this.toolbarModule = null;\n this.contextmenuModule = null;\n this.largeiconsviewModule = null;\n this.detailsviewModule = null;\n this.breadcrumbbarModule = null;\n this.viewElem = null;\n this.dragSelectElement = null;\n this.dragSelectedItems = null;\n };\n /**\n * Creates a new folder in file manager.\n *\n * @param {string} name – Specifies the name of new folder in current path.\n * If it is not specified, then the default new folder dialog will be opened.\n * @returns {void}\n */\n FileManager.prototype.createFolder = function (name) {\n this.notify(events.methodCall, { action: 'createFolder' });\n var details = [getPathObject(this)];\n this.itemData = details;\n if (name) {\n if (/[/\\\\|*?\"<>:]/.test(name)) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(this, 'Validation-Invalid').replace('{0}', '\"' + name + '\"'),\n fileExists: null\n }\n };\n createDialog(this, 'Error', result);\n }\n else {\n if (!hasContentAccess(details[0])) {\n createDeniedDialog(this, details[0], events.permissionEditContents);\n }\n else {\n createFolder(this, name);\n }\n }\n }\n else {\n createNewFolder(this);\n }\n };\n /**\n * Deletes the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to delete the nested level folders or\n * files, then specify the filter path along with name of the folders or files when performing the search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then delete confirmation dialog will be opened for selected item.\n *\n * @returns {void}\n */\n FileManager.prototype.deleteFiles = function (ids) {\n this.notify(events.methodCall, { action: 'deleteFiles', ids: ids });\n };\n /**\n * Disables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, false);\n }\n };\n /**\n * Downloads the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to download the nested level folders\n * or files, then specify the filter path along with name of the folders or files when performing search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then the selected items will be downloaded.\n *\n * @returns {void}\n */\n FileManager.prototype.downloadFiles = function (ids) {\n this.notify(events.methodCall, { action: 'downloadFiles', ids: ids });\n };\n /**\n * Enables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be enabled.\n * @returns {void}\n */\n FileManager.prototype.enableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, true);\n }\n };\n /**\n * Disables the specified context menu items in file manager. This method is used only in the menuOpen event.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.disableItem(items);\n }\n };\n /**\n * Returns the index position of given current context menu item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns menu item index.\n */\n FileManager.prototype.getMenuItemIndex = function (item) {\n if (this.contextmenuModule) {\n return this.contextmenuModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Returns the index position of given toolbar item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns toolbar item index.\n */\n FileManager.prototype.getToolbarItemIndex = function (item) {\n if (this.toolbarModule) {\n return this.toolbarModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Display the custom filtering files in file manager.\n *\n * @param {Object} filterData - Specifies the custom filter details along with custom file action name,\n * which needs to be sent to the server side. If you do not specify the details, then default action name will be `filter`.\n *\n * @returns {void}\n */\n FileManager.prototype.filterFiles = function (filterData) {\n this.filterData = filterData ? filterData : null;\n this.setProperties({ selectedItems: [] }, true);\n this.notify(events.selectionChanged, {});\n this.isFiltered = true;\n if (this.breadcrumbbarModule.searchObj.element.value !== '') {\n this.breadcrumbbarModule.searchObj.element.value = '';\n }\n filter(this, events.filterEnd);\n };\n /**\n * Gets the details of the selected files in the file manager.\n *\n * @returns {Object[]} - returns selected files.\n */\n FileManager.prototype.getSelectedFiles = function () {\n this.notify(events.updateSelectionData, {});\n return this.itemData;\n };\n /**\n * Opens the corresponding file or folder from the given unique identifier.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to open the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n *\n * @returns {void}\n */\n FileManager.prototype.openFile = function (id) {\n this.notify(events.methodCall, { action: 'openFile', id: id });\n };\n /**\n * Refreshes the folder files of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshFiles = function () {\n refresh(this);\n };\n /**\n * Refreshes the layout of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshLayout = function () {\n this.adjustHeight();\n this.notify(events.layoutRefresh, {});\n };\n /**\n * Selects the entire folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.selectAll = function () {\n this.notify(events.methodCall, { action: 'selectAll' });\n };\n /**\n * Specifies the method that must be invoked to traverse the path backwards in the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.traverseBackward = function () {\n if (this.pathNames.length > 1 && this.breadcrumbbarModule.searchObj.element.value === '' && !this.isFiltered) {\n this.pathId.pop();\n this.pathNames.pop();\n var newPath = this.pathNames.slice(1).join('/');\n newPath = newPath === '' ? '/' : '/' + newPath + '/';\n this.setProperties({ path: newPath }, true);\n read(this, events.pathChanged, this.path);\n var treeNodeId = this.pathId[this.pathId.length - 1];\n this.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * Deselects the currently selected folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.clearSelection = function () {\n this.notify(events.methodCall, { action: 'clearSelection' });\n };\n /**\n * Renames the file or folder with given new name in file manager.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to rename the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n * If it is not specified, then rename dialog will be opened for selected item.\n *\n * @param {string} name – Specifies the new name of the file or folder in current path. If it is not specified, then rename dialog\n * will be opened for given identifier.\n *\n * @returns {void}\n */\n FileManager.prototype.renameFile = function (id, name) {\n this.notify(events.methodCall, { action: 'renameFile', id: id, newName: name });\n };\n /**\n * Opens the upload dialog in file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.uploadFiles = function () {\n var 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 FileManager.prototype.closeDialog = function () {\n closePopup(this);\n };\n /**\n * Specifies the direction of FileManager\n *\n * @param {boolean} rtl - specifies rtl parameter.\n * @returns {void}\n */\n FileManager.prototype.setRtl = function (rtl) {\n if (rtl) {\n this.addCssClass(null, CLS.RTL);\n }\n else {\n this.addCssClass(CLS.RTL, null);\n }\n if (this.uploadObj) {\n this.uploadDialogObj.enableRtl = rtl;\n this.uploadObj.enableRtl = rtl;\n }\n };\n var FileManager_1;\n __decorate([\n Complex({}, AjaxSettings)\n ], FileManager.prototype, \"ajaxSettings\", void 0);\n __decorate([\n Property([])\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 Property(false)\n ], FileManager.prototype, \"enableRangeSelection\", 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, \"menuClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"uploadListCreate\", void 0);\n FileManager = FileManager_1 = __decorate([\n NotifyPropertyChanges\n ], FileManager);\n return FileManager;\n}(Component));\nexport { FileManager };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Toolbar as BaseToolbar } from '@syncfusion/ej2-navigations';\nimport { select, isNullOrUndefined as isNOU, closest, selectAll } from '@syncfusion/ej2-base';\nimport { createDialog } from '../pop-up/dialog';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { refresh, getPathObject, getLocaleText, getCssClass, sortbyClickHandler } from '../common/utility';\nimport { createDeniedDialog, updateLayout } from '../common/utility';\nimport { GetDetails } from '../common/operations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { cutFiles, copyFiles, pasteHandler, hasEditAccess } from '../common/index';\nimport { doDownload, createNewFolder, uploadItem } from '../common/index';\n/**\n * Toolbar module\n */\nvar Toolbar = /** @class */ (function () {\n /**\n * Constructor for the Toolbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies the parent element.\n * @private\n */\n function Toolbar(parent) {\n this.default = ['Delete', 'Rename', 'Download', 'Cut', 'Copy', 'Paste'];\n this.single = ['Delete', 'Rename', 'Download', 'Cut', 'Copy'];\n this.multiple = ['Delete', 'Download', 'Cut', 'Copy', 'Refresh'];\n this.selection = ['NewFolder', 'Upload', 'SortBy', 'Refresh'];\n this.parent = parent;\n this.render();\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n var _this = this;\n this.items = this.toolbarItemData(this.getItems(this.parent.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj = new BaseToolbar({\n items: _this.items,\n created: _this.toolbarCreateHandler.bind(_this),\n overflowMode: 'Popup',\n clicked: _this.onClicked.bind(_this),\n enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n enableRtl: _this.parent.enableRtl\n });\n _this.toolbarObj.isStringTemplate = true;\n _this.toolbarObj.root = _this.parent.root ? _this.parent.root : _this.parent;\n _this.toolbarObj.appendTo('#' + _this.parent.element.id + CLS.TOOLBAR_ID);\n });\n };\n Toolbar.prototype.getItemIndex = function (item) {\n var itemId = this.getId(item);\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i].id === itemId) {\n return i;\n }\n }\n return -1;\n };\n Toolbar.prototype.getItems = function (items) {\n var currItems = items.slice();\n if (this.parent.isDevice && this.parent.allowMultiSelection) {\n currItems.push('SelectAll');\n }\n if (this.parent.toolbarItems.length > 0) {\n currItems = this.parent.toolbarItems.map(function (item) { return item.name; });\n }\n return currItems;\n };\n /* istanbul ignore next */\n Toolbar.prototype.onClicked = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var tool = args.item.id.substr((this.parent.element.id + '_tb_').length);\n var details;\n if (tool === 'refresh' || tool === 'newfolder' || tool === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = { cancel: false, fileDetails: details, item: args.item };\n this.parent.trigger('toolbarClick', eventArgs, function (toolbarClickArgs) {\n var sItems;\n var target;\n if (!toolbarClickArgs.cancel) {\n switch (tool) {\n case 'sortby':\n target = closest(args.originalEvent.target, '.' + CLS.TB_ITEM);\n if (target && target.classList.contains('e-toolbar-popup')) {\n args.cancel = true;\n }\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'delete':\n for (var i = 0; i < details.length; i++) {\n if (!hasEditAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'paste':\n _this.parent.folderPath = '';\n pasteHandler(_this.parent);\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'download':\n doDownload(_this.parent);\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n case 'selectall':\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'selection':\n _this.parent.notify(events.clearAllInit, {});\n break;\n }\n }\n });\n };\n Toolbar.prototype.toolbarCreateHandler = function () {\n var _this = this;\n if (!isNOU(select('#' + this.getId('SortBy'), this.parent.element))) {\n var items = [\n { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '' },\n { separator: true },\n { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('none'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '' }\n ];\n this.buttonObj = new DropDownButton({\n items: items, cssClass: getCssClass(this.parent, CLS.ROOT_POPUP),\n select: sortbyClickHandler.bind(this, this.parent),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl, iconCss: CLS.ICON_SHORTBY\n });\n this.buttonObj.isStringTemplate = true;\n this.buttonObj.appendTo('#' + this.getId('SortBy'));\n }\n if (!isNOU(select('#' + this.getId('View'), this.parent.element))) {\n var gridSpan_1 = '<span class=\"' + CLS.ICON_GRID + ' ' + CLS.MENU_ICON + '\"></span>';\n var largeIconSpan_1 = '<span class=\"' + CLS.ICON_LARGE + ' ' + CLS.MENU_ICON + '\"></span>';\n var 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: function (args) {\n var tickIcon = args.item.iconCss;\n var viewText = args.item.text === getLocaleText(_this.parent, 'View-LargeIcons');\n var iconClass = tickIcon ? ' e-menu-icon ' + tickIcon : '';\n args.element.innerHTML = '<span class=\"' + iconClass + '\"></span>' + (viewText ? largeIconSpan_1 : gridSpan_1) + args.item.text;\n var 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 var btnElement = selectAll('.e-btn', this.toolbarObj.element);\n var _loop_1 = function (btnCount) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n this.parent.refreshLayout();\n };\n Toolbar.prototype.updateSortByButton = function () {\n if (this.buttonObj) {\n var items = this.buttonObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n if (this.parent.sortBy === 'dateModified' || this.parent.sortBy === 'dateCreated') {\n items[itemCount].iconCss = this.parent.sortBy === this.parent.sortBy ? CLS.TB_OPTION_DOT : '';\n }\n else {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.getPupupId = function (id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n };\n Toolbar.prototype.layoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (args.item.id === this.getPupupId('large')) {\n updateLayout(this.parent, 'LargeIcons');\n }\n }\n else {\n if (args.item.id === this.getPupupId('details')) {\n updateLayout(this.parent, 'Details');\n }\n }\n };\n Toolbar.prototype.toolbarItemData = function (data) {\n var items = [];\n var mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var propItem = void 0;\n if (this.parent.toolbarItems.length > 0) {\n propItem = this.getItemModel(this.parent.toolbarItems[parseInt(i.toString(), 10)]);\n }\n var itemId = this.getId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n var itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n switch (data[i]) {\n case '|':\n item = { type: 'Separator' };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_UPLOAD, showTextOn: mode };\n break;\n case 'SortBy': {\n var spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\n if (propItem && propItem.text) {\n spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + propItem.text + '</span>';\n }\n item = {\n id: itemId, tooltipText: itemTooltip,\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\">' + spanElement + '</button>'\n };\n break;\n }\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: CLS.ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View': {\n var viewText = void 0;\n if (propItem && propItem.text) {\n viewText = propItem.text;\n }\n else {\n viewText = getLocaleText(this.parent, 'View');\n }\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\" aria-label=' +\n viewText + '></button>'\n };\n break;\n }\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, template: '' };\n break;\n }\n if (this.parent.toolbarItems.length > 0 && propItem) {\n var mergedItems = Object.assign({}, item, propItem);\n items.push(mergedItems);\n }\n else {\n items.push(item);\n }\n }\n return items;\n };\n Toolbar.prototype.getItemModel = function (propItem) {\n var item = {};\n if (propItem.id) {\n item.id = propItem.id;\n }\n if (propItem.text) {\n item.text = propItem.text;\n }\n if (propItem.tooltipText) {\n item.tooltipText = propItem.tooltipText;\n }\n if (propItem.prefixIcon) {\n item.prefixIcon = propItem.prefixIcon;\n }\n if (propItem.cssClass) {\n item.cssClass = propItem.cssClass;\n }\n if (propItem.showTextOn !== 'Both') {\n item.showTextOn = propItem.showTextOn;\n }\n if (propItem.template) {\n item.template = propItem.template;\n }\n if (propItem.disabled) {\n item.disabled = propItem.disabled;\n }\n if (propItem.width !== 'auto') {\n item.width = propItem.width;\n }\n if (propItem.suffixIcon) {\n item.suffixIcon = propItem.suffixIcon;\n }\n if (propItem.align !== 'Left') {\n item.align = propItem.align;\n }\n if (propItem.overflow !== 'None') {\n item.overflow = propItem.overflow;\n }\n if (propItem.htmlAttributes) {\n item.htmlAttributes = propItem.htmlAttributes;\n }\n if (propItem.type !== 'Button') {\n item.type = propItem.type;\n }\n if (propItem.visible !== true) {\n item.visible = propItem.visible;\n }\n if (propItem.showAlwaysInPopup) {\n item.showAlwaysInPopup = propItem.showAlwaysInPopup;\n }\n if (propItem.tabIndex !== -1) {\n item.tabIndex = propItem.tabIndex;\n }\n return item;\n };\n Toolbar.prototype.getId = function (id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n };\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.showPaste, this.showPaste, this);\n this.parent.on(events.hidePaste, this.hidePaste, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.sortByChange, this.updateSortByButton, this);\n };\n Toolbar.prototype.reRenderToolbar = function (e) {\n var _this = this;\n var itemsToProcess = [];\n if (this.parent.toolbarItems.length > 0) {\n itemsToProcess = this.parent.toolbarItems.map(function (item) {\n return item.name;\n });\n }\n else if (e.newProp.toolbarSettings.items !== undefined) {\n itemsToProcess = e.newProp.toolbarSettings.items.map(function (item) {\n return item.trim();\n });\n }\n if (itemsToProcess.length > 0) {\n this.items = this.toolbarItemData(this.getItems(itemsToProcess));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n if (_this.buttonObj) {\n _this.buttonObj.destroy();\n }\n if (_this.layoutBtnObj) {\n _this.layoutBtnObj.destroy();\n }\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj.items = _this.items;\n _this.toolbarObj.dataBind();\n _this.toolbarCreateHandler();\n });\n }\n };\n Toolbar.prototype.onSelectionChanged = function () {\n this.hideStatus();\n this.hideItems(this.single, true);\n this.hideItems(this.selection, false);\n if (this.parent.selectedItems.length === 1) {\n this.hideItems(this.single, false);\n this.hideItems(this.selection, true);\n }\n else if (this.parent.selectedItems.length > 1) {\n this.hideItems(this.multiple, false);\n this.hideItems(this.selection, true);\n }\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele && !this.parent.enableVirtualization) {\n var txt = void 0;\n if (this.parent.selectedItems.length === 1) {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Item-Selection');\n }\n else {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Items-Selection');\n }\n select('.e-tbar-btn-text', ele).textContent = txt;\n this.toolbarObj.hideItem(ele.parentElement, false);\n }\n };\n Toolbar.prototype.hideItems = function (tools, toHide) {\n for (var i = 0; i < tools.length; i++) {\n var ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n };\n Toolbar.prototype.hideStatus = function () {\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n };\n Toolbar.prototype.showPaste = function () {\n this.hideItems(['Paste'], false);\n };\n Toolbar.prototype.hidePaste = function () {\n this.hideItems(['Paste'], true);\n };\n Toolbar.prototype.onLayoutChange = function () {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE;\n var items = this.layoutBtnObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('large')) {\n items[itemCount].iconCss = this.parent.view === 'LargeIcons' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('details')) {\n items[itemCount].iconCss = this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.showPaste, this.showPaste);\n this.parent.off(events.hidePaste, this.hidePaste);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.sortByChange, this.updateSortByButton);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.reRenderToolbar(e);\n break;\n }\n }\n };\n Toolbar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.destroy();\n }\n this.toolbarObj.destroy();\n this.parent.refreshLayout();\n };\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n var ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { EventHandler, isNullOrUndefined, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, selectAll } from '@syncfusion/ej2-base';\nimport * as CLS from '../base/classes';\nvar Virtualization = /** @class */ (function () {\n function Virtualization(instance) {\n this.filemanagerInstance = instance;\n this.largeIconInstance = instance.largeiconsviewModule;\n }\n /**\n * Sets up UI virtualization for the large icon view.\n *\n * @returns {void}\n */\n Virtualization.prototype.setUIVirtualization = function () {\n // Get the current view data source\n var currentViewItems = this.largeIconInstance.items;\n // Get the first item in the data source\n var firstItem = currentViewItems.slice(0, 1);\n // Create a list element from the first item in the data source\n var listElements = ListBase.createListFromJson(createElement, firstItem, this.largeIconInstance.listObj);\n // Get the list items from the list element\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Append the list element to the large icon element\n this.largeIconInstance.element.appendChild(listElements);\n 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 Virtualization.prototype.setUlElementHeight = function () {\n // Calculate the number of items in the last row\n this.lastRowCount = (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount ?\n (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount : this.rowItemCount;\n // Create top and bottom elements\n this.topElement = this.filemanagerInstance.createElement('div');\n this.topElement.classList.add('e-virtual-top');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.topElement, this.largeIconInstance.element.firstElementChild.firstChild);\n this.bottomElement = this.filemanagerInstance.createElement('div');\n this.bottomElement.classList.add('e-virtual-bottom');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.bottomElement, null);\n // Get the margin value for list items\n var marginValue = parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-bottom'), 10);\n // Calculate the height of a single list item\n this.listItemHeight = this.largeIconInstance.itemList[0].getBoundingClientRect().height + marginValue;\n // Calculate the total height of the list\n this.totalHeight = (Object.keys(this.largeIconInstance.allItems).length / this.rowItemCount) * this.listItemHeight;\n // Set the initial height of the top and bottom elements\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n // Initialize the top and bottom element heights\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n // Initialize the list difference variable\n this.listDiff = 0;\n // Set the initial rendered count\n this.renderedCount = this.itemCount;\n };\n /**\n * Calculates the number of items to display in the list based on the available width and height.\n *\n * @param {number} dataSourceLength The length of the data source.\n * @returns {number} The number of items to display.\n */\n Virtualization.prototype.getItemCount = function (dataSourceLength) {\n // Get the margin values for list items\n var widthMargin = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-right'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-left'), 10);\n // Calculate the number of items that can fit in a single row\n this.rowItemCount =\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 var 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 Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n // Wire the scroll event\n EventHandler.add(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll, this);\n }\n else {\n // Unwire the scroll event\n EventHandler.remove(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll);\n }\n };\n /**\n * Handles the scroll event for the list element.\n * This method updates the top and bottom elements and the displayed items based on the scroll position.\n *\n * @returns {void}\n * @private\n */\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n // Set the starting height to 0\n var startingHeight = 0;\n // Get the current scroll position\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n // Calculate the height of the top element\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n // Calculate the height of the bottom element\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n // If the scroll position is less than or equal to the total height, set the top and bottom element heights.\n // Otherwise, set the top element height to the total height and the bottom element height to 0.\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n // If the top element height has changed, update the top and bottom element heights and re-render the items.\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n // Check whether the scroll direction is upward or downward\n if (scroll > this.scrollPosition) {\n // Scrolling is upward\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n this.onNormalScroll(listDiff, true);\n }\n else {\n // Scrolling is downward\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n this.onNormalScroll(listDiff, false);\n }\n }\n // Update the list difference and scroll position variables\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n this.scrollPosition = scroll;\n // Update the list of items and the items property of the largeIconInstance\n this.largeIconInstance.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.largeIconInstance.element));\n this.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 Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n // If the scroll position is less than or equal to the starting height, return 0.\n // Otherwise, return the scroll position minus the starting height.\n return ((this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight) <= 0) ? 0 :\n (this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight);\n };\n /**\n * This method updates the displayed items and the selection based on the scroll direction.\n *\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 Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n // Update the displayed items\n for (var i = 0; i < listDiff; i++) {\n this.updateUI(isScrollingDown);\n }\n };\n /**\n * Updates the items in the large icons view.\n *\n * @param {boolean} isScrollingDown - If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\n */\n Virtualization.prototype.updateUI = function (isScrollingDown) {\n var _this = this;\n if (isScrollingDown) {\n // Get the next batch of items to be displayed\n this.items = this.largeIconInstance.allItems.slice(this.renderedCount, this.renderedCount + this.rowItemCount);\n // If there are items to be displayed, create list elements for them and append them to the list\n if (this.items.length > 0) {\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n this.itemList.forEach(function (liEle) {\n _this.largeIconInstance.element.firstElementChild.insertBefore(liEle, _this.bottomElement);\n });\n // Update the rendered count variable\n this.renderedCount = (this.largeIconInstance.allItems.length >= this.renderedCount + this.rowItemCount) ?\n this.renderedCount + this.rowItemCount : this.renderedCount + this.lastRowCount;\n // Remove the first batch of items from the list\n for (var i = 0; i < this.rowItemCount; i++) {\n detach(this.topElement.nextElementSibling);\n }\n }\n }\n else {\n // Scrolling up\n var lastItemIndex = void 0;\n var isAllRendered = void 0;\n if (this.renderedCount === this.largeIconInstance.allItems.length) {\n // Set lastItemIndex to the last item in the last row\n lastItemIndex = this.renderedCount - (this.itemCount - this.rowItemCount + this.lastRowCount);\n // Set renderedCount to the total number of items that have been rendered, except for the items in the last row\n this.renderedCount = ((this.renderedCount - this.lastRowCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.lastRowCount);\n // Set isAllRendered to true to indicate that all items have been rendered\n isAllRendered = true;\n }\n else {\n // Set lastItemIndex to the last item in the current row\n lastItemIndex = this.renderedCount - this.itemCount;\n // Set renderedCount to the total number of items that have been rendered, except for the items in the current row\n this.renderedCount = ((this.renderedCount - this.rowItemCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.rowItemCount);\n }\n // Set startItemIndex to the first item in the current or previous row\n var startItemIndex = (lastItemIndex - this.rowItemCount > 0) ? lastItemIndex - this.rowItemCount : 0;\n // Set the items array to the items in the current or previous row\n this.items = this.largeIconInstance.allItems.slice(startItemIndex, lastItemIndex);\n if (this.items.length > 0) {\n // Create a list of elements from the items array\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n // Set the itemList array to the list items in the list elements\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Add the items to the beginning of the list\n for (var len = this.itemList.length; len > 0; len--) {\n this.largeIconInstance.element.firstElementChild.insertBefore(this.itemList[len - 1], this.topElement.nextElementSibling);\n }\n // Remove the last row of items from the list\n for (var i = 0; i < ((isAllRendered) ? this.lastRowCount : this.rowItemCount); i++) {\n detach(this.bottomElement.previousElementSibling);\n }\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n /**\n * Destroys the component.\n *\n * @returns {void}\n */\n Virtualization.prototype.destroy = function () {\n // If the file manager has already been destroyed, return immediately\n if (this.filemanagerInstance.isDestroyed) {\n return;\n }\n // If the large icon element has a child element, unwire the scroll event\n if (!isNullOrUndefined(this.largeIconInstance.element.firstElementChild)) {\n this.wireScrollEvent(true);\n }\n };\n return Virtualization;\n}());\nexport { Virtualization };\n","import { TreeView as BaseTreeView } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, select, setValue, getValue, Draggable } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, closest } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { read, Download, GetDetails, Delete, 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 */\nvar NavigationPane = /** @class */ (function () {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n /* istanbul ignore next */\n function NavigationPane(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n this.expandTree = false;\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.isSameNodeClicked = false;\n this.isNodeExpandCalled = false;\n this.renameParent = null;\n // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = null;\n // Specifies whether the nodeClicked event of the treeview control is triggered or not.\n this.isNodeClickCalled = false;\n // Specifies whether to restrict node selection in the treeview control.\n this.restrictSelecting = false;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n NavigationPane.prototype.onInit = function () {\n if (!isNOU(this.treeObj)) {\n return;\n }\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n var attr = {};\n var id = getValue('id', rootData);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new BaseTreeView({\n fields: {\n dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name',\n hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'\n },\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n sortOrder: this.parent.navigationPaneSettings.sortOrder,\n nodeSelecting: this.onNodeSelecting.bind(this),\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + CLS.TREE_ID);\n this.wireEvents();\n };\n NavigationPane.prototype.addDragDrop = function () {\n var _this = this;\n if (!this.parent.isMobile && this.treeObj) {\n if (this.parent.allowDragAndDrop && isNOU(this.dragObj)) {\n this.dragObj = new Draggable(this.treeObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n dragTarget: '.' + CLS.FULLROW,\n distance: 5,\n dragArea: this.parent.element,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n this.dragObj = null;\n }\n }\n };\n NavigationPane.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(CLS.FULLROW)) {\n return null;\n }\n var dragLi = closest(dragTarget, 'li');\n this.parent.dragPath = '';\n this.parent.dragData = [];\n this.parent.activeElements = [];\n this.parent.activeElements = [dragLi];\n this.parent.dragNodes = [];\n getModule(this.parent, dragLi);\n this.parent.dragData = this.getTreeData(dragLi);\n this.parent.dragPath = this.getDragPath(dragLi, this.parent.dragData[0].name);\n this.parent.dragNodes.push(this.parent.dragData[0].name);\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n NavigationPane.prototype.getDragPath = function (dragLi, text) {\n var path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n };\n NavigationPane.prototype.getDropPath = function (node, text) {\n var id = node.getAttribute('data-id');\n var newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId);\n };\n NavigationPane.prototype.onDrowNode = function (args) {\n var eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n var directories = getDirectories(files);\n var 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 var length_1 = 0;\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line camelcase\n folders[parseInt(length_1.toString(), 10)]._fm_icon = 'e-fe-folder';\n var attr = {};\n var id = getValue('id', folders[length_1]);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length_1])) {\n setValue('class', getAccessClass(folders[length_1]), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length_1]);\n }\n length_1++;\n }\n var element = select('[data-uid=\"' + target + '\"]', this.treeObj.element);\n var childElements = select('ul', element);\n if (isNOU(childElements)) {\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n }\n };\n // Node Selecting event handler\n NavigationPane.prototype.onNodeSelecting = function (args) {\n if (!args.isInteracted && !this.isRightClick &&\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 var nodeData = this.getTreeData(getValue('id', args.nodeData));\n if (args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1] && !this.isRightClick && !this.isNodeClickCalled || this.isSameNodeClicked) {\n this.isNodeClickCalled = false;\n if (!this.isSameNodeClicked) {\n this.isSameNodeClicked = true;\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n if (!this.isRightClick) {\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n }\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.isNodeClickCalled = true;\n this.isSameNodeClicked = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n }\n else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: this.isNodeClickCalled };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n }\n };\n // Opens the folder while clicking open context menu item in the treeview.\n NavigationPane.prototype.openFileOnContextMenuClick = function (node) {\n var data = this.treeObj.getTreeData(node);\n this.parent.selectedItems = [];\n this.parent.itemData = data;\n this.activeNode = node;\n this.parent.activeModule = 'navigationpane';\n var eventArgs = { cancel: false, fileDetails: data[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n this.isNodeClickCalled = true;\n if (!eventArgs.cancel) {\n updatePath(node, this.parent.itemData[0], this.parent);\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n this.treeObj.selectedNodes = [node.getAttribute('data-uid')];\n }\n };\n NavigationPane.prototype.onNodeSelected = function (args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n this.isNodeClickCalled = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent) {\n this.parent.pathId = getPathId(args.node);\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n var 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 NavigationPane.prototype.onPathDrag = function (args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpand = function (args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.isNodeExpandCalled = true;\n var text = getValue('text', args.nodeData);\n var id = args.node.getAttribute('data-id');\n var isId = isNOU(id) ? false : true;\n var newText = isNOU(id) ? text : id;\n var path = getPath(args.node, newText, isId);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.pathId.push(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpanded = function (args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n this.isNodeExpandCalled = false;\n };\n NavigationPane.prototype.onNodeClicked = function (args) {\n this.parent.activeModule = 'navigationpane';\n this.previousSelected = this.treeObj.selectedNodes;\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n var layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(events.modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && !this.isNodeClickCalled && !this.isNodeExpandCalled) {\n if (args.event.which === 3) {\n this.isRightClick = true;\n }\n this.isSameNodeClicked = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeEditing = function (args) {\n if (!isNOU(args.innerHtml)) {\n args.cancel = true;\n }\n };\n NavigationPane.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n var currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n var ul = (!isNOU(sNode)) ? select('.' + CLS.LIST_PARENT, sNode) : null;\n if (isNOU(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], !this.expandTree);\n }\n this.expandNodeTarget = '';\n }\n this.expandTree = false;\n if (isNOU(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n if (this.parent.uploadObj.directoryUpload && !(this.parent.hasId)) {\n this.updateTree(args);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + CLS.LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.selectedNodes = [sleId];\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + CLS.ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.addChild(args.files, id, false);\n this.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n };\n NavigationPane.prototype.onCreateEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n };\n NavigationPane.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n var name_1 = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name_1], this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDeleteEnd = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n var selectedNode = this.treeObj.selectedNodes[0];\n var selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n var selectedNodeEle = closest(selcetedEle, '.' + CLS.LIST_PARENT).parentElement;\n this.treeObj.selectedNodes = [selectedNodeEle.getAttribute('data-uid')];\n this.treeObj.dataBind();\n }\n this.updateTree(args);\n };\n NavigationPane.prototype.onRefreshEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEndParent = function (args) {\n var id = this.renameParent ? this.renameParent : this.parent.pathId[this.parent.pathId.length - 1];\n this.expandTree = this.treeObj.expandedNodes.indexOf(this.treeObj.selectedNodes[0]) !== -1;\n this.updateTreeNode(args, id);\n this.parent.expandedId = null;\n if (this.renameParent) {\n this.renameParent = null;\n }\n else {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.renameText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('_fm_pId', 'equal', id, false));\n }\n }\n if (resultData.length > 0) {\n var id_1 = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEnd = function (args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n var data = this.treeObj.getTreeData();\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(data).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(data).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.currentItemText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n this.renameParent = getValue(this.treeObj.fields.parentID, resultData[0]);\n this.parent.expandedId = this.renameParent;\n this.parent.itemData = this.getTreeData(this.renameParent);\n read(this.parent, events.renameEndParent, this.parent.filterPath.replace(/\\\\/g, '/'));\n }\n }\n };\n NavigationPane.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, events.finalizeEnd, '/');\n if (e.oldProp.navigationPaneSettings.sortOrder !== e.newProp.navigationPaneSettings.sortOrder) {\n this.treeObj.sortOrder = e.newProp.navigationPaneSettings.sortOrder;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDownLoadInit = function () {\n this.doDownload();\n };\n NavigationPane.prototype.onSelectionChanged = function (e) {\n this.treeObj.selectedNodes = [e.selectedNode];\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchDrag) {\n moveNames = this.getMoveNames(args.files, this.parent.isSearchDrag, this.parent.dragPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n NavigationPane.prototype.getMoveNames = function (files, flag, path) {\n var moveNames = [];\n for (var i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n var name_2 = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n var index = path.lastIndexOf('/');\n name_2 = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n var resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name_2, false));\n for (var j = 0; j < resultData.length; j++) {\n var fPath = getValue('filterPath', resultData[j]);\n fPath = fPath.replace(/\\\\/g, '/');\n if (fPath === path) {\n moveNames.push(getValue(this.treeObj.fields.id, resultData[j]));\n break;\n }\n }\n }\n }\n }\n return moveNames;\n };\n NavigationPane.prototype.onCutEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchCut) {\n this.moveNames = this.getMoveNames(args.files, this.parent.isSearchCut, this.parent.targetPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n var data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n var resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n var selectedNode = this.treeObj.getTreeData().filter(function (obj) { return obj.name === resultObj.name; })[0];\n this.treeObj.selectedNodes = [getValue('_fm_id', selectedNode)];\n this.treeObj.dataBind();\n }\n };\n NavigationPane.prototype.onDropPath = function (args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n };\n NavigationPane.prototype.onpasteEnd = function (args) {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', getValue('id', args.cwd), false));\n }\n else {\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', getValue('name', args.cwd), false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', getValue('filterPath', args.cwd), false));\n }\n }\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1;\n this.removeChildNodes(id);\n this.addChild(args.files, id, toExpand);\n }\n this.parent.expandedId = null;\n this.onPathChanged(args);\n if (this.parent.isDragDrop) {\n this.checkDropPath(args);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.checkDropPath = function (args) {\n if (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 NavigationPane.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n var obj = this.parent.isDragDrop || isFileSystemData(this.parent) ? this.parent.dragData : this.parent.actionRecords;\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n };\n NavigationPane.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.activeElements = [this.activeNode];\n }\n };\n NavigationPane.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.downloadInit, this.onDownLoadInit, this);\n this.parent.on(events.initialEnd, this.onInitialEnd, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutEnd, this.onCutEnd, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.nodeExpand, this.onNodeExpanded, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.updateTreeSelection, this.onSelectionChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.openEnd, this.onOpenEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.renameEndParent, this.onRenameEndParent, this);\n this.parent.on(events.clearPathInit, this.onClearPathInit, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.dragEnd, this.onDragEnd, this);\n this.parent.on(events.dragging, this.onDragging, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.pathDrag, this.onPathDrag, this);\n };\n NavigationPane.prototype.removeEventListener = function () {\n this.parent.off(events.initialEnd, this.onInitialEnd);\n this.parent.off(events.downloadInit, this.onDownLoadInit);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutEnd, this.onCutEnd);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.updateTreeSelection, this.onSelectionChanged);\n this.parent.off(events.nodeExpand, this.onNodeExpanded);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onOpenEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.renameEndParent, this.onRenameEndParent);\n this.parent.off(events.clearPathInit, this.onClearPathInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.dragEnd, this.onDragEnd);\n this.parent.off(events.dragging, this.onDragging);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.pathDrag, this.onPathDrag);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n NavigationPane.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDragging = function (args) {\n var ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n var level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n };\n NavigationPane.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, 'li');\n this.parent.dropData = this.getTreeData(dropLi)[0];\n this.parent.dropPath = this.getDropPath(dropLi, getValue('name', this.parent.dropData));\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'navigationpane';\n };\n NavigationPane.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.treeObj) {\n this.unWireEvents();\n this.treeObj.destroy();\n }\n };\n NavigationPane.prototype.wireEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n NavigationPane.prototype.unWireEvents = function () {\n this.keyboardModule.destroy();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.keyDown = function (e) {\n var action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n if (this.parent.pathId[0] !== this.activeNode.getAttribute('data-uid')) {\n this.updateItemData();\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n this.removeNodes = [];\n createDialog(this.parent, 'Delete');\n }\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n if (!hasEditAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionEdit);\n }\n else {\n this.updateRenameData();\n createDialog(this.parent, 'Rename');\n }\n }\n break;\n }\n };\n NavigationPane.prototype.getTreeData = function (args) {\n var data = this.treeObj.getTreeData(args);\n for (var i = 0; i < data.length; i++) {\n if (isNOU(getValue('hasChild', data[i]))) {\n setValue('hasChild', false, data[i]);\n }\n }\n return data;\n };\n NavigationPane.prototype.updateRenameData = function () {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n };\n NavigationPane.prototype.updateItemData = function () {\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n };\n NavigationPane.prototype.updateActionData = function () {\n this.updateItemData();\n var newPath = getParentPath(this.parent.path);\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathId.pop();\n this.parent.pathNames.pop();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.doDownload = function () {\n var newPath = getParentPath(this.parent.path);\n var itemId = this.treeObj.selectedNodes[0];\n var name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n };\n return NavigationPane;\n}());\nexport { NavigationPane };\n","import { Grid, Resize, ContextMenu, Sort, VirtualScroll } from '@syncfusion/ej2-grids';\nimport { select, KeyboardEvents, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, Touch, setValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Internationalization, closest, Draggable, initializeCSPTemplate, extend, 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 */\nvar DetailsView = /** @class */ (function () {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n function DetailsView(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.isMultiSelect = 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 back: 'backspace'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n if (this.parent.isMobile) {\n sortSettings = [];\n }\n else {\n if (this.parent.sortOrder !== 'None') {\n sortSettings = [{ direction: this.parent.sortOrder, field: this.parent.sortBy }];\n }\n }\n this.gridObj = new Grid({\n dataSource: items,\n allowSorting: true,\n rowSelecting: this.onSelection.bind(this, 'select'),\n rowDeselecting: this.onSelection.bind(this, 'unselect'),\n rowSelected: this.onSelected.bind(this),\n rowDeselected: this.onDeSelection.bind(this),\n allowResizing: this.parent.detailsViewSettings.columnResizing,\n selectionSettings: {\n type: this.parent.allowMultiSelection ? 'Multiple' : 'Single',\n checkboxMode: 'ResetOnRowClick'\n },\n enableRtl: this.parent.enableRtl,\n pageSettings: { pageSize: 20 },\n enableVirtualization: this.parent.enableVirtualization,\n enablePersistence: this.parent.enablePersistence,\n enableVirtualMaskRow: true,\n sortSettings: { allowUnsort: false, columns: sortSettings },\n columns: columns,\n recordDoubleClick: this.DblClickEvents.bind(this),\n beforeDataBound: this.onBeforeDataBound.bind(this),\n dataBound: this.onDataBound.bind(this),\n rowDataBound: this.onRowDataBound.bind(this),\n actionBegin: this.onActionBegin.bind(this),\n headerCellInfo: this.onHeaderCellInfo.bind(this),\n width: '100%',\n height: (this.parent.enableVirtualization) ? this.getGridHeight() : 'auto',\n beforeCopy: function (args) { args.cancel = true; },\n 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 DetailsView.prototype.reactTemplateRender = function (args) {\n this.parent['portals'] = args;\n if (this.parent.portals && this.parent.toolbarModule && this.parent.toolbarModule.toolbarObj &&\n this.parent.toolbarModule.toolbarObj.portals) {\n this.parent['portals'] = this.parent['portals'].concat(this.parent.toolbarModule.toolbarObj.portals);\n }\n this.parent.notify('renderReactTemplate', this.parent['portals']);\n this.parent['renderReactTemplates']();\n };\n /**\n * Gets the grid height.\n *\n * @returns {number} - The grid height.\n * @private\n */\n DetailsView.prototype.getGridHeight = function () {\n // Get the content pane and breadcrumb bar elements\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n // The maximum height of the header is 36\n var headerMaxHeight = 36;\n // Calculate and return the grid height\n return (pane.offsetHeight - bar.offsetHeight - headerMaxHeight);\n };\n DetailsView.prototype.checkNameWidth = function () {\n var initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (var i = 0; i < initialColumn.length; i++) {\n if (initialColumn[i].field === 'name') {\n this.isNameWidth = !isNOU(initialColumn[i].width);\n return;\n }\n }\n };\n DetailsView.prototype.adjustWidth = function (columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n var nameWidth = void 0;\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n nameWidth = (this.element.clientWidth <= 500) ? '120px' : 'auto';\n }\n else {\n nameWidth = (this.element.clientWidth <= 680) ? ((fieldName === 'name') ? '120px' : '180px') : 'auto';\n }\n columns[i].width = nameWidth;\n }\n }\n };\n DetailsView.prototype.getColumns = function () {\n var columns;\n var 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 var 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 var _loop_1 = function (i, len) {\n columns[i].headerText = getLocaleText(this_1.parent, columns[i].headerText);\n if (columns[i].field === 'name' && !isNOU(columns[i].template) && !(typeof columns[i].template === 'function')) {\n var template_1 = columns[i].template;\n columns[i].template = initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return template_1.replace(/\\${name}/g, name);\n });\n }\n };\n var this_1 = this;\n for (var i = 0, len = columns.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth,\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-icon \" + data._fm_iconClass + \"\\\"></span>\";\n }), allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: initializeCSPTemplate(function () {\n return '<span class=\\'e-fe-icon e-fe-folder\\'></span>';\n })\n };\n columns.unshift(icon);\n if (this.parent.showItemCheckBoxes) {\n var cWidth = (this.parent.isBigger ? '36' : '26');\n var cBox = {\n type: 'checkbox', width: cWidth, minWidth: cWidth, customAttributes: { class: 'e-fe-checkbox' },\n allowResizing: false, allowSorting: false\n };\n if (this.parent.isMobile) {\n columns.push(cBox);\n }\n else {\n columns.unshift(cBox);\n }\n }\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n if (this.parent.enableRangeSelection) {\n var HiddenName = { field: 'name', visible: false, customAttributes: { class: 'e-drag-text' } };\n columns.push(HiddenName);\n }\n return columns;\n };\n DetailsView.prototype.adjustHeight = function () {\n if (!this.gridObj) {\n return;\n }\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n var gridHeader = select('.' + CLS.GRID_HEADER, this.parent.element);\n var height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n };\n DetailsView.prototype.renderCheckBox = function () {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n };\n DetailsView.prototype.onRowDataBound = function (args) {\n var td = select('.e-fe-grid-name', args.row);\n if (!td) {\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'name') {\n td = args.row.children[this.parent.allowMultiSelection ? (i + 2) : (i + 1)];\n break;\n }\n }\n }\n if (td) {\n td.setAttribute('title', getValue('name', args.data));\n }\n if (this.parent.isLayoutChange && this.parent.isCut && this.parent.fileAction === 'move' &&\n this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n if (this.parent.selectedNodes.indexOf(getValue('name', args.data)) !== -1) {\n addBlur(args.row);\n }\n }\n if (!this.parent.showFileExtension && getValue('isFile', args.data)) {\n var text = getValue('name', args.data);\n var textEle = args.row.querySelector('[title= \"' + text + '\"]');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n var sizeEle = args.row.querySelector('.e-fe-size');\n var modifiedSize = void 0;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n var sizeValue = getValue('size', args.data);\n var intl = new Internationalization(this.parent.locale);\n var sizeFormat = void 0;\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'size') {\n sizeFormat = !isNullOrUndefined(columns[i].format) ? columns[i].format.toString() : 'n';\n break;\n }\n }\n var value = intl.formatNumber((sizeValue / 1024), { format: sizeFormat });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n var dateEle = args.row.querySelector('.e-fe-date');\n var intl = new Internationalization(this.parent.locale);\n var columns = this.parent.detailsViewSettings.columns;\n var format = void 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n var formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n var checkWrap = args.row.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n if (!hasEditAccess(args.data)) {\n args.row.className += ' ' + getAccessClass(args.data);\n }\n var eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n DetailsView.prototype.onActionBegin = function (args) {\n if (args.requestType === 'sorting') {\n this.parent.setProperties({ sortOrder: args.direction }, true);\n this.parent.setProperties({ sortBy: args.columnName }, true);\n if (this.parent.selectedItems.length !== 0) {\n this.sortItem = true;\n var rows = this.gridObj.getSelectedRowIndexes();\n var len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.sortSelectedNodes.push(getValue(this.parent.hasId ? 'id' : 'name', data));\n len--;\n }\n }\n this.parent.notify(events.sortByChange, {});\n }\n };\n DetailsView.prototype.onHeaderCellInfo = function (args) {\n var checkWrap = args.node.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n };\n DetailsView.prototype.onBeforeDataBound = function (args) {\n var _this = this;\n showSpinner(this.parent.element);\n var nameColumn = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === _this.parent.sortBy; });\n if (nameColumn && !('sortComparer' in nameColumn)) {\n var 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 DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if ((this.parent.selectedItems.length !== 0 && !this.parent.enableVirtualization) ||\n ((this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization &&\n this.element.querySelector('.e-content').scrollTop === 0))) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem) {\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n var hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n var hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n var hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.classList.remove('e-scrollShow');\n }\n this.isRendered = true;\n this.parent.isLayoutChange = false;\n hideSpinner(this.parent.element);\n this.checkEmptyDiv(this.emptyArgs);\n this.isInteracted = this.isLoaded ? true : this.isInteracted;\n this.isLoaded = false;\n };\n DetailsView.prototype.selectRecords = function (nodes) {\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var sRecords = [];\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n else if (!this.parent.showFileExtension && !this.parent.hasId && node.includes('.')) {\n var Str2 = node.split('.').slice(0, -1).join('.');\n if (nodes.indexOf(Str2) !== -1) {\n sRecords.push(i);\n }\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n DetailsView.prototype.addSelection = function (data) {\n var items = this.gridObj.getCurrentViewRecords();\n var rData = [];\n if (this.parent.hasId) {\n rData = new DataManager(items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (nData.length > 0) {\n rData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (rData.length > 0) {\n var index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n };\n DetailsView.prototype.onSortColumn = function () {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n if (this.element.querySelector('.e-content').scrollTop !== 0) {\n this.gridObj.freezeRefresh();\n }\n };\n DetailsView.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'detailsViewSettings':\n if (!isNullOrUndefined(this.gridObj)) {\n this.checkNameWidth();\n var columns = this.getColumns();\n this.gridObj.columns = columns;\n this.gridObj.allowResizing = this.parent.detailsViewSettings.columnResizing;\n this.gridObj.dataBind();\n this.gridObj.refreshColumns();\n }\n break;\n case 'selectedItems':\n this.interaction = false;\n if (this.parent.selectedItems.length !== 0) {\n if (!this.parent.allowMultiSelection) {\n var slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNOU(this.gridObj)) {\n this.gridObj.clearSelection();\n this.interaction = true;\n }\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n };\n DetailsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n var pathField = this.parent.detailsViewSettings.columns.find(function (column) { return 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 DetailsView.prototype.updatePathColumn = function () {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n var pathColumn = {\n field: 'filterPath', headerText: getLocaleText(this.parent, 'Path'), minWidth: 180, width: 'auto'\n };\n this.gridObj.columns.push(pathColumn);\n this.adjustWidth(this.gridObj.columns, 'filterPath');\n this.adjustWidth(this.gridObj.columns, 'name');\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n };\n DetailsView.prototype.checkEmptyDiv = function (args) {\n var items = getSortedData(this.parent, args.files);\n if (items.length === 0 && !isNOU(this.element.querySelector('.' + CLS.GRID_VIEW))) {\n createEmptyElement(this.parent, this.element, args);\n }\n else if (items.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n if (this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY)) {\n var emptyDiv = this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY);\n this.element.querySelector('.' + CLS.GRID_VIEW).removeChild(emptyDiv);\n }\n else {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n }\n };\n DetailsView.prototype.onOpenInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n var data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n };\n DetailsView.prototype.DblClickEvents = function (args) {\n this.gridObj.selectRows([args.rowIndex]);\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n DetailsView.prototype.openContent = function (data) {\n var _this = this;\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var name_2 = getValue('name', data);\n if (getValue('isFile', data)) {\n var icon = fileType(data);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, data);\n createImageDialog(_this.parent, name_2, imgUrl);\n }\n }\n else {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', data);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNOU(id) ? name_2 : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(name_2);\n _this.parent.pathId.push(getValue('_fm_id', data));\n _this.parent.itemData = [data];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, data);\n }\n _this.parent.isFiltered = false;\n }\n _this.element.focus();\n if (_this.parent.enableVirtualization) {\n _this.parent.element.querySelector('#' + _this.parent.element.id + CLS.IMG_DIALOG_ID).focus();\n }\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(events.hideLayout, {});\n this.gridObj.element.classList.remove(CLS.DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSearchFiles = function (args) {\n if (this.parent.view === 'Details') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (!this.parent.isLayoutChange) {\n this.parent.layoutSelectedItems = [];\n }\n this.updatePathColumn();\n this.parent.searchedItems = args.files;\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.removePathColumn = function (isRefresh) {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath')) {\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.gridObj.sortSettings.columns[0]) && this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n this.parent.notify(events.sortByChange, {});\n }\n this.gridObj.columns.pop();\n if (!isRefresh) {\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n }\n };\n DetailsView.prototype.onFinalizeEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n };\n DetailsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n DetailsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n };\n DetailsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n };\n DetailsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.isInteracted = false;\n this.removePathColumn(false);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.emptyArgs = args;\n };\n DetailsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n DetailsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'Details') {\n this.isInteracted = false;\n if (this.parent.allowMultiSelection) {\n this.gridObj.selectionModule.selectRowsByRange(0, this.gridObj.getRows().length);\n }\n else {\n this.gridObj.selectRow(this.gridObj.getRows().length - 1);\n }\n this.isInteracted = true;\n this.interaction = true;\n }\n };\n DetailsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelectionChanged = function () {\n removeClass([this.element], CLS.HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], CLS.HEADER_CHECK);\n }\n };\n DetailsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n };\n DetailsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n DetailsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n DetailsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.addEventListener = function () {\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.search, this.onSearchFiles, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.sortColumn, this.onSortColumn, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n this.parent.on(events.pasteInit, this.onPasteInit, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.resizeEnd, this.onDetailsResizeHandler, this);\n this.parent.on(events.splitterResize, this.onDetailsResize, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n };\n DetailsView.prototype.removeEventListener = function () {\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteInit, this.onPasteInit);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.search, this.onSearchFiles);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.filterEnd, this.onPathChanged);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.sortColumn, this.onSortColumn);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.resizeEnd, this.onDetailsResizeHandler);\n this.parent.off(events.splitterResize, this.onDetailsResize);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n };\n DetailsView.prototype.onActionFailure = function () { this.interaction = true; };\n DetailsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n };\n DetailsView.prototype.onPasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n };\n DetailsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n DetailsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n var name;\n if (dragLi.getElementsByClassName('e-fe-text')[0]) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling.innerText;\n }\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n this.parent.dragData = this.gridObj.getSelectedRecords();\n var dragRow;\n if (this.parent.dragData.length === 0 && dragLi) {\n dragRow = this.gridObj.getRowInfo(dragLi);\n }\n if (dragRow) {\n this.parent.dragData.push(dragRow.rowData);\n }\n this.parent.dragPath = this.parent.path;\n this.parent.activeElements = this.gridObj.getSelectedRows();\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDetailsResize = function () {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n var gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n var gridHeaderColGroup = gridHeader.firstChild.childNodes[0];\n var gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n var gridHeaderColNames = this.gridObj.getColumns();\n for (var i = 0; i < gridHeaderColNames.length; i++) {\n if ((!this.isNameWidth && gridHeaderColNames[i].field === 'name') || gridHeaderColNames[i].field === 'filterPath') {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n if (this.element.clientWidth <= 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 180px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 180px');\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n }\n }\n }\n };\n DetailsView.prototype.onDetailsResizeHandler = function () {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n this.adjustHeight();\n }\n };\n DetailsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.gridObj) {\n if (this.parent.allowDragAndDrop && isNullOrUndefined(this.dragObj)) {\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + CLS.ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n this.dragObj = null;\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (!args.target.closest('tr')) {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n else {\n var 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 DetailsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n };\n DetailsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath ||\n this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {\n this.onPathChanged(args);\n }\n }\n };\n DetailsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns modules name.\n * @private\n */\n DetailsView.prototype.getModuleName = function () {\n return 'detailsview';\n };\n DetailsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n if (this.parent.isReact) {\n this.gridObj.off('reactTemplateRender', this.reactTemplateRender);\n }\n this.unWireEvents();\n this.gridObj.destroy();\n }\n };\n DetailsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelection = function (action, args) {\n var eventArgs = {\n action: action, fileDetails: args.data, isInteracted: this.interaction, cancel: false, target: args.target\n };\n this.parent.trigger('fileSelection', eventArgs);\n args.cancel = eventArgs.cancel;\n if (!this.isMultiSelect) {\n this.isMultiSelect = true;\n if ((args.isShiftPressed || args.isCtrlPressed) && !this.parent.allowMultiSelection && (args.target && args.target.parentElement && !args.target.parentElement.classList.contains('e-checkbox-wrapper'))) {\n args.cancel = true;\n var rowIndex = (args && args.rowIndexes)\n ? args.rowIndexes[args.rowIndexes.length - 1]\n : args.rowIndex;\n this.gridObj.selectRow(rowIndex);\n }\n this.isMultiSelect = false;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelected = function (args) {\n this.parent.activeModule = 'detailsview';\n if (!this.parent.isLayoutChange || this.parent.isFiltered) {\n this.selectedRecords();\n }\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.getSelectedRowIndexes().length === 1) {\n this.firstItemIndex = this.gridObj.selectedRowIndex;\n }\n this.gridObj.element.setAttribute('tabindex', '-1');\n this.triggerSelect('select', args);\n var item = this.gridObj.getRowByIndex(this.gridObj.selectedRowIndex);\n this.updateType(item);\n if (!isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n if (this.gridObj.getSelectedRowIndexes().length !== 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\n item.querySelector('.e-rowcell.e-fe-checkbox').removeAttribute('tabindex');\n }\n if (!isNOU(this.gridObj) && !isNOU(this.gridObj.element.querySelector('.e-checkselectall'))) {\n this.gridObj.element.querySelector('.e-checkselectall').setAttribute('tabindex', '-1');\n }\n var rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i] === this.gridObj.selectedRowIndex) {\n this.gridObj.getRowByIndex(rows[i]).setAttribute('tabindex', '0');\n }\n else {\n this.gridObj.getRowByIndex(rows[i]).removeAttribute('tabindex');\n }\n }\n }\n var len = rows.length;\n if (this.parent.enableVirtualization) {\n this.parent.currentItemText = getValue('name', args.data);\n }\n else if (len > 0) {\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n var indexes = getValue('rowIndexes', args);\n var multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNOU(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if ((!this.parent.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'Details' && !isNOU(this.gridObj)) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n }\n };\n DetailsView.prototype.selectedRecords = function () {\n this.parent.setProperties({ selectedItems: [] }, true);\n var selectedRecords = this.gridSelectNodes();\n var selectSize = 0;\n while (selectSize < selectedRecords.length) {\n var record = selectedRecords[selectSize];\n var name_3 = getItemName(this.parent, record);\n this.parent.selectedItems.push(name_3);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n };\n DetailsView.prototype.onDeSelection = function (args) {\n /* istanbul ignore next */\n if (!this.parent.allowMultiSelection && isNOU(args.data)) {\n this.gridObj.getRowByIndex(args.rowIndex).removeAttribute('tabindex');\n }\n else if (this.gridObj.getSelectedRowIndexes().length > 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n this.gridObj.getRowByIndex(lastItemIndex).querySelector('.e-checkselect').removeAttribute('tabindex');\n }\n if (this.gridObj.selectedRowIndex === -1) {\n this.gridObj.element.setAttribute('tabindex', '0');\n }\n if (!this.isInteracted) {\n this.isInteracted = true;\n return;\n }\n this.selectedRecords();\n if (this.parent.selectedItems.length === 0) {\n setValue('enableSelectMultiTouch', false, this.gridObj.selectionModule);\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('unselect', args);\n this.parent.visitedItem = null;\n };\n DetailsView.prototype.triggerSelect = function (action, args) {\n var eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n };\n DetailsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.gridObj.element, {\n keyAction: this.keyupHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.gridObj.element, 'blur', this.removeFocus, this);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n };\n DetailsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n var ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: function (eve) {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n _this.onClearAllInit();\n }\n },\n tapHold: function (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 var target = e.originalEvent.target;\n if (target) {\n var row = closest(target, '.' + CLS.ROW);\n var 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 DetailsView.prototype.removeSelection = function () {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n this.gridObj.clearSelection();\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.selectedRowIndex === -1) {\n this.startIndex = null;\n }\n this.isInteracted = true;\n };\n DetailsView.prototype.removeFocus = function () {\n this.addFocus(null);\n };\n DetailsView.prototype.onBlur = function (e) {\n if ((e.relatedTarget !== null && closest(e.relatedTarget, '.e-grid') !== e.relatedTarget)) {\n return;\n }\n if (!isNOU(this.gridObj.element)) {\n var thElements = this.gridObj.element.querySelectorAll('th');\n for (var i = 0; i < thElements.length; i++) {\n if (thElements[i].classList.contains('e-focus')) {\n this.addFocus(null);\n }\n }\n }\n };\n DetailsView.prototype.getFocusedItemIndex = function () {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('data-rowindex'), 10) : null;\n };\n /* istanbul ignore next */\n DetailsView.prototype.keydownHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1 && this.gridObj.allowSorting === true) {\n if (!e.target.classList.contains('e-fe-grid-icon')) {\n var direction = !e.target.getElementsByClassName('e-ascending').length ? 'Ascending' : 'Descending';\n var 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 var data = JSON.parse(JSON.stringify(rowData));\n this.openContent(data);\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlA':\n if (!isNOU(gridItems[0]) && this.parent.allowMultiSelection) {\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n var crtSrlPos = cnTable.scrollTop;\n var crtFocusIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n cnTable.scrollTop = crtSrlPos;\n if (crtFocusIndex !== -1) {\n this.addFocus(crtFocusIndex);\n }\n }\n break;\n case 'ctrlHome':\n case 'tab':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {\n this.gridObj.selectRow(0);\n }\n else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {\n return;\n }\n else {\n this.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 case 'back':\n this.parent.traverseBackward();\n break;\n }\n };\n DetailsView.prototype.gridSelectNodes = function () {\n return this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.doDownload = function () {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionDownload);\n return;\n }\n }\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n };\n DetailsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasEditAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n DetailsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n DetailsView.prototype.updateRenameData = function () {\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n DetailsView.prototype.shiftMoveMethod = function (gridItems, selIndex, focIndex, selRowIndeces, e) {\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n if (selIndex === -1 && (e.action === 'csUp' || e.action === 'csDown')) {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n else if (selIndex !== -1 && focIndex !== selIndex &&\n !((e.action === 'csUp' || e.action === 'csDown') && this.isSelected(selRowIndeces, focIndex))) {\n this.shiftSelectFocusItem(selIndex, focIndex, selRowIndeces, e);\n }\n else {\n this.shiftSelectedItem(selIndex, selRowIndeces, gridItems, e);\n }\n }\n };\n DetailsView.prototype.moveFunction = function (selectedItems, e, rowIndex) {\n if (!isNOU(this.getFocusedItem()) && this.parent.allowMultiSelection) {\n if (e.action === 'moveDown') {\n this.gridObj.selectRow(this.getFocusedItemIndex() + 1);\n }\n else {\n this.gridObj.selectRow(this.getFocusedItemIndex() - 1);\n }\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n if (e.action === 'moveDown' || e.action === 'ctrlDown' || e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectRow(rowIndex + ((rowIndex !== selectedItems.length - 1) ? 1 : 0));\n }\n else {\n this.gridObj.selectRow(rowIndex - ((rowIndex !== 0) ? 1 : 0));\n }\n }\n else {\n if (!isNOU(selectedItems[0])) {\n this.gridObj.selectRow(0);\n }\n }\n };\n DetailsView.prototype.spaceSelection = function (selRowIndeces, focIndex, selIndex, e) {\n if (!this.isSelected(selRowIndeces, focIndex) && selIndex !== -1 && (e.action === 'shiftSpace' || e.action === 'csSpace')) {\n if (focIndex < selIndex) {\n this.gridObj.selectionModule.selectRowsByRange(focIndex, selIndex);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(selIndex, focIndex);\n }\n }\n else if (!isNOU(this.getFocusedItem()) && focIndex !== selIndex) {\n selRowIndeces.push(this.getFocusedItemIndex());\n this.gridObj.selectRows(selRowIndeces);\n }\n else if (selIndex !== -1 && e.action === 'ctrlSpace' && this.parent.allowMultiSelection) {\n var lItem = selIndex;\n selRowIndeces.pop();\n this.gridObj.selectRows(selRowIndeces);\n this.addFocus(lItem);\n }\n else if (e.action === 'shiftSpace') {\n this.gridObj.selectRow(selIndex);\n }\n };\n DetailsView.prototype.ctrlMoveFunction = function (items, e, rowIndex) {\n var nextItem;\n if (!isNOU(this.getFocusedItem())) {\n var nextIndex = this.getFocusedItemIndex();\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n nextIndex + ((nextIndex < items.length - 1) ? 1 : 0) : nextIndex - ((nextIndex < 1) ? 0 : 1);\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n rowIndex + ((rowIndex < items.length) ? 1 : 0) : rowIndex - ((rowIndex < 1) ? 0 : 1);\n }\n else {\n if (!isNOU(items[0])) {\n nextItem = 0;\n }\n }\n this.addFocus(nextItem);\n };\n DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {\n if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {\n if (e.action !== 'csHome' && e.action !== 'csEnd') {\n if (isNOU(this.startIndex) && this.firstItemIndex !== indexValue) {\n this.firstItemIndex = indexValue;\n }\n if (e.action === 'shiftEnd') {\n this.gridObj.selectionModule.selectRowsByRange(this.firstItemIndex, items.length - 1);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, this.firstItemIndex);\n }\n this.startIndex = indexValue;\n }\n else {\n if (e.action === 'csEnd') {\n this.gridObj.\n selectRows(this.InnerItems(isNOU(indexValue) ? 0 : indexValue, isNOU(focIndex) ? items.length - 1 : focIndex, e));\n }\n else {\n if (isNOU(indexValue)) {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectRows(this.InnerItems(isNOU(focIndex) ? 0 : focIndex, indexValue, e));\n }\n }\n }\n }\n else {\n this.gridObj.selectionModule.selectRow(((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : items.length - 1));\n }\n };\n DetailsView.prototype.InnerItems = function (fItem, lItem, e) {\n var itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (var i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (var i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n };\n DetailsView.prototype.shiftSelectFocusItem = function (selIndex, fIndex, selRowIndexes, e) {\n var lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n var fItem = isNOU(this.startIndex) ? selIndex : selRowIndexes[0];\n if (fItem === lItem) {\n this.gridObj.selectRow(fItem);\n }\n else {\n if (fItem < lItem) {\n if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n }\n else if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n }\n this.startIndex = this.gridObj.selectedRowIndex;\n };\n DetailsView.prototype.addFocus = function (item) {\n var fItem = this.getFocusedItem();\n var itemElement = this.gridObj.getRowByIndex(item);\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS, CLS.FOCUSED]);\n }\n if (!isNOU(itemElement)) {\n this.gridObj.element.setAttribute('tabindex', '-1');\n itemElement.setAttribute('tabindex', '0');\n itemElement.focus();\n addClass([itemElement], [CLS.FOCUS, CLS.FOCUSED]);\n }\n };\n DetailsView.prototype.addHeaderFocus = function (e) {\n var treeFocus = select('.e-row', this.element);\n this.gridObj.element.setAttribute('tabindex', '-1');\n var 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 DetailsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.FOCUSED, this.element);\n };\n DetailsView.prototype.isSelected = function (selRowIndexes, focIndex) {\n var check = false;\n for (var i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n };\n DetailsView.prototype.shiftSelectedItem = function (selIndex, selRowIndexes, gridItems, e) {\n if (selIndex === -1) {\n this.gridObj.selectRow(0);\n }\n else {\n if (isNOU(this.startIndex) && e.shiftKey) {\n this.startIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectRows([selIndex, (e.action === 'shiftDown' || e.action === 'csDown') ?\n (selIndex + ((selIndex !== gridItems.length - 1) ? 1 : 0)) : (selIndex - ((selIndex !== 0) ? 1 : 0))]);\n }\n else {\n if (e.action === 'shiftDown' || e.action === 'shiftUp') {\n if (e.action === 'shiftDown' && selRowIndexes.indexOf(selIndex + 1) === -1) {\n if (selIndex !== gridItems.length - 1) {\n selRowIndexes.push(selIndex + 1);\n }\n }\n else if (e.action === 'shiftUp' && selRowIndexes.indexOf(selIndex - 1) === -1) {\n if (selIndex !== 0) {\n selRowIndexes.push(selIndex - 1);\n }\n }\n else {\n selRowIndexes.pop();\n }\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n if (e.action === 'csDown') {\n if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() + 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() + 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() + 1);\n }\n }\n else if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() - 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() - 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() - 1);\n }\n }\n }\n }\n };\n DetailsView.prototype.onMethodCall = function (e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n var action = getValue('action', e);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', e));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', e));\n break;\n case 'openFile':\n this.openFile(getValue('id', e));\n break;\n case 'createFolder':\n this.interaction = false;\n break;\n case 'renameFile':\n this.interaction = false;\n this.renameFile(getValue('id', e), getValue('newName', e));\n break;\n case 'selectAll':\n this.interaction = false;\n this.onSelectAllInit();\n break;\n case 'clearSelection':\n this.interaction = false;\n this.onClearAllInit();\n break;\n }\n };\n DetailsView.prototype.getRecords = function (nodes) {\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var records = [];\n var hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filter = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n if (nodes.indexOf(getValue(filter, gridRecords[i])) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n else {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var name_4 = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name_4) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n };\n DetailsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < records.length; i++) {\n data[i] = records[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < dRecords.length; i++) {\n data[i] = dRecords[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n var records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n };\n DetailsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n var records = this.getRecords([id]);\n if (records.length > 0) {\n updateRenamingData(this.parent, records[0]);\n if (!isNOU(name)) {\n if (hasEditAccess(this.parent.itemData[0])) {\n rename(this.parent, this.parent.path, name);\n }\n else {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n }\n else {\n doRename(this.parent);\n }\n }\n };\n return DetailsView;\n}());\nexport { DetailsView };\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","AjaxSettings","ChildProperty","Property","apply","defaultToolbarItems","ToolbarSettings","ToolbarItem","SearchSettings","columnArray","field","headerText","minWidth","template","customAttributes","class","type","format","width","initializeCSPTemplate","data","size","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","TOOLBAR_ID","LAYOUT_ID","NAVIGATION_ID","TREE_ID","GRID_ID","LARGEICON_ID","DIALOG_ID","IMG_DIALOG_ID","EXTN_DIALOG_ID","UPLOAD_DIALOG_ID","CONTEXT_MENU_ID","CONTENT_ID","BREADCRUMBBAR_ID","UPLOAD_ID","SEARCH_ID","ROOT","CONTROL","CHECK_SELECT","ROOT_POPUP","MOBILE","MOB_POPUP","MULTI_SELECT","FILTER","LAYOUT","NAVIGATION","LAYOUT_CONTENT","LARGE_ICONS","TB_ITEM","LIST_ITEM","LIST_TEXT","LIST_PARENT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","ACTIVE","HOVER","FOCUS","FOCUSED","CHECK","FRAME","CB_WRAP","ROW","EMPTY","EMPTY_CONTENT","EMPTY_INNER_CONTENT","CLONE","DROP_FOLDER","DROP_FILE","FOLDER","ICON_IMAGE","ICON_MUSIC","ICON_VIDEO","LARGE_ICON","LARGE_EMPTY_FOLDER","GRID_HEADER","TREE_VIEW","MENU_ITEM","MENU_ICON","SUBMENU_ICON","GRID_VIEW","GRID_CONTENT","ICON_VIEW","ICON_OPEN","ICON_UPLOAD","ICON_CUT","ICON_COPY","ICON_PASTE","ICON_DELETE","ICON_RENAME","ICON_NEWFOLDER","ICON_DETAILS","ICON_SHORTBY","ICON_REFRESH","ICON_SELECTALL","ICON_DOWNLOAD","ICON_GRID","ICON_LARGE","ICON_BREADCRUMB","ICON_CLEAR","ICONS","ERROR_CONTENT","BREADCRUMBS","RTL","DISPLAY_NONE","FULLROW","SPLIT_BAR","HEADER_CHECK","OVERLAY","VALUE","modelChanged","initialEnd","finalizeEnd","createEnd","filterEnd","pathDrag","deleteInit","deleteEnd","refreshEnd","resizeEnd","splitterResize","pathChanged","destroy","beforeRequest","skipUpload","afterRequest","layoutRefresh","actionFailure","search","openInit","openEnd","selectionChanged","selectAllInit","clearAllInit","clearPathInit","layoutChange","sortByChange","nodeExpand","detailsInit","menuItemData","renameInit","renameEndParent","renameEnd","showPaste","hidePaste","selectedData","cutCopyInit","pasteInit","pasteEnd","cutEnd","hideLayout","updateTreeSelection","sortColumn","pathColumn","searchTextChange","downloadInit","dropInit","dragEnd","dropPath","dragging","updateSelectionData","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","updatePath","node","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","getPathId","pathNames","getPathNames","element","matched","getParents","ids","push","names","isId","parentText","el","parentNode","matches","CLS.LIST_ITEM","select","CLS.LIST_TEXT","textContent","classList","contains","CLS.TREE_VIEW","generatePath","parent","newPath","parseInt","toString","feParent","removeActive","isCut","removeBlur","selectedNodes","actionRecords","enablePaste","notify","events.hidePaste","activeElement","action","isSearchCut","activeElements","events.cutCopyInit","blurEle","activeModule","targetPath","getParentPath","getModule","addBlur","events.showPaste","activeRecords","breadcrumbbarModule","searchObj","value","isFiltered","i_1","selectedItems","nodes","add","CLS.BLUR","hover","querySelectorAll","CLS.HOVER","remove","CLS.ROW","closest","CLS.LARGE_ICON","searchWordHandler","isLayoutChange","caseSensitive","searchWord","events.pathColumn","args","isFileSystemData","itemData","fileSystemData","read","events.layoutChange","searchSettings","filterType","filteredData","filter","obj","parentId","DataManager","executeLocal","Query","where","ignoreCase","searchValue","toLowerCase","Search","events.search","showHiddenItems","getPathObject","hiddenItems","isSortByClicked","files","oldView","detailsviewModule","gridObj","dataSource","largeiconsviewModule","allItems","updateLayout","view","layoutSelectedItems","getTargetModule","tartgetModule","CLS.ROOT","CLS.CONTROL","CLS.GRID_CONTENT","CLS.LARGE_ICONS","targetModule","refresh","hasReadAccess","events.refreshEnd","createDeniedDialog","events.permissionRead","openAction","events.openEnd","copyFiles","fileAction","cutFiles","fileType","file","filetype","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","CLS.FOLDER","getImageUrl","item","baseUrl","pathUrl","fileName","fPath","imgUrl","trigger","eventArgs_1","fileDetails","imageUrl","ajaxSettings","url","encodeURIComponent","eventArgs","imgId","replace","Date","getTime","getFullPath","filePath","getName","name","getSortedData","items","query","sortOrder","isNullOrUndefined","sortBy","group","lists","getObject","currFiles","feFiles","createEmptyElement","emptyEle","dragFile","layoutElement","CLS.LAYOUT_ID","addressBarHeight","CLS.BREADCRUMBBAR_ID","offsetHeight","top","eDiv","CLS.GRID_HEADER","querySelector","CLS.EMPTY","emptyDiv","createElement","className","emptyFolder","CLS.LARGE_EMPTY_FOLDER","CLS.EMPTY_CONTENT","CLS.EMPTY_INNER_CONTENT","CLS.GRID_VIEW","appendChild","error","innerHTML","getLocaleText","style","marginTop","getDirectories","setNodeId","result","rootId","dirs","len","setValue","setDateObject","localeString","dateFormat","createdDate","modifiedDate","formatDate","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","column","substring","lastIndexOf","detailsViewSettings","columns","setNextPath","currfolders","folders","originalPath","root","eventName","events.finalizeEnd","events.initialEnd","openSearchFolder","isRoot","searchData","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","includes","validateSubFolder","events.pasteInit","paste","createDialog","code","message","fileExists","dragPath","subFolder","name_1","dragData","srcData","dragNodes","tempTarget","dropHandler","dropData","oldPath","getDirectoryPath","cwd","doPasteUpdate","operation","events.dragEnd","events.cutEnd","duplicateItems","pasteNodes","count","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","events.pasteEnd","readDropPath","expandedId","events.pathDrag","navigationpaneModule","treeObj","document","events.dropPath","getDuplicateData","records","createVirtualDragElement","getItemName","cloneIcon","cloneName","virtualEle","ele","CLS.CLONE","badge","virtualDragElement","dragStopHandler","dragArgs","cancel","treeExpandTimer","window","clearTimeout","removeDropTarget","uploadObj","dropArea","CLS.CONTENT_ID","detach","events.dropInit","dragCount","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","scrollHandler","scrollParent","nodeClass","screenY","clientY","position","elementData","getBoundingClientRect","clientHeight","scrollBy","draggingHandler","canDrop","setTimeout","events.dragging","parentElement","y","firstElementChild","objectToString","str","keys","updateRenamingData","currentItemText","isFile","filterPath","doRename","hasEditAccess","events.permissionEdit","doDownload","hasDownloadAccess","events.permissionDownload","Download","doDeleteFiles","newIds","Delete","doDownloadFiles","getAccessClass","permission","hasContentAccess","hasUploadAccess","createNewFolder","details","events.permissionEditContents","uploadItem","eleId","CLS.UPLOAD_ID","click","events.permissionUpload","closePopup","dialogObj","hide","getAccessDetails","isPathPermision","accessMessage","copyOrMovePermission","undefined","responseData","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","showFileExtension","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","isFileExists","some","findIndexById","findIndex","String","filterById","filterByParent","createNewItem","isCopy","newItem","call","currentDate","assign","dateCreated","dateModified","hasChild","getUid","createErrorObject","triggerClientEvents","createEventArgs","folderName","parentFolder","newObject","data_1","deleteEventArgs","forEach","index","splice","subItem","renameEventArgs","moveEventArgs","folderSubItems_1","itemPermission","pathPermission","file_1","existingFileCount","copyFolderItems","getTargetFiles","fileData","pathArray","currItem","subItems","parentID","searchEventArgs","searchResults","searchText","fn","mode","dataType","contentType","JSON","stringify","onSuccess","onFailure","beforeSend","beforeSendArgs","isMultipleFiles","itemNames","totalSize","events.beforeRequest","idValue","isFileOperation","map","getSize","reduce","accumulator","currentObject","location","multipleFiles","created","modified","performReadOperation","Ajax","result_1","triggerAjaxFailure","parse","send","hz","toFixed","events.afterRequest","intl","rootAliasName","Internationalization","rootName","location_1","RegExp","match","events.searchTextChange","copiedItems","events.selectionChanged","pop","handleCatchError","visible","nextElementSibling","createdItem","events.createEnd","renamedItem","isArray","events.renameEndParent","renameText","events.pathChanged","events.renameEnd","moveorcopyEventArgs","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","responseType","useFormPost","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","contentDisposition_1","fileName_1","Fetch","onLoad","e","headers","get","extractedFilename","filenameMatch","blobUrl","URL","createObjectURL","link","href","body","status","options","header","content","buttons","dialogName","open","triggerPopupOpen","close","triggerPopupClose","buttonModel","isPrimary","onSubmit","createInput","oninput","onValidate","onkeyup","getKeyCode","focus","setSelectionRange","bind","events.deleteInit","onReSubmit","inputEle","txt","formattedString","CLS.VALUE","strArr","val","substr","every","arr","toLocaleUpperCase","events.actionFailure","CLS.ERROR_CONTENT","Dialog","beforeOpen","keydownAction","beforeClose","triggerPopupBeforeClose","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","dataBind","show","replaceItems","extOptions","duplicateContent","extDialogObj","item_1","indexval","item_2","ind","retryFiles","isRetryOpened","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","isApplySame","checked","retryDlgClose","retryDlgUpdate","events.skipUpload","beforeExtOpen","CLS.EXTN_DIALOG_ID","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","isKeepBoth","onKeepBothAll","retryArgs","retry","onReplaceAll","flag","placeholder","Input","properties","preventKeydown","selectAll","dlgName","btnElement","btnCount","_loop_1","onkeydown","keyCode","preventDefault","onSubmitValidate","oldExtension","newExtension","oIndex","renamedId","nIndex","test","addInvalid","which","charCode","createImageDialog","image","src","alt","viewerObj","height","enableResize","X","Y","updateImage","resizing","resizeStop","CLS.IMG_DIALOG_ID","imgWrap","cssObj","getComputedStyle","paddingWidth","parseFloat","paddingRight","paddingHeight","paddingBottom","offsetWidth","LargeIconsView","render","visitedItem","startItem","showSpinner","resetMultiSelect","setAttribute","listObj","unWireEvents","removeEventListener","events.hideLayout","iconsView","CLS.LARGEICON_ID","ul","activeEle","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","htmlAttributes","itemCreated","onItemCreated","renderList","sortComparer","DataUtil","sort","comparer","CLS.DISPLAY_NONE","enableVirtualization","virtualizationModule","setUIVirtualization","listElements","ListBase","createListFromJson","itemList","slice","preventImgDrag","createDragObj","emptyList","CLS.LIST_PARENT","isPasteOperation","selectItems","uploadOperation","CLS.ACTIVE","maxHeight","getItemCount","addEventListener","wireEvents","setUlElementHeight","wireScrollEvent","isRendered","hideSpinner","checkItem","x","z","ondragstart","_this","Draggable","enableTailMode","distance","enableAutoScroll","dragTarget","helper","dragHelper","cursorAt","dragCursorPosition","dragArea","dragStop","drag","clone","dragStart","sender","dragLi","setFocus","getItemObject","onDropInit","cwdData","getModuleName","dropLi","info","removeAttribute","curData","textEle","renderCheckbox","checkElement","showItemCheckBoxes","createCheckBox","insertBefore","childNodes","onLayoutChange","indexes","getIndexes","length_1","checkEle","checkLength","checkState","icon","selected","showThumbnail","title","onFinalizeEnd","onCreateEnd","clearSelect","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","addSelection","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","lastItem","getFirstItem","getLastItem","doSelection","ctrlKey","shiftKey","isInteraction","onClearAllInit","clearSelection","onBeforeRequest","onAfterRequest","onSearch","onLayoutRefresh","onUpdateSelectionData","onPathColumn","isDestroyed","off","events.selectedData","events.openInit","events.modelChanged","onPropertyChanged","events.methodCall","onMethodCall","onActionFailure","events.renameInit","events.selectAllInit","events.clearAllInit","events.menuItemData","onMenuItemData","events.splitterResize","splitterResizeHandler","events.resizeEnd","resizeHandler","onpasteInit","onpasteEnd","oncutCopyInit","events.detailsInit","onDetailsInit","events.layoutRefresh","onDropPath","events.updateSelectionData","events.filterEnd","on","currentSelected","_i","_a","newProp","allowMultiSelection","wireClickEvent","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","keyConfigs","keyboardDownModule","keydownActionHandler","EventHandler","onMouseOver","targetEle","toBind","clickObj","Touch","tap","eve","isDevice","tapCount","tapEvent","doTapAction","originalEvent","dblClickHandler","clickHandler","tapHold","multiSelect","addClass","CLS.MULTI_SELECT","updateType","cList","addActive","isSelectAllCalled","CLS.CHECK","triggerSelection","CLS.FRAME","startIndex","endIndex","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","folder","fItem","getFocusedItem","firstItem","scrollTo","scrollHeight","navigateItem","scrollTop","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","traverseBackward","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","marginValue","getPropertyValue","isVisible","liScrPos","getCurFocusedItem","liParent","dItem","lItem","rItem","uItem","getDataName","preItem","toCheck","CLS.CB_WRAP","eles","visitedData","j","byId","resultData","newData","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","isFilter","filterName","name_2","end","home","tab","moveDown","moveLeft","moveRight","moveUp","ctrlEnd","ctrlHome","ctrlDown","ctrlLeft","ctrlRight","ctrlUp","shiftEnd","shiftHome","shiftDown","shiftLeft","shiftRight","shiftUp","csEnd","csHome","csDown","csLeft","csRight","csUp","space","ctrlSpace","shiftSpace","csSpace","ctrlA","enter","altEnter","esc","del","ctrlX","isMac","ctrlC","ctrlV","f2","shiftdel","back","ctrlD","BreadCrumbBar","prop","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","CLS.ICONS","innerText","ulElement","breadCrumbBarNavigation","searchWrap","subMenuObj","updateBreadCrumbBar","addresBarUL","liElements","pRight","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","CLS.SEARCH_ID","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","searchWrapWidth","diff","liElement","utext","subMenuLi","subMenuSpan","DropDownButton","CLS.ICON_BREADCRUMB","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","searchTimer","nodeName","children","currentPath","triggerFileOpen","treeNodeId","events.updateTreeSelection","CLS.FILTER","list","liElementId","addressBarLink","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onResize","onPasteEnd","events.destroy","onSearchTextChange","liEle","addressPath","ContextMenu","downarrow","uparrow","contextMenu","Menu","onBeforeItemRender","onSelect","onBeforeOpen","onBeforeClose","CLS.CONTEXT_MENU_ID","iconSpan","getMenuId","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","isFocused","parentItem","menuType","menuCloseArgs","menuTarget","isMenuItemClicked","parentKey","itemKeys_1","_fm_id","uid","treeFolder","targetNodeElement","currentElement","activeNode","getElementsByClassName","CLS.FULLROW","targetElement","getTargetView","updateActiveModule","CLS.TOOLBAR_ID","setLayoutItem","CLS.MENU_ITEM","CLS.SUBMENU_ICON","CLS.TREE_ID","getRowObjectFromUID","selectRows","setFileItem","setFolderItem","disabledItems","itemsToRemove","pasteIndex","isSubMenu","pasteEle","getMenuItemData","menuModule","currentItems","menuOpenArgs","enableItems","CLS.GRID_ID","CLS.ICON_VIEW","getItemIndex","itemId","disableItem","concat","enable","isUniqueId","checkValidItem","isTree","renameIndex","getItemData","contextMenuSettings","trim","selectedTreeNode","indexToRemove","layout","nameEle","menuClickArgs","sItems","openFileOnContextMenuClick","events.downloadInit","separator","CLS.ICON_OPEN","CLS.ICON_UPLOAD","CLS.ICON_CUT","CLS.ICON_COPY","CLS.ICON_PASTE","CLS.ICON_DELETE","CLS.ICON_RENAME","CLS.ICON_NEWFOLDER","CLS.ICON_DETAILS","CLS.ICON_SHORTBY","CLS.TB_OPTION_DOT","CLS.TB_OPTION_TICK","CLS.ICON_REFRESH","CLS.ICON_SELECTALL","CLS.ICON_DOWNLOAD","FileManager_1","defaultLocale","NewFolder","Upload","Rename","Cut","Copy","Paste","SortBy","Refresh","Item-Selection","Items-Selection","View","Details","SelectAll","Open","Tooltip-NewFolder","Tooltip-Upload","Tooltip-Delete","Tooltip-Rename","Tooltip-Download","Tooltip-Cut","Tooltip-Copy","Tooltip-Paste","Tooltip-SortBy","Tooltip-Refresh","Tooltip-Selection","Tooltip-View","Tooltip-Details","Tooltip-SelectAll","Name","Size","DateModified","DateCreated","Path","Modified","Created","Location","Type","Permission","Ascending","Descending","None","View-LargeIcons","View-Details","Button-Ok","Button-Cancel","Button-Yes","Button-No","Button-Create","Button-Save","Header-NewFolder","Content-NewFolder","Header-Rename","Content-Rename","Header-Rename-Confirmation","Content-Rename-Confirmation","Header-Delete","Content-Delete","Header-Folder-Delete","Content-Folder-Delete","Header-Multiple-Delete","Content-Multiple-Delete","Header-Duplicate","Content-Duplicate","Header-Upload","Error","Validation-Empty","Validation-Invalid","Validation-NewFolder-Exists","Validation-Rename-Exists","Folder-Empty","File-Upload","Search-Empty","Search-Key","Filter-Empty","Filter-Key","Sub-Folder-Error","Same-Folder-Error","Access-Denied","Access-Details","Header-Retry","Content-Retry","Button-Keep-Both","Button-Replace","Button-Skip","ApplyAll-Label","KB","Access-Message","Network-Error","Server-Error","FileManager","Component","preRender","getUniqueID","ensurePath","setAttr","formatUnit","Browser","checkMobile","navigationPaneSettings","isBigger","createSpinner","addWrapper","altN","f5","ctrlShift1","ctrlShift2","ctrlU","L10n","getPersistData","addOnPersist","requiredModules","modules","member","toolbarSettings","initialize","slItems","fileView","navigator","platform","toUpperCase","setRtl","addEventListeners","adjustHeight","splitterObj","collapse","CLS.SPLIT_BAR","renderComplete","CLS.MOBILE","CLS.CHECK_SELECT","addCssClass","renderFileUpload","headerWrap","layoutWrap","CLS.LAYOUT","navigationWrap","CLS.NAVIGATION_ID","CLS.NAVIGATION","treeWrap","contentWrap","CLS.LAYOUT_CONTENT","gridWrap","CLS.BREADCRUMBS","largeiconWrap","role","overlay","CLS.OVERLAY","dialogWrap","paneSettings","min","max","maxWidth","Splitter","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","CLS.UPLOAD_DIALOG_ID","toolbar","toolBarHeight","splitterAdjust","bar","expand","oldOne","newOne","onContextMenu","userAgent","uploadEle","uploadDialogObj","onOpen","onClose","renderUploadBox","uploadUrl","Uploader","asyncSettings","saveUrl","removeUrl","uploading","onUploading","removing","onRemoving","canceling","onCancel","clearing","onClearing","onSelected","success","onUploadSuccess","failure","onUploadFailure","autoUpload","uploadSettings","minFileSize","maxFileSize","allowedExtensions","directoryUpload","fileListRendering","onFileListRender","updateUploader","isOpened","clearAll","customFormData","filename","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","uploadingCount","uploadedCount","autoClose","response","statusText","onInitialEnd","removeEventListeners","wireSelectOnDragEvent","isBind","viewElem","onDragStart","enableRangeSelection","dragX","pageX","dragY","pageY","dragSelectElement","styles","append","onDragStop","onDrag","diffX","stopPropagation","diffY","setStyleAttribute","left","Math","abs","dragSelectedItems","dragRect","allItems_1","itemRect","right","bottom","setPath","oldProp","ajaxSettingSetModel","localeSetModelOption","refreshing","CLS.RTL","toolbarModule","contextmenuModule","disableToolbarItems","enableToolbarItems","disableMenuItems","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","closeDialog","rtl","Complex","Collection","Event","NotifyPropertyChanges","previousPath","nextPath","deleteRecords","isSameAction","persistData","Inject","Toolbar","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","toolbarItems","tool","toolbarClickArgs","CLS.TB_ITEM","getPupupId","buttonObj","layoutBtnObj","tickIcon","viewText","firstChild","hideItems","default","hideStatus","portals","updateSortByButton","itemCount","mergedItems","propItem","getItemModel","itemTooltip","tooltipText","prefixIcon","showTextOn","spanElement","suffixIcon","CLS.ICON_CLEAR","overflow","align","disabled","showAlwaysInPopup","tabIndex","onSelectionChanged","reRenderToolbar","itemsToProcess","single","selection","multiple","hideItem","tools","toHide","refreshOverflow","isEnable","Virtualization","currentViewItems","largeIconInstance","lastRowCount","rowItemCount","topElement","filemanagerInstance","bottomElement","listItemHeight","totalHeight","topElementHeight","bottomElementHeight","listDiff","renderedCount","dataSourceLength","widthMargin","floor","round","onVirtualUiScroll","scrollPosition","scroll","getscrollerHeight","onNormalScroll","startingHeight","isScrollingDown","updateUI","lastItemIndex","isAllRendered","startItemIndex","previousElementSibling","NavigationPane","onInit","rootData","attr","BaseTreeView","expanded","hasChildren","tooltip","nodeSelecting","onNodeSelecting","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","allowEditing","nodeEditing","onNodeEditing","drawNode","onDrowNode","dataBound","addDragDrop","getTreeData","getDragPath","getDropPath","nodeData","addChild","prevent","directories","targetDirectory","_fm_icon","childElements","addNodes","selecEventArgs","isRightClick","isSameNodeClicked","isPathDragged","isRenameParent","restrictSelecting","renameParent","isNodeClickCalled","previousSelected","expandNodeTarget","onPathDrag","selectResultNode","isDrag","isNodeExpandCalled","events.nodeExpand","onNodeExpanded","innerHtml","sNode","expandTree","updateTree","updateTreeNode","toExpand","expandedNodes","removeChildNodes","childs","removeNodes","onOpenEnd","sleId","expandAll","updateItemData","updateActionData","selectedNodeEle","selcetedEle","onRenameEndParent","id_1","nData","onDownLoadInit","onClearPathInit","onDragEnd","moveNames","getMoveNames","previousName","onCutEnd","resultObj","itemname","checkDropPath","onDragging","dataobj","level","keyDown","ctrlShiftN","shiftF10","DetailsView","sortSettings","checkNameWidth","getColumns","direction","Grid","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","enablePersistence","enableVirtualMaskRow","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","getGridHeight","beforeCopy","load","focusModule","isReact","reactTemplateRender","emptyArgs","pane","initialColumn","isNameWidth","adjustWidth","fieldName","nameWidth","headerTextAlign","SanitizeHtmlHelper","sanitize","_fm_modified","this_1","template_1","iWidth","_fm_iconClass","headerTemplate","unshift","cBox","cWidth","disableHtmlEncode","gridHeader","renderCheckBox","isColumnRefresh","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","sizeFormat","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","nameColumn","find","hdTable","cnTable","selectRecords","isSelectionUpdate","currentSelectedItem","currentViewData","getRowHeight","getHeaderContent","paddingLeft","borderRightWidth","getContent","overflowY","checkEmptyDiv","isLoaded","gridRecords","getCurrentViewRecords","sRecords","Str2","selectedRowIndex","rData","onSortColumn","sortModule","freezeRefresh","interaction","onDetailsResize","pathField","hideAtMedia","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","selectionModule","selectRowsByRange","getRows","selectRow","removeSelection","CLS.HEADER_CHECK","onPasteInit","onDetailsResizeHandler","getRowInfo","dragRow","getSelectedRows","gridHeaderColGroup","gridContentColGroup","gridHeaderColNames","isMultiSelect","isShiftPressed","isCtrlPressed","rowIndexes","selectedRecords","firstItemIndex","getRowByIndex","isHeaderCheckboxClicked","gridSelectNodes","selectSize","record","name_3","keyupHandler","keydownHandler","removeFocus","relatedTarget","thElements","getFocusedItemIndex","crtSrlPos","crtFocusIndex","gridItems","gridLength","focIndex","selIndex","selRowIndeces","currentField","getColumnByUid","nextSibling","addHeaderFocus","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","isSelected","shiftSelectedItem","shiftSelectFocusItem","nextIndex","indexValue","checkAllRows","InnerItems","itemArr","fIndex","selRowIndexes","itemElement","CLS.FOCUSED","nameFocus","treeFocus","tagName","check","getRecords","hasFilter","name_4","dRecords","Resize","Sort","VirtualScroll","reference","referenceIsFile","comparerIsFile","referenceParts","comparerParts","_","$1","$2","Infinity","referencePart","shift","comparerPart","comparisonResult","localeCompare"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ej2-filemanager.umd.min.js","sources":["../src/file-manager/models/ajax-settings.js","../src/file-manager/models/toolbar-settings.js","../src/file-manager/models/search-settings.js","../src/file-manager/models/details-view-settings.js","../src/file-manager/models/contextMenu-settings.js","../src/file-manager/models/navigation-pane-settings.js","../src/file-manager/models/upload-settings.js","../src/file-manager/models/column.js","../src/file-manager/base/classes.js","../src/file-manager/base/constant.js","../src/file-manager/common/utility.js","../src/file-manager/common/operations.js","../src/file-manager/pop-up/dialog.js","../src/file-manager/layout/large-icons-view.js","../src/file-manager/actions/breadcrumb-bar.js","../src/file-manager/pop-up/context-menu.js","../src/file-manager/models/default-locale.js","../src/file-manager/base/file-manager.js","../src/file-manager/actions/toolbar.js","../src/file-manager/actions/virtualization.js","../src/file-manager/layout/navigation-pane.js","../src/file-manager/layout/details-view.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar AjaxSettings = /** @class */ (function (_super) {\n __extends(AjaxSettings, _super);\n function AjaxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"downloadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"getImageUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"uploadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"url\", void 0);\n return AjaxSettings;\n}(ChildProperty));\nexport { AjaxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var defaultToolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(defaultToolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\nvar ToolbarItem = /** @class */ (function (_super) {\n __extends(ToolbarItem, _super);\n function ToolbarItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], ToolbarItem.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], ToolbarItem.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], ToolbarItem.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], ToolbarItem.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ToolbarItem.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], ToolbarItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], ToolbarItem.prototype, \"align\", void 0);\n __decorate([\n Property(-1)\n ], ToolbarItem.prototype, \"tabIndex\", void 0);\n __decorate([\n Property()\n ], ToolbarItem.prototype, \"name\", void 0);\n return ToolbarItem;\n}(ChildProperty));\nexport { ToolbarItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Search settings of the File Manager.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], SearchSettings.prototype, \"placeholder\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, initializeCSPTemplate } from '@syncfusion/ej2-base';\n/**\n * Specifies the columns in the details view of the file manager.\n */\nexport var columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120,\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 */\nvar DetailsViewSettings = /** @class */ (function (_super) {\n __extends(DetailsViewSettings, _super);\n function DetailsViewSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n __decorate([\n Property(columnArray)\n ], DetailsViewSettings.prototype, \"columns\", void 0);\n return DetailsViewSettings;\n}(ChildProperty));\nexport { DetailsViewSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nexport var folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nexport var layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nvar ContextMenuSettings = /** @class */ (function (_super) {\n __extends(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(fileItems)\n ], ContextMenuSettings.prototype, \"file\", void 0);\n __decorate([\n Property(folderItems)\n ], ContextMenuSettings.prototype, \"folder\", void 0);\n __decorate([\n Property(layoutItems)\n ], ContextMenuSettings.prototype, \"layout\", void 0);\n __decorate([\n Property(true)\n ], ContextMenuSettings.prototype, \"visible\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\nexport { ContextMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the navigationpane settings of the File Manager.\n */\nvar NavigationPaneSettings = /** @class */ (function (_super) {\n __extends(NavigationPaneSettings, _super);\n function NavigationPaneSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('650px')\n ], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('240px')\n ], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(true)\n ], NavigationPaneSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], NavigationPaneSettings.prototype, \"sortOrder\", void 0);\n return NavigationPaneSettings;\n}(ChildProperty));\nexport { NavigationPaneSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar UploadSettings = /** @class */ (function (_super) {\n __extends(UploadSettings, _super);\n function UploadSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], UploadSettings.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(true)\n ], UploadSettings.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"autoClose\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"directoryUpload\", void 0);\n __decorate([\n Property(0)\n ], UploadSettings.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], UploadSettings.prototype, \"maxFileSize\", void 0);\n return UploadSettings;\n}(ChildProperty));\nexport { UploadSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Interface for a class Column\n */\n/* istanbul ignore next */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"headerText\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"minWidth\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('Left')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTextAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"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 return Column;\n}(ChildProperty));\nexport { Column };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var TOOLBAR_ID = '_toolbar';\n/** @hidden */\nexport var LAYOUT_ID = '_layout';\n/** @hidden */\nexport var NAVIGATION_ID = '_navigation';\n/** @hidden */\nexport var TREE_ID = '_tree';\n/** @hidden */\nexport var GRID_ID = '_grid';\n/** @hidden */\nexport var LARGEICON_ID = '_largeicons';\n/** @hidden */\nexport var DIALOG_ID = '_dialog';\n/** @hidden */\nexport var ALT_DIALOG_ID = '_alt_dialog';\n/** @hidden */\nexport var IMG_DIALOG_ID = '_img_dialog';\n/** @hidden */\nexport var EXTN_DIALOG_ID = '_extn_dialog';\n/** @hidden */\nexport var UPLOAD_DIALOG_ID = '_upload_dialog';\n/** @hidden */\nexport var RETRY_DIALOG_ID = '_retry_dialog';\n/** @hidden */\nexport var CONTEXT_MENU_ID = '_contextmenu';\n/** @hidden */\nexport var SORTBY_ID = '_sortby';\n/** @hidden */\nexport var VIEW_ID = '_view';\n/** @hidden */\nexport var SPLITTER_ID = '_splitter';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var BREADCRUMBBAR_ID = '_breadcrumbbar';\n/** @hidden */\nexport var UPLOAD_ID = '_upload';\n/** @hidden */\nexport var RETRY_ID = '_retry';\n/** @hidden */\nexport var SEARCH_ID = '_search';\n/**\n * Specifies the File Manager internal class names\n */\n/** @hidden */\nexport var ROOT = 'e-filemanager';\n/** @hidden */\nexport var CONTROL = 'e-control';\n/** @hidden */\nexport var CHECK_SELECT = 'e-fe-cb-select';\n/** @hidden */\nexport var ROOT_POPUP = 'e-fe-popup';\n/** @hidden */\nexport var MOBILE = 'e-fe-mobile';\n/** @hidden */\nexport var MOB_POPUP = 'e-fe-popup e-fe-mobile';\n/** @hidden */\nexport var MULTI_SELECT = 'e-fe-m-select';\n/** @hidden */\nexport var FILTER = 'e-fe-m-filter';\n/** @hidden */\nexport var LAYOUT = 'e-layout';\n/** @hidden */\nexport var NAVIGATION = 'e-navigation';\n/** @hidden */\nexport var LAYOUT_CONTENT = 'e-layout-content';\n/** @hidden */\nexport var LARGE_ICONS = 'e-large-icons';\n/** @hidden */\nexport var TB_ITEM = 'e-toolbar-item';\n/** @hidden */\nexport var LIST_ITEM = 'e-list-item';\n/** @hidden */\nexport var LIST_TEXT = 'e-list-text';\n/** @hidden */\nexport var LIST_PARENT = 'e-list-parent';\n/** @hidden */\nexport var TB_OPTION_TICK = 'e-icons e-fe-tick';\n/** @hidden */\nexport var TB_OPTION_DOT = 'e-icons e-fe-dot';\n/** @hidden */\nexport var BLUR = 'e-blur';\n/** @hidden */\nexport var ACTIVE = 'e-active';\n/** @hidden */\nexport var HOVER = 'e-hover';\n/** @hidden */\nexport var FOCUS = 'e-focus';\n/** @hidden */\nexport var FOCUSED = 'e-focused';\n/** @hidden */\nexport var CHECK = 'e-check';\n/** @hidden */\nexport var FRAME = 'e-frame';\n/** @hidden */\nexport var CB_WRAP = 'e-checkbox-wrapper';\n/** @hidden */\nexport var ROW = 'e-row';\n/** @hidden */\nexport var ROWCELL = 'e-rowcell';\n/** @hidden */\nexport var EMPTY = 'e-empty';\n/** @hidden */\nexport var EMPTY_CONTENT = 'e-empty-content';\n/** @hidden */\nexport var EMPTY_INNER_CONTENT = 'e-empty-inner-content';\n/** @hidden */\nexport var CLONE = 'e-fe-clone';\n/** @hidden */\nexport var DROP_FOLDER = 'e-fe-drop-folder';\n/** @hidden */\nexport var DROP_FILE = 'e-fe-drop-file';\n/** @hidden */\nexport var FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var ICON_IMAGE = 'e-fe-image';\n/** @hidden */\nexport var ICON_MUSIC = 'e-fe-music';\n/** @hidden */\nexport var ICON_VIDEO = 'e-fe-video';\n/** @hidden */\nexport var LARGE_ICON = 'e-large-icon';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER = 'e-empty-icon e-fe-folder';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER_TWO = 'e-empty-icon.e-fe-folder';\n/** @hidden */\nexport var LARGE_ICON_FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var SELECTED_ITEMS = 'e-items';\n/** @hidden */\nexport var TEXT_CONTENT = 'e-text-content';\n/** @hidden */\nexport var GRID_HEADER = 'e-gridheader';\n/** @hidden */\nexport var TEMPLATE_CELL = 'e-templatecell';\n/** @hidden */\nexport var TREE_VIEW = 'e-treeview';\n/** @hidden */\nexport var MENU_ITEM = 'e-menu-item';\n/** @hidden */\nexport var MENU_ICON = 'e-menu-icon';\n/** @hidden */\nexport var SUBMENU_ICON = 'e-caret';\n/** @hidden */\nexport var GRID_VIEW = 'e-content';\n/** @hidden */\nexport var GRID_CONTENT = 'e-gridcontent';\n/** @hidden */\nexport var ICON_VIEW = 'e-list-parent';\n/** @hidden */\nexport var ICON_OPEN = 'e-icons e-fe-open';\n/** @hidden */\nexport var ICON_UPLOAD = 'e-icons e-fe-upload';\n/** @hidden */\nexport var ICON_CUT = 'e-icons e-fe-cut';\n/** @hidden */\nexport var ICON_COPY = 'e-icons e-fe-copy';\n/** @hidden */\nexport var ICON_PASTE = 'e-icons e-fe-paste';\n/** @hidden */\nexport var ICON_DELETE = 'e-icons e-fe-delete';\n/** @hidden */\nexport var ICON_RENAME = 'e-icons e-fe-rename';\n/** @hidden */\nexport var ICON_NEWFOLDER = 'e-icons e-fe-newfolder';\n/** @hidden */\nexport var ICON_DETAILS = 'e-icons e-fe-details';\n/** @hidden */\nexport var ICON_SHORTBY = 'e-icons e-fe-sort';\n/** @hidden */\nexport var ICON_REFRESH = 'e-icons e-fe-refresh';\n/** @hidden */\nexport var ICON_SELECTALL = 'e-icons e-fe-select';\n/** @hidden */\nexport var ICON_DOWNLOAD = 'e-icons e-fe-download';\n/** @hidden */\nexport var ICON_OPTIONS = 'e-icons e-fe-options';\n/** @hidden */\nexport var ICON_GRID = 'e-icons e-fe-grid';\n/** @hidden */\nexport var ICON_LARGE = 'e-icons e-fe-large';\n/** @hidden */\nexport var ICON_BREADCRUMB = 'e-icons e-fe-breadcrumb';\n/** @hidden */\nexport var ICON_CLEAR = 'e-icons e-fe-clear';\n/** @hidden */\nexport var ICON_DROP_IN = 'e-icons e-fe-drop-in';\n/** @hidden */\nexport var ICON_DROP_OUT = 'e-icons e-fe-drop-out';\n/** @hidden */\nexport var ICON_NO_DROP = 'e-icons e-fe-no-drop';\n/** @hidden */\nexport var ICONS = 'e-icons';\n/** @hidden */\nexport var DETAILS_LABEL = 'e-detailslabel';\n/** @hidden */\nexport var ERROR_CONTENT = 'e-fe-errorcontent';\n/** @hidden */\nexport var STATUS = 'e-status';\n/** @hidden */\nexport var BREADCRUMBS = 'e-address';\n/** @hidden */\nexport var RTL = 'e-rtl';\n/** @hidden */\nexport var DISPLAY_NONE = 'e-display-none';\n/** @hidden */\nexport var COLLAPSED = 'e-node-collapsed';\n/** @hidden */\nexport var FULLROW = 'e-fullrow';\n/** @hidden */\nexport var ICON_COLLAPSIBLE = 'e-icon-collapsible';\n/** @hidden */\nexport var SPLIT_BAR = 'e-split-bar';\n/** @hidden */\nexport var HEADER_CHECK = 'e-headercheck';\n/** @hidden */\nexport var OVERLAY = 'e-fe-overlay';\n/** @hidden */\nexport var VALUE = 'e-fe-value';\n","/**\n * Specifies the File Manager internal variables\n */\n/** @hidden */\nexport var isFile = 'isFile';\n/**\n * Specifies the File Manager internal events\n */\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var finalizeEnd = 'finalize-end';\n/** @hidden */\nexport var createEnd = 'create-end';\n/** @hidden */\nexport var filterEnd = 'filter-end';\n/** @hidden */\nexport var beforeDelete = 'before-delete';\n/** @hidden */\nexport var pathDrag = 'path-drag';\n/** @hidden */\nexport var deleteInit = 'delete-init';\n/** @hidden */\nexport var deleteEnd = 'delete-end';\n/** @hidden */\nexport var refreshEnd = 'refresh-end';\n/** @hidden */\nexport var resizeEnd = 'resize-end';\n/** @hidden */\nexport var splitterResize = 'splitter-resize';\n/** @hidden */\nexport var pathChanged = 'path-changed';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var beforeRequest = 'before-request';\n/** @hidden */\nexport var upload = 'upload';\n/** @hidden */\nexport var skipUpload = 'skip-upload';\n/** @hidden */\nexport var afterRequest = 'after-request';\n/** @hidden */\nexport var download = 'download';\n/** @hidden */\nexport var layoutRefresh = 'layout-refresh';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var search = 'search';\n/** @hidden */\nexport var openInit = 'open-init';\n/** @hidden */\nexport var openEnd = 'open-end';\n/** @hidden */\nexport var selectionChanged = 'selection-changed';\n/** @hidden */\nexport var selectAllInit = 'select-all-init';\n/** @hidden */\nexport var clearAllInit = 'clear-all-init';\n/** @hidden */\nexport var clearPathInit = 'clear-path-init';\n/** @hidden */\nexport var layoutChange = 'layout-change';\n/** @hidden */\nexport var sortByChange = 'sort-by-change';\n/** @hidden */\nexport var nodeExpand = 'node-expand';\n/** @hidden */\nexport var detailsInit = 'details-init';\n/** @hidden */\nexport var menuItemData = 'menu-item-data';\n/** @hidden */\nexport var renameInit = 'rename-init';\n/** @hidden */\nexport var renameEndParent = 'rename-end-parent';\n/** @hidden */\nexport var renameEnd = 'rename-end';\n/** @hidden */\nexport var showPaste = 'show-paste';\n/** @hidden */\nexport var hidePaste = 'hide-paste';\n/** @hidden */\nexport var selectedData = 'selected-data';\n/** @hidden */\nexport var cutCopyInit = 'cut-copy-init';\n/** @hidden */\nexport var pasteInit = 'paste-init';\n/** @hidden */\nexport var pasteEnd = 'paste-end';\n/** @hidden */\nexport var cutEnd = 'cut-end';\n/** @hidden */\nexport var hideLayout = 'hide-layout';\n/** @hidden */\nexport var updateTreeSelection = 'update-tree-selection';\n/** @hidden */\nexport var treeSelect = 'select-node';\n/** @hidden */\nexport var sortColumn = 'sort-column';\n/** @hidden */\nexport var pathColumn = 'path-column';\n/** @hidden */\nexport var searchTextChange = 'search-change';\n/** @hidden */\nexport var beforeDownload = 'before-download';\n/** @hidden */\nexport var downloadInit = 'download-init';\n/** @hidden */\nexport var dropInit = 'drop-init';\n/** @hidden */\nexport var dragEnd = 'drag-end';\n/** @hidden */\nexport var dropPath = 'drop-path';\n/** @hidden */\nexport var dragHelper = 'drag-helper';\n/** @hidden */\nexport var dragging = 'dragging';\n/** @hidden */\nexport var updateSelectionData = 'update-selection-data';\n/** @hidden */\nexport var methodCall = 'method-call';\n/** @hidden */\nexport var permissionRead = 'read';\n/** @hidden */\nexport var permissionEdit = 'write';\n/** @hidden */\nexport var permissionEditContents = 'writeContents';\n/** @hidden */\nexport var permissionCopy = 'copy';\n/** @hidden */\nexport var permissionUpload = 'upload';\n/** @hidden */\nexport var permissionDownload = 'download';\n","import * 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 var referenceIsFile = /\\.\\S+/.test(reference);\n var 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 var referenceParts = [];\n var 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 var referencePart = referenceParts.shift();\n var comparerPart = comparerParts.shift();\n if (referencePart && comparerPart) {\n var 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 var text = getValue('name', data);\n var id = node.getAttribute('data-id');\n var newText = isNOU(id) ? text : id;\n instance.setProperties({ path: getPath(node, newText, instance.hasId) }, true);\n instance.pathId = getPathId(node);\n instance.pathNames = getPathNames(node, text);\n}\n/**\n * Functions for get path in FileManager\n *\n * @param {Element | Node} element - specifies the element.\n * @param {string} text - specifies the text.\n * @param {boolean} hasId - specifies the id.\n * @returns {string} returns the path.\n * @private\n */\nexport function getPath(element, text, hasId) {\n var matched = getParents(element, text, false, hasId);\n var path = '/';\n var len = matched.length - (2);\n for (var i = len; i >= 0; i--) {\n path += matched[i] + '/';\n }\n return path;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} node - specifies the node element.\n * @returns {string[]} returns the path ids.\n * @private\n */\nexport function getPathId(node) {\n var matched = getParents(node, node.getAttribute('data-uid'), true);\n var ids = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n ids.push(matched[i]);\n }\n return ids;\n}\n/**\n * Functions for get path names in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @returns {string[]} returns the path names.\n * @private\n */\nexport function getPathNames(element, text) {\n var matched = getParents(element, text, false);\n var names = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n names.push(matched[i]);\n }\n return names;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @param {boolean} isId - specifies the id.\n * @param {boolean} hasId - checks the id exists.\n * @returns {string[]} returns parent element.\n * @private\n */\nexport function getParents(element, text, isId, hasId) {\n var matched = [text];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, '.' + CLS.LIST_ITEM)) {\n var parentText = isId ? el.getAttribute('data-uid') : (hasId ? el.getAttribute('data-id') :\n select('.' + CLS.LIST_TEXT, el).textContent);\n matched.push(parentText);\n }\n el = el.parentNode;\n if (el.classList.contains(CLS.TREE_VIEW)) {\n break;\n }\n }\n return matched;\n}\n/**\n * Functions for generate path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function generatePath(parent) {\n var key = parent.hasId ? 'id' : 'name';\n var newPath = '/';\n var i = 1;\n for (i; i < parent.pathId.length; i++) {\n var 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 var blurEle = parent.activeElements;\n if (parent.activeModule !== 'navigationpane') {\n parent.targetPath = parent.path;\n }\n else {\n parent.targetPath = getParentPath(parent.path);\n }\n var i = 0;\n if (blurEle) {\n getModule(parent, blurEle[0]);\n if (action === 'cut') {\n while (i < blurEle.length) {\n addBlur(blurEle[i]);\n i++;\n }\n }\n }\n i = 0;\n parent.selectedNodes = [];\n parent.enablePaste = true;\n parent.notify(events.showPaste, {});\n while (i < parent.activeRecords.length) {\n parent.actionRecords.push(parent.activeRecords[i]);\n parent.selectedNodes.push(getValue('name', parent.activeRecords[i]));\n i++;\n }\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) &&\n parent.activeModule !== 'navigationpane') {\n parent.selectedNodes = [];\n parent.isSearchCut = true;\n var i_1 = 0;\n while (i_1 < parent.selectedItems.length) {\n parent.selectedNodes.push(parent.selectedItems[i_1]);\n i_1++;\n }\n }\n return true;\n}\n/**\n * Adds blur to the elements\n *\n * @param {Element} nodes - specifies the nodes.\n * @returns {void}\n * @private\n */\nexport function addBlur(nodes) {\n nodes.classList.add(CLS.BLUR);\n}\n/**\n * Removes blur from elements\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} hover - specifies the hover string.\n * @returns {void}\n * @private\n */\nexport function removeBlur(parent, hover) {\n var blurEle = (!hover) ? parent.element.querySelectorAll('.' + CLS.BLUR) :\n parent.element.querySelectorAll('.' + CLS.HOVER);\n var i = 0;\n while (i < blurEle.length) {\n blurEle[i].classList.remove((!hover) ? CLS.BLUR : CLS.HOVER);\n i++;\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getModule(parent, element) {\n if (element) {\n if (element.classList.contains(CLS.ROW)) {\n parent.activeModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICON)) {\n parent.activeModule = 'largeiconsview';\n }\n else {\n parent.activeModule = 'navigationpane';\n }\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} value - specifies the value.\n * @param {boolean} isLayoutChange - specifies the layout change.\n * @returns {void}\n * @private\n */\nexport function searchWordHandler(parent, value, isLayoutChange) {\n var searchWord;\n if (value.length === 0 && !parent.isFiltered) {\n parent.notify(events.pathColumn, { args: parent });\n }\n if (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 var filteredData = parent.fileSystemData.filter(function (obj) { return obj.parentId !== null; });\n var data = new DataManager(filteredData).\n executeLocal(new Query().where('name', parent.searchSettings.filterType, value, parent.searchSettings.ignoreCase));\n var 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 var caseSensitive = parent.searchSettings.ignoreCase;\n var hiddenItems = parent.showHiddenItems;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchWord, hiddenItems, !caseSensitive);\n }\n else {\n if (!parent.isFiltered) {\n if (parent.isSortByClicked) {\n parent.notify(events.layoutChange, { files: (parent.oldView === 'Details') ? parent.detailsviewModule.gridObj.dataSource : parent.largeiconsviewModule.allItems });\n parent.isSortByClicked = false;\n }\n else {\n read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n }\n else {\n filter(parent, events.layoutChange);\n }\n }\n}\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} view - specifies the view.\n * @returns {void}\n * @private\n */\nexport function updateLayout(parent, view) {\n parent.oldView = parent.view;\n parent.setProperties({ view: view }, true);\n if (parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) {\n parent.layoutSelectedItems = parent.selectedItems;\n }\n var searchWord = '';\n if (parent.breadcrumbbarModule.searchObj.element.value) {\n searchWord = parent.breadcrumbbarModule.searchObj.element.value;\n }\n parent.isLayoutChange = true;\n searchWordHandler(parent, searchWord, true);\n}\n/* istanbul ignore next */\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getTargetModule(parent, element) {\n var tartgetModule = '';\n if (element) {\n if (closest(element, '.' + CLS.ROOT + '.' + CLS.CONTROL + ' .' + CLS.GRID_CONTENT)) {\n tartgetModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICONS)) {\n tartgetModule = 'largeiconsview';\n }\n else if (element.classList.contains('e-fullrow') ||\n element.classList.contains('e-icon-expandable')) {\n tartgetModule = 'navigationpane';\n }\n else if (closest(element, '.e-address-list-item')) {\n tartgetModule = 'breadcrumbbar';\n }\n else {\n tartgetModule = '';\n }\n }\n parent.targetModule = tartgetModule;\n}\n/* istanbul ignore next */\n/**\n * refresh the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function refresh(parent) {\n parent.itemData = [getPathObject(parent)];\n if (!hasReadAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionRead);\n }\n else {\n read(parent, events.refreshEnd, parent.path);\n }\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function openAction(parent) {\n read(parent, events.openEnd, parent.path);\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {Object} - returns the path data.\n * @private\n */\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 var isFile = getValue('isFile', file);\n if (!isFile) {\n return CLS.FOLDER;\n }\n var imageFormat = ['bmp', 'dib', 'jpg', 'jpeg', 'jpe', 'jfif', 'gif', 'tif', 'tiff', 'png', 'ico'];\n var audioFormat = ['mp3', 'wav', 'aac', 'ogg', 'wma', 'aif', 'fla', 'm4a'];\n var videoFormat = ['webm', 'mkv', 'flv', 'vob', 'ogv', 'ogg', 'avi', 'wmv', 'mp4', '3gp'];\n var knownFormat = ['css', 'exe', 'html', 'js', 'msi', 'pdf', 'pptx', 'ppt', 'rar', 'zip', 'txt', 'docx', 'doc',\n 'xlsx', 'xls', 'xml', 'rtf', 'php'];\n var filetype = getValue('type', file);\n filetype = filetype.toLowerCase();\n if (filetype.indexOf('.') !== -1) {\n filetype = filetype.split('.').join('');\n }\n var iconType;\n if (imageFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_IMAGE;\n }\n else if (audioFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_MUSIC;\n }\n else if (videoFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_VIDEO;\n }\n else if (knownFormat.indexOf(filetype) !== -1) {\n iconType = 'e-fe-' + filetype;\n }\n else {\n iconType = 'e-fe-unknown e-fe-' + filetype;\n }\n return iconType;\n}\n/* istanbul ignore next */\n/**\n * To get the image URL\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} item - specifies the item.\n * @returns {string} - returns the image url.\n * @private\n */\nexport function getImageUrl(parent, item) {\n var imgUrl = isFileSystemData(parent) ? getValue('imageUrl', item) : '';\n if (isFileSystemData(parent)) {\n var eventArgs_1 = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs_1);\n return eventArgs_1.imageUrl;\n }\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var pathUrl = (baseUrl.indexOf('?') !== -1) ? '&path=' : '?path=';\n var fileName = encodeURIComponent(getValue('name', item));\n var fPath = getValue('filterPath', item);\n if (parent.hasId) {\n var imgId = getValue('id', item);\n imgUrl = baseUrl + pathUrl + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + pathUrl + encodeURIComponent(fPath.replace(/\\\\/g, '/')) + fileName;\n }\n else {\n imgUrl = baseUrl + pathUrl + parent.path + fileName;\n }\n imgUrl = imgUrl + '&time=' + (new Date().getTime()).toString();\n var eventArgs = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs);\n return eventArgs.imageUrl;\n}\n/* istanbul ignore next */\n/**\n * Gets the full path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} path - specifies the path.\n * @returns {string} - returns the image url.\n * @private\n */\nexport function getFullPath(parent, data, path) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', data) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', data);\n if (!isNOU(fPath)) {\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return path + filePath;\n }\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @returns {string} - returns the name.\n * @private\n */\nexport function getName(parent, data) {\n var name = getValue('name', data);\n var fPath = getValue('filterPath', data);\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) && !isNOU(fPath)) {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(parent.path, '') + name;\n }\n return name;\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object[]} items - specifies the item elements.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var 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 var lists = new DataManager(items).executeLocal(query);\n return getValue('records', lists);\n}\n/**\n * Gets the data object\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} key - specifies the key.\n * @param {string} value - specifies the value.\n * @returns {Object} - returns the sorted data.\n * @private\n */\nexport function getObject(parent, key, value) {\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var result = currFiles.filter(function (data) { return data[key].toString() === value; });\n return result.length > 0 ? result[0] : null;\n}\n/**\n * Creates empty element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLElement} element - specifies the element.\n * @param {ReadArgs | SearchArgs} args - specifies the args.\n * @returns {void}\n * @private\n */\nexport function createEmptyElement(parent, element, args) {\n var top;\n var layoutElement = select('#' + parent.element.id + CLS.LAYOUT_ID, parent.element);\n var addressBarHeight = select('#' + parent.element.id + CLS.BREADCRUMBBAR_ID, layoutElement).offsetHeight;\n top = layoutElement.offsetHeight - addressBarHeight;\n if (parent.view === 'Details') {\n top = top - select('.' + CLS.GRID_HEADER, layoutElement).offsetHeight;\n }\n if (isNOU(element.querySelector('.' + CLS.EMPTY))) {\n var emptyDiv = createElement('div', { className: CLS.EMPTY });\n var emptyFolder = createElement('div', { className: CLS.LARGE_EMPTY_FOLDER });\n var emptyEle = createElement('div', { className: CLS.EMPTY_CONTENT });\n var dragFile = createElement('div', { className: CLS.EMPTY_INNER_CONTENT });\n if (parent.view === 'Details') {\n element.querySelector('.' + CLS.GRID_VIEW).appendChild(emptyDiv);\n }\n else {\n element.appendChild(emptyDiv);\n }\n emptyDiv.appendChild(emptyFolder);\n emptyDiv.appendChild(emptyEle);\n emptyDiv.appendChild(dragFile);\n }\n if (element.querySelector('.' + CLS.EMPTY)) {\n if (!isNOU(args.error)) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Access-Denied');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Access-Details');\n }\n else if (parent.isFiltered) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Key');\n }\n else if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Search-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Search-Key');\n }\n else {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Folder-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'File-Upload');\n }\n }\n var eDiv = select('.' + CLS.EMPTY, element);\n top = (top - eDiv.offsetHeight) / 2;\n eDiv.style.marginTop = top + 'px';\n}\n/**\n * Gets the directories\n *\n * @param {Object[]} files - specifies the file object.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\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 var dirs = getDirectories(result.files);\n for (var i = 0, len = dirs.length; i < len; i++) {\n setValue('_fm_id', rootId + '_' + i, dirs[i]);\n }\n}\n/**\n * set the date object\n *\n * @param {Object[]} args - specifies the file object.\n * @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 (var i = 0; i < args.length; i++) {\n var createdDate = new Date(getValue('dateCreated', args[i]));\n var modifiedDate = new Date(getValue('dateModified', args[i]));\n if (isNOU(dateFormat)) {\n dateFormat = 'MM/dd/yyyy';\n }\n setValue('_fm_created', localeString.formatDate(createdDate, { format: dateFormat }), args[i]);\n setValue('_fm_modified', localeString.formatDate(modifiedDate, { format: dateFormat }), args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nexport function getLocaleText(parent, text) {\n var locale = parent.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n}\n/**\n * get the CSS class\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} css - specifies the css.\n * @returns {string} - returns the css classes.\n * @private\n */\nexport function getCssClass(parent, css) {\n var cssClass = parent.cssClass;\n cssClass = (isNOU(cssClass) || cssClass === '') ? css : (cssClass + ' ' + css);\n return cssClass;\n}\n/**\n * sort on click\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {MenuEventArgs} args - specifies the menu event arguements.\n * @returns {void}\n * @private\n */\nexport function sortbyClickHandler(parent, args) {\n var tick;\n parent.isSortByClicked = true;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id, parent);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(events.sortColumn, { module: 'detailsview' });\n parent.isSortByClicked = false;\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(events.sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @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 var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n var column;\n if (parent) {\n column = parent.detailsViewSettings.columns;\n }\n switch (text) {\n case 'date':\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[i].field === 'dateModified' || column[i].field === 'dateCreated') {\n field = column[i].field;\n break;\n }\n else {\n field = '_fm_modified';\n }\n }\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function setNextPath(parent, path) {\n var currfolders = path.split('/');\n var folders = parent.originalPath.split('/');\n var root = getValue(parent.pathId[0], parent.feParent);\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n for (var i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n var eventName = (folders[i + 1] === '') ? events.finalizeEnd : events.initialEnd;\n var newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n var data = getObject(parent, key, folders[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(data)) {\n var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n parent.pathId.push(id);\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n }\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 var root = getValue(parent.pathId[0], parent.feParent);\n var isRoot = getValue('_fm_id', parent.itemData[0]) === 'fe_tree';\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n var searchData = getObject(parent, key, 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 var id = getValue('_fm_id', searchData);\n parent.setProperties({ path: parent.originalPath }, true);\n parent.pathId.push(id);\n parent.itemData = [searchData];\n parent.pathNames.push(getValue('name', searchData));\n }\n read(parent, (parent.path !== parent.originalPath) ? events.initialEnd : events.finalizeEnd, parent.path);\n}\n/**\n * Paste handling function\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function pasteHandler(parent) {\n parent.isDragDrop = false;\n if (parent.selectedNodes.length !== 0 && parent.enablePaste) {\n var path = (parent.folderPath === '') ? parent.path : parent.folderPath;\n if (parent.activeModule === 'navigationpane' && !parent.selectedNodes[0].includes('/')) {\n parent.targetPath = getValue('filterPath', parent.actionRecords[0]).replace(/\\\\/g, '/');\n }\n var subFolder = validateSubFolder(parent, parent.actionRecords, path, parent.path);\n if (!subFolder) {\n if ((parent.fileAction === 'move' && parent.targetPath !== path) || parent.fileAction === 'copy') {\n parent.notify(events.pasteInit, {});\n paste(parent, parent.targetPath, parent.selectedNodes, path, parent.fileAction, [], parent.actionRecords);\n }\n else {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n removeBlur(parent);\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n }\n }\n }\n}\n/**\n * Validates the sub folders\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {'{ [key: string]: Object; }[]'} data - specifies the data.\n * @param {string} dropPath - specifies the drop path.\n * @param {string} dragPath - specifies the drag path.\n * @returns {boolean} - returns the validated sub folder.\n * @private\n */\nexport function validateSubFolder(parent, data, dropPath, dragPath) {\n var subFolder = false;\n for (var i = 0; i < data.length; i++) {\n if (!getValue('isFile', data[i])) {\n var tempTarget = getFullPath(parent, data[i], dragPath);\n if (dropPath.indexOf(tempTarget) === 0) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Sub-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n else {\n var name_1 = parent.dragData[i] ? parent.dragData[i].name : null;\n var srcData = isFileSystemData(parent) ? name_1 : parent.dragNodes[i];\n var len = 0;\n if (srcData) {\n len = srcData.lastIndexOf('/');\n }\n var path = '';\n if (len > 0) {\n path = dragPath + srcData.substring(0, len + 1);\n }\n if (path === dropPath) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n }\n return subFolder;\n}\n/**\n * Validates the drop handler\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function dropHandler(parent) {\n parent.isDragDrop = true;\n if (parent.dragData.length !== 0) {\n parent.dragPath = parent.dragPath.replace(/\\\\/g, '/');\n parent.dropPath = parent.dropPath.replace(/\\\\/g, '/');\n var subFolder = validateSubFolder(parent, parent.dragData, parent.dropPath, parent.dragPath);\n if (!subFolder && (parent.dragPath !== parent.dropPath)) {\n parent.itemData = [parent.dropData];\n paste(parent, parent.dragPath, parent.dragNodes, parent.dropPath, 'move', [], parent.dragData);\n parent.notify(events.pasteInit, {});\n }\n }\n}\n/**\n * Gets the parent path\n *\n * @param {string} oldPath - specifies the old path.\n * @returns {string} - returns the parent path.\n * @private\n */\nexport function getParentPath(oldPath) {\n var path = oldPath.split('/');\n var newPath = path[0] + '/';\n for (var i = 1; i < path.length - 2; i++) {\n newPath += path[i] + '/';\n }\n return newPath;\n}\n/**\n * Gets the directory path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {ReadArgs} args - returns the read arguements.\n * @returns {string} - returns the directory path\n * @private\n */\nexport function getDirectoryPath(parent, args) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', args.cwd) + '/';\n var fPath = getValue(parent.hasId && !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 var flag = false;\n for (var count = 0; (count < result.files.length) && !flag; count++) {\n parent.pasteNodes.push(result.files[count][parent.hasId ? 'id' : 'name']);\n if (parent.isDragDrop) {\n parent.droppedObjects.push(result.files[count]);\n }\n }\n parent.duplicateItems = [];\n parent.duplicateRecords = [];\n if (parent.isDragDrop && !parent.isPasteError) {\n parent.isDropEnd = true;\n }\n else {\n parent.isDropEnd = false;\n }\n if (!parent.isDragDrop || (parent.path === parent.dragPath) || (parent.path === parent.dropPath)\n || parent.isSearchDrag) {\n parent.isPathDrag = false;\n read(parent, events.pasteEnd, parent.path);\n }\n else {\n readDropPath(parent);\n }\n parent.trigger('success', { action: operation, result: result });\n}\n/**\n * Reads the drop path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function readDropPath(parent) {\n var pathId = getValue('_fm_id', parent.dropData);\n parent.expandedId = pathId;\n parent.itemData = [parent.dropData];\n if (parent.isPathDrag) {\n parent.notify(events.pathDrag, parent.itemData);\n }\n else {\n if (parent.navigationpaneModule) {\n var node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n if (!node) {\n var liElement = document.querySelector('[data-id = \"' + getValue('id', parent.dropData) + '\"]');\n pathId = liElement.getAttribute('data-uid');\n node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n }\n updatePath(node, parent.dropData, parent);\n }\n read(parent, events.dropPath, parent.dropPath);\n }\n}\n/**\n * Gets the duplicated path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} name - specifies the name.\n * @returns {object} - returns the duplicated path.\n * @private\n */\nexport function getDuplicateData(parent, name) {\n var data = null;\n var records = parent.isDragDrop ? parent.dragData : parent.actionRecords;\n for (var i = 0; i < records.length; i++) {\n if (getValue('name', records[i]) === name) {\n data = records[i];\n break;\n }\n }\n return data;\n}\n/**\n * Gets the create the virtual drag element\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createVirtualDragElement(parent) {\n parent.isSearchDrag = false;\n if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n parent.isSearchDrag = true;\n }\n if (parent.activeModule !== 'navigationpane') {\n parent.dragNodes = [];\n var i = 0;\n while (i < parent.selectedItems.length) {\n parent.dragNodes.push(parent.selectedItems[i]);\n i++;\n }\n if (parent.selectedItems.length === 0 && parent.dragData && parent.dragData.length === 1) {\n parent.dragNodes.push(getItemName(parent, parent.dragData[0]));\n }\n }\n var cloneIcon = parent.createElement('div', {\n className: 'e-fe-icon ' + fileType(parent.dragData[0])\n });\n var cloneName = parent.createElement('div', {\n className: 'e-fe-name',\n innerHTML: parent.dragData[0].name\n });\n var virtualEle = parent.createElement('div', {\n className: 'e-fe-content'\n });\n virtualEle.appendChild(cloneIcon);\n virtualEle.appendChild(cloneName);\n var ele = parent.createElement('div', {\n className: CLS.CLONE\n });\n ele.appendChild(virtualEle);\n if (parent.dragNodes.length > 1) {\n var badge = parent.createElement('span', {\n className: 'e-fe-count',\n innerHTML: (parent.dragNodes.length).toString(10)\n });\n ele.appendChild(badge);\n }\n parent.virtualDragElement = ele;\n parent.element.appendChild(parent.virtualDragElement);\n}\n/**\n * Drops the stop handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStopHandler(parent, args) {\n var dragArgs = args;\n dragArgs.cancel = false;\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeDropTarget(parent);\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n removeBlur(parent);\n parent.uploadObj.dropArea = select('#' + parent.element.id + CLS.CONTENT_ID, parent.element);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n getTargetModule(parent, args.target);\n parent.notify(events.dropInit, args);\n removeBlur(parent, 'hover');\n dragArgs.fileDetails = parent.dragData;\n parent.trigger('fileDragStop', dragArgs, function (dragArgs) {\n if (!dragArgs.cancel && !isNOU(parent.targetModule) && parent.targetModule !== '' && parent.dragCount > 2) {\n dropHandler(parent);\n }\n parent.dragCount = 0;\n });\n}\n/**\n * Drag the start handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {'DragEventArgs'} args - specifies the drag event arguements.\n * @param {Draggable} dragObj - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStartHandler(parent, args, dragObj) {\n var dragArgs = args;\n dragArgs.cancel = false;\n dragArgs.fileDetails = parent.dragData;\n parent.dragCount = 0;\n parent.droppedObjects = [];\n if (!parent.allowDragAndDrop || ((parent.activeModule === 'navigationpane') &&\n (closest(args.element, 'li').getAttribute('data-uid') === parent.pathId[0]))) {\n dragArgs.cancel = true;\n }\n if ((parent.activeModule === 'navigationpane') &&\n (parent.pathId.indexOf(closest(args.element, 'li').getAttribute('data-uid')) !== -1)) {\n parent.isPathDrag = true;\n }\n else {\n parent.isPathDrag = false;\n }\n removeBlur(parent);\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else if (!dragArgs.cancel) {\n var i = 0;\n while (i < parent.activeElements.length) {\n addBlur(parent.activeElements[i]);\n i++;\n }\n parent.trigger('fileDragStart', dragArgs, function (dragArgs) {\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else {\n parent.uploadObj.dropArea = null;\n }\n });\n }\n}\n/**\n * Drag the cancel handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function dragCancel(parent) {\n removeBlur(parent);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n}\n/**\n * Remove drop target handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function removeDropTarget(parent) {\n removeItemClass(parent, CLS.DROP_FOLDER);\n removeItemClass(parent, CLS.DROP_FILE);\n}\n/**\n * Remove item class handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} value - specifies the value.\n * @returns {void}\n * @private\n */\nexport function removeItemClass(parent, value) {\n var ele = parent.element.querySelectorAll('.' + value);\n for (var i = 0; i < ele.length; i++) {\n ele[i].classList.remove(value);\n }\n}\n/**\n * Remove item class handler\n *\n * @param {Element} scrollParent - specifies the scrolling target.\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} nodeClass - specifies the node class.\n * @param {number} 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, clientY) {\n var position;\n var elementData = scrollParent.getBoundingClientRect();\n var node = select('.' + nodeClass, scrollParent);\n if ((clientY >= (elementData.top + scrollParent.clientHeight - 30)) && !isNullOrUndefined(node)) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, position);\n }\n if (!isNullOrUndefined(node) && (clientY <= (elementData.top + 30))) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, -position);\n }\n}\n/**\n * Dragging handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nexport function draggingHandler(parent, args) {\n var dragArgs = args;\n dragArgs.fileDetails = parent.dragData;\n var canDrop = false;\n getTargetModule(parent, args.target);\n removeDropTarget(parent);\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeBlur(parent, 'hover');\n var node = null;\n var scrollParent;\n if (parent.targetModule === 'navigationpane') {\n node = closest(args.target, 'li');\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n canDrop = true;\n /* istanbul ignore next */\n parent.treeExpandTimer = window.setTimeout(function () { parent.notify(events.dragging, args); }, 800);\n scrollParent = parent.navigationpaneModule.treeObj.element.parentElement;\n scrollHandler(scrollParent, parent, 'e-level-2', args.event.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.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.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 var str = '';\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] !== 'message') {\n str += (i === 0 ? '' : ', ') + keys[i] + ': ' + getValue(keys[i], data);\n }\n }\n return str;\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {string} returns the item name.\n * @private\n */\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 var items = parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(parent, items[i], events.permissionDownload);\n return;\n }\n }\n if (parent.selectedItems.length > 0) {\n Download(parent, parent.path, parent.selectedItems);\n }\n}\n/**\n * Delete Files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\nexport function doDeleteFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionEdit);\n return;\n }\n }\n parent.itemData = data;\n Delete(parent, newIds, parent.path, 'delete');\n}\n/* istanbul ignore next */\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\nexport function doDownloadFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasDownloadAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionDownload);\n return;\n }\n }\n parent.itemData = data;\n if (newIds.length > 0) {\n Download(parent, parent.path, newIds);\n }\n}\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @param {string} action - specifies the actions.\n * @returns {void}\n * @private\n */\nexport function createDeniedDialog(parent, data, action) {\n var message = getValue('message', getValue('permission', data));\n if (message === '') {\n message = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', data)).replace('{1}', action);\n }\n var response = {\n error: {\n code: '401',\n fileExists: null,\n message: message\n }\n };\n createDialog(parent, 'Error', response);\n}\n/**\n * Get Access Classes\n *\n * @param {Object} data - specifies the data.\n * @returns {string} - returns accesses classes.\n * @private\n */\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 var permission = getValue('permission', data);\n return (permission && !getValue('read', permission)) ? false : true;\n}\n/**\n * Check edit access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns edit access.\n * @private\n */\nexport function hasEditAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('write', permission))) : true;\n}\n/**\n * Check content access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns content access.\n * @private\n */\nexport function hasContentAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('writeContents', permission))) : true;\n}\n/**\n * Check upload access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns upload access.\n * @private\n */\nexport function hasUploadAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('upload', permission))) : true;\n}\n/**\n * Check download access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns download access.\n * @private\n */\nexport function hasDownloadAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('download', permission))) : true;\n}\n/**\n * Create new folder handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createNewFolder(parent) {\n var details = parent.itemData[0];\n if (!hasContentAccess(details)) {\n createDeniedDialog(parent, details, events.permissionEditContents);\n }\n else {\n createDialog(parent, 'NewFolder');\n }\n}\n/**\n * Upload item handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function uploadItem(parent) {\n var details = parent.itemData[0];\n if (!hasUploadAccess(details)) {\n createDeniedDialog(parent, details, events.permissionUpload);\n }\n else {\n var eleId = '#' + parent.element.id + CLS.UPLOAD_ID;\n var uploadEle = document.querySelector(eleId);\n uploadEle.click();\n }\n}\n/**\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 var accessMessage = '';\n for (var i = 0; i < itemData.length; i++) {\n var 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 var 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 var itemData = parent.itemData;\n for (var i = 0; i < itemData.length; i++) {\n if (isNOU(getValue('hasChild', itemData[i]))) {\n setValue('hasChild', false, itemData[i]);\n }\n }\n var data = { action: 'read', path: path, showHiddenItems: parent.showHiddenItems, data: itemData };\n createAjax(parent, data, readSuccess, event);\n}\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nexport function createFolder(parent, itemName) {\n var data = { action: 'create', path: parent.path, name: itemName, data: parent.itemData };\n createAjax(parent, data, createSuccess, itemName);\n}\n/**\n * Function to filter the files in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nexport function filter(parent, event) {\n var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n var filterData;\n var filterDataVal = parent.filterData ? extend(filterData, data, parent.filterData) : data;\n createAjax(parent, filterDataVal, filterSuccess, event, getValue('action', filterDataVal));\n}\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string} itemNewName - specifies the item's new name.\n * @returns {void}\n * @private\n */\nexport function rename(parent, path, itemNewName) {\n var name;\n var newName;\n if (parent.breadcrumbbarModule.searchObj.element.value === '' && !parent.isFiltered) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n var fPath = parent.filterPath;\n if (parent.hasId) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(path, '') + parent.currentItemText;\n newName = fPath.replace(path, '') + itemNewName;\n }\n }\n var data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData, showFileExtension: parent.showFileExtension\n };\n createAjax(parent, data, renameSuccess, path);\n}\n/**\n * Function to paste file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} names - specifies the names.\n * @param {string} targetPath - specifies the target path.\n * @param {string} pasteOperation - specifies the paste operation.\n * @param {string[]} renameItems - specifies the rename items.\n * @param {Object[]} actionRecords - specifies the action records.\n * @returns {void}\n * @private\n */\nexport function paste(parent, path, names, targetPath, pasteOperation, renameItems, actionRecords) {\n var data = {\n action: pasteOperation, path: path, targetData: parent.itemData[0],\n targetPath: targetPath, names: names, renameFiles: renameItems, data: actionRecords\n };\n parent.destinationPath = targetPath;\n createAjax(parent, data, pasteSuccess, path, pasteOperation, targetPath);\n}\n/**\n * Function to delete file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} items - specifies the items.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nexport function Delete(parent, items, path, operation) {\n var data = { action: operation, path: path, names: items, data: parent.itemData };\n createAjax(parent, data, deleteSuccess, path);\n}\n/* istanbul ignore next */\n/**\n * Function to get details of file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} names - specifies the names.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation data.\n * @returns {void}\n * @private\n */\nexport function GetDetails(parent, names, path, operation) {\n var 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 var columns = parent.detailsViewSettings.columns;\n var dateFormat;\n if (!columns) {\n return null;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === '_fm_modified') {\n if (!isNOU(columns[i].format)) {\n dateFormat = columns[i].format.toString();\n }\n break;\n }\n }\n return dateFormat;\n}\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 var 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 var isExists = fileSystemData.some(function (item) { return 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 var index = parent.fileSystemData.findIndex(function (item) { return 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 var data = parent.fileSystemData.filter(function (item) { return 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 var data = parent.fileSystemData.filter(function (item) { return 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 var newItem = {};\n //Construct the new folder details.\n for (var key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newItem[key] = null;\n }\n }\n var currentDate = new Date();\n var 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 var 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 var data_1 = args.parentFolder[0];\n var newObject = createNewItem(data_1, data_1, args.folderName, false);\n parent.fileSystemData.push(newObject);\n }\n else {\n var 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 var 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(function (itemData) {\n var index = findIndexById(parent, itemData.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n if (!itemData.isFile) {\n var subItems = parent.fileSystemData.filter(function (obj) { return obj.filterPath.includes(itemData.name); });\n subItems.forEach(function (subItem) {\n var 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 var 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 var fileData = filterById(parent, args.itemData[0].id);\n fileData.name = args.newName;\n }\n else {\n var 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 var 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 var message = 'File Already Exists';\n var action = getValue('action', data);\n var itemPermission = getAccessDetails(parent, args.itemData, action, false);\n var pathPermission = getAccessDetails(parent, [args.targetData], action, true);\n var file_1 = [];\n parent.pasteNodes = [];\n if (itemPermission === '' && pathPermission === '') {\n if (args.isCopy) {\n var folderSubItems_1 = filterByParent(parent, args.targetData.id);\n var copiedFolders = args.itemData;\n copiedFolders.forEach(function (itemData) {\n if (!isFileExists(folderSubItems_1, itemData.name) || getValue('renameFiles', data).length > 0) {\n if (getValue('renameFiles', data).length > 0) {\n var names = itemData.name.split('.');\n var name_1 = itemData.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n copyFolderItems(parent, itemData, args.targetData, name_1);\n parent.responseData.error = null;\n parent.existingFileCount++;\n return;\n }\n copyFolderItems(parent, itemData, args.targetData, null);\n }\n else {\n file_1.push(itemData.name);\n }\n });\n if (file_1.length > 0) {\n createErrorObject(parent, message, '400', file_1);\n }\n return;\n }\n var target = args.targetData;\n var getTargetFiles = filterByParent(parent, target.id);\n for (var i = 0; i < args.itemData.length; i++) {\n var 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 var subItems = currItem.parentId !== 0\n ? filterByParent(parent, currItem.parentID) : [];\n var itemData = filterById(parent, currItem.parentId);\n itemData.hasChild = subItems.length > 1 ? true : false;\n }\n var fileData = filterById(parent, currItem.id);\n if (getValue('renameFiles', data).length > 0) {\n var 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 var 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_1.push(currItem.name);\n }\n }\n if (file_1.length > 0) {\n createErrorObject(parent, message, '400', file_1);\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 var 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 setValue('data', args.searchResults, data);\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 var ajaxSettings = {\n url: parent.ajaxSettings.url,\n type: 'POST',\n mode: true,\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };\n triggerClientEvents(parent, data, eventArgs);\n parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\n if (isFileSystemData(parent)) {\n var filePath = event === 'node-expand' || event === 'finalize-end' ? getValue('path', data) : parent.path;\n var pathArray = filePath.replace(/^\\/|\\/$/g, '').split('/');\n var 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 var action = getValue('action', data);\n var isFileOperation = (action === 'move' || action === 'rename' || action === 'copy' || action === 'delete' || action === 'search') && event !== 'rename-end';\n if (action === 'read' || action === 'create' || event === 'rename-end') {\n var rootId = parent.fileSystemData\n .filter(function (item) { return isNOU(item.parentId); })\n .length > 0\n ? parent.fileSystemData\n .filter(function (item) { return isNOU(item.parentId); })[0].id\n : 0;\n parent.responseData = {\n cwd: filterById(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue),\n details: null,\n error: null,\n files: filterByParent(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue)\n };\n if (isNOU(parent.responseData.cwd)) {\n var 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 var itemData = action === 'search' || action === 'delete' ? getValue('data', data) : [];\n if (itemData.length === 0) {\n itemData = getValue('data', data).map(function (item) { return 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 var itemData = getValue('data', data);\n var details = itemData[0];\n var isMultipleFiles = itemData.length > 1;\n var itemNames = itemData.map(function (item) { return item.name; });\n var totalSize = isMultipleFiles ? getSize(itemData.reduce(function (accumulator, currentObject) { return accumulator + (currentObject.size || 0); }, 0)) : getSize(details.size);\n var 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 var ajax = new Ajax({\n url: getValue('url', beforeSendArgs.ajaxSettings),\n type: getValue('type', beforeSendArgs.ajaxSettings),\n mode: getValue('mode', beforeSendArgs.ajaxSettings),\n dataType: getValue('dataType', beforeSendArgs.ajaxSettings),\n contentType: getValue('contentType', beforeSendArgs.ajaxSettings),\n data: getValue('data', beforeSendArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', beforeSendArgs.ajaxSettings),\n onSuccess: function (result) {\n if (isNOU(result)) {\n var result_1 = {\n error: {\n fileExists: null,\n message: getLocaleText(parent, 'Server-Error') + ' ' + parent.ajaxSettings.url,\n code: '406'\n },\n files: null\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result_1, event, operation, targetPath);\n return;\n }\n if (typeof (result) === 'string') {\n result = JSON.parse(result);\n }\n performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs);\n },\n onFailure: function () {\n var result = {\n files: null,\n error: {\n code: '404',\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.url,\n fileExists: null\n }\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath);\n }\n });\n ajax.send();\n }\n });\n}\n/**\n * Function 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 var 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 var id = parent.expandedId ? parent.expandedId : parent.pathId[parent.pathId.length - 1];\n if (!isNOU(result.cwd) && (getValue('action', data) === 'read')) {\n result.cwd.name = (parent.pathId.length === 1) ? (parent.rootAliasName || result.cwd.name) : result.cwd.name;\n setValue('_fm_id', id, result.cwd);\n setValue(id, result.cwd, parent.feParent);\n if (!isNOU(result.files) || result.error.code === '401') {\n if ((event === 'finalize-end' || event === 'initial-end') && parent.pathNames.length === 0) {\n var root = getValue(parent.pathId[0], parent.feParent);\n parent.pathNames[0] = getValue('name', root);\n parent.hasId = !isNOU(getValue('id', root));\n }\n if (event === 'finalize-end') {\n generatePath(parent);\n }\n }\n }\n var intl = new Internationalization(parent.locale);\n if (!isNOU(result.files)) {\n setDateObject(result.files, intl, getDateFormat(parent));\n for (var i = 0, len = result.files.length; i < len; i++) {\n var 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 var rootName = parent.rootAliasName || getValue('name', result.details);\n var location_1 = getValue('location', result.details).replace(new RegExp('/', 'g'), '\\\\');\n if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {\n if (getValue('names', data).length === 0) {\n setValue('name', rootName, result.details);\n location_1 = rootName;\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n setValue('location', location_1, result.details);\n }\n fn(parent, result, event, operation, targetPath);\n if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end' || event === 'drop-path')) {\n parent.notify(events.searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\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 var newObject = createNewItem(data, target, itemName, true);\n parent.fileSystemData.push(newObject);\n parent.pasteNodes.push(newObject.id);\n var copiedItems = filterByParent(parent, data.id);\n for (var 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 try {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n var args = { action: 'read', result: result };\n parent.trigger('success', args);\n }\n else {\n if (!isNOU(result.error) && 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 }\n catch (error) {\n handleCatchError(parent, error, 'read');\n parent.setProperties({ path: parent.oldPath }, true);\n parent.pathNames.pop();\n }\n if (parent.isDragDrop && parent.isDropEnd) {\n if (parent.droppedObjects.length !== 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n }\n parent.isDropEnd = parent.isDragDrop = false;\n }\n}\n/**\n * Function for filter success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction filterSuccess(parent, result, event, action) {\n try {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: action, result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, action);\n }\n }\n catch (error) {\n handleCatchError(parent, error, 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 try {\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 var createEventArgs = {\n folderName: itemName,\n path: parent.path,\n parentFolder: parent.itemData\n };\n parent.trigger('folderCreate', createEventArgs);\n var args = { action: 'create', result: result };\n parent.trigger('success', args);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.createEnd, parent.path);\n }\n else {\n if (result.error.code === '400') {\n if (parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#newname', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n else {\n var result_2 = {\n files: null,\n error: {\n code: '400',\n message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + itemName + '\"'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result_2);\n }\n var args = { action: 'create', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'create');\n }\n }\n }\n catch (error) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n handleCatchError(parent, error, 'create');\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 try {\n if (!isNOU(result.files)) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n var args = { action: 'rename', result: result };\n parent.trigger('success', args);\n parent.renamedItem = Array.isArray(result.files) ? result.files[0] : result.files;\n var 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 var ele = select('#rename', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '\"' + parent.currentItemText + '\"');\n error = error.replace('{1}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n var args = { action: 'rename', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'rename');\n }\n }\n }\n catch (error) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n handleCatchError(parent, error, 'rename');\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 try {\n var 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 catch (error) {\n handleCatchError(parent, error, 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 try {\n var 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 var args = { action: 'delete', result: result };\n parent.trigger('success', args);\n }\n }\n else {\n onFailure(parent, result, 'delete');\n }\n }\n catch (error) {\n handleCatchError(parent, error, '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 try {\n if (!isNOU(result.details)) {\n createDialog(parent, operation, null, result.details);\n var args = { action: 'details', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'details');\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'details');\n }\n}\n/**\n * Function for on failure event in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction onFailure(parent, result, action) {\n createDialog(parent, 'Error', result);\n var args = { action: action, error: result.error };\n parent.trigger('failure', args);\n}\n/**\n * Function for search in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @param {string} searchString - specifies the search string.\n * @param {boolean} showHiddenItems - specifies the hidden items.\n * @param {boolean} caseSensitive - specifies the casing of search text.\n * @returns {void}\n * @private\n */\nexport function Search(parent, event, path, searchString, showHiddenItems, caseSensitive) {\n var data = {\n action: 'search', path: path, searchString: searchString, showHiddenItems: showHiddenItems, caseSensitive: caseSensitive,\n data: parent.itemData\n };\n createAjax(parent, data, searchSuccess, event);\n}\n/* istanbul ignore next */\n/**\n * Function for search success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction searchSuccess(parent, result, event) {\n try {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: 'search', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'search');\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'search');\n }\n}\n/* istanbul ignore next */\n/**\n * Function for download in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} items - specifies the items.\n * @returns {void}\n * @private\n */\nexport function Download(parent, path, items) {\n var downloadUrl = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;\n var data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n var 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 var eventArgs = { data: data, cancel: false, useFormPost: true, ajaxSettings: ajaxSettings };\n parent.trigger('beforeDownload', eventArgs, function (downloadArgs) {\n if (!downloadArgs.cancel) {\n if (downloadArgs.useFormPost) {\n var form = createElement('form', {\n id: parent.element.id + '_downloadForm',\n attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }\n });\n var input = createElement('input', {\n id: parent.element.id + '_hiddenForm',\n attrs: { name: 'downloadInput', value: JSON.stringify(downloadArgs.data), type: 'hidden' }\n });\n form.appendChild(input);\n parent.element.appendChild(form);\n document.forms.namedItem('downloadForm').submit();\n parent.element.removeChild(form);\n }\n else {\n try {\n var contentDisposition_1;\n var fileName_1;\n var fetch_1 = 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: function (e) {\n contentDisposition_1 = e.headers.get('Content-Disposition');\n if (contentDisposition_1) {\n var filenameMatch = contentDisposition_1.match(/filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/);\n var extractedFilename = filenameMatch && filenameMatch[1];\n fileName_1 = extractedFilename ? extractedFilename.replace(/['\"]/g, '') : fileName_1;\n }\n else {\n fileName_1 = 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: function (e) {\n parent.trigger('success', downloadArgs);\n var blob = e;\n var blobUrl = URL.createObjectURL(blob);\n var link = document.createElement('a');\n link.href = blobUrl;\n link.download = fileName_1;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n },\n onFailure: function (e) {\n var 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_1.send(JSON.stringify(downloadArgs.data));\n }\n catch (error) {\n handleCatchError(parent, error, 'download');\n }\n }\n }\n });\n}\n/**\n * Function for on catch handler in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {any} error - specifies the catch error.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction handleCatchError(parent, error, action) {\n var errorResult = {\n files: null,\n error: {\n message: error.message,\n fileExists: null\n }\n };\n onFailure(parent, errorResult, action);\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 var 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: function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n },\n header: options.header,\n content: options.content,\n buttons: options.buttons,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n allowDragging: true,\n isModal: true,\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n width: '350px',\n open: options.open,\n close: options.close,\n enableRtl: parent.enableRtl,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.dialogObj.isStringTemplate = true;\n parent.dialogObj.appendTo('#' + parent.element.id + CLS.DIALOG_ID);\n }\n else {\n changeOptions(parent, options);\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {void}\n * @private\n */\nexport function createExtDialog(parent, text, replaceItems, newPath) {\n var extOptions = getExtOptions(parent, text, replaceItems, newPath);\n parent.isApplySame = false;\n if (isNOU(parent.extDialogObj)) {\n parent.extDialogObj = new Dialog({\n beforeOpen: beforeExtOpen.bind(this, parent, extOptions.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n },\n content: extOptions.content,\n header: extOptions.header,\n closeOnEscape: true,\n allowDragging: true,\n animationSettings: { effect: 'None' },\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n enableRtl: parent.enableRtl,\n showCloseIcon: true,\n isModal: true,\n width: 350,\n buttons: extOptions.buttons,\n open: extOptions.open,\n close: extOptions.close,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.extDialogObj.isStringTemplate = true;\n parent.extDialogObj.appendTo('#' + parent.element.id + CLS.EXTN_DIALOG_ID);\n }\n else {\n parent.extDialogObj.header = extOptions.header;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.open = extOptions.open;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.content = extOptions.content;\n parent.extDialogObj.buttons = extOptions.buttons;\n parent.extDialogObj.enableRtl = parent.enableRtl;\n parent.extDialogObj.locale = parent.locale;\n parent.extDialogObj.beforeOpen = beforeExtOpen.bind(this, parent, extOptions.dialogName);\n parent.extDialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n };\n parent.extDialogObj.dataBind();\n parent.extDialogObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {Dialog} dlgModule - Specifies the dialog module.\n * @param {BeforeOpenEventArgs} args - specifies the before open arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeOpen(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupName: dialogName, popupModule: dlgModule\n };\n parent.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {BeforeCloseEventArgs} args - specifies the before close event arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeClose(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupModule: dlgModule, popupName: dialogName\n };\n parent.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n if (!args.cancel && args.isInteracted && ((dialogName === 'Rename') || (dialogName === 'Create Folder'))) {\n parent.trigger(events.actionFailure, {});\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupOpen(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupOpen', args);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupClose(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupClose', args);\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {DialogOptions} - returns the dialog options.\n * @private\n */\nfunction getExtOptions(parent, text, replaceItems, newPath) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var duplicateContent;\n var item;\n var index;\n options.open = function () { triggerPopupOpen(parent, parent.extDialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.extDialogObj, options.dialogName); };\n switch (text) {\n case 'Extension':\n options.header = getLocaleText(parent, 'Header-Rename-Confirmation');\n options.content = '<div>' + getLocaleText(parent, 'Content-Rename-Confirmation') + '</div>';\n options.buttons = [{\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.extDialogObj.hide();\n rename(parent, newPath, parent.renameText);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.extDialogObj.hide();\n parent.dialogObj.hide();\n }\n }];\n options.dialogName = 'Extension Change';\n break;\n case 'DuplicateItems':\n options.dialogName = 'Duplicate Items';\n parent.replaceItems = replaceItems;\n item = parent.replaceItems[parent.fileLength];\n index = item.lastIndexOf('/');\n item = index === -1 ? item : item.substring(index);\n options.header = getLocaleText(parent, 'Header-Duplicate');\n duplicateContent = '<div>' + getLocaleText(parent, 'Content-Duplicate') + '</div>';\n options.content = (duplicateContent).replace('{0}', item);\n options.close = function () {\n if (!parent.isDropEnd && parent.duplicateItems.length === 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n parent.isDropEnd = parent.isDragDrop = false;\n }\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.duplicateItems.push(parent.replaceItems[parent.fileLength]);\n parent.duplicateRecords.push(getDuplicateData(parent, parent.replaceItems[parent.fileLength]));\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_1 = parent.replaceItems[parent.fileLength];\n var indexval = item_1.lastIndexOf('/');\n item_1 = indexval === -1 ? item_1 : item_1.substring(indexval);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_1);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_2 = parent.replaceItems[parent.fileLength];\n var ind = item_2.lastIndexOf('/');\n item_2 = ind === -1 ? item_2 : item_2.substring(ind);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_2);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n if (parent.duplicateItems.length !== 0) {\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n }\n }\n ];\n break;\n case 'UploadRetry':\n options.dialogName = 'Retry Upload';\n options.header = getLocaleText(parent, 'Header-Retry');\n options.content = parent.retryFiles[0].name + '<div class=\"e-fe-retrycontent\">' +\n (getLocaleText(parent, 'Content-Retry')) + '</div>';\n options.open = onRetryOpen.bind(this, parent);\n options.close = function () {\n parent.isRetryOpened = false;\n retryDlgClose(parent);\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Keep-Both') },\n click: function () {\n retryDlgUpdate(parent, true);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Replace') },\n click: function () {\n retryDlgUpdate(parent, false);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Skip') },\n click: function () {\n var count = 0;\n if (parent.isApplySame) {\n count = parent.retryFiles.length;\n parent.retryFiles = [];\n retryDlgClose(parent);\n }\n else {\n count = 1;\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n parent.notify(events.skipUpload, { count: count });\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {boolean} isKeepBoth - checks the arguement to keep both.\n * @returns {void}\n * @private\n */\nfunction retryDlgUpdate(parent, isKeepBoth) {\n if (parent.isApplySame) {\n if (isKeepBoth) {\n onKeepBothAll(parent);\n }\n else {\n onReplaceAll(parent);\n }\n retryDlgClose(parent);\n }\n else {\n parent.retryArgs.push({\n action: isKeepBoth ? 'keepboth' : 'replace',\n file: parent.retryFiles[0]\n });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction retryDlgClose(parent) {\n var flag = true;\n if (parent.isRetryOpened) {\n parent.isRetryOpened = false;\n }\n else {\n flag = false;\n }\n var ele = select('.e-dlg-checkbox', parent.extDialogObj.element);\n if (ele) {\n remove(ele);\n }\n if (flag) {\n parent.extDialogObj.hide();\n }\n else {\n parent.retryFiles = [];\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {object} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nfunction onRetryOpen(parent, args) {\n parent.isRetryOpened = true;\n var dialogEle = getValue('element', args);\n var container = select('.e-dlg-content', dialogEle);\n var checkContainer = parent.createElement('div', {\n className: 'e-dlg-checkbox'\n });\n var checkbox = parent.createElement('input', {\n id: parent.element.id + '_applyall'\n });\n checkContainer.appendChild(checkbox);\n container.appendChild(checkContainer);\n var checkBoxObj = new CheckBox({\n label: getLocaleText(parent, 'ApplyAll-Label'),\n change: function (args) {\n parent.isApplySame = args.checked;\n }\n });\n checkBoxObj.appendTo('#' + parent.element.id + '_applyall');\n triggerPopupOpen(parent, parent.extDialogObj, 'Retry Upload');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onKeepBothAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'keepboth', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReplaceAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'replace', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction focusInput(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n ele.focus();\n ele.value = '';\n var len = ele.value.length;\n ele.setSelectionRange(0, len);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onFolderDialogOpen(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n if (!ele.parentElement.classList.contains('e-control-wrapper')) {\n createInput(ele, getLocaleText(parent, 'Content-NewFolder'));\n }\n ele.parentElement.nextElementSibling.innerHTML = '';\n ele.oninput = function () {\n onValidate(parent, ele);\n };\n ele.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onSubmit(parent);\n }\n };\n focusInput(parent);\n triggerPopupOpen(parent, parent.dialogObj, 'Create Folder');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onRenameDialogOpen(parent) {\n var inputEle = select('#rename', parent.dialogObj.element);\n if (!inputEle.parentElement.classList.contains('e-control-wrapper')) {\n createInput(inputEle, getLocaleText(parent, 'Content-Rename'));\n }\n inputEle.parentElement.nextElementSibling.innerHTML = '';\n inputEle.oninput = function () {\n onValidate(parent, inputEle);\n };\n inputEle.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onReSubmit(parent);\n }\n };\n onFocusRenameInput(parent, inputEle);\n triggerPopupOpen(parent, parent.dialogObj, 'Rename');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} inputEle - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onFocusRenameInput(parent, inputEle) {\n inputEle.focus();\n var txt = '';\n if (parent.isFile && !parent.showFileExtension) {\n var index = parent.currentItemText.lastIndexOf('.');\n txt = (index === -1) ? parent.currentItemText : parent.currentItemText.substring(0, index);\n }\n else {\n txt = parent.currentItemText;\n }\n inputEle.value = txt;\n if (parent.isFile && parent.showFileExtension && (inputEle.value.indexOf('.') !== -1)) {\n inputEle.setSelectionRange(0, inputEle.value.lastIndexOf('.'));\n }\n else {\n inputEle.setSelectionRange(0, inputEle.value.length);\n }\n}\n/**\n *\n * @param {HTMLInputElement} ele - specifies the element.\n * @param {string} placeholder - specifies the place holder.\n * @returns {void}\n * @private\n */\nfunction createInput(ele, placeholder) {\n Input.createInput({\n element: ele,\n properties: {\n placeholder: placeholder\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the event arguements.\n * @param {FileDetails} details - specifies the file details.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var permission;\n var formattedString;\n var intl;\n var strArr;\n var fileType;\n var location;\n options.open = function () { triggerPopupOpen(parent, parent.dialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.dialogObj, options.dialogName); };\n text = (details && details.multipleFiles === true) ? 'MultipleFileDetails' : text;\n var 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: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onSubmit(parent);\n }\n }\n ];\n options.open = onFolderDialogOpen.bind(this, parent);\n break;\n case 'Delete':\n options.dialogName = 'Delete';\n if (parent.selectedItems.length > 1) {\n options.content = ('<div>' + getLocaleText(parent, 'Content-Multiple-Delete') + '</div>')\n .replace('{0}', parent.selectedItems.length.toString());\n options.header = getLocaleText(parent, 'Header-Multiple-Delete');\n }\n else {\n options.content = '<div>' + getLocaleText(parent, parent.isFile ? 'Content-Delete' : 'Content-Folder-Delete') + '</div>';\n options.header = getLocaleText(parent, parent.isFile ? 'Header-Delete' : 'Header-Folder-Delete');\n }\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n onDeleteSubmit(parent);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Rename':\n options.dialogName = 'Rename';\n options.header = getLocaleText(parent, 'Header-Rename');\n options.content = '<input type=\"text\" class=\"e-input\" id=\"rename\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Save') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onReSubmit(parent);\n }\n }\n ];\n options.open = onRenameDialogOpen.bind(this, parent);\n break;\n case 'details':\n options.dialogName = 'File Details';\n intl = new Internationalization(parent.locale);\n formattedString = intl.formatDate(new Date(details.modified), { format: 'MMMM dd, yyyy HH:mm:ss' });\n permission = '';\n if (!isNOU(details.permission)) {\n permission = '<tr><td>' + getLocaleText(parent, 'Permission') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + objectToString(details.permission) + '</td></tr>';\n }\n options.header = details.name;\n options.content = '<table>' +\n '<tr><td>' + getLocaleText(parent, 'Type') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n (details.isFile ? 'File' : 'Folder') + '\">' + (details.isFile ? 'File' : 'Folder') + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + '</td><td><span class=\"' + CLS.VALUE + '\" title =\"' +\n details.size + '\">' + details.size + '</span></td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Location') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n details.location + '\">' + details.location + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Modified') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + formattedString + '</td></tr>'\n + permission + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n options.dialogName = 'File Details';\n strArr = parent.itemData.map(function (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(function (val) {\n index = val.indexOf('.') + 1;\n return (index === 0) ? 'Folder' : val.substr(index).replace(' ', '');\n });\n }\n fileType = strArr.every(function (val, i, arr) { return val === arr[0]; }) ?\n ((strArr[0] === 'Folder') ? 'Folder' : strArr[0].toLocaleUpperCase() + ' Type') : 'Multiple Types';\n location = details.location;\n options.header = details.name;\n options.content = '<table><tr><td>' + getLocaleText(parent, 'Type')\n + ':</td><td class=\"' + CLS.VALUE + '\">' + fileType + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + ':</td><td>' +\n details.size + '<span class=\"' + CLS.VALUE + '\" title =\"' + details.size\n + '\"></span></td></tr>' + '<tr><td>' + getLocaleText(parent, 'Location') +\n ':</td><td class=\"' + CLS.VALUE + '\" title=\"' + location + '\">'\n + location + '</td></tr>' + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Error':\n parent.notify(events.actionFailure, {});\n options.dialogName = 'Error';\n if (e.error.code === '401') {\n options.header = '<span class=\"e-fe-icon e-fe-access-error\"></span><div class=\"e-fe-access-header\">' +\n getLocaleText(parent, 'Access-Denied') + '</div>';\n }\n else {\n options.header = getLocaleText(parent, 'Error');\n }\n options.content = '<div class=\"' + CLS.ERROR_CONTENT + '\">' + e.error.message + '</div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dialogName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction keydownAction(parent, dialogName, args) {\n var btnElement = selectAll('.e-btn', parent.dialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.dialogObj, args, dialogName);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dlgName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction beforeExtOpen(parent, dlgName, args) {\n var btnElement = selectAll('.e-btn', parent.extDialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.extDialogObj, args, dlgName);\n}\n/**\n *\n * @param {HTMLInputElement[]} btnElement - specifies the button element.\n * @returns {void}\n * @private\n */\nfunction preventKeydown(btnElement) {\n var _loop_1 = function (btnCount) {\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {DialogOptions} options - specifies the dialog options.\n * @returns {void}\n * @private\n */\nfunction changeOptions(parent, options) {\n parent.dialogObj.header = options.header;\n parent.dialogObj.content = options.content;\n parent.dialogObj.buttons = options.buttons;\n parent.dialogObj.enableRtl = parent.enableRtl;\n parent.dialogObj.open = options.open;\n parent.dialogObj.close = options.close;\n parent.dialogObj.beforeOpen = keydownAction.bind(this, parent, options.dialogName);\n parent.dialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n };\n parent.dialogObj.dataBind();\n parent.dialogObj.show();\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onSubmit(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n createFolder(parent, ele.value);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReSubmit(parent) {\n var ele = select('#rename', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n var text = ele.value;\n var oIndex = parent.currentItemText.lastIndexOf('.');\n if (parent.isFile && !parent.showFileExtension) {\n var extn = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n text += extn;\n }\n parent.renameText = text;\n if (parent.currentItemText === text) {\n parent.dialogObj.hide();\n return;\n }\n var newPath = (parent.activeModule === 'navigationpane') ? getValue('filterPath', parent.itemData[0]).replace(/\\\\/g, '/') : parent.path;\n parent.renamedId = getValue('id', parent.itemData[0]);\n if (parent.isFile) {\n var oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n var nIndex = text.lastIndexOf('.');\n var newExtension = (nIndex === -1) ? '' : text.substr(nIndex);\n if (parent.showFileExtension && oldExtension !== newExtension) {\n createExtDialog(parent, 'Extension', null, newPath);\n }\n else {\n rename(parent, newPath, text);\n }\n }\n else {\n rename(parent, newPath, text);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onDeleteSubmit(parent) {\n parent.dialogObj.hide();\n parent.notify(events.deleteInit, {});\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onValidate(parent, ele) {\n if (/[/\\\\|*?\"<>:]/.test(ele.value)) {\n addInvalid(parent, ele);\n }\n else if (ele.value === '') {\n ele.parentElement.nextElementSibling.innerHTML = getLocaleText(parent, 'Validation-Empty');\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = '';\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onSubmitValidate(parent, ele) {\n onValidate(parent, ele);\n var len = ele.value.length - 1;\n if (ele.value !== '' && ((ele.value.lastIndexOf('.') === len) || (ele.value.lastIndexOf(' ') === len)) &&\n (parent.showFileExtension || (ele.value.lastIndexOf('.') === -1 || ele.value.substring(ele.value.indexOf('.') + 1).length === 0))) {\n addInvalid(parent, ele);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction addInvalid(parent, ele) {\n var error = getLocaleText(parent, 'Validation-Invalid').replace('{0}', '\"' + ele.value + '\"');\n if (parent.enableHtmlSanitizer) {\n ele.parentElement.nextElementSibling.textContent = error;\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n}\n/**\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {number} - returns the key code.\n * @private\n */\nfunction getKeyCode(e) {\n var code;\n if (e.keyCode) {\n code = e.keyCode;\n }\n else if (e.which) {\n code = e.which;\n }\n else {\n code = e.charCode;\n }\n return code;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} header - specifies the header element.\n * @param {string} imageUrl - specifies the image URL.\n * @returns {void}\n * @private\n */\nexport function createImageDialog(parent, header, imageUrl) {\n var content = createElement('div', { className: 'e-image-wrap' });\n var image = createElement('img', { className: 'e-image', attrs: { src: imageUrl, alt: header } });\n content.appendChild(image);\n if (isNOU(parent.viewerObj)) {\n parent.viewerObj = new Dialog({\n header: header,\n content: content,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n isModal: true,\n width: '350px',\n height: '350px',\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: parent.locale,\n enableResize: true,\n allowDragging: true,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n position: { X: 'center', Y: 'center' },\n enableRtl: parent.enableRtl,\n open: openImage.bind(this, parent),\n close: function () { triggerPopupClose(parent, parent.viewerObj, 'Image Preview'); },\n beforeOpen: function (args) {\n triggerPopupBeforeOpen(parent, parent.viewerObj, args, 'Image Preview');\n },\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.viewerObj, args, 'Image Preview');\n },\n resizing: updateImage.bind(this, parent),\n resizeStop: updateImage.bind(this, parent)\n });\n parent.viewerObj.isStringTemplate = true;\n parent.viewerObj.appendTo('#' + parent.element.id + CLS.IMG_DIALOG_ID);\n }\n else {\n parent.viewerObj.refresh();\n parent.viewerObj.header = header;\n parent.viewerObj.content = content;\n parent.viewerObj.enableRtl = parent.enableRtl;\n parent.viewerObj.dataBind();\n parent.viewerObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction openImage(parent) {\n setTimeout(function () {\n if (parent.viewerObj) {\n parent.viewerObj.element.focus();\n }\n });\n updateImage(parent);\n triggerPopupOpen(parent, parent.viewerObj, 'Image Preview');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction updateImage(parent) {\n var content = select('.e-dlg-content', parent.viewerObj.element);\n var imgWrap = select('.e-image-wrap', parent.viewerObj.element);\n var cssObj = window.getComputedStyle(content, null);\n var paddingWidth = cssObj ? (2 * parseFloat(cssObj.paddingRight)) : 36;\n var paddingHeight = cssObj ? (2 * parseFloat(cssObj.paddingBottom)) : 20;\n imgWrap.style.width = (content.offsetWidth - paddingWidth) + 'px';\n imgWrap.style.height = (content.offsetHeight - paddingHeight) + 'px';\n}\n","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 */\nvar LargeIconsView = /** @class */ (function () {\n /**\n * Constructor for the LargeIcons module.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function LargeIconsView(parent) {\n this.isInteraction = true;\n this.uploadOperation = false;\n this.count = 0;\n this.isRendered = true;\n this.tapCount = 0;\n this.isSelectAllCalled = false;\n this.isPasteOperation = false;\n this.isInteracted = true;\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n addClass([this.element], CLS.LARGE_ICONS);\n this.addEventListener();\n this.keyConfigs = {\n end: 'end',\n home: 'home',\n tab: 'tab',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n ctrlUp: 'ctrl+uparrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftLeft: 'shift+leftarrow',\n shiftRight: 'shift+rightarrow',\n shiftUp: 'shift+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csLeft: 'ctrl+shift+leftarrow',\n csRight: 'ctrl+shift+rightarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n f2: 'f2',\n shiftdel: 'shift+delete',\n back: 'backspace',\n ctrlD: 'ctrl+d'\n };\n }\n LargeIconsView.prototype.render = function (args) {\n this.parent.visitedItem = null;\n this.startItem = null;\n showSpinner(this.parent.element);\n if (this.parent.view === 'LargeIcons') {\n this.resetMultiSelect();\n this.element.setAttribute('tabindex', '0');\n if (this.listObj) {\n this.unWireEvents();\n this.removeEventListener();\n }\n this.parent.notify(events.hideLayout, {});\n var iconsView = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n var ul = select('ul', iconsView);\n if (ul) {\n remove(ul);\n }\n this.listObj = {\n ariaAttributes: {\n itemRole: 'option', listRole: 'listbox', itemText: '',\n groupItemRole: 'group', wrapperRole: ''\n },\n showIcon: true,\n fields: { text: 'name', iconCss: '_fm_icon', imageUrl: '_fm_imageUrl', htmlAttributes: '_fm_htmlAttr' },\n sortOrder: this.parent.sortOrder,\n itemCreated: this.onItemCreated.bind(this),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer\n };\n this.items = [];\n this.items = this.renderList(args);\n 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 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 var emptyList = this.element.querySelector('.' + CLS.LIST_PARENT);\n this.element.removeChild(emptyList);\n createEmptyElement(this.parent, this.element, args);\n }\n else if (this.itemList.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n if (this.isPasteOperation === true) {\n this.selectItems(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n /* istanbul ignore next */\n if (this.uploadOperation === true) {\n this.selectItems(this.parent.uploadItem);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.count++;\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.parent.activeModule = 'largeiconsview';\n }\n for (var i = 0; i < activeEle.length; i++) {\n activeEle[i].setAttribute('aria-selected', 'true');\n }\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n this.parent.virtualizationModule.setUlElementHeight();\n this.parent.virtualizationModule.wireScrollEvent(false);\n }\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\n };\n LargeIconsView.prototype.comparer = function (x, y) {\n if (this.parent.sortOrder === 'Descending') {\n var z = x;\n x = y;\n y = z;\n }\n return this.parent.sortComparer(x, y);\n };\n LargeIconsView.prototype.preventImgDrag = function () {\n var i = 0;\n while (i < this.itemList.length) {\n if (this.itemList[i].querySelector('img')) {\n /* istanbul ignore next */\n this.itemList[i].ondragstart = function () { return false; };\n }\n i++;\n }\n };\n LargeIconsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.listObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.listElements, {\n enableTailMode: true,\n distance: 5,\n enableAutoScroll: false,\n dragTarget: '.' + CLS.LARGE_ICON,\n helper: this.dragHelper.bind(this),\n cursorAt: this.parent.dragCursorPosition,\n dragArea: this.parent.element,\n dragStop: dragStopHandler.bind(this, this.parent),\n drag: draggingHandler.bind(this, this.parent),\n clone: true,\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n }\n });\n }\n else if (this.dragObj && !this.parent.allowDragAndDrop) {\n this.dragObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = closest(dragTarget, '.e-list-item');\n if (!dragLi) {\n return null;\n }\n if (dragLi && !dragLi.classList.contains('e-active')) {\n this.setFocus(dragLi);\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n for (var i = 0; i < activeEle.length; i++) {\n 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 LargeIconsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, '.e-list-item');\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n var info = this.getItemObject(dropLi);\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n else {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n LargeIconsView.prototype.getModuleName = function () {\n return 'largeiconsview';\n };\n LargeIconsView.prototype.onItemCreated = function (args) {\n args.item.removeAttribute('aria-level');\n if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {\n var textEle = args.item.querySelector('.' + CLS.LIST_TEXT);\n var txt = getValue('name', args.curData);\n var type = getValue('type', args.curData);\n if (txt.indexOf(type) !== -1) {\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\n }\n this.renderCheckbox(args);\n var eventArgs = {\n element: args.item,\n fileDetails: args.curData,\n module: 'LargeIconsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n LargeIconsView.prototype.renderCheckbox = function (args) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n var checkElement = createCheckBox(createElement, false, {\n checked: false,\n cssClass: 'e-small'\n });\n checkElement.setAttribute('role', 'checkbox');\n checkElement.setAttribute('aria-checked', 'false');\n checkElement.setAttribute('aria-label', 'checkbox');\n args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);\n };\n LargeIconsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.destroy();\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.render(args);\n /* istanbul ignore next */\n if (getValue('name', args) === 'layout-change' && this.parent.fileAction === 'move' &&\n this.parent.isCut && this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n var indexes = this.getIndexes(this.parent.selectedNodes);\n var length_1 = 0;\n while (length_1 < indexes.length) {\n addBlur(this.itemList[indexes[length_1]]);\n length_1++;\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.element.focus();\n }\n this.checkItem();\n this.parent.isLayoutChange = false;\n }\n else {\n this.element.setAttribute('tabindex', '-1');\n }\n };\n LargeIconsView.prototype.checkItem = function () {\n var checkEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (checkEle) {\n var checkLength = 0;\n while (checkLength < checkEle.length) {\n this.checkState(checkEle[checkLength], true);\n checkLength++;\n }\n }\n };\n LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\n var items = JSON.parse(JSON.stringify(args.files));\n while (i < items.length) {\n var icon = fileType(items[i]);\n var name_1 = getValue('name', items[i]);\n var selected = getItemName(this.parent, items[i]);\n var className = ((this.parent.selectedItems &&\n this.parent.selectedItems.indexOf(selected) !== -1)) ?\n CLS.LARGE_ICON + ' e-active' : CLS.LARGE_ICON;\n if (!hasEditAccess(items[i])) {\n className += ' ' + getAccessClass(items[i]);\n }\n if (icon === CLS.ICON_IMAGE && this.parent.showThumbnail && hasReadAccess(items[i])) {\n var imgUrl = getImageUrl(this.parent, items[i]);\n setValue('_fm_imageUrl', imgUrl, items[i]);\n setValue('_fm_imageAttr', { alt: name_1 }, items[i]);\n }\n else {\n setValue('_fm_icon', icon, items[i]);\n }\n setValue('_fm_htmlAttr', { class: className, title: name_1 }, items[i]);\n i++;\n }\n return items;\n };\n LargeIconsView.prototype.onFinalizeEnd = function (args) {\n this.render(args);\n };\n LargeIconsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.clearSelect();\n this.selectItems([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n this.parent.largeiconsviewModule.element.focus();\n this.parent.activeModule = 'largeiconsview';\n };\n LargeIconsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n this.updateSelectedData();\n }\n };\n LargeIconsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.clearSelect();\n };\n LargeIconsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n };\n LargeIconsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'largeiconsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n LargeIconsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n /* istanbul ignore next */\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '') {\n this.parent.searchedItems = [];\n }\n if (this.parent.view === 'LargeIcons') {\n removeBlur(this.parent);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onLayoutChange(args);\n if (this.parent.renamedItem) {\n this.clearSelect();\n this.addSelection(this.parent.renamedItem);\n }\n }\n };\n LargeIconsView.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'largeiconsview') {\n this.doOpenAction(args.target);\n }\n };\n LargeIconsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'LargeIcons' && this.element) {\n this.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n LargeIconsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.startItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n var eveArgs = { ctrlKey: true, shiftKey: true };\n this.doSelection(lastItem, eveArgs);\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.clearSelection();\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n LargeIconsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onSearch = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n this.parent.searchedItems = args.files;\n this.onLayoutChange(args);\n }\n };\n LargeIconsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n };\n LargeIconsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.updateSelectedData();\n };\n LargeIconsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'LargeIcons' && !isNOU(this.listObj) &&\n this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered\n && this.parent.sortBy === 'filterPath') {\n this.parent.sortBy = 'name';\n this.parent.notify(events.sortByChange, {});\n }\n };\n LargeIconsView.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.search, this.onSearch);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.splitterResize, this.splitterResizeHandler);\n this.parent.off(events.resizeEnd, this.resizeHandler);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n this.parent.off(events.filterEnd, this.onPathChanged);\n };\n LargeIconsView.prototype.addEventListener = function () {\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.search, this.onSearch, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.splitterResize, this.splitterResizeHandler, this);\n this.parent.on(events.resizeEnd, this.resizeHandler, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n };\n LargeIconsView.prototype.onActionFailure = function () { this.isInteraction = true; this.isInteracted = true; };\n LargeIconsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var ele = closest(args.target, 'li');\n this.parent.itemData = [this.getItemObject(ele)];\n }\n };\n LargeIconsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.updateSelectedData();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n LargeIconsView.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath === '') ? [getPathObject(this.parent)] :\n [this.getItemObject(select('.e-active', this.element))];\n }\n };\n LargeIconsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeRecords = [];\n this.parent.activeElements = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.activeElements.push(activeEle[i]);\n this.parent.activeRecords.push(this.getItemObject(activeEle[i]));\n }\n }\n };\n LargeIconsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath ||\n this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {\n this.onPathChanged(args);\n }\n }\n };\n LargeIconsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n LargeIconsView.prototype.onPropertyChanged = function (e) {\n var currentSelected;\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case '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 case 'showItemCheckBoxes':\n if (this.parent.view !== 'LargeIcons') {\n break;\n }\n refresh(this.parent);\n break;\n case 'view':\n updateLayout(this.parent, 'LargeIcons');\n break;\n }\n }\n };\n LargeIconsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.listObj) {\n this.unWireEvents();\n }\n this.startItem = null;\n this.listElements = null;\n };\n LargeIconsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n };\n LargeIconsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onMouseOver = function (e) {\n var targetEle = closest(e.target, '.e-list-item');\n removeBlur(this.parent, 'hover');\n if (targetEle !== null) {\n targetEle.classList.add(CLS.HOVER);\n }\n };\n LargeIconsView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n if (_this.parent.isDevice) {\n _this.tapCount = eve.tapCount;\n _this.tapEvent = eve;\n setTimeout(function () {\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: function (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 LargeIconsView.prototype.doTapAction = function (eve) {\n var target = eve.originalEvent.target;\n var item = closest(target, '.' + CLS.LIST_ITEM);\n if (this.multiSelect || target.classList.contains(CLS.LIST_PARENT) || isNOU(item)) {\n this.clickHandler(eve);\n }\n else {\n this.parent.isFile = false;\n this.updateType(item);\n if (!this.parent.isFile) {\n this.dblClickHandler(eve);\n }\n else if (eve.tapCount === 2) {\n this.clickHandler(eve);\n this.dblClickHandler(eve);\n }\n else {\n this.clickHandler(eve);\n }\n }\n };\n LargeIconsView.prototype.clickHandler = function (e) {\n var target = e.originalEvent.target;\n removeBlur(this.parent, 'hover');\n this.doSelection(target, e.originalEvent);\n this.parent.activeModule = 'largeiconsview';\n };\n /**\n *\n * @param {Element} target - specifies the target element.\n * @param {TouchEventArgs | MouseEventArgs | KeyboardEventArgs} e - specifies event arguements.\n * @returns {void}\n * @hidden\n */\n LargeIconsView.prototype.doSelection = function (target, e) {\n var item = closest(target, '.' + CLS.LIST_ITEM);\n var cList = target.classList;\n this.parent.isFile = false;\n var action = 'select';\n if (e.which === 3 && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {\n this.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 var fileSelectionArgs = this.triggerSelection(action, item);\n if (fileSelectionArgs.cancel !== true) {\n if ((!this.parent.allowMultiSelection || (!this.multiSelect && (e && !e.ctrlKey)))\n && !cList.contains(CLS.FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey) {\n if (!(e && e.ctrlKey)) {\n this.clearSelect();\n }\n if (!this.startItem) {\n this.startItem = item;\n }\n var startIndex = this.itemList.indexOf(this.startItem);\n var endIndex = this.itemList.indexOf(item);\n if (startIndex > endIndex) {\n for (var i = startIndex; i >= endIndex; i--) {\n this.addActive(this.itemList[i]);\n }\n }\n else {\n for (var i = startIndex; i <= endIndex; i++) {\n this.addActive(this.itemList[i]);\n }\n }\n this.addFocus(this.itemList[endIndex]);\n }\n else {\n this.startItem = item;\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)) {\n this.removeActive(item);\n }\n else {\n this.addActive(item);\n }\n this.addFocus(item);\n }\n if (this.parent.selectedItems.length === 0) {\n this.resetMultiSelect();\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect(action, item);\n }\n }\n else {\n if (this.parent.selectedItems.length === this.itemList.length) {\n this.isSelectAllCalled = true;\n }\n this.clearSelection();\n }\n if (!isNOU(item)) {\n this.isSelectAllCalled = false;\n this.updateType(item);\n }\n };\n LargeIconsView.prototype.dblClickHandler = function (e) {\n this.parent.activeModule = 'largeiconsview';\n var target = e.originalEvent.target;\n this.doOpenAction(target);\n };\n LargeIconsView.prototype.clearSelection = function () {\n this.clearSelect();\n this.resetMultiSelect();\n this.parent.notify(events.selectionChanged, {});\n };\n LargeIconsView.prototype.resetMultiSelect = function () {\n this.multiSelect = false;\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n };\n LargeIconsView.prototype.doOpenAction = function (target) {\n var _this = this;\n if (isNOU(target)) {\n return;\n }\n var item = closest(target, '.' + CLS.LIST_ITEM);\n this.parent.isFile = false;\n if (!isNOU(item)) {\n this.updateType(item);\n var details_1 = this.getItemObject(item);\n if (!hasReadAccess(details_1)) {\n createDeniedDialog(this.parent, details_1, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: details_1, module: 'LargeIconsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var text = getValue('name', details_1);\n if (!_this.parent.isFile) {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', details_1);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNOU(id) ? text : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(text);\n _this.parent.pathId.push(getValue('_fm_id', details_1));\n _this.parent.itemData = [details_1];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, details_1);\n }\n _this.parent.isFiltered = false;\n _this.parent.setProperties({ selectedItems: [] }, true);\n }\n else {\n var icon = fileType(details_1);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, details_1);\n createImageDialog(_this.parent, text, imgUrl);\n }\n }\n }\n });\n }\n };\n LargeIconsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.keydownActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'moveDown':\n case 'moveLeft':\n case 'moveRight':\n case 'moveUp':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.keyActionHandler = function (e) {\n var _this = this;\n if (!this.isRendered) {\n return;\n }\n var fItem = this.getFocusedItem();\n var firstItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n switch (e.action) {\n case 'end':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTo(0, this.element.firstElementChild.scrollHeight);\n setTimeout(function () {\n _this.navigateItem(_this.itemList[_this.itemList.length - 1]);\n }, 10);\n }\n else {\n this.navigateItem(lastItem);\n }\n break;\n case 'home':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTop = 0;\n setTimeout(function () {\n _this.navigateItem(_this.itemList[0]);\n }, 10);\n }\n else {\n this.navigateItem(firstItem);\n }\n break;\n case 'tab':\n if (!isNOU(fItem)) {\n this.addFocus(fItem);\n }\n else if (!isNOU(firstItem)) {\n this.addFocus(firstItem);\n }\n break;\n case 'moveDown':\n this.navigateDown(fItem, true);\n break;\n case 'moveLeft':\n this.navigateRight(fItem, false);\n break;\n case 'moveRight':\n this.navigateRight(fItem, true);\n break;\n case 'moveUp':\n this.navigateDown(fItem, false);\n break;\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n this.csEndKey(lastItem, e);\n break;\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n this.csHomeKey(firstItem, e);\n break;\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n this.csDownKey(fItem, e);\n break;\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n this.csLeftKey(fItem, e);\n break;\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n this.csRightKey(fItem, e);\n break;\n case 'ctrlUp':\n case 'shiftUp':\n case 'csUp':\n this.csUpKey(fItem, e);\n break;\n case 'space':\n this.spaceKey(fItem);\n break;\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n if (!isNOU(fItem)) {\n this.doSelection(fItem, e);\n }\n break;\n case 'ctrlA':\n this.ctrlAKey(firstItem, lastItem);\n break;\n case 'enter':\n this.doOpenAction(this.parent.visitedItem ? this.parent.visitedItem : this.getVisitedItem());\n break;\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'back':\n this.parent.traverseBackward();\n break;\n }\n };\n LargeIconsView.prototype.doDownload = function () {\n this.updateSelectedData();\n doDownload(this.parent);\n };\n LargeIconsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.updateSelectedData();\n var data = this.parent.itemData;\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(this.parent, data[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n LargeIconsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n LargeIconsView.prototype.updateRenameData = function () {\n var item = select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n var data = this.getItemObject(item);\n updateRenamingData(this.parent, data);\n };\n LargeIconsView.prototype.getVisitedItem = function () {\n var item = this.parent.selectedItems[this.parent.selectedItems.length - 1];\n var indexes = this.getIndexes([item], this.parent.hasId);\n return this.itemList[indexes[0]];\n };\n LargeIconsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.FOCUS, this.element);\n };\n LargeIconsView.prototype.getActiveItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n };\n LargeIconsView.prototype.getFirstItem = function () {\n return this.itemList[0];\n };\n LargeIconsView.prototype.getLastItem = function () {\n return this.itemList[this.itemList.length - 1];\n };\n LargeIconsView.prototype.navigateItem = function (item) {\n this.setFocus(item);\n };\n LargeIconsView.prototype.navigateDown = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards, this.perRow);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.navigateRight = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.getNextItem = function (li, isTowards, perRow) {\n if (isNOU(li)) {\n return this.getFocusedItem() || this.getActiveItem() || this.getFirstItem();\n }\n var index = this.itemList.indexOf(li);\n var nextItem;\n do {\n if (isTowards) {\n index = perRow ? index + perRow : index + 1;\n }\n else {\n index = perRow ? index - perRow : index - 1;\n }\n nextItem = this.itemList[index];\n if (this.parent.enableVirtualization && isNOU(nextItem)) {\n var marginValue = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-bottom'), 10);\n var scrollHeight = this.itemList[0].getBoundingClientRect().height + marginValue;\n this.element.firstElementChild.scrollTo(this.element.firstElementChild.scrollTop, this.element.firstElementChild.scrollTop + scrollHeight);\n }\n if (isNOU(nextItem)) {\n return li;\n }\n } while (!isVisible(nextItem));\n return nextItem;\n };\n LargeIconsView.prototype.setFocus = function (nextItem) {\n if (!isNOU(nextItem)) {\n var fileSelectionArgs = this.triggerSelection('select', nextItem);\n if (fileSelectionArgs.cancel !== true) {\n this.startItem = nextItem;\n this.clearSelect();\n this.addActive(nextItem);\n this.addFocus(nextItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', nextItem);\n }\n }\n };\n LargeIconsView.prototype.spaceKey = function (fItem) {\n if (!isNOU(fItem) && !fItem.classList.contains(CLS.ACTIVE)) {\n var fileSelectionArgs = this.triggerSelection('select', fItem);\n if (fileSelectionArgs.cancel !== true) {\n this.addActive(fItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', fItem);\n }\n }\n };\n LargeIconsView.prototype.ctrlAKey = function (firstItem, lastItem) {\n if (this.parent.allowMultiSelection && !isNOU(firstItem)) {\n this.startItem = firstItem;\n var eveArgs = { ctrlKey: true, shiftKey: true };\n var liParent = this.element.querySelector('.' + CLS.LIST_PARENT);\n var liScrPos = liParent.scrollTop;\n var getCurFocusedItem = this.getFocusedItem();\n this.doSelection(lastItem, eveArgs);\n liParent.scrollTop = liScrPos;\n if (!isNOU(getCurFocusedItem)) {\n this.addFocus(getCurFocusedItem);\n }\n }\n };\n LargeIconsView.prototype.csEndKey = function (lastItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(lastItem);\n }\n else if (!isNOU(lastItem)) {\n if (e.action === 'ctrlEnd') {\n this.addFocus(lastItem);\n }\n else {\n this.doSelection(lastItem, e);\n }\n }\n };\n LargeIconsView.prototype.csHomeKey = function (firstItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(firstItem);\n }\n else if (!isNOU(firstItem)) {\n if (e.action === 'ctrlHome') {\n this.addFocus(firstItem);\n }\n else {\n this.doSelection(firstItem, e);\n }\n }\n };\n LargeIconsView.prototype.csDownKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, true);\n }\n else {\n var dItem = this.getNextItem(fItem, true, this.perRow);\n if (!isNOU(dItem)) {\n if (e.action === 'ctrlDown') {\n this.addFocus(dItem);\n }\n else {\n this.doSelection(dItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csLeftKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, false);\n }\n else {\n var lItem = this.getNextItem(fItem, false);\n if (!isNOU(lItem)) {\n if (e.action === 'ctrlLeft') {\n this.addFocus(lItem);\n }\n else {\n this.doSelection(lItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csRightKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, true);\n }\n else {\n var rItem = this.getNextItem(fItem, true);\n if (!isNOU(rItem)) {\n if (e.action === 'ctrlRight') {\n this.addFocus(rItem);\n }\n else {\n this.doSelection(rItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csUpKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, false);\n }\n else {\n var uItem = this.getNextItem(fItem, false, this.perRow);\n if (!isNOU(uItem)) {\n if (e.action === 'ctrlUp') {\n this.addFocus(uItem);\n }\n else {\n this.doSelection(uItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.addActive = function (nextItem) {\n if (!isNOU(nextItem)) {\n if (!nextItem.classList.contains(CLS.ACTIVE)) {\n this.parent.selectedItems.push(this.getDataName(nextItem));\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n addClass([nextItem], [CLS.ACTIVE]);\n nextItem.setAttribute('aria-selected', 'true');\n this.checkState(nextItem, true);\n }\n this.parent.visitedItem = nextItem;\n }\n };\n LargeIconsView.prototype.removeActive = function (preItem) {\n if (!isNOU(preItem)) {\n removeClass([preItem], [CLS.ACTIVE]);\n if (this.parent.allowMultiSelection) {\n preItem.setAttribute('aria-selected', 'false');\n }\n else {\n preItem.removeAttribute('aria-selected');\n }\n this.checkState(preItem, false);\n var index = this.parent.selectedItems.indexOf(this.getDataName(preItem));\n if (index > -1) {\n this.parent.selectedItems.splice(index, 1);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n this.parent.visitedItem = null;\n }\n };\n LargeIconsView.prototype.getDataName = function (item) {\n var data = this.getItemObject(item);\n return getItemName(this.parent, data);\n };\n LargeIconsView.prototype.addFocus = function (item) {\n this.element.setAttribute('tabindex', '-1');\n var fItem = this.getFocusedItem();\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS]);\n }\n addClass([item], [CLS.FOCUS]);\n item.setAttribute('tabindex', '0');\n item.focus();\n };\n LargeIconsView.prototype.checkState = function (item, toCheck) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n var checkEle = select('.' + CLS.FRAME, item);\n if (isNOU(checkEle)) {\n return;\n }\n if (toCheck) {\n if (!checkEle.classList.contains(CLS.CHECK)) {\n addClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'true');\n }\n }\n else {\n if (checkEle.classList.contains(CLS.CHECK)) {\n removeClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'false');\n }\n }\n };\n LargeIconsView.prototype.clearSelect = function () {\n var eles = Array.prototype.slice.call(selectAll('.' + CLS.ACTIVE, this.listElements));\n var fileSelectionArgs;\n if (eles.length !== 0) {\n fileSelectionArgs = this.triggerSelection('unselect', eles[0]);\n if (fileSelectionArgs.cancel !== true) {\n for (var i = 0, len = eles.length; i < len; i++) {\n this.removeActive(eles[i]);\n }\n }\n this.triggerSelect('unselect', eles[0]);\n }\n };\n LargeIconsView.prototype.resizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.splitterResizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.getItemCount = function () {\n var perRow = 1;\n if (this.itemList) {\n for (var i = 0, len = this.itemList.length - 1; i < len; i++) {\n if (this.itemList[i].getBoundingClientRect().top === this.itemList[i + 1].getBoundingClientRect().top) {\n perRow++;\n }\n else {\n break;\n }\n }\n }\n this.perRow = perRow;\n };\n LargeIconsView.prototype.triggerSelection = function (action, item) {\n var data = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n }\n else {\n data[0] = this.getItemObject(item);\n }\n var eventArgs = { 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 LargeIconsView.prototype.triggerSelect = function (action, item) {\n var data = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n this.isSelectAllCalled = false;\n }\n else {\n data[0] = this.getItemObject(item);\n }\n this.parent.visitedData = data.length > 1 ? data[data.length - 1] : data[0];\n var eventArgs = { action: action, fileDetails: data.length > 1\n ? data\n : data[0], isInteracted: this.isInteracted };\n this.parent.trigger('fileSelect', eventArgs);\n this.isInteracted = true;\n };\n LargeIconsView.prototype.selectItems = function (items) {\n var indexes = this.getIndexes(items, this.parent.hasId);\n for (var j = 0, len = indexes.length; j < len; j++) {\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[indexes[j]], eveArgs);\n }\n };\n LargeIconsView.prototype.getIndexes = function (items, byId) {\n var indexes = [];\n var filter = byId ? 'id' : 'name';\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filter, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n LargeIconsView.prototype.addSelection = function (data) {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var newData = new DataManager(this.items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (newData.length > 0) {\n resultData = new DataManager(newData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n var index = this.items.indexOf(resultData[0]);\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[index], eveArgs);\n }\n };\n LargeIconsView.prototype.updateSelectedData = function () {\n var data = [];\n var items = selectAll('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n for (var i = 0; i < items.length; i++) {\n data[i] = this.getItemObject(items[i]);\n }\n this.parent.itemData = data;\n };\n LargeIconsView.prototype.onMethodCall = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n var action = getValue('action', args);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', args));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', args));\n break;\n case 'openFile':\n this.openFile(getValue('id', args));\n break;\n case 'renameFile':\n this.isInteraction = false;\n this.isInteracted = false;\n this.renameFile(getValue('id', args), getValue('newName', args));\n break;\n case 'createFolder':\n this.isInteraction = false;\n this.isInteracted = false;\n break;\n case 'clearSelection':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onClearAllInit();\n break;\n case 'selectAll':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onSelectAllInit();\n break;\n }\n };\n LargeIconsView.prototype.getItemsIndex = function (items) {\n var indexes = [];\n var isFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filterName = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !isFilter) {\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filterName, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n }\n else {\n for (var i = 0, len = this.items.length; i < len; i++) {\n var name_2 = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);\n if ((items.indexOf(name_2) !== -1) || (items.indexOf(getValue(filterName, this.items[i])) !== -1)) {\n indexes.push(i);\n }\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n var indexes = this.getItemsIndex(ids);\n if (indexes.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < indexes.length; i++) {\n data[i] = this.items[indexes[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n var index = this.getItemsIndex(ids);\n if (index.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < index.length; i++) {\n data[i] = this.items[index[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n this.doOpenAction(this.itemList[indexes[0]]);\n }\n };\n LargeIconsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n updateRenamingData(this.parent, this.items[indexes[0]]);\n if (isNOU(name)) {\n doRename(this.parent);\n }\n else {\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n rename(this.parent, this.parent.path, name);\n }\n }\n }\n };\n return LargeIconsView;\n}());\nexport { LargeIconsView };\n","import { EventHandler, closest, isNullOrUndefined, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, addClass, removeClass, remove, createElement } from '@syncfusion/ej2-base';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { read } from '../common/operations';\nimport { getLocaleText, searchWordHandler } from '../common/utility';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * BreadCrumbBar module\n */\nvar BreadCrumbBar = /** @class */ (function () {\n /**\n * constructor for addressbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies parent element.\n * @private\n *\n */\n function BreadCrumbBar(parent) {\n this.addressPath = '';\n this.addressBarLink = '';\n this.searchTimer = null;\n this.searchWrapWidth = null;\n this.parent = parent;\n this.keyConfigs = {\n enter: 'enter'\n };\n this.render();\n }\n BreadCrumbBar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var value = e.newProp.searchSettings;\n switch (prop) {\n case 'searchSettings':\n if (!isNullOrUndefined(value.allowSearchOnTyping)) {\n this.searchEventBind(value.allowSearchOnTyping);\n }\n if (this.parent.breadcrumbbarModule.searchObj.value && this.parent.breadcrumbbarModule.searchObj.value !== '' &&\n !(!isNullOrUndefined(value.allowSearchOnTyping) && isNullOrUndefined(value.filterType) &&\n isNullOrUndefined(value.ignoreCase))) {\n searchWordHandler(this.parent, this.parent.breadcrumbbarModule.searchObj.value, false);\n }\n break;\n }\n }\n };\n BreadCrumbBar.prototype.render = function () {\n this.addEventListener();\n };\n BreadCrumbBar.prototype.onPathChange = function () {\n var pathNames = this.parent.pathNames;\n var paths = this.parent.path.split('/');\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var addressbarLI = null;\n var pathNamesLen = pathNames.length;\n if (pathNames.length > 0) {\n var id = '';\n for (var i = 0; i < pathNamesLen; i++) {\n var addressATag = null;\n addressbarLI = this.parent.createElement('li', { className: 'e-address-list-item' });\n for (var j = 0; j <= i; j++) {\n id = id + paths[j] + '/';\n }\n addressbarLI.setAttribute('data-utext', id);\n if (i !== 0) {\n var icon = createElement('span', { className: CLS.ICONS });\n addressbarLI.appendChild(icon);\n }\n if (pathNamesLen - i !== 1) {\n addressATag = createElement('a', { className: CLS.LIST_TEXT });\n addressbarLI.setAttribute('tabindex', '0');\n }\n else {\n addressATag = createElement('span', { className: CLS.LIST_TEXT });\n }\n id = '';\n addressATag.innerText = pathNames[i];\n addressbarLI.appendChild(addressATag);\n addressbarUL.appendChild(addressbarLI);\n }\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n if (!isNullOrUndefined(ulElement)) {\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n remove(ulElement);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n if (!searchWrap) {\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.appendChild(addressbarUL);\n }\n this.updateBreadCrumbBar(addressbarUL);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.updateBreadCrumbBar = function (addresBarUL) {\n var liElements = addresBarUL.querySelectorAll('li');\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n var style = window.getComputedStyle(ulElement, null);\n var pRight = parseFloat(style.getPropertyValue('padding-right'));\n var pLeft = parseFloat(style.getPropertyValue('padding-left'));\n var breadCrumbBarWidth = ulElement.offsetWidth - pRight - pLeft;\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var liElementsWidth = 0;\n var liElementsWidths = [];\n for (var i = 0; i < liElements.length; i++) {\n var width = liElements[i].clientWidth;\n liElementsWidths.push(width);\n liElementsWidth = liElementsWidth + width;\n }\n if (!isNullOrUndefined(ulElement)) {\n remove(ulElement);\n }\n var searchContainer = this.parent.createElement('div');\n searchContainer.setAttribute('class', 'e-search-wrap');\n var id = this.parent.element.id + CLS.SEARCH_ID;\n var searchInput = createElement('input', { id: id,\n attrs: { autocomplete: 'off', 'aria-label': getLocaleText(this.parent, 'Search') } });\n searchContainer.appendChild(searchInput);\n var searchEle = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap .e-input');\n if (isNullOrUndefined(searchEle)) {\n this.parent.breadCrumbBarNavigation.appendChild(searchContainer);\n var span = createElement('span', { className: 'e-icons e-fe-search' });\n EventHandler.add(span, 'click', this.onShowInput, this);\n searchInput.parentElement.insertBefore(span, searchInput);\n this.searchObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: getLocaleText(this.parent, 'Search'),\n focus: this.onFocus.bind(this),\n blur: this.onBlur.bind(this)\n });\n this.searchObj.appendTo('#' + this.parent.element.id + CLS.SEARCH_ID);\n this.searchEventBind(this.parent.searchSettings.allowSearchOnTyping);\n var search = this.searchObj.element.nextElementSibling;\n EventHandler.add(search, 'mousedown', this.searchChangeHandler.bind(this), this);\n EventHandler.add(this.searchObj.element, 'keyup', this.onKeyUp.bind(this), this);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n breadCrumbBarWidth = breadCrumbBarWidth - (this.searchWrapWidth ? this.searchWrapWidth : searchWrap.offsetWidth);\n if (liElementsWidth > breadCrumbBarWidth) {\n var i = liElements.length;\n while (i--) {\n var diff = breadCrumbBarWidth - liElementsWidths[i];\n if (diff > 40) {\n addressbarUL.insertBefore(liElements[i], addressbarUL.querySelector('li'));\n breadCrumbBarWidth = diff;\n }\n else {\n var items = [];\n for (var j = 0; j <= i; j++) {\n var liElement = liElements[j];\n items.push({\n text: liElement.innerText,\n utext: liElement.getAttribute('data-utext')\n });\n }\n var subMenuLi = this.parent.createElement('li', { className: 'e-breadcrumb-menu' });\n var attributes = { className: 'e-breadcrumb-submenu' };\n var subMenuSpan = this.parent.createElement('button', attributes);\n subMenuLi.appendChild(subMenuSpan);\n addressbarUL.insertBefore(subMenuLi, addressbarUL.querySelector('li'));\n this.subMenuObj = new DropDownButton({\n items: items,\n cssClass: 'e-caret-hide e-submenu',\n iconCss: CLS.ICON_BREADCRUMB,\n iconPosition: 'Top',\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.addSubMenuAttributes.bind(this),\n select: this.subMenuSelectOperations.bind(this)\n });\n this.subMenuObj.isStringTemplate = true;\n this.subMenuObj.appendTo(subMenuSpan);\n break;\n }\n }\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.insertBefore(addresBarUL, searchWrap);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onFocus = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.add('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onKeyUp = function () {\n this.parent.notify(events.pathColumn, { args: this.parent });\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onBlur = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.remove('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.subMenuSelectOperations = function (event) {\n var args = { target: event.element };\n this.addressPathClickHandler(args);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.addSubMenuAttributes = function (args) {\n args.element.setAttribute('data-utext', getValue('utext', args.item));\n var anchor = this.parent.createElement('a', { className: 'e-list-text' });\n args.element.appendChild(anchor);\n };\n BreadCrumbBar.prototype.searchEventBind = function (allow) {\n if (allow) {\n this.searchObj.input = this.searchChangeHandler.bind(this);\n this.searchObj.change = null;\n }\n else {\n this.searchObj.change = this.searchChangeHandler.bind(this);\n this.searchObj.input = null;\n }\n };\n BreadCrumbBar.prototype.searchChangeHandler = function (args) {\n var _this = this;\n if (!isNullOrUndefined(args.value)) {\n this.parent.isFiltered = false;\n if (this.parent.searchSettings.allowSearchOnTyping) {\n window.clearTimeout(this.searchTimer);\n this.searchTimer = window.setTimeout(function () { searchWordHandler(_this.parent, args.value, false); }, 300);\n }\n else {\n searchWordHandler(this.parent, args.value, false);\n }\n }\n };\n BreadCrumbBar.prototype.addressPathClickHandler = function (e) {\n var li = e.target;\n if (li.nodeName === 'LI' || li.nodeName === 'A') {\n var node = li.nodeName === 'LI' ? li.children[0] : li;\n if (!isNullOrUndefined(node)) {\n this.parent.isFiltered = false;\n var currentPath = this.updatePath(node);\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n this.triggerFileOpen(this.parent.itemData[0]);\n read(this.parent, events.pathChanged, currentPath);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n }\n };\n BreadCrumbBar.prototype.triggerFileOpen = function (data) {\n var eventArgs = { cancel: false, fileDetails: data, module: 'BreadCrumbBar' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onShowInput = function () {\n if (this.parent.isMobile) {\n if (this.parent.element.classList.contains(CLS.FILTER)) {\n removeClass([this.parent.element], CLS.FILTER);\n this.searchWrapWidth = null;\n }\n else {\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n this.searchWrapWidth = searchWrap.offsetWidth;\n addClass([this.parent.element], CLS.FILTER);\n this.searchObj.element.focus();\n }\n }\n };\n BreadCrumbBar.prototype.updatePath = function (list) {\n var li = closest(list, 'li');\n var liElementId = li.getAttribute('data-utext');\n this.addressBarLink = liElementId;\n var link = this.addressBarLink.split('/');\n var ids = this.parent.pathId;\n var names = this.parent.pathNames;\n this.parent.pathId = [];\n this.parent.pathNames = [];\n var newpath = '';\n for (var i = 0, len = link.length - 1; i < len; i++) {\n this.parent.pathId.push(ids[i]);\n this.parent.pathNames.push(names[i]);\n newpath += link[i] + '/';\n }\n this.parent.setProperties({ path: newpath }, true);\n return newpath;\n };\n BreadCrumbBar.prototype.onUpdatePath = function () {\n this.onPathChange();\n this.removeSearchValue();\n };\n BreadCrumbBar.prototype.onCreateEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onRenameEnd = function () {\n this.onPathChange();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDeleteEnd = function () {\n this.onUpdatePath();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.removeSearchValue = function () {\n this.parent.isFiltered = false;\n if (this.searchObj && (this.searchObj.value !== '' || this.searchObj.element.value !== '')) {\n this.searchObj.value = '';\n this.searchObj.element.value = '';\n this.searchObj.dataBind();\n }\n };\n BreadCrumbBar.prototype.onResize = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onPasteEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.addEventListener = function () {\n this.keyboardModule = new KeyboardEvents(this.parent.breadCrumbBarNavigation, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n EventHandler.add(this.parent.breadCrumbBarNavigation, 'click', this.addressPathClickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.pathChanged, this.onUpdatePath, this);\n this.parent.on(events.finalizeEnd, this.onUpdatePath, this);\n this.parent.on(events.refreshEnd, this.onUpdatePath, this);\n this.parent.on(events.openEnd, this.onUpdatePath, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.splitterResize, this.onResize, this);\n this.parent.on(events.pasteEnd, this.onPasteEnd, this);\n this.parent.on(events.resizeEnd, this.onResize, this);\n this.parent.on(events.searchTextChange, this.onSearchTextChange, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.layoutRefresh, this.onResize, this);\n this.parent.on(events.dropPath, this.onPathChange, this);\n };\n BreadCrumbBar.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'enter':\n this.addressPathClickHandler(e);\n break;\n }\n };\n BreadCrumbBar.prototype.removeEventListener = function () {\n this.keyboardModule.destroy();\n this.parent.off(events.pathChanged, this.onUpdatePath);\n this.parent.off(events.finalizeEnd, this.onUpdatePath);\n this.parent.off(events.refreshEnd, this.onUpdatePath);\n this.parent.off(events.openEnd, this.onUpdatePath);\n this.parent.off(events.pasteEnd, this.onPasteEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.splitterResize, this.onResize);\n this.parent.off(events.resizeEnd, this.onResize);\n this.parent.off(events.searchTextChange, this.onSearchTextChange);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.layoutRefresh, this.onResize);\n this.parent.off(events.dropPath, this.onPathChange);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var liEle = args.target.closest('li');\n this.parent.dropPath = this.updatePath((liEle.children[0]));\n this.parent.dropData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n this.triggerFileOpen(this.parent.dropData);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n BreadCrumbBar.prototype.getModuleName = function () {\n return 'breadcrumbbar';\n };\n BreadCrumbBar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n if (!isNullOrUndefined(this.searchObj)) {\n this.searchObj.destroy();\n }\n };\n BreadCrumbBar.prototype.onSearchTextChange = function (args) {\n this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + getLocaleText(this.parent, args.cwd.name.toString());\n };\n return BreadCrumbBar;\n}());\nexport { BreadCrumbBar };\n","import { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, createElement, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, select } from '@syncfusion/ej2-base';\nimport { Download, GetDetails } from './../common/operations';\nimport { createDialog } from './dialog';\nimport { cutFiles, copyFiles, refresh, getPathObject, getLocaleText, updateLayout, getFullPath } from './../common/utility';\nimport { getCssClass, sortbyClickHandler, pasteHandler } from './../common/utility';\nimport { createDeniedDialog, createNewFolder, uploadItem, hasEditAccess, hasDownloadAccess } from './../common/utility';\nimport * as events from './../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * ContextMenu module\n */\nvar ContextMenu = /** @class */ (function () {\n /**\n * Constructor for the ContextMenu module\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @hidden\n */\n function ContextMenu(parent) {\n this.isMenuItemClicked = false;\n this.currentItems = [];\n this.currentElement = null;\n this.disabledItems = [];\n this.parent = parent;\n this.render();\n }\n ContextMenu.prototype.render = function () {\n this.keyConfigs = {\n downarrow: 'downarrow',\n uparrow: 'uparrown'\n };\n this.contextMenu = new Menu({\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n target: '#' + this.parent.element.id,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.onBeforeItemRender.bind(this),\n select: this.onSelect.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this),\n cssClass: getCssClass(this.parent, CLS.ROOT_POPUP)\n });\n this.contextMenu.isStringTemplate = true;\n this.contextMenu.appendTo('#' + this.parent.element.id + CLS.CONTEXT_MENU_ID);\n this.addEventListener();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeItemRender = function (args) {\n if (args.item.id === this.getMenuId('largeiconsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'LargeIcons' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_LARGE + ' ' + CLS.MENU_ICON);\n }\n if (args.item.id === this.getMenuId('detailsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'Details' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_GRID + ' ' + CLS.MENU_ICON);\n }\n };\n ContextMenu.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: false,\n element: args.element,\n event: args.event,\n isFocused: args.isFocused,\n fileDetails: [this.menuItemData],\n items: args.items,\n parentItem: args.parentItem,\n menuType: this.menuType\n };\n this.parent.trigger('menuClose', eventArgs, function (menuCloseArgs) {\n if (menuCloseArgs.cancel) {\n args.cancel = menuCloseArgs.cancel;\n return;\n }\n });\n this.menuTarget = null;\n if (!this.isMenuItemClicked && this.parent.pathId.length > 1 && this.parent.activeModule === 'navigationpane') {\n this.parent.pathId.pop();\n var parentKey = [];\n var itemKeys = Object.keys(this.parent.feParent);\n for (var _i = 0, itemKeys_1 = itemKeys; _i < itemKeys_1.length; _i++) {\n var item = itemKeys_1[_i];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var 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 ContextMenu.prototype.onBeforeOpen = function (args) {\n var _this = this;\n var selected = false;\n var uid;\n var data;\n var treeFolder = false;\n var target = args.event.target;\n this.menuTarget = this.targetNodeElement = target;\n this.currentElement = args.element;\n if (target.classList.contains('e-spinner-pane')) {\n target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(CLS.FULLROW)[0];\n this.menuTarget = this.targetNodeElement = target;\n }\n this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr.e-row') : target;\n if (this.parent.enableVirtualization && (target.classList.contains('e-virtual-bottom') || target.classList.contains('e-virtualtable'))) {\n target = target.parentElement.closest('div');\n }\n var view = this.getTargetView(target);\n this.updateActiveModule();\n /* istanbul ignore next */\n if (target.classList.contains(CLS.TREE_VIEW) || closest(target, 'th') ||\n (closest(target, '#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID)) ||\n (closest(target, '#' + this.parent.element.id + CLS.TOOLBAR_ID))) {\n args.cancel = true;\n }\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 var 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 if (!isNOU(uid)) {\n this.parent.navigationpaneModule.treeObj.selectedNodes = [uid];\n }\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 var itemsToRemove = ['Delete', 'Rename', 'Cut', 'Copy'];\n for (var i = 0; i < this.disabledItems.length; i++) {\n var 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 var 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 var 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 var isSubMenu = false;\n if (target.classList.contains(CLS.MENU_ITEM) ||\n target.classList.contains(CLS.MENU_ICON) || target.classList.contains(CLS.SUBMENU_ICON)) {\n isSubMenu = true;\n }\n this.menuItemData = isSubMenu ? this.menuItemData : this.getMenuItemData();\n var eventArgs = {\n fileDetails: [this.menuItemData],\n element: args.element,\n target: target,\n items: isSubMenu ? args.items : this.contextMenu.items,\n menuModule: this.contextMenu,\n cancel: false,\n menuType: this.menuType,\n isSubMenu: isSubMenu\n };\n this.currentItems = eventArgs.items;\n this.parent.trigger('menuOpen', eventArgs, function (menuOpenArgs) {\n if (!isSubMenu) {\n _this.contextMenu.dataBind();\n _this.contextMenu.items = menuOpenArgs.items;\n _this.contextMenu.dataBind();\n }\n _this.enableItems(_this.disabledItems, false, true);\n args.cancel = menuOpenArgs.cancel;\n if (menuOpenArgs.cancel) {\n _this.menuTarget = _this.targetNodeElement = _this.currentElement = null;\n }\n });\n };\n ContextMenu.prototype.updateActiveModule = function () {\n this.parent.activeModule = closest(this.menuTarget, '#' + this.parent.element.id + CLS.TREE_ID) ?\n 'navigationpane' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.GRID_ID) ?\n 'detailsview' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.LARGEICON_ID) ?\n 'largeiconsview' : this.parent.activeModule;\n };\n /* istanbul ignore next */\n /**\n *\n * @param {Element} target - specifies the target element.\n * @returns {string} -returns the target view.\n * @hidden\n */\n ContextMenu.prototype.getTargetView = function (target) {\n return target.classList.contains(CLS.TREE_VIEW) ?\n 'TreeView' : target.classList.contains(CLS.GRID_VIEW) ?\n 'GridView' : target.classList.contains(CLS.ICON_VIEW) ?\n 'LargeIcon' : target.classList.contains(CLS.LARGE_ICONS) ?\n 'LargeIcon' : '';\n };\n ContextMenu.prototype.getItemIndex = function (item) {\n var itemId = this.getMenuId(item);\n for (var i = 0; i < this.currentItems.length; i++) {\n if ((this.currentItems[i].id === itemId) || (this.currentItems[i].id === item)) {\n return i;\n }\n }\n return -1;\n };\n ContextMenu.prototype.disableItem = function (items) {\n if (items.length !== 0) {\n this.disabledItems = this.disabledItems.concat(items);\n }\n };\n ContextMenu.prototype.enableItems = function (items, enable, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n if (this.checkValidItem(items[i]) === 1) {\n this.contextMenu.enableItems([this.getMenuId(items[i])], enable, isUniqueId);\n }\n else if (this.checkValidItem(items[i]) === 2) {\n this.contextMenu.enableItems([items[i]], enable, isUniqueId);\n }\n }\n };\n ContextMenu.prototype.setFolderItem = function (isTree) {\n this.menuType = 'folder';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (isTree) {\n var selectedTreeNode = select('[data-uid=\"' + this.parent.navigationpaneModule.treeObj.selectedNodes[0] + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {\n this.disabledItems.push('Open');\n }\n else {\n var 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 var 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 var 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 ContextMenu.prototype.setFileItem = function () {\n this.menuType = 'file';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.file.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (this.parent.selectedItems.length === 1) {\n var 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 ContextMenu.prototype.setLayoutItem = function (target) {\n this.menuType = 'layout';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' &&\n (closest(target, '#' + this.parent.element.id + CLS.LARGEICON_ID).getElementsByClassName(CLS.EMPTY).length !== 0))\n || (this.parent.view === 'Details' &&\n (closest(target, '#' + this.parent.element.id + CLS.GRID_ID).getElementsByClassName(CLS.EMPTY).length !== 0)))) {\n this.disabledItems.push('SelectAll');\n }\n else {\n this.disabledItems = this.disabledItems.filter(function (item) { return 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 ContextMenu.prototype.checkValidItem = function (nameEle) {\n if (!isNOU(select('#' + this.getMenuId(nameEle), this.currentElement))) {\n return 1;\n }\n else if (!isNOU(select('#' + nameEle, this.currentElement))) {\n return 2;\n }\n else {\n return -1;\n }\n };\n ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n var args = { target: this.menuTarget };\n this.parent.notify(events.menuItemData, args);\n return this.parent.itemData[0];\n }\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onSelect = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var itemText = args.item.id.substr((this.parent.element.id + '_cm_').length);\n var details;\n if (itemText === 'refresh' || itemText === 'newfolder' || itemText === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n if (this.parent.activeModule === 'navigationpane' && itemText === 'open') {\n details = [this.menuItemData];\n }\n else {\n details = this.parent.itemData;\n }\n }\n var eventArgs = {\n cancel: false,\n element: args.element,\n fileDetails: details,\n item: args.item\n };\n this.parent.trigger('menuClick', eventArgs, function (menuClickArgs) {\n var sItems;\n if (!menuClickArgs.cancel) {\n _this.isMenuItemClicked = true;\n 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 === 'navigationpane') {\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n _this.parent.folderPath = _this.parent.path;\n }\n else {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\n }\n }\n else {\n _this.parent.folderPath = '';\n }\n pasteHandler(_this.parent);\n break;\n case 'delete':\n for (var j = 0; j < details.length; j++) {\n if (!hasEditAccess(details[j])) {\n createDeniedDialog(_this.parent, details[j], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n /* istanbul ignore next */\n case 'download':\n for (var i = 0; i < details.length; i++) {\n if (!hasDownloadAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionDownload);\n return;\n }\n }\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.notify(events.downloadInit, {});\n }\n else if (_this.parent.selectedItems.length > 0) {\n Download(_this.parent, _this.parent.path, _this.parent.selectedItems);\n }\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'selectall':\n /* istanbul ignore next */\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'open':\n if (_this.parent.visitedItem && _this.parent.activeModule !== 'navigationpane') {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n else if (_this.parent.activeModule === 'navigationpane') {\n if (_this.parent.visitedItem) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n 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 ContextMenu.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.contextMenu.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n break;\n }\n }\n };\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.keyboardModule = new KeyboardEvents(this.contextMenu.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n ContextMenu.prototype.removeEventListener = function () {\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.keyboardModule.destroy();\n };\n ContextMenu.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n e.preventDefault();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n ContextMenu.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.contextMenu.destroy();\n this.targetElement = null;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.getItemData = function (data) {\n var items = [];\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getMenuId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n switch (data[i]) {\n case '|':\n item = { separator: true };\n break;\n case 'Open':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_OPEN };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_UPLOAD };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_CUT };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_COPY };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_PASTE };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DELETE };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_RENAME };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_NEWFOLDER };\n break;\n case 'Details':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DETAILS };\n break;\n case 'SortBy':\n item = {\n id: itemId, text: itemText, iconCss: CLS.ICON_SHORTBY,\n items: [\n {\n id: this.getMenuId('Name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : null\n },\n { separator: true },\n {\n id: this.getMenuId('Ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('Descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('None'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n /* istanbul ignore next */\n case 'View':\n item = {\n id: itemId, text: itemText, iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n items: [\n {\n id: this.getMenuId('largeiconsview'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? null : CLS.TB_OPTION_TICK\n },\n {\n id: this.getMenuId('detailsview'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_REFRESH };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_SELECTALL };\n break;\n /* istanbul ignore next */\n case 'Download':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DOWNLOAD };\n break;\n /* istanbul ignore next */\n default:\n item = { id: itemId, text: itemText };\n break;\n }\n items.push(item);\n }\n return items;\n };\n ContextMenu.prototype.getMenuId = function (id) {\n return this.parent.element.id + '_cm_' + id.split(' ').join('').toLowerCase();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","/**\n * Specifies the default locale of FileManager component\n */\nexport var defaultLocale = {\n 'NewFolder': 'New folder',\n 'Upload': 'Upload',\n 'Delete': 'Delete',\n 'Rename': 'Rename',\n 'Download': 'Download',\n 'Cut': 'Cut',\n 'Copy': 'Copy',\n 'Paste': 'Paste',\n 'SortBy': 'Sort by',\n 'Refresh': 'Refresh',\n 'Item-Selection': 'item selected',\n 'Items-Selection': 'items selected',\n 'View': 'View',\n 'Details': 'Details',\n 'SelectAll': 'Select all',\n 'Open': 'Open',\n 'Tooltip-NewFolder': 'New folder',\n 'Tooltip-Upload': 'Upload',\n 'Tooltip-Delete': 'Delete',\n 'Tooltip-Rename': 'Rename',\n 'Tooltip-Download': 'Download',\n 'Tooltip-Cut': 'Cut',\n 'Tooltip-Copy': 'Copy',\n 'Tooltip-Paste': 'Paste',\n 'Tooltip-SortBy': 'Sort by',\n 'Tooltip-Refresh': 'Refresh',\n 'Tooltip-Selection': 'Clear selection',\n 'Tooltip-View': 'View',\n 'Tooltip-Details': 'Details',\n 'Tooltip-SelectAll': 'Select all',\n 'Name': 'Name',\n 'Size': 'Size',\n 'DateModified': 'Modified',\n 'DateCreated': 'Date created',\n 'Path': 'Path',\n 'Modified': 'Modified',\n 'Created': 'Created',\n 'Location': 'Location',\n 'Type': 'Type',\n 'Permission': 'Permission',\n 'Ascending': 'Ascending',\n 'Descending': 'Descending',\n 'None': 'None',\n 'View-LargeIcons': 'Large icons',\n 'View-Details': 'Details',\n 'Search': 'Search',\n 'Button-Ok': 'OK',\n 'Button-Cancel': 'Cancel',\n 'Button-Yes': 'Yes',\n 'Button-No': 'No',\n 'Button-Create': 'Create',\n 'Button-Save': 'Save',\n 'Header-NewFolder': 'Folder',\n 'Content-NewFolder': 'Enter your folder name',\n 'Header-Rename': 'Rename',\n 'Content-Rename': 'Enter your new name',\n 'Header-Rename-Confirmation': 'Rename Confirmation',\n 'Content-Rename-Confirmation': 'If you change a file name extension, the file might become unstable. ' +\n 'Are you sure you want to change it?',\n 'Header-Delete': 'Delete File',\n 'Content-Delete': 'Are you sure you want to delete this file?',\n 'Header-Folder-Delete': 'Delete Folder',\n 'Content-Folder-Delete': 'Are you sure you want to delete this folder?',\n 'Header-Multiple-Delete': 'Delete Multiple Items',\n 'Content-Multiple-Delete': 'Are you sure you want to delete these {0} items?',\n 'Header-Duplicate': 'File/Folder exists',\n 'Content-Duplicate': '{0} already exists. Do you want to rename and paste?',\n 'Header-Upload': 'Upload Files',\n 'Error': 'Error',\n 'Validation-Empty': 'The file or folder name cannot be empty.',\n 'Validation-Invalid': 'The file or folder name {0} contains invalid characters. Please use a different name. ' +\n // eslint-disable-next-line no-useless-escape\n 'Valid file or folder names cannot end with a dot or space, and cannot contain any of the following characters: \\\\/:*?\\\"<>|',\n 'Validation-NewFolder-Exists': 'A file or folder with the name {0} already exists.',\n 'Validation-Rename-Exists': 'Cannot rename {0} to {1}: destination already exists.',\n 'Folder-Empty': 'This folder is empty',\n 'File-Upload': 'Drag files here to upload',\n 'Search-Empty': 'No results found',\n 'Search-Key': 'Try with different keywords',\n 'Filter-Empty': 'No results found',\n 'Filter-Key': 'Try with different filter',\n 'Sub-Folder-Error': 'The destination folder is the subfolder of the source folder.',\n 'Same-Folder-Error': 'The destination folder is the same as the source folder.',\n 'Access-Denied': 'Access Denied',\n 'Access-Details': 'You don\"t have permission to access this folder.',\n 'Header-Retry': 'File Already Exists',\n 'Content-Retry': 'A file with this name already exists in this folder. What would you like to do?',\n 'Button-Keep-Both': 'Keep both',\n 'Button-Replace': 'Replace',\n 'Button-Skip': 'Skip',\n 'ApplyAll-Label': 'Do this for all current items',\n 'KB': 'KB',\n 'Access-Message': '{0} is not accessible. You need permission to perform the {1} action.',\n 'Network-Error': 'NetworkError: Failed to send on XMLHTTPRequest: Failed to load',\n 'Server-Error': 'ServerError: Invalid response from'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isNullOrUndefined, L10n, closest, Collection, detach, selectAll, setStyleAttribute } 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 */\nvar FileManager = /** @class */ (function (_super) {\n __extends(FileManager, _super);\n function FileManager(options, element) {\n var _this = _super.call(this, options, element) || this;\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 _this.dragSelectedItems = [];\n FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu);\n return _this;\n }\n FileManager_1 = FileManager;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n FileManager.prototype.getModuleName = function () {\n return 'filemanager';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n FileManager.prototype.preRender = function () {\n if (isNOU(this.element.id) || this.element.id === '') {\n this.element.setAttribute('id', getUniqueID('filemanager'));\n }\n this.ensurePath();\n this.feParent = [];\n this.feFiles = [];\n setAttr(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.isDevice = Browser.isDevice;\n this.isMobile = this.checkMobile();\n if (this.isMobile) {\n this.setProperties({ navigationPaneSettings: { visible: false } }, true);\n }\n var ele = closest(this.element, '.e-bigger');\n this.isBigger = ele ? true : false;\n this.activeModule = (this.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n createSpinner({ target: this.element }, createElement);\n this.addWrapper();\n this.keyConfigs = {\n altN: 'alt+n',\n f5: 'f5',\n ctrlShift1: 'ctrl+shift+1',\n ctrlShift2: 'ctrl+shift+2',\n ctrlU: 'ctrl+u'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string} - returns the persisted data.\n * @hidden\n */\n FileManager.prototype.getPersistData = function () {\n var keyEntity = ['view', 'path', 'selectedItems'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n FileManager.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'breadcrumbbar',\n args: [this]\n });\n modules.push({\n member: 'largeiconsview',\n args: [this]\n });\n if (this.toolbarSettings.visible) {\n modules.push({\n member: 'toolbar',\n args: [this],\n 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 FileManager.prototype.render = function () {\n this.initialize();\n var slItems = isNOU(this.selectedItems) ? [] :\n this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);\n this.setProperties({ selectedItems: slItems }, true);\n this.fileView = this.view;\n this.isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n this.setRtl(this.enableRtl);\n this.addEventListeners();\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n if (this.fileView === 'Details') {\n this.largeiconsviewModule.element.classList.add(CLS.DISPLAY_NONE);\n }\n this.adjustHeight();\n if (isNOU(this.navigationpaneModule)) {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n this.wireEvents();\n this.renderComplete();\n };\n FileManager.prototype.ensurePath = function () {\n var currentPath = this.path;\n if (isNOU(currentPath)) {\n currentPath = '/';\n }\n if (currentPath.lastIndexOf('/') !== (currentPath.length - 1)) {\n currentPath = currentPath + '/';\n }\n this.originalPath = currentPath;\n var paths = currentPath.split('/');\n this.setProperties({ path: paths[0] + '/' }, true);\n this.pathNames = [];\n this.pathId = ['fe_tree'];\n this.itemData = [];\n };\n FileManager.prototype.initialize = function () {\n if (this.isMobile) {\n addClass([this.element], CLS.MOBILE);\n }\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n this.addCssClass(null, this.cssClass);\n this.renderFileUpload();\n };\n FileManager.prototype.addWrapper = function () {\n var headerWrap = this.createElement('div', { id: this.element.id + CLS.TOOLBAR_ID });\n this.element.appendChild(headerWrap);\n var layoutWrap = this.createElement('div', {\n id: this.element.id + CLS.LAYOUT_ID, className: CLS.LAYOUT\n });\n this.element.appendChild(layoutWrap);\n var navigationWrap = this.createElement('div', {\n id: this.element.id + CLS.NAVIGATION_ID, className: CLS.NAVIGATION\n });\n var treeWrap = this.createElement('div', {\n id: this.element.id + CLS.TREE_ID\n });\n navigationWrap.appendChild(treeWrap);\n var contentWrap = this.createElement('div', {\n id: this.element.id + CLS.CONTENT_ID, className: CLS.LAYOUT_CONTENT\n });\n this.breadCrumbBarNavigation = this.createElement('div', {\n id: this.element.id + CLS.BREADCRUMBBAR_ID,\n className: CLS.BREADCRUMBS\n });\n contentWrap.appendChild(this.breadCrumbBarNavigation);\n var gridWrap = this.createElement('div', {\n id: this.element.id + CLS.GRID_ID\n });\n contentWrap.appendChild(gridWrap);\n var largeiconWrap = this.createElement('div', {\n id: this.element.id + CLS.LARGEICON_ID,\n className: CLS.LARGE_ICONS, attrs: { 'role': 'group' }\n });\n contentWrap.appendChild(largeiconWrap);\n var overlay = this.createElement('span', { className: CLS.OVERLAY });\n contentWrap.appendChild(overlay);\n var paneSettings;\n if (!this.enableRtl) {\n layoutWrap.appendChild(navigationWrap);\n layoutWrap.appendChild(contentWrap);\n paneSettings = [\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n },\n { size: '75%', min: '270px' }\n ];\n }\n else {\n layoutWrap.appendChild(contentWrap);\n layoutWrap.appendChild(navigationWrap);\n paneSettings = [\n { size: '75%', min: '270px' },\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n }\n ];\n }\n this.splitterObj = new Splitter({\n paneSettings: paneSettings,\n width: '100%',\n enableRtl: false,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n resizing: this.splitterResize.bind(this)\n });\n this.splitterObj.isStringTemplate = true;\n this.splitterObj.appendTo(layoutWrap);\n var dialogWrap = this.createElement('div', { id: this.element.id + CLS.DIALOG_ID });\n this.element.appendChild(dialogWrap);\n var menuWrap = this.createElement('ul', { id: this.element.id + CLS.CONTEXT_MENU_ID });\n this.element.appendChild(menuWrap);\n var dialogImgWrap = this.createElement('div', { id: this.element.id + CLS.IMG_DIALOG_ID });\n this.element.appendChild(dialogImgWrap);\n var extnDialogWrap = this.createElement('div', { id: this.element.id + CLS.EXTN_DIALOG_ID });\n this.element.appendChild(extnDialogWrap);\n var uploadDialogWrap = this.createElement('div', { id: this.element.id + CLS.UPLOAD_DIALOG_ID });\n this.element.appendChild(uploadDialogWrap);\n };\n FileManager.prototype.adjustHeight = function () {\n var toolbar = select('#' + this.element.id + CLS.TOOLBAR_ID, this.element);\n var toolBarHeight = toolbar ? toolbar.offsetHeight : 0;\n if (this.splitterObj) {\n this.splitterObj.height = (this.element.clientHeight - toolBarHeight).toString();\n this.splitterObj.dataBind();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.splitterResize = function () {\n this.notify(events.splitterResize, {});\n };\n FileManager.prototype.splitterAdjust = function () {\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n if (this.navigationPaneSettings.visible) {\n this.splitterObj.expand(this.enableRtl ? 1 : 0);\n bar.classList.remove(CLS.DISPLAY_NONE);\n }\n else {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n };\n FileManager.prototype.addCssClass = function (oldOne, newOne) {\n if (!isNOU(oldOne) && oldOne !== '') {\n removeClass([this.element], oldOne.split(' '));\n }\n if (!isNOU(newOne) && newOne !== '') {\n addClass([this.element], newOne.split(' '));\n }\n };\n FileManager.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n FileManager.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n FileManager.prototype.onContextMenu = function (e) {\n e.preventDefault();\n };\n FileManager.prototype.checkMobile = function () {\n return (/iphone|ipod|android|blackberry|opera|mini|windows\\sce|palm|smartphone|iemobile/i.test(Browser.userAgent.toLowerCase())\n && /mobile/i.test(Browser.userAgent.toLowerCase()));\n };\n FileManager.prototype.renderFileUpload = function () {\n var id = this.element.id + CLS.UPLOAD_ID;\n var uploadEle = this.createElement('input', { id: id, attrs: { name: 'uploadFiles', type: 'file' } });\n this.element.appendChild(uploadEle);\n this.uploadDialogObj = new Dialog({\n header: getLocaleText(this, 'Header-Upload'),\n content: uploadEle,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: false,\n isModal: true,\n width: '350px',\n target: this.popupTarget ? this.popupTarget : '#' + this.element.id,\n cssClass: getCssClass(this, this.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: this.locale,\n allowDragging: true,\n position: { X: 'center', Y: 'center' },\n enableRtl: this.enableRtl,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n open: this.onOpen.bind(this),\n close: this.onClose.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n });\n this.uploadDialogObj.appendTo('#' + this.element.id + CLS.UPLOAD_DIALOG_ID);\n this.renderUploadBox();\n };\n FileManager.prototype.renderUploadBox = function () {\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n this.uploadObj = new Uploader({\n dropArea: select('#' + this.element.id + CLS.CONTENT_ID, this.element),\n asyncSettings: {\n saveUrl: uploadUrl,\n removeUrl: uploadUrl\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n removing: this.onRemoving.bind(this),\n canceling: this.onCancel.bind(this),\n clearing: this.onClearing.bind(this),\n selected: this.onSelected.bind(this),\n success: this.onUploadSuccess.bind(this),\n failure: this.onUploadFailure.bind(this),\n autoUpload: this.uploadSettings.autoUpload,\n minFileSize: this.uploadSettings.minFileSize,\n maxFileSize: this.uploadSettings.maxFileSize,\n allowedExtensions: this.uploadSettings.allowedExtensions,\n directoryUpload: this.uploadSettings.directoryUpload,\n fileListRendering: this.onFileListRender.bind(this)\n });\n this.uploadObj.appendTo('#' + this.element.id + CLS.UPLOAD_ID);\n };\n FileManager.prototype.onFileListRender = function (args) {\n this.trigger('uploadListCreate', args);\n };\n FileManager.prototype.updateUploader = function () {\n this.uploadObj.autoUpload = this.uploadSettings.autoUpload;\n this.uploadObj.minFileSize = this.uploadSettings.minFileSize;\n this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;\n this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;\n this.uploadObj.directoryUpload = this.uploadSettings.directoryUpload;\n this.uploadObj.dataBind();\n };\n FileManager.prototype.onBeforeOpen = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onOpen = function () {\n this.isOpened = true;\n this.uploadDialogObj.element.focus();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupOpen', args);\n };\n FileManager.prototype.onClose = function () {\n this.isOpened = false;\n this.uploadObj.clearAll();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupClose', args);\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploading = function (args) {\n var action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n if (args.fileData.name === this.retryArgs[i].file.name) {\n action = this.retryArgs[i].action;\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n var ajaxSettings = {\n url: uploadUrl,\n type: 'POST',\n mode: true,\n dataType: null,\n contentType: null,\n data: JSON.stringify(args.customFormData),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n this.uploadEventArgs = { action: 'Upload', ajaxSettings: ajaxSettings, cancel: false };\n this.trigger('beforeSend', this.uploadEventArgs, function (uploadEventArgs) {\n args.customFormData = JSON.parse(getValue('data', uploadEventArgs.ajaxSettings));\n args.cancel = uploadEventArgs.cancel;\n var eventArgs = {\n cancel: false,\n httpRequest: args.currentRequest\n };\n if (typeof getValue('beforeSend', uploadEventArgs.ajaxSettings) === 'function') {\n getValue('beforeSend', uploadEventArgs.ajaxSettings)(eventArgs);\n if (getValue('cancel', eventArgs)) {\n args.cancel = getValue('cancel', eventArgs);\n }\n }\n });\n };\n FileManager.prototype.onRemoving = function () {\n this.onFileUploadSuccess({ count: 1 });\n if (this.uploadObj.getFilesData().length === 1) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onCancel = function (args) {\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': 'remove' }, { 'data': data }];\n };\n /* istanbul ignore next */\n FileManager.prototype.onClearing = function () {\n if (this.isOpened) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onSelected = function (args) {\n if (args.filesData.length === 0) {\n return;\n }\n this.uploadingCount = args.filesData.length;\n this.uploadedCount = 0;\n var details = getPathObject(this);\n if (!hasUploadAccess(details)) {\n args.cancel = true;\n createDeniedDialog(this, details, events.permissionUpload);\n return;\n }\n this.uploadDialogObj.show();\n };\n FileManager.prototype.onFileUploadSuccess = function (args) {\n this.uploadedCount = this.uploadedCount + args.count;\n if (this.uploadSettings.autoClose && (this.uploadingCount === this.uploadedCount)) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploadSuccess = function (files) {\n var args = { action: 'Upload', result: files };\n this.trigger('success', args);\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n read(this, events.pathChanged, this.path);\n this.onFileUploadSuccess({ count: 1 });\n if (typeof getValue('onSuccess', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', this.uploadEventArgs.ajaxSettings)();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploadFailure = function (files) {\n var response = getValue('response', files);\n var statusText = getValue('statusText', response);\n if (statusText !== '') {\n setValue('statusText', statusText, files);\n }\n var args = { action: 'Upload', error: files };\n this.trigger('failure', args);\n if (getValue('statusCode', response) === 400) {\n this.retryFiles.push(getValue('file', files));\n if (!this.isRetryOpened) {\n createExtDialog(this, 'UploadRetry');\n }\n }\n if (typeof getValue('onFailure', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onFailure', this.uploadEventArgs.ajaxSettings)();\n }\n };\n FileManager.prototype.onInitialEnd = function () {\n setNextPath(this, this.path);\n };\n FileManager.prototype.addEventListeners = function () {\n this.on(events.beforeRequest, this.showSpinner, this);\n this.on(events.afterRequest, this.hideSpinner, this);\n this.on(events.initialEnd, this.onInitialEnd, this);\n this.on(events.detailsInit, this.onDetailsInit, this);\n this.on(events.skipUpload, this.onFileUploadSuccess, this);\n EventHandler.add(this.element, 'contextmenu', this.onContextMenu, this);\n };\n FileManager.prototype.removeEventListeners = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.beforeRequest, this.showSpinner);\n this.off(events.afterRequest, this.hideSpinner);\n this.off(events.initialEnd, this.onInitialEnd);\n this.off(events.detailsInit, this.onDetailsInit);\n this.off(events.skipUpload, this.onFileUploadSuccess);\n EventHandler.remove(this.element, 'contextmenu', this.onContextMenu);\n };\n FileManager.prototype.onDetailsInit = function () {\n if (isNOU(this.activeModule)) {\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n }\n };\n FileManager.prototype.resizeHandler = function () {\n this.adjustHeight();\n this.notify(events.resizeEnd, {});\n };\n FileManager.prototype.keyActionHandler = function (e) {\n var uploadEle;\n switch (e.action) {\n case 'altN':\n e.preventDefault();\n this.itemData = [getPathObject(this)];\n if (!hasContentAccess(this.itemData[0])) {\n createDeniedDialog(this, this.itemData[0], events.permissionEditContents);\n }\n else {\n createDialog(this, 'NewFolder');\n }\n break;\n case 'f5':\n e.preventDefault();\n refresh(this);\n break;\n /* istanbul ignore next */\n case 'ctrlShift1':\n e.preventDefault();\n this.fileView = 'Details';\n this.setProperties({ view: 'Details' }, true);\n showSpinner(this.element);\n updateLayout(this, 'Details');\n break;\n /* istanbul ignore next */\n case 'ctrlShift2':\n e.preventDefault();\n this.fileView = 'LargeIcons';\n this.setProperties({ view: 'LargeIcons' }, true);\n showSpinner(this.element);\n updateLayout(this, 'LargeIcons');\n break;\n case 'ctrlU':\n e.preventDefault();\n if (this.toolbarSettings.items.indexOf('Upload') !== -1) {\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n }\n break;\n }\n };\n FileManager.prototype.wireSelectOnDragEvent = function (isBind) {\n if (isNOU(this.view)) {\n return;\n }\n if (isBind) {\n this.viewElem = this.view === 'LargeIcons' ? this.largeiconsviewModule.element : this.element.querySelector('.e-gridcontent');\n }\n if (!this.viewElem) {\n return;\n }\n if (isBind) {\n if (this.allowMultiSelection) {\n EventHandler.add(this.viewElem, 'mousedown', this.onDragStart, this);\n this.on(events.layoutChange, this.onLayoutChange, this);\n this.on(events.selectionChanged, this.onLayoutChange, this);\n }\n }\n else {\n EventHandler.remove(this.viewElem, 'mousedown', this.onDragStart);\n this.off(events.layoutChange, this.onLayoutChange);\n this.off(events.selectionChanged, this.onLayoutChange);\n }\n };\n FileManager.prototype.wireEvents = function () {\n if (this.enableRangeSelection) {\n this.wireSelectOnDragEvent(true);\n }\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n FileManager.prototype.unWireEvents = function () {\n this.wireSelectOnDragEvent(false);\n EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\n };\n FileManager.prototype.onDragStart = function (event) {\n if (this.viewElem) {\n if (this.allowDragAndDrop) {\n var targetElement = closest(event.target, this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-fe-text');\n if (targetElement) {\n return;\n }\n }\n event.preventDefault();\n this.dragX = event.pageX;\n this.dragY = event.pageY;\n if (!this.dragSelectElement) {\n this.dragSelectElement = createElement('div', {\n id: this.element.id + '_drag',\n className: 'e-filemanager e-drag-select',\n styles: 'left: ' + this.dragX + 'px;top: ' + this.dragY + 'px;'\n });\n document.body.append(this.dragSelectElement);\n }\n EventHandler.add(document, 'mouseup', this.onDragStop, this);\n EventHandler.add(this.viewElem, 'mousemove', this.onDrag, this);\n EventHandler.add(this.dragSelectElement, 'mousemove', this.onDrag, this);\n }\n };\n FileManager.prototype.onDrag = function (event) {\n event.stopPropagation();\n if (this.dragSelectElement) {\n var diffX = event.pageX - this.dragX;\n var diffY = event.pageY - this.dragY;\n setStyleAttribute(this.dragSelectElement, {\n 'left': diffX < 0 ? this.dragX + diffX + 'px' : this.dragX + 'px', 'top': diffY < 0 ? this.dragY + diffY + 'px' : this.dragY + 'px',\n 'height': Math.abs(diffY) + 'px', 'width': Math.abs(diffX) + 'px'\n });\n this.selectItems();\n }\n else {\n EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);\n }\n };\n FileManager.prototype.onDragStop = function () {\n if (this.viewElem) {\n EventHandler.remove(document, 'mouseup', this.onDragStop);\n EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);\n }\n if (this.dragSelectElement) {\n EventHandler.remove(this.dragSelectElement, 'mousemove', this.onDrag);\n if (this.dragSelectElement.clientHeight > 0 && this.dragSelectElement.clientWidth > 0) {\n this.setProperties({ selectedItems: this.dragSelectedItems });\n }\n this.dragSelectedItems = [];\n detach(this.dragSelectElement);\n this.dragSelectElement = null;\n }\n };\n FileManager.prototype.selectItems = function () {\n this.dragSelectedItems = [];\n var dragRect = this.dragSelectElement.getBoundingClientRect();\n var allItems = selectAll(this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-row', this.viewElem);\n removeClass(selectAll('.e-active', this.viewElem), ['e-active', 'e-focus']);\n removeClass(selectAll('.e-check', this.viewElem), ['e-check']);\n for (var _i = 0, allItems_1 = allItems; _i < allItems_1.length; _i++) {\n var item = allItems_1[_i];\n var itemRect = item.getBoundingClientRect();\n if (!(dragRect.right < itemRect.left || dragRect.left > itemRect.right\n || dragRect.bottom < itemRect.top || dragRect.top > itemRect.bottom)\n && (this.dragSelectElement.clientHeight > 0 && this.dragSelectElement.clientWidth > 0)) {\n if (this.viewElem.classList.contains('e-large-icons')) {\n item.classList.add('e-active');\n this.dragSelectedItems.push(item.getAttribute('title'));\n }\n else {\n addClass(selectAll('.e-rowcell', item), ['e-active']);\n this.dragSelectedItems.push(item.querySelector('.e-drag-text').textContent);\n }\n item.querySelector('.e-frame').classList.add('e-check');\n }\n }\n };\n FileManager.prototype.onLayoutChange = function () {\n if (this.enableRangeSelection) {\n this.unWireEvents();\n this.wireEvents();\n }\n };\n FileManager.prototype.setPath = function () {\n this.setProperties({ selectedItems: [] }, true);\n this.ensurePath();\n this.notify(events.clearPathInit, { selectedNode: this.pathId[0] });\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FileManager} newProp\n * @param {FileManager} oldProp\n * @returns void\n * @private\n */\n /* istanbul ignore next */\n FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var height;\n var requiresRefresh = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'ajaxSettings':\n this.ajaxSettingSetModel(newProp);\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showItemCheckBoxes':\n this.showItemCheckBoxes = newProp.showItemCheckBoxes;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableVirtualization':\n this.enableVirtualization = newProp.enableVirtualization;\n requiresRefresh = true;\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 'enableRangeSelection':\n this.wireSelectOnDragEvent(false);\n if (newProp.enableRangeSelection) {\n this.wireSelectOnDragEvent(true);\n }\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n requiresRefresh = true;\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n requiresRefresh = true;\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 if (this.view === 'Details') {\n var columns = this.detailsViewSettings.columns;\n var isValidSortField = !isNullOrUndefined(columns) &&\n columns.findIndex(function (col) { return col.field === _this.sortBy; }) !== -1;\n if (!isValidSortField) {\n return;\n }\n refresh(this);\n this.notify(events.sortByChange, {});\n this.notify(events.sortColumn, {});\n }\n else {\n refresh(this);\n this.notify(events.sortByChange, {});\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 requiresRefresh = true;\n break;\n }\n }\n if (requiresRefresh) {\n this.refresh();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.ajaxSettingSetModel = function (newProp) {\n if (!isNullOrUndefined(newProp.ajaxSettings.url)) {\n this.setProperties({ ajaxSettings: { url: newProp.ajaxSettings.url } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.uploadUrl)) {\n this.setProperties({ ajaxSettings: { uploadUrl: newProp.ajaxSettings.uploadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.downloadUrl)) {\n this.setProperties({ ajaxSettings: { downloadUrl: newProp.ajaxSettings.downloadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.getImageUrl)) {\n this.setProperties({ ajaxSettings: { getImageUrl: newProp.ajaxSettings.getImageUrl } }, true);\n }\n this.setProperties({ path: '/' }, true);\n this.setProperties({ selectedItems: [] }, true);\n _super.prototype.refresh.call(this);\n };\n /* istanbul ignore next */\n FileManager.prototype.localeSetModelOption = function (newProp) {\n this.uploadObj.locale = newProp.locale;\n _super.prototype.refresh.call(this);\n };\n /**\n * Triggers when the component is destroyed.\n *\n * @returns {void}\n */\n FileManager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.refreshing) {\n this.notify(events.destroy, {});\n }\n this.uploadObj.destroy();\n this.uploadObj = null;\n this.uploadDialogObj.destroy();\n this.uploadDialogObj = null;\n this.splitterObj.destroy();\n this.splitterObj = null;\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.dialogObj = null;\n }\n if (this.viewerObj) {\n this.viewerObj.destroy();\n this.viewerObj = null;\n }\n if (this.extDialogObj) {\n this.extDialogObj.destroy();\n this.extDialogObj = null;\n }\n this.element.removeAttribute('style');\n this.element.removeAttribute('tabindex');\n this.removeEventListeners();\n this.unWireEvents();\n this.addCssClass(this.cssClass, null);\n removeClass([this.element], [CLS.RTL, CLS.MOBILE, CLS.CHECK_SELECT]);\n this.element.innerHTML = '';\n this.breadCrumbBarNavigation = null;\n this.activeElements = null;\n this.virtualDragElement = null;\n this.visitedItem = null;\n _super.prototype.destroy.call(this);\n this.virtualizationModule = null;\n this.navigationpaneModule = null;\n this.toolbarModule = null;\n this.contextmenuModule = null;\n this.largeiconsviewModule = null;\n this.detailsviewModule = null;\n this.breadcrumbbarModule = null;\n this.viewElem = null;\n this.dragSelectElement = null;\n this.dragSelectedItems = null;\n };\n /**\n * Creates a new folder in file manager.\n *\n * @param {string} name – Specifies the name of new folder in current path.\n * If it is not specified, then the default new folder dialog will be opened.\n * @returns {void}\n */\n FileManager.prototype.createFolder = function (name) {\n this.notify(events.methodCall, { action: 'createFolder' });\n var details = [getPathObject(this)];\n this.itemData = details;\n if (name) {\n if (/[/\\\\|*?\"<>:]/.test(name)) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(this, 'Validation-Invalid').replace('{0}', '\"' + name + '\"'),\n fileExists: null\n }\n };\n createDialog(this, 'Error', result);\n }\n else {\n if (!hasContentAccess(details[0])) {\n createDeniedDialog(this, details[0], events.permissionEditContents);\n }\n else {\n createFolder(this, name);\n }\n }\n }\n else {\n createNewFolder(this);\n }\n };\n /**\n * Deletes the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to delete the nested level folders or\n * files, then specify the filter path along with name of the folders or files when performing the search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then delete confirmation dialog will be opened for selected item.\n *\n * @returns {void}\n */\n FileManager.prototype.deleteFiles = function (ids) {\n this.notify(events.methodCall, { action: 'deleteFiles', ids: ids });\n };\n /**\n * Disables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, false);\n }\n };\n /**\n * Downloads the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to download the nested level folders\n * or files, then specify the filter path along with name of the folders or files when performing search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then the selected items will be downloaded.\n *\n * @returns {void}\n */\n FileManager.prototype.downloadFiles = function (ids) {\n this.notify(events.methodCall, { action: 'downloadFiles', ids: ids });\n };\n /**\n * Enables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be enabled.\n * @returns {void}\n */\n FileManager.prototype.enableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, true);\n }\n };\n /**\n * Disables the specified context menu items in file manager. This method is used only in the menuOpen event.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.disableItem(items);\n }\n };\n /**\n * Returns the index position of given current context menu item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns menu item index.\n */\n FileManager.prototype.getMenuItemIndex = function (item) {\n if (this.contextmenuModule) {\n return this.contextmenuModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Returns the index position of given toolbar item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns toolbar item index.\n */\n FileManager.prototype.getToolbarItemIndex = function (item) {\n if (this.toolbarModule) {\n return this.toolbarModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Display the custom filtering files in file manager.\n *\n * @param {Object} filterData - Specifies the custom filter details along with custom file action name,\n * which needs to be sent to the server side. If you do not specify the details, then default action name will be `filter`.\n *\n * @returns {void}\n */\n FileManager.prototype.filterFiles = function (filterData) {\n this.filterData = filterData ? filterData : null;\n this.setProperties({ selectedItems: [] }, true);\n this.notify(events.selectionChanged, {});\n this.isFiltered = true;\n if (this.breadcrumbbarModule.searchObj.element.value !== '') {\n this.breadcrumbbarModule.searchObj.element.value = '';\n }\n filter(this, events.filterEnd);\n };\n /**\n * Gets the details of the selected files in the file manager.\n *\n * @returns {Object[]} - returns selected files.\n */\n FileManager.prototype.getSelectedFiles = function () {\n this.notify(events.updateSelectionData, {});\n return this.itemData;\n };\n /**\n * Opens the corresponding file or folder from the given unique identifier.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to open the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n *\n * @returns {void}\n */\n FileManager.prototype.openFile = function (id) {\n this.notify(events.methodCall, { action: 'openFile', id: id });\n };\n /**\n * Refreshes the folder files of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshFiles = function () {\n refresh(this);\n };\n /**\n * Refreshes the layout of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshLayout = function () {\n this.adjustHeight();\n this.notify(events.layoutRefresh, {});\n };\n /**\n * Selects the entire folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.selectAll = function () {\n this.notify(events.methodCall, { action: 'selectAll' });\n };\n /**\n * Specifies the method that must be invoked to traverse the path backwards in the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.traverseBackward = function () {\n if (this.pathNames.length > 1 && this.breadcrumbbarModule.searchObj.element.value === '' && !this.isFiltered) {\n this.pathId.pop();\n this.pathNames.pop();\n var newPath = this.pathNames.slice(1).join('/');\n newPath = newPath === '' ? '/' : '/' + newPath + '/';\n this.setProperties({ path: newPath }, true);\n read(this, events.pathChanged, this.path);\n var treeNodeId = this.pathId[this.pathId.length - 1];\n this.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * Deselects the currently selected folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.clearSelection = function () {\n this.notify(events.methodCall, { action: 'clearSelection' });\n };\n /**\n * Renames the file or folder with given new name in file manager.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to rename the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n * If it is not specified, then rename dialog will be opened for selected item.\n *\n * @param {string} name – Specifies the new name of the file or folder in current path. If it is not specified, then rename dialog\n * will be opened for given identifier.\n *\n * @returns {void}\n */\n FileManager.prototype.renameFile = function (id, name) {\n this.notify(events.methodCall, { action: 'renameFile', id: id, newName: name });\n };\n /**\n * Opens the upload dialog in file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.uploadFiles = function () {\n var 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 FileManager.prototype.closeDialog = function () {\n closePopup(this);\n };\n /**\n * Specifies the direction of FileManager\n *\n * @param {boolean} rtl - specifies rtl parameter.\n * @returns {void}\n */\n FileManager.prototype.setRtl = function (rtl) {\n if (rtl) {\n this.addCssClass(null, CLS.RTL);\n }\n else {\n this.addCssClass(CLS.RTL, null);\n }\n if (this.uploadObj) {\n this.uploadDialogObj.enableRtl = rtl;\n this.uploadObj.enableRtl = rtl;\n }\n };\n var FileManager_1;\n __decorate([\n Complex({}, AjaxSettings)\n ], FileManager.prototype, \"ajaxSettings\", void 0);\n __decorate([\n Property([])\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 Property(false)\n ], FileManager.prototype, \"enableRangeSelection\", 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, \"menuClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"uploadListCreate\", void 0);\n FileManager = FileManager_1 = __decorate([\n NotifyPropertyChanges\n ], FileManager);\n return FileManager;\n}(Component));\nexport { FileManager };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Toolbar as BaseToolbar } from '@syncfusion/ej2-navigations';\nimport { select, isNullOrUndefined as isNOU, closest, selectAll } from '@syncfusion/ej2-base';\nimport { createDialog } from '../pop-up/dialog';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { refresh, getPathObject, getLocaleText, getCssClass, sortbyClickHandler } from '../common/utility';\nimport { createDeniedDialog, updateLayout } from '../common/utility';\nimport { GetDetails } from '../common/operations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { cutFiles, copyFiles, pasteHandler, hasEditAccess } from '../common/index';\nimport { doDownload, createNewFolder, uploadItem } from '../common/index';\n/**\n * Toolbar module\n */\nvar Toolbar = /** @class */ (function () {\n /**\n * Constructor for the Toolbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies the parent element.\n * @private\n */\n function Toolbar(parent) {\n this.default = ['Delete', 'Rename', 'Download', 'Cut', 'Copy', 'Paste'];\n this.single = ['Delete', 'Rename', 'Download', 'Cut', 'Copy'];\n this.multiple = ['Delete', 'Download', 'Cut', 'Copy', 'Refresh'];\n this.selection = ['NewFolder', 'Upload', 'SortBy', 'Refresh'];\n this.parent = parent;\n this.render();\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n var _this = this;\n this.items = this.toolbarItemData(this.getItems(this.parent.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj = new BaseToolbar({\n items: _this.items,\n created: _this.toolbarCreateHandler.bind(_this),\n overflowMode: 'Popup',\n clicked: _this.onClicked.bind(_this),\n enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n enableRtl: _this.parent.enableRtl\n });\n _this.toolbarObj.isStringTemplate = true;\n _this.toolbarObj.root = _this.parent.root ? _this.parent.root : _this.parent;\n _this.toolbarObj.appendTo('#' + _this.parent.element.id + CLS.TOOLBAR_ID);\n });\n };\n Toolbar.prototype.getItemIndex = function (item) {\n var itemId = this.getId(item);\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i].id === itemId) {\n return i;\n }\n }\n return -1;\n };\n Toolbar.prototype.getItems = function (items) {\n var currItems = items.slice();\n if (this.parent.isDevice && this.parent.allowMultiSelection) {\n currItems.push('SelectAll');\n }\n if (this.parent.toolbarItems.length > 0) {\n currItems = this.parent.toolbarItems.map(function (item) { return item.name; });\n }\n return currItems;\n };\n /* istanbul ignore next */\n Toolbar.prototype.onClicked = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var tool = args.item.id.substr((this.parent.element.id + '_tb_').length);\n var details;\n if (tool === 'refresh' || tool === 'newfolder' || tool === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = { cancel: false, fileDetails: details, item: args.item };\n this.parent.trigger('toolbarClick', eventArgs, function (toolbarClickArgs) {\n var sItems;\n var target;\n if (!toolbarClickArgs.cancel) {\n switch (tool) {\n case 'sortby':\n target = closest(args.originalEvent.target, '.' + CLS.TB_ITEM);\n if (target && target.classList.contains('e-toolbar-popup')) {\n args.cancel = true;\n }\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'delete':\n for (var i = 0; i < details.length; i++) {\n if (!hasEditAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'paste':\n _this.parent.folderPath = '';\n pasteHandler(_this.parent);\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'download':\n doDownload(_this.parent);\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n case 'selectall':\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'selection':\n _this.parent.notify(events.clearAllInit, {});\n break;\n }\n }\n });\n };\n Toolbar.prototype.toolbarCreateHandler = function () {\n var _this = this;\n if (!isNOU(select('#' + this.getId('SortBy'), this.parent.element))) {\n var items = [\n { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '' },\n { separator: true },\n { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('none'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '' }\n ];\n this.buttonObj = new DropDownButton({\n items: items, cssClass: getCssClass(this.parent, CLS.ROOT_POPUP),\n select: sortbyClickHandler.bind(this, this.parent),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl, iconCss: CLS.ICON_SHORTBY\n });\n this.buttonObj.isStringTemplate = true;\n this.buttonObj.appendTo('#' + this.getId('SortBy'));\n }\n if (!isNOU(select('#' + this.getId('View'), this.parent.element))) {\n var gridSpan_1 = '<span class=\"' + CLS.ICON_GRID + ' ' + CLS.MENU_ICON + '\"></span>';\n var largeIconSpan_1 = '<span class=\"' + CLS.ICON_LARGE + ' ' + CLS.MENU_ICON + '\"></span>';\n var 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: function (args) {\n var tickIcon = args.item.iconCss;\n var viewText = args.item.text === getLocaleText(_this.parent, 'View-LargeIcons');\n var iconClass = tickIcon ? ' e-menu-icon ' + tickIcon : '';\n args.element.innerHTML = '<span class=\"' + iconClass + '\"></span>' + (viewText ? largeIconSpan_1 : gridSpan_1) + args.item.text;\n var 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 var btnElement = selectAll('.e-btn', this.toolbarObj.element);\n var _loop_1 = function (btnCount) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n this.parent.refreshLayout();\n };\n Toolbar.prototype.updateSortByButton = function () {\n if (this.buttonObj) {\n var items = this.buttonObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n if (this.parent.sortBy === 'dateModified' || this.parent.sortBy === 'dateCreated') {\n items[itemCount].iconCss = this.parent.sortBy === this.parent.sortBy ? CLS.TB_OPTION_DOT : '';\n }\n else {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.getPupupId = function (id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n };\n Toolbar.prototype.layoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (args.item.id === this.getPupupId('large')) {\n updateLayout(this.parent, 'LargeIcons');\n }\n }\n else {\n if (args.item.id === this.getPupupId('details')) {\n updateLayout(this.parent, 'Details');\n }\n }\n };\n Toolbar.prototype.toolbarItemData = function (data) {\n var items = [];\n var mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var propItem = void 0;\n if (this.parent.toolbarItems.length > 0) {\n propItem = this.getItemModel(this.parent.toolbarItems[parseInt(i.toString(), 10)]);\n }\n var itemId = this.getId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n var itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n switch (data[i]) {\n case '|':\n item = { type: 'Separator' };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_UPLOAD, showTextOn: mode };\n break;\n case 'SortBy': {\n var spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\n if (propItem && propItem.text) {\n spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + propItem.text + '</span>';\n }\n item = {\n id: itemId, tooltipText: itemTooltip,\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\">' + spanElement + '</button>'\n };\n break;\n }\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: CLS.ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View': {\n var viewText = void 0;\n if (propItem && propItem.text) {\n viewText = propItem.text;\n }\n else {\n viewText = getLocaleText(this.parent, 'View');\n }\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\" aria-label=' +\n viewText + '></button>'\n };\n break;\n }\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, template: '' };\n break;\n }\n if (this.parent.toolbarItems.length > 0 && propItem) {\n var mergedItems = Object.assign({}, item, propItem);\n items.push(mergedItems);\n }\n else {\n items.push(item);\n }\n }\n return items;\n };\n Toolbar.prototype.getItemModel = function (propItem) {\n var item = {};\n if (propItem.id) {\n item.id = propItem.id;\n }\n if (propItem.text) {\n item.text = propItem.text;\n }\n if (propItem.tooltipText) {\n item.tooltipText = propItem.tooltipText;\n }\n if (propItem.prefixIcon) {\n item.prefixIcon = propItem.prefixIcon;\n }\n if (propItem.cssClass) {\n item.cssClass = propItem.cssClass;\n }\n if (propItem.showTextOn !== 'Both') {\n item.showTextOn = propItem.showTextOn;\n }\n if (propItem.template) {\n item.template = propItem.template;\n }\n if (propItem.disabled) {\n item.disabled = propItem.disabled;\n }\n if (propItem.width !== 'auto') {\n item.width = propItem.width;\n }\n if (propItem.suffixIcon) {\n item.suffixIcon = propItem.suffixIcon;\n }\n if (propItem.align !== 'Left') {\n item.align = propItem.align;\n }\n if (propItem.overflow !== 'None') {\n item.overflow = propItem.overflow;\n }\n if (propItem.htmlAttributes) {\n item.htmlAttributes = propItem.htmlAttributes;\n }\n if (propItem.type !== 'Button') {\n item.type = propItem.type;\n }\n if (propItem.visible !== true) {\n item.visible = propItem.visible;\n }\n if (propItem.showAlwaysInPopup) {\n item.showAlwaysInPopup = propItem.showAlwaysInPopup;\n }\n if (propItem.tabIndex !== -1) {\n item.tabIndex = propItem.tabIndex;\n }\n return item;\n };\n Toolbar.prototype.getId = function (id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n };\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.showPaste, this.showPaste, this);\n this.parent.on(events.hidePaste, this.hidePaste, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.sortByChange, this.updateSortByButton, this);\n };\n Toolbar.prototype.reRenderToolbar = function (e) {\n var _this = this;\n var itemsToProcess = [];\n if (this.parent.toolbarItems.length > 0) {\n itemsToProcess = this.parent.toolbarItems.map(function (item) {\n return item.name;\n });\n }\n else if (e.newProp.toolbarSettings.items !== undefined) {\n itemsToProcess = e.newProp.toolbarSettings.items.map(function (item) {\n return item.trim();\n });\n }\n if (itemsToProcess.length > 0) {\n this.items = this.toolbarItemData(this.getItems(itemsToProcess));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n if (_this.buttonObj) {\n _this.buttonObj.destroy();\n }\n if (_this.layoutBtnObj) {\n _this.layoutBtnObj.destroy();\n }\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj.items = _this.items;\n _this.toolbarObj.dataBind();\n _this.toolbarCreateHandler();\n });\n }\n };\n Toolbar.prototype.onSelectionChanged = function () {\n this.hideStatus();\n this.hideItems(this.single, true);\n this.hideItems(this.selection, false);\n if (this.parent.selectedItems.length === 1) {\n this.hideItems(this.single, false);\n this.hideItems(this.selection, true);\n }\n else if (this.parent.selectedItems.length > 1) {\n this.hideItems(this.multiple, false);\n this.hideItems(this.selection, true);\n }\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele && !this.parent.enableVirtualization) {\n var txt = void 0;\n if (this.parent.selectedItems.length === 1) {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Item-Selection');\n }\n else {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Items-Selection');\n }\n select('.e-tbar-btn-text', ele).textContent = txt;\n this.toolbarObj.hideItem(ele.parentElement, false);\n }\n };\n Toolbar.prototype.hideItems = function (tools, toHide) {\n for (var i = 0; i < tools.length; i++) {\n var ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n };\n Toolbar.prototype.hideStatus = function () {\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n };\n Toolbar.prototype.showPaste = function () {\n this.hideItems(['Paste'], false);\n };\n Toolbar.prototype.hidePaste = function () {\n this.hideItems(['Paste'], true);\n };\n Toolbar.prototype.onLayoutChange = function () {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE;\n var items = this.layoutBtnObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('large')) {\n items[itemCount].iconCss = this.parent.view === 'LargeIcons' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('details')) {\n items[itemCount].iconCss = this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.showPaste, this.showPaste);\n this.parent.off(events.hidePaste, this.hidePaste);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.sortByChange, this.updateSortByButton);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.reRenderToolbar(e);\n break;\n }\n }\n };\n Toolbar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.destroy();\n }\n this.toolbarObj.destroy();\n this.parent.refreshLayout();\n };\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n var ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { EventHandler, isNullOrUndefined, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, selectAll } from '@syncfusion/ej2-base';\nimport * as CLS from '../base/classes';\nvar Virtualization = /** @class */ (function () {\n function Virtualization(instance) {\n this.filemanagerInstance = instance;\n this.largeIconInstance = instance.largeiconsviewModule;\n }\n /**\n * Sets up UI virtualization for the large icon view.\n *\n * @returns {void}\n */\n Virtualization.prototype.setUIVirtualization = function () {\n // Get the current view data source\n var currentViewItems = this.largeIconInstance.items;\n // Get the first item in the data source\n var firstItem = currentViewItems.slice(0, 1);\n // Create a list element from the first item in the data source\n var listElements = ListBase.createListFromJson(createElement, firstItem, this.largeIconInstance.listObj);\n // Get the list items from the list element\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Append the list element to the large icon element\n this.largeIconInstance.element.appendChild(listElements);\n 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 Virtualization.prototype.setUlElementHeight = function () {\n // Calculate the number of items in the last row\n this.lastRowCount = (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount ?\n (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount : this.rowItemCount;\n // Create top and bottom elements\n this.topElement = this.filemanagerInstance.createElement('div');\n this.topElement.classList.add('e-virtual-top');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.topElement, this.largeIconInstance.element.firstElementChild.firstChild);\n this.bottomElement = this.filemanagerInstance.createElement('div');\n this.bottomElement.classList.add('e-virtual-bottom');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.bottomElement, null);\n // Get the margin value for list items\n var marginValue = parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-bottom'), 10);\n // Calculate the height of a single list item\n this.listItemHeight = this.largeIconInstance.itemList[0].getBoundingClientRect().height + marginValue;\n // Calculate the total height of the list\n this.totalHeight = (Object.keys(this.largeIconInstance.allItems).length / this.rowItemCount) * this.listItemHeight;\n // Set the initial height of the top and bottom elements\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n // Initialize the top and bottom element heights\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n // Initialize the list difference variable\n this.listDiff = 0;\n // Set the initial rendered count\n this.renderedCount = this.itemCount;\n };\n /**\n * Calculates the number of items to display in the list based on the available width and height.\n *\n * @param {number} dataSourceLength The length of the data source.\n * @returns {number} The number of items to display.\n */\n Virtualization.prototype.getItemCount = function (dataSourceLength) {\n // Get the margin values for list items\n var widthMargin = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-right'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-left'), 10);\n // Calculate the number of items that can fit in a single row\n this.rowItemCount =\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 var 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 Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n // Wire the scroll event\n EventHandler.add(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll, this);\n }\n else {\n // Unwire the scroll event\n EventHandler.remove(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll);\n }\n };\n /**\n * Handles the scroll event for the list element.\n * This method updates the top and bottom elements and the displayed items based on the scroll position.\n *\n * @returns {void}\n * @private\n */\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n // Set the starting height to 0\n var startingHeight = 0;\n // Get the current scroll position\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n // Calculate the height of the top element\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n // Calculate the height of the bottom element\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n // If the scroll position is less than or equal to the total height, set the top and bottom element heights.\n // Otherwise, set the top element height to the total height and the bottom element height to 0.\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n // If the top element height has changed, update the top and bottom element heights and re-render the items.\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n // Check whether the scroll direction is upward or downward\n if (scroll > this.scrollPosition) {\n // Scrolling is upward\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n this.onNormalScroll(listDiff, true);\n }\n else {\n // Scrolling is downward\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n this.onNormalScroll(listDiff, false);\n }\n }\n // Update the list difference and scroll position variables\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n this.scrollPosition = scroll;\n // Update the list of items and the items property of the largeIconInstance\n this.largeIconInstance.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.largeIconInstance.element));\n this.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 Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n // If the scroll position is less than or equal to the starting height, return 0.\n // Otherwise, return the scroll position minus the starting height.\n return ((this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight) <= 0) ? 0 :\n (this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight);\n };\n /**\n * This method updates the displayed items and the selection based on the scroll direction.\n *\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 Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n // Update the displayed items\n for (var i = 0; i < listDiff; i++) {\n this.updateUI(isScrollingDown);\n }\n };\n /**\n * Updates the items in the large icons view.\n *\n * @param {boolean} isScrollingDown - If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\n */\n Virtualization.prototype.updateUI = function (isScrollingDown) {\n var _this = this;\n if (isScrollingDown) {\n // Get the next batch of items to be displayed\n this.items = this.largeIconInstance.allItems.slice(this.renderedCount, this.renderedCount + this.rowItemCount);\n // If there are items to be displayed, create list elements for them and append them to the list\n if (this.items.length > 0) {\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n this.itemList.forEach(function (liEle) {\n _this.largeIconInstance.element.firstElementChild.insertBefore(liEle, _this.bottomElement);\n });\n // Update the rendered count variable\n this.renderedCount = (this.largeIconInstance.allItems.length >= this.renderedCount + this.rowItemCount) ?\n this.renderedCount + this.rowItemCount : this.renderedCount + this.lastRowCount;\n // Remove the first batch of items from the list\n for (var i = 0; i < this.rowItemCount; i++) {\n detach(this.topElement.nextElementSibling);\n }\n }\n }\n else {\n // Scrolling up\n var lastItemIndex = void 0;\n var isAllRendered = void 0;\n if (this.renderedCount === this.largeIconInstance.allItems.length) {\n // Set lastItemIndex to the last item in the last row\n lastItemIndex = this.renderedCount - (this.itemCount - this.rowItemCount + this.lastRowCount);\n // Set renderedCount to the total number of items that have been rendered, except for the items in the last row\n this.renderedCount = ((this.renderedCount - this.lastRowCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.lastRowCount);\n // Set isAllRendered to true to indicate that all items have been rendered\n isAllRendered = true;\n }\n else {\n // Set lastItemIndex to the last item in the current row\n lastItemIndex = this.renderedCount - this.itemCount;\n // Set renderedCount to the total number of items that have been rendered, except for the items in the current row\n this.renderedCount = ((this.renderedCount - this.rowItemCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.rowItemCount);\n }\n // Set startItemIndex to the first item in the current or previous row\n var startItemIndex = (lastItemIndex - this.rowItemCount > 0) ? lastItemIndex - this.rowItemCount : 0;\n // Set the items array to the items in the current or previous row\n this.items = this.largeIconInstance.allItems.slice(startItemIndex, lastItemIndex);\n if (this.items.length > 0) {\n // Create a list of elements from the items array\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n // Set the itemList array to the list items in the list elements\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Add the items to the beginning of the list\n for (var len = this.itemList.length; len > 0; len--) {\n this.largeIconInstance.element.firstElementChild.insertBefore(this.itemList[len - 1], this.topElement.nextElementSibling);\n }\n // Remove the last row of items from the list\n for (var i = 0; i < ((isAllRendered) ? this.lastRowCount : this.rowItemCount); i++) {\n detach(this.bottomElement.previousElementSibling);\n }\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n /**\n * Destroys the component.\n *\n * @returns {void}\n */\n Virtualization.prototype.destroy = function () {\n // If the file manager has already been destroyed, return immediately\n if (this.filemanagerInstance.isDestroyed) {\n return;\n }\n // If the large icon element has a child element, unwire the scroll event\n if (!isNullOrUndefined(this.largeIconInstance.element.firstElementChild)) {\n this.wireScrollEvent(true);\n }\n };\n return Virtualization;\n}());\nexport { Virtualization };\n","import { TreeView as BaseTreeView } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, select, setValue, getValue, Draggable } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, closest } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { read, Download, GetDetails, Delete, 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 */\nvar NavigationPane = /** @class */ (function () {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n /* istanbul ignore next */\n function NavigationPane(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n this.expandTree = false;\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.isSameNodeClicked = false;\n this.isNodeExpandCalled = false;\n this.renameParent = null;\n // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = null;\n // Specifies whether the nodeClicked event of the treeview control is triggered or not.\n this.isNodeClickCalled = false;\n // Specifies whether to restrict node selection in the treeview control.\n this.restrictSelecting = false;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n NavigationPane.prototype.onInit = function () {\n if (!isNOU(this.treeObj)) {\n return;\n }\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n var attr = {};\n var id = getValue('id', rootData);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new BaseTreeView({\n fields: {\n dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name',\n hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'\n },\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n sortOrder: this.parent.navigationPaneSettings.sortOrder,\n nodeSelecting: this.onNodeSelecting.bind(this),\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + CLS.TREE_ID);\n this.wireEvents();\n };\n NavigationPane.prototype.addDragDrop = function () {\n var _this = this;\n if (!this.parent.isMobile && this.treeObj) {\n if (this.parent.allowDragAndDrop && isNOU(this.dragObj)) {\n this.dragObj = new Draggable(this.treeObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n dragTarget: '.' + CLS.FULLROW,\n distance: 5,\n dragArea: this.parent.element,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n this.dragObj = null;\n }\n }\n };\n NavigationPane.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(CLS.FULLROW)) {\n return null;\n }\n var dragLi = closest(dragTarget, 'li');\n this.parent.dragPath = '';\n this.parent.dragData = [];\n this.parent.activeElements = [];\n this.parent.activeElements = [dragLi];\n this.parent.dragNodes = [];\n getModule(this.parent, dragLi);\n this.parent.dragData = this.getTreeData(dragLi);\n this.parent.dragPath = this.getDragPath(dragLi, this.parent.dragData[0].name);\n this.parent.dragNodes.push(this.parent.dragData[0].name);\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n NavigationPane.prototype.getDragPath = function (dragLi, text) {\n var path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n };\n NavigationPane.prototype.getDropPath = function (node, text) {\n var id = node.getAttribute('data-id');\n var newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId);\n };\n NavigationPane.prototype.onDrowNode = function (args) {\n var eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n var directories = getDirectories(files);\n var 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 var length_1 = 0;\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line camelcase\n folders[parseInt(length_1.toString(), 10)]._fm_icon = 'e-fe-folder';\n var attr = {};\n var id = getValue('id', folders[length_1]);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length_1])) {\n setValue('class', getAccessClass(folders[length_1]), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length_1]);\n }\n length_1++;\n }\n var element = select('[data-uid=\"' + target + '\"]', this.treeObj.element);\n var childElements = select('ul', element);\n if (isNOU(childElements)) {\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n }\n };\n // Node Selecting event handler\n NavigationPane.prototype.onNodeSelecting = function (args) {\n if (!args.isInteracted && !this.isRightClick &&\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 var nodeData = this.getTreeData(getValue('id', args.nodeData));\n if (args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1] && !this.isRightClick && !this.isNodeClickCalled || this.isSameNodeClicked) {\n this.isNodeClickCalled = false;\n if (!this.isSameNodeClicked) {\n this.isSameNodeClicked = true;\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n if (!this.isRightClick) {\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n }\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.isNodeClickCalled = true;\n this.isSameNodeClicked = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n }\n else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: this.isNodeClickCalled };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n }\n };\n // Opens the folder while clicking open context menu item in the treeview.\n NavigationPane.prototype.openFileOnContextMenuClick = function (node) {\n var data = this.treeObj.getTreeData(node);\n this.parent.selectedItems = [];\n this.parent.itemData = data;\n this.activeNode = node;\n this.parent.activeModule = 'navigationpane';\n var eventArgs = { cancel: false, fileDetails: data[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n this.isNodeClickCalled = true;\n if (!eventArgs.cancel) {\n updatePath(node, this.parent.itemData[0], this.parent);\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n this.treeObj.selectedNodes = [node.getAttribute('data-uid')];\n }\n };\n NavigationPane.prototype.onNodeSelected = function (args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n this.isNodeClickCalled = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent) {\n this.parent.pathId = getPathId(args.node);\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n var 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 NavigationPane.prototype.onPathDrag = function (args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpand = function (args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.isNodeExpandCalled = true;\n var text = getValue('text', args.nodeData);\n var id = args.node.getAttribute('data-id');\n var isId = isNOU(id) ? false : true;\n var newText = isNOU(id) ? text : id;\n var path = getPath(args.node, newText, isId);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.pathId.push(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpanded = function (args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n this.isNodeExpandCalled = false;\n };\n NavigationPane.prototype.onNodeClicked = function (args) {\n this.parent.activeModule = 'navigationpane';\n this.previousSelected = this.treeObj.selectedNodes;\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n var layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(events.modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && !this.isNodeClickCalled && !this.isNodeExpandCalled) {\n if (args.event.which === 3) {\n this.isRightClick = true;\n }\n this.isSameNodeClicked = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeEditing = function (args) {\n if (!isNOU(args.innerHtml)) {\n args.cancel = true;\n }\n };\n NavigationPane.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n var currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n var ul = (!isNOU(sNode)) ? select('.' + CLS.LIST_PARENT, sNode) : null;\n if (isNOU(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], !this.expandTree);\n }\n this.expandNodeTarget = '';\n }\n this.expandTree = false;\n if (isNOU(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n if (this.parent.uploadObj.directoryUpload && !(this.parent.hasId)) {\n this.updateTree(args);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + CLS.LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.selectedNodes = [sleId];\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + CLS.ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.addChild(args.files, id, false);\n this.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n };\n NavigationPane.prototype.onCreateEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n };\n NavigationPane.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n var name_1 = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name_1], this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDeleteEnd = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n var selectedNode = this.treeObj.selectedNodes[0];\n var selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n var selectedNodeEle = closest(selcetedEle, '.' + CLS.LIST_PARENT).parentElement;\n this.treeObj.selectedNodes = [selectedNodeEle.getAttribute('data-uid')];\n this.treeObj.dataBind();\n }\n this.updateTree(args);\n };\n NavigationPane.prototype.onRefreshEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEndParent = function (args) {\n var id = this.renameParent ? this.renameParent : this.parent.pathId[this.parent.pathId.length - 1];\n this.expandTree = this.treeObj.expandedNodes.indexOf(this.treeObj.selectedNodes[0]) !== -1;\n this.updateTreeNode(args, id);\n this.parent.expandedId = null;\n if (this.renameParent) {\n this.renameParent = null;\n }\n else {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.renameText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('_fm_pId', 'equal', id, false));\n }\n }\n if (resultData.length > 0) {\n var id_1 = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEnd = function (args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n var data = this.treeObj.getTreeData();\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(data).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(data).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.currentItemText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n this.renameParent = getValue(this.treeObj.fields.parentID, resultData[0]);\n this.parent.expandedId = this.renameParent;\n this.parent.itemData = this.getTreeData(this.renameParent);\n read(this.parent, events.renameEndParent, this.parent.filterPath.replace(/\\\\/g, '/'));\n }\n }\n };\n NavigationPane.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, events.finalizeEnd, '/');\n if (e.oldProp.navigationPaneSettings.sortOrder !== e.newProp.navigationPaneSettings.sortOrder) {\n this.treeObj.sortOrder = e.newProp.navigationPaneSettings.sortOrder;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDownLoadInit = function () {\n this.doDownload();\n };\n NavigationPane.prototype.onSelectionChanged = function (e) {\n this.treeObj.selectedNodes = [e.selectedNode];\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchDrag) {\n moveNames = this.getMoveNames(args.files, this.parent.isSearchDrag, this.parent.dragPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n NavigationPane.prototype.getMoveNames = function (files, flag, path) {\n var moveNames = [];\n for (var i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n var name_2 = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n var index = path.lastIndexOf('/');\n name_2 = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n var resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name_2, false));\n for (var j = 0; j < resultData.length; j++) {\n var fPath = getValue('filterPath', resultData[j]);\n fPath = fPath.replace(/\\\\/g, '/');\n if (fPath === path) {\n moveNames.push(getValue(this.treeObj.fields.id, resultData[j]));\n break;\n }\n }\n }\n }\n }\n return moveNames;\n };\n NavigationPane.prototype.onCutEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchCut) {\n this.moveNames = this.getMoveNames(args.files, this.parent.isSearchCut, this.parent.targetPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n var data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n var resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n var selectedNode = this.treeObj.getTreeData().filter(function (obj) { return obj.name === resultObj.name; })[0];\n this.treeObj.selectedNodes = [getValue('_fm_id', selectedNode)];\n this.treeObj.dataBind();\n }\n };\n NavigationPane.prototype.onDropPath = function (args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n };\n NavigationPane.prototype.onpasteEnd = function (args) {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', getValue('id', args.cwd), false));\n }\n else {\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', getValue('name', args.cwd), false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', getValue('filterPath', args.cwd), false));\n }\n }\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1;\n this.removeChildNodes(id);\n this.addChild(args.files, id, toExpand);\n }\n this.parent.expandedId = null;\n this.onPathChanged(args);\n if (this.parent.isDragDrop) {\n this.checkDropPath(args);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.checkDropPath = function (args) {\n if (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 NavigationPane.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n var obj = this.parent.isDragDrop || isFileSystemData(this.parent) ? this.parent.dragData : this.parent.actionRecords;\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n };\n NavigationPane.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.activeElements = [this.activeNode];\n }\n };\n NavigationPane.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.downloadInit, this.onDownLoadInit, this);\n this.parent.on(events.initialEnd, this.onInitialEnd, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutEnd, this.onCutEnd, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.nodeExpand, this.onNodeExpanded, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.updateTreeSelection, this.onSelectionChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.openEnd, this.onOpenEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.renameEndParent, this.onRenameEndParent, this);\n this.parent.on(events.clearPathInit, this.onClearPathInit, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.dragEnd, this.onDragEnd, this);\n this.parent.on(events.dragging, this.onDragging, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.pathDrag, this.onPathDrag, this);\n };\n NavigationPane.prototype.removeEventListener = function () {\n this.parent.off(events.initialEnd, this.onInitialEnd);\n this.parent.off(events.downloadInit, this.onDownLoadInit);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutEnd, this.onCutEnd);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.updateTreeSelection, this.onSelectionChanged);\n this.parent.off(events.nodeExpand, this.onNodeExpanded);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onOpenEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.renameEndParent, this.onRenameEndParent);\n this.parent.off(events.clearPathInit, this.onClearPathInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.dragEnd, this.onDragEnd);\n this.parent.off(events.dragging, this.onDragging);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.pathDrag, this.onPathDrag);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n NavigationPane.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDragging = function (args) {\n var ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n var level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n };\n NavigationPane.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, 'li');\n this.parent.dropData = this.getTreeData(dropLi)[0];\n this.parent.dropPath = this.getDropPath(dropLi, getValue('name', this.parent.dropData));\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'navigationpane';\n };\n NavigationPane.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.treeObj) {\n this.unWireEvents();\n this.treeObj.destroy();\n }\n };\n NavigationPane.prototype.wireEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n NavigationPane.prototype.unWireEvents = function () {\n this.keyboardModule.destroy();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.keyDown = function (e) {\n var action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n if (this.parent.pathId[0] !== this.activeNode.getAttribute('data-uid')) {\n this.updateItemData();\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n this.removeNodes = [];\n createDialog(this.parent, 'Delete');\n }\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n if (!hasEditAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionEdit);\n }\n else {\n this.updateRenameData();\n createDialog(this.parent, 'Rename');\n }\n }\n break;\n }\n };\n NavigationPane.prototype.getTreeData = function (args) {\n var data = this.treeObj.getTreeData(args);\n for (var i = 0; i < data.length; i++) {\n if (isNOU(getValue('hasChild', data[i]))) {\n setValue('hasChild', false, data[i]);\n }\n }\n return data;\n };\n NavigationPane.prototype.updateRenameData = function () {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n };\n NavigationPane.prototype.updateItemData = function () {\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n };\n NavigationPane.prototype.updateActionData = function () {\n this.updateItemData();\n var newPath = getParentPath(this.parent.path);\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathId.pop();\n this.parent.pathNames.pop();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.doDownload = function () {\n var newPath = getParentPath(this.parent.path);\n var itemId = this.treeObj.selectedNodes[0];\n var name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n };\n return NavigationPane;\n}());\nexport { NavigationPane };\n","import { Grid, Resize, ContextMenu, Sort, VirtualScroll } from '@syncfusion/ej2-grids';\nimport { select, KeyboardEvents, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, Touch, setValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Internationalization, closest, Draggable, initializeCSPTemplate, extend, 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 */\nvar DetailsView = /** @class */ (function () {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n function DetailsView(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.isMultiSelect = 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 back: 'backspace'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n var _this = this;\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n var isValidSortField = !isNullOrUndefined(columns) &&\n columns.findIndex(function (col) { return col.field === _this.parent.sortBy; }) !== -1;\n if (this.parent.isMobile || !isValidSortField) {\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: function (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 DetailsView.prototype.reactTemplateRender = function (args) {\n this.parent['portals'] = args;\n if (this.parent.portals && this.parent.toolbarModule && this.parent.toolbarModule.toolbarObj &&\n this.parent.toolbarModule.toolbarObj.portals) {\n this.parent['portals'] = this.parent['portals'].concat(this.parent.toolbarModule.toolbarObj.portals);\n }\n this.parent.notify('renderReactTemplate', this.parent['portals']);\n this.parent['renderReactTemplates']();\n };\n /**\n * Gets the grid height.\n *\n * @returns {number} - The grid height.\n * @private\n */\n DetailsView.prototype.getGridHeight = function () {\n // Get the content pane and breadcrumb bar elements\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n // The maximum height of the header is 36\n var headerMaxHeight = 36;\n // Calculate and return the grid height\n return (pane.offsetHeight - bar.offsetHeight - headerMaxHeight);\n };\n DetailsView.prototype.checkNameWidth = function () {\n var initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (var i = 0; i < initialColumn.length; i++) {\n if (initialColumn[i].field === 'name') {\n this.isNameWidth = !isNOU(initialColumn[i].width);\n return;\n }\n }\n };\n DetailsView.prototype.adjustWidth = function (columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n var nameWidth = void 0;\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n nameWidth = (this.element.clientWidth <= 500) ? '120px' : 'auto';\n }\n else {\n nameWidth = (this.element.clientWidth <= 680) ? ((fieldName === 'name') ? '120px' : '180px') : 'auto';\n }\n columns[i].width = nameWidth;\n }\n }\n };\n DetailsView.prototype.getColumns = function () {\n var columns;\n var 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 var 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 var _loop_1 = function (i, len) {\n columns[i].headerText = getLocaleText(this_1.parent, columns[i].headerText);\n if (columns[i].field === 'name' && !isNOU(columns[i].template) && !(typeof columns[i].template === 'function')) {\n var template_1 = columns[i].template;\n columns[i].template = initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return template_1.replace(/\\${name}/g, name);\n });\n }\n };\n var this_1 = this;\n for (var i = 0, len = columns.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth,\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-icon \" + data._fm_iconClass + \"\\\"></span>\";\n }), allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: initializeCSPTemplate(function () {\n return '<span class=\\'e-fe-icon e-fe-folder\\'></span>';\n })\n };\n columns.unshift(icon);\n if (this.parent.showItemCheckBoxes) {\n var cWidth = (this.parent.isBigger ? '36' : '26');\n var cBox = {\n type: 'checkbox', width: cWidth, minWidth: cWidth, customAttributes: { class: 'e-fe-checkbox' },\n allowResizing: false, allowSorting: false\n };\n if (this.parent.isMobile) {\n columns.push(cBox);\n }\n else {\n columns.unshift(cBox);\n }\n }\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n if (this.parent.enableRangeSelection) {\n var HiddenName = { field: 'name', visible: false, customAttributes: { class: 'e-drag-text' } };\n columns.push(HiddenName);\n }\n return columns;\n };\n DetailsView.prototype.adjustHeight = function () {\n if (!this.gridObj) {\n return;\n }\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n var gridHeader = select('.' + CLS.GRID_HEADER, this.parent.element);\n var height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n };\n DetailsView.prototype.renderCheckBox = function () {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n };\n DetailsView.prototype.onRowDataBound = function (args) {\n var td = select('.e-fe-grid-name', args.row);\n if (!td) {\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'name') {\n td = args.row.children[this.parent.allowMultiSelection ? (i + 2) : (i + 1)];\n break;\n }\n }\n }\n if (td) {\n td.setAttribute('title', getValue('name', args.data));\n }\n if (this.parent.isLayoutChange && this.parent.isCut && this.parent.fileAction === 'move' &&\n this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n if (this.parent.selectedNodes.indexOf(getValue('name', args.data)) !== -1) {\n addBlur(args.row);\n }\n }\n if (!this.parent.showFileExtension && getValue('isFile', args.data)) {\n var text = getValue('name', args.data);\n var textEle = args.row.querySelector('[title= \"' + text + '\"]');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n if (name_1.indexOf(type) !== -1) {\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n var sizeEle = args.row.querySelector('.e-fe-size');\n var modifiedSize = void 0;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n var sizeValue = getValue('size', args.data);\n var intl = new Internationalization(this.parent.locale);\n var sizeFormat = void 0;\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'size') {\n sizeFormat = !isNullOrUndefined(columns[i].format) ? columns[i].format.toString() : 'n';\n break;\n }\n }\n var value = intl.formatNumber((sizeValue / 1024), { format: sizeFormat });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n var dateEle = args.row.querySelector('.e-fe-date');\n var intl = new Internationalization(this.parent.locale);\n var columns = this.parent.detailsViewSettings.columns;\n var format = void 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n var formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n var checkWrap = args.row.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n if (!hasEditAccess(args.data)) {\n args.row.className += ' ' + getAccessClass(args.data);\n }\n var eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n DetailsView.prototype.onActionBegin = function (args) {\n if (args.requestType === 'sorting') {\n this.parent.setProperties({ sortOrder: args.direction }, true);\n this.parent.setProperties({ sortBy: args.columnName }, true);\n if (this.parent.selectedItems.length !== 0) {\n this.sortItem = true;\n var rows = this.gridObj.getSelectedRowIndexes();\n var len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.sortSelectedNodes.push(getValue(this.parent.hasId ? 'id' : 'name', data));\n len--;\n }\n }\n this.parent.notify(events.sortByChange, {});\n }\n };\n DetailsView.prototype.onHeaderCellInfo = function (args) {\n var checkWrap = args.node.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n };\n DetailsView.prototype.onBeforeDataBound = function (args) {\n var _this = this;\n showSpinner(this.parent.element);\n var nameColumn = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === _this.parent.sortBy; });\n if (nameColumn && !('sortComparer' in nameColumn)) {\n var 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 DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if ((this.parent.selectedItems.length !== 0 && !this.parent.enableVirtualization) ||\n ((this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization &&\n this.element.querySelector('.e-content').scrollTop === 0))) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem) {\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n var hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n var hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n var hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.classList.remove('e-scrollShow');\n }\n this.isRendered = true;\n this.parent.isLayoutChange = false;\n hideSpinner(this.parent.element);\n this.checkEmptyDiv(this.emptyArgs);\n this.isInteracted = this.isLoaded ? true : this.isInteracted;\n this.isLoaded = false;\n };\n DetailsView.prototype.selectRecords = function (nodes) {\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var sRecords = [];\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n else if (!this.parent.showFileExtension && !this.parent.hasId && node.includes('.')) {\n var Str2 = node.split('.').slice(0, -1).join('.');\n if (nodes.indexOf(Str2) !== -1) {\n sRecords.push(i);\n }\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n DetailsView.prototype.addSelection = function (data) {\n var items = this.gridObj.getCurrentViewRecords();\n var rData = [];\n if (this.parent.hasId) {\n rData = new DataManager(items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (nData.length > 0) {\n rData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (rData.length > 0) {\n var index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n };\n DetailsView.prototype.onSortColumn = function () {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n if (this.element.querySelector('.e-content').scrollTop !== 0) {\n this.gridObj.freezeRefresh();\n }\n };\n DetailsView.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'detailsViewSettings':\n if (!isNullOrUndefined(this.gridObj)) {\n this.checkNameWidth();\n var columns = this.getColumns();\n this.gridObj.columns = columns;\n this.gridObj.allowResizing = this.parent.detailsViewSettings.columnResizing;\n this.gridObj.dataBind();\n this.gridObj.refreshColumns();\n }\n break;\n case 'selectedItems':\n this.interaction = false;\n if (this.parent.selectedItems.length !== 0) {\n if (!this.parent.allowMultiSelection) {\n var slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNOU(this.gridObj)) {\n this.gridObj.clearSelection();\n this.interaction = true;\n }\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showItemCheckBoxes':\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n };\n DetailsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n var pathField = this.parent.detailsViewSettings.columns.find(function (column) { return 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 DetailsView.prototype.updatePathColumn = function () {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n var pathColumn = {\n field: 'filterPath', headerText: getLocaleText(this.parent, 'Path'), minWidth: 180, width: 'auto'\n };\n this.gridObj.columns.push(pathColumn);\n this.adjustWidth(this.gridObj.columns, 'filterPath');\n this.adjustWidth(this.gridObj.columns, 'name');\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n };\n DetailsView.prototype.checkEmptyDiv = function (args) {\n var items = getSortedData(this.parent, args.files);\n if (items.length === 0 && !isNOU(this.element.querySelector('.' + CLS.GRID_VIEW))) {\n createEmptyElement(this.parent, this.element, args);\n }\n else if (items.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n if (this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY)) {\n var emptyDiv = this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY);\n this.element.querySelector('.' + CLS.GRID_VIEW).removeChild(emptyDiv);\n }\n else {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n }\n };\n DetailsView.prototype.onOpenInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n var data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n };\n DetailsView.prototype.DblClickEvents = function (args) {\n this.gridObj.selectRows([args.rowIndex]);\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n DetailsView.prototype.openContent = function (data) {\n var _this = this;\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var name_2 = getValue('name', data);\n if (getValue('isFile', data)) {\n var icon = fileType(data);\n if (icon === CLS.ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, data);\n createImageDialog(_this.parent, name_2, imgUrl);\n }\n }\n else {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', data);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNOU(id) ? name_2 : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(name_2);\n _this.parent.pathId.push(getValue('_fm_id', data));\n _this.parent.itemData = [data];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, data);\n }\n _this.parent.isFiltered = false;\n }\n _this.element.focus();\n if (_this.parent.enableVirtualization) {\n _this.parent.element.querySelector('#' + _this.parent.element.id + CLS.IMG_DIALOG_ID).focus();\n }\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(events.hideLayout, {});\n this.gridObj.element.classList.remove(CLS.DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSearchFiles = function (args) {\n if (this.parent.view === 'Details') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (!this.parent.isLayoutChange) {\n this.parent.layoutSelectedItems = [];\n }\n this.updatePathColumn();\n this.parent.searchedItems = args.files;\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.removePathColumn = function (isRefresh) {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath')) {\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.gridObj.sortSettings.columns[0]) && this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n this.parent.notify(events.sortByChange, {});\n }\n this.gridObj.columns.pop();\n if (!isRefresh) {\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n }\n };\n DetailsView.prototype.onFinalizeEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n };\n DetailsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n DetailsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n };\n DetailsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n };\n DetailsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.isInteracted = false;\n this.removePathColumn(false);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.emptyArgs = args;\n };\n DetailsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n DetailsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'Details') {\n this.isInteracted = false;\n if (this.parent.allowMultiSelection) {\n this.gridObj.selectionModule.selectRowsByRange(0, this.gridObj.getRows().length);\n }\n else {\n this.gridObj.selectRow(this.gridObj.getRows().length - 1);\n }\n this.isInteracted = true;\n this.interaction = true;\n }\n };\n DetailsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelectionChanged = function () {\n removeClass([this.element], CLS.HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], CLS.HEADER_CHECK);\n }\n };\n DetailsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n };\n DetailsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n DetailsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n DetailsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.addEventListener = function () {\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.search, this.onSearchFiles, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.sortColumn, this.onSortColumn, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n this.parent.on(events.pasteInit, this.onPasteInit, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.resizeEnd, this.onDetailsResizeHandler, this);\n this.parent.on(events.splitterResize, this.onDetailsResize, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n };\n DetailsView.prototype.removeEventListener = function () {\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteInit, this.onPasteInit);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.search, this.onSearchFiles);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.filterEnd, this.onPathChanged);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.sortColumn, this.onSortColumn);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.resizeEnd, this.onDetailsResizeHandler);\n this.parent.off(events.splitterResize, this.onDetailsResize);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n };\n DetailsView.prototype.onActionFailure = function () { this.interaction = true; };\n DetailsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n };\n DetailsView.prototype.onPasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n };\n DetailsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n DetailsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n var name;\n if (dragLi.getElementsByClassName('e-fe-text')[0]) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling.innerText;\n }\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n this.parent.dragData = this.gridObj.getSelectedRecords();\n var dragRow;\n if (this.parent.dragData.length === 0 && dragLi) {\n dragRow = this.gridObj.getRowInfo(dragLi);\n }\n if (dragRow) {\n this.parent.dragData.push(dragRow.rowData);\n }\n this.parent.dragPath = this.parent.path;\n this.parent.activeElements = this.gridObj.getSelectedRows();\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDetailsResize = function () {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n var gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n var gridHeaderColGroup = gridHeader.firstChild.childNodes[0];\n var gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n var gridHeaderColNames = this.gridObj.getColumns();\n for (var i = 0; i < gridHeaderColNames.length; i++) {\n if ((!this.isNameWidth && gridHeaderColNames[i].field === 'name') || gridHeaderColNames[i].field === 'filterPath') {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n if (this.element.clientWidth <= 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 180px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 180px');\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n }\n }\n }\n };\n DetailsView.prototype.onDetailsResizeHandler = function () {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n this.adjustHeight();\n }\n };\n DetailsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.gridObj) {\n if (this.parent.allowDragAndDrop && isNullOrUndefined(this.dragObj)) {\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + CLS.ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n this.dragObj = null;\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (!args.target.closest('tr')) {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n else {\n var 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 DetailsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n };\n DetailsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath ||\n this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {\n this.onPathChanged(args);\n }\n }\n };\n DetailsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns modules name.\n * @private\n */\n DetailsView.prototype.getModuleName = function () {\n return 'detailsview';\n };\n DetailsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n if (this.parent.isReact) {\n this.gridObj.off('reactTemplateRender', this.reactTemplateRender);\n }\n this.unWireEvents();\n this.gridObj.destroy();\n }\n };\n DetailsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelection = function (action, args) {\n var eventArgs = {\n action: action, fileDetails: args.data, isInteracted: this.interaction, cancel: false, target: args.target\n };\n this.parent.trigger('fileSelection', eventArgs);\n args.cancel = eventArgs.cancel;\n if (!this.isMultiSelect) {\n this.isMultiSelect = true;\n if ((args.isShiftPressed || args.isCtrlPressed) && !this.parent.allowMultiSelection && (args.target && args.target.parentElement && !args.target.parentElement.classList.contains('e-checkbox-wrapper'))) {\n args.cancel = true;\n var rowIndex = (args && args.rowIndexes)\n ? args.rowIndexes[args.rowIndexes.length - 1]\n : args.rowIndex;\n this.gridObj.selectRow(rowIndex);\n }\n this.isMultiSelect = false;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelected = function (args) {\n this.parent.activeModule = 'detailsview';\n if (!this.parent.isLayoutChange || this.parent.isFiltered) {\n this.selectedRecords();\n }\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.getSelectedRowIndexes().length === 1) {\n this.firstItemIndex = this.gridObj.selectedRowIndex;\n }\n this.gridObj.element.setAttribute('tabindex', '-1');\n this.triggerSelect('select', args);\n var item = this.gridObj.getRowByIndex(this.gridObj.selectedRowIndex);\n this.updateType(item);\n if (!isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n if (this.gridObj.getSelectedRowIndexes().length !== 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\n item.querySelector('.e-rowcell.e-fe-checkbox').removeAttribute('tabindex');\n }\n if (!isNOU(this.gridObj) && !isNOU(this.gridObj.element.querySelector('.e-checkselectall'))) {\n this.gridObj.element.querySelector('.e-checkselectall').setAttribute('tabindex', '-1');\n }\n var rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i] === this.gridObj.selectedRowIndex) {\n this.gridObj.getRowByIndex(rows[i]).setAttribute('tabindex', '0');\n }\n else {\n this.gridObj.getRowByIndex(rows[i]).removeAttribute('tabindex');\n }\n }\n }\n var len = rows.length;\n if (this.parent.enableVirtualization) {\n this.parent.currentItemText = getValue('name', args.data);\n }\n else if (len > 0) {\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n var indexes = getValue('rowIndexes', args);\n var multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNOU(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if ((!this.parent.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'Details' && !isNOU(this.gridObj)) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n }\n };\n DetailsView.prototype.selectedRecords = function () {\n this.parent.setProperties({ selectedItems: [] }, true);\n var selectedRecords = this.gridSelectNodes();\n var selectSize = 0;\n while (selectSize < selectedRecords.length) {\n var record = selectedRecords[selectSize];\n var name_3 = getItemName(this.parent, record);\n this.parent.selectedItems.push(name_3);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n };\n DetailsView.prototype.onDeSelection = function (args) {\n /* istanbul ignore next */\n if (!this.parent.allowMultiSelection && isNOU(args.data)) {\n this.gridObj.getRowByIndex(args.rowIndex).removeAttribute('tabindex');\n }\n else if (this.gridObj.getSelectedRowIndexes().length > 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n this.gridObj.getRowByIndex(lastItemIndex).querySelector('.e-checkselect').removeAttribute('tabindex');\n }\n if (this.gridObj.selectedRowIndex === -1) {\n this.gridObj.element.setAttribute('tabindex', '0');\n }\n if (!this.isInteracted) {\n this.isInteracted = true;\n return;\n }\n this.selectedRecords();\n if (this.parent.selectedItems.length === 0) {\n setValue('enableSelectMultiTouch', false, this.gridObj.selectionModule);\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('unselect', args);\n this.parent.visitedItem = null;\n };\n DetailsView.prototype.triggerSelect = function (action, args) {\n var eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n };\n DetailsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.gridObj.element, {\n keyAction: this.keyupHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.gridObj.element, 'blur', this.removeFocus, this);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n };\n DetailsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n var ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: function (eve) {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n _this.onClearAllInit();\n }\n },\n tapHold: function (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 var target = e.originalEvent.target;\n if (target) {\n var row = closest(target, '.' + CLS.ROW);\n var 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 DetailsView.prototype.removeSelection = function () {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n this.gridObj.clearSelection();\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.selectedRowIndex === -1) {\n this.startIndex = null;\n }\n this.isInteracted = true;\n };\n DetailsView.prototype.removeFocus = function () {\n this.addFocus(null);\n };\n DetailsView.prototype.onBlur = function (e) {\n if ((e.relatedTarget !== null && closest(e.relatedTarget, '.e-grid') !== e.relatedTarget)) {\n return;\n }\n if (!isNOU(this.gridObj.element)) {\n var thElements = this.gridObj.element.querySelectorAll('th');\n for (var i = 0; i < thElements.length; i++) {\n if (thElements[i].classList.contains('e-focus')) {\n this.addFocus(null);\n }\n }\n }\n };\n DetailsView.prototype.getFocusedItemIndex = function () {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('data-rowindex'), 10) : null;\n };\n /* istanbul ignore next */\n DetailsView.prototype.keydownHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1 && this.gridObj.allowSorting === true) {\n if (!e.target.classList.contains('e-fe-grid-icon')) {\n var direction = !e.target.getElementsByClassName('e-ascending').length ? 'Ascending' : 'Descending';\n var 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 var data = JSON.parse(JSON.stringify(rowData));\n this.openContent(data);\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlA':\n if (!isNOU(gridItems[0]) && this.parent.allowMultiSelection) {\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n var crtSrlPos = cnTable.scrollTop;\n var crtFocusIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n cnTable.scrollTop = crtSrlPos;\n if (crtFocusIndex !== -1) {\n this.addFocus(crtFocusIndex);\n }\n }\n break;\n case 'ctrlHome':\n case 'tab':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {\n this.gridObj.selectRow(0);\n }\n else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {\n return;\n }\n else {\n this.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 case 'back':\n this.parent.traverseBackward();\n break;\n }\n };\n DetailsView.prototype.gridSelectNodes = function () {\n return this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.doDownload = function () {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionDownload);\n return;\n }\n }\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n };\n DetailsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasEditAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n DetailsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n DetailsView.prototype.updateRenameData = function () {\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n DetailsView.prototype.shiftMoveMethod = function (gridItems, selIndex, focIndex, selRowIndeces, e) {\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n if (selIndex === -1 && (e.action === 'csUp' || e.action === 'csDown')) {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n else if (selIndex !== -1 && focIndex !== selIndex &&\n !((e.action === 'csUp' || e.action === 'csDown') && this.isSelected(selRowIndeces, focIndex))) {\n this.shiftSelectFocusItem(selIndex, focIndex, selRowIndeces, e);\n }\n else {\n this.shiftSelectedItem(selIndex, selRowIndeces, gridItems, e);\n }\n }\n };\n DetailsView.prototype.moveFunction = function (selectedItems, e, rowIndex) {\n if (!isNOU(this.getFocusedItem()) && this.parent.allowMultiSelection) {\n if (e.action === 'moveDown') {\n this.gridObj.selectRow(this.getFocusedItemIndex() + 1);\n }\n else {\n this.gridObj.selectRow(this.getFocusedItemIndex() - 1);\n }\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n if (e.action === 'moveDown' || e.action === 'ctrlDown' || e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectRow(rowIndex + ((rowIndex !== selectedItems.length - 1) ? 1 : 0));\n }\n else {\n this.gridObj.selectRow(rowIndex - ((rowIndex !== 0) ? 1 : 0));\n }\n }\n else {\n if (!isNOU(selectedItems[0])) {\n this.gridObj.selectRow(0);\n }\n }\n };\n DetailsView.prototype.spaceSelection = function (selRowIndeces, focIndex, selIndex, e) {\n if (!this.isSelected(selRowIndeces, focIndex) && selIndex !== -1 && (e.action === 'shiftSpace' || e.action === 'csSpace')) {\n if (focIndex < selIndex) {\n this.gridObj.selectionModule.selectRowsByRange(focIndex, selIndex);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(selIndex, focIndex);\n }\n }\n else if (!isNOU(this.getFocusedItem()) && focIndex !== selIndex) {\n selRowIndeces.push(this.getFocusedItemIndex());\n this.gridObj.selectRows(selRowIndeces);\n }\n else if (selIndex !== -1 && e.action === 'ctrlSpace' && this.parent.allowMultiSelection) {\n var lItem = selIndex;\n selRowIndeces.pop();\n this.gridObj.selectRows(selRowIndeces);\n this.addFocus(lItem);\n }\n else if (e.action === 'shiftSpace') {\n this.gridObj.selectRow(selIndex);\n }\n };\n DetailsView.prototype.ctrlMoveFunction = function (items, e, rowIndex) {\n var nextItem;\n if (!isNOU(this.getFocusedItem())) {\n var nextIndex = this.getFocusedItemIndex();\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n nextIndex + ((nextIndex < items.length - 1) ? 1 : 0) : nextIndex - ((nextIndex < 1) ? 0 : 1);\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n rowIndex + ((rowIndex < items.length) ? 1 : 0) : rowIndex - ((rowIndex < 1) ? 0 : 1);\n }\n else {\n if (!isNOU(items[0])) {\n nextItem = 0;\n }\n }\n this.addFocus(nextItem);\n };\n DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {\n if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {\n if (e.action !== 'csHome' && e.action !== 'csEnd') {\n if (isNOU(this.startIndex) && this.firstItemIndex !== indexValue) {\n this.firstItemIndex = indexValue;\n }\n if (e.action === 'shiftEnd') {\n this.gridObj.selectionModule.selectRowsByRange(this.firstItemIndex, items.length - 1);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, this.firstItemIndex);\n }\n this.startIndex = indexValue;\n }\n else {\n if (e.action === 'csEnd') {\n this.gridObj.\n selectRows(this.InnerItems(isNOU(indexValue) ? 0 : indexValue, isNOU(focIndex) ? items.length - 1 : focIndex, e));\n }\n else {\n if (isNOU(indexValue)) {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectRows(this.InnerItems(isNOU(focIndex) ? 0 : focIndex, indexValue, e));\n }\n }\n }\n }\n else {\n this.gridObj.selectionModule.selectRow(((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : items.length - 1));\n }\n };\n DetailsView.prototype.InnerItems = function (fItem, lItem, e) {\n var itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (var i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (var i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n };\n DetailsView.prototype.shiftSelectFocusItem = function (selIndex, fIndex, selRowIndexes, e) {\n var lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n var fItem = isNOU(this.startIndex) ? selIndex : selRowIndexes[0];\n if (fItem === lItem) {\n this.gridObj.selectRow(fItem);\n }\n else {\n if (fItem < lItem) {\n if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n }\n else if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n }\n this.startIndex = this.gridObj.selectedRowIndex;\n };\n DetailsView.prototype.addFocus = function (item) {\n var fItem = this.getFocusedItem();\n var itemElement = this.gridObj.getRowByIndex(item);\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS, CLS.FOCUSED]);\n }\n if (!isNOU(itemElement)) {\n this.gridObj.element.setAttribute('tabindex', '-1');\n itemElement.setAttribute('tabindex', '0');\n itemElement.focus();\n addClass([itemElement], [CLS.FOCUS, CLS.FOCUSED]);\n }\n };\n DetailsView.prototype.addHeaderFocus = function (e) {\n var treeFocus = select('.e-row', this.element);\n this.gridObj.element.setAttribute('tabindex', '-1');\n var 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 DetailsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.FOCUSED, this.element);\n };\n DetailsView.prototype.isSelected = function (selRowIndexes, focIndex) {\n var check = false;\n for (var i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n };\n DetailsView.prototype.shiftSelectedItem = function (selIndex, selRowIndexes, gridItems, e) {\n if (selIndex === -1) {\n this.gridObj.selectRow(0);\n }\n else {\n if (isNOU(this.startIndex) && e.shiftKey) {\n this.startIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectRows([selIndex, (e.action === 'shiftDown' || e.action === 'csDown') ?\n (selIndex + ((selIndex !== gridItems.length - 1) ? 1 : 0)) : (selIndex - ((selIndex !== 0) ? 1 : 0))]);\n }\n else {\n if (e.action === 'shiftDown' || e.action === 'shiftUp') {\n if (e.action === 'shiftDown' && selRowIndexes.indexOf(selIndex + 1) === -1) {\n if (selIndex !== gridItems.length - 1) {\n selRowIndexes.push(selIndex + 1);\n }\n }\n else if (e.action === 'shiftUp' && selRowIndexes.indexOf(selIndex - 1) === -1) {\n if (selIndex !== 0) {\n selRowIndexes.push(selIndex - 1);\n }\n }\n else {\n selRowIndexes.pop();\n }\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n if (e.action === 'csDown') {\n if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() + 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() + 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() + 1);\n }\n }\n else if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() - 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() - 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() - 1);\n }\n }\n }\n }\n };\n DetailsView.prototype.onMethodCall = function (e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n var action = getValue('action', e);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', e));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', e));\n break;\n case 'openFile':\n this.openFile(getValue('id', e));\n break;\n case 'createFolder':\n this.interaction = false;\n break;\n case 'renameFile':\n this.interaction = false;\n this.renameFile(getValue('id', e), getValue('newName', e));\n break;\n case 'selectAll':\n this.interaction = false;\n this.onSelectAllInit();\n break;\n case 'clearSelection':\n this.interaction = false;\n this.onClearAllInit();\n break;\n }\n };\n DetailsView.prototype.getRecords = function (nodes) {\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var records = [];\n var hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filter = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n if (nodes.indexOf(getValue(filter, gridRecords[i])) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n else {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var name_4 = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name_4) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n };\n DetailsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < records.length; i++) {\n data[i] = records[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < dRecords.length; i++) {\n data[i] = dRecords[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n var records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n };\n DetailsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n var records = this.getRecords([id]);\n if (records.length > 0) {\n updateRenamingData(this.parent, records[0]);\n if (!isNOU(name)) {\n if (hasEditAccess(this.parent.itemData[0])) {\n rename(this.parent, this.parent.path, name);\n }\n else {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n }\n else {\n doRename(this.parent);\n }\n }\n };\n return DetailsView;\n}());\nexport { DetailsView };\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","AjaxSettings","ChildProperty","Property","apply","defaultToolbarItems","ToolbarSettings","ToolbarItem","SearchSettings","columnArray","field","headerText","minWidth","template","customAttributes","class","type","format","width","initializeCSPTemplate","data","size","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","TOOLBAR_ID","LAYOUT_ID","NAVIGATION_ID","TREE_ID","GRID_ID","LARGEICON_ID","DIALOG_ID","IMG_DIALOG_ID","EXTN_DIALOG_ID","UPLOAD_DIALOG_ID","CONTEXT_MENU_ID","CONTENT_ID","BREADCRUMBBAR_ID","UPLOAD_ID","SEARCH_ID","ROOT","CONTROL","CHECK_SELECT","ROOT_POPUP","MOBILE","MOB_POPUP","MULTI_SELECT","FILTER","LAYOUT","NAVIGATION","LAYOUT_CONTENT","LARGE_ICONS","TB_ITEM","LIST_ITEM","LIST_TEXT","LIST_PARENT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","ACTIVE","HOVER","FOCUS","FOCUSED","CHECK","FRAME","CB_WRAP","ROW","EMPTY","EMPTY_CONTENT","EMPTY_INNER_CONTENT","CLONE","DROP_FOLDER","DROP_FILE","FOLDER","ICON_IMAGE","ICON_MUSIC","ICON_VIDEO","LARGE_ICON","LARGE_EMPTY_FOLDER","GRID_HEADER","TREE_VIEW","MENU_ITEM","MENU_ICON","SUBMENU_ICON","GRID_VIEW","GRID_CONTENT","ICON_VIEW","ICON_OPEN","ICON_UPLOAD","ICON_CUT","ICON_COPY","ICON_PASTE","ICON_DELETE","ICON_RENAME","ICON_NEWFOLDER","ICON_DETAILS","ICON_SHORTBY","ICON_REFRESH","ICON_SELECTALL","ICON_DOWNLOAD","ICON_GRID","ICON_LARGE","ICON_BREADCRUMB","ICON_CLEAR","ICONS","ERROR_CONTENT","BREADCRUMBS","RTL","DISPLAY_NONE","FULLROW","SPLIT_BAR","HEADER_CHECK","OVERLAY","VALUE","modelChanged","initialEnd","finalizeEnd","createEnd","filterEnd","pathDrag","deleteInit","deleteEnd","refreshEnd","resizeEnd","splitterResize","pathChanged","destroy","beforeRequest","skipUpload","afterRequest","layoutRefresh","actionFailure","search","openInit","openEnd","selectionChanged","selectAllInit","clearAllInit","clearPathInit","layoutChange","sortByChange","nodeExpand","detailsInit","menuItemData","renameInit","renameEndParent","renameEnd","showPaste","hidePaste","selectedData","cutCopyInit","pasteInit","pasteEnd","cutEnd","hideLayout","updateTreeSelection","sortColumn","pathColumn","searchTextChange","downloadInit","dropInit","dragEnd","dropPath","dragging","updateSelectionData","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","updatePath","node","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","getPathId","pathNames","getPathNames","element","matched","getParents","ids","push","names","isId","parentText","el","parentNode","matches","CLS.LIST_ITEM","select","CLS.LIST_TEXT","textContent","classList","contains","CLS.TREE_VIEW","generatePath","parent","newPath","parseInt","toString","feParent","removeActive","isCut","removeBlur","selectedNodes","actionRecords","enablePaste","notify","events.hidePaste","activeElement","action","isSearchCut","activeElements","events.cutCopyInit","blurEle","activeModule","targetPath","getParentPath","getModule","addBlur","events.showPaste","activeRecords","breadcrumbbarModule","searchObj","value","isFiltered","i_1","selectedItems","nodes","add","CLS.BLUR","hover","querySelectorAll","CLS.HOVER","remove","CLS.ROW","closest","CLS.LARGE_ICON","searchWordHandler","isLayoutChange","caseSensitive","searchWord","events.pathColumn","args","isFileSystemData","itemData","fileSystemData","read","events.layoutChange","searchSettings","filterType","filteredData","filter","obj","parentId","DataManager","executeLocal","Query","where","ignoreCase","searchValue","toLowerCase","Search","events.search","showHiddenItems","getPathObject","hiddenItems","isSortByClicked","files","oldView","detailsviewModule","gridObj","dataSource","largeiconsviewModule","allItems","updateLayout","view","layoutSelectedItems","getTargetModule","tartgetModule","CLS.ROOT","CLS.CONTROL","CLS.GRID_CONTENT","CLS.LARGE_ICONS","targetModule","refresh","hasReadAccess","events.refreshEnd","createDeniedDialog","events.permissionRead","openAction","events.openEnd","copyFiles","fileAction","cutFiles","fileType","file","filetype","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","CLS.FOLDER","getImageUrl","item","baseUrl","pathUrl","fileName","fPath","imgUrl","trigger","eventArgs_1","fileDetails","imageUrl","ajaxSettings","url","encodeURIComponent","eventArgs","imgId","replace","Date","getTime","getFullPath","filePath","getName","name","getSortedData","items","query","sortOrder","isNullOrUndefined","sortBy","group","lists","getObject","result","feFiles","createEmptyElement","emptyEle","dragFile","layoutElement","CLS.LAYOUT_ID","addressBarHeight","CLS.BREADCRUMBBAR_ID","offsetHeight","top","eDiv","CLS.GRID_HEADER","querySelector","CLS.EMPTY","emptyDiv","createElement","className","emptyFolder","CLS.LARGE_EMPTY_FOLDER","CLS.EMPTY_CONTENT","CLS.EMPTY_INNER_CONTENT","CLS.GRID_VIEW","appendChild","error","innerHTML","getLocaleText","style","marginTop","getDirectories","setNodeId","rootId","dirs","len","setValue","setDateObject","localeString","dateFormat","createdDate","modifiedDate","formatDate","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","column","substring","lastIndexOf","detailsViewSettings","columns","setNextPath","currfolders","folders","originalPath","root","eventName","events.finalizeEnd","events.initialEnd","openSearchFolder","isRoot","searchData","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","includes","validateSubFolder","events.pasteInit","paste","createDialog","code","message","fileExists","dragPath","subFolder","name_1","dragData","srcData","dragNodes","tempTarget","dropHandler","dropData","oldPath","getDirectoryPath","cwd","doPasteUpdate","operation","events.dragEnd","events.cutEnd","duplicateItems","pasteNodes","count","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","events.pasteEnd","readDropPath","expandedId","events.pathDrag","navigationpaneModule","treeObj","document","events.dropPath","getDuplicateData","records","createVirtualDragElement","getItemName","cloneIcon","cloneName","virtualEle","ele","CLS.CLONE","badge","virtualDragElement","dragStopHandler","dragArgs","cancel","treeExpandTimer","window","clearTimeout","removeDropTarget","uploadObj","dropArea","CLS.CONTENT_ID","detach","events.dropInit","dragCount","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","scrollHandler","scrollParent","nodeClass","clientY","position","elementData","getBoundingClientRect","clientHeight","scrollBy","draggingHandler","canDrop","setTimeout","events.dragging","parentElement","y","firstElementChild","objectToString","str","keys","updateRenamingData","currentItemText","isFile","filterPath","doRename","hasEditAccess","events.permissionEdit","doDownload","hasDownloadAccess","events.permissionDownload","Download","doDeleteFiles","newIds","Delete","doDownloadFiles","getAccessClass","permission","hasContentAccess","hasUploadAccess","createNewFolder","details","events.permissionEditContents","uploadItem","eleId","CLS.UPLOAD_ID","click","events.permissionUpload","closePopup","dialogObj","hide","getAccessDetails","isPathPermision","accessMessage","copyOrMovePermission","undefined","responseData","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","showFileExtension","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","isFileExists","some","findIndexById","findIndex","String","filterById","filterByParent","createNewItem","isCopy","newItem","call","currentDate","assign","dateCreated","dateModified","hasChild","getUid","createErrorObject","triggerClientEvents","createEventArgs","folderName","parentFolder","newObject","data_1","deleteEventArgs","forEach","index","splice","subItem","renameEventArgs","moveEventArgs","folderSubItems_1","itemPermission","pathPermission","file_1","existingFileCount","copyFolderItems","getTargetFiles","fileData","pathArray","currItem","subItems","parentID","searchEventArgs","searchResults","searchText","fn","mode","dataType","contentType","JSON","stringify","onSuccess","onFailure","beforeSend","beforeSendArgs","isMultipleFiles","itemNames","totalSize","events.beforeRequest","idValue","isFileOperation","map","getSize","reduce","accumulator","currentObject","location","multipleFiles","created","modified","performReadOperation","Ajax","result_1","triggerAjaxFailure","parse","send","hz","toFixed","events.afterRequest","intl","rootAliasName","Internationalization","rootName","location_1","RegExp","match","events.searchTextChange","copiedItems","events.selectionChanged","pop","handleCatchError","visible","nextElementSibling","createdItem","events.createEnd","renamedItem","isArray","events.renameEndParent","renameText","events.pathChanged","events.renameEnd","moveorcopyEventArgs","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","responseType","useFormPost","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","contentDisposition_1","fileName_1","Fetch","onLoad","e","headers","get","extractedFilename","filenameMatch","blobUrl","URL","createObjectURL","link","href","body","status","options","header","content","buttons","dialogName","open","triggerPopupOpen","close","triggerPopupClose","buttonModel","isPrimary","onSubmit","createInput","oninput","onValidate","onkeyup","getKeyCode","focus","setSelectionRange","bind","events.deleteInit","onReSubmit","inputEle","txt","formattedString","CLS.VALUE","strArr","val","substr","every","arr","toLocaleUpperCase","events.actionFailure","CLS.ERROR_CONTENT","Dialog","beforeOpen","keydownAction","beforeClose","triggerPopupBeforeClose","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","dataBind","show","replaceItems","extOptions","duplicateContent","extDialogObj","item_1","indexval","item_2","ind","retryFiles","isRetryOpened","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","isApplySame","checked","retryDlgClose","retryDlgUpdate","events.skipUpload","beforeExtOpen","CLS.EXTN_DIALOG_ID","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","isKeepBoth","onKeepBothAll","retryArgs","retry","onReplaceAll","flag","placeholder","Input","properties","preventKeydown","selectAll","dlgName","btnElement","btnCount","_loop_1","onkeydown","keyCode","preventDefault","onSubmitValidate","oldExtension","newExtension","oIndex","renamedId","nIndex","test","addInvalid","which","charCode","createImageDialog","image","src","alt","viewerObj","height","enableResize","X","Y","updateImage","resizing","resizeStop","CLS.IMG_DIALOG_ID","imgWrap","cssObj","getComputedStyle","paddingWidth","parseFloat","paddingRight","paddingHeight","paddingBottom","offsetWidth","LargeIconsView","render","visitedItem","startItem","showSpinner","resetMultiSelect","setAttribute","listObj","unWireEvents","removeEventListener","events.hideLayout","iconsView","CLS.LARGEICON_ID","ul","activeEle","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","htmlAttributes","itemCreated","onItemCreated","renderList","sortComparer","DataUtil","sort","comparer","CLS.DISPLAY_NONE","enableVirtualization","virtualizationModule","setUIVirtualization","listElements","ListBase","createListFromJson","itemList","slice","preventImgDrag","createDragObj","emptyList","CLS.LIST_PARENT","isPasteOperation","selectItems","uploadOperation","CLS.ACTIVE","maxHeight","getItemCount","addEventListener","wireEvents","setUlElementHeight","wireScrollEvent","isRendered","hideSpinner","checkItem","x","z","ondragstart","_this","Draggable","enableTailMode","distance","enableAutoScroll","dragTarget","helper","dragHelper","cursorAt","dragCursorPosition","dragArea","dragStop","drag","clone","dragStart","sender","dragLi","setFocus","getItemObject","onDropInit","cwdData","getModuleName","dropLi","info","removeAttribute","curData","textEle","renderCheckbox","checkElement","showItemCheckBoxes","createCheckBox","insertBefore","childNodes","onLayoutChange","indexes","getIndexes","length_1","checkEle","checkLength","checkState","icon","selected","showThumbnail","title","onFinalizeEnd","onCreateEnd","clearSelect","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","addSelection","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","lastItem","getFirstItem","getLastItem","doSelection","ctrlKey","shiftKey","isInteraction","onClearAllInit","clearSelection","onBeforeRequest","onAfterRequest","onSearch","onLayoutRefresh","onUpdateSelectionData","onPathColumn","isDestroyed","off","events.selectedData","events.openInit","events.modelChanged","onPropertyChanged","events.methodCall","onMethodCall","onActionFailure","events.renameInit","events.selectAllInit","events.clearAllInit","events.menuItemData","onMenuItemData","events.splitterResize","splitterResizeHandler","events.resizeEnd","resizeHandler","onpasteInit","onpasteEnd","oncutCopyInit","events.detailsInit","onDetailsInit","events.layoutRefresh","onDropPath","events.updateSelectionData","events.filterEnd","on","currentSelected","_i","_a","newProp","allowMultiSelection","wireClickEvent","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","keyConfigs","keyboardDownModule","keydownActionHandler","EventHandler","onMouseOver","targetEle","toBind","clickObj","Touch","tap","eve","isDevice","tapCount","tapEvent","doTapAction","originalEvent","dblClickHandler","clickHandler","tapHold","multiSelect","addClass","CLS.MULTI_SELECT","updateType","cList","addActive","isSelectAllCalled","CLS.CHECK","triggerSelection","CLS.FRAME","startIndex","endIndex","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","folder","fItem","getFocusedItem","firstItem","scrollTo","scrollHeight","navigateItem","scrollTop","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","traverseBackward","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","marginValue","getPropertyValue","isVisible","liScrPos","getCurFocusedItem","liParent","dItem","lItem","rItem","uItem","getDataName","preItem","toCheck","CLS.CB_WRAP","eles","visitedData","j","byId","resultData","newData","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","isFilter","filterName","name_2","end","home","tab","moveDown","moveLeft","moveRight","moveUp","ctrlEnd","ctrlHome","ctrlDown","ctrlLeft","ctrlRight","ctrlUp","shiftEnd","shiftHome","shiftDown","shiftLeft","shiftRight","shiftUp","csEnd","csHome","csDown","csLeft","csRight","csUp","space","ctrlSpace","shiftSpace","csSpace","ctrlA","enter","altEnter","esc","del","ctrlX","isMac","ctrlC","ctrlV","f2","shiftdel","back","ctrlD","BreadCrumbBar","prop","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","CLS.ICONS","innerText","ulElement","breadCrumbBarNavigation","searchWrap","subMenuObj","updateBreadCrumbBar","addresBarUL","liElements","pRight","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","CLS.SEARCH_ID","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","searchWrapWidth","diff","liElement","utext","subMenuLi","subMenuSpan","DropDownButton","CLS.ICON_BREADCRUMB","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","searchTimer","nodeName","children","currentPath","triggerFileOpen","treeNodeId","events.updateTreeSelection","CLS.FILTER","list","liElementId","addressBarLink","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onResize","onPasteEnd","events.destroy","onSearchTextChange","liEle","addressPath","ContextMenu","downarrow","uparrow","contextMenu","Menu","onBeforeItemRender","onSelect","onBeforeOpen","onBeforeClose","CLS.CONTEXT_MENU_ID","iconSpan","getMenuId","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","isFocused","parentItem","menuType","menuCloseArgs","menuTarget","isMenuItemClicked","parentKey","itemKeys_1","_fm_id","uid","treeFolder","targetNodeElement","currentElement","activeNode","getElementsByClassName","CLS.FULLROW","targetElement","getTargetView","updateActiveModule","CLS.TOOLBAR_ID","setLayoutItem","CLS.MENU_ITEM","CLS.SUBMENU_ICON","CLS.TREE_ID","getRowObjectFromUID","selectRows","setFileItem","setFolderItem","disabledItems","itemsToRemove","pasteIndex","isSubMenu","pasteEle","getMenuItemData","menuModule","currentItems","menuOpenArgs","enableItems","CLS.GRID_ID","CLS.ICON_VIEW","getItemIndex","itemId","disableItem","concat","enable","isUniqueId","checkValidItem","isTree","renameIndex","getItemData","contextMenuSettings","trim","selectedTreeNode","indexToRemove","layout","nameEle","menuClickArgs","sItems","openFileOnContextMenuClick","events.downloadInit","separator","CLS.ICON_OPEN","CLS.ICON_UPLOAD","CLS.ICON_CUT","CLS.ICON_COPY","CLS.ICON_PASTE","CLS.ICON_DELETE","CLS.ICON_RENAME","CLS.ICON_NEWFOLDER","CLS.ICON_DETAILS","CLS.ICON_SHORTBY","CLS.TB_OPTION_DOT","CLS.TB_OPTION_TICK","CLS.ICON_REFRESH","CLS.ICON_SELECTALL","CLS.ICON_DOWNLOAD","FileManager_1","defaultLocale","NewFolder","Upload","Rename","Cut","Copy","Paste","SortBy","Refresh","Item-Selection","Items-Selection","View","Details","SelectAll","Open","Tooltip-NewFolder","Tooltip-Upload","Tooltip-Delete","Tooltip-Rename","Tooltip-Download","Tooltip-Cut","Tooltip-Copy","Tooltip-Paste","Tooltip-SortBy","Tooltip-Refresh","Tooltip-Selection","Tooltip-View","Tooltip-Details","Tooltip-SelectAll","Name","Size","DateModified","DateCreated","Path","Modified","Created","Location","Type","Permission","Ascending","Descending","None","View-LargeIcons","View-Details","Button-Ok","Button-Cancel","Button-Yes","Button-No","Button-Create","Button-Save","Header-NewFolder","Content-NewFolder","Header-Rename","Content-Rename","Header-Rename-Confirmation","Content-Rename-Confirmation","Header-Delete","Content-Delete","Header-Folder-Delete","Content-Folder-Delete","Header-Multiple-Delete","Content-Multiple-Delete","Header-Duplicate","Content-Duplicate","Header-Upload","Error","Validation-Empty","Validation-Invalid","Validation-NewFolder-Exists","Validation-Rename-Exists","Folder-Empty","File-Upload","Search-Empty","Search-Key","Filter-Empty","Filter-Key","Sub-Folder-Error","Same-Folder-Error","Access-Denied","Access-Details","Header-Retry","Content-Retry","Button-Keep-Both","Button-Replace","Button-Skip","ApplyAll-Label","KB","Access-Message","Network-Error","Server-Error","FileManager","Component","preRender","getUniqueID","ensurePath","setAttr","formatUnit","Browser","checkMobile","navigationPaneSettings","isBigger","createSpinner","addWrapper","altN","f5","ctrlShift1","ctrlShift2","ctrlU","L10n","getPersistData","addOnPersist","requiredModules","modules","member","toolbarSettings","initialize","slItems","fileView","navigator","platform","toUpperCase","setRtl","addEventListeners","adjustHeight","splitterObj","collapse","CLS.SPLIT_BAR","renderComplete","CLS.MOBILE","CLS.CHECK_SELECT","addCssClass","renderFileUpload","headerWrap","layoutWrap","CLS.LAYOUT","navigationWrap","CLS.NAVIGATION_ID","CLS.NAVIGATION","treeWrap","contentWrap","CLS.LAYOUT_CONTENT","gridWrap","CLS.BREADCRUMBS","largeiconWrap","role","overlay","CLS.OVERLAY","dialogWrap","paneSettings","min","max","maxWidth","Splitter","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","CLS.UPLOAD_DIALOG_ID","toolbar","toolBarHeight","splitterAdjust","bar","expand","oldOne","newOne","onContextMenu","userAgent","uploadEle","uploadDialogObj","onOpen","onClose","renderUploadBox","uploadUrl","Uploader","asyncSettings","saveUrl","removeUrl","uploading","onUploading","removing","onRemoving","canceling","onCancel","clearing","onClearing","onSelected","success","onUploadSuccess","failure","onUploadFailure","autoUpload","uploadSettings","minFileSize","maxFileSize","allowedExtensions","directoryUpload","fileListRendering","onFileListRender","updateUploader","isOpened","clearAll","customFormData","filename","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","uploadingCount","uploadedCount","autoClose","response","statusText","onInitialEnd","removeEventListeners","wireSelectOnDragEvent","isBind","viewElem","onDragStart","enableRangeSelection","dragX","pageX","dragY","pageY","dragSelectElement","styles","append","onDragStop","onDrag","diffX","stopPropagation","diffY","setStyleAttribute","left","Math","abs","dragSelectedItems","dragRect","allItems_1","itemRect","right","bottom","setPath","oldProp","requiresRefresh","ajaxSettingSetModel","localeSetModelOption","col","refreshing","CLS.RTL","toolbarModule","contextmenuModule","disableToolbarItems","enableToolbarItems","disableMenuItems","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","closeDialog","rtl","Complex","Collection","Event","NotifyPropertyChanges","previousPath","nextPath","deleteRecords","isSameAction","persistData","Inject","Toolbar","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","toolbarItems","tool","toolbarClickArgs","CLS.TB_ITEM","getPupupId","buttonObj","layoutBtnObj","tickIcon","viewText","firstChild","hideItems","default","hideStatus","portals","updateSortByButton","itemCount","mergedItems","propItem","getItemModel","itemTooltip","tooltipText","prefixIcon","showTextOn","spanElement","suffixIcon","CLS.ICON_CLEAR","overflow","align","disabled","showAlwaysInPopup","tabIndex","onSelectionChanged","reRenderToolbar","itemsToProcess","single","selection","multiple","hideItem","tools","toHide","refreshOverflow","isEnable","Virtualization","currentViewItems","largeIconInstance","lastRowCount","rowItemCount","topElement","filemanagerInstance","bottomElement","listItemHeight","totalHeight","topElementHeight","bottomElementHeight","listDiff","renderedCount","dataSourceLength","widthMargin","floor","round","onVirtualUiScroll","scrollPosition","scroll","getscrollerHeight","onNormalScroll","startingHeight","isScrollingDown","updateUI","lastItemIndex","isAllRendered","startItemIndex","previousElementSibling","NavigationPane","onInit","rootData","attr","BaseTreeView","expanded","hasChildren","tooltip","nodeSelecting","onNodeSelecting","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","allowEditing","nodeEditing","onNodeEditing","drawNode","onDrowNode","dataBound","addDragDrop","getTreeData","getDragPath","getDropPath","nodeData","addChild","prevent","directories","targetDirectory","_fm_icon","childElements","addNodes","selecEventArgs","isRightClick","isSameNodeClicked","isPathDragged","isRenameParent","restrictSelecting","renameParent","isNodeClickCalled","previousSelected","expandNodeTarget","onPathDrag","selectResultNode","isDrag","isNodeExpandCalled","events.nodeExpand","onNodeExpanded","innerHtml","currFiles","sNode","expandTree","updateTree","updateTreeNode","toExpand","expandedNodes","removeChildNodes","childs","removeNodes","onOpenEnd","sleId","expandAll","updateItemData","updateActionData","selectedNodeEle","selcetedEle","onRenameEndParent","id_1","nData","onDownLoadInit","onClearPathInit","onDragEnd","moveNames","getMoveNames","previousName","onCutEnd","resultObj","itemname","checkDropPath","onDragging","dataobj","level","keyDown","ctrlShiftN","shiftF10","DetailsView","sortSettings","isValidSortField","checkNameWidth","getColumns","direction","Grid","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","enablePersistence","enableVirtualMaskRow","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","getGridHeight","beforeCopy","load","focusModule","isReact","reactTemplateRender","emptyArgs","pane","initialColumn","isNameWidth","adjustWidth","fieldName","nameWidth","headerTextAlign","SanitizeHtmlHelper","sanitize","_fm_modified","this_1","template_1","iWidth","_fm_iconClass","headerTemplate","unshift","cBox","cWidth","disableHtmlEncode","gridHeader","renderCheckBox","isColumnRefresh","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","sizeFormat","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","nameColumn","find","hdTable","cnTable","selectRecords","isSelectionUpdate","currentSelectedItem","currentViewData","getRowHeight","getHeaderContent","paddingLeft","borderRightWidth","getContent","overflowY","checkEmptyDiv","isLoaded","gridRecords","getCurrentViewRecords","sRecords","Str2","selectedRowIndex","rData","onSortColumn","sortModule","freezeRefresh","interaction","onDetailsResize","pathField","hideAtMedia","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","selectionModule","selectRowsByRange","getRows","selectRow","removeSelection","CLS.HEADER_CHECK","onPasteInit","onDetailsResizeHandler","getRowInfo","dragRow","getSelectedRows","gridHeaderColGroup","gridContentColGroup","gridHeaderColNames","isMultiSelect","isShiftPressed","isCtrlPressed","rowIndexes","selectedRecords","firstItemIndex","getRowByIndex","isHeaderCheckboxClicked","gridSelectNodes","selectSize","record","name_3","keyupHandler","keydownHandler","removeFocus","relatedTarget","thElements","getFocusedItemIndex","crtSrlPos","crtFocusIndex","gridItems","gridLength","focIndex","selIndex","selRowIndeces","currentField","getColumnByUid","nextSibling","addHeaderFocus","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","isSelected","shiftSelectedItem","shiftSelectFocusItem","nextIndex","indexValue","checkAllRows","InnerItems","itemArr","fIndex","selRowIndexes","itemElement","CLS.FOCUSED","nameFocus","treeFocus","tagName","check","getRecords","hasFilter","name_4","dRecords","Resize","Sort","VirtualScroll","reference","referenceIsFile","comparerIsFile","referenceParts","comparerParts","_","$1","$2","Infinity","referencePart","shift","comparerPart","comparisonResult","localeCompare"],"mappings":"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"}
|