@concord-consortium/cloud-file-manager 2.1.0-pre.9 → 2.2.1

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 (276) 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.js +51 -79
  6. package/dist/cjs/client.js.map +1 -1
  7. package/dist/cjs/cloud-file-manager.js +2 -2
  8. package/dist/cjs/cloud-file-manager.js.map +1 -1
  9. package/dist/cjs/create-react-factory.d.ts +1 -0
  10. package/dist/cjs/create-react-factory.js.map +1 -1
  11. package/dist/cjs/providers/document-store-provider.js +7 -10
  12. package/dist/cjs/providers/document-store-provider.js.map +1 -1
  13. package/dist/cjs/providers/document-store-share-provider.js +4 -4
  14. package/dist/cjs/providers/document-store-share-provider.js.map +1 -1
  15. package/dist/cjs/providers/google-drive-provider.js +30 -34
  16. package/dist/cjs/providers/google-drive-provider.js.map +1 -1
  17. package/dist/cjs/providers/interactive-api-provider.d.ts +5 -2
  18. package/dist/cjs/providers/interactive-api-provider.js +27 -21
  19. package/dist/cjs/providers/interactive-api-provider.js.map +1 -1
  20. package/dist/cjs/providers/lara-provider.js +18 -26
  21. package/dist/cjs/providers/lara-provider.js.map +1 -1
  22. package/dist/cjs/providers/legacy-google-drive-provider.js +21 -27
  23. package/dist/cjs/providers/legacy-google-drive-provider.js.map +1 -1
  24. package/dist/cjs/providers/localstorage-provider.js +11 -13
  25. package/dist/cjs/providers/localstorage-provider.js.map +1 -1
  26. package/dist/cjs/providers/patchable-content.js +1 -1
  27. package/dist/cjs/providers/patchable-content.js.map +1 -1
  28. package/dist/cjs/providers/post-message-provider.js +1 -1
  29. package/dist/cjs/providers/post-message-provider.js.map +1 -1
  30. package/dist/cjs/providers/provider-interface.d.ts +1 -2
  31. package/dist/cjs/providers/provider-interface.js +11 -14
  32. package/dist/cjs/providers/provider-interface.js.map +1 -1
  33. package/dist/cjs/providers/readonly-provider.js +6 -6
  34. package/dist/cjs/providers/readonly-provider.js.map +1 -1
  35. package/dist/cjs/providers/s3-provider.js +1 -2
  36. package/dist/cjs/providers/s3-provider.js.map +1 -1
  37. package/dist/cjs/providers/s3-share-provider.js +1 -1
  38. package/dist/cjs/providers/s3-share-provider.js.map +1 -1
  39. package/dist/cjs/providers/test-provider.js +5 -5
  40. package/dist/cjs/providers/test-provider.js.map +1 -1
  41. package/dist/cjs/providers/url-provider.js +1 -1
  42. package/dist/cjs/providers/url-provider.js.map +1 -1
  43. package/dist/cjs/ui.js +2 -3
  44. package/dist/cjs/ui.js.map +1 -1
  45. package/dist/cjs/utils/focus-tracker.d.ts +3 -0
  46. package/dist/cjs/utils/focus-tracker.js +44 -0
  47. package/dist/cjs/utils/focus-tracker.js.map +1 -0
  48. package/dist/cjs/utils/ios-file-saver.d.ts +42 -0
  49. package/dist/cjs/utils/ios-file-saver.js +98 -0
  50. package/dist/cjs/utils/ios-file-saver.js.map +1 -0
  51. package/dist/cjs/utils/lang/en-US.json +9 -0
  52. package/dist/cjs/utils/s3-share-provider-token-service-helper.js +19 -13
  53. package/dist/cjs/utils/s3-share-provider-token-service-helper.js.map +1 -1
  54. package/dist/cjs/utils/url-params.js +1 -2
  55. package/dist/cjs/utils/url-params.js.map +1 -1
  56. package/dist/cjs/views/alert-dialog-view.d.ts +9 -3
  57. package/dist/cjs/views/alert-dialog-view.js +9 -24
  58. package/dist/cjs/views/alert-dialog-view.js.map +1 -1
  59. package/dist/cjs/views/app-view.d.ts +12 -5
  60. package/dist/cjs/views/app-view.js +167 -175
  61. package/dist/cjs/views/app-view.js.map +1 -1
  62. package/dist/cjs/views/blocking-modal-view.d.ts +9 -3
  63. package/dist/cjs/views/blocking-modal-view.js +8 -25
  64. package/dist/cjs/views/blocking-modal-view.js.map +1 -1
  65. package/dist/cjs/views/confirm-dialog-view.d.ts +14 -3
  66. package/dist/cjs/views/confirm-dialog-view.js +14 -31
  67. package/dist/cjs/views/confirm-dialog-view.js.map +1 -1
  68. package/dist/cjs/views/download-dialog-view.d.ts +12 -3
  69. package/dist/cjs/views/download-dialog-view.js +36 -63
  70. package/dist/cjs/views/download-dialog-view.js.map +1 -1
  71. package/dist/cjs/views/dropdown-anchors.d.ts +2 -2
  72. package/dist/cjs/views/dropdown-anchors.js +4 -10
  73. package/dist/cjs/views/dropdown-anchors.js.map +1 -1
  74. package/dist/cjs/views/dropdown-view.d.ts +20 -3
  75. package/dist/cjs/views/dropdown-view.js +40 -157
  76. package/dist/cjs/views/dropdown-view.js.map +1 -1
  77. package/dist/cjs/views/file-dialog-tab-view.d.ts +24 -2
  78. package/dist/cjs/views/file-dialog-tab-view.js +255 -315
  79. package/dist/cjs/views/file-dialog-tab-view.js.map +1 -1
  80. package/dist/cjs/views/icons/spin.d.ts +2 -2
  81. package/dist/cjs/views/icons/spin.js +2 -39
  82. package/dist/cjs/views/icons/spin.js.map +1 -1
  83. package/dist/cjs/views/import-tabbed-dialog-view.d.ts +12 -3
  84. package/dist/cjs/views/import-tabbed-dialog-view.js +33 -65
  85. package/dist/cjs/views/import-tabbed-dialog-view.js.map +1 -1
  86. package/dist/cjs/views/local-file-tab-list-view.d.ts +14 -3
  87. package/dist/cjs/views/local-file-tab-list-view.js +57 -66
  88. package/dist/cjs/views/local-file-tab-list-view.js.map +1 -1
  89. package/dist/cjs/views/local-file-tab-save-view.d.ts +32 -3
  90. package/dist/cjs/views/local-file-tab-save-view.js +125 -138
  91. package/dist/cjs/views/local-file-tab-save-view.js.map +1 -1
  92. package/dist/cjs/views/menu-bar-view.d.ts +58 -3
  93. package/dist/cjs/views/menu-bar-view.js +196 -183
  94. package/dist/cjs/views/menu-bar-view.js.map +1 -1
  95. package/dist/cjs/views/modal-dialog-view.js +7 -8
  96. package/dist/cjs/views/modal-dialog-view.js.map +1 -1
  97. package/dist/cjs/views/modal-tabbed-dialog-view.d.ts +15 -3
  98. package/dist/cjs/views/modal-tabbed-dialog-view.js +5 -17
  99. package/dist/cjs/views/modal-tabbed-dialog-view.js.map +1 -1
  100. package/dist/cjs/views/modal-view.d.ts +5 -32
  101. package/dist/cjs/views/modal-view.js +20 -64
  102. package/dist/cjs/views/modal-view.js.map +1 -1
  103. package/dist/cjs/views/provider-tabbed-dialog-view.d.ts +23 -3
  104. package/dist/cjs/views/provider-tabbed-dialog-view.js +43 -51
  105. package/dist/cjs/views/provider-tabbed-dialog-view.js.map +1 -1
  106. package/dist/cjs/views/rename-dialog-view.d.ts +8 -3
  107. package/dist/cjs/views/rename-dialog-view.js +25 -51
  108. package/dist/cjs/views/rename-dialog-view.js.map +1 -1
  109. package/dist/cjs/views/select-interactive-state-dialog-view.d.ts +1 -1
  110. package/dist/cjs/views/select-interactive-state-dialog-view.js +4 -30
  111. package/dist/cjs/views/select-interactive-state-dialog-view.js.map +1 -1
  112. package/dist/cjs/views/select-provider-dialog-tab-view.d.ts +6 -1
  113. package/dist/cjs/views/select-provider-dialog-tab-view.js +4 -12
  114. package/dist/cjs/views/select-provider-dialog-tab-view.js.map +1 -1
  115. package/dist/cjs/views/share-dialog-status-view.js +6 -13
  116. package/dist/cjs/views/share-dialog-status-view.js.map +1 -1
  117. package/dist/cjs/views/share-dialog-tabs-view.js +22 -61
  118. package/dist/cjs/views/share-dialog-tabs-view.js.map +1 -1
  119. package/dist/cjs/views/share-dialog-view.d.ts +1 -1
  120. package/dist/cjs/views/share-dialog-view.js +15 -21
  121. package/dist/cjs/views/share-dialog-view.js.map +1 -1
  122. package/dist/cjs/views/share-loading-view.d.ts +2 -2
  123. package/dist/cjs/views/share-loading-view.js +2 -4
  124. package/dist/cjs/views/share-loading-view.js.map +1 -1
  125. package/dist/cjs/views/tabbed-panel-view.d.ts +16 -3
  126. package/dist/cjs/views/tabbed-panel-view.js +25 -75
  127. package/dist/cjs/views/tabbed-panel-view.js.map +1 -1
  128. package/dist/cjs/views/url-tab-view.d.ts +12 -3
  129. package/dist/cjs/views/url-tab-view.js +31 -46
  130. package/dist/cjs/views/url-tab-view.js.map +1 -1
  131. package/dist/css/app.css +1 -1
  132. package/dist/css/app.css.map +1 -1
  133. package/dist/esm/app-options.d.ts +2 -0
  134. package/dist/esm/client.js +51 -79
  135. package/dist/esm/client.js.map +1 -1
  136. package/dist/esm/cloud-file-manager.js +2 -2
  137. package/dist/esm/cloud-file-manager.js.map +1 -1
  138. package/dist/esm/create-react-factory.d.ts +1 -0
  139. package/dist/esm/create-react-factory.js.map +1 -1
  140. package/dist/esm/providers/document-store-provider.js +7 -10
  141. package/dist/esm/providers/document-store-provider.js.map +1 -1
  142. package/dist/esm/providers/document-store-share-provider.js +4 -4
  143. package/dist/esm/providers/document-store-share-provider.js.map +1 -1
  144. package/dist/esm/providers/google-drive-provider.js +30 -34
  145. package/dist/esm/providers/google-drive-provider.js.map +1 -1
  146. package/dist/esm/providers/interactive-api-provider.d.ts +5 -2
  147. package/dist/esm/providers/interactive-api-provider.js +25 -20
  148. package/dist/esm/providers/interactive-api-provider.js.map +1 -1
  149. package/dist/esm/providers/lara-provider.js +18 -26
  150. package/dist/esm/providers/lara-provider.js.map +1 -1
  151. package/dist/esm/providers/legacy-google-drive-provider.js +21 -27
  152. package/dist/esm/providers/legacy-google-drive-provider.js.map +1 -1
  153. package/dist/esm/providers/localstorage-provider.js +11 -13
  154. package/dist/esm/providers/localstorage-provider.js.map +1 -1
  155. package/dist/esm/providers/patchable-content.js +1 -1
  156. package/dist/esm/providers/patchable-content.js.map +1 -1
  157. package/dist/esm/providers/post-message-provider.js +1 -1
  158. package/dist/esm/providers/post-message-provider.js.map +1 -1
  159. package/dist/esm/providers/provider-interface.d.ts +1 -2
  160. package/dist/esm/providers/provider-interface.js +11 -14
  161. package/dist/esm/providers/provider-interface.js.map +1 -1
  162. package/dist/esm/providers/readonly-provider.js +6 -6
  163. package/dist/esm/providers/readonly-provider.js.map +1 -1
  164. package/dist/esm/providers/s3-provider.js +1 -2
  165. package/dist/esm/providers/s3-provider.js.map +1 -1
  166. package/dist/esm/providers/s3-share-provider.js +1 -1
  167. package/dist/esm/providers/s3-share-provider.js.map +1 -1
  168. package/dist/esm/providers/test-provider.js +5 -5
  169. package/dist/esm/providers/test-provider.js.map +1 -1
  170. package/dist/esm/providers/url-provider.js +1 -1
  171. package/dist/esm/providers/url-provider.js.map +1 -1
  172. package/dist/esm/ui.js +2 -3
  173. package/dist/esm/ui.js.map +1 -1
  174. package/dist/esm/utils/focus-tracker.d.ts +3 -0
  175. package/dist/esm/utils/focus-tracker.js +38 -0
  176. package/dist/esm/utils/focus-tracker.js.map +1 -0
  177. package/dist/esm/utils/ios-file-saver.d.ts +42 -0
  178. package/dist/esm/utils/ios-file-saver.js +91 -0
  179. package/dist/esm/utils/ios-file-saver.js.map +1 -0
  180. package/dist/esm/utils/lang/en-US.json +9 -0
  181. package/dist/esm/utils/s3-share-provider-token-service-helper.js +19 -10
  182. package/dist/esm/utils/s3-share-provider-token-service-helper.js.map +1 -1
  183. package/dist/esm/utils/url-params.js +1 -2
  184. package/dist/esm/utils/url-params.js.map +1 -1
  185. package/dist/esm/views/alert-dialog-view.d.ts +9 -3
  186. package/dist/esm/views/alert-dialog-view.js +10 -25
  187. package/dist/esm/views/alert-dialog-view.js.map +1 -1
  188. package/dist/esm/views/app-view.d.ts +12 -5
  189. package/dist/esm/views/app-view.js +176 -184
  190. package/dist/esm/views/app-view.js.map +1 -1
  191. package/dist/esm/views/blocking-modal-view.d.ts +9 -3
  192. package/dist/esm/views/blocking-modal-view.js +9 -26
  193. package/dist/esm/views/blocking-modal-view.js.map +1 -1
  194. package/dist/esm/views/confirm-dialog-view.d.ts +14 -3
  195. package/dist/esm/views/confirm-dialog-view.js +15 -32
  196. package/dist/esm/views/confirm-dialog-view.js.map +1 -1
  197. package/dist/esm/views/download-dialog-view.d.ts +12 -3
  198. package/dist/esm/views/download-dialog-view.js +36 -63
  199. package/dist/esm/views/download-dialog-view.js.map +1 -1
  200. package/dist/esm/views/dropdown-anchors.d.ts +2 -2
  201. package/dist/esm/views/dropdown-anchors.js +4 -7
  202. package/dist/esm/views/dropdown-anchors.js.map +1 -1
  203. package/dist/esm/views/dropdown-view.d.ts +20 -3
  204. package/dist/esm/views/dropdown-view.js +40 -154
  205. package/dist/esm/views/dropdown-view.js.map +1 -1
  206. package/dist/esm/views/file-dialog-tab-view.d.ts +24 -2
  207. package/dist/esm/views/file-dialog-tab-view.js +256 -316
  208. package/dist/esm/views/file-dialog-tab-view.js.map +1 -1
  209. package/dist/esm/views/icons/spin.d.ts +2 -2
  210. package/dist/esm/views/icons/spin.js +2 -36
  211. package/dist/esm/views/icons/spin.js.map +1 -1
  212. package/dist/esm/views/import-tabbed-dialog-view.d.ts +12 -3
  213. package/dist/esm/views/import-tabbed-dialog-view.js +36 -68
  214. package/dist/esm/views/import-tabbed-dialog-view.js.map +1 -1
  215. package/dist/esm/views/local-file-tab-list-view.d.ts +14 -3
  216. package/dist/esm/views/local-file-tab-list-view.js +57 -66
  217. package/dist/esm/views/local-file-tab-list-view.js.map +1 -1
  218. package/dist/esm/views/local-file-tab-save-view.d.ts +32 -3
  219. package/dist/esm/views/local-file-tab-save-view.js +125 -138
  220. package/dist/esm/views/local-file-tab-save-view.js.map +1 -1
  221. package/dist/esm/views/menu-bar-view.d.ts +58 -3
  222. package/dist/esm/views/menu-bar-view.js +198 -185
  223. package/dist/esm/views/menu-bar-view.js.map +1 -1
  224. package/dist/esm/views/modal-dialog-view.js +7 -8
  225. package/dist/esm/views/modal-dialog-view.js.map +1 -1
  226. package/dist/esm/views/modal-tabbed-dialog-view.d.ts +15 -3
  227. package/dist/esm/views/modal-tabbed-dialog-view.js +7 -19
  228. package/dist/esm/views/modal-tabbed-dialog-view.js.map +1 -1
  229. package/dist/esm/views/modal-view.d.ts +5 -32
  230. package/dist/esm/views/modal-view.js +21 -61
  231. package/dist/esm/views/modal-view.js.map +1 -1
  232. package/dist/esm/views/provider-tabbed-dialog-view.d.ts +23 -3
  233. package/dist/esm/views/provider-tabbed-dialog-view.js +46 -54
  234. package/dist/esm/views/provider-tabbed-dialog-view.js.map +1 -1
  235. package/dist/esm/views/rename-dialog-view.d.ts +8 -3
  236. package/dist/esm/views/rename-dialog-view.js +25 -51
  237. package/dist/esm/views/rename-dialog-view.js.map +1 -1
  238. package/dist/esm/views/select-interactive-state-dialog-view.d.ts +1 -1
  239. package/dist/esm/views/select-interactive-state-dialog-view.js +4 -30
  240. package/dist/esm/views/select-interactive-state-dialog-view.js.map +1 -1
  241. package/dist/esm/views/select-provider-dialog-tab-view.d.ts +6 -1
  242. package/dist/esm/views/select-provider-dialog-tab-view.js +4 -9
  243. package/dist/esm/views/select-provider-dialog-tab-view.js.map +1 -1
  244. package/dist/esm/views/share-dialog-status-view.js +6 -13
  245. package/dist/esm/views/share-dialog-status-view.js.map +1 -1
  246. package/dist/esm/views/share-dialog-tabs-view.js +22 -61
  247. package/dist/esm/views/share-dialog-tabs-view.js.map +1 -1
  248. package/dist/esm/views/share-dialog-view.d.ts +1 -1
  249. package/dist/esm/views/share-dialog-view.js +15 -21
  250. package/dist/esm/views/share-dialog-view.js.map +1 -1
  251. package/dist/esm/views/share-loading-view.d.ts +2 -2
  252. package/dist/esm/views/share-loading-view.js +2 -4
  253. package/dist/esm/views/share-loading-view.js.map +1 -1
  254. package/dist/esm/views/tabbed-panel-view.d.ts +16 -3
  255. package/dist/esm/views/tabbed-panel-view.js +25 -72
  256. package/dist/esm/views/tabbed-panel-view.js.map +1 -1
  257. package/dist/esm/views/url-tab-view.d.ts +12 -3
  258. package/dist/esm/views/url-tab-view.js +31 -46
  259. package/dist/esm/views/url-tab-view.js.map +1 -1
  260. package/dist/examples/codap3-local-file.html +42 -0
  261. package/dist/examples/index.html +2 -0
  262. package/dist/examples/local-json-save.html +36 -0
  263. package/dist/index.html +1 -1
  264. package/dist/js/app.js +1 -1
  265. package/dist/js/app.js.LICENSE.txt +41 -11
  266. package/dist/js/app.js.map +1 -1
  267. package/dist/js/globals.js +1 -1
  268. package/dist/js/globals.js.map +1 -1
  269. package/package.json +40 -36
  270. package/readme.md +4 -0
  271. package/dist/cjs/lib/file-saver.d.ts +0 -2
  272. package/dist/cjs/lib/file-saver.js +0 -164
  273. package/dist/cjs/lib/file-saver.js.map +0 -1
  274. package/dist/esm/lib/file-saver.d.ts +0 -2
  275. package/dist/esm/lib/file-saver.js +0 -164
  276. package/dist/esm/lib/file-saver.js.map +0 -1
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Utilities for detecting iOS Safari and handling iOS-specific file download issues.
3
+ *
4
+ * iOS Safari 18.2+ has a bug where blob URLs created with URL.createObjectURL()
5
+ * don't properly save to the Files app - they get stuck in Safari's temporary
6
+ * download cache. This module provides detection and a data URL workaround.
7
+ */
8
+ /**
9
+ * Detects if the current browser is Safari on iOS.
10
+ * This includes iPad in desktop mode (which reports as "Macintosh" but has touch).
11
+ */
12
+ export function isIOSSafari() {
13
+ if (typeof navigator === 'undefined')
14
+ return false;
15
+ const ua = navigator.userAgent;
16
+ // Check for iOS devices (iPhone, iPad, iPod)
17
+ // Also check for iPad in desktop mode (reports as Macintosh but has touch capability)
18
+ // Regular Macs report maxTouchPoints = 0, iPads report 5
19
+ const isIOS = /iPad|iPhone|iPod/.test(ua) ||
20
+ (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 0);
21
+ // Check for Safari (not Chrome, Firefox, Edge, etc. on iOS)
22
+ // All iOS browsers use WebKit, but we specifically want Safari's behavior
23
+ const isSafari = /Safari/.test(ua) && !/Chrome|CriOS|FxiOS|EdgiOS|OPiOS/.test(ua);
24
+ return isIOS && isSafari;
25
+ }
26
+ /**
27
+ * Converts a Blob to a data URL using FileReader.
28
+ * This is a workaround for iOS Safari's blob URL issues.
29
+ *
30
+ * @param blob - The blob to convert
31
+ * @returns Promise<string> - The data URL
32
+ */
33
+ export function blobToDataUrl(blob) {
34
+ return new Promise((resolve, reject) => {
35
+ const reader = new FileReader();
36
+ reader.onloadend = () => {
37
+ if (typeof reader.result === 'string') {
38
+ resolve(reader.result);
39
+ }
40
+ else {
41
+ reject(new Error('FileReader did not return a string'));
42
+ }
43
+ };
44
+ reader.onerror = () => reject(reader.error);
45
+ reader.readAsDataURL(blob);
46
+ });
47
+ }
48
+ /**
49
+ * Downloads a file using a data URL approach.
50
+ * Creates a temporary anchor element with the data URL and triggers a click.
51
+ *
52
+ * Note: The `download` attribute behavior varies by browser for data URLs.
53
+ * Testing on iOS Safari 18.7 showed the filename is honored, though older
54
+ * versions may use a generic name. Desktop browsers generally respect the
55
+ * filename value.
56
+ *
57
+ * @param blob - The file content as a Blob
58
+ * @param filename - The filename for the download
59
+ */
60
+ export async function downloadViaDataUrl(blob, filename) {
61
+ const dataUrl = await blobToDataUrl(blob);
62
+ // Create a temporary link and click it
63
+ const link = document.createElement('a');
64
+ link.href = dataUrl;
65
+ link.download = filename;
66
+ link.style.display = 'none';
67
+ document.body.appendChild(link);
68
+ link.click();
69
+ document.body.removeChild(link);
70
+ }
71
+ /**
72
+ * Handles file download on iOS Safari, working around the blob URL bug.
73
+ * Uses data URL approach which triggers Safari's standard download dialog.
74
+ *
75
+ * @param blob - The file content as a Blob
76
+ * @param filename - The filename to use
77
+ * @returns Promise<boolean> - true if handled, false if should use default behavior
78
+ */
79
+ export async function handleIOSDownload(blob, filename) {
80
+ if (!isIOSSafari())
81
+ return false;
82
+ try {
83
+ await downloadViaDataUrl(blob, filename);
84
+ return true;
85
+ }
86
+ catch (err) {
87
+ // If data URL approach fails, let the caller use default behavior
88
+ return false;
89
+ }
90
+ }
91
+ //# sourceMappingURL=ios-file-saver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios-file-saver.js","sourceRoot":"","sources":["../../../src/code/utils/ios-file-saver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,KAAK,CAAA;IAElD,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAA;IAE9B,6CAA6C;IAC7C,sFAAsF;IACtF,yDAAyD;IACzD,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,CAAC,SAAS,CAAC,QAAQ,KAAK,UAAU,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC,CAAA;IAErE,4DAA4D;IAC5D,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEjF,OAAO,KAAK,IAAI,QAAQ,CAAA;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAU;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAA;QAC/B,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE;YACtB,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACtC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YACxB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAA;YACzD,CAAC;QACH,CAAC,CAAA;QACD,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3C,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAU,EAAE,QAAgB;IACnE,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAA;IAEzC,uCAAuC;IACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IACxC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAA;IACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IACxB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAC/B,IAAI,CAAC,KAAK,EAAE,CAAA;IACZ,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;AACjC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAU,EAAE,QAAgB;IAClE,IAAI,CAAC,WAAW,EAAE;QAAE,OAAO,KAAK,CAAA;IAEhC,IAAI,CAAC;QACH,MAAM,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACxC,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,kEAAkE;QAClE,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
@@ -1,5 +1,11 @@
1
1
  {
2
2
  "~MENUBAR.UNTITLED_DOCUMENT": "Untitled Document",
3
+ "~MENUBAR.APP_IFRAME_TITLE": "Application",
4
+ "~MENUBAR.TOOLBAR_LABEL": "Menu bar",
5
+ "~MENUBAR.ABOUT_APP": "About %{appName}",
6
+ "~MENUBAR.ABOUT": "About this application",
7
+ "~MENUBAR.RENAME_DOCUMENT": "Document name",
8
+ "~MENUBAR.RENAME_FILENAME": "Rename %{filename}",
3
9
  "~MENU.NEW": "New",
4
10
  "~MENU.OPEN": "Open ...",
5
11
  "~MENU.CLOSE": "Close",
@@ -57,7 +63,9 @@
57
63
  "~FILE_DIALOG.LOAD_FOLDER_ERROR": "*** Error loading folder contents ***",
58
64
  "~FILE_DIALOG.DOWNLOAD": "Download",
59
65
  "~FILE_DIALOG.FILTER": "Filter results...",
66
+ "~FILE_DIALOG.CLEAR_FILTER": "Clear filter",
60
67
  "~FILE_DIALOG.OVERWRITE_CONFIRM": "Are you sure you want to overwrite %{filename}?",
68
+ "~FILE_DIALOG.FILE_NOT_FOUND": "%{filename} not found",
61
69
  "~DOWNLOAD_DIALOG.DOWNLOAD": "Download",
62
70
  "~DOWNLOAD_DIALOG.CANCEL": "Cancel",
63
71
  "~DOWNLOAD_DIALOG.INCLUDE_SHARE_INFO": "Include sharing information in downloaded file",
@@ -122,6 +130,7 @@
122
130
  "~GOOGLE_DRIVE.ERROR_MISSING_APPID": "Missing required appId in googleDrive provider options",
123
131
  "~GOOGLE_DRIVE.UNABLE_TO_UPLOAD": "Unable to upload file",
124
132
  "~GOOGLE_DRIVE.UNABLE_TO_UPLOAD_MSG": "Unable to upload file: %{message}",
133
+ "~GOOGLE_DRIVE.UNABLE_TO_LOAD": "Unable to load file",
125
134
  "~GOOGLE_DRIVE.MISSING_SCOPES_MESSAGE": "Please try logging in again and check all the boxes when prompted in the popup",
126
135
  "~GOOGLE_DRIVE.USERNAME_LABEL": "Username:",
127
136
  "~GOOGLE_DRIVE.SELECT_DIFFERENT_ACCOUNT": "Select Different Google Account",
@@ -1,5 +1,5 @@
1
1
  import { TokenServiceClient } from "@concord-consortium/token-service";
2
- import S3 from "aws-sdk/clients/s3";
2
+ import { S3Client, PutObjectCommand, DeleteObjectCommand } from "@aws-sdk/client-s3";
3
3
  import { DEFAULT_MAX_AGE_SECONDS, getTokenServiceEnv, TOKEN_SERVICE_TOOL_NAME, TOKEN_SERVICE_TOOL_TYPE, S3_SHARED_DOC_PATH_LEGACY } from './config';
4
4
  // Token Service creates a (sub)folder in a S3 bucket and gives access to it. Multiple files can be created there,
5
5
  // but it's not desired in CFM. In fact each new subfolder should include just one file - CFM document.
@@ -24,9 +24,12 @@ export const createFile = async ({ fileContent }) => {
24
24
  // S3 configuration is based both on resource and credentials info.
25
25
  const { bucket, region } = resource;
26
26
  const { accessKeyId, secretAccessKey, sessionToken } = credentials;
27
- const s3 = new S3({ region, accessKeyId, secretAccessKey, sessionToken });
27
+ const s3 = new S3Client({
28
+ region,
29
+ credentials: { accessKeyId, secretAccessKey, sessionToken }
30
+ });
28
31
  const publicPath = client.getPublicS3Path(resource, FILENAME);
29
- await s3.upload({
32
+ await s3.send(new PutObjectCommand({
30
33
  Bucket: bucket,
31
34
  Key: publicPath,
32
35
  Body: fileContent,
@@ -34,7 +37,7 @@ export const createFile = async ({ fileContent }) => {
34
37
  ContentEncoding: "UTF-8",
35
38
  // Remember to update "~SHARE_UPDATE.MESSAGE" message when caching time is updated.
36
39
  CacheControl: `max-age=${DEFAULT_MAX_AGE_SECONDS}`
37
- }).promise();
40
+ }));
38
41
  return {
39
42
  publicUrl: client.getPublicS3Url(resource, FILENAME),
40
43
  resourceId: resource.id,
@@ -48,9 +51,12 @@ export const updateFile = async ({ newFileContent, resourceId, readWriteToken })
48
51
  // S3 configuration is based both on resource and credentials info.
49
52
  const { bucket, region } = resource;
50
53
  const { accessKeyId, secretAccessKey, sessionToken } = credentials;
51
- const s3 = new S3({ region, accessKeyId, secretAccessKey, sessionToken });
54
+ const s3 = new S3Client({
55
+ region,
56
+ credentials: { accessKeyId, secretAccessKey, sessionToken }
57
+ });
52
58
  const publicPath = client.getPublicS3Path(resource, FILENAME);
53
- await s3.upload({
59
+ await s3.send(new PutObjectCommand({
54
60
  Bucket: bucket,
55
61
  Key: publicPath,
56
62
  Body: newFileContent,
@@ -58,7 +64,7 @@ export const updateFile = async ({ newFileContent, resourceId, readWriteToken })
58
64
  ContentEncoding: "UTF-8",
59
65
  // Remember to update "~SHARE_UPDATE.MESSAGE" message when caching time is updated.
60
66
  CacheControl: `max-age=${DEFAULT_MAX_AGE_SECONDS}`
61
- }).promise();
67
+ }));
62
68
  };
63
69
  export const deleteFile = async ({ resourceId, readWriteToken }) => {
64
70
  const client = new TokenServiceClient({ env: getTokenServiceEnv() });
@@ -67,12 +73,15 @@ export const deleteFile = async ({ resourceId, readWriteToken }) => {
67
73
  // S3 configuration is based both on resource and credentials info.
68
74
  const { bucket, region } = resource;
69
75
  const { accessKeyId, secretAccessKey, sessionToken } = credentials;
70
- const s3 = new S3({ region, accessKeyId, secretAccessKey, sessionToken });
76
+ const s3 = new S3Client({
77
+ region,
78
+ credentials: { accessKeyId, secretAccessKey, sessionToken }
79
+ });
71
80
  const publicPath = client.getPublicS3Path(resource, FILENAME);
72
- await s3.deleteObject({
81
+ await s3.send(new DeleteObjectCommand({
73
82
  Bucket: bucket,
74
83
  Key: publicPath,
75
- }).promise();
84
+ }));
76
85
  };
77
86
  const getBaseDocumentUrl = () => {
78
87
  const stagingBase = "https://token-service-files.concordqa.org";
@@ -1 +1 @@
1
- {"version":3,"file":"s3-share-provider-token-service-helper.js","sourceRoot":"","sources":["../../../src/code/utils/s3-share-provider-token-service-helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"s3-share-provider-token-service-helper.js","sourceRoot":"","sources":["../../../src/code/utils/s3-share-provider-token-service-helper.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
- var _a;
2
1
  // http://stackoverflow.com/a/2880929
3
2
  var urlParams = {};
4
- if ((_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.search) {
3
+ if (window?.location?.search) {
5
4
  (window.onpopstate = popState)();
6
5
  }
7
6
  function popState() {
@@ -1 +1 @@
1
- {"version":3,"file":"url-params.js","sourceRoot":"","sources":["../../../src/code/utils/url-params.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,IAAI,SAAS,GAA2B,EAAE,CAAA;AAC1C,IAAI,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,0CAAE,MAAM,EAAE,CAAC;IAC7B,CAAC,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAA;AAClC,CAAC;AAED,SAAS,QAAQ;IACf,IAAI,KAAK,EACL,EAAE,GAAO,KAAK,EAAG,mDAAmD;IACpE,MAAM,GAAG,oBAAoB,EAC7B,MAAM,GAAG,UAAU,CAAM,IAAI,OAAO,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA,CAAC,CAAC,EAC5E,KAAK,GAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAEhD,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACpD,CAAC;AAED,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"url-params.js","sourceRoot":"","sources":["../../../src/code/utils/url-params.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,IAAI,SAAS,GAA2B,EAAE,CAAA;AAC1C,IAAI,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAA;AAClC,CAAC;AAED,SAAS,QAAQ;IACf,IAAI,KAAK,EACL,EAAE,GAAO,KAAK,EAAG,mDAAmD;IACpE,MAAM,GAAG,oBAAoB,EAC7B,MAAM,GAAG,UAAU,CAAM,IAAI,OAAO,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA,CAAC,CAAC,EAC5E,KAAK,GAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAEhD,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACpD,CAAC;AAED,eAAe,SAAS,CAAA"}
@@ -1,3 +1,9 @@
1
- /// <reference types="react" />
2
- declare const _default: import("react").ClassicComponentClass<unknown>;
3
- export default _default;
1
+ import React from 'react';
2
+ interface AlertDialogViewProps {
3
+ title?: string;
4
+ message: string;
5
+ callback?: () => void;
6
+ close?: () => void;
7
+ }
8
+ declare const AlertDialogView: React.FC<AlertDialogViewProps>;
9
+ export default AlertDialogView;
@@ -1,27 +1,12 @@
1
- // TODO: This file was created by bulk-decaffeinate.
2
- // Sanity-check the conversion and remove this comment.
3
- /*
4
- * decaffeinate suggestions:
5
- * DS102: Remove unnecessary code created because of implicit returns
6
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
7
- */
8
- import createReactClass from 'create-react-class';
9
- import ReactDOMFactories from 'react-dom-factories';
10
- import { createReactFactory } from "../create-react-factory";
11
- import modalDialogView from './modal-dialog-view';
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import ModalDialogView from './modal-dialog-view';
12
3
  import tr from '../utils/translate';
13
- const { div, button } = ReactDOMFactories;
14
- const ModalDialog = createReactFactory(modalDialogView);
15
- export default createReactClass({
16
- displayName: 'AlertDialogView',
17
- close() {
18
- if (typeof this.props.close === 'function') {
19
- this.props.close();
20
- }
21
- return (typeof this.props.callback === 'function' ? this.props.callback() : undefined);
22
- },
23
- render() {
24
- return (ModalDialog({ title: this.props.title || (tr('~ALERT_DIALOG.TITLE')), close: this.close, zIndex: 500 }, (div({ className: 'alert-dialog' }, (div({ className: 'alert-dialog-message', dangerouslySetInnerHTML: { __html: this.props.message } })), (div({ className: 'buttons' }, (button({ onClick: this.close }, tr('~ALERT_DIALOG.CLOSE')))))))));
25
- }
26
- });
4
+ const AlertDialogView = ({ title, message, callback, close }) => {
5
+ const handleClose = () => {
6
+ close?.();
7
+ callback?.();
8
+ };
9
+ return (_jsx(ModalDialogView, { title: title || tr('~ALERT_DIALOG.TITLE'), close: handleClose, zIndex: 500, children: _jsxs("div", { className: "alert-dialog", children: [_jsx("div", { className: "alert-dialog-message", dangerouslySetInnerHTML: { __html: message } }), _jsx("div", { className: "buttons", children: _jsx("button", { onClick: handleClose, children: tr('~ALERT_DIALOG.CLOSE') }) })] }) }));
10
+ };
11
+ export default AlertDialogView;
27
12
  //# sourceMappingURL=alert-dialog-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"alert-dialog-view.js","sourceRoot":"","sources":["../../../src/code/views/alert-dialog-view.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,uDAAuD;AACvD;;;;GAIG;AAEH,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,iBAAiB,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,eAAe,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,MAAO,oBAAoB,CAAA;AAEpC,MAAM,EAAC,GAAG,EAAE,MAAM,EAAC,GAAG,iBAAiB,CAAA;AACvC,MAAM,WAAW,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAA;AAEvD,eAAe,gBAAgB,CAAC;IAE9B,WAAW,EAAE,iBAAiB;IAE9B,KAAK;QACH,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QACpB,CAAC;QACD,OAAO,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACxF,CAAC;IAED,MAAM;QACJ,OAAO,CAAC,WAAW,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAC,EAC1G,CAAC,GAAG,CAAC,EAAC,SAAS,EAAE,cAAc,EAAC,EAC9B,CAAC,GAAG,CAAC,EAAC,SAAS,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAC,EAAC,CAAC,CAAC,EACjG,CAAC,GAAG,CAAC,EAAC,SAAS,EAAE,SAAS,EAAC,EACzB,CAAC,MAAM,CAAC,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAC3D,CAAC,CACH,CAAC,CACH,CAAC,CAAA;IACJ,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"alert-dialog-view.js","sourceRoot":"","sources":["../../../src/code/views/alert-dialog-view.tsx"],"names":[],"mappings":";AACA,OAAO,eAAe,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,MAAM,oBAAoB,CAAA;AASnC,MAAM,eAAe,GAAmC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;IAC9F,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,KAAK,EAAE,EAAE,CAAA;QACT,QAAQ,EAAE,EAAE,CAAA;IACd,CAAC,CAAA;IAED,OAAO,CACL,KAAC,eAAe,IAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,YACzF,eAAK,SAAS,EAAC,cAAc,aAC3B,cAAK,SAAS,EAAC,sBAAsB,EAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAI,EACtF,cAAK,SAAS,EAAC,SAAS,YACtB,iBAAQ,OAAO,EAAE,WAAW,YAAG,EAAE,CAAC,qBAAqB,CAAC,GAAU,GAC9D,IACF,GACU,CACnB,CAAA;AACH,CAAC,CAAA;AAED,eAAe,eAAe,CAAA"}
@@ -1,7 +1,8 @@
1
1
  import React from "react";
2
2
  import { CloudMetadata } from "../providers/provider-interface";
3
3
  import { CFMMenuBarOptions, CFMMenuItem, CFMShareDialogSettings, CFMUIOptions } from "../app-options";
4
- import { CloudFileManagerClient } from "../client";
4
+ import { CloudFileManagerClient, CloudFileManagerClientEvent } from "../client";
5
+ import { CloudFileManagerUIEvent } from "../ui";
5
6
  import { SelectInteractiveStateDialogProps } from "./select-interactive-state-dialog-view";
6
7
  interface IAppViewProps {
7
8
  client?: CloudFileManagerClient;
@@ -36,14 +37,20 @@ interface IAppViewState {
36
37
  declare class AppView extends React.Component<IAppViewProps, IAppViewState> {
37
38
  displayName: string;
38
39
  state: IAppViewState;
39
- constructor(props: any);
40
- getFilename(metadata: CloudMetadata): string;
40
+ constructor(props: IAppViewProps);
41
+ getFilename(metadata?: CloudMetadata): string;
42
+ getFileStatus(event: CloudFileManagerClientEvent): {
43
+ message: string;
44
+ type: string;
45
+ } | undefined;
46
+ handleUIEvent(event: CloudFileManagerUIEvent): void;
41
47
  componentDidMount(): void;
42
48
  _getMenuItemIndex: (key: string) => number;
43
49
  closeDialogs: () => void;
44
50
  closeAlert: () => void;
45
51
  closeConfirm: () => void;
46
- renderDialogs: () => React.DetailedReactHTMLElement<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
47
- render(): React.DetailedReactHTMLElement<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
52
+ renderDialogs: () => JSX.Element;
53
+ componentWillUnmount(): void;
54
+ render(): JSX.Element;
48
55
  }
49
56
  export default AppView;