ui.file_manager.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718
  1. /**
  2. * DevExtreme (ui/file_manager/ui.file_manager.js)
  3. * Version: 19.1.16
  4. * Build date: Tue Oct 18 2022
  5. *
  6. * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
  7. * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
  8. */
  9. "use strict";
  10. function _typeof(obj) {
  11. "@babel/helpers - typeof";
  12. return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
  13. return typeof obj
  14. } : function(obj) {
  15. return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj
  16. }, _typeof(obj)
  17. }
  18. var _renderer = require("../../core/renderer");
  19. var _renderer2 = _interopRequireDefault(_renderer);
  20. var _events_engine = require("../../events/core/events_engine");
  21. var _events_engine2 = _interopRequireDefault(_events_engine);
  22. var _extend = require("../../core/utils/extend");
  23. var _type = require("../../core/utils/type");
  24. var _type2 = _interopRequireDefault(_type);
  25. var _deferred = require("../../core/utils/deferred");
  26. var _component_registrator = require("../../core/component_registrator");
  27. var _component_registrator2 = _interopRequireDefault(_component_registrator);
  28. var _ui = require("../widget/ui.widget");
  29. var _ui2 = _interopRequireDefault(_ui);
  30. var _notify = require("../notify");
  31. var _notify2 = _interopRequireDefault(_notify);
  32. var _uiFile_manager = require("./ui.file_manager.command_manager");
  33. var _uiFile_manager2 = require("./ui.file_manager.context_menu");
  34. var _uiFile_manager3 = _interopRequireDefault(_uiFile_manager2);
  35. var _uiFile_manager4 = require("./ui.file_manager.files_tree_view");
  36. var _uiFile_manager5 = _interopRequireDefault(_uiFile_manager4);
  37. var _uiFile_managerItem_list = require("./ui.file_manager.item_list.details");
  38. var _uiFile_managerItem_list2 = _interopRequireDefault(_uiFile_managerItem_list);
  39. var _uiFile_managerItem_list3 = require("./ui.file_manager.item_list.thumbnails");
  40. var _uiFile_managerItem_list4 = _interopRequireDefault(_uiFile_managerItem_list3);
  41. var _uiFile_manager6 = require("./ui.file_manager.toolbar");
  42. var _uiFile_manager7 = _interopRequireDefault(_uiFile_manager6);
  43. var _uiFile_manager8 = require("./ui.file_manager.editing");
  44. var _uiFile_manager9 = _interopRequireDefault(_uiFile_manager8);
  45. var _uiFile_manager10 = require("./ui.file_manager.breadcrumbs");
  46. var _uiFile_manager11 = _interopRequireDefault(_uiFile_manager10);
  47. var _uiFile_manager12 = require("./ui.file_manager.adaptivity");
  48. var _uiFile_manager13 = _interopRequireDefault(_uiFile_manager12);
  49. var _uiFile_manager14 = require("./ui.file_manager.utils");
  50. var _file_provider = require("./file_provider/file_provider");
  51. var _array = require("./file_provider/array");
  52. var _array2 = _interopRequireDefault(_array);
  53. var _ajax = require("./file_provider/ajax");
  54. var _ajax2 = _interopRequireDefault(_ajax);
  55. var _onedrive = require("./file_provider/onedrive");
  56. var _onedrive2 = _interopRequireDefault(_onedrive);
  57. var _webapi = require("./file_provider/webapi");
  58. var _webapi2 = _interopRequireDefault(_webapi);
  59. function _interopRequireDefault(obj) {
  60. return obj && obj.__esModule ? obj : {
  61. "default": obj
  62. }
  63. }
  64. function _classCallCheck(instance, Constructor) {
  65. if (!(instance instanceof Constructor)) {
  66. throw new TypeError("Cannot call a class as a function")
  67. }
  68. }
  69. function _defineProperties(target, props) {
  70. for (var i = 0; i < props.length; i++) {
  71. var descriptor = props[i];
  72. descriptor.enumerable = descriptor.enumerable || false;
  73. descriptor.configurable = true;
  74. if ("value" in descriptor) {
  75. descriptor.writable = true
  76. }
  77. Object.defineProperty(target, descriptor.key, descriptor)
  78. }
  79. }
  80. function _createClass(Constructor, protoProps, staticProps) {
  81. if (protoProps) {
  82. _defineProperties(Constructor.prototype, protoProps)
  83. }
  84. if (staticProps) {
  85. _defineProperties(Constructor, staticProps)
  86. }
  87. Object.defineProperty(Constructor, "prototype", {
  88. writable: false
  89. });
  90. return Constructor
  91. }
  92. function _get() {
  93. if ("undefined" !== typeof Reflect && Reflect.get) {
  94. _get = Reflect.get.bind()
  95. } else {
  96. _get = function(target, property, receiver) {
  97. var base = _superPropBase(target, property);
  98. if (!base) {
  99. return
  100. }
  101. var desc = Object.getOwnPropertyDescriptor(base, property);
  102. if (desc.get) {
  103. return desc.get.call(arguments.length < 3 ? target : receiver)
  104. }
  105. return desc.value
  106. }
  107. }
  108. return _get.apply(this, arguments)
  109. }
  110. function _superPropBase(object, property) {
  111. while (!Object.prototype.hasOwnProperty.call(object, property)) {
  112. object = _getPrototypeOf(object);
  113. if (null === object) {
  114. break
  115. }
  116. }
  117. return object
  118. }
  119. function _inherits(subClass, superClass) {
  120. if ("function" !== typeof superClass && null !== superClass) {
  121. throw new TypeError("Super expression must either be null or a function")
  122. }
  123. subClass.prototype = Object.create(superClass && superClass.prototype, {
  124. constructor: {
  125. value: subClass,
  126. writable: true,
  127. configurable: true
  128. }
  129. });
  130. Object.defineProperty(subClass, "prototype", {
  131. writable: false
  132. });
  133. if (superClass) {
  134. _setPrototypeOf(subClass, superClass)
  135. }
  136. }
  137. function _setPrototypeOf(o, p) {
  138. _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
  139. o.__proto__ = p;
  140. return o
  141. };
  142. return _setPrototypeOf(o, p)
  143. }
  144. function _createSuper(Derived) {
  145. var hasNativeReflectConstruct = _isNativeReflectConstruct();
  146. return function() {
  147. var result, Super = _getPrototypeOf(Derived);
  148. if (hasNativeReflectConstruct) {
  149. var NewTarget = _getPrototypeOf(this).constructor;
  150. result = Reflect.construct(Super, arguments, NewTarget)
  151. } else {
  152. result = Super.apply(this, arguments)
  153. }
  154. return _possibleConstructorReturn(this, result)
  155. }
  156. }
  157. function _possibleConstructorReturn(self, call) {
  158. if (call && ("object" === _typeof(call) || "function" === typeof call)) {
  159. return call
  160. } else {
  161. if (void 0 !== call) {
  162. throw new TypeError("Derived constructors may only return object or undefined")
  163. }
  164. }
  165. return _assertThisInitialized(self)
  166. }
  167. function _assertThisInitialized(self) {
  168. if (void 0 === self) {
  169. throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
  170. }
  171. return self
  172. }
  173. function _isNativeReflectConstruct() {
  174. if ("undefined" === typeof Reflect || !Reflect.construct) {
  175. return false
  176. }
  177. if (Reflect.construct.sham) {
  178. return false
  179. }
  180. if ("function" === typeof Proxy) {
  181. return true
  182. }
  183. try {
  184. Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
  185. return true
  186. } catch (e) {
  187. return false
  188. }
  189. }
  190. function _getPrototypeOf(o) {
  191. _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(o) {
  192. return o.__proto__ || Object.getPrototypeOf(o)
  193. };
  194. return _getPrototypeOf(o)
  195. }
  196. var FILE_MANAGER_CLASS = "dx-filemanager";
  197. var FILE_MANAGER_CONTAINER_CLASS = FILE_MANAGER_CLASS + "-container";
  198. var FILE_MANAGER_DIRS_PANEL_CLASS = FILE_MANAGER_CLASS + "-dirs-panel";
  199. var FILE_MANAGER_INACTIVE_AREA_CLASS = FILE_MANAGER_CLASS + "-inactive-area";
  200. var FILE_MANAGER_EDITING_CONTAINER_CLASS = FILE_MANAGER_CLASS + "-editing-container";
  201. var FILE_MANAGER_ITEMS_PANEL_CLASS = FILE_MANAGER_CLASS + "-items-panel";
  202. var FILE_MANAGER_ITEM_CUSTOM_THUMBNAIL_CLASS = FILE_MANAGER_CLASS + "-item-custom-thumbnail";
  203. var FileManager = function(_Widget) {
  204. _inherits(FileManager, _Widget);
  205. var _super = _createSuper(FileManager);
  206. function FileManager() {
  207. _classCallCheck(this, FileManager);
  208. return _super.apply(this, arguments)
  209. }
  210. _createClass(FileManager, [{
  211. key: "_initTemplates",
  212. value: function() {}
  213. }, {
  214. key: "_initMarkup",
  215. value: function() {
  216. _get(_getPrototypeOf(FileManager.prototype), "_initMarkup", this).call(this);
  217. this._onSelectedFileOpenedAction = this._createActionByOption("onSelectedFileOpened");
  218. this._provider = this._getFileProvider();
  219. this._currentFolder = null;
  220. this._commandManager = new _uiFile_manager.FileManagerCommandManager(this.option("permissions"));
  221. this.$element().addClass(FILE_MANAGER_CLASS);
  222. var $toolbar = (0, _renderer2.default)("<div>").appendTo(this.$element());
  223. this._toolbar = this._createComponent($toolbar, _uiFile_manager7.default, {
  224. commandManager: this._commandManager,
  225. itemViewMode: this.option("itemView").mode
  226. });
  227. this._createAdaptivityControl();
  228. this._createEditing();
  229. this._initCommandManager();
  230. this._setItemsViewAreaActive(false)
  231. }
  232. }, {
  233. key: "_createAdaptivityControl",
  234. value: function() {
  235. var _this = this;
  236. var $container = (0, _renderer2.default)("<div>").addClass(FILE_MANAGER_CONTAINER_CLASS).appendTo(this.$element());
  237. this._adaptivityControl = this._createComponent($container, _uiFile_manager13.default, {
  238. drawerTemplate: function(container) {
  239. return _this._createFilesTreeView(container)
  240. },
  241. contentTemplate: function(container) {
  242. return _this._createItemsPanel(container)
  243. },
  244. onAdaptiveStateChanged: function(e) {
  245. return _this._onAdaptiveStateChanged(e)
  246. }
  247. })
  248. }
  249. }, {
  250. key: "_createEditing",
  251. value: function() {
  252. var _this2 = this;
  253. var $editingContainer = (0, _renderer2.default)("<div>").addClass(FILE_MANAGER_EDITING_CONTAINER_CLASS).appendTo(this.$element());
  254. this._editing = this._createComponent($editingContainer, _uiFile_manager9.default, {
  255. model: {
  256. provider: this._provider,
  257. getFolders: this._getFilesTreeViewItems.bind(this),
  258. getCurrentFolder: this.getCurrentFolder.bind(this),
  259. getMultipleSelectedItems: this._getMultipleSelectedItems.bind(this)
  260. },
  261. onSuccess: function(_ref) {
  262. var message = _ref.message,
  263. updatedOnlyFiles = _ref.updatedOnlyFiles;
  264. _this2._showSuccess(message);
  265. _this2._refreshData(updatedOnlyFiles)
  266. },
  267. onError: function(_ref2) {
  268. var message = _ref2.message;
  269. return _this2._showError(message)
  270. },
  271. onCreating: function() {
  272. return _this2._setItemsViewAreaActive(false)
  273. }
  274. })
  275. }
  276. }, {
  277. key: "_createItemsPanel",
  278. value: function($container) {
  279. this._$itemsPanel = (0, _renderer2.default)("<div>").addClass(FILE_MANAGER_ITEMS_PANEL_CLASS).appendTo($container);
  280. this._createBreadcrumbs(this._$itemsPanel);
  281. this._createItemView(this._$itemsPanel)
  282. }
  283. }, {
  284. key: "_createFilesTreeView",
  285. value: function(container) {
  286. var _this3 = this;
  287. var $filesTreeView = (0, _renderer2.default)("<div>").addClass(FILE_MANAGER_DIRS_PANEL_CLASS).appendTo(container);
  288. this._filesTreeView = this._createComponent($filesTreeView, _uiFile_manager5.default, {
  289. contextMenu: this._createContextMenu(),
  290. getItems: this._getFilesTreeViewItems.bind(this),
  291. onCurrentFolderChanged: this._onFilesTreeViewCurrentFolderChanged.bind(this),
  292. onClick: function() {
  293. return _this3._setItemsViewAreaActive(false)
  294. }
  295. })
  296. }
  297. }, {
  298. key: "_createItemView",
  299. value: function($container, viewMode) {
  300. var _this4 = this;
  301. var itemViewOptions = this.option("itemView");
  302. var options = {
  303. selectionMode: this.option("selectionMode"),
  304. contextMenu: this._createContextMenu(),
  305. getItems: this._getItemViewItems.bind(this),
  306. onError: function(_ref3) {
  307. var error = _ref3.error;
  308. return _this4._showError(error)
  309. },
  310. onSelectionChanged: this._onItemViewSelectionChanged.bind(this),
  311. onSelectedItemOpened: this._onSelectedItemOpened.bind(this),
  312. onSelectedFileOpened: this._createActionByOption("onSelectedFileOpened"),
  313. getItemThumbnail: this._getItemThumbnailInfo.bind(this),
  314. customizeDetailColumns: this.option("customizeDetailColumns")
  315. };
  316. var $itemView = (0, _renderer2.default)("<div>").appendTo($container);
  317. viewMode = viewMode || itemViewOptions.mode;
  318. var widgetClass = "thumbnails" === viewMode ? _uiFile_managerItem_list4.default : _uiFile_managerItem_list2.default;
  319. this._itemView = this._createComponent($itemView, widgetClass, options);
  320. _events_engine2.default.on($itemView, "click", this._onItemViewClick.bind(this))
  321. }
  322. }, {
  323. key: "_createBreadcrumbs",
  324. value: function($container) {
  325. var _this5 = this;
  326. var $breadcrumbs = (0, _renderer2.default)("<div>").appendTo($container);
  327. this._breadcrumbs = this._createComponent($breadcrumbs, _uiFile_manager11.default, {
  328. path: "",
  329. onPathChanged: function(e) {
  330. return _this5.setCurrentFolderPath(e.newPath)
  331. },
  332. onOutsideClick: function() {
  333. return _this5._clearSelection()
  334. }
  335. })
  336. }
  337. }, {
  338. key: "_createContextMenu",
  339. value: function() {
  340. var $contextMenu = (0, _renderer2.default)("<div>").appendTo(this.$element());
  341. return this._createComponent($contextMenu, _uiFile_manager3.default, {
  342. commandManager: this._commandManager
  343. })
  344. }
  345. }, {
  346. key: "_initCommandManager",
  347. value: function() {
  348. var _this6 = this;
  349. var actions = (0, _extend.extend)(this._editing.getCommandActions(), {
  350. refresh: function() {
  351. return _this6._refreshData()
  352. },
  353. thumbnails: function() {
  354. return _this6._switchView("thumbnails")
  355. },
  356. details: function() {
  357. return _this6._switchView("details")
  358. },
  359. clear: function() {
  360. return _this6._clearSelection()
  361. },
  362. showDirsPanel: function() {
  363. return _this6._adaptivityControl.toggleDrawer()
  364. }
  365. });
  366. this._commandManager.registerActions(actions)
  367. }
  368. }, {
  369. key: "_onFilesTreeViewCurrentFolderChanged",
  370. value: function(e) {
  371. this.setCurrentFolder(this._filesTreeView.getCurrentFolder())
  372. }
  373. }, {
  374. key: "_onItemViewSelectionChanged",
  375. value: function() {
  376. this._updateToolbar()
  377. }
  378. }, {
  379. key: "_onAdaptiveStateChanged",
  380. value: function(_ref4) {
  381. var enabled = _ref4.enabled;
  382. this._commandManager.setCommandEnabled("showDirsPanel", enabled);
  383. this._updateToolbar()
  384. }
  385. }, {
  386. key: "_updateToolbar",
  387. value: function() {
  388. var items = this.getSelectedItems();
  389. this._toolbar.update(items)
  390. }
  391. }, {
  392. key: "_setItemsViewAreaActive",
  393. value: function(active) {
  394. if (this._itemsViewAreaActive === active) {
  395. return
  396. }
  397. this._itemsViewAreaActive = active;
  398. var $activeArea = null;
  399. var $inactiveArea = null;
  400. if (active) {
  401. $activeArea = this._itemView.$element();
  402. $inactiveArea = this._filesTreeView.$element()
  403. } else {
  404. $activeArea = this._filesTreeView.$element();
  405. $inactiveArea = this._itemView.$element()
  406. }
  407. $activeArea.removeClass(FILE_MANAGER_INACTIVE_AREA_CLASS);
  408. $inactiveArea.addClass(FILE_MANAGER_INACTIVE_AREA_CLASS);
  409. if (!active) {
  410. this._clearSelection()
  411. }
  412. }
  413. }, {
  414. key: "_tryOpen",
  415. value: function(item) {
  416. if (!item) {
  417. var items = this.getSelectedItems();
  418. if (items.length > 0) {
  419. item = items[0]
  420. }
  421. }
  422. if (!item || !item.isDirectory) {
  423. return
  424. }
  425. var folder = item.createClone();
  426. if (item.isParentFolder) {
  427. folder.name = (0, _uiFile_manager14.getName)(item.relativeName);
  428. folder.relativeName = item.relativeName
  429. }
  430. this.setCurrentFolder(folder)
  431. }
  432. }, {
  433. key: "_switchView",
  434. value: function(viewMode) {
  435. this._disposeWidget(this._itemView.option("contextMenu"));
  436. this._disposeWidget(this._itemView);
  437. this._createItemView(this._$itemsPanel, viewMode)
  438. }
  439. }, {
  440. key: "_disposeWidget",
  441. value: function(widget) {
  442. widget.dispose();
  443. widget.$element().remove()
  444. }
  445. }, {
  446. key: "_clearSelection",
  447. value: function() {
  448. this._itemView.clearSelection()
  449. }
  450. }, {
  451. key: "_getMultipleSelectedItems",
  452. value: function() {
  453. return this._itemsViewAreaActive ? this.getSelectedItems() : [this.getCurrentFolder()]
  454. }
  455. }, {
  456. key: "_showSuccess",
  457. value: function(message) {
  458. this._showNotification(message, true)
  459. }
  460. }, {
  461. key: "_showError",
  462. value: function(message) {
  463. this._showNotification(message, false)
  464. }
  465. }, {
  466. key: "_showNotification",
  467. value: function(message, isSuccess) {
  468. (0, _notify2.default)({
  469. message: message,
  470. width: 450
  471. }, isSuccess ? "success" : "error", 5e3)
  472. }
  473. }, {
  474. key: "_loadItemViewData",
  475. value: function() {
  476. this._itemView.refreshData()
  477. }
  478. }, {
  479. key: "_refreshData",
  480. value: function(onlyItems) {
  481. if (!onlyItems) {
  482. this._filesTreeView.refreshData()
  483. }
  484. this._loadItemViewData()
  485. }
  486. }, {
  487. key: "_getFilesTreeViewItems",
  488. value: function(parent) {
  489. var path = parent ? parent.relativeName : "";
  490. return this._provider.getFolders(path)
  491. }
  492. }, {
  493. key: "_getItemViewItems",
  494. value: function() {
  495. var path = this.getCurrentFolderPath();
  496. if (null === path) {
  497. return (new _deferred.Deferred).promise()
  498. }
  499. var options = this.option("itemView");
  500. var itemType = options.showFolders ? "" : "file";
  501. var result = this._provider.getItems(path, itemType);
  502. if (options.showParentFolder && path) {
  503. var parentPath = (0, _uiFile_manager14.getParentPath)(path);
  504. var parentFolder = this._createFolderItemByPath(parentPath);
  505. parentFolder.isParentFolder = true;
  506. parentFolder.name = "..";
  507. result = (0, _deferred.when)(result).done(function(items) {
  508. return items.unshift(parentFolder)
  509. })
  510. }
  511. return result
  512. }
  513. }, {
  514. key: "_onItemViewClick",
  515. value: function() {
  516. this._setItemsViewAreaActive(true)
  517. }
  518. }, {
  519. key: "_getFileProvider",
  520. value: function() {
  521. var fileProvider = this.option("fileProvider");
  522. if (!fileProvider) {
  523. fileProvider = []
  524. }
  525. if (Array.isArray(fileProvider)) {
  526. return new _array2.default({
  527. data: fileProvider
  528. })
  529. }
  530. if ("string" === typeof fileProvider) {
  531. return new _ajax2.default({
  532. url: fileProvider
  533. })
  534. }
  535. if (fileProvider instanceof _file_provider.FileProvider) {
  536. return fileProvider
  537. }
  538. if (fileProvider.type) {
  539. switch (fileProvider.type) {
  540. case "webapi":
  541. return new _webapi2.default(fileProvider);
  542. case "onedrive":
  543. return new _onedrive2.default(fileProvider)
  544. }
  545. }
  546. return new _array2.default(fileProvider)
  547. }
  548. }, {
  549. key: "_getItemThumbnailInfo",
  550. value: function(item) {
  551. var func = this.option("customizeThumbnail");
  552. var thumbnail = _type2.default.isFunction(func) ? func(item) : item.thumbnail;
  553. if (thumbnail) {
  554. return {
  555. thumbnail: thumbnail,
  556. cssClass: FILE_MANAGER_ITEM_CUSTOM_THUMBNAIL_CLASS
  557. }
  558. }
  559. return {
  560. thumbnail: this._getPredefinedThumbnail(item)
  561. }
  562. }
  563. }, {
  564. key: "_getPredefinedThumbnail",
  565. value: function(item) {
  566. if (item.isDirectory) {
  567. return "folder"
  568. }
  569. var extension = item.getExtension();
  570. switch (extension) {
  571. case ".txt":
  572. return "doc";
  573. case ".rtf":
  574. case ".doc":
  575. case ".docx":
  576. case ".odt":
  577. return "doc";
  578. case ".xls":
  579. case ".xlsx":
  580. case ".ods":
  581. return "exportxlsx";
  582. case ".ppt":
  583. case ".pptx":
  584. case ".odp":
  585. return "doc";
  586. case ".pdf":
  587. return "exportpdf";
  588. case ".png":
  589. case ".gif":
  590. case ".jpg":
  591. case ".jpeg":
  592. case ".ico":
  593. case ".bmp":
  594. return "image";
  595. default:
  596. return "doc"
  597. }
  598. }
  599. }, {
  600. key: "_createFolderItemByPath",
  601. value: function(path) {
  602. var parentPath = (0, _uiFile_manager14.getParentPath)(path);
  603. var name = (0, _uiFile_manager14.getName)(path);
  604. return new _file_provider.FileManagerItem(parentPath, name, true)
  605. }
  606. }, {
  607. key: "_getDefaultOptions",
  608. value: function() {
  609. return (0, _extend.extend)(_get(_getPrototypeOf(FileManager.prototype), "_getDefaultOptions", this).call(this), {
  610. fileProvider: null,
  611. selectionMode: "multiple",
  612. itemView: {
  613. mode: "details",
  614. showFolders: true,
  615. showParentFolder: true
  616. },
  617. customizeThumbnail: null,
  618. customizeDetailColumns: null,
  619. onSelectedFileOpened: null,
  620. permissions: {
  621. create: false,
  622. copy: false,
  623. move: false,
  624. remove: false,
  625. rename: false,
  626. upload: false
  627. }
  628. })
  629. }
  630. }, {
  631. key: "_optionChanged",
  632. value: function(args) {
  633. var name = args.name;
  634. switch (name) {
  635. case "fileProvider":
  636. case "selectionMode":
  637. case "itemView":
  638. case "customizeThumbnail":
  639. case "customizeDetailColumns":
  640. case "permissions":
  641. this.repaint();
  642. break;
  643. case "onSelectedFileOpened":
  644. this._onSelectedFileOpenedAction = this._createActionByOption("onSelectedFileOpened");
  645. break;
  646. default:
  647. _get(_getPrototypeOf(FileManager.prototype), "_optionChanged", this).call(this, args)
  648. }
  649. }
  650. }, {
  651. key: "executeCommand",
  652. value: function(commandName) {
  653. this._commandManager.executeCommand(commandName)
  654. }
  655. }, {
  656. key: "setCurrentFolderPath",
  657. value: function(path) {
  658. var folder = this._createFolderItemByPath(path);
  659. this.setCurrentFolder(folder)
  660. }
  661. }, {
  662. key: "getCurrentFolderPath",
  663. value: function() {
  664. return this.getCurrentFolder() ? this.getCurrentFolder().relativeName : null
  665. }
  666. }, {
  667. key: "setCurrentFolder",
  668. value: function(folder) {
  669. var newPath = folder ? folder.relativeName : null;
  670. if (newPath === this.getCurrentFolderPath()) {
  671. return
  672. }
  673. this._currentFolder = folder;
  674. this._filesTreeView.setCurrentFolderPath(newPath);
  675. this._loadItemViewData();
  676. this._breadcrumbs.option("path", newPath || "")
  677. }
  678. }, {
  679. key: "getCurrentFolder",
  680. value: function() {
  681. return this._currentFolder
  682. }
  683. }, {
  684. key: "getSelectedItems",
  685. value: function() {
  686. return this._itemView.getSelectedItems()
  687. }
  688. }, {
  689. key: "_onSelectedItemOpened",
  690. value: function(_ref5) {
  691. var item = _ref5.item;
  692. if (!item.isDirectory) {
  693. this._onSelectedFileOpenedAction({
  694. fileItem: item
  695. })
  696. }
  697. this._tryOpen(item)
  698. }
  699. }]);
  700. return FileManager
  701. }(_ui2.default);
  702. (0, _component_registrator2.default)("dxFileManager", FileManager);
  703. module.exports = FileManager;