@exmg/exm-upload 1.1.36 → 1.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.
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-dialog-upload-base.d.ts +90 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-dialog-upload-base.js +226 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-dialog-upload.d.ts +11 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-dialog-upload.js +15 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-base.d.ts +148 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-base.js +373 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-crop-base.d.ts +16 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-crop-base.js +76 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-crop.d.ts +9 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-crop.js +12 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-drop-area-base.d.ts +8 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-drop-area-base.js +34 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-drop-area.d.ts +9 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-drop-area.js +12 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-input.d.ts +15 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-input.js +84 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-item-base.d.ts +45 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-item-base.js +175 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-item.d.ts +9 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-item.js +12 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload.d.ts +19 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload.js +22 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/index.d.ts +19 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/index.js +18 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/mixins/exm-upload-drag-drop-mixin.d.ts +10 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/mixins/exm-upload-drag-drop-mixin.js +28 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-dialog-upload-css.d.ts +1 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-dialog-upload-css.js +253 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-crop-styles-css.d.ts +1 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-crop-styles-css.js +324 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-drop-area-styles-css.d.ts +1 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-drop-area-styles-css.js +52 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-input-css.d.ts +1 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-input-css.js +22 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-item-styles-css.d.ts +1 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-item-styles-css.js +124 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-styles-css.d.ts +1 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-styles-css.js +150 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/types.d.ts +33 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/types.js +10 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/upload/adapters/form-data-adapter.d.ts +7 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/upload/adapters/local-adapter.d.ts +6 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/upload/adapters/xhr-adapter.d.ts +9 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/upload/index.d.ts +1 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/upload/service.d.ts +9 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/upload/service.js +45 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/upload/types.d.ts +12 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/utils.d.ts +33 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/utils.js +89 -0
- package/dist/exm-dialog-upload-base.js +6 -4
- package/dist/exm-dialog-upload.js +4 -2
- package/dist/exm-upload-base.js +9 -7
- package/dist/exm-upload-crop-base.js +7 -4
- package/dist/exm-upload-crop.js +4 -2
- package/dist/exm-upload-drop-area-base.js +6 -3
- package/dist/exm-upload-drop-area.js +4 -2
- package/dist/exm-upload-input.js +5 -3
- package/dist/exm-upload-item-base.js +9 -6
- package/dist/exm-upload-item.js +4 -2
- package/dist/exm-upload.js +4 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -2
- package/dist/mixins/exm-upload-drag-drop-mixin.js +6 -3
- package/dist/styles/exm-dialog-upload-css.js +5 -2
- package/dist/styles/exm-upload-crop-styles-css.js +5 -2
- package/dist/styles/exm-upload-drop-area-styles-css.js +5 -2
- package/dist/styles/exm-upload-input-css.js +5 -2
- package/dist/styles/exm-upload-item-styles-css.js +5 -2
- package/dist/styles/exm-upload-styles-css.js +5 -2
- package/dist/types.js +5 -3
- package/dist/upload/service.js +2 -1
- package/dist/utils.js +8 -10
- package/package.json +5 -5
- /package/{dist → .rollup.cache/root/repo/packages/exm-upload/dist}/upload/adapters/form-data-adapter.js +0 -0
- /package/{dist → .rollup.cache/root/repo/packages/exm-upload/dist}/upload/adapters/local-adapter.js +0 -0
- /package/{dist → .rollup.cache/root/repo/packages/exm-upload/dist}/upload/adapters/xhr-adapter.js +0 -0
- /package/{dist → .rollup.cache/root/repo/packages/exm-upload/dist}/upload/index.js +0 -0
- /package/{dist → .rollup.cache/root/repo/packages/exm-upload/dist}/upload/types.js +0 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export var FileUploadError;
|
|
2
|
+
(function (FileUploadError) {
|
|
3
|
+
FileUploadError["INVALID_SIZE"] = "File size too large";
|
|
4
|
+
FileUploadError["INVALID_TYPE"] = "Invalid file type";
|
|
5
|
+
FileUploadError["INVALID_AMOUNT"] = "Max amount of files exceeded";
|
|
6
|
+
FileUploadError["INVALID_MULTIPLE"] = "Multiple files not allowed";
|
|
7
|
+
FileUploadError["INVALID_RESOLUTION"] = "Image resulution is not valid";
|
|
8
|
+
FileUploadError["SERVER_ERROR"] = "Server error occured";
|
|
9
|
+
})(FileUploadError || (FileUploadError = {}));
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
package/.rollup.cache/root/repo/packages/exm-upload/dist/upload/adapters/form-data-adapter.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { UploadAdapter, UploadConfig } from '../types.js';
|
|
2
|
+
declare class XHRJSONUploadAdapter implements UploadAdapter {
|
|
3
|
+
config: UploadConfig;
|
|
4
|
+
constructor(config: UploadConfig);
|
|
5
|
+
upload(file: File, progressCallback: (progress: number) => void): Promise<string>;
|
|
6
|
+
}
|
|
7
|
+
export { XHRJSONUploadAdapter as UploadAdapter };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { UploadAdapter } from '../types.js';
|
|
2
|
+
declare class LocalStorageUploadAdapter implements UploadAdapter {
|
|
3
|
+
private readFileAsDataURL;
|
|
4
|
+
upload(file: File, progressCallback: (progress: number) => void): Promise<string>;
|
|
5
|
+
}
|
|
6
|
+
export { LocalStorageUploadAdapter as UploadAdapter };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { UploadAdapter, UploadConfig } from '../types.js';
|
|
2
|
+
declare class XHRUploadAdapter implements UploadAdapter {
|
|
3
|
+
config: UploadConfig;
|
|
4
|
+
xhr: XMLHttpRequest;
|
|
5
|
+
constructor(config: UploadConfig);
|
|
6
|
+
abort(): void;
|
|
7
|
+
upload(file: File, progressCallback: (progress: number) => void): Promise<string>;
|
|
8
|
+
}
|
|
9
|
+
export { XHRUploadAdapter as UploadAdapter };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { UploadService } from './service.js';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { UploadAdapter, UploadConfig } from './types.js';
|
|
2
|
+
declare class UploadService {
|
|
3
|
+
private adapter;
|
|
4
|
+
constructor(adapter: UploadAdapter);
|
|
5
|
+
upload(file: File, progressCallback: (progress: number) => void): Promise<string>;
|
|
6
|
+
abort(): void;
|
|
7
|
+
static create(destination: 'xhr' | 'local' | 'form-data' | 'custom', config?: UploadConfig): Promise<UploadService>;
|
|
8
|
+
}
|
|
9
|
+
export { UploadService };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
async function instantiateClass(path, config) {
|
|
2
|
+
if (!path) {
|
|
3
|
+
throw new Error(`Class UploadAdapter path not set.`);
|
|
4
|
+
}
|
|
5
|
+
const { UploadAdapter } = await import(path);
|
|
6
|
+
if (typeof UploadAdapter === 'function') {
|
|
7
|
+
return new UploadAdapter(config);
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
throw new Error(`Class UploadAdapter not found.`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
class UploadService {
|
|
14
|
+
constructor(adapter) {
|
|
15
|
+
this.adapter = adapter;
|
|
16
|
+
}
|
|
17
|
+
async upload(file, progressCallback) {
|
|
18
|
+
return this.adapter.upload(file, progressCallback);
|
|
19
|
+
}
|
|
20
|
+
abort() {
|
|
21
|
+
this.adapter.abort && this.adapter.abort();
|
|
22
|
+
}
|
|
23
|
+
static async create(destination, config) {
|
|
24
|
+
let adapter;
|
|
25
|
+
switch (destination) {
|
|
26
|
+
case 'local':
|
|
27
|
+
adapter = await instantiateClass('./adapters/local-adapter.js', config);
|
|
28
|
+
break;
|
|
29
|
+
case 'xhr':
|
|
30
|
+
adapter = await instantiateClass('./adapters/xhr-adapter.js', config);
|
|
31
|
+
break;
|
|
32
|
+
case 'form-data':
|
|
33
|
+
adapter = await instantiateClass('./adapters/form-data-adapter.js', config);
|
|
34
|
+
break;
|
|
35
|
+
case 'custom':
|
|
36
|
+
adapter = await instantiateClass(config === null || config === void 0 ? void 0 : config.customAdapterPath, config);
|
|
37
|
+
break;
|
|
38
|
+
default:
|
|
39
|
+
throw new Error(`Unknown upload destination: ${destination}`);
|
|
40
|
+
}
|
|
41
|
+
return new UploadService(adapter);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export { UploadService };
|
|
45
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface UploadAdapter {
|
|
2
|
+
upload(file: File, progressCallback: (progress: number) => void): Promise<string>;
|
|
3
|
+
abort?: () => void;
|
|
4
|
+
}
|
|
5
|
+
export interface UploadConfig {
|
|
6
|
+
uploadUrl?: string;
|
|
7
|
+
customAdapterPath?: string;
|
|
8
|
+
headers?: {
|
|
9
|
+
[key: string]: string;
|
|
10
|
+
};
|
|
11
|
+
responseType?: '' | 'json' | 'text' | 'blob' | 'arraybuffer';
|
|
12
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare const isMimeType: (value: string) => boolean;
|
|
2
|
+
/**
|
|
3
|
+
* Checks if the type of a file is valid based on the accepted types.
|
|
4
|
+
*
|
|
5
|
+
* @param file - The file object to check.
|
|
6
|
+
* @param accept - A comma-separated list of accepted types.
|
|
7
|
+
* @returns True if the file type is valid, false otherwise.
|
|
8
|
+
*/
|
|
9
|
+
export declare const isTypeValidExtension: (file: File, accept: string) => boolean | "" | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* Checks if the size of a file is valid based on the maximum size.
|
|
12
|
+
*
|
|
13
|
+
* @param size - The size of the file in bytes.
|
|
14
|
+
* @param maxSize - The maximum size allowed, with a digital unit (e.g., "10MB").
|
|
15
|
+
* @returns True if the file size is valid, false otherwise.
|
|
16
|
+
* @throws Error if the maximum size is invalid.
|
|
17
|
+
*/
|
|
18
|
+
export declare const isSizeValid: (size: number, maxSize: string) => boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Formats a byte size into a human-readable string.
|
|
21
|
+
*
|
|
22
|
+
* @param bytes - The size in bytes to format.
|
|
23
|
+
* @returns The formatted size string.
|
|
24
|
+
*/
|
|
25
|
+
export declare const formatBytes: (bytes: number) => string;
|
|
26
|
+
/**
|
|
27
|
+
* Checks if a file is an image based on its type.
|
|
28
|
+
*
|
|
29
|
+
* @param file - The file object to check.
|
|
30
|
+
* @returns True if the file is an image, false otherwise.
|
|
31
|
+
*/
|
|
32
|
+
export declare const isImage: (file: File) => boolean | undefined;
|
|
33
|
+
export declare const isCorrectResolution: (image: File, resolution: string) => Promise<unknown>;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export const isMimeType = (value) => {
|
|
2
|
+
const mimeTypeRegex = /^[a-zA-Z]+\/[a-zA-Z0-9+\-.]+(\*?)$/;
|
|
3
|
+
return mimeTypeRegex.test(value);
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Checks if the type of a file is valid based on the accepted types.
|
|
7
|
+
*
|
|
8
|
+
* @param file - The file object to check.
|
|
9
|
+
* @param accept - A comma-separated list of accepted types.
|
|
10
|
+
* @returns True if the file type is valid, false otherwise.
|
|
11
|
+
*/
|
|
12
|
+
export const isTypeValidExtension = (file, accept) => {
|
|
13
|
+
var _a;
|
|
14
|
+
if (accept.trim() === '')
|
|
15
|
+
return true;
|
|
16
|
+
const acceptedTypes = new Set(accept.split(',').map((type) => type.trim().toLowerCase()));
|
|
17
|
+
const fileExtensionRegExp = /\.[^.]+$/;
|
|
18
|
+
const name = file.name.toLowerCase();
|
|
19
|
+
const type = file.type.toLowerCase();
|
|
20
|
+
const hasFileExtension = fileExtensionRegExp.test(name);
|
|
21
|
+
const [fileExtension] = !hasFileExtension ? [undefined] : ((_a = fileExtensionRegExp.exec(name)) !== null && _a !== void 0 ? _a : []);
|
|
22
|
+
return acceptedTypes.has(type) || (fileExtension && acceptedTypes.has(fileExtension));
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Checks if the size of a file is valid based on the maximum size.
|
|
26
|
+
*
|
|
27
|
+
* @param size - The size of the file in bytes.
|
|
28
|
+
* @param maxSize - The maximum size allowed, with a digital unit (e.g., "10MB").
|
|
29
|
+
* @returns True if the file size is valid, false otherwise.
|
|
30
|
+
* @throws Error if the maximum size is invalid.
|
|
31
|
+
*/
|
|
32
|
+
export const isSizeValid = (size, maxSize) => {
|
|
33
|
+
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
34
|
+
// Extract the size from the digital unit
|
|
35
|
+
const extracted = maxSize.split(/^([\d.]+)\s*(b|kb|mb|gb)$/i).filter((x) => x);
|
|
36
|
+
if (!extracted) {
|
|
37
|
+
throw new Error('Invalid max size set');
|
|
38
|
+
}
|
|
39
|
+
const power = sizes.indexOf(extracted[1].toUpperCase());
|
|
40
|
+
return +extracted[0] * Math.pow(1024, power) > size;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Formats a byte size into a human-readable string.
|
|
44
|
+
*
|
|
45
|
+
* @param bytes - The size in bytes to format.
|
|
46
|
+
* @returns The formatted size string.
|
|
47
|
+
*/
|
|
48
|
+
export const formatBytes = (bytes) => {
|
|
49
|
+
if (!bytes)
|
|
50
|
+
return '0 Bytes';
|
|
51
|
+
const k = 1024;
|
|
52
|
+
const dm = 2;
|
|
53
|
+
const sizes = ['Bytes', 'KB', 'MB', 'GB'];
|
|
54
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
55
|
+
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Checks if a file is an image based on its type.
|
|
59
|
+
*
|
|
60
|
+
* @param file - The file object to check.
|
|
61
|
+
* @returns True if the file is an image, false otherwise.
|
|
62
|
+
*/
|
|
63
|
+
export const isImage = (file) => {
|
|
64
|
+
if (!file) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
return file.type.startsWith('image');
|
|
68
|
+
};
|
|
69
|
+
export const isCorrectResolution = (image, resolution) => {
|
|
70
|
+
if (resolution.split('x').length !== 2) {
|
|
71
|
+
throw new Error('Incorrect fixed resultion format, should be formatted like "600x400"');
|
|
72
|
+
}
|
|
73
|
+
const [width, height] = resolution.split('x');
|
|
74
|
+
const img = new Image();
|
|
75
|
+
return new Promise((resolve, reject) => {
|
|
76
|
+
img.onload = () => {
|
|
77
|
+
const correct = img.naturalWidth === parseInt(width, 10) && img.naturalHeight === parseInt(height, 10);
|
|
78
|
+
resolve(correct);
|
|
79
|
+
URL.revokeObjectURL(img.src);
|
|
80
|
+
};
|
|
81
|
+
const objectURL = URL.createObjectURL(image);
|
|
82
|
+
img.src = objectURL;
|
|
83
|
+
img.onerror = () => {
|
|
84
|
+
URL.revokeObjectURL(img.src);
|
|
85
|
+
reject(new Error('Error reading aspect ratio'));
|
|
86
|
+
};
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __decorate } from
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
2
|
import { html } from 'lit';
|
|
3
3
|
import '@material/web/dialog/dialog.js';
|
|
4
4
|
import '@material/web/button/filled-button.js';
|
|
@@ -7,8 +7,8 @@ import '@material/web/icon/icon.js';
|
|
|
7
7
|
import '@material/web/iconbutton/icon-button.js';
|
|
8
8
|
import { property, query, state } from 'lit/decorators.js';
|
|
9
9
|
import { ExmgElement } from '@exmg/lit-base';
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
|
|
11
|
+
class ExmDialogUploadBase extends ExmgElement {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
14
|
/**
|
|
@@ -223,4 +223,6 @@ __decorate([
|
|
|
223
223
|
__decorate([
|
|
224
224
|
property({ type: String })
|
|
225
225
|
], ExmDialogUploadBase.prototype, "buttonCropDoneCopy", void 0);
|
|
226
|
-
|
|
226
|
+
|
|
227
|
+
export { ExmDialogUploadBase };
|
|
228
|
+
//# sourceMappingURL=exm-dialog-upload-base.js.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { __decorate } from
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
2
|
import { customElement } from 'lit/decorators.js';
|
|
3
3
|
import { style } from './styles/exm-dialog-upload-css.js';
|
|
4
4
|
import { ExmDialogUploadBase } from './exm-dialog-upload-base.js';
|
|
5
|
+
|
|
5
6
|
let ExmDialogUpload = class ExmDialogUpload extends ExmDialogUploadBase {
|
|
6
7
|
getUploadElement() {
|
|
7
8
|
return this.querySelector('exm-upload');
|
|
@@ -11,5 +12,6 @@ ExmDialogUpload.styles = [style];
|
|
|
11
12
|
ExmDialogUpload = __decorate([
|
|
12
13
|
customElement('exm-dialog-upload')
|
|
13
14
|
], ExmDialogUpload);
|
|
15
|
+
|
|
14
16
|
export { ExmDialogUpload };
|
|
15
|
-
//# sourceMappingURL=exm-dialog-upload.js.map
|
|
17
|
+
//# sourceMappingURL=exm-dialog-upload.js.map
|
package/dist/exm-upload-base.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { __decorate } from
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
2
|
import { html } from 'lit';
|
|
3
|
-
import { property,
|
|
3
|
+
import { property, state, query } from 'lit/decorators.js';
|
|
4
4
|
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
5
5
|
import { repeat } from 'lit/directives/repeat.js';
|
|
6
6
|
import '@material/web/icon/icon.js';
|
|
7
7
|
import { FileUploadError } from './types.js';
|
|
8
|
-
// File upload imports
|
|
9
8
|
import './exm-upload-item.js';
|
|
10
9
|
import './exm-upload-crop.js';
|
|
11
10
|
import './exm-upload-drop-area.js';
|
|
12
|
-
import {
|
|
11
|
+
import { isSizeValid, isTypeValidExtension, isImage, isCorrectResolution } from './utils.js';
|
|
13
12
|
import { classMap } from 'lit/directives/class-map.js';
|
|
14
|
-
import {
|
|
15
|
-
|
|
13
|
+
import { observer, ExmgElement } from '@exmg/lit-base';
|
|
14
|
+
|
|
15
|
+
class ExmUploadBase extends ExmgElement {
|
|
16
16
|
constructor() {
|
|
17
17
|
super(...arguments);
|
|
18
18
|
/**
|
|
@@ -370,4 +370,6 @@ __decorate([
|
|
|
370
370
|
__decorate([
|
|
371
371
|
query('.item-container')
|
|
372
372
|
], ExmUploadBase.prototype, "itemContainer", void 0);
|
|
373
|
-
|
|
373
|
+
|
|
374
|
+
export { ExmUploadBase };
|
|
375
|
+
//# sourceMappingURL=exm-upload-base.js.map
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { __decorate } from
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
2
|
import { html, nothing } from 'lit';
|
|
3
|
-
import {
|
|
3
|
+
import { property, query, state } from 'lit/decorators.js';
|
|
4
4
|
import '@material/web/button/filled-button.js';
|
|
5
5
|
import { ExmgElement } from '@exmg/lit-base';
|
|
6
6
|
import Cropper from 'cropperjs';
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
class ExmUploadCropBase extends ExmgElement {
|
|
8
9
|
constructor() {
|
|
9
10
|
super(...arguments);
|
|
10
11
|
this.cropperConfig = {};
|
|
@@ -73,4 +74,6 @@ __decorate([
|
|
|
73
74
|
__decorate([
|
|
74
75
|
state()
|
|
75
76
|
], ExmUploadCropBase.prototype, "_item", void 0);
|
|
76
|
-
|
|
77
|
+
|
|
78
|
+
export { ExmUploadCropBase };
|
|
79
|
+
//# sourceMappingURL=exm-upload-crop-base.js.map
|
package/dist/exm-upload-crop.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { __decorate } from
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
2
|
import { customElement } from 'lit/decorators.js';
|
|
3
3
|
import { style } from './styles/exm-upload-crop-styles-css.js';
|
|
4
4
|
import { ExmUploadCropBase } from './exm-upload-crop-base.js';
|
|
5
|
+
|
|
5
6
|
let ExmUploadCrop = class ExmUploadCrop extends ExmUploadCropBase {
|
|
6
7
|
};
|
|
7
8
|
ExmUploadCrop.styles = style;
|
|
8
9
|
ExmUploadCrop = __decorate([
|
|
9
10
|
customElement('exm-upload-crop')
|
|
10
11
|
], ExmUploadCrop);
|
|
12
|
+
|
|
11
13
|
export { ExmUploadCrop };
|
|
12
|
-
//# sourceMappingURL=exm-upload-crop.js.map
|
|
14
|
+
//# sourceMappingURL=exm-upload-crop.js.map
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { __decorate } from
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
2
|
import { html } from 'lit';
|
|
3
3
|
import { property } from 'lit/decorators.js';
|
|
4
4
|
import { classMap } from 'lit/directives/class-map.js';
|
|
5
5
|
import { DragAndDropMixin } from './mixins/exm-upload-drag-drop-mixin.js';
|
|
6
6
|
import { ExmgElement } from '@exmg/lit-base';
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
class ExmUploadDropAreaBase extends DragAndDropMixin(ExmgElement) {
|
|
8
9
|
render() {
|
|
9
10
|
return html ` <div
|
|
10
11
|
class="drop ${classMap({
|
|
@@ -31,4 +32,6 @@ __decorate([
|
|
|
31
32
|
__decorate([
|
|
32
33
|
property({ type: Boolean })
|
|
33
34
|
], ExmUploadDropAreaBase.prototype, "disabled", void 0);
|
|
34
|
-
|
|
35
|
+
|
|
36
|
+
export { ExmUploadDropAreaBase };
|
|
37
|
+
//# sourceMappingURL=exm-upload-drop-area-base.js.map
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { __decorate } from
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
2
|
import { customElement } from 'lit/decorators.js';
|
|
3
3
|
import { style } from './styles/exm-upload-drop-area-styles-css.js';
|
|
4
4
|
import { ExmUploadDropAreaBase } from './exm-upload-drop-area-base.js';
|
|
5
|
+
|
|
5
6
|
let ExmUploadDropArea = class ExmUploadDropArea extends ExmUploadDropAreaBase {
|
|
6
7
|
};
|
|
7
8
|
ExmUploadDropArea.styles = style;
|
|
8
9
|
ExmUploadDropArea = __decorate([
|
|
9
10
|
customElement('exm-upload-drop-area')
|
|
10
11
|
], ExmUploadDropArea);
|
|
12
|
+
|
|
11
13
|
export { ExmUploadDropArea };
|
|
12
|
-
//# sourceMappingURL=exm-upload-drop-area.js.map
|
|
14
|
+
//# sourceMappingURL=exm-upload-drop-area.js.map
|
package/dist/exm-upload-input.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { __decorate } from
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
2
|
import { LitElement, html } from 'lit';
|
|
3
|
-
import {
|
|
3
|
+
import { property, customElement } from 'lit/decorators.js';
|
|
4
4
|
import '@exmg/exm-collapsed';
|
|
5
5
|
import { style } from './styles/exm-upload-input-css.js';
|
|
6
|
+
|
|
6
7
|
let ExmUploadInput = class ExmUploadInput extends LitElement {
|
|
7
8
|
constructor() {
|
|
8
9
|
super(...arguments);
|
|
@@ -80,5 +81,6 @@ __decorate([
|
|
|
80
81
|
ExmUploadInput = __decorate([
|
|
81
82
|
customElement('exm-upload-input')
|
|
82
83
|
], ExmUploadInput);
|
|
84
|
+
|
|
83
85
|
export { ExmUploadInput };
|
|
84
|
-
//# sourceMappingURL=exm-upload-input.js.map
|
|
86
|
+
//# sourceMappingURL=exm-upload-input.js.map
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { __decorate } from
|
|
2
|
-
import {
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
|
+
import { nothing, html } from 'lit';
|
|
3
3
|
import { property } from 'lit/decorators.js';
|
|
4
4
|
import '@material/web/icon/icon.js';
|
|
5
5
|
import '@material/web/iconbutton/icon-button.js';
|
|
6
6
|
import '@material/web/progress/linear-progress.js';
|
|
7
|
-
import {
|
|
7
|
+
import { isImage, formatBytes } from './utils.js';
|
|
8
8
|
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
9
|
-
import { UploadService } from './upload/
|
|
9
|
+
import { UploadService } from './upload/service.js';
|
|
10
10
|
import { ExmgElement } from '@exmg/lit-base';
|
|
11
|
-
|
|
11
|
+
|
|
12
|
+
class ExmUploadItemBase extends ExmgElement {
|
|
12
13
|
constructor() {
|
|
13
14
|
super(...arguments);
|
|
14
15
|
/**
|
|
@@ -172,4 +173,6 @@ __decorate([
|
|
|
172
173
|
__decorate([
|
|
173
174
|
property({ type: Number })
|
|
174
175
|
], ExmUploadItemBase.prototype, "aspectRatio", void 0);
|
|
175
|
-
|
|
176
|
+
|
|
177
|
+
export { ExmUploadItemBase };
|
|
178
|
+
//# sourceMappingURL=exm-upload-item-base.js.map
|
package/dist/exm-upload-item.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { __decorate } from
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
2
|
import { customElement } from 'lit/decorators.js';
|
|
3
3
|
import { style } from './styles/exm-upload-item-styles-css.js';
|
|
4
4
|
import { ExmUploadItemBase } from './exm-upload-item-base.js';
|
|
5
|
+
|
|
5
6
|
let ExmUploadItem = class ExmUploadItem extends ExmUploadItemBase {
|
|
6
7
|
};
|
|
7
8
|
ExmUploadItem.styles = style;
|
|
8
9
|
ExmUploadItem = __decorate([
|
|
9
10
|
customElement('exm-upload-item')
|
|
10
11
|
], ExmUploadItem);
|
|
12
|
+
|
|
11
13
|
export { ExmUploadItem };
|
|
12
|
-
//# sourceMappingURL=exm-upload-item.js.map
|
|
14
|
+
//# sourceMappingURL=exm-upload-item.js.map
|
package/dist/exm-upload.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { __decorate } from
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
2
|
import { style } from './styles/exm-upload-styles-css.js';
|
|
3
3
|
import { ExmUploadBase } from './exm-upload-base.js';
|
|
4
4
|
import { customElement } from 'lit/decorators.js';
|
|
5
|
+
|
|
5
6
|
/**
|
|
6
7
|
* `exm-upload`
|
|
7
8
|
* Example:
|
|
@@ -18,5 +19,6 @@ ExmUpload.styles = style;
|
|
|
18
19
|
ExmUpload = __decorate([
|
|
19
20
|
customElement('exm-upload')
|
|
20
21
|
], ExmUpload);
|
|
22
|
+
|
|
21
23
|
export { ExmUpload };
|
|
22
|
-
//# sourceMappingURL=exm-upload.js.map
|
|
24
|
+
//# sourceMappingURL=exm-upload.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export { ExmUploadItem } from './exm-upload-item.js';
|
|
|
8
8
|
export { ExmUploadItemBase } from './exm-upload-item-base.js';
|
|
9
9
|
export { ExmDialogUpload } from './exm-dialog-upload.js';
|
|
10
10
|
export { ExmDialogUploadBase } from './exm-dialog-upload-base.js';
|
|
11
|
+
export { ExmUploadInput } from './exm-upload-input.js';
|
|
11
12
|
export { FileData, FileUploadConfig } from './types.js';
|
|
12
13
|
export { UploadAdapter, UploadConfig } from './upload/types.js';
|
|
13
14
|
export { UploadService } from './upload/index.js';
|
package/dist/index.js
CHANGED
|
@@ -8,10 +8,11 @@ export { ExmUploadItem } from './exm-upload-item.js';
|
|
|
8
8
|
export { ExmUploadItemBase } from './exm-upload-item-base.js';
|
|
9
9
|
export { ExmDialogUpload } from './exm-dialog-upload.js';
|
|
10
10
|
export { ExmDialogUploadBase } from './exm-dialog-upload-base.js';
|
|
11
|
-
export {
|
|
11
|
+
export { ExmUploadInput } from './exm-upload-input.js';
|
|
12
|
+
export { UploadService } from './upload/service.js';
|
|
12
13
|
export { style as exmgUploadStyles } from './styles/exm-upload-styles-css.js';
|
|
13
14
|
export { style as exmgUploadDropAreaStyles } from './styles/exm-upload-drop-area-styles-css.js';
|
|
14
15
|
export { style as exmgUploadCropStyles } from './styles/exm-upload-crop-styles-css.js';
|
|
15
16
|
export { style as exmgUploadItemStyles } from './styles/exm-upload-item-styles-css.js';
|
|
16
17
|
export { style as exmgDialogUploadStyles } from './styles/exm-dialog-upload-css.js';
|
|
17
|
-
//# sourceMappingURL=index.js.map
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { __decorate } from
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
2
|
import { property } from 'lit/decorators.js';
|
|
3
|
-
|
|
3
|
+
|
|
4
|
+
const DragAndDropMixin = (superClass) => {
|
|
4
5
|
class DragAndDropMixin extends superClass {
|
|
5
6
|
constructor() {
|
|
6
7
|
super(...arguments);
|
|
@@ -25,4 +26,6 @@ export const DragAndDropMixin = (superClass) => {
|
|
|
25
26
|
], DragAndDropMixin.prototype, "dragOver", void 0);
|
|
26
27
|
return DragAndDropMixin;
|
|
27
28
|
};
|
|
28
|
-
|
|
29
|
+
|
|
30
|
+
export { DragAndDropMixin };
|
|
31
|
+
//# sourceMappingURL=exm-upload-drag-drop-mixin.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
const style = css `
|
|
3
4
|
:host {
|
|
4
5
|
border-start-start-radius: var(
|
|
5
6
|
--md-dialog-container-shape-start-start,
|
|
@@ -250,4 +251,6 @@ export const style = css `
|
|
|
250
251
|
width: 460px;
|
|
251
252
|
}
|
|
252
253
|
`;
|
|
253
|
-
|
|
254
|
+
|
|
255
|
+
export { style };
|
|
256
|
+
//# sourceMappingURL=exm-dialog-upload-css.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
const style = css `
|
|
3
4
|
#image {
|
|
4
5
|
z-index: 99999;
|
|
5
6
|
display: flex;
|
|
@@ -321,4 +322,6 @@ export const style = css `
|
|
|
321
322
|
cursor: not-allowed;
|
|
322
323
|
}
|
|
323
324
|
`;
|
|
324
|
-
|
|
325
|
+
|
|
326
|
+
export { style };
|
|
327
|
+
//# sourceMappingURL=exm-upload-crop-styles-css.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
const style = css `
|
|
3
4
|
:host {
|
|
4
5
|
display: flex;
|
|
5
6
|
width: 100%;
|
|
@@ -49,4 +50,6 @@ export const style = css `
|
|
|
49
50
|
background-image: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' rx='10' ry='10' stroke='%230071dc' stroke-width='4' stroke-dasharray='6%2c 10' stroke-dashoffset='6' stroke-linecap='square'/%3e%3c/svg%3e");
|
|
50
51
|
}
|
|
51
52
|
`;
|
|
52
|
-
|
|
53
|
+
|
|
54
|
+
export { style };
|
|
55
|
+
//# sourceMappingURL=exm-upload-drop-area-styles-css.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
const style = css `
|
|
3
4
|
:host {
|
|
4
5
|
display: inline-flex;
|
|
5
6
|
}
|
|
@@ -19,4 +20,6 @@ export const style = css `
|
|
|
19
20
|
fill: var(--exm-upload-input-icon-fill, #0071dc);
|
|
20
21
|
}
|
|
21
22
|
`;
|
|
22
|
-
|
|
23
|
+
|
|
24
|
+
export { style };
|
|
25
|
+
//# sourceMappingURL=exm-upload-input-css.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
const style = css `
|
|
3
4
|
:host {
|
|
4
5
|
display: flex;
|
|
5
6
|
align-items: center;
|
|
@@ -121,4 +122,6 @@ export const style = css `
|
|
|
121
122
|
}
|
|
122
123
|
}
|
|
123
124
|
`;
|
|
124
|
-
|
|
125
|
+
|
|
126
|
+
export { style };
|
|
127
|
+
//# sourceMappingURL=exm-upload-item-styles-css.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
const style = css `
|
|
3
4
|
:host {
|
|
4
5
|
display: flex;
|
|
5
6
|
color: var(--exm-upload-text-color, #000);
|
|
@@ -147,4 +148,6 @@ export const style = css `
|
|
|
147
148
|
--md-icon-weight: 600;
|
|
148
149
|
}
|
|
149
150
|
`;
|
|
150
|
-
|
|
151
|
+
|
|
152
|
+
export { style };
|
|
153
|
+
//# sourceMappingURL=exm-upload-styles-css.js.map
|
package/dist/types.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
var FileUploadError;
|
|
2
2
|
(function (FileUploadError) {
|
|
3
3
|
FileUploadError["INVALID_SIZE"] = "File size too large";
|
|
4
4
|
FileUploadError["INVALID_TYPE"] = "Invalid file type";
|
|
@@ -6,5 +6,7 @@ export var FileUploadError;
|
|
|
6
6
|
FileUploadError["INVALID_MULTIPLE"] = "Multiple files not allowed";
|
|
7
7
|
FileUploadError["INVALID_RESOLUTION"] = "Image resulution is not valid";
|
|
8
8
|
FileUploadError["SERVER_ERROR"] = "Server error occured";
|
|
9
|
-
})(FileUploadError
|
|
10
|
-
|
|
9
|
+
})(FileUploadError || (FileUploadError = {}));
|
|
10
|
+
|
|
11
|
+
export { FileUploadError };
|
|
12
|
+
//# sourceMappingURL=types.js.map
|