@theia/filesystem 1.45.0 → 1.46.0-next.72

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.
Files changed (272) hide show
  1. package/README.md +30 -30
  2. package/lib/browser/breadcrumbs/filepath-breadcrumb.d.ts +15 -15
  3. package/lib/browser/breadcrumbs/filepath-breadcrumb.js +41 -41
  4. package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.d.ts +13 -13
  5. package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.js +81 -81
  6. package/lib/browser/breadcrumbs/filepath-breadcrumbs-contribution.d.ts +27 -27
  7. package/lib/browser/breadcrumbs/filepath-breadcrumbs-contribution.js +126 -126
  8. package/lib/browser/download/file-download-command-contribution.d.ts +18 -18
  9. package/lib/browser/download/file-download-command-contribution.js +83 -83
  10. package/lib/browser/download/file-download-frontend-module.d.ts +3 -3
  11. package/lib/browser/download/file-download-frontend-module.js +25 -25
  12. package/lib/browser/download/file-download-service.d.ts +28 -28
  13. package/lib/browser/download/file-download-service.js +175 -175
  14. package/lib/browser/file-dialog/file-dialog-container.d.ts +5 -5
  15. package/lib/browser/file-dialog/file-dialog-container.js +60 -60
  16. package/lib/browser/file-dialog/file-dialog-hidden-files-renderer.d.ts +15 -15
  17. package/lib/browser/file-dialog/file-dialog-hidden-files-renderer.js +67 -67
  18. package/lib/browser/file-dialog/file-dialog-model.d.ts +25 -25
  19. package/lib/browser/file-dialog/file-dialog-model.js +108 -108
  20. package/lib/browser/file-dialog/file-dialog-module.d.ts +3 -3
  21. package/lib/browser/file-dialog/file-dialog-module.js +45 -45
  22. package/lib/browser/file-dialog/file-dialog-service.d.ts +32 -32
  23. package/lib/browser/file-dialog/file-dialog-service.js +109 -109
  24. package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.d.ts +39 -39
  25. package/lib/browser/file-dialog/file-dialog-tree-filters-renderer.js +92 -92
  26. package/lib/browser/file-dialog/file-dialog-tree.d.ts +26 -26
  27. package/lib/browser/file-dialog/file-dialog-tree.js +88 -88
  28. package/lib/browser/file-dialog/file-dialog-widget.d.ts +15 -15
  29. package/lib/browser/file-dialog/file-dialog-widget.js +86 -86
  30. package/lib/browser/file-dialog/file-dialog.d.ts +129 -129
  31. package/lib/browser/file-dialog/file-dialog.js +362 -362
  32. package/lib/browser/file-dialog/index.d.ts +4 -4
  33. package/lib/browser/file-dialog/index.js +31 -31
  34. package/lib/browser/file-resource.d.ts +66 -63
  35. package/lib/browser/file-resource.d.ts.map +1 -1
  36. package/lib/browser/file-resource.js +362 -352
  37. package/lib/browser/file-resource.js.map +1 -1
  38. package/lib/browser/file-selection.d.ts +14 -14
  39. package/lib/browser/file-selection.js +36 -36
  40. package/lib/browser/file-service.d.ts +413 -412
  41. package/lib/browser/file-service.d.ts.map +1 -1
  42. package/lib/browser/file-service.js +1362 -1360
  43. package/lib/browser/file-service.js.map +1 -1
  44. package/lib/browser/file-tree/file-tree-container.d.ts +3 -3
  45. package/lib/browser/file-tree/file-tree-container.js +35 -35
  46. package/lib/browser/file-tree/file-tree-decorator-adapter.d.ts +30 -30
  47. package/lib/browser/file-tree/file-tree-decorator-adapter.js +177 -177
  48. package/lib/browser/file-tree/file-tree-label-provider.d.ts +12 -12
  49. package/lib/browser/file-tree/file-tree-label-provider.js +62 -62
  50. package/lib/browser/file-tree/file-tree-model.d.ts +37 -37
  51. package/lib/browser/file-tree/file-tree-model.js +225 -225
  52. package/lib/browser/file-tree/file-tree-widget.d.ts +44 -44
  53. package/lib/browser/file-tree/file-tree-widget.js +328 -328
  54. package/lib/browser/file-tree/file-tree.d.ts +46 -46
  55. package/lib/browser/file-tree/file-tree.js +184 -184
  56. package/lib/browser/file-tree/index.d.ts +6 -6
  57. package/lib/browser/file-tree/index.js +33 -33
  58. package/lib/browser/file-upload-service.d.ts +109 -111
  59. package/lib/browser/file-upload-service.d.ts.map +1 -1
  60. package/lib/browser/file-upload-service.js +442 -442
  61. package/lib/browser/file-upload-service.js.map +1 -1
  62. package/lib/browser/filesystem-frontend-contribution.d.ts +63 -63
  63. package/lib/browser/filesystem-frontend-contribution.js +327 -327
  64. package/lib/browser/filesystem-frontend-module.d.ts +5 -5
  65. package/lib/browser/filesystem-frontend-module.js +64 -64
  66. package/lib/browser/filesystem-preferences.d.ts +29 -29
  67. package/lib/browser/filesystem-preferences.js +110 -110
  68. package/lib/browser/filesystem-save-resource-service.d.ts +29 -29
  69. package/lib/browser/filesystem-save-resource-service.d.ts.map +1 -1
  70. package/lib/browser/filesystem-save-resource-service.js +143 -142
  71. package/lib/browser/filesystem-save-resource-service.js.map +1 -1
  72. package/lib/browser/filesystem-watcher-error-handler.d.ts +10 -10
  73. package/lib/browser/filesystem-watcher-error-handler.js +69 -69
  74. package/lib/browser/index.d.ts +5 -5
  75. package/lib/browser/index.js +32 -32
  76. package/lib/browser/location/index.d.ts +2 -2
  77. package/lib/browser/location/index.js +29 -29
  78. package/lib/browser/location/location-renderer.d.ts +100 -100
  79. package/lib/browser/location/location-renderer.js +354 -354
  80. package/lib/browser/location/location-service.d.ts +5 -5
  81. package/lib/browser/location/location-service.js +17 -17
  82. package/lib/browser/remote-file-service-contribution.d.ts +6 -6
  83. package/lib/browser/remote-file-service-contribution.js +47 -47
  84. package/lib/browser-only/browser-only-filesystem-frontend-module.d.ts +4 -0
  85. package/lib/browser-only/browser-only-filesystem-frontend-module.d.ts.map +1 -0
  86. package/lib/browser-only/browser-only-filesystem-frontend-module.js +41 -0
  87. package/lib/browser-only/browser-only-filesystem-frontend-module.js.map +1 -0
  88. package/lib/browser-only/browser-only-filesystem-provider-server.d.ts +12 -0
  89. package/lib/browser-only/browser-only-filesystem-provider-server.d.ts.map +1 -0
  90. package/lib/browser-only/browser-only-filesystem-provider-server.js +45 -0
  91. package/lib/browser-only/browser-only-filesystem-provider-server.js.map +1 -0
  92. package/lib/browser-only/browserfs-filesystem-initialization.d.ts +13 -0
  93. package/lib/browser-only/browserfs-filesystem-initialization.d.ts.map +1 -0
  94. package/lib/browser-only/browserfs-filesystem-initialization.js +60 -0
  95. package/lib/browser-only/browserfs-filesystem-initialization.js.map +1 -0
  96. package/lib/browser-only/browserfs-filesystem-provider.d.ts +46 -0
  97. package/lib/browser-only/browserfs-filesystem-provider.d.ts.map +1 -0
  98. package/lib/browser-only/browserfs-filesystem-provider.js +451 -0
  99. package/lib/browser-only/browserfs-filesystem-provider.js.map +1 -0
  100. package/lib/common/delegating-file-system-provider.d.ts +76 -76
  101. package/lib/common/delegating-file-system-provider.js +168 -168
  102. package/lib/common/download/file-download-data.d.ts +6 -6
  103. package/lib/common/download/file-download-data.js +26 -26
  104. package/lib/common/file-upload.d.ts +1 -1
  105. package/lib/common/file-upload.js +19 -19
  106. package/lib/common/files.d.ts +651 -651
  107. package/lib/common/files.js +347 -347
  108. package/lib/common/files.spec.d.ts +1 -1
  109. package/lib/common/files.spec.js +51 -51
  110. package/lib/common/filesystem-utils.d.ts +14 -14
  111. package/lib/common/filesystem-utils.js +63 -63
  112. package/lib/common/filesystem-utils.spec.d.ts +1 -1
  113. package/lib/common/filesystem-utils.spec.js +378 -378
  114. package/lib/common/filesystem-watcher-protocol.d.ts +71 -71
  115. package/lib/common/filesystem-watcher-protocol.js +20 -20
  116. package/lib/common/filesystem.d.ts +22 -22
  117. package/lib/common/filesystem.js +42 -42
  118. package/lib/common/index.d.ts +2 -2
  119. package/lib/common/index.js +29 -29
  120. package/lib/common/io.d.ts +19 -19
  121. package/lib/common/io.js +110 -110
  122. package/lib/common/remote-file-system-provider.d.ts +164 -164
  123. package/lib/common/remote-file-system-provider.js +413 -413
  124. package/lib/electron-browser/file-dialog/electron-file-dialog-module.d.ts +3 -3
  125. package/lib/electron-browser/file-dialog/electron-file-dialog-module.js +24 -24
  126. package/lib/electron-browser/file-dialog/electron-file-dialog-service.d.ts +19 -19
  127. package/lib/electron-browser/file-dialog/electron-file-dialog-service.js +156 -156
  128. package/lib/electron-browser/file-dialog/electron-file-dialog-service.js.map +1 -1
  129. package/lib/electron-browser/preload.d.ts +1 -1
  130. package/lib/electron-browser/preload.js +30 -30
  131. package/lib/electron-common/electron-api.d.ts +34 -34
  132. package/lib/electron-common/electron-api.js +20 -20
  133. package/lib/electron-main/electron-api-main.d.ts +5 -5
  134. package/lib/electron-main/electron-api-main.js +78 -78
  135. package/lib/electron-main/electron-main-module.d.ts +3 -3
  136. package/lib/electron-main/electron-main-module.js +24 -24
  137. package/lib/node/disk-file-system-provider.d.ts +72 -72
  138. package/lib/node/disk-file-system-provider.d.ts.map +1 -1
  139. package/lib/node/disk-file-system-provider.js +795 -789
  140. package/lib/node/disk-file-system-provider.js.map +1 -1
  141. package/lib/node/disk-file-system-provider.spec.d.ts +1 -1
  142. package/lib/node/disk-file-system-provider.spec.js +122 -91
  143. package/lib/node/disk-file-system-provider.spec.js.map +1 -1
  144. package/lib/node/download/directory-archiver.d.ts +9 -9
  145. package/lib/node/download/directory-archiver.js +132 -132
  146. package/lib/node/download/directory-archiver.js.map +1 -1
  147. package/lib/node/download/directory-archiver.spec.d.ts +1 -1
  148. package/lib/node/download/directory-archiver.spec.js +97 -97
  149. package/lib/node/download/directory-archiver.spec.js.map +1 -1
  150. package/lib/node/download/file-download-backend-module.d.ts +3 -3
  151. package/lib/node/download/file-download-backend-module.js +32 -32
  152. package/lib/node/download/file-download-cache.d.ts +21 -21
  153. package/lib/node/download/file-download-cache.js +90 -90
  154. package/lib/node/download/file-download-endpoint.d.ts +11 -11
  155. package/lib/node/download/file-download-endpoint.js +75 -75
  156. package/lib/node/download/file-download-endpoint.js.map +1 -1
  157. package/lib/node/download/file-download-handler.d.ts +50 -50
  158. package/lib/node/download/file-download-handler.d.ts.map +1 -1
  159. package/lib/node/download/file-download-handler.js +315 -315
  160. package/lib/node/download/file-download-handler.js.map +1 -1
  161. package/lib/node/download/test/mock-directory-archiver.d.ts +7 -7
  162. package/lib/node/download/test/mock-directory-archiver.js +29 -29
  163. package/lib/node/file-change-collection.d.ts +22 -22
  164. package/lib/node/file-change-collection.js +77 -77
  165. package/lib/node/file-change-collection.spec.d.ts +1 -1
  166. package/lib/node/file-change-collection.spec.js +90 -90
  167. package/lib/node/file-change-collection.spec.js.map +1 -1
  168. package/lib/node/filesystem-backend-module.d.ts +26 -26
  169. package/lib/node/filesystem-backend-module.js +120 -120
  170. package/lib/node/filesystem-watcher-client.d.ts +23 -23
  171. package/lib/node/filesystem-watcher-client.js +83 -83
  172. package/lib/node/filesystem-watcher-dispatcher.d.ts +23 -23
  173. package/lib/node/filesystem-watcher-dispatcher.js +85 -85
  174. package/lib/node/node-file-upload-service.d.ts +16 -16
  175. package/lib/node/node-file-upload-service.js +84 -84
  176. package/lib/node/nsfw-watcher/index.d.ts +3 -3
  177. package/lib/node/nsfw-watcher/index.js +39 -39
  178. package/lib/node/nsfw-watcher/nsfw-filesystem-service.d.ts +191 -191
  179. package/lib/node/nsfw-watcher/nsfw-filesystem-service.js +405 -405
  180. package/lib/node/nsfw-watcher/nsfw-filesystem-service.js.map +1 -1
  181. package/lib/node/nsfw-watcher/nsfw-filesystem-watcher.spec.d.ts +1 -1
  182. package/lib/node/nsfw-watcher/nsfw-filesystem-watcher.spec.js +151 -151
  183. package/lib/node/nsfw-watcher/nsfw-options.d.ts +6 -6
  184. package/lib/node/nsfw-watcher/nsfw-options.js +22 -22
  185. package/package.json +8 -6
  186. package/src/browser/breadcrumbs/filepath-breadcrumb.ts +43 -43
  187. package/src/browser/breadcrumbs/filepath-breadcrumbs-container.ts +65 -65
  188. package/src/browser/breadcrumbs/filepath-breadcrumbs-contribution.ts +129 -129
  189. package/src/browser/download/file-download-command-contribution.ts +83 -83
  190. package/src/browser/download/file-download-frontend-module.ts +25 -25
  191. package/src/browser/download/file-download-service.ts +179 -179
  192. package/src/browser/file-dialog/file-dialog-container.ts +67 -67
  193. package/src/browser/file-dialog/file-dialog-hidden-files-renderer.tsx +59 -59
  194. package/src/browser/file-dialog/file-dialog-model.ts +96 -96
  195. package/src/browser/file-dialog/file-dialog-module.ts +44 -44
  196. package/src/browser/file-dialog/file-dialog-service.ts +99 -99
  197. package/src/browser/file-dialog/file-dialog-tree-filters-renderer.tsx +100 -100
  198. package/src/browser/file-dialog/file-dialog-tree.ts +89 -89
  199. package/src/browser/file-dialog/file-dialog-widget.ts +75 -75
  200. package/src/browser/file-dialog/file-dialog.ts +434 -434
  201. package/src/browser/file-dialog/index.ts +20 -20
  202. package/src/browser/file-resource.ts +373 -361
  203. package/src/browser/file-selection.ts +44 -44
  204. package/src/browser/file-service.ts +1817 -1814
  205. package/src/browser/file-tree/file-tree-container.ts +36 -36
  206. package/src/browser/file-tree/file-tree-decorator-adapter.ts +159 -159
  207. package/src/browser/file-tree/file-tree-label-provider.ts +53 -53
  208. package/src/browser/file-tree/file-tree-model.ts +212 -212
  209. package/src/browser/file-tree/file-tree-widget.tsx +327 -327
  210. package/src/browser/file-tree/file-tree.ts +183 -183
  211. package/src/browser/file-tree/index.ts +22 -22
  212. package/src/browser/file-upload-service.ts +539 -541
  213. package/src/browser/filesystem-frontend-contribution.ts +338 -338
  214. package/src/browser/filesystem-frontend-module.ts +77 -77
  215. package/src/browser/filesystem-preferences.ts +139 -139
  216. package/src/browser/filesystem-save-resource-service.ts +125 -124
  217. package/src/browser/filesystem-watcher-error-handler.ts +60 -60
  218. package/src/browser/index.ts +21 -21
  219. package/src/browser/location/index.ts +18 -18
  220. package/src/browser/location/location-renderer.tsx +404 -404
  221. package/src/browser/location/location-service.ts +22 -22
  222. package/src/browser/remote-file-service-contribution.ts +38 -38
  223. package/src/browser/style/file-dialog.css +208 -208
  224. package/src/browser/style/file-icons.css +64 -64
  225. package/src/browser/style/filepath-breadcrumbs.css +20 -20
  226. package/src/browser/style/index.css +36 -36
  227. package/src/browser-only/browser-only-filesystem-frontend-module.ts +38 -0
  228. package/src/browser-only/browser-only-filesystem-provider-server.ts +32 -0
  229. package/src/browser-only/browserfs-filesystem-initialization.ts +61 -0
  230. package/src/browser-only/browserfs-filesystem-provider.ts +462 -0
  231. package/src/common/delegating-file-system-provider.ts +226 -226
  232. package/src/common/download/README.md +30 -30
  233. package/src/common/download/file-download-data.ts +27 -27
  234. package/src/common/file-upload.ts +17 -17
  235. package/src/common/files.spec.ts +51 -51
  236. package/src/common/files.ts +983 -983
  237. package/src/common/filesystem-utils.spec.ts +411 -411
  238. package/src/common/filesystem-utils.ts +64 -64
  239. package/src/common/filesystem-watcher-protocol.ts +96 -96
  240. package/src/common/filesystem.ts +43 -43
  241. package/src/common/index.ts +18 -18
  242. package/src/common/io.ts +150 -150
  243. package/src/common/remote-file-system-provider.ts +511 -511
  244. package/src/electron-browser/file-dialog/electron-file-dialog-module.ts +24 -24
  245. package/src/electron-browser/file-dialog/electron-file-dialog-service.ts +165 -165
  246. package/src/electron-browser/preload.ts +31 -31
  247. package/src/electron-common/electron-api.ts +55 -55
  248. package/src/electron-main/electron-api-main.ts +78 -78
  249. package/src/electron-main/electron-main-module.ts +23 -23
  250. package/src/node/disk-file-system-provider.spec.ts +142 -109
  251. package/src/node/disk-file-system-provider.ts +915 -910
  252. package/src/node/download/directory-archiver.spec.ts +104 -104
  253. package/src/node/download/directory-archiver.ts +126 -126
  254. package/src/node/download/file-download-backend-module.ts +32 -32
  255. package/src/node/download/file-download-cache.ts +88 -88
  256. package/src/node/download/file-download-endpoint.ts +63 -63
  257. package/src/node/download/file-download-handler.ts +304 -304
  258. package/src/node/download/test/mock-directory-archiver.ts +30 -30
  259. package/src/node/file-change-collection.spec.ts +110 -110
  260. package/src/node/file-change-collection.ts +78 -78
  261. package/src/node/filesystem-backend-module.ts +140 -140
  262. package/src/node/filesystem-watcher-client.ts +72 -72
  263. package/src/node/filesystem-watcher-dispatcher.ts +82 -82
  264. package/src/node/node-file-upload-service.ts +80 -80
  265. package/src/node/nsfw-watcher/index.ts +45 -45
  266. package/src/node/nsfw-watcher/nsfw-filesystem-service.ts +481 -481
  267. package/src/node/nsfw-watcher/nsfw-filesystem-watcher.spec.ts +182 -182
  268. package/src/node/nsfw-watcher/nsfw-options.ts +23 -23
  269. package/src/typings/dom.webkit.d.ts +77 -77
  270. package/src/typings/mv/index.d.ts +21 -21
  271. package/src/typings/nsfw/index.d.ts +18 -18
  272. package/src/typings/trash/index.d.ts +20 -20
@@ -1,363 +1,363 @@
1
- "use strict";
2
- // *****************************************************************************
3
- // Copyright (C) 2017 TypeFox and others.
4
- //
5
- // This program and the accompanying materials are made available under the
6
- // terms of the Eclipse Public License v. 2.0 which is available at
7
- // http://www.eclipse.org/legal/epl-2.0.
8
- //
9
- // This Source Code may also be made available under the following Secondary
10
- // Licenses when the conditions for such availability set forth in the Eclipse
11
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
- // with the GNU Classpath Exception which is available at
13
- // https://www.gnu.org/software/classpath/license.html.
14
- //
15
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
- // *****************************************************************************
17
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
18
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20
- 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;
21
- return c > 3 && r && Object.defineProperty(target, key, r), r;
22
- };
23
- var __metadata = (this && this.__metadata) || function (k, v) {
24
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
25
- };
26
- var __param = (this && this.__param) || function (paramIndex, decorator) {
27
- return function (target, key) { decorator(target, key, paramIndex); }
28
- };
29
- Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.SaveFileDialog = exports.OpenFileDialog = exports.FileDialog = exports.SaveFileDialogProps = exports.OpenFileDialogProps = exports.FileDialogProps = exports.TOOLBAR_ITEM_TRANSFORM_TIMEOUT = exports.CONTROL_PANEL_CLASS = exports.FILENAME_TEXTFIELD_CLASS = exports.FILENAME_LABEL_CLASS = exports.FILENAME_PANEL_CLASS = exports.FILTERS_LIST_PANEL_CLASS = exports.FILTERS_LABEL_CLASS = exports.FILTERS_PANEL_CLASS = exports.NAVIGATION_LOCATION_LIST_PANEL_CLASS = exports.NAVIGATION_UP_CLASS = exports.NAVIGATION_HOME_CLASS = exports.NAVIGATION_FORWARD_CLASS = exports.NAVIGATION_BACK_CLASS = exports.NAVIGATION_PANEL_CLASS = exports.SAVE_DIALOG_CLASS = exports.SaveFileDialogFactory = exports.OpenFileDialogFactory = void 0;
31
- const inversify_1 = require("@theia/core/shared/inversify");
32
- const common_1 = require("@theia/core/lib/common");
33
- const browser_1 = require("@theia/core/lib/browser");
34
- const location_1 = require("../location");
35
- const file_dialog_widget_1 = require("./file-dialog-widget");
36
- const file_dialog_tree_filters_renderer_1 = require("./file-dialog-tree-filters-renderer");
37
- const widgets_1 = require("@theia/core/shared/@phosphor/widgets");
38
- const DOMPurify = require("@theia/core/shared/dompurify");
39
- const file_dialog_hidden_files_renderer_1 = require("./file-dialog-hidden-files-renderer");
40
- exports.OpenFileDialogFactory = Symbol('OpenFileDialogFactory');
41
- exports.SaveFileDialogFactory = Symbol('SaveFileDialogFactory');
42
- exports.SAVE_DIALOG_CLASS = 'theia-SaveFileDialog';
43
- exports.NAVIGATION_PANEL_CLASS = 'theia-NavigationPanel';
44
- exports.NAVIGATION_BACK_CLASS = 'theia-NavigationBack';
45
- exports.NAVIGATION_FORWARD_CLASS = 'theia-NavigationForward';
46
- exports.NAVIGATION_HOME_CLASS = 'theia-NavigationHome';
47
- exports.NAVIGATION_UP_CLASS = 'theia-NavigationUp';
48
- exports.NAVIGATION_LOCATION_LIST_PANEL_CLASS = 'theia-LocationListPanel';
49
- exports.FILTERS_PANEL_CLASS = 'theia-FiltersPanel';
50
- exports.FILTERS_LABEL_CLASS = 'theia-FiltersLabel';
51
- exports.FILTERS_LIST_PANEL_CLASS = 'theia-FiltersListPanel';
52
- exports.FILENAME_PANEL_CLASS = 'theia-FileNamePanel';
53
- exports.FILENAME_LABEL_CLASS = 'theia-FileNameLabel';
54
- exports.FILENAME_TEXTFIELD_CLASS = 'theia-FileNameTextField';
55
- exports.CONTROL_PANEL_CLASS = 'theia-ControlPanel';
56
- exports.TOOLBAR_ITEM_TRANSFORM_TIMEOUT = 100;
57
- class FileDialogProps extends browser_1.DialogProps {
58
- }
59
- exports.FileDialogProps = FileDialogProps;
60
- let OpenFileDialogProps = class OpenFileDialogProps extends FileDialogProps {
61
- };
62
- OpenFileDialogProps = __decorate([
63
- (0, inversify_1.injectable)()
64
- ], OpenFileDialogProps);
65
- exports.OpenFileDialogProps = OpenFileDialogProps;
66
- let SaveFileDialogProps = class SaveFileDialogProps extends FileDialogProps {
67
- };
68
- SaveFileDialogProps = __decorate([
69
- (0, inversify_1.injectable)()
70
- ], SaveFileDialogProps);
71
- exports.SaveFileDialogProps = SaveFileDialogProps;
72
- let FileDialog = class FileDialog extends browser_1.AbstractDialog {
73
- constructor(props) {
74
- super(props);
75
- this.props = props;
76
- }
77
- init() {
78
- this.treePanel = new widgets_1.Panel();
79
- this.treePanel.addWidget(this.widget);
80
- this.toDispose.push(this.treePanel);
81
- this.toDispose.push(this.model.onChanged(() => this.update()));
82
- this.toDispose.push(this.model.onDidOpenFile(() => this.accept()));
83
- this.toDispose.push(this.model.onSelectionChanged(() => this.update()));
84
- const navigationPanel = document.createElement('div');
85
- navigationPanel.classList.add(exports.NAVIGATION_PANEL_CLASS);
86
- this.contentNode.appendChild(navigationPanel);
87
- navigationPanel.appendChild(this.back = (0, browser_1.createIconButton)(...(0, browser_1.codiconArray)('chevron-left', true)));
88
- this.back.classList.add(exports.NAVIGATION_BACK_CLASS);
89
- this.back.title = common_1.nls.localize('theia/filesystem/dialog/navigateBack', 'Navigate Back');
90
- navigationPanel.appendChild(this.forward = (0, browser_1.createIconButton)(...(0, browser_1.codiconArray)('chevron-right', true)));
91
- this.forward.classList.add(exports.NAVIGATION_FORWARD_CLASS);
92
- this.forward.title = common_1.nls.localize('theia/filesystem/dialog/navigateForward', 'Navigate Forward');
93
- navigationPanel.appendChild(this.home = (0, browser_1.createIconButton)(...(0, browser_1.codiconArray)('home', true)));
94
- this.home.classList.add(exports.NAVIGATION_HOME_CLASS);
95
- this.home.title = common_1.nls.localize('theia/filesystem/dialog/initialLocation', 'Go To Initial Location');
96
- navigationPanel.appendChild(this.up = (0, browser_1.createIconButton)(...(0, browser_1.codiconArray)('arrow-up', true)));
97
- this.up.classList.add(exports.NAVIGATION_UP_CLASS);
98
- this.up.title = common_1.nls.localize('theia/filesystem/dialog/navigateUp', 'Navigate Up One Directory');
99
- const locationListRendererHost = document.createElement('div');
100
- this.locationListRenderer = this.locationListFactory({ model: this.model, host: locationListRendererHost });
101
- this.toDispose.push(this.locationListRenderer);
102
- this.locationListRenderer.host.classList.add(exports.NAVIGATION_LOCATION_LIST_PANEL_CLASS);
103
- navigationPanel.appendChild(this.locationListRenderer.host);
104
- this.hiddenFilesToggleRenderer = this.hiddenFilesToggleFactory(this.widget.model.tree);
105
- this.contentNode.appendChild(this.hiddenFilesToggleRenderer.host);
106
- if (this.props.filters) {
107
- this.treeFiltersRenderer = this.treeFiltersFactory({ suppliedFilters: this.props.filters, fileDialogTree: this.widget.model.tree });
108
- const filters = Object.keys(this.props.filters);
109
- if (filters.length) {
110
- this.widget.model.tree.setFilter(this.props.filters[filters[0]]);
111
- }
112
- }
113
- }
114
- get model() {
115
- return this.widget.model;
116
- }
117
- onUpdateRequest(msg) {
118
- super.onUpdateRequest(msg);
119
- (0, browser_1.setEnabled)(this.back, this.model.canNavigateBackward());
120
- (0, browser_1.setEnabled)(this.forward, this.model.canNavigateForward());
121
- (0, browser_1.setEnabled)(this.home, !!this.model.initialLocation
122
- && !!this.model.location
123
- && this.model.initialLocation.toString() !== this.model.location.toString());
124
- (0, browser_1.setEnabled)(this.up, this.model.canNavigateUpward());
125
- this.locationListRenderer.render();
126
- if (this.treeFiltersRenderer) {
127
- this.treeFiltersRenderer.render();
128
- }
129
- this.widget.update();
130
- }
131
- handleEnter(event) {
132
- if (event.target instanceof HTMLTextAreaElement || this.targetIsDirectoryInput(event.target) || this.targetIsInputToggle(event.target)) {
133
- return false;
134
- }
135
- this.accept();
136
- }
137
- handleEscape(event) {
138
- if (event.target instanceof HTMLTextAreaElement || this.targetIsDirectoryInput(event.target)) {
139
- return false;
140
- }
141
- this.close();
142
- }
143
- targetIsDirectoryInput(target) {
144
- return target instanceof HTMLInputElement && target.classList.contains(location_1.LocationListRenderer.Styles.LOCATION_TEXT_INPUT_CLASS);
145
- }
146
- targetIsInputToggle(target) {
147
- return target instanceof HTMLSpanElement && target.classList.contains(location_1.LocationListRenderer.Styles.LOCATION_INPUT_TOGGLE_CLASS);
148
- }
149
- appendFiltersPanel() {
150
- if (this.treeFiltersRenderer) {
151
- const filtersPanel = document.createElement('div');
152
- filtersPanel.classList.add(exports.FILTERS_PANEL_CLASS);
153
- this.contentNode.appendChild(filtersPanel);
154
- const titlePanel = document.createElement('div');
155
- titlePanel.innerHTML = DOMPurify.sanitize(common_1.nls.localize('theia/filesystem/format', 'Format:'));
156
- titlePanel.classList.add(exports.FILTERS_LABEL_CLASS);
157
- filtersPanel.appendChild(titlePanel);
158
- this.treeFiltersRenderer.host.classList.add(exports.FILTERS_LIST_PANEL_CLASS);
159
- filtersPanel.appendChild(this.treeFiltersRenderer.host);
160
- }
161
- }
162
- onAfterAttach(msg) {
163
- browser_1.Widget.attach(this.treePanel, this.contentNode);
164
- this.toDisposeOnDetach.push(common_1.Disposable.create(() => {
165
- browser_1.Widget.detach(this.treePanel);
166
- this.locationListRenderer.dispose();
167
- if (this.treeFiltersRenderer) {
168
- this.treeFiltersRenderer.dispose();
169
- }
170
- }));
171
- this.appendFiltersPanel();
172
- this.appendCloseButton(common_1.nls.localizeByDefault('Cancel'));
173
- this.appendAcceptButton(this.getAcceptButtonLabel());
174
- this.addKeyListener(this.back, browser_1.Key.ENTER, () => {
175
- this.addTransformEffectToIcon(this.back);
176
- this.model.navigateBackward();
177
- }, 'click');
178
- this.addKeyListener(this.forward, browser_1.Key.ENTER, () => {
179
- this.addTransformEffectToIcon(this.forward);
180
- this.model.navigateForward();
181
- }, 'click');
182
- this.addKeyListener(this.home, browser_1.Key.ENTER, () => {
183
- this.addTransformEffectToIcon(this.home);
184
- if (this.model.initialLocation) {
185
- this.model.location = this.model.initialLocation;
186
- }
187
- }, 'click');
188
- this.addKeyListener(this.up, browser_1.Key.ENTER, () => {
189
- this.addTransformEffectToIcon(this.up);
190
- if (this.model.location) {
191
- this.model.location = this.model.location.parent;
192
- }
193
- }, 'click');
194
- super.onAfterAttach(msg);
195
- }
196
- addTransformEffectToIcon(element) {
197
- const icon = element.getElementsByTagName('i')[0];
198
- icon.classList.add('active');
199
- setTimeout(() => icon.classList.remove('active'), exports.TOOLBAR_ITEM_TRANSFORM_TIMEOUT);
200
- }
201
- onActivateRequest(msg) {
202
- this.widget.activate();
203
- }
204
- };
205
- __decorate([
206
- (0, inversify_1.inject)(file_dialog_widget_1.FileDialogWidget),
207
- __metadata("design:type", file_dialog_widget_1.FileDialogWidget)
208
- ], FileDialog.prototype, "widget", void 0);
209
- __decorate([
210
- (0, inversify_1.inject)(location_1.LocationListRendererFactory),
211
- __metadata("design:type", Function)
212
- ], FileDialog.prototype, "locationListFactory", void 0);
213
- __decorate([
214
- (0, inversify_1.inject)(file_dialog_tree_filters_renderer_1.FileDialogTreeFiltersRendererFactory),
215
- __metadata("design:type", Function)
216
- ], FileDialog.prototype, "treeFiltersFactory", void 0);
217
- __decorate([
218
- (0, inversify_1.inject)(file_dialog_hidden_files_renderer_1.HiddenFilesToggleRendererFactory),
219
- __metadata("design:type", Function)
220
- ], FileDialog.prototype, "hiddenFilesToggleFactory", void 0);
221
- __decorate([
222
- (0, inversify_1.postConstruct)(),
223
- __metadata("design:type", Function),
224
- __metadata("design:paramtypes", []),
225
- __metadata("design:returntype", void 0)
226
- ], FileDialog.prototype, "init", null);
227
- FileDialog = __decorate([
228
- __param(0, (0, inversify_1.inject)(FileDialogProps)),
229
- __metadata("design:paramtypes", [FileDialogProps])
230
- ], FileDialog);
231
- exports.FileDialog = FileDialog;
232
- let OpenFileDialog = class OpenFileDialog extends FileDialog {
233
- constructor(props) {
234
- super(props);
235
- this.props = props;
236
- }
237
- init() {
238
- super.init();
239
- const { props } = this;
240
- if (props.canSelectFiles !== undefined) {
241
- this.widget.disableFileSelection = !props.canSelectFiles;
242
- }
243
- }
244
- getAcceptButtonLabel() {
245
- return this.props.openLabel ? this.props.openLabel : common_1.nls.localizeByDefault('Open');
246
- }
247
- isValid(value) {
248
- if (value && !this.props.canSelectMany && value instanceof Array) {
249
- return common_1.nls.localize('theia/filesystem/dialog/multipleItemMessage', 'You can select only one item');
250
- }
251
- return '';
252
- }
253
- get value() {
254
- if (this.widget.model.selectedFileStatNodes.length === 1) {
255
- return this.widget.model.selectedFileStatNodes[0];
256
- }
257
- else {
258
- return this.widget.model.selectedFileStatNodes;
259
- }
260
- }
261
- async accept() {
262
- const selection = this.value;
263
- if (!this.props.canSelectFolders
264
- && !Array.isArray(selection)
265
- && selection.fileStat.isDirectory) {
266
- this.widget.model.openNode(selection);
267
- return;
268
- }
269
- super.accept();
270
- }
271
- };
272
- __decorate([
273
- (0, inversify_1.postConstruct)(),
274
- __metadata("design:type", Function),
275
- __metadata("design:paramtypes", []),
276
- __metadata("design:returntype", void 0)
277
- ], OpenFileDialog.prototype, "init", null);
278
- OpenFileDialog = __decorate([
279
- (0, inversify_1.injectable)(),
280
- __param(0, (0, inversify_1.inject)(OpenFileDialogProps)),
281
- __metadata("design:paramtypes", [OpenFileDialogProps])
282
- ], OpenFileDialog);
283
- exports.OpenFileDialog = OpenFileDialog;
284
- let SaveFileDialog = class SaveFileDialog extends FileDialog {
285
- constructor(props) {
286
- super(props);
287
- this.props = props;
288
- }
289
- init() {
290
- super.init();
291
- const { widget } = this;
292
- widget.addClass(exports.SAVE_DIALOG_CLASS);
293
- }
294
- getAcceptButtonLabel() {
295
- return this.props.saveLabel ? this.props.saveLabel : common_1.nls.localizeByDefault('Save');
296
- }
297
- onUpdateRequest(msg) {
298
- // Update file name field when changing a selection
299
- if (this.fileNameField) {
300
- if (this.widget.model.selectedFileStatNodes.length === 1) {
301
- const node = this.widget.model.selectedFileStatNodes[0];
302
- if (!node.fileStat.isDirectory) {
303
- this.fileNameField.value = this.labelProvider.getName(node);
304
- }
305
- }
306
- else {
307
- this.fileNameField.value = '';
308
- }
309
- }
310
- // Continue updating the dialog
311
- super.onUpdateRequest(msg);
312
- }
313
- isValid(value) {
314
- if (this.fileNameField && this.fileNameField.value) {
315
- return '';
316
- }
317
- return false;
318
- }
319
- get value() {
320
- if (this.fileNameField && this.widget.model.selectedFileStatNodes.length === 1) {
321
- const node = this.widget.model.selectedFileStatNodes[0];
322
- if (node.fileStat.isDirectory) {
323
- return node.uri.resolve(this.fileNameField.value);
324
- }
325
- return node.uri.parent.resolve(this.fileNameField.value);
326
- }
327
- return undefined;
328
- }
329
- onAfterAttach(msg) {
330
- super.onAfterAttach(msg);
331
- const fileNamePanel = document.createElement('div');
332
- fileNamePanel.classList.add(exports.FILENAME_PANEL_CLASS);
333
- this.contentNode.appendChild(fileNamePanel);
334
- const titlePanel = document.createElement('div');
335
- titlePanel.innerHTML = DOMPurify.sanitize(common_1.nls.localize('theia/filesystem/dialog/name', 'Name:'));
336
- titlePanel.classList.add(exports.FILENAME_LABEL_CLASS);
337
- fileNamePanel.appendChild(titlePanel);
338
- this.fileNameField = document.createElement('input');
339
- this.fileNameField.type = 'text';
340
- this.fileNameField.spellcheck = false;
341
- this.fileNameField.classList.add('theia-input', exports.FILENAME_TEXTFIELD_CLASS);
342
- this.fileNameField.value = this.props.inputValue || '';
343
- fileNamePanel.appendChild(this.fileNameField);
344
- this.fileNameField.onkeyup = () => this.validate();
345
- }
346
- };
347
- __decorate([
348
- (0, inversify_1.inject)(browser_1.LabelProvider),
349
- __metadata("design:type", browser_1.LabelProvider)
350
- ], SaveFileDialog.prototype, "labelProvider", void 0);
351
- __decorate([
352
- (0, inversify_1.postConstruct)(),
353
- __metadata("design:type", Function),
354
- __metadata("design:paramtypes", []),
355
- __metadata("design:returntype", void 0)
356
- ], SaveFileDialog.prototype, "init", null);
357
- SaveFileDialog = __decorate([
358
- (0, inversify_1.injectable)(),
359
- __param(0, (0, inversify_1.inject)(SaveFileDialogProps)),
360
- __metadata("design:paramtypes", [SaveFileDialogProps])
361
- ], SaveFileDialog);
362
- exports.SaveFileDialog = SaveFileDialog;
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2017 TypeFox and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
18
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20
+ 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;
21
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
22
+ };
23
+ var __metadata = (this && this.__metadata) || function (k, v) {
24
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
25
+ };
26
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
27
+ return function (target, key) { decorator(target, key, paramIndex); }
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.SaveFileDialog = exports.OpenFileDialog = exports.FileDialog = exports.SaveFileDialogProps = exports.OpenFileDialogProps = exports.FileDialogProps = exports.TOOLBAR_ITEM_TRANSFORM_TIMEOUT = exports.CONTROL_PANEL_CLASS = exports.FILENAME_TEXTFIELD_CLASS = exports.FILENAME_LABEL_CLASS = exports.FILENAME_PANEL_CLASS = exports.FILTERS_LIST_PANEL_CLASS = exports.FILTERS_LABEL_CLASS = exports.FILTERS_PANEL_CLASS = exports.NAVIGATION_LOCATION_LIST_PANEL_CLASS = exports.NAVIGATION_UP_CLASS = exports.NAVIGATION_HOME_CLASS = exports.NAVIGATION_FORWARD_CLASS = exports.NAVIGATION_BACK_CLASS = exports.NAVIGATION_PANEL_CLASS = exports.SAVE_DIALOG_CLASS = exports.SaveFileDialogFactory = exports.OpenFileDialogFactory = void 0;
31
+ const inversify_1 = require("@theia/core/shared/inversify");
32
+ const common_1 = require("@theia/core/lib/common");
33
+ const browser_1 = require("@theia/core/lib/browser");
34
+ const location_1 = require("../location");
35
+ const file_dialog_widget_1 = require("./file-dialog-widget");
36
+ const file_dialog_tree_filters_renderer_1 = require("./file-dialog-tree-filters-renderer");
37
+ const widgets_1 = require("@theia/core/shared/@phosphor/widgets");
38
+ const DOMPurify = require("@theia/core/shared/dompurify");
39
+ const file_dialog_hidden_files_renderer_1 = require("./file-dialog-hidden-files-renderer");
40
+ exports.OpenFileDialogFactory = Symbol('OpenFileDialogFactory');
41
+ exports.SaveFileDialogFactory = Symbol('SaveFileDialogFactory');
42
+ exports.SAVE_DIALOG_CLASS = 'theia-SaveFileDialog';
43
+ exports.NAVIGATION_PANEL_CLASS = 'theia-NavigationPanel';
44
+ exports.NAVIGATION_BACK_CLASS = 'theia-NavigationBack';
45
+ exports.NAVIGATION_FORWARD_CLASS = 'theia-NavigationForward';
46
+ exports.NAVIGATION_HOME_CLASS = 'theia-NavigationHome';
47
+ exports.NAVIGATION_UP_CLASS = 'theia-NavigationUp';
48
+ exports.NAVIGATION_LOCATION_LIST_PANEL_CLASS = 'theia-LocationListPanel';
49
+ exports.FILTERS_PANEL_CLASS = 'theia-FiltersPanel';
50
+ exports.FILTERS_LABEL_CLASS = 'theia-FiltersLabel';
51
+ exports.FILTERS_LIST_PANEL_CLASS = 'theia-FiltersListPanel';
52
+ exports.FILENAME_PANEL_CLASS = 'theia-FileNamePanel';
53
+ exports.FILENAME_LABEL_CLASS = 'theia-FileNameLabel';
54
+ exports.FILENAME_TEXTFIELD_CLASS = 'theia-FileNameTextField';
55
+ exports.CONTROL_PANEL_CLASS = 'theia-ControlPanel';
56
+ exports.TOOLBAR_ITEM_TRANSFORM_TIMEOUT = 100;
57
+ class FileDialogProps extends browser_1.DialogProps {
58
+ }
59
+ exports.FileDialogProps = FileDialogProps;
60
+ let OpenFileDialogProps = class OpenFileDialogProps extends FileDialogProps {
61
+ };
62
+ OpenFileDialogProps = __decorate([
63
+ (0, inversify_1.injectable)()
64
+ ], OpenFileDialogProps);
65
+ exports.OpenFileDialogProps = OpenFileDialogProps;
66
+ let SaveFileDialogProps = class SaveFileDialogProps extends FileDialogProps {
67
+ };
68
+ SaveFileDialogProps = __decorate([
69
+ (0, inversify_1.injectable)()
70
+ ], SaveFileDialogProps);
71
+ exports.SaveFileDialogProps = SaveFileDialogProps;
72
+ let FileDialog = class FileDialog extends browser_1.AbstractDialog {
73
+ constructor(props) {
74
+ super(props);
75
+ this.props = props;
76
+ }
77
+ init() {
78
+ this.treePanel = new widgets_1.Panel();
79
+ this.treePanel.addWidget(this.widget);
80
+ this.toDispose.push(this.treePanel);
81
+ this.toDispose.push(this.model.onChanged(() => this.update()));
82
+ this.toDispose.push(this.model.onDidOpenFile(() => this.accept()));
83
+ this.toDispose.push(this.model.onSelectionChanged(() => this.update()));
84
+ const navigationPanel = document.createElement('div');
85
+ navigationPanel.classList.add(exports.NAVIGATION_PANEL_CLASS);
86
+ this.contentNode.appendChild(navigationPanel);
87
+ navigationPanel.appendChild(this.back = (0, browser_1.createIconButton)(...(0, browser_1.codiconArray)('chevron-left', true)));
88
+ this.back.classList.add(exports.NAVIGATION_BACK_CLASS);
89
+ this.back.title = common_1.nls.localize('theia/filesystem/dialog/navigateBack', 'Navigate Back');
90
+ navigationPanel.appendChild(this.forward = (0, browser_1.createIconButton)(...(0, browser_1.codiconArray)('chevron-right', true)));
91
+ this.forward.classList.add(exports.NAVIGATION_FORWARD_CLASS);
92
+ this.forward.title = common_1.nls.localize('theia/filesystem/dialog/navigateForward', 'Navigate Forward');
93
+ navigationPanel.appendChild(this.home = (0, browser_1.createIconButton)(...(0, browser_1.codiconArray)('home', true)));
94
+ this.home.classList.add(exports.NAVIGATION_HOME_CLASS);
95
+ this.home.title = common_1.nls.localize('theia/filesystem/dialog/initialLocation', 'Go To Initial Location');
96
+ navigationPanel.appendChild(this.up = (0, browser_1.createIconButton)(...(0, browser_1.codiconArray)('arrow-up', true)));
97
+ this.up.classList.add(exports.NAVIGATION_UP_CLASS);
98
+ this.up.title = common_1.nls.localize('theia/filesystem/dialog/navigateUp', 'Navigate Up One Directory');
99
+ const locationListRendererHost = document.createElement('div');
100
+ this.locationListRenderer = this.locationListFactory({ model: this.model, host: locationListRendererHost });
101
+ this.toDispose.push(this.locationListRenderer);
102
+ this.locationListRenderer.host.classList.add(exports.NAVIGATION_LOCATION_LIST_PANEL_CLASS);
103
+ navigationPanel.appendChild(this.locationListRenderer.host);
104
+ this.hiddenFilesToggleRenderer = this.hiddenFilesToggleFactory(this.widget.model.tree);
105
+ this.contentNode.appendChild(this.hiddenFilesToggleRenderer.host);
106
+ if (this.props.filters) {
107
+ this.treeFiltersRenderer = this.treeFiltersFactory({ suppliedFilters: this.props.filters, fileDialogTree: this.widget.model.tree });
108
+ const filters = Object.keys(this.props.filters);
109
+ if (filters.length) {
110
+ this.widget.model.tree.setFilter(this.props.filters[filters[0]]);
111
+ }
112
+ }
113
+ }
114
+ get model() {
115
+ return this.widget.model;
116
+ }
117
+ onUpdateRequest(msg) {
118
+ super.onUpdateRequest(msg);
119
+ (0, browser_1.setEnabled)(this.back, this.model.canNavigateBackward());
120
+ (0, browser_1.setEnabled)(this.forward, this.model.canNavigateForward());
121
+ (0, browser_1.setEnabled)(this.home, !!this.model.initialLocation
122
+ && !!this.model.location
123
+ && this.model.initialLocation.toString() !== this.model.location.toString());
124
+ (0, browser_1.setEnabled)(this.up, this.model.canNavigateUpward());
125
+ this.locationListRenderer.render();
126
+ if (this.treeFiltersRenderer) {
127
+ this.treeFiltersRenderer.render();
128
+ }
129
+ this.widget.update();
130
+ }
131
+ handleEnter(event) {
132
+ if (event.target instanceof HTMLTextAreaElement || this.targetIsDirectoryInput(event.target) || this.targetIsInputToggle(event.target)) {
133
+ return false;
134
+ }
135
+ this.accept();
136
+ }
137
+ handleEscape(event) {
138
+ if (event.target instanceof HTMLTextAreaElement || this.targetIsDirectoryInput(event.target)) {
139
+ return false;
140
+ }
141
+ this.close();
142
+ }
143
+ targetIsDirectoryInput(target) {
144
+ return target instanceof HTMLInputElement && target.classList.contains(location_1.LocationListRenderer.Styles.LOCATION_TEXT_INPUT_CLASS);
145
+ }
146
+ targetIsInputToggle(target) {
147
+ return target instanceof HTMLSpanElement && target.classList.contains(location_1.LocationListRenderer.Styles.LOCATION_INPUT_TOGGLE_CLASS);
148
+ }
149
+ appendFiltersPanel() {
150
+ if (this.treeFiltersRenderer) {
151
+ const filtersPanel = document.createElement('div');
152
+ filtersPanel.classList.add(exports.FILTERS_PANEL_CLASS);
153
+ this.contentNode.appendChild(filtersPanel);
154
+ const titlePanel = document.createElement('div');
155
+ titlePanel.innerHTML = DOMPurify.sanitize(common_1.nls.localize('theia/filesystem/format', 'Format:'));
156
+ titlePanel.classList.add(exports.FILTERS_LABEL_CLASS);
157
+ filtersPanel.appendChild(titlePanel);
158
+ this.treeFiltersRenderer.host.classList.add(exports.FILTERS_LIST_PANEL_CLASS);
159
+ filtersPanel.appendChild(this.treeFiltersRenderer.host);
160
+ }
161
+ }
162
+ onAfterAttach(msg) {
163
+ browser_1.Widget.attach(this.treePanel, this.contentNode);
164
+ this.toDisposeOnDetach.push(common_1.Disposable.create(() => {
165
+ browser_1.Widget.detach(this.treePanel);
166
+ this.locationListRenderer.dispose();
167
+ if (this.treeFiltersRenderer) {
168
+ this.treeFiltersRenderer.dispose();
169
+ }
170
+ }));
171
+ this.appendFiltersPanel();
172
+ this.appendCloseButton(common_1.nls.localizeByDefault('Cancel'));
173
+ this.appendAcceptButton(this.getAcceptButtonLabel());
174
+ this.addKeyListener(this.back, browser_1.Key.ENTER, () => {
175
+ this.addTransformEffectToIcon(this.back);
176
+ this.model.navigateBackward();
177
+ }, 'click');
178
+ this.addKeyListener(this.forward, browser_1.Key.ENTER, () => {
179
+ this.addTransformEffectToIcon(this.forward);
180
+ this.model.navigateForward();
181
+ }, 'click');
182
+ this.addKeyListener(this.home, browser_1.Key.ENTER, () => {
183
+ this.addTransformEffectToIcon(this.home);
184
+ if (this.model.initialLocation) {
185
+ this.model.location = this.model.initialLocation;
186
+ }
187
+ }, 'click');
188
+ this.addKeyListener(this.up, browser_1.Key.ENTER, () => {
189
+ this.addTransformEffectToIcon(this.up);
190
+ if (this.model.location) {
191
+ this.model.location = this.model.location.parent;
192
+ }
193
+ }, 'click');
194
+ super.onAfterAttach(msg);
195
+ }
196
+ addTransformEffectToIcon(element) {
197
+ const icon = element.getElementsByTagName('i')[0];
198
+ icon.classList.add('active');
199
+ setTimeout(() => icon.classList.remove('active'), exports.TOOLBAR_ITEM_TRANSFORM_TIMEOUT);
200
+ }
201
+ onActivateRequest(msg) {
202
+ this.widget.activate();
203
+ }
204
+ };
205
+ __decorate([
206
+ (0, inversify_1.inject)(file_dialog_widget_1.FileDialogWidget),
207
+ __metadata("design:type", file_dialog_widget_1.FileDialogWidget)
208
+ ], FileDialog.prototype, "widget", void 0);
209
+ __decorate([
210
+ (0, inversify_1.inject)(location_1.LocationListRendererFactory),
211
+ __metadata("design:type", Function)
212
+ ], FileDialog.prototype, "locationListFactory", void 0);
213
+ __decorate([
214
+ (0, inversify_1.inject)(file_dialog_tree_filters_renderer_1.FileDialogTreeFiltersRendererFactory),
215
+ __metadata("design:type", Function)
216
+ ], FileDialog.prototype, "treeFiltersFactory", void 0);
217
+ __decorate([
218
+ (0, inversify_1.inject)(file_dialog_hidden_files_renderer_1.HiddenFilesToggleRendererFactory),
219
+ __metadata("design:type", Function)
220
+ ], FileDialog.prototype, "hiddenFilesToggleFactory", void 0);
221
+ __decorate([
222
+ (0, inversify_1.postConstruct)(),
223
+ __metadata("design:type", Function),
224
+ __metadata("design:paramtypes", []),
225
+ __metadata("design:returntype", void 0)
226
+ ], FileDialog.prototype, "init", null);
227
+ FileDialog = __decorate([
228
+ __param(0, (0, inversify_1.inject)(FileDialogProps)),
229
+ __metadata("design:paramtypes", [FileDialogProps])
230
+ ], FileDialog);
231
+ exports.FileDialog = FileDialog;
232
+ let OpenFileDialog = class OpenFileDialog extends FileDialog {
233
+ constructor(props) {
234
+ super(props);
235
+ this.props = props;
236
+ }
237
+ init() {
238
+ super.init();
239
+ const { props } = this;
240
+ if (props.canSelectFiles !== undefined) {
241
+ this.widget.disableFileSelection = !props.canSelectFiles;
242
+ }
243
+ }
244
+ getAcceptButtonLabel() {
245
+ return this.props.openLabel ? this.props.openLabel : common_1.nls.localizeByDefault('Open');
246
+ }
247
+ isValid(value) {
248
+ if (value && !this.props.canSelectMany && value instanceof Array) {
249
+ return common_1.nls.localize('theia/filesystem/dialog/multipleItemMessage', 'You can select only one item');
250
+ }
251
+ return '';
252
+ }
253
+ get value() {
254
+ if (this.widget.model.selectedFileStatNodes.length === 1) {
255
+ return this.widget.model.selectedFileStatNodes[0];
256
+ }
257
+ else {
258
+ return this.widget.model.selectedFileStatNodes;
259
+ }
260
+ }
261
+ async accept() {
262
+ const selection = this.value;
263
+ if (!this.props.canSelectFolders
264
+ && !Array.isArray(selection)
265
+ && selection.fileStat.isDirectory) {
266
+ this.widget.model.openNode(selection);
267
+ return;
268
+ }
269
+ super.accept();
270
+ }
271
+ };
272
+ __decorate([
273
+ (0, inversify_1.postConstruct)(),
274
+ __metadata("design:type", Function),
275
+ __metadata("design:paramtypes", []),
276
+ __metadata("design:returntype", void 0)
277
+ ], OpenFileDialog.prototype, "init", null);
278
+ OpenFileDialog = __decorate([
279
+ (0, inversify_1.injectable)(),
280
+ __param(0, (0, inversify_1.inject)(OpenFileDialogProps)),
281
+ __metadata("design:paramtypes", [OpenFileDialogProps])
282
+ ], OpenFileDialog);
283
+ exports.OpenFileDialog = OpenFileDialog;
284
+ let SaveFileDialog = class SaveFileDialog extends FileDialog {
285
+ constructor(props) {
286
+ super(props);
287
+ this.props = props;
288
+ }
289
+ init() {
290
+ super.init();
291
+ const { widget } = this;
292
+ widget.addClass(exports.SAVE_DIALOG_CLASS);
293
+ }
294
+ getAcceptButtonLabel() {
295
+ return this.props.saveLabel ? this.props.saveLabel : common_1.nls.localizeByDefault('Save');
296
+ }
297
+ onUpdateRequest(msg) {
298
+ // Update file name field when changing a selection
299
+ if (this.fileNameField) {
300
+ if (this.widget.model.selectedFileStatNodes.length === 1) {
301
+ const node = this.widget.model.selectedFileStatNodes[0];
302
+ if (!node.fileStat.isDirectory) {
303
+ this.fileNameField.value = this.labelProvider.getName(node);
304
+ }
305
+ }
306
+ else {
307
+ this.fileNameField.value = '';
308
+ }
309
+ }
310
+ // Continue updating the dialog
311
+ super.onUpdateRequest(msg);
312
+ }
313
+ isValid(value) {
314
+ if (this.fileNameField && this.fileNameField.value) {
315
+ return '';
316
+ }
317
+ return false;
318
+ }
319
+ get value() {
320
+ if (this.fileNameField && this.widget.model.selectedFileStatNodes.length === 1) {
321
+ const node = this.widget.model.selectedFileStatNodes[0];
322
+ if (node.fileStat.isDirectory) {
323
+ return node.uri.resolve(this.fileNameField.value);
324
+ }
325
+ return node.uri.parent.resolve(this.fileNameField.value);
326
+ }
327
+ return undefined;
328
+ }
329
+ onAfterAttach(msg) {
330
+ super.onAfterAttach(msg);
331
+ const fileNamePanel = document.createElement('div');
332
+ fileNamePanel.classList.add(exports.FILENAME_PANEL_CLASS);
333
+ this.contentNode.appendChild(fileNamePanel);
334
+ const titlePanel = document.createElement('div');
335
+ titlePanel.innerHTML = DOMPurify.sanitize(common_1.nls.localize('theia/filesystem/dialog/name', 'Name:'));
336
+ titlePanel.classList.add(exports.FILENAME_LABEL_CLASS);
337
+ fileNamePanel.appendChild(titlePanel);
338
+ this.fileNameField = document.createElement('input');
339
+ this.fileNameField.type = 'text';
340
+ this.fileNameField.spellcheck = false;
341
+ this.fileNameField.classList.add('theia-input', exports.FILENAME_TEXTFIELD_CLASS);
342
+ this.fileNameField.value = this.props.inputValue || '';
343
+ fileNamePanel.appendChild(this.fileNameField);
344
+ this.fileNameField.onkeyup = () => this.validate();
345
+ }
346
+ };
347
+ __decorate([
348
+ (0, inversify_1.inject)(browser_1.LabelProvider),
349
+ __metadata("design:type", browser_1.LabelProvider)
350
+ ], SaveFileDialog.prototype, "labelProvider", void 0);
351
+ __decorate([
352
+ (0, inversify_1.postConstruct)(),
353
+ __metadata("design:type", Function),
354
+ __metadata("design:paramtypes", []),
355
+ __metadata("design:returntype", void 0)
356
+ ], SaveFileDialog.prototype, "init", null);
357
+ SaveFileDialog = __decorate([
358
+ (0, inversify_1.injectable)(),
359
+ __param(0, (0, inversify_1.inject)(SaveFileDialogProps)),
360
+ __metadata("design:paramtypes", [SaveFileDialogProps])
361
+ ], SaveFileDialog);
362
+ exports.SaveFileDialog = SaveFileDialog;
363
363
  //# sourceMappingURL=file-dialog.js.map