@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.
- package/dist/347 +276 -0
- package/dist/autolaunch/autolaunch.js +1 -1
- package/dist/autolaunch/autolaunch.js.map +1 -1
- package/dist/cjs/app-options.d.ts +2 -0
- package/dist/cjs/client.js +51 -79
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/cloud-file-manager.js +2 -2
- package/dist/cjs/cloud-file-manager.js.map +1 -1
- package/dist/cjs/create-react-factory.d.ts +1 -0
- package/dist/cjs/create-react-factory.js.map +1 -1
- package/dist/cjs/providers/document-store-provider.js +7 -10
- package/dist/cjs/providers/document-store-provider.js.map +1 -1
- package/dist/cjs/providers/document-store-share-provider.js +4 -4
- package/dist/cjs/providers/document-store-share-provider.js.map +1 -1
- package/dist/cjs/providers/google-drive-provider.js +30 -34
- package/dist/cjs/providers/google-drive-provider.js.map +1 -1
- package/dist/cjs/providers/interactive-api-provider.d.ts +5 -2
- package/dist/cjs/providers/interactive-api-provider.js +27 -21
- package/dist/cjs/providers/interactive-api-provider.js.map +1 -1
- package/dist/cjs/providers/lara-provider.js +18 -26
- package/dist/cjs/providers/lara-provider.js.map +1 -1
- package/dist/cjs/providers/legacy-google-drive-provider.js +21 -27
- package/dist/cjs/providers/legacy-google-drive-provider.js.map +1 -1
- package/dist/cjs/providers/localstorage-provider.js +11 -13
- package/dist/cjs/providers/localstorage-provider.js.map +1 -1
- package/dist/cjs/providers/patchable-content.js +1 -1
- package/dist/cjs/providers/patchable-content.js.map +1 -1
- package/dist/cjs/providers/post-message-provider.js +1 -1
- package/dist/cjs/providers/post-message-provider.js.map +1 -1
- package/dist/cjs/providers/provider-interface.d.ts +1 -2
- package/dist/cjs/providers/provider-interface.js +11 -14
- package/dist/cjs/providers/provider-interface.js.map +1 -1
- package/dist/cjs/providers/readonly-provider.js +6 -6
- package/dist/cjs/providers/readonly-provider.js.map +1 -1
- package/dist/cjs/providers/s3-provider.js +1 -2
- package/dist/cjs/providers/s3-provider.js.map +1 -1
- package/dist/cjs/providers/s3-share-provider.js +1 -1
- package/dist/cjs/providers/s3-share-provider.js.map +1 -1
- package/dist/cjs/providers/test-provider.js +5 -5
- package/dist/cjs/providers/test-provider.js.map +1 -1
- package/dist/cjs/providers/url-provider.js +1 -1
- package/dist/cjs/providers/url-provider.js.map +1 -1
- package/dist/cjs/ui.js +2 -3
- package/dist/cjs/ui.js.map +1 -1
- package/dist/cjs/utils/focus-tracker.d.ts +3 -0
- package/dist/cjs/utils/focus-tracker.js +44 -0
- package/dist/cjs/utils/focus-tracker.js.map +1 -0
- package/dist/cjs/utils/ios-file-saver.d.ts +42 -0
- package/dist/cjs/utils/ios-file-saver.js +98 -0
- package/dist/cjs/utils/ios-file-saver.js.map +1 -0
- package/dist/cjs/utils/lang/en-US.json +9 -0
- package/dist/cjs/utils/s3-share-provider-token-service-helper.js +19 -13
- package/dist/cjs/utils/s3-share-provider-token-service-helper.js.map +1 -1
- package/dist/cjs/utils/url-params.js +1 -2
- package/dist/cjs/utils/url-params.js.map +1 -1
- package/dist/cjs/views/alert-dialog-view.d.ts +9 -3
- package/dist/cjs/views/alert-dialog-view.js +9 -24
- package/dist/cjs/views/alert-dialog-view.js.map +1 -1
- package/dist/cjs/views/app-view.d.ts +12 -5
- package/dist/cjs/views/app-view.js +167 -175
- package/dist/cjs/views/app-view.js.map +1 -1
- package/dist/cjs/views/blocking-modal-view.d.ts +9 -3
- package/dist/cjs/views/blocking-modal-view.js +8 -25
- package/dist/cjs/views/blocking-modal-view.js.map +1 -1
- package/dist/cjs/views/confirm-dialog-view.d.ts +14 -3
- package/dist/cjs/views/confirm-dialog-view.js +14 -31
- package/dist/cjs/views/confirm-dialog-view.js.map +1 -1
- package/dist/cjs/views/download-dialog-view.d.ts +12 -3
- package/dist/cjs/views/download-dialog-view.js +36 -63
- package/dist/cjs/views/download-dialog-view.js.map +1 -1
- package/dist/cjs/views/dropdown-anchors.d.ts +2 -2
- package/dist/cjs/views/dropdown-anchors.js +4 -10
- package/dist/cjs/views/dropdown-anchors.js.map +1 -1
- package/dist/cjs/views/dropdown-view.d.ts +20 -3
- package/dist/cjs/views/dropdown-view.js +40 -157
- package/dist/cjs/views/dropdown-view.js.map +1 -1
- package/dist/cjs/views/file-dialog-tab-view.d.ts +24 -2
- package/dist/cjs/views/file-dialog-tab-view.js +255 -315
- package/dist/cjs/views/file-dialog-tab-view.js.map +1 -1
- package/dist/cjs/views/icons/spin.d.ts +2 -2
- package/dist/cjs/views/icons/spin.js +2 -39
- package/dist/cjs/views/icons/spin.js.map +1 -1
- package/dist/cjs/views/import-tabbed-dialog-view.d.ts +12 -3
- package/dist/cjs/views/import-tabbed-dialog-view.js +33 -65
- package/dist/cjs/views/import-tabbed-dialog-view.js.map +1 -1
- package/dist/cjs/views/local-file-tab-list-view.d.ts +14 -3
- package/dist/cjs/views/local-file-tab-list-view.js +57 -66
- package/dist/cjs/views/local-file-tab-list-view.js.map +1 -1
- package/dist/cjs/views/local-file-tab-save-view.d.ts +32 -3
- package/dist/cjs/views/local-file-tab-save-view.js +125 -138
- package/dist/cjs/views/local-file-tab-save-view.js.map +1 -1
- package/dist/cjs/views/menu-bar-view.d.ts +58 -3
- package/dist/cjs/views/menu-bar-view.js +196 -183
- package/dist/cjs/views/menu-bar-view.js.map +1 -1
- package/dist/cjs/views/modal-dialog-view.js +7 -8
- package/dist/cjs/views/modal-dialog-view.js.map +1 -1
- package/dist/cjs/views/modal-tabbed-dialog-view.d.ts +15 -3
- package/dist/cjs/views/modal-tabbed-dialog-view.js +5 -17
- package/dist/cjs/views/modal-tabbed-dialog-view.js.map +1 -1
- package/dist/cjs/views/modal-view.d.ts +5 -32
- package/dist/cjs/views/modal-view.js +20 -64
- package/dist/cjs/views/modal-view.js.map +1 -1
- package/dist/cjs/views/provider-tabbed-dialog-view.d.ts +23 -3
- package/dist/cjs/views/provider-tabbed-dialog-view.js +43 -51
- package/dist/cjs/views/provider-tabbed-dialog-view.js.map +1 -1
- package/dist/cjs/views/rename-dialog-view.d.ts +8 -3
- package/dist/cjs/views/rename-dialog-view.js +25 -51
- package/dist/cjs/views/rename-dialog-view.js.map +1 -1
- package/dist/cjs/views/select-interactive-state-dialog-view.d.ts +1 -1
- package/dist/cjs/views/select-interactive-state-dialog-view.js +4 -30
- package/dist/cjs/views/select-interactive-state-dialog-view.js.map +1 -1
- package/dist/cjs/views/select-provider-dialog-tab-view.d.ts +6 -1
- package/dist/cjs/views/select-provider-dialog-tab-view.js +4 -12
- package/dist/cjs/views/select-provider-dialog-tab-view.js.map +1 -1
- package/dist/cjs/views/share-dialog-status-view.js +6 -13
- package/dist/cjs/views/share-dialog-status-view.js.map +1 -1
- package/dist/cjs/views/share-dialog-tabs-view.js +22 -61
- package/dist/cjs/views/share-dialog-tabs-view.js.map +1 -1
- package/dist/cjs/views/share-dialog-view.d.ts +1 -1
- package/dist/cjs/views/share-dialog-view.js +15 -21
- package/dist/cjs/views/share-dialog-view.js.map +1 -1
- package/dist/cjs/views/share-loading-view.d.ts +2 -2
- package/dist/cjs/views/share-loading-view.js +2 -4
- package/dist/cjs/views/share-loading-view.js.map +1 -1
- package/dist/cjs/views/tabbed-panel-view.d.ts +16 -3
- package/dist/cjs/views/tabbed-panel-view.js +25 -75
- package/dist/cjs/views/tabbed-panel-view.js.map +1 -1
- package/dist/cjs/views/url-tab-view.d.ts +12 -3
- package/dist/cjs/views/url-tab-view.js +31 -46
- package/dist/cjs/views/url-tab-view.js.map +1 -1
- package/dist/css/app.css +1 -1
- package/dist/css/app.css.map +1 -1
- package/dist/esm/app-options.d.ts +2 -0
- package/dist/esm/client.js +51 -79
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/cloud-file-manager.js +2 -2
- package/dist/esm/cloud-file-manager.js.map +1 -1
- package/dist/esm/create-react-factory.d.ts +1 -0
- package/dist/esm/create-react-factory.js.map +1 -1
- package/dist/esm/providers/document-store-provider.js +7 -10
- package/dist/esm/providers/document-store-provider.js.map +1 -1
- package/dist/esm/providers/document-store-share-provider.js +4 -4
- package/dist/esm/providers/document-store-share-provider.js.map +1 -1
- package/dist/esm/providers/google-drive-provider.js +30 -34
- package/dist/esm/providers/google-drive-provider.js.map +1 -1
- package/dist/esm/providers/interactive-api-provider.d.ts +5 -2
- package/dist/esm/providers/interactive-api-provider.js +25 -20
- package/dist/esm/providers/interactive-api-provider.js.map +1 -1
- package/dist/esm/providers/lara-provider.js +18 -26
- package/dist/esm/providers/lara-provider.js.map +1 -1
- package/dist/esm/providers/legacy-google-drive-provider.js +21 -27
- package/dist/esm/providers/legacy-google-drive-provider.js.map +1 -1
- package/dist/esm/providers/localstorage-provider.js +11 -13
- package/dist/esm/providers/localstorage-provider.js.map +1 -1
- package/dist/esm/providers/patchable-content.js +1 -1
- package/dist/esm/providers/patchable-content.js.map +1 -1
- package/dist/esm/providers/post-message-provider.js +1 -1
- package/dist/esm/providers/post-message-provider.js.map +1 -1
- package/dist/esm/providers/provider-interface.d.ts +1 -2
- package/dist/esm/providers/provider-interface.js +11 -14
- package/dist/esm/providers/provider-interface.js.map +1 -1
- package/dist/esm/providers/readonly-provider.js +6 -6
- package/dist/esm/providers/readonly-provider.js.map +1 -1
- package/dist/esm/providers/s3-provider.js +1 -2
- package/dist/esm/providers/s3-provider.js.map +1 -1
- package/dist/esm/providers/s3-share-provider.js +1 -1
- package/dist/esm/providers/s3-share-provider.js.map +1 -1
- package/dist/esm/providers/test-provider.js +5 -5
- package/dist/esm/providers/test-provider.js.map +1 -1
- package/dist/esm/providers/url-provider.js +1 -1
- package/dist/esm/providers/url-provider.js.map +1 -1
- package/dist/esm/ui.js +2 -3
- package/dist/esm/ui.js.map +1 -1
- package/dist/esm/utils/focus-tracker.d.ts +3 -0
- package/dist/esm/utils/focus-tracker.js +38 -0
- package/dist/esm/utils/focus-tracker.js.map +1 -0
- package/dist/esm/utils/ios-file-saver.d.ts +42 -0
- package/dist/esm/utils/ios-file-saver.js +91 -0
- package/dist/esm/utils/ios-file-saver.js.map +1 -0
- package/dist/esm/utils/lang/en-US.json +9 -0
- package/dist/esm/utils/s3-share-provider-token-service-helper.js +19 -10
- package/dist/esm/utils/s3-share-provider-token-service-helper.js.map +1 -1
- package/dist/esm/utils/url-params.js +1 -2
- package/dist/esm/utils/url-params.js.map +1 -1
- package/dist/esm/views/alert-dialog-view.d.ts +9 -3
- package/dist/esm/views/alert-dialog-view.js +10 -25
- package/dist/esm/views/alert-dialog-view.js.map +1 -1
- package/dist/esm/views/app-view.d.ts +12 -5
- package/dist/esm/views/app-view.js +176 -184
- package/dist/esm/views/app-view.js.map +1 -1
- package/dist/esm/views/blocking-modal-view.d.ts +9 -3
- package/dist/esm/views/blocking-modal-view.js +9 -26
- package/dist/esm/views/blocking-modal-view.js.map +1 -1
- package/dist/esm/views/confirm-dialog-view.d.ts +14 -3
- package/dist/esm/views/confirm-dialog-view.js +15 -32
- package/dist/esm/views/confirm-dialog-view.js.map +1 -1
- package/dist/esm/views/download-dialog-view.d.ts +12 -3
- package/dist/esm/views/download-dialog-view.js +36 -63
- package/dist/esm/views/download-dialog-view.js.map +1 -1
- package/dist/esm/views/dropdown-anchors.d.ts +2 -2
- package/dist/esm/views/dropdown-anchors.js +4 -7
- package/dist/esm/views/dropdown-anchors.js.map +1 -1
- package/dist/esm/views/dropdown-view.d.ts +20 -3
- package/dist/esm/views/dropdown-view.js +40 -154
- package/dist/esm/views/dropdown-view.js.map +1 -1
- package/dist/esm/views/file-dialog-tab-view.d.ts +24 -2
- package/dist/esm/views/file-dialog-tab-view.js +256 -316
- package/dist/esm/views/file-dialog-tab-view.js.map +1 -1
- package/dist/esm/views/icons/spin.d.ts +2 -2
- package/dist/esm/views/icons/spin.js +2 -36
- package/dist/esm/views/icons/spin.js.map +1 -1
- package/dist/esm/views/import-tabbed-dialog-view.d.ts +12 -3
- package/dist/esm/views/import-tabbed-dialog-view.js +36 -68
- package/dist/esm/views/import-tabbed-dialog-view.js.map +1 -1
- package/dist/esm/views/local-file-tab-list-view.d.ts +14 -3
- package/dist/esm/views/local-file-tab-list-view.js +57 -66
- package/dist/esm/views/local-file-tab-list-view.js.map +1 -1
- package/dist/esm/views/local-file-tab-save-view.d.ts +32 -3
- package/dist/esm/views/local-file-tab-save-view.js +125 -138
- package/dist/esm/views/local-file-tab-save-view.js.map +1 -1
- package/dist/esm/views/menu-bar-view.d.ts +58 -3
- package/dist/esm/views/menu-bar-view.js +198 -185
- package/dist/esm/views/menu-bar-view.js.map +1 -1
- package/dist/esm/views/modal-dialog-view.js +7 -8
- package/dist/esm/views/modal-dialog-view.js.map +1 -1
- package/dist/esm/views/modal-tabbed-dialog-view.d.ts +15 -3
- package/dist/esm/views/modal-tabbed-dialog-view.js +7 -19
- package/dist/esm/views/modal-tabbed-dialog-view.js.map +1 -1
- package/dist/esm/views/modal-view.d.ts +5 -32
- package/dist/esm/views/modal-view.js +21 -61
- package/dist/esm/views/modal-view.js.map +1 -1
- package/dist/esm/views/provider-tabbed-dialog-view.d.ts +23 -3
- package/dist/esm/views/provider-tabbed-dialog-view.js +46 -54
- package/dist/esm/views/provider-tabbed-dialog-view.js.map +1 -1
- package/dist/esm/views/rename-dialog-view.d.ts +8 -3
- package/dist/esm/views/rename-dialog-view.js +25 -51
- package/dist/esm/views/rename-dialog-view.js.map +1 -1
- package/dist/esm/views/select-interactive-state-dialog-view.d.ts +1 -1
- package/dist/esm/views/select-interactive-state-dialog-view.js +4 -30
- package/dist/esm/views/select-interactive-state-dialog-view.js.map +1 -1
- package/dist/esm/views/select-provider-dialog-tab-view.d.ts +6 -1
- package/dist/esm/views/select-provider-dialog-tab-view.js +4 -9
- package/dist/esm/views/select-provider-dialog-tab-view.js.map +1 -1
- package/dist/esm/views/share-dialog-status-view.js +6 -13
- package/dist/esm/views/share-dialog-status-view.js.map +1 -1
- package/dist/esm/views/share-dialog-tabs-view.js +22 -61
- package/dist/esm/views/share-dialog-tabs-view.js.map +1 -1
- package/dist/esm/views/share-dialog-view.d.ts +1 -1
- package/dist/esm/views/share-dialog-view.js +15 -21
- package/dist/esm/views/share-dialog-view.js.map +1 -1
- package/dist/esm/views/share-loading-view.d.ts +2 -2
- package/dist/esm/views/share-loading-view.js +2 -4
- package/dist/esm/views/share-loading-view.js.map +1 -1
- package/dist/esm/views/tabbed-panel-view.d.ts +16 -3
- package/dist/esm/views/tabbed-panel-view.js +25 -72
- package/dist/esm/views/tabbed-panel-view.js.map +1 -1
- package/dist/esm/views/url-tab-view.d.ts +12 -3
- package/dist/esm/views/url-tab-view.js +31 -46
- package/dist/esm/views/url-tab-view.js.map +1 -1
- package/dist/examples/codap3-local-file.html +42 -0
- package/dist/examples/index.html +2 -0
- package/dist/examples/local-json-save.html +36 -0
- package/dist/index.html +1 -1
- package/dist/js/app.js +1 -1
- package/dist/js/app.js.LICENSE.txt +41 -11
- package/dist/js/app.js.map +1 -1
- package/dist/js/globals.js +1 -1
- package/dist/js/globals.js.map +1 -1
- package/package.json +40 -36
- package/readme.md +4 -0
- package/dist/cjs/lib/file-saver.d.ts +0 -2
- package/dist/cjs/lib/file-saver.js +0 -164
- package/dist/cjs/lib/file-saver.js.map +0 -1
- package/dist/esm/lib/file-saver.d.ts +0 -2
- package/dist/esm/lib/file-saver.js +0 -164
- 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
|
|
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
|
|
27
|
+
const s3 = new S3Client({
|
|
28
|
+
region,
|
|
29
|
+
credentials: { accessKeyId, secretAccessKey, sessionToken }
|
|
30
|
+
});
|
|
28
31
|
const publicPath = client.getPublicS3Path(resource, FILENAME);
|
|
29
|
-
await s3.
|
|
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
|
-
})
|
|
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
|
|
54
|
+
const s3 = new S3Client({
|
|
55
|
+
region,
|
|
56
|
+
credentials: { accessKeyId, secretAccessKey, sessionToken }
|
|
57
|
+
});
|
|
52
58
|
const publicPath = client.getPublicS3Path(resource, FILENAME);
|
|
53
|
-
await s3.
|
|
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
|
-
})
|
|
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
|
|
76
|
+
const s3 = new S3Client({
|
|
77
|
+
region,
|
|
78
|
+
credentials: { accessKeyId, secretAccessKey, sessionToken }
|
|
79
|
+
});
|
|
71
80
|
const publicPath = client.getPublicS3Path(resource, FILENAME);
|
|
72
|
-
await s3.
|
|
81
|
+
await s3.send(new DeleteObjectCommand({
|
|
73
82
|
Bucket: bucket,
|
|
74
83
|
Key: publicPath,
|
|
75
|
-
})
|
|
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":"AAAA,OAAO,EAAE,kBAAkB,EAAc,MAAM,mCAAmC,CAAA;AAClF,OAAO,EAAE,MAAM,oBAAoB,CAAA;
|
|
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 (
|
|
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":"
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
2
|
-
|
|
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 {
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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.
|
|
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:
|
|
40
|
-
getFilename(metadata
|
|
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: () =>
|
|
47
|
-
|
|
52
|
+
renderDialogs: () => JSX.Element;
|
|
53
|
+
componentWillUnmount(): void;
|
|
54
|
+
render(): JSX.Element;
|
|
48
55
|
}
|
|
49
56
|
export default AppView;
|