@concord-consortium/cloud-file-manager 2.1.0-pre.8 → 2.2.0

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 (280) hide show
  1. package/dist/347 +276 -0
  2. package/dist/autolaunch/autolaunch.js +1 -1
  3. package/dist/autolaunch/autolaunch.js.map +1 -1
  4. package/dist/cjs/app-options.d.ts +2 -0
  5. package/dist/cjs/client.d.ts +2 -1
  6. package/dist/cjs/client.js +54 -79
  7. package/dist/cjs/client.js.map +1 -1
  8. package/dist/cjs/cloud-file-manager.js +2 -2
  9. package/dist/cjs/cloud-file-manager.js.map +1 -1
  10. package/dist/cjs/create-react-factory.d.ts +1 -0
  11. package/dist/cjs/create-react-factory.js.map +1 -1
  12. package/dist/cjs/providers/document-store-provider.js +7 -10
  13. package/dist/cjs/providers/document-store-provider.js.map +1 -1
  14. package/dist/cjs/providers/document-store-share-provider.js +4 -4
  15. package/dist/cjs/providers/document-store-share-provider.js.map +1 -1
  16. package/dist/cjs/providers/google-drive-provider.js +30 -34
  17. package/dist/cjs/providers/google-drive-provider.js.map +1 -1
  18. package/dist/cjs/providers/interactive-api-provider.d.ts +5 -2
  19. package/dist/cjs/providers/interactive-api-provider.js +27 -21
  20. package/dist/cjs/providers/interactive-api-provider.js.map +1 -1
  21. package/dist/cjs/providers/lara-provider.js +18 -26
  22. package/dist/cjs/providers/lara-provider.js.map +1 -1
  23. package/dist/cjs/providers/legacy-google-drive-provider.js +21 -27
  24. package/dist/cjs/providers/legacy-google-drive-provider.js.map +1 -1
  25. package/dist/cjs/providers/localstorage-provider.js +11 -13
  26. package/dist/cjs/providers/localstorage-provider.js.map +1 -1
  27. package/dist/cjs/providers/patchable-content.js +1 -1
  28. package/dist/cjs/providers/patchable-content.js.map +1 -1
  29. package/dist/cjs/providers/post-message-provider.js +1 -1
  30. package/dist/cjs/providers/post-message-provider.js.map +1 -1
  31. package/dist/cjs/providers/provider-interface.d.ts +1 -2
  32. package/dist/cjs/providers/provider-interface.js +11 -14
  33. package/dist/cjs/providers/provider-interface.js.map +1 -1
  34. package/dist/cjs/providers/readonly-provider.js +6 -6
  35. package/dist/cjs/providers/readonly-provider.js.map +1 -1
  36. package/dist/cjs/providers/s3-provider.js +1 -2
  37. package/dist/cjs/providers/s3-provider.js.map +1 -1
  38. package/dist/cjs/providers/s3-share-provider.js +1 -1
  39. package/dist/cjs/providers/s3-share-provider.js.map +1 -1
  40. package/dist/cjs/providers/test-provider.js +5 -5
  41. package/dist/cjs/providers/test-provider.js.map +1 -1
  42. package/dist/cjs/providers/url-provider.js +1 -1
  43. package/dist/cjs/providers/url-provider.js.map +1 -1
  44. package/dist/cjs/ui.d.ts +2 -1
  45. package/dist/cjs/ui.js +5 -3
  46. package/dist/cjs/ui.js.map +1 -1
  47. package/dist/cjs/utils/focus-tracker.d.ts +3 -0
  48. package/dist/cjs/utils/focus-tracker.js +44 -0
  49. package/dist/cjs/utils/focus-tracker.js.map +1 -0
  50. package/dist/cjs/utils/ios-file-saver.d.ts +42 -0
  51. package/dist/cjs/utils/ios-file-saver.js +98 -0
  52. package/dist/cjs/utils/ios-file-saver.js.map +1 -0
  53. package/dist/cjs/utils/lang/en-US.json +9 -0
  54. package/dist/cjs/utils/s3-share-provider-token-service-helper.js +19 -13
  55. package/dist/cjs/utils/s3-share-provider-token-service-helper.js.map +1 -1
  56. package/dist/cjs/utils/url-params.js +1 -2
  57. package/dist/cjs/utils/url-params.js.map +1 -1
  58. package/dist/cjs/views/alert-dialog-view.d.ts +9 -3
  59. package/dist/cjs/views/alert-dialog-view.js +9 -24
  60. package/dist/cjs/views/alert-dialog-view.js.map +1 -1
  61. package/dist/cjs/views/app-view.d.ts +12 -5
  62. package/dist/cjs/views/app-view.js +167 -173
  63. package/dist/cjs/views/app-view.js.map +1 -1
  64. package/dist/cjs/views/blocking-modal-view.d.ts +9 -3
  65. package/dist/cjs/views/blocking-modal-view.js +8 -25
  66. package/dist/cjs/views/blocking-modal-view.js.map +1 -1
  67. package/dist/cjs/views/confirm-dialog-view.d.ts +14 -3
  68. package/dist/cjs/views/confirm-dialog-view.js +14 -31
  69. package/dist/cjs/views/confirm-dialog-view.js.map +1 -1
  70. package/dist/cjs/views/download-dialog-view.d.ts +12 -3
  71. package/dist/cjs/views/download-dialog-view.js +36 -63
  72. package/dist/cjs/views/download-dialog-view.js.map +1 -1
  73. package/dist/cjs/views/dropdown-anchors.d.ts +2 -2
  74. package/dist/cjs/views/dropdown-anchors.js +4 -10
  75. package/dist/cjs/views/dropdown-anchors.js.map +1 -1
  76. package/dist/cjs/views/dropdown-view.d.ts +20 -3
  77. package/dist/cjs/views/dropdown-view.js +40 -157
  78. package/dist/cjs/views/dropdown-view.js.map +1 -1
  79. package/dist/cjs/views/file-dialog-tab-view.d.ts +24 -2
  80. package/dist/cjs/views/file-dialog-tab-view.js +255 -315
  81. package/dist/cjs/views/file-dialog-tab-view.js.map +1 -1
  82. package/dist/cjs/views/icons/spin.d.ts +2 -2
  83. package/dist/cjs/views/icons/spin.js +2 -39
  84. package/dist/cjs/views/icons/spin.js.map +1 -1
  85. package/dist/cjs/views/import-tabbed-dialog-view.d.ts +12 -3
  86. package/dist/cjs/views/import-tabbed-dialog-view.js +33 -65
  87. package/dist/cjs/views/import-tabbed-dialog-view.js.map +1 -1
  88. package/dist/cjs/views/local-file-tab-list-view.d.ts +14 -3
  89. package/dist/cjs/views/local-file-tab-list-view.js +57 -66
  90. package/dist/cjs/views/local-file-tab-list-view.js.map +1 -1
  91. package/dist/cjs/views/local-file-tab-save-view.d.ts +32 -3
  92. package/dist/cjs/views/local-file-tab-save-view.js +125 -138
  93. package/dist/cjs/views/local-file-tab-save-view.js.map +1 -1
  94. package/dist/cjs/views/menu-bar-view.d.ts +58 -3
  95. package/dist/cjs/views/menu-bar-view.js +196 -183
  96. package/dist/cjs/views/menu-bar-view.js.map +1 -1
  97. package/dist/cjs/views/modal-dialog-view.js +7 -8
  98. package/dist/cjs/views/modal-dialog-view.js.map +1 -1
  99. package/dist/cjs/views/modal-tabbed-dialog-view.d.ts +15 -3
  100. package/dist/cjs/views/modal-tabbed-dialog-view.js +5 -17
  101. package/dist/cjs/views/modal-tabbed-dialog-view.js.map +1 -1
  102. package/dist/cjs/views/modal-view.d.ts +5 -32
  103. package/dist/cjs/views/modal-view.js +20 -64
  104. package/dist/cjs/views/modal-view.js.map +1 -1
  105. package/dist/cjs/views/provider-tabbed-dialog-view.d.ts +23 -3
  106. package/dist/cjs/views/provider-tabbed-dialog-view.js +43 -51
  107. package/dist/cjs/views/provider-tabbed-dialog-view.js.map +1 -1
  108. package/dist/cjs/views/rename-dialog-view.d.ts +8 -3
  109. package/dist/cjs/views/rename-dialog-view.js +25 -51
  110. package/dist/cjs/views/rename-dialog-view.js.map +1 -1
  111. package/dist/cjs/views/select-interactive-state-dialog-view.d.ts +1 -1
  112. package/dist/cjs/views/select-interactive-state-dialog-view.js +4 -30
  113. package/dist/cjs/views/select-interactive-state-dialog-view.js.map +1 -1
  114. package/dist/cjs/views/select-provider-dialog-tab-view.d.ts +6 -1
  115. package/dist/cjs/views/select-provider-dialog-tab-view.js +4 -12
  116. package/dist/cjs/views/select-provider-dialog-tab-view.js.map +1 -1
  117. package/dist/cjs/views/share-dialog-status-view.js +6 -13
  118. package/dist/cjs/views/share-dialog-status-view.js.map +1 -1
  119. package/dist/cjs/views/share-dialog-tabs-view.js +22 -61
  120. package/dist/cjs/views/share-dialog-tabs-view.js.map +1 -1
  121. package/dist/cjs/views/share-dialog-view.d.ts +1 -1
  122. package/dist/cjs/views/share-dialog-view.js +15 -21
  123. package/dist/cjs/views/share-dialog-view.js.map +1 -1
  124. package/dist/cjs/views/share-loading-view.d.ts +2 -2
  125. package/dist/cjs/views/share-loading-view.js +2 -4
  126. package/dist/cjs/views/share-loading-view.js.map +1 -1
  127. package/dist/cjs/views/tabbed-panel-view.d.ts +16 -3
  128. package/dist/cjs/views/tabbed-panel-view.js +25 -75
  129. package/dist/cjs/views/tabbed-panel-view.js.map +1 -1
  130. package/dist/cjs/views/url-tab-view.d.ts +12 -3
  131. package/dist/cjs/views/url-tab-view.js +31 -46
  132. package/dist/cjs/views/url-tab-view.js.map +1 -1
  133. package/dist/css/app.css +1 -1
  134. package/dist/css/app.css.map +1 -1
  135. package/dist/esm/app-options.d.ts +2 -0
  136. package/dist/esm/client.d.ts +2 -1
  137. package/dist/esm/client.js +54 -79
  138. package/dist/esm/client.js.map +1 -1
  139. package/dist/esm/cloud-file-manager.js +2 -2
  140. package/dist/esm/cloud-file-manager.js.map +1 -1
  141. package/dist/esm/create-react-factory.d.ts +1 -0
  142. package/dist/esm/create-react-factory.js.map +1 -1
  143. package/dist/esm/providers/document-store-provider.js +7 -10
  144. package/dist/esm/providers/document-store-provider.js.map +1 -1
  145. package/dist/esm/providers/document-store-share-provider.js +4 -4
  146. package/dist/esm/providers/document-store-share-provider.js.map +1 -1
  147. package/dist/esm/providers/google-drive-provider.js +30 -34
  148. package/dist/esm/providers/google-drive-provider.js.map +1 -1
  149. package/dist/esm/providers/interactive-api-provider.d.ts +5 -2
  150. package/dist/esm/providers/interactive-api-provider.js +25 -20
  151. package/dist/esm/providers/interactive-api-provider.js.map +1 -1
  152. package/dist/esm/providers/lara-provider.js +18 -26
  153. package/dist/esm/providers/lara-provider.js.map +1 -1
  154. package/dist/esm/providers/legacy-google-drive-provider.js +21 -27
  155. package/dist/esm/providers/legacy-google-drive-provider.js.map +1 -1
  156. package/dist/esm/providers/localstorage-provider.js +11 -13
  157. package/dist/esm/providers/localstorage-provider.js.map +1 -1
  158. package/dist/esm/providers/patchable-content.js +1 -1
  159. package/dist/esm/providers/patchable-content.js.map +1 -1
  160. package/dist/esm/providers/post-message-provider.js +1 -1
  161. package/dist/esm/providers/post-message-provider.js.map +1 -1
  162. package/dist/esm/providers/provider-interface.d.ts +1 -2
  163. package/dist/esm/providers/provider-interface.js +11 -14
  164. package/dist/esm/providers/provider-interface.js.map +1 -1
  165. package/dist/esm/providers/readonly-provider.js +6 -6
  166. package/dist/esm/providers/readonly-provider.js.map +1 -1
  167. package/dist/esm/providers/s3-provider.js +1 -2
  168. package/dist/esm/providers/s3-provider.js.map +1 -1
  169. package/dist/esm/providers/s3-share-provider.js +1 -1
  170. package/dist/esm/providers/s3-share-provider.js.map +1 -1
  171. package/dist/esm/providers/test-provider.js +5 -5
  172. package/dist/esm/providers/test-provider.js.map +1 -1
  173. package/dist/esm/providers/url-provider.js +1 -1
  174. package/dist/esm/providers/url-provider.js.map +1 -1
  175. package/dist/esm/ui.d.ts +2 -1
  176. package/dist/esm/ui.js +5 -3
  177. package/dist/esm/ui.js.map +1 -1
  178. package/dist/esm/utils/focus-tracker.d.ts +3 -0
  179. package/dist/esm/utils/focus-tracker.js +38 -0
  180. package/dist/esm/utils/focus-tracker.js.map +1 -0
  181. package/dist/esm/utils/ios-file-saver.d.ts +42 -0
  182. package/dist/esm/utils/ios-file-saver.js +91 -0
  183. package/dist/esm/utils/ios-file-saver.js.map +1 -0
  184. package/dist/esm/utils/lang/en-US.json +9 -0
  185. package/dist/esm/utils/s3-share-provider-token-service-helper.js +19 -10
  186. package/dist/esm/utils/s3-share-provider-token-service-helper.js.map +1 -1
  187. package/dist/esm/utils/url-params.js +1 -2
  188. package/dist/esm/utils/url-params.js.map +1 -1
  189. package/dist/esm/views/alert-dialog-view.d.ts +9 -3
  190. package/dist/esm/views/alert-dialog-view.js +10 -25
  191. package/dist/esm/views/alert-dialog-view.js.map +1 -1
  192. package/dist/esm/views/app-view.d.ts +12 -5
  193. package/dist/esm/views/app-view.js +176 -182
  194. package/dist/esm/views/app-view.js.map +1 -1
  195. package/dist/esm/views/blocking-modal-view.d.ts +9 -3
  196. package/dist/esm/views/blocking-modal-view.js +9 -26
  197. package/dist/esm/views/blocking-modal-view.js.map +1 -1
  198. package/dist/esm/views/confirm-dialog-view.d.ts +14 -3
  199. package/dist/esm/views/confirm-dialog-view.js +15 -32
  200. package/dist/esm/views/confirm-dialog-view.js.map +1 -1
  201. package/dist/esm/views/download-dialog-view.d.ts +12 -3
  202. package/dist/esm/views/download-dialog-view.js +36 -63
  203. package/dist/esm/views/download-dialog-view.js.map +1 -1
  204. package/dist/esm/views/dropdown-anchors.d.ts +2 -2
  205. package/dist/esm/views/dropdown-anchors.js +4 -7
  206. package/dist/esm/views/dropdown-anchors.js.map +1 -1
  207. package/dist/esm/views/dropdown-view.d.ts +20 -3
  208. package/dist/esm/views/dropdown-view.js +40 -154
  209. package/dist/esm/views/dropdown-view.js.map +1 -1
  210. package/dist/esm/views/file-dialog-tab-view.d.ts +24 -2
  211. package/dist/esm/views/file-dialog-tab-view.js +256 -316
  212. package/dist/esm/views/file-dialog-tab-view.js.map +1 -1
  213. package/dist/esm/views/icons/spin.d.ts +2 -2
  214. package/dist/esm/views/icons/spin.js +2 -36
  215. package/dist/esm/views/icons/spin.js.map +1 -1
  216. package/dist/esm/views/import-tabbed-dialog-view.d.ts +12 -3
  217. package/dist/esm/views/import-tabbed-dialog-view.js +36 -68
  218. package/dist/esm/views/import-tabbed-dialog-view.js.map +1 -1
  219. package/dist/esm/views/local-file-tab-list-view.d.ts +14 -3
  220. package/dist/esm/views/local-file-tab-list-view.js +57 -66
  221. package/dist/esm/views/local-file-tab-list-view.js.map +1 -1
  222. package/dist/esm/views/local-file-tab-save-view.d.ts +32 -3
  223. package/dist/esm/views/local-file-tab-save-view.js +125 -138
  224. package/dist/esm/views/local-file-tab-save-view.js.map +1 -1
  225. package/dist/esm/views/menu-bar-view.d.ts +58 -3
  226. package/dist/esm/views/menu-bar-view.js +198 -185
  227. package/dist/esm/views/menu-bar-view.js.map +1 -1
  228. package/dist/esm/views/modal-dialog-view.js +7 -8
  229. package/dist/esm/views/modal-dialog-view.js.map +1 -1
  230. package/dist/esm/views/modal-tabbed-dialog-view.d.ts +15 -3
  231. package/dist/esm/views/modal-tabbed-dialog-view.js +7 -19
  232. package/dist/esm/views/modal-tabbed-dialog-view.js.map +1 -1
  233. package/dist/esm/views/modal-view.d.ts +5 -32
  234. package/dist/esm/views/modal-view.js +21 -61
  235. package/dist/esm/views/modal-view.js.map +1 -1
  236. package/dist/esm/views/provider-tabbed-dialog-view.d.ts +23 -3
  237. package/dist/esm/views/provider-tabbed-dialog-view.js +46 -54
  238. package/dist/esm/views/provider-tabbed-dialog-view.js.map +1 -1
  239. package/dist/esm/views/rename-dialog-view.d.ts +8 -3
  240. package/dist/esm/views/rename-dialog-view.js +25 -51
  241. package/dist/esm/views/rename-dialog-view.js.map +1 -1
  242. package/dist/esm/views/select-interactive-state-dialog-view.d.ts +1 -1
  243. package/dist/esm/views/select-interactive-state-dialog-view.js +4 -30
  244. package/dist/esm/views/select-interactive-state-dialog-view.js.map +1 -1
  245. package/dist/esm/views/select-provider-dialog-tab-view.d.ts +6 -1
  246. package/dist/esm/views/select-provider-dialog-tab-view.js +4 -9
  247. package/dist/esm/views/select-provider-dialog-tab-view.js.map +1 -1
  248. package/dist/esm/views/share-dialog-status-view.js +6 -13
  249. package/dist/esm/views/share-dialog-status-view.js.map +1 -1
  250. package/dist/esm/views/share-dialog-tabs-view.js +22 -61
  251. package/dist/esm/views/share-dialog-tabs-view.js.map +1 -1
  252. package/dist/esm/views/share-dialog-view.d.ts +1 -1
  253. package/dist/esm/views/share-dialog-view.js +15 -21
  254. package/dist/esm/views/share-dialog-view.js.map +1 -1
  255. package/dist/esm/views/share-loading-view.d.ts +2 -2
  256. package/dist/esm/views/share-loading-view.js +2 -4
  257. package/dist/esm/views/share-loading-view.js.map +1 -1
  258. package/dist/esm/views/tabbed-panel-view.d.ts +16 -3
  259. package/dist/esm/views/tabbed-panel-view.js +25 -72
  260. package/dist/esm/views/tabbed-panel-view.js.map +1 -1
  261. package/dist/esm/views/url-tab-view.d.ts +12 -3
  262. package/dist/esm/views/url-tab-view.js +31 -46
  263. package/dist/esm/views/url-tab-view.js.map +1 -1
  264. package/dist/examples/codap3-local-file.html +42 -0
  265. package/dist/examples/index.html +2 -0
  266. package/dist/examples/local-json-save.html +36 -0
  267. package/dist/index.html +1 -1
  268. package/dist/js/app.js +1 -1
  269. package/dist/js/app.js.LICENSE.txt +41 -11
  270. package/dist/js/app.js.map +1 -1
  271. package/dist/js/globals.js +1 -1
  272. package/dist/js/globals.js.map +1 -1
  273. package/package.json +40 -36
  274. package/readme.md +4 -0
  275. package/dist/cjs/lib/file-saver.d.ts +0 -2
  276. package/dist/cjs/lib/file-saver.js +0 -164
  277. package/dist/cjs/lib/file-saver.js.map +0 -1
  278. package/dist/esm/lib/file-saver.d.ts +0 -2
  279. package/dist/esm/lib/file-saver.js +0 -164
  280. package/dist/esm/lib/file-saver.js.map +0 -1
@@ -3,155 +3,142 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- // TODO: This file was created by bulk-decaffeinate.
7
- // Sanity-check the conversion and remove this comment.
8
- /*
9
- * decaffeinate suggestions:
10
- * DS102: Remove unnecessary code created because of implicit returns
11
- * DS103: Rewrite code to no longer use __guard__
12
- * DS207: Consider shorter variations of null checks
13
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
14
- */
15
- const create_react_class_1 = __importDefault(require("create-react-class"));
16
- const react_dom_factories_1 = __importDefault(require("react-dom-factories"));
17
- const { div, input, button, a } = react_dom_factories_1.default;
18
- const translate_1 = __importDefault(require("../utils/translate"));
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const react_1 = require("react");
8
+ const file_saver_1 = require("file-saver");
19
9
  const provider_interface_1 = require("../providers/provider-interface");
20
- const provider_interface_2 = require("../providers/provider-interface");
21
- const file_saver_1 = __importDefault(require("../lib/file-saver"));
22
- exports.default = (0, create_react_class_1.default)({
23
- displayName: 'LocalFileSaveTab',
24
- getInitialState() {
25
- // If the dialog has the content to save, which occurs when saving secondary content
26
- // like CSV files, then use that instead of the document content and make sure that
27
- // it doesn't get modified by (for instance) trying to remove sharing metadata. To
28
- // do so, we specify that we want to include the share info, which tells the client
29
- // to leave the content alone.
30
- const hasPropsContent = ((this.props.dialog.data != null ? this.props.dialog.data.content : undefined) != null);
31
- const extension = hasPropsContent && this.props.dialog.data.extension
32
- ? this.props.dialog.data.extension : 'json';
33
- const filename = (this.props.client.state.metadata != null ? this.props.client.state.metadata.name : undefined) || ((0, translate_1.default)("~MENUBAR.UNTITLED_DOCUMENT"));
34
- return {
35
- filename,
36
- supportsDownloadAttribute: document.createElement('a').download !== undefined,
37
- downloadFilename: this.getDownloadFilename(hasPropsContent, filename, extension),
38
- extension,
39
- mimeType: hasPropsContent && (this.props.dialog.data.mimeType != null)
40
- ? this.props.dialog.data.mimeType : 'text/plain',
41
- shared: this.props.client.isShared(),
42
- hasPropsContent,
43
- includeShareInfo: hasPropsContent,
44
- gotContent: hasPropsContent,
45
- content: (this.props.dialog.data != null ? this.props.dialog.data.content : undefined)
46
- };
47
- },
48
- componentDidMount() {
49
- if (!this.state.hasPropsContent) {
50
- this.props.client._event('getContent', { shared: this.props.client._sharedMetadata() }, (content) => {
51
- const envelopedContent = provider_interface_2.cloudContentFactory.createEnvelopedCloudContent(content);
52
- __guard__(this.props.client.state != null ? this.props.client.state.currentContent : undefined, (x) => x.copyMetadataTo(envelopedContent));
53
- return this.setState({
54
- gotContent: true,
55
- content: envelopedContent
56
- });
57
- });
10
+ const ios_file_saver_1 = require("../utils/ios-file-saver");
11
+ const translate_1 = __importDefault(require("../utils/translate"));
12
+ const LocalFileSaveTab = ({ dialog, close, client, provider }) => {
13
+ const { data } = dialog;
14
+ const { appOptions } = client;
15
+ const { metadata } = client.state ?? {};
16
+ const hasPropsContent = data?.content != null;
17
+ const extension = hasPropsContent && data.extension ? data.extension : (appOptions?.extension ?? 'json');
18
+ const mimeType = hasPropsContent && data.mimeType ? data.mimeType : (appOptions?.localFileMimeType ?? appOptions?.mimeType ?? 'text/plain');
19
+ const initialFilename = metadata?.name ?? (0, translate_1.default)("~MENUBAR.UNTITLED_DOCUMENT");
20
+ const getDownloadFilename = (hasContent, fname, ext) => {
21
+ const newName = fname.replace(/^\s+|\s+$/, '');
22
+ if (hasContent) {
23
+ return provider_interface_1.CloudMetadata.newExtension(newName, ext);
58
24
  }
59
- // Using the React onClick handler for the download button yielded odd behaviors
60
- // in which the onClick handler got triggered multiple times and the default
61
- // handler could not be prevented, presumably due to React's SyntheticEvent system.
62
- // The solution here is to use standard browser event handlers.
63
- return this.downloadRef.addEventListener('click', this.confirm);
64
- },
65
- componentWillUnmount() {
66
- return this.downloadRef.removeEventListener('click', this.confirm);
67
- },
68
- filenameChanged() {
69
- const filename = this.filenameRef.value;
70
- return this.setState({
71
- filename,
72
- downloadFilename: this.getDownloadFilename(this.state.hasPropsContent, filename, this.state.extension)
25
+ else {
26
+ return provider_interface_1.CloudMetadata.withExtension(newName, ext);
27
+ }
28
+ };
29
+ const [filename, setFilename] = (0, react_1.useState)(initialFilename);
30
+ const [supportsDownloadAttribute] = (0, react_1.useState)(() => document.createElement('a').download !== undefined);
31
+ const [downloadFilename, setDownloadFilename] = (0, react_1.useState)(() => getDownloadFilename(hasPropsContent, initialFilename, extension));
32
+ const [shared] = (0, react_1.useState)(() => client.isShared());
33
+ const [includeShareInfo, setIncludeShareInfo] = (0, react_1.useState)(hasPropsContent);
34
+ const [gotContent, setGotContent] = (0, react_1.useState)(hasPropsContent);
35
+ const [content, setContent] = (0, react_1.useState)(hasPropsContent ? data.content : undefined);
36
+ const filenameRef = (0, react_1.useRef)(null);
37
+ const downloadRef = (0, react_1.useRef)(null);
38
+ const confirmDisabled = downloadFilename.length === 0 || !gotContent;
39
+ const completeDownload = () => {
40
+ const newMetadata = new provider_interface_1.CloudMetadata({
41
+ name: downloadFilename.split('.')[0],
42
+ type: provider_interface_1.CloudMetadata.File,
43
+ provider
73
44
  });
74
- },
75
- includeShareInfoChanged() {
76
- return this.setState({ includeShareInfo: this.includeShareInfoRef.checked });
77
- },
78
- getDownloadFilename(hasPropsContent, filename, extension) {
79
- const newName = filename.replace(/^\s+|\s+$/, '');
80
- if (hasPropsContent) {
81
- return provider_interface_1.CloudMetadata.newExtension(newName, extension);
45
+ dialog.callback(newMetadata);
46
+ close();
47
+ };
48
+ const handleIOSSave = async (blob) => {
49
+ const handled = await (0, ios_file_saver_1.handleIOSDownload)(blob, downloadFilename);
50
+ if (!handled) {
51
+ // Fall back to standard saveAs if iOS handling failed
52
+ (0, file_saver_1.saveAs)(blob, downloadFilename, { autoBom: true });
82
53
  }
83
- else {
84
- return provider_interface_1.CloudMetadata.withExtension(newName, extension);
54
+ completeDownload();
55
+ };
56
+ const confirm = (e, simulateClick) => {
57
+ if (confirmDisabled) {
58
+ e?.preventDefault();
59
+ return;
60
+ }
61
+ // Lazily create blob only when needed (not needed for browsers with download attribute support)
62
+ const getBlob = () => client.getDownloadBlob(content, includeShareInfo, mimeType);
63
+ // Handle iOS Safari specially due to blob URL bugs in iOS 18.2+
64
+ if ((0, ios_file_saver_1.isIOSSafari)()) {
65
+ e?.preventDefault();
66
+ handleIOSSave(getBlob());
67
+ return false;
85
68
  }
86
- },
87
- confirm(e, simulateClick) {
88
- if (!this.confirmDisabled()) {
89
- if (this.state.supportsDownloadAttribute) {
90
- this.downloadRef.href = this.props.client.getDownloadUrl(this.state.content, this.state.includeShareInfo, this.state.mimeType);
91
- if (simulateClick) {
92
- this.downloadRef.click();
93
- }
69
+ // Standard download handling for other browsers
70
+ if (supportsDownloadAttribute) {
71
+ if (downloadRef.current) {
72
+ downloadRef.current.href = client.getDownloadUrl(content, includeShareInfo, mimeType);
94
73
  }
95
- else {
96
- const blob = this.props.client.getDownloadBlob(this.state.content, this.state.includeShareInfo, this.state.mimeType);
97
- file_saver_1.default.saveAs(blob, this.state.downloadFilename, true);
98
- if (e != null) {
99
- e.preventDefault();
100
- }
74
+ if (simulateClick) {
75
+ downloadRef.current?.click();
101
76
  }
102
- const metadata = new provider_interface_1.CloudMetadata({
103
- name: this.state.downloadFilename.split('.')[0],
104
- type: provider_interface_1.CloudMetadata.File,
105
- parent: null,
106
- provider: this.props.provider
107
- });
108
- this.props.dialog.callback(metadata);
109
- this.props.close();
110
- // return value indicates whether to trigger href
111
- return this.state.supportsDownloadAttribute;
112
77
  }
113
78
  else {
114
- if (e != null) {
115
- e.preventDefault();
116
- }
79
+ (0, file_saver_1.saveAs)(getBlob(), downloadFilename, { autoBom: true });
80
+ e?.preventDefault();
81
+ }
82
+ completeDownload();
83
+ // return value indicates whether to trigger href
84
+ return supportsDownloadAttribute;
85
+ };
86
+ // Use a ref for the click handler so the DOM listener always calls the latest version
87
+ const confirmRef = (0, react_1.useRef)(confirm);
88
+ confirmRef.current = confirm;
89
+ // Fetch content on mount if not provided via props
90
+ (0, react_1.useEffect)(() => {
91
+ if (!hasPropsContent) {
92
+ client._event('getContent', { shared: client._sharedMetadata() }, (receivedContent) => {
93
+ const envelopedContent = provider_interface_1.cloudContentFactory.createEnvelopedCloudContent(receivedContent);
94
+ client.state?.currentContent?.copyMetadataTo(envelopedContent);
95
+ setGotContent(true);
96
+ setContent(envelopedContent);
97
+ });
117
98
  }
118
- },
119
- contextMenu(e) {
120
- this.downloadRef.href = this.props.client.getDownloadUrl(this.state.content, this.state.includeShareInfo, this.state.mimeType);
121
- },
122
- cancel() {
123
- this.props.close();
124
- },
125
- watchForEnter(e) {
126
- if ((e.keyCode === 13) && !this.confirmDisabled()) {
99
+ }, []); // eslint-disable-line react-hooks/exhaustive-deps
100
+ // Using the React onClick handler for the download button yielded odd behaviors
101
+ // in which the onClick handler got triggered multiple times and the default
102
+ // handler could not be prevented, presumably due to React's SyntheticEvent system.
103
+ // The solution here is to use standard browser event handlers.
104
+ (0, react_1.useEffect)(() => {
105
+ const downloadEl = downloadRef.current;
106
+ if (downloadEl) {
107
+ const handleClickEvent = (e) => confirmRef.current(e, false);
108
+ downloadEl.addEventListener('click', handleClickEvent);
109
+ return () => {
110
+ downloadEl.removeEventListener('click', handleClickEvent);
111
+ };
112
+ }
113
+ }, []);
114
+ const handleFilenameChange = () => {
115
+ const newFilename = filenameRef.current?.value ?? '';
116
+ setFilename(newFilename);
117
+ setDownloadFilename(getDownloadFilename(hasPropsContent, newFilename, extension));
118
+ };
119
+ const handleIncludeShareInfoChange = () => {
120
+ setIncludeShareInfo(prev => !prev);
121
+ };
122
+ const handleContextMenu = () => {
123
+ if (downloadRef.current) {
124
+ downloadRef.current.href = client.getDownloadUrl(content, includeShareInfo, mimeType);
125
+ }
126
+ };
127
+ const handleCancel = () => {
128
+ close();
129
+ };
130
+ const handleKeyDown = (e) => {
131
+ if (e.key === 'Enter' && !confirmDisabled) {
127
132
  e.preventDefault();
128
133
  e.stopPropagation();
129
- this.confirm(null, true);
134
+ confirm(null, true);
130
135
  }
131
- },
132
- confirmDisabled() {
133
- return (this.state.downloadFilename.length === 0) || !this.state.gotContent;
134
- },
135
- render() {
136
- const confirmDisabled = this.confirmDisabled();
137
- // for modern browsers
138
- const downloadAnchor = (a({
139
- href: '#',
140
- ref: (elt) => { return this.downloadRef = elt; },
141
- className: (confirmDisabled ? 'disabled' : ''),
142
- download: this.state.downloadFilename,
143
- onContextMenu: this.contextMenu
144
- }, (0, translate_1.default)('~FILE_DIALOG.DOWNLOAD')));
145
- // for Safari (or other non-modern browsers)
146
- const downloadButton = (button({
147
- ref: (elt) => { return this.downloadRef = elt; },
148
- className: (confirmDisabled ? 'disabled' : '')
149
- }, (0, translate_1.default)('~FILE_DIALOG.DOWNLOAD')));
150
- return (div({ className: 'dialogTab localFileSave' }, (input({ type: 'text', ref: ((elt) => { return this.filenameRef = elt; }), value: this.state.filename, placeholder: ((0, translate_1.default)("~FILE_DIALOG.FILENAME")), onChange: this.filenameChanged, onKeyDown: this.watchForEnter })), (div({ className: 'saveArea' }, this.state.shared && !this.state.hasPropsContent ?
151
- (div({ className: 'shareCheckbox' }, (input({ type: 'checkbox', ref: ((elt) => { return this.includeShareInfoRef = elt; }), value: this.state.includeShareInfo, onChange: this.includeShareInfoChanged })), ((0, translate_1.default)('~DOWNLOAD_DIALOG.INCLUDE_SHARE_INFO')))) : undefined)), (div({ className: 'buttons' }, this.state.supportsDownloadAttribute ? downloadAnchor : downloadButton, (button({ onClick: this.cancel }, ((0, translate_1.default)("~FILE_DIALOG.CANCEL"))))))));
152
- }
153
- });
154
- function __guard__(value, transform) {
155
- return (typeof value !== 'undefined' && value !== null) ? transform(value) : undefined;
156
- }
136
+ };
137
+ // for modern browsers
138
+ const downloadAnchor = ((0, jsx_runtime_1.jsx)("a", { href: "#", ref: downloadRef, className: confirmDisabled ? 'disabled' : 'default', download: downloadFilename, onContextMenu: handleContextMenu, children: (0, translate_1.default)('~FILE_DIALOG.DOWNLOAD') }));
139
+ // for Safari (or other non-modern browsers)
140
+ const downloadButton = ((0, jsx_runtime_1.jsx)("button", { ref: downloadRef, className: confirmDisabled ? 'disabled' : 'default', children: (0, translate_1.default)('~FILE_DIALOG.DOWNLOAD') }));
141
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "dialogTab localFileSave", children: [(0, jsx_runtime_1.jsx)("input", { type: "text", ref: filenameRef, "aria-label": (0, translate_1.default)("~FILE_DIALOG.FILENAME"), value: filename, placeholder: (0, translate_1.default)("~FILE_DIALOG.FILENAME"), onChange: handleFilenameChange, onKeyDown: handleKeyDown }), (0, jsx_runtime_1.jsx)("div", { className: "saveArea", children: shared && !hasPropsContent && ((0, jsx_runtime_1.jsxs)("label", { className: "shareCheckbox", children: [(0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: includeShareInfo, onChange: handleIncludeShareInfoChange }), (0, translate_1.default)('~DOWNLOAD_DIALOG.INCLUDE_SHARE_INFO')] })) }), (0, jsx_runtime_1.jsxs)("div", { className: "buttons", children: [supportsDownloadAttribute ? downloadAnchor : downloadButton, (0, jsx_runtime_1.jsx)("button", { onClick: handleCancel, children: (0, translate_1.default)("~FILE_DIALOG.CANCEL") })] })] }));
142
+ };
143
+ exports.default = LocalFileSaveTab;
157
144
  //# sourceMappingURL=local-file-tab-save-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-file-tab-save-view.js","sourceRoot":"","sources":["../../../src/code/views/local-file-tab-save-view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-file-tab-save-view.js","sourceRoot":"","sources":["../../../src/code/views/local-file-tab-save-view.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,58 @@
1
- /// <reference types="react" />
2
- declare const _default: import("react").ClassicComponentClass<unknown>;
3
- export default _default;
1
+ import React from 'react';
2
+ import { CFMUIMenuOptions } from '../app-options';
3
+ import { ProviderInterface } from '../providers/provider-interface';
4
+ interface FileStatus {
5
+ type: string;
6
+ message: string;
7
+ }
8
+ interface MenuBarProps {
9
+ client: {
10
+ appOptions: {
11
+ appIcon?: string;
12
+ appName?: string;
13
+ appFocusRingIcon?: string;
14
+ ui: {
15
+ menuBar?: {
16
+ subMenuExpandIcon?: string;
17
+ };
18
+ };
19
+ };
20
+ _ui: {
21
+ menu: {
22
+ options?: {
23
+ menuAnchorIcon?: string;
24
+ menuAnchorName?: string;
25
+ };
26
+ };
27
+ listen: (callback: (event: any) => void) => void;
28
+ };
29
+ state: {
30
+ metadata?: any;
31
+ };
32
+ setInitialFilename: (filename: string) => void;
33
+ rename: (metadata: any, filename: string) => void;
34
+ changeLanguage: (langCode: string, callback: () => void) => void;
35
+ };
36
+ provider?: ProviderInterface;
37
+ options: {
38
+ clientToolBarPosition?: string;
39
+ info?: string;
40
+ languageMenu?: {
41
+ options: Array<{
42
+ langCode: string;
43
+ label?: string;
44
+ flag?: string;
45
+ }>;
46
+ withBorder?: boolean;
47
+ onLangChanged?: () => void;
48
+ };
49
+ languageAnchorIcon?: string;
50
+ otherMenus?: CFMUIMenuOptions[];
51
+ onInfoClick?: () => void;
52
+ };
53
+ items: any[];
54
+ filename?: string;
55
+ fileStatus?: FileStatus;
56
+ }
57
+ declare const MenuBar: React.FC<MenuBarProps>;
58
+ export default MenuBar;