@exmg/exm-upload 1.2.5 → 1.2.7
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/.rollup.cache/root/repo/packages/exm-upload/dist/index.d.ts +3 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/index.js +4 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/upload/adapters/form-data-adapter.js +47 -0
- package/dist/upload/adapters/local-adapter.js +24 -0
- package/dist/upload/adapters/xhr-adapter.js +50 -0
- package/package.json +5 -5
|
@@ -17,3 +17,6 @@ export { style as exmgUploadDropAreaStyles } from './styles/exm-upload-drop-area
|
|
|
17
17
|
export { style as exmgUploadCropStyles } from './styles/exm-upload-crop-styles-css.js';
|
|
18
18
|
export { style as exmgUploadItemStyles } from './styles/exm-upload-item-styles-css.js';
|
|
19
19
|
export { style as exmgDialogUploadStyles } from './styles/exm-dialog-upload-css.js';
|
|
20
|
+
export { UploadAdapter as LocalStorageUploadAdapter } from './upload/adapters/local-adapter.js';
|
|
21
|
+
export { UploadAdapter as XHRJSONUploadAdapter } from './upload/adapters/form-data-adapter.js';
|
|
22
|
+
export { UploadAdapter as XHRUploadAdapter } from './upload/adapters/xhr-adapter.js';
|
|
@@ -15,4 +15,8 @@ export { style as exmgUploadDropAreaStyles } from './styles/exm-upload-drop-area
|
|
|
15
15
|
export { style as exmgUploadCropStyles } from './styles/exm-upload-crop-styles-css.js';
|
|
16
16
|
export { style as exmgUploadItemStyles } from './styles/exm-upload-item-styles-css.js';
|
|
17
17
|
export { style as exmgDialogUploadStyles } from './styles/exm-dialog-upload-css.js';
|
|
18
|
+
// NOTE: only exposed to build out for npm
|
|
19
|
+
export { UploadAdapter as LocalStorageUploadAdapter } from './upload/adapters/local-adapter.js';
|
|
20
|
+
export { UploadAdapter as XHRJSONUploadAdapter } from './upload/adapters/form-data-adapter.js';
|
|
21
|
+
export { UploadAdapter as XHRUploadAdapter } from './upload/adapters/xhr-adapter.js';
|
|
18
22
|
//# sourceMappingURL=index.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -17,3 +17,6 @@ export { style as exmgUploadDropAreaStyles } from './styles/exm-upload-drop-area
|
|
|
17
17
|
export { style as exmgUploadCropStyles } from './styles/exm-upload-crop-styles-css.js';
|
|
18
18
|
export { style as exmgUploadItemStyles } from './styles/exm-upload-item-styles-css.js';
|
|
19
19
|
export { style as exmgDialogUploadStyles } from './styles/exm-dialog-upload-css.js';
|
|
20
|
+
export { UploadAdapter as LocalStorageUploadAdapter } from './upload/adapters/local-adapter.js';
|
|
21
|
+
export { UploadAdapter as XHRJSONUploadAdapter } from './upload/adapters/form-data-adapter.js';
|
|
22
|
+
export { UploadAdapter as XHRUploadAdapter } from './upload/adapters/xhr-adapter.js';
|
package/dist/index.js
CHANGED
|
@@ -15,4 +15,7 @@ export { style as exmgUploadDropAreaStyles } from './styles/exm-upload-drop-area
|
|
|
15
15
|
export { style as exmgUploadCropStyles } from './styles/exm-upload-crop-styles-css.js';
|
|
16
16
|
export { style as exmgUploadItemStyles } from './styles/exm-upload-item-styles-css.js';
|
|
17
17
|
export { style as exmgDialogUploadStyles } from './styles/exm-dialog-upload-css.js';
|
|
18
|
+
export { UploadAdapter as LocalStorageUploadAdapter } from './upload/adapters/local-adapter.js';
|
|
19
|
+
export { UploadAdapter as XHRJSONUploadAdapter } from './upload/adapters/form-data-adapter.js';
|
|
20
|
+
export { UploadAdapter as XHRUploadAdapter } from './upload/adapters/xhr-adapter.js';
|
|
18
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
class XHRJSONUploadAdapter {
|
|
2
|
+
constructor(config) {
|
|
3
|
+
this.config = config;
|
|
4
|
+
}
|
|
5
|
+
async upload(file, progressCallback) {
|
|
6
|
+
const onProgress = (event) => {
|
|
7
|
+
if (event.lengthComputable) {
|
|
8
|
+
const percentage = (event.loaded / event.total) * 100;
|
|
9
|
+
progressCallback(Math.round(percentage));
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
const xhr = new XMLHttpRequest();
|
|
13
|
+
xhr.upload.addEventListener('progress', onProgress);
|
|
14
|
+
const formData = new FormData();
|
|
15
|
+
formData.set('file', file);
|
|
16
|
+
formData.set('filename', file.name);
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
const { uploadUrl } = this.config;
|
|
19
|
+
if (!uploadUrl)
|
|
20
|
+
reject(new Error(`Upload url not found`));
|
|
21
|
+
xhr.responseType = 'json';
|
|
22
|
+
xhr.open('POST', uploadUrl, true);
|
|
23
|
+
for (const key in this.config.headers || {}) {
|
|
24
|
+
if (Object.prototype.hasOwnProperty.call(this.config.headers, key)) {
|
|
25
|
+
xhr.setRequestHeader(key, this.config.headers[key]);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
xhr.onreadystatechange = () => {
|
|
29
|
+
if (xhr.readyState === XMLHttpRequest.DONE) {
|
|
30
|
+
if (xhr.status >= 200 && xhr.status < 300) {
|
|
31
|
+
resolve(xhr.response);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
reject(new Error(`Upload failed with status ${xhr.status}`));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
xhr.onerror = () => {
|
|
39
|
+
reject(new Error('Upload failed due to network error'));
|
|
40
|
+
};
|
|
41
|
+
xhr.send(formData);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export { XHRJSONUploadAdapter as UploadAdapter };
|
|
47
|
+
//# sourceMappingURL=form-data-adapter.js.map
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
class LocalStorageUploadAdapter {
|
|
2
|
+
async readFileAsDataURL(file) {
|
|
3
|
+
return new Promise((resolve, reject) => {
|
|
4
|
+
const reader = new FileReader();
|
|
5
|
+
reader.onload = () => {
|
|
6
|
+
resolve(reader.result);
|
|
7
|
+
};
|
|
8
|
+
reader.onerror = () => {
|
|
9
|
+
reject(reader.error);
|
|
10
|
+
};
|
|
11
|
+
reader.readAsDataURL(file);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
async upload(file, progressCallback) {
|
|
15
|
+
progressCallback(0);
|
|
16
|
+
const fileDataUrl = await this.readFileAsDataURL(file);
|
|
17
|
+
localStorage.setItem(file.name, fileDataUrl);
|
|
18
|
+
progressCallback(100);
|
|
19
|
+
return file.name;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export { LocalStorageUploadAdapter as UploadAdapter };
|
|
24
|
+
//# sourceMappingURL=local-adapter.js.map
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
class XHRUploadAdapter {
|
|
2
|
+
constructor(config) {
|
|
3
|
+
this.config = config;
|
|
4
|
+
this.xhr = new XMLHttpRequest();
|
|
5
|
+
}
|
|
6
|
+
abort() {
|
|
7
|
+
this.xhr.abort();
|
|
8
|
+
}
|
|
9
|
+
async upload(file, progressCallback) {
|
|
10
|
+
const onProgress = (event) => {
|
|
11
|
+
if (event.lengthComputable) {
|
|
12
|
+
const percentage = (event.loaded / event.total) * 100;
|
|
13
|
+
progressCallback(Math.round(percentage));
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const { xhr } = this;
|
|
17
|
+
xhr.upload.addEventListener('progress', onProgress);
|
|
18
|
+
const formData = new FormData();
|
|
19
|
+
formData.append('filename', file.name);
|
|
20
|
+
formData.append('file', file);
|
|
21
|
+
return new Promise((resolve, reject) => {
|
|
22
|
+
const { uploadUrl } = this.config;
|
|
23
|
+
if (!uploadUrl)
|
|
24
|
+
reject(new Error(`Upload url not found`));
|
|
25
|
+
xhr.open('POST', uploadUrl, true);
|
|
26
|
+
for (const key in this.config.headers || {}) {
|
|
27
|
+
if (Object.prototype.hasOwnProperty.call(this.config.headers, key)) {
|
|
28
|
+
xhr.setRequestHeader(key, this.config.headers[key]);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
xhr.onreadystatechange = () => {
|
|
32
|
+
if (xhr.readyState === XMLHttpRequest.DONE) {
|
|
33
|
+
if (xhr.status >= 200 && xhr.status < 300) {
|
|
34
|
+
resolve(xhr.responseText);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
reject(new Error(`Upload failed with status ${xhr.status}`));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
xhr.onerror = () => {
|
|
42
|
+
reject(new Error('Upload failed due to network error'));
|
|
43
|
+
};
|
|
44
|
+
xhr.send(formData);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export { XHRUploadAdapter as UploadAdapter };
|
|
50
|
+
//# sourceMappingURL=xhr-adapter.js.map
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exmg/exm-upload",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.7",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@exmg/exm-button": "^1.2.
|
|
6
|
-
"@exmg/exm-collapsed": "^1.2.
|
|
7
|
-
"@exmg/exm-dialogs": "^1.2.
|
|
5
|
+
"@exmg/exm-button": "^1.2.7",
|
|
6
|
+
"@exmg/exm-collapsed": "^1.2.7",
|
|
7
|
+
"@exmg/exm-dialogs": "^1.2.7",
|
|
8
8
|
"cropperjs": "^1.5.13"
|
|
9
9
|
},
|
|
10
10
|
"peerDependencies": {
|
|
@@ -47,5 +47,5 @@
|
|
|
47
47
|
"publishConfig": {
|
|
48
48
|
"access": "public"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "20c45a5fb2f606723218a739897831c27a6f6790"
|
|
51
51
|
}
|