@syncfusion/ej2-filemanager 29.2.4 → 30.1.37
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 +2 -0
- package/dist/ej2-filemanager.min.js +2 -2
- package/dist/ej2-filemanager.umd.min.js +2 -2
- package/dist/ej2-filemanager.umd.min.js.map +1 -1
- package/dist/es6/ej2-filemanager.es2015.js +181 -20
- package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
- package/dist/es6/ej2-filemanager.es5.js +182 -20
- 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/dist/ts/file-manager/actions/breadcrumb-bar.d.ts +60 -0
- package/dist/ts/file-manager/actions/breadcrumb-bar.ts +423 -0
- package/dist/ts/file-manager/actions/index.d.ts +6 -0
- package/dist/ts/file-manager/actions/index.ts +6 -0
- package/dist/ts/file-manager/actions/toolbar.d.ts +54 -0
- package/dist/ts/file-manager/actions/toolbar.ts +609 -0
- package/dist/ts/file-manager/actions/virtualization.d.ts +93 -0
- package/dist/ts/file-manager/actions/virtualization.ts +324 -0
- package/dist/ts/file-manager/base/classes.d.ts +224 -0
- package/dist/ts/file-manager/base/classes.ts +225 -0
- package/dist/ts/file-manager/base/constant.d.ts +136 -0
- package/dist/ts/file-manager/base/constant.ts +137 -0
- package/dist/ts/file-manager/base/file-manager-model.d.ts +520 -0
- package/dist/ts/file-manager/base/file-manager.d.ts +867 -0
- package/dist/ts/file-manager/base/file-manager.ts +2061 -0
- package/dist/ts/file-manager/base/index.d.ts +8 -0
- package/dist/ts/file-manager/base/index.ts +8 -0
- package/dist/ts/file-manager/base/interface.d.ts +952 -0
- package/dist/ts/file-manager/base/interface.ts +931 -0
- package/dist/ts/file-manager/common/index.d.ts +5 -0
- package/dist/ts/file-manager/common/index.ts +5 -0
- package/dist/ts/file-manager/common/operations.d.ts +122 -0
- package/dist/ts/file-manager/common/operations.ts +1369 -0
- package/dist/ts/file-manager/common/utility.d.ts +644 -0
- package/dist/ts/file-manager/common/utility.ts +1728 -0
- package/dist/ts/file-manager/index.d.ts +9 -0
- package/dist/ts/file-manager/index.ts +9 -0
- package/dist/ts/file-manager/layout/details-view.d.ts +152 -0
- package/dist/ts/file-manager/layout/details-view.ts +1990 -0
- package/dist/ts/file-manager/layout/index.d.ts +6 -0
- package/dist/ts/file-manager/layout/index.ts +6 -0
- package/dist/ts/file-manager/layout/large-icons-view.d.ts +157 -0
- package/dist/ts/file-manager/layout/large-icons-view.ts +1684 -0
- package/dist/ts/file-manager/layout/navigation-pane.d.ts +104 -0
- package/dist/ts/file-manager/layout/navigation-pane.ts +919 -0
- package/dist/ts/file-manager/models/ajax-settings-model.d.ts +36 -0
- package/dist/ts/file-manager/models/ajax-settings.d.ts +30 -0
- package/dist/ts/file-manager/models/ajax-settings.ts +39 -0
- package/dist/ts/file-manager/models/column-model.d.ts +155 -0
- package/dist/ts/file-manager/models/column.d.ts +179 -0
- package/dist/ts/file-manager/models/column.ts +216 -0
- package/dist/ts/file-manager/models/contextMenu-settings-model.d.ts +36 -0
- package/dist/ts/file-manager/models/contextMenu-settings.d.ts +33 -0
- package/dist/ts/file-manager/models/contextMenu-settings.ts +44 -0
- package/dist/ts/file-manager/models/default-locale.d.ts +4 -0
- package/dist/ts/file-manager/models/default-locale.ts +101 -0
- package/dist/ts/file-manager/models/details-view-settings-model.d.ts +30 -0
- package/dist/ts/file-manager/models/details-view-settings.d.ts +31 -0
- package/dist/ts/file-manager/models/details-view-settings.ts +54 -0
- package/dist/ts/file-manager/models/index.d.ts +19 -0
- package/dist/ts/file-manager/models/index.ts +19 -0
- package/dist/ts/file-manager/models/navigation-pane-settings-model.d.ts +40 -0
- package/dist/ts/file-manager/models/navigation-pane-settings.d.ts +34 -0
- package/dist/ts/file-manager/models/navigation-pane-settings.ts +42 -0
- package/dist/ts/file-manager/models/search-settings-model.d.ts +42 -0
- package/dist/ts/file-manager/models/search-settings.d.ts +44 -0
- package/dist/ts/file-manager/models/search-settings.ts +53 -0
- package/dist/ts/file-manager/models/toolbar-settings-model.d.ts +197 -0
- package/dist/ts/file-manager/models/toolbar-settings.d.ts +174 -0
- package/dist/ts/file-manager/models/toolbar-settings.ts +198 -0
- package/dist/ts/file-manager/models/upload-settings-model.d.ts +70 -0
- package/dist/ts/file-manager/models/upload-settings.d.ts +61 -0
- package/dist/ts/file-manager/models/upload-settings.ts +75 -0
- package/dist/ts/file-manager/pop-up/context-menu.d.ts +64 -0
- package/dist/ts/file-manager/pop-up/context-menu.ts +693 -0
- package/dist/ts/file-manager/pop-up/dialog.d.ts +31 -0
- package/dist/ts/file-manager/pop-up/dialog.ts +1009 -0
- package/dist/ts/file-manager/pop-up/index.d.ts +5 -0
- package/dist/ts/file-manager/pop-up/index.ts +5 -0
- package/dist/ts/index.d.ts +4 -0
- package/dist/ts/index.ts +4 -0
- package/package.json +16 -17
- package/src/file-manager/base/interface.d.ts +10 -0
- package/src/file-manager/common/operations.d.ts +18 -1
- package/src/file-manager/common/operations.js +59 -0
- package/src/file-manager/common/utility.d.ts +3 -3
- package/src/file-manager/common/utility.js +20 -6
- package/src/file-manager/layout/details-view.js +4 -3
- package/src/file-manager/layout/large-icons-view.d.ts +3 -0
- package/src/file-manager/layout/large-icons-view.js +67 -9
- package/src/file-manager/layout/navigation-pane.js +2 -0
- package/src/file-manager/pop-up/dialog.d.ts +3 -3
- package/src/file-manager/pop-up/dialog.js +34 -6
- package/styles/bds-lite.css +51 -1
- package/styles/bds.css +51 -1
- package/styles/bootstrap-dark-lite.css +51 -0
- package/styles/bootstrap-dark.css +51 -0
- package/styles/bootstrap-lite.css +51 -0
- package/styles/bootstrap.css +51 -0
- package/styles/bootstrap4-lite.css +51 -0
- package/styles/bootstrap4.css +51 -0
- package/styles/bootstrap5-dark-lite.css +51 -1
- package/styles/bootstrap5-dark.css +51 -1
- package/styles/bootstrap5-lite.css +51 -1
- package/styles/bootstrap5.3-lite.css +51 -0
- package/styles/bootstrap5.3.css +51 -0
- package/styles/bootstrap5.css +51 -1
- package/styles/fabric-dark-lite.css +51 -0
- package/styles/fabric-dark.css +51 -0
- package/styles/fabric-lite.css +51 -0
- package/styles/fabric.css +51 -0
- package/styles/file-manager/_bds-definition.scss +1 -0
- package/styles/file-manager/_bootstrap5-definition.scss +1 -0
- package/styles/file-manager/_layout.scss +46 -4
- package/styles/file-manager/_material3-definition.scss +2 -2
- package/styles/file-manager/_tailwind-definition.scss +1 -0
- package/styles/file-manager/_tailwind3-definition.scss +1 -0
- package/styles/file-manager/bds.css +51 -1
- package/styles/file-manager/bootstrap-dark.css +51 -0
- package/styles/file-manager/bootstrap.css +51 -0
- package/styles/file-manager/bootstrap4.css +51 -0
- package/styles/file-manager/bootstrap5-dark.css +51 -1
- package/styles/file-manager/bootstrap5.3.css +51 -0
- package/styles/file-manager/bootstrap5.css +51 -1
- package/styles/file-manager/fabric-dark.css +51 -0
- package/styles/file-manager/fabric.css +51 -0
- package/styles/file-manager/fluent-dark.css +51 -0
- package/styles/file-manager/fluent.css +51 -0
- package/styles/file-manager/fluent2.css +51 -0
- package/styles/file-manager/highcontrast-light.css +51 -0
- package/styles/file-manager/highcontrast.css +51 -0
- package/styles/file-manager/material-dark.css +51 -0
- package/styles/file-manager/material.css +51 -0
- package/styles/file-manager/material3-dark.css +53 -2
- package/styles/file-manager/material3.css +53 -2
- package/styles/file-manager/tailwind-dark.css +51 -1
- package/styles/file-manager/tailwind.css +51 -1
- package/styles/file-manager/tailwind3.css +51 -0
- package/styles/fluent-dark-lite.css +51 -0
- package/styles/fluent-dark.css +51 -0
- package/styles/fluent-lite.css +51 -0
- package/styles/fluent.css +51 -0
- package/styles/fluent2-lite.css +51 -0
- package/styles/fluent2.css +51 -0
- package/styles/highcontrast-light-lite.css +51 -0
- package/styles/highcontrast-light.css +51 -0
- package/styles/highcontrast-lite.css +51 -0
- package/styles/highcontrast.css +51 -0
- package/styles/material-dark-lite.css +51 -0
- package/styles/material-dark.css +51 -0
- package/styles/material-lite.css +51 -0
- package/styles/material.css +51 -0
- package/styles/material3-dark-lite.css +51 -0
- package/styles/material3-dark.css +53 -2
- package/styles/material3-lite.css +51 -0
- package/styles/material3.css +53 -2
- package/styles/tailwind-dark-lite.css +51 -1
- package/styles/tailwind-dark.css +51 -1
- package/styles/tailwind-lite.css +51 -1
- package/styles/tailwind.css +51 -1
- package/styles/tailwind3-lite.css +51 -0
- package/styles/tailwind3.css +51 -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 __decorate([\n Property(0)\n ], UploadSettings.prototype, \"chunkSize\", 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 * Get all child items\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string | number} parentId - specifies the parent ID.\n * @returns {Object[]} An array of child items\n * @private\n */\nexport function getAllChildItems(parent, parentId) {\n var children = parent.fileSystemData.filter(function (item) {\n return String(item.parentId) === String(parentId);\n });\n var allChildren = children.slice();\n children.forEach(function (child) {\n var childId = child.id;\n allChildren = allChildren.concat(getAllChildItems(parent, childId));\n });\n return allChildren;\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, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n else {\n parent.searchSettings.filterType = isNOU(parent.searchSettings.filterType) ? 'contains' : parent.searchSettings.filterType;\n var currData = getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n var parentId = getValue('id', currData);\n var filteredData = getAllChildItems(parent, parentId);\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, '/').replace(/^.*?(?=\\/)/, '') + 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[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 * @returns {void}\n * @private\n */\nexport function setDateObject(args) {\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 setValue('_fm_created', createdDate, args[i]);\n setValue('_fm_modified', modifiedDate, 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 var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n if (!isNullOrUndefined(id)) {\n parent.pathId.push(id);\n }\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n read(parent, eventName, parent.path);\n break;\n }\n}\n/**\n * Opens the searched folder\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data\n * @returns {void}\n * @private\n */\nexport function openSearchFolder(parent, data) {\n parent.originalPath = getFullPath(parent, data, parent.path);\n var root = getValue(parent.pathId[0], parent.feParent);\n var navData = parent.feParent[getValue('_fm_id', parent.itemData[0])];\n var isRoot = isNullOrUndefined(navData) || getValue('_fm_id', navData) === '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 = getTargetPath(parent, parent.actionRecords[0]);\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 '/';\n }\n return fPath.replace(/\\\\/g, '/').replace(/^.*?(?=\\/)/, '') + 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 parent.trigger('success', { action: operation, result: result });\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}\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 * Get target path from item data.\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} itemData - specifies the item elements.\n * @returns {string} returns the path.\n * @private\n */\nexport function getTargetPath(parent, itemData) {\n if (parent.hasId && !isNOU(getValue('filterId', itemData))) {\n return getValue('filterId', itemData).replace(/\\\\/g, '/').replace(/^[^/]+\\//, '/');\n }\n else {\n return getValue('filterPath', itemData).replace(/\\\\/g, '/');\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 } 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, getTargetPath } 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 * 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) {\n return !isNOU(item) && String(item.id) === String(id);\n });\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 = String(target.id) !== String(0) && !isNOU(target.parentId) ? 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 var oldName = fileData.name;\n fileData.name = args.newName;\n updateChildrenFilterPath(parent, fileData.id, oldName, 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 update child item filter path.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string | number} parentId - specifies the parent id.\n * @param {string} oldName - specifies the previous name.\n * @param {string} newName - specifies the new name.\n * @returns {void}\n * @private\n */\nfunction updateChildrenFilterPath(parent, parentId, oldName, newName) {\n parent.fileSystemData.forEach(function (item) {\n if (String(item.parentId) === String(parentId)) {\n var oldPath = item.filterPath;\n var newPath = oldPath.replace(oldName + '\\\\', newName + '\\\\');\n item.filterPath = newPath;\n updateChildrenFilterPath(parent, item.id, oldName, newName);\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_1 = args.targetData;\n var getTargetFiles = filterByParent(parent, target_1.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_1.hasChild) {\n target_1.hasChild = !currItem.isFile;\n var targetItem = parent.fileSystemData\n .filter(function (item) { return String(item.id) === String(target_1.id); });\n if (targetItem.length > 0) {\n targetItem[0].hasChild = target_1.hasChild;\n }\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_1;\n parent.dropPath = args.path;\n var pathArray = args.targetPath.replace(/^\\/|\\/$/g, '').split('/');\n target_1 = filterById(parent, pathArray[pathArray.length - 1]);\n }\n fileData.parentId = target_1.id;\n fileData.filterPath = target_1.id === 0 ? '\\\\' : target_1.filterPath + target_1.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' || event === 'rename-end-parent'\n ? 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 && isNOU(parent.renamedItem))\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 if (action === 'copy') {\n itemData = parent.pasteNodes.map(function (item) { return filterById(parent, item); });\n }\n else {\n itemData = getValue('data', data).map(function (item) { return filterById(parent, item.id); });\n }\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) || isMultipleFiles ? parent.pathNames.join('/') : parent.pathNames.join('/') + '/' + details.name);\n parent.responseData.details = Object.assign({\n location: 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 if (!isNOU(result.files)) {\n setDateObject(result.files);\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') {\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 }\n if (location_1.indexOf('\\\\') === -1) {\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 var pathObject = getPathObject(parent);\n var pathLevel = parent.pathId[parent.pathId.length - 1].split('_').length - 2;\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n var renamePath = getTargetPath(parent, parent.renamedItem);\n read(parent, events.renameEndParent, renamePath);\n if (!isNOU(pathObject) && parent.pathNames.length > 1 && pathLevel <= parent.pathNames.length - 1) {\n parent.pathNames[pathLevel] = parent.renameText;\n if (!parent.hasId) {\n parent.setProperties({ path: \"/\" + parent.pathNames.slice(1).join('/') + \"/\" }, true);\n }\n }\n parent.itemData = parent.navigationpaneModule.previousSelected.length > 0\n ? parent.navigationpaneModule.treeObj.getTreeData(parent.navigationpaneModule.previousSelected[0]) : parent.itemData;\n read(parent, events.pathChanged, parent.path);\n parent.itemData[0] = parent.renamedItem;\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, getTargetPath } 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 = '';\n if (parent.activeModule === 'navigationpane') {\n newPath = getTargetPath(parent, parent.itemData[0]);\n }\n else {\n newPath = parent.path;\n }\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 && !isNOU(this.parent.virtualizationModule)) {\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 && !isNOU(this.parent.virtualizationModule)) {\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 && this.parent.activeModule === 'largeiconsview') {\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 ctrlKey = this.parent.isMac ? e.metaKey : e.ctrlKey;\n var isMacRightClick = this.parent.isMac && e.ctrlKey && e.shiftKey;\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 || isMacRightClick) && !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 && (ctrlKey || target.classList.contains(CLS.CHECK))) {\n action = 'unselect';\n }\n if (ctrlKey && e.shiftKey && !isMacRightClick) {\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 && !ctrlKey)))\n && !cList.contains(CLS.FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey && !isMacRightClick) {\n if (!(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.setProperties({ 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('aria-rowindex'), 10) - 1]);\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.navUid = 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 if (enable) {\n this.disabledItems = this.disabledItems.filter(function (item) { return items.indexOf(item) === -1; });\n }\n for (var i = 0; i < items.length; i++) {\n var validItem = this.checkValidItem(items[i]);\n if (validItem === 1) {\n this.contextMenu.enableItems([this.getMenuId(items[i])], enable, isUniqueId);\n }\n else if (validItem === 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.navUid + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (!isNOU(selectedTreeNode) &&\n 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(this.currentElement)) {\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 }\n return -1;\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 if (itemText !== 'cut' && itemText !== 'copy') {\n _this.isMenuItemClicked = true;\n }\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 _this.onScrollHandler = function () {\n if (!isNOU(_this.contextmenuModule) && !isNOU(_this.contextmenuModule.contextMenu)) {\n _this.contextmenuModule.contextMenu.close();\n }\n };\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 chunkSize: this.uploadSettings.chunkSize,\n retryCount: 0\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n chunkUploading: this.onChunkUploading.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.onChunkUploading = 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 }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'size': args.fileData.size }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\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 if (this.uploadSettings.chunkSize === 0) {\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'size': args.fileData.size }, { '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 FileManager.prototype.onChunkUploadComplete = function (files) {\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n var uploadFile = !isNullOrUndefined(files) ? getValue('file', files).name : '';\n if (uploadFile === this.retryArgs[i].file.name) {\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploadSuccess = function (files) {\n if (this.uploadSettings.chunkSize > 0) {\n this.onChunkUploadComplete(files);\n }\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 if (this.uploadSettings.chunkSize > 0) {\n this.onChunkUploadComplete(files);\n }\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 (isBind) {\n if (this.allowMultiSelection) {\n this.on(events.layoutChange, this.onLayoutChange, this);\n this.on(events.selectionChanged, this.onLayoutChange, this);\n }\n }\n else {\n this.off(events.layoutChange, this.onLayoutChange);\n this.off(events.selectionChanged, this.onLayoutChange);\n }\n if (this.viewElem) {\n if (isBind && this.allowMultiSelection) {\n EventHandler.add(this.viewElem, 'mousedown', this.onDragStart, this);\n }\n else {\n EventHandler.remove(this.viewElem, 'mousedown', this.onDragStart);\n }\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 if (this.contextMenuSettings.visible) {\n this.element.addEventListener('scroll', this.onScrollHandler, true);\n }\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 if (this.contextMenuSettings.visible) {\n this.element.removeEventListener('scroll', this.onScrollHandler, true);\n }\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 var dragRect = this.dragSelectElement.getBoundingClientRect();\n if (dragRect.height > 0 && dragRect.width > 0) {\n this.dragSelectedItems = [];\n removeClass(selectAll('.e-active', this.viewElem), ['e-active', 'e-focus']);\n removeClass(selectAll('.e-check', this.viewElem), ['e-check']);\n }\n var allItems = selectAll(this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-row', this.viewElem);\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 && (dragRect.height > 0 && dragRect.width > 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 if (this.showItemCheckBoxes) {\n item.querySelector('.e-frame').classList.add('e-check');\n }\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.oldPath = oldProp.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 * Enables the specified menu 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.enableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.enableItems(items, true, 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) && !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 || itemCount === 0) {\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 // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = [];\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 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 || this.isPathDragged) {\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.isPathDragged = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.setProperties({ 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.setProperties({ 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 }\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.setProperties({ 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 }\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], true);\n }\n this.expandNodeTarget = '';\n }\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.setProperties({ 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.setProperties({ 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.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 = this.previousSelected.length > 0 && this.treeObj.getTreeData(this.previousSelected[0]).length !== 0\n ? this.previousSelected[0] : getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n this.updateItemData();\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, this.parent.path);\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.setProperties({ selectedNodes: [e.selectedNode] });\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n if (isFileSystemData(this.parent)) {\n this.moveNames = [];\n var obj = this.parent.dragData;\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 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.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 ? 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 node = select('[data-uid=\"' + this.parent.pathId[this.parent.pathId.length - 1] + '\"]', this.treeObj.element);\n updatePath(node, this.parent.itemData[0], this.parent);\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 if (this.parent.enablePersistence) {\n var gridPersistenceValue = window.localStorage.getItem('grid' + this.parent.element.id + '_grid');\n if (!isNOU(gridPersistenceValue)) {\n var model = JSON.parse(gridPersistenceValue);\n if (!isNOU(model) && Object.keys(model).length > 0 && 'sortSettings' in model) {\n delete model.sortSettings;\n window.localStorage.setItem('grid' + this.parent.element.id + '_grid', JSON.stringify(model));\n }\n }\n }\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 if (this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization && this.parent.enablePersistence) {\n this.isLoaded = true;\n }\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) || this.isLoaded) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true && (!isNullOrUndefined(this.gridObj.getDataRows()) && this.gridObj.getDataRows().length > 0)) {\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 this.wireClickEvent(true);\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 var filterPathInSettings = this.parent.detailsViewSettings.columns.some(function (col) { return col.field === 'filterPath'; });\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath') && !filterPathInSettings) {\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].style.width = '120px';\n gridContentColGroup.children[i].style.width = '120px';\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].style.width = 'auto';\n gridContentColGroup.children[i].style.width = 'auto';\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].style.width = '120px';\n gridContentColGroup.children[i].style.width = '120px';\n }\n else {\n gridHeaderColGroup.children[i].style.width = '180px';\n gridContentColGroup.children[i].style.width = '180px';\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].style.width = 'auto';\n gridContentColGroup.children[i].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 if (!isNOU(lastItem)) {\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\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 var item = this.gridObj.getRowByIndex(args.rowIndex);\n if (!isNOU(item)) {\n item.removeAttribute('tabindex');\n }\n }\n else 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 if (!isNOU(lastItem)) {\n lastItem.querySelector('.e-checkselect').removeAttribute('tabindex');\n }\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('aria-rowindex'), 10) - 1 : 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","getAllChildItems","parentId","children","fileSystemData","filter","item","String","allChildren","slice","forEach","child","childId","concat","searchWordHandler","isLayoutChange","caseSensitive","searchWord","events.pathColumn","args","isFileSystemData","itemData","read","events.layoutChange","events.search","searchSettings","filterType","currData","filteredData","DataManager","executeLocal","Query","where","ignoreCase","searchValue","toLowerCase","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","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","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","createdDate","modifiedDate","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","navData","isRoot","searchData","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","includes","getTargetPath","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","filterById","filterByParent","createNewItem","isCopy","newItem","call","currentDate","assign","dateCreated","dateModified","hasChild","getUid","createErrorObject","triggerRenameOperation","renameEventArgs","fileData","oldName","updateChildrenFilterPath","triggerClientEvents","createEventArgs","folderName","parentFolder","newObject","data_1","deleteEventArgs","index","splice","obj","subItem","moveEventArgs","folderSubItems_1","itemPermission","pathPermission","file_1","existingFileCount","copyFolderItems","target_1","getTargetFiles","subItems","pathArray","currItem","targetItem","searchEventArgs","searchResults","searchText","fn","mode","dataType","contentType","JSON","stringify","onSuccess","onFailure","beforeSend","beforeSendArgs","isMultipleFiles","itemNames","totalSize","events.beforeRequest","idValue","renamedItem","isFileOperation","map","getSize","reduce","accumulator","currentObject","location","multipleFiles","created","modified","performReadOperation","Ajax","result_1","triggerAjaxFailure","parse","send","hz","toFixed","events.afterRequest","rootName","rootAliasName","location_1","RegExp","match","events.searchTextChange","copiedItems","events.selectionChanged","pop","handleCatchError","visible","nextElementSibling","createdItem","events.createEnd","pathObject","pathLevel","renamePath","isArray","events.renameEndParent","renameText","previousSelected","getTreeData","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","intl","Internationalization","formattedString","formatDate","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","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","isMac","metaKey","isMacRightClick","cList","isSelectAllCalled","CLS.CHECK","triggerSelection","CLS.FRAME","startIndex","endIndex","addActive","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","folder","fItem","getFocusedItem","firstItem","scrollTo","scrollHeight","navigateItem","scrollTop","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","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","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","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","navUid","getRowObjectFromUID","selectRows","setFileItem","setFolderItem","disabledItems","itemsToRemove","pasteIndex","isSubMenu","pasteEle","getMenuItemData","menuModule","currentItems","menuOpenArgs","enableItems","CLS.GRID_ID","CLS.ICON_VIEW","getItemIndex","itemId","disableItem","enable","isUniqueId","validItem","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","chunkSize","uploadSettings","retryCount","uploading","onUploading","chunkUploading","onChunkUploading","removing","onRemoving","canceling","onCancel","clearing","onClearing","onSelected","success","onUploadSuccess","failure","onUploadFailure","autoUpload","minFileSize","maxFileSize","allowedExtensions","directoryUpload","fileListRendering","onFileListRender","updateUploader","isOpened","clearAll","customFormData","filename","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","uploadingCount","uploadedCount","autoClose","onChunkUploadComplete","response","statusText","onInitialEnd","removeEventListeners","wireSelectOnDragEvent","isBind","viewElem","onDragStart","enableRangeSelection","onScrollHandler","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","enableMenuItems","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","parentID","expanded","hasChildren","tooltip","nodeSelecting","onNodeSelecting","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","allowEditing","nodeEditing","onNodeEditing","drawNode","onDrowNode","dataBound","addDragDrop","getDragPath","getDropPath","nodeData","addChild","prevent","directories","targetDirectory","_fm_icon","childElements","addNodes","selecEventArgs","isRightClick","isSameNodeClicked","isPathDragged","isRenameParent","restrictSelecting","renameParent","isNodeClickCalled","expandNodeTarget","onPathDrag","selectResultNode","isDrag","isNodeExpandCalled","events.nodeExpand","onNodeExpanded","innerHtml","currFiles","sNode","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","enablePersistence","gridPersistenceValue","localStorage","getItem","model","setItem","checkNameWidth","getColumns","direction","Grid","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","enableVirtualMaskRow","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","getGridHeight","beforeCopy","load","focusModule","isReact","reactTemplateRender","isLoaded","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","getDataRows","isSelectionUpdate","currentSelectedItem","currentViewData","getRowHeight","getHeaderContent","paddingLeft","borderRightWidth","getContent","overflowY","checkEmptyDiv","gridRecords","getCurrentViewRecords","sRecords","Str2","selectedRowIndex","rData","onSortColumn","sortModule","freezeRefresh","interaction","onDetailsResize","pathField","hideAtMedia","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","filterPathInSettings","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 __decorate([\n Property(0)\n ], UploadSettings.prototype, \"chunkSize\", 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 * Get all child items\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string | number} parentId - specifies the parent ID.\n * @returns {Object[]} An array of child items\n * @private\n */\nexport function getAllChildItems(parent, parentId) {\n var children = parent.fileSystemData.filter(function (item) {\n return String(item.parentId) === String(parentId);\n });\n var allChildren = children.slice();\n children.forEach(function (child) {\n var childId = child.id;\n allChildren = allChildren.concat(getAllChildItems(parent, childId));\n });\n return allChildren;\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, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n else {\n parent.searchSettings.filterType = isNOU(parent.searchSettings.filterType) ? 'contains' : parent.searchSettings.filterType;\n var currData = getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n var parentId = getValue('id', currData);\n var filteredData = getAllChildItems(parent, parentId);\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 {BeforeImageLoadEventArgs} - returns the eventargs.\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 useImageAsUrl: true\n };\n parent.trigger('beforeImageLoad', eventArgs_1);\n return eventArgs_1;\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 data = { 'action': 'getImage', 'path': parent.path + fileName, 'id': getValue('id', item) };\n var ajaxSettings = {\n url: baseUrl,\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 = {\n fileDetails: [item],\n imageUrl: imgUrl,\n useImageAsUrl: true,\n ajaxSettings: ajaxSettings\n };\n parent.trigger('beforeImageLoad', eventArgs);\n return eventArgs;\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, '/').replace(/^.*?(?=\\/)/, '') + 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[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 = parent.uploadObj.dropArea == null ? getLocaleText(parent, '') : 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 * @returns {void}\n * @private\n */\nexport function setDateObject(args) {\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 setValue('_fm_created', createdDate, args[i]);\n setValue('_fm_modified', modifiedDate, 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 var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n if (!isNullOrUndefined(id)) {\n parent.pathId.push(id);\n }\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n read(parent, eventName, parent.path);\n break;\n }\n}\n/**\n * Opens the searched folder\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data\n * @returns {void}\n * @private\n */\nexport function openSearchFolder(parent, data) {\n parent.originalPath = getFullPath(parent, data, parent.path);\n var root = getValue(parent.pathId[0], parent.feParent);\n var navData = parent.feParent[getValue('_fm_id', parent.itemData[0])];\n var isRoot = isNullOrUndefined(navData) || getValue('_fm_id', navData) === '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 = getTargetPath(parent, parent.actionRecords[0]);\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 '/';\n }\n return fPath.replace(/\\\\/g, '/').replace(/^.*?(?=\\/)/, '') + 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 parent.trigger('success', { action: operation, result: result });\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}\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 * Get target path from item data.\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} itemData - specifies the item elements.\n * @returns {string} returns the path.\n * @private\n */\nexport function getTargetPath(parent, itemData) {\n if (parent.hasId && !isNOU(getValue('filterId', itemData))) {\n return getValue('filterId', itemData).replace(/\\\\/g, '/').replace(/^[^/]+\\//, '/');\n }\n else {\n return getValue('filterPath', itemData).replace(/\\\\/g, '/');\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 } 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, getTargetPath } 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 * 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) {\n return !isNOU(item) && String(item.id) === String(id);\n });\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 = String(target.id) !== String(0) && !isNOU(target.parentId) ? 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 if (!isNOU(target.filterId)) {\n Object.assign(newItem, {\n filterId: target.filterId + target.id + '/'\n });\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 var oldName = fileData.name;\n fileData.name = args.newName;\n updateChildrenFilterPath(parent, fileData.id, oldName, 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 update child item filter path.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string | number} parentId - specifies the parent id.\n * @param {string} oldName - specifies the previous name.\n * @param {string} newName - specifies the new name.\n * @returns {void}\n * @private\n */\nfunction updateChildrenFilterPath(parent, parentId, oldName, newName) {\n parent.fileSystemData.forEach(function (item) {\n if (String(item.parentId) === String(parentId)) {\n var oldPath = item.filterPath;\n var newPath = oldPath.replace(oldName + '\\\\', newName + '\\\\');\n item.filterPath = newPath;\n updateChildrenFilterPath(parent, item.id, oldName, newName);\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_1 = args.targetData;\n var getTargetFiles = filterByParent(parent, target_1.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_1.hasChild) {\n target_1.hasChild = !currItem.isFile;\n var targetItem = parent.fileSystemData\n .filter(function (item) { return String(item.id) === String(target_1.id); });\n if (targetItem.length > 0) {\n targetItem[0].hasChild = target_1.hasChild;\n }\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_1;\n parent.dropPath = args.path;\n var pathArray = args.targetPath.replace(/^\\/|\\/$/g, '').split('/');\n target_1 = filterById(parent, pathArray[pathArray.length - 1]);\n }\n fileData.parentId = target_1.id;\n fileData.filterPath = target_1.id === 0 ? '\\\\' : target_1.filterPath + target_1.name + '\\\\';\n if (!isNOU(target_1.filterId)) {\n fileData.filterId = target_1.filterId + target_1.id + '/';\n }\n if (!currItem.isFile) {\n updateMovedItemChildren(parent, fileData);\n }\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' || event === 'rename-end-parent'\n ? 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 && isNOU(parent.renamedItem))\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 if (action === 'copy') {\n itemData = parent.pasteNodes.map(function (item) { return filterById(parent, item); });\n }\n else {\n itemData = getValue('data', data).map(function (item) { return filterById(parent, item.id); });\n }\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) || isMultipleFiles ? parent.pathNames.join('/') : parent.pathNames.join('/') + '/' + details.name);\n parent.responseData.details = Object.assign({\n location: 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 if (!isNOU(result.files)) {\n setDateObject(result.files);\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') {\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 }\n if (location_1.indexOf('\\\\') === -1) {\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 to move operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} itemData - specifies the data.\n * @returns {void}\n * @private\n */\nfunction updateMovedItemChildren(parent, itemData) {\n var childItems = filterByParent(parent, itemData.id);\n childItems.forEach(function (childItem) {\n childItem.filterPath = itemData.filterPath + itemData.name + '\\\\';\n if (!isNOU(itemData.filterId)) {\n childItem.filterId = itemData.filterId + itemData.id + '/';\n }\n if (!childItem.isFile) {\n updateMovedItemChildren(parent, childItem);\n }\n });\n}\n/**\n * Function for trigger Ajax failure in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the beforeSendArgs.\n * @param {Function} fn - specifies the function.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @returns {void}\n * @private\n */\nfunction triggerAjaxFailure(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 var pathObject = getPathObject(parent);\n var pathLevel = parent.pathId[parent.pathId.length - 1].split('_').length - 2;\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n var renamePath = getTargetPath(parent, parent.renamedItem);\n read(parent, events.renameEndParent, renamePath);\n if (!isNOU(pathObject) && parent.pathNames.length > 1 && pathLevel <= parent.pathNames.length - 1) {\n parent.pathNames[pathLevel] = parent.renameText;\n if (!parent.hasId) {\n parent.setProperties({ path: \"/\" + parent.pathNames.slice(1).join('/') + \"/\" }, true);\n }\n }\n parent.itemData = parent.navigationpaneModule.previousSelected.length > 0\n ? parent.navigationpaneModule.treeObj.getTreeData(parent.navigationpaneModule.previousSelected[0]) : parent.itemData;\n read(parent, events.pathChanged, parent.path);\n parent.itemData[0] = parent.renamedItem;\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/**\n * Function for trigger Fetch success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} ajaxSettings - specifies the ajax settings.\n * @returns {void}\n */\nexport function triggerFetchSuccess(parent, ajaxSettings) {\n parent.notify(events.afterRequest, { action: 'success' });\n if (ajaxSettings && typeof getValue('onSuccess', ajaxSettings) === 'function') {\n getValue('onSuccess', ajaxSettings)();\n }\n}\n/**\n * Function for trigger Fetch failure in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} ajaxSettings - specifies the ajax settings.\n * @param {ReadArgs} result - specifies the result.\n * @returns {void}\n */\nexport function triggerFetchFailure(parent, ajaxSettings, result) {\n parent.notify(events.afterRequest, { action: 'failure' });\n createDialog(parent, 'Error', result);\n if (typeof getValue('onFailure', ajaxSettings) === 'function') {\n getValue('onFailure', ajaxSettings)();\n }\n}\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { select, isNullOrUndefined as isNOU, createElement, Internationalization, Fetch } 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, triggerFetchFailure, triggerFetchSuccess } from '../common/operations';\nimport { getLocaleText, getDuplicateData, objectToString, getCssClass, getTargetPath } 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 = '';\n if (parent.activeModule === 'navigationpane') {\n newPath = getTargetPath(parent, parent.itemData[0]);\n }\n else {\n newPath = parent.path;\n }\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 {BeforeImageLoadEventArgs} imageData - specifies the image eventargs.\n * @returns {void}\n * @private\n */\nexport function createImageDialog(parent, header, imageData) {\n var content = createElement('div', { className: 'e-image-wrap' });\n if (imageData.useImageAsUrl) {\n var image = createElement('img', { className: 'e-image', attrs: { src: imageData.imageUrl, alt: header } });\n content.appendChild(image);\n }\n else {\n var fetch_1 = new Fetch({\n url: getValue('url', imageData.ajaxSettings),\n type: getValue('type', imageData.ajaxSettings),\n contentType: getValue('contentType', imageData.ajaxSettings),\n responseType: getValue('responseType', imageData.ajaxSettings),\n beforeSend: getValue('beforeSend', imageData.ajaxSettings),\n onSuccess: function (e) {\n var blobUrl = URL.createObjectURL(e);\n var image = createElement('img', { className: 'e-image', attrs: { src: blobUrl, alt: header } });\n content.appendChild(image);\n triggerFetchSuccess(parent, imageData.ajaxSettings);\n },\n onFailure: function (e) {\n var result = {\n error: {\n code: e.status.toString(),\n message: getLocaleText(parent, 'Network-Error') + ' ' + getValue('url', imageData.ajaxSettings)\n }\n };\n triggerFetchFailure(parent, imageData.ajaxSettings, result);\n }\n });\n var data = getValue('data', imageData.ajaxSettings);\n fetch_1.send(data);\n }\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, Fetch } 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, triggerFetchFailure, triggerFetchSuccess } 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, getLocaleText } 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.imageEventArgsMap = new Map();\n this.imageUrlCache = new Map();\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', imageAttributes: '_fm_imageAttr', 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 && !isNOU(this.parent.virtualizationModule)) {\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 if (this.imageEventArgsMap.size > 0) {\n this.loadImages();\n }\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 && !isNOU(this.parent.virtualizationModule)) {\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.loadImages = function () {\n var _this = this;\n var imageEle = this.parent.element.querySelectorAll('.e-list-img');\n imageEle.forEach(function (imgElement) {\n var imageKey = imgElement.getAttribute('data-image-key');\n if (!imageKey) {\n return;\n }\n if (_this.imageUrlCache.has(imageKey)) {\n imgElement.setAttribute('src', _this.imageUrlCache.get(imageKey));\n imgElement.classList.remove('image-blur');\n return;\n }\n var imageDetails = _this.imageEventArgsMap.get(imageKey);\n if (!imageDetails) {\n return;\n }\n var fetch = new Fetch({\n url: getValue('url', imageDetails.ajaxSettings),\n type: getValue('type', imageDetails.ajaxSettings),\n contentType: getValue('contentType', imageDetails.ajaxSettings),\n responseType: getValue('responseType', imageDetails.ajaxSettings),\n beforeSend: getValue('beforeSend', imageDetails.ajaxSettings),\n onSuccess: function (blob) {\n var blobUrl = URL.createObjectURL(blob);\n _this.imageUrlCache.set(imageKey, blobUrl);\n imgElement.setAttribute('src', blobUrl);\n imgElement.classList.remove('image-blur');\n triggerFetchSuccess(_this.parent, imageDetails.ajaxSettings);\n },\n onFailure: function (response) {\n var result = {\n files: null,\n error: {\n code: response.status ? response.status.toString() : '404',\n message: getLocaleText(_this.parent, 'Network-Error') + ' ' + getValue('url', imageDetails.ajaxSettings),\n fileExists: null\n }\n };\n triggerFetchFailure(_this.parent, imageDetails.ajaxSettings, result);\n }\n });\n fetch.send(getValue('data', imageDetails.ajaxSettings));\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 imageData = getImageUrl(this.parent, items[i]);\n if (imageData.useImageAsUrl) {\n setValue('_fm_imageUrl', imageData.imageUrl, items[i]);\n setValue('_fm_imageAttr', { alt: name_1 }, items[i]);\n }\n else {\n var uniqueKey = \"img_\" + name_1 + \"_\" + i;\n this.imageEventArgsMap.set(uniqueKey, imageData);\n setValue('_fm_imageUrl', '', items[i]);\n setValue('_fm_imageAttr', { alt: name_1, class: 'e-list-img image-blur', 'data-image-key': uniqueKey }, items[i]);\n }\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 && this.parent.activeModule === 'largeiconsview') {\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 ctrlKey = this.parent.isMac ? e.metaKey : e.ctrlKey;\n var isMacRightClick = this.parent.isMac && e.ctrlKey && e.shiftKey;\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 || isMacRightClick) && !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 && (ctrlKey || target.classList.contains(CLS.CHECK))) {\n action = 'unselect';\n }\n if (ctrlKey && e.shiftKey && !isMacRightClick) {\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 && !ctrlKey)))\n && !cList.contains(CLS.FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey && !isMacRightClick) {\n if (!(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 imageData = getImageUrl(_this.parent, details_1);\n createImageDialog(_this.parent, text, imageData);\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.setProperties({ 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('aria-rowindex'), 10) - 1]);\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.navUid = 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 if (enable) {\n this.disabledItems = this.disabledItems.filter(function (item) { return items.indexOf(item) === -1; });\n }\n for (var i = 0; i < items.length; i++) {\n var validItem = this.checkValidItem(items[i]);\n if (validItem === 1) {\n this.contextMenu.enableItems([this.getMenuId(items[i])], enable, isUniqueId);\n }\n else if (validItem === 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.navUid + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (!isNOU(selectedTreeNode) &&\n 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(this.currentElement)) {\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 }\n return -1;\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 if (itemText !== 'cut' && itemText !== 'copy') {\n _this.isMenuItemClicked = true;\n }\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 _this.onScrollHandler = function () {\n if (!isNOU(_this.contextmenuModule) && !isNOU(_this.contextmenuModule.contextMenu)) {\n _this.contextmenuModule.contextMenu.close();\n }\n };\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 chunkSize: this.uploadSettings.chunkSize,\n retryCount: 0\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n chunkUploading: this.onChunkUploading.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.onChunkUploading = 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 }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'size': args.fileData.size }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\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 if (this.uploadSettings.chunkSize === 0) {\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'size': args.fileData.size }, { '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 FileManager.prototype.onChunkUploadComplete = function (files) {\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n var uploadFile = !isNullOrUndefined(files) ? getValue('file', files).name : '';\n if (uploadFile === this.retryArgs[i].file.name) {\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploadSuccess = function (files) {\n if (this.uploadSettings.chunkSize > 0) {\n this.onChunkUploadComplete(files);\n }\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 if (this.uploadSettings.chunkSize > 0) {\n this.onChunkUploadComplete(files);\n }\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 (isBind) {\n if (this.allowMultiSelection) {\n this.on(events.layoutChange, this.onLayoutChange, this);\n this.on(events.selectionChanged, this.onLayoutChange, this);\n }\n }\n else {\n this.off(events.layoutChange, this.onLayoutChange);\n this.off(events.selectionChanged, this.onLayoutChange);\n }\n if (this.viewElem) {\n if (isBind && this.allowMultiSelection) {\n EventHandler.add(this.viewElem, 'mousedown', this.onDragStart, this);\n }\n else {\n EventHandler.remove(this.viewElem, 'mousedown', this.onDragStart);\n }\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 if (this.contextMenuSettings.visible) {\n this.element.addEventListener('scroll', this.onScrollHandler, true);\n }\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 if (this.contextMenuSettings.visible) {\n this.element.removeEventListener('scroll', this.onScrollHandler, true);\n }\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 var dragRect = this.dragSelectElement.getBoundingClientRect();\n if (dragRect.height > 0 && dragRect.width > 0) {\n this.dragSelectedItems = [];\n removeClass(selectAll('.e-active', this.viewElem), ['e-active', 'e-focus']);\n removeClass(selectAll('.e-check', this.viewElem), ['e-check']);\n }\n var allItems = selectAll(this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-row', this.viewElem);\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 && (dragRect.height > 0 && dragRect.width > 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 if (this.showItemCheckBoxes) {\n item.querySelector('.e-frame').classList.add('e-check');\n }\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.oldPath = oldProp.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 * Enables the specified menu 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.enableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.enableItems(items, true, 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) && !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 || itemCount === 0) {\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 // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = [];\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 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 || this.isPathDragged) {\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.isPathDragged = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.setProperties({ selectedNodes: [args.node.getAttribute('data-uid')] });\n }\n }\n else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {\n this.isSameNodeClicked = true;\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.setProperties({ 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.setProperties({ 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 }\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], true);\n }\n this.expandNodeTarget = '';\n }\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.setProperties({ 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.setProperties({ 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.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 = this.previousSelected.length > 0 && this.treeObj.getTreeData(this.previousSelected[0]).length !== 0\n ? this.previousSelected[0] : getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n this.updateItemData();\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, this.parent.path);\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.setProperties({ selectedNodes: [e.selectedNode] });\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n if (isFileSystemData(this.parent)) {\n this.moveNames = [];\n var obj = this.parent.dragData;\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 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.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 ? 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 node = select('[data-uid=\"' + this.parent.pathId[this.parent.pathId.length - 1] + '\"]', this.treeObj.element);\n updatePath(node, this.parent.itemData[0], this.parent);\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 if (this.parent.enablePersistence) {\n var gridPersistenceValue = window.localStorage.getItem('grid' + this.parent.element.id + '_grid');\n if (!isNOU(gridPersistenceValue)) {\n var model = JSON.parse(gridPersistenceValue);\n if (!isNOU(model) && Object.keys(model).length > 0 && 'sortSettings' in model) {\n delete model.sortSettings;\n window.localStorage.setItem('grid' + this.parent.element.id + '_grid', JSON.stringify(model));\n }\n }\n }\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 if (this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization && this.parent.enablePersistence) {\n this.isLoaded = true;\n }\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) || this.isLoaded) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true && (!isNullOrUndefined(this.gridObj.getDataRows()) && this.gridObj.getDataRows().length > 0)) {\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 && this.parent.selectedItems.length === 0) {\n this.gridObj.clearSelection();\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 this.wireClickEvent(true);\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 imageData = getImageUrl(_this.parent, data);\n createImageDialog(_this.parent, name_2, imageData);\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 var filterPathInSettings = this.parent.detailsViewSettings.columns.some(function (col) { return col.field === 'filterPath'; });\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath') && !filterPathInSettings) {\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].style.width = '120px';\n gridContentColGroup.children[i].style.width = '120px';\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].style.width = 'auto';\n gridContentColGroup.children[i].style.width = 'auto';\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].style.width = '120px';\n gridContentColGroup.children[i].style.width = '120px';\n }\n else {\n gridHeaderColGroup.children[i].style.width = '180px';\n gridContentColGroup.children[i].style.width = '180px';\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].style.width = 'auto';\n gridContentColGroup.children[i].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 if (!isNOU(lastItem)) {\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\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 var item = this.gridObj.getRowByIndex(args.rowIndex);\n if (!isNOU(item)) {\n item.removeAttribute('tabindex');\n }\n }\n else 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 if (!isNOU(lastItem)) {\n lastItem.querySelector('.e-checkselect').removeAttribute('tabindex');\n }\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('aria-rowindex'), 10) - 1 : 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","getAllChildItems","parentId","children","fileSystemData","filter","item","String","allChildren","slice","forEach","child","childId","concat","searchWordHandler","isLayoutChange","caseSensitive","searchWord","events.pathColumn","args","isFileSystemData","itemData","read","events.layoutChange","events.search","searchSettings","filterType","currData","filteredData","DataManager","executeLocal","Query","where","ignoreCase","searchValue","toLowerCase","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","baseUrl","fileName","fPath","eventArgs","imgUrl","trigger","eventArgs_1","fileDetails","imageUrl","useImageAsUrl","pathUrl","ajaxSettings","url","encodeURIComponent","imgId","replace","Date","getTime","contentType","responseType","JSON","stringify","onSuccess","onFailure","beforeSend","getFullPath","filePath","getName","name","getSortedData","items","query","sortOrder","isNullOrUndefined","sortBy","group","lists","getObject","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","uploadObj","dropArea","style","marginTop","getDirectories","setNodeId","result","rootId","dirs","len","setValue","setDateObject","createdDate","modifiedDate","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","navData","isRoot","searchData","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","includes","getTargetPath","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","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","filterById","filterByParent","createNewItem","isCopy","newItem","call","currentDate","assign","dateCreated","dateModified","hasChild","getUid","filterId","createErrorObject","triggerRenameOperation","renameEventArgs","fileData","oldName","updateChildrenFilterPath","triggerMoveOrCopyOperation","moveEventArgs","folderSubItems_1","itemPermission","pathPermission","file_1","existingFileCount","copyFolderItems","target_1","getTargetFiles","subItems","pathArray","currItem","targetItem","updateMovedItemChildren","childItems","childItem","triggerClientEvents","createEventArgs","folderName","parentFolder","newObject","data_1","deleteEventArgs","index","splice","obj","subItem","searchEventArgs","searchResults","searchText","fn","mode","dataType","beforeSendArgs","isMultipleFiles","itemNames","totalSize","events.beforeRequest","idValue","renamedItem","isFileOperation","map","getSize","reduce","accumulator","currentObject","location","multipleFiles","created","modified","performReadOperation","Ajax","result_1","triggerAjaxFailure","parse","send","hz","toFixed","events.afterRequest","rootName","rootAliasName","location_1","RegExp","match","events.searchTextChange","copiedItems","events.selectionChanged","pop","handleCatchError","visible","nextElementSibling","createdItem","events.createEnd","pathObject","pathLevel","renamePath","isArray","events.renameEndParent","renameText","previousSelected","getTreeData","events.pathChanged","events.renameEnd","moveorcopyEventArgs","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","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","triggerFetchSuccess","triggerFetchFailure","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","intl","Internationalization","formattedString","formatDate","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","imageData","fetch_1","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","imageAttributes","htmlAttributes","itemCreated","onItemCreated","renderList","sortComparer","DataUtil","sort","comparer","CLS.DISPLAY_NONE","enableVirtualization","virtualizationModule","setUIVirtualization","listElements","ListBase","createListFromJson","itemList","imageEventArgsMap","loadImages","preventImgDrag","createDragObj","emptyList","CLS.LIST_PARENT","isPasteOperation","selectItems","uploadOperation","CLS.ACTIVE","maxHeight","getItemCount","addEventListener","wireEvents","setUlElementHeight","wireScrollEvent","isRendered","hideSpinner","checkItem","_this","imgElement","imageDetails","imageKey","imageUrlCache","has","blob","set","response","x","z","ondragstart","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","uniqueKey","icon","selected","showThumbnail","data-image-key","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","isMac","metaKey","isMacRightClick","cList","isSelectAllCalled","CLS.CHECK","triggerSelection","CLS.FRAME","startIndex","endIndex","addActive","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","folder","fItem","getFocusedItem","firstItem","scrollTo","scrollHeight","navigateItem","scrollTop","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","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","Map","end","home","tab","moveDown","moveLeft","moveRight","moveUp","ctrlEnd","ctrlHome","ctrlDown","ctrlLeft","ctrlRight","ctrlUp","shiftEnd","shiftHome","shiftDown","shiftLeft","shiftRight","shiftUp","csEnd","csHome","csDown","csLeft","csRight","csUp","space","ctrlSpace","shiftSpace","csSpace","ctrlA","enter","altEnter","esc","del","ctrlX","ctrlC","ctrlV","f2","shiftdel","back","ctrlD","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","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","navUid","getRowObjectFromUID","selectRows","setFileItem","setFolderItem","disabledItems","itemsToRemove","pasteIndex","isSubMenu","pasteEle","getMenuItemData","menuModule","currentItems","menuOpenArgs","enableItems","CLS.GRID_ID","CLS.ICON_VIEW","getItemIndex","itemId","disableItem","enable","isUniqueId","validItem","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","chunkSize","uploadSettings","retryCount","uploading","onUploading","chunkUploading","onChunkUploading","removing","onRemoving","canceling","onCancel","clearing","onClearing","onSelected","success","onUploadSuccess","failure","onUploadFailure","autoUpload","minFileSize","maxFileSize","allowedExtensions","directoryUpload","fileListRendering","onFileListRender","updateUploader","isOpened","clearAll","customFormData","filename","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","uploadingCount","uploadedCount","autoClose","onChunkUploadComplete","statusText","onInitialEnd","removeEventListeners","wireSelectOnDragEvent","isBind","viewElem","onDragStart","enableRangeSelection","onScrollHandler","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","enableMenuItems","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","parentID","expanded","hasChildren","tooltip","nodeSelecting","onNodeSelecting","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","allowEditing","nodeEditing","onNodeEditing","drawNode","onDrowNode","dataBound","addDragDrop","getDragPath","getDropPath","nodeData","addChild","prevent","directories","targetDirectory","_fm_icon","childElements","addNodes","selecEventArgs","isRightClick","isSameNodeClicked","isPathDragged","isRenameParent","restrictSelecting","renameParent","isNodeClickCalled","expandNodeTarget","onPathDrag","selectResultNode","isDrag","isNodeExpandCalled","events.nodeExpand","onNodeExpanded","innerHtml","currFiles","sNode","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","enablePersistence","gridPersistenceValue","localStorage","getItem","model","setItem","checkNameWidth","getColumns","direction","Grid","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","enableVirtualMaskRow","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","getGridHeight","beforeCopy","load","focusModule","isReact","reactTemplateRender","isLoaded","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","getDataRows","isSelectionUpdate","currentSelectedItem","currentViewData","getRowHeight","getHeaderContent","paddingLeft","borderRightWidth","getContent","overflowY","checkEmptyDiv","gridRecords","getCurrentViewRecords","sRecords","Str2","selectedRowIndex","rData","onSortColumn","sortModule","freezeRefresh","interaction","onDetailsResize","pathField","hideAtMedia","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","filterPathInSettings","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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"}
|