@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.
@@ -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.5",
3
+ "version": "1.2.7",
4
4
  "dependencies": {
5
- "@exmg/exm-button": "^1.2.5",
6
- "@exmg/exm-collapsed": "^1.2.5",
7
- "@exmg/exm-dialogs": "^1.2.5",
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": "93055dd9ec113fc8161acb417322c4d6b44cd530"
50
+ "gitHead": "20c45a5fb2f606723218a739897831c27a6f6790"
51
51
  }