@chayns-components/gallery 5.0.0-beta.104 → 5.0.0-beta.107
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/lib/api/image/post.d.ts +14 -0
- package/lib/api/image/post.js +61 -0
- package/lib/api/image/post.js.map +1 -0
- package/lib/api/video/post.d.ts +13 -0
- package/lib/api/video/post.js +32 -0
- package/lib/api/video/post.js.map +1 -0
- package/lib/components/gallery/Gallery.d.ts +15 -1
- package/lib/components/gallery/Gallery.js +173 -3
- package/lib/components/gallery/Gallery.js.map +1 -1
- package/lib/components/gallery/Gallery.styles.d.ts +13 -0
- package/lib/components/gallery/Gallery.styles.js +98 -2
- package/lib/components/gallery/Gallery.styles.js.map +1 -1
- package/lib/types/files.d.ts +17 -0
- package/lib/types/files.js +6 -0
- package/lib/types/files.js.map +1 -0
- package/lib/utils/file.d.ts +9 -0
- package/lib/utils/file.js +77 -0
- package/lib/utils/file.js.map +1 -0
- package/package.json +3 -3
- package/lib/index.d.ts +0 -1
- package/lib/index.js +0 -14
- package/lib/index.js.map +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Image } from '../../types/files';
|
|
2
|
+
/**
|
|
3
|
+
* Uploads an image to the tsimg cloud service.
|
|
4
|
+
*/
|
|
5
|
+
interface Post {
|
|
6
|
+
accessToken: string;
|
|
7
|
+
file: File | string;
|
|
8
|
+
referenceId?: string;
|
|
9
|
+
personId: string;
|
|
10
|
+
siteId?: string;
|
|
11
|
+
url?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const imageUpload: ({ accessToken, file, referenceId, personId, siteId, url, }: Post) => Promise<Image>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.imageUpload = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Uploads an image to the tsimg cloud service.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const imageUpload = async _ref => {
|
|
12
|
+
let {
|
|
13
|
+
accessToken,
|
|
14
|
+
file,
|
|
15
|
+
referenceId,
|
|
16
|
+
personId,
|
|
17
|
+
siteId,
|
|
18
|
+
url = 'https://api.tsimg.cloud/image'
|
|
19
|
+
} = _ref;
|
|
20
|
+
const headers = new Headers({
|
|
21
|
+
Accept: 'application/json'
|
|
22
|
+
});
|
|
23
|
+
if (referenceId) headers.set('X-Reference-Id', referenceId);
|
|
24
|
+
if (personId) headers.set('X-Person-Id', personId);
|
|
25
|
+
if (siteId) headers.set('X-Site-Id', siteId);
|
|
26
|
+
headers.set('Authorization', `bearer ${accessToken}`);
|
|
27
|
+
let body;
|
|
28
|
+
if (typeof file === 'string') {
|
|
29
|
+
headers.set('Content-Type', 'application/json');
|
|
30
|
+
body = JSON.stringify({
|
|
31
|
+
url: file
|
|
32
|
+
});
|
|
33
|
+
} else {
|
|
34
|
+
headers.set('Content-Type', 'image/*');
|
|
35
|
+
body = await getFileArrayBuffer(file);
|
|
36
|
+
}
|
|
37
|
+
const response = await fetch(url, {
|
|
38
|
+
method: 'POST',
|
|
39
|
+
body,
|
|
40
|
+
headers
|
|
41
|
+
});
|
|
42
|
+
if (response.ok) {
|
|
43
|
+
return await response.json();
|
|
44
|
+
}
|
|
45
|
+
throw Error(`Uploading the image failed with status code ${response.status}.`);
|
|
46
|
+
};
|
|
47
|
+
exports.imageUpload = imageUpload;
|
|
48
|
+
const getFileArrayBuffer = file => new Promise((resolve, reject) => {
|
|
49
|
+
const reader = new FileReader();
|
|
50
|
+
reader.onload = e => {
|
|
51
|
+
var _e$target;
|
|
52
|
+
if ((_e$target = e.target) !== null && _e$target !== void 0 && _e$target.result) {
|
|
53
|
+
resolve(e.target.result);
|
|
54
|
+
} else {
|
|
55
|
+
reject(Error('Could not get array buffer.'));
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
reader.onerror = reject;
|
|
59
|
+
reader.readAsArrayBuffer(file);
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=post.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post.js","names":["imageUpload","_ref","accessToken","file","referenceId","personId","siteId","url","headers","Headers","Accept","set","body","JSON","stringify","getFileArrayBuffer","response","fetch","method","ok","json","Error","status","exports","Promise","resolve","reject","reader","FileReader","onload","e","_e$target","target","result","onerror","readAsArrayBuffer"],"sources":["../../../src/api/image/post.ts"],"sourcesContent":["import type { Image } from '../../types/files';\n\n/**\n * Uploads an image to the tsimg cloud service.\n */\ninterface Post {\n accessToken: string;\n file: File | string;\n referenceId?: string;\n personId: string;\n siteId?: string;\n url?: string;\n}\n\nexport const imageUpload = async ({\n accessToken,\n file,\n referenceId,\n personId,\n siteId,\n url = 'https://api.tsimg.cloud/image',\n}: Post): Promise<Image> => {\n const headers = new Headers({ Accept: 'application/json' });\n\n if (referenceId) headers.set('X-Reference-Id', referenceId);\n if (personId) headers.set('X-Person-Id', personId);\n if (siteId) headers.set('X-Site-Id', siteId);\n\n headers.set('Authorization', `bearer ${accessToken}`);\n\n let body: string | ArrayBuffer;\n\n if (typeof file === 'string') {\n headers.set('Content-Type', 'application/json');\n body = JSON.stringify({ url: file });\n } else {\n headers.set('Content-Type', 'image/*');\n body = await getFileArrayBuffer(file);\n }\n\n const response = await fetch(url, { method: 'POST', body, headers });\n\n if (response.ok) {\n return (await response.json()) as Promise<Image>;\n }\n\n throw Error(`Uploading the image failed with status code ${response.status}.`);\n};\n\nconst getFileArrayBuffer = (file: File): Promise<string | ArrayBuffer> =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = (e) => {\n if (e.target?.result) {\n resolve(e.target.result);\n } else {\n reject(Error('Could not get array buffer.'));\n }\n };\n reader.onerror = reject;\n reader.readAsArrayBuffer(file);\n });\n"],"mappings":";;;;;;AAEA;AACA;AACA;;AAUO,MAAMA,WAAW,GAAG,MAAAC,IAAA,IAOC;EAAA,IAPM;IAC9BC,WAAW;IACXC,IAAI;IACJC,WAAW;IACXC,QAAQ;IACRC,MAAM;IACNC,GAAG,GAAG;EACJ,CAAC,GAAAN,IAAA;EACH,MAAMO,OAAO,GAAG,IAAIC,OAAO,CAAC;IAAEC,MAAM,EAAE;EAAmB,CAAC,CAAC;EAE3D,IAAIN,WAAW,EAAEI,OAAO,CAACG,GAAG,CAAC,gBAAgB,EAAEP,WAAW,CAAC;EAC3D,IAAIC,QAAQ,EAAEG,OAAO,CAACG,GAAG,CAAC,aAAa,EAAEN,QAAQ,CAAC;EAClD,IAAIC,MAAM,EAAEE,OAAO,CAACG,GAAG,CAAC,WAAW,EAAEL,MAAM,CAAC;EAE5CE,OAAO,CAACG,GAAG,CAAC,eAAe,EAAG,UAAST,WAAY,EAAC,CAAC;EAErD,IAAIU,IAA0B;EAE9B,IAAI,OAAOT,IAAI,KAAK,QAAQ,EAAE;IAC1BK,OAAO,CAACG,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAC/CC,IAAI,GAAGC,IAAI,CAACC,SAAS,CAAC;MAAEP,GAAG,EAAEJ;IAAK,CAAC,CAAC;EACxC,CAAC,MAAM;IACHK,OAAO,CAACG,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC;IACtCC,IAAI,GAAG,MAAMG,kBAAkB,CAACZ,IAAI,CAAC;EACzC;EAEA,MAAMa,QAAQ,GAAG,MAAMC,KAAK,CAACV,GAAG,EAAE;IAAEW,MAAM,EAAE,MAAM;IAAEN,IAAI;IAAEJ;EAAQ,CAAC,CAAC;EAEpE,IAAIQ,QAAQ,CAACG,EAAE,EAAE;IACb,OAAQ,MAAMH,QAAQ,CAACI,IAAI,EAAE;EACjC;EAEA,MAAMC,KAAK,CAAE,+CAA8CL,QAAQ,CAACM,MAAO,GAAE,CAAC;AAClF,CAAC;AAACC,OAAA,CAAAvB,WAAA,GAAAA,WAAA;AAEF,MAAMe,kBAAkB,GAAIZ,IAAU,IAClC,IAAIqB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;EAC7B,MAAMC,MAAM,GAAG,IAAIC,UAAU,EAAE;EAC/BD,MAAM,CAACE,MAAM,GAAIC,CAAC,IAAK;IAAA,IAAAC,SAAA;IACnB,KAAAA,SAAA,GAAID,CAAC,CAACE,MAAM,cAAAD,SAAA,eAARA,SAAA,CAAUE,MAAM,EAAE;MAClBR,OAAO,CAACK,CAAC,CAACE,MAAM,CAACC,MAAM,CAAC;IAC5B,CAAC,MAAM;MACHP,MAAM,CAACL,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAChD;EACJ,CAAC;EACDM,MAAM,CAACO,OAAO,GAAGR,MAAM;EACvBC,MAAM,CAACQ,iBAAiB,CAAChC,IAAI,CAAC;AAClC,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface PostVideoResult {
|
|
2
|
+
id: number;
|
|
3
|
+
originalVideoQuality: string;
|
|
4
|
+
thumbnailUrl: string;
|
|
5
|
+
url: string;
|
|
6
|
+
urlMP4: string;
|
|
7
|
+
}
|
|
8
|
+
interface PostVideoOptions {
|
|
9
|
+
accessToken: string;
|
|
10
|
+
file: File | Blob;
|
|
11
|
+
}
|
|
12
|
+
export declare const postVideo: ({ accessToken, file, }: PostVideoOptions) => Promise<PostVideoResult>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.postVideo = void 0;
|
|
7
|
+
const postVideo = async _ref => {
|
|
8
|
+
let {
|
|
9
|
+
accessToken,
|
|
10
|
+
file
|
|
11
|
+
} = _ref;
|
|
12
|
+
const formData = new FormData();
|
|
13
|
+
formData.append('files', file);
|
|
14
|
+
const requestInit = {
|
|
15
|
+
headers: {
|
|
16
|
+
Authorization: `Bearer ${accessToken}`
|
|
17
|
+
},
|
|
18
|
+
method: 'POST',
|
|
19
|
+
body: formData
|
|
20
|
+
};
|
|
21
|
+
const url = `https://streamingservice.chayns.space/video?disableIntercom=true`;
|
|
22
|
+
const response = await fetch(url, requestInit);
|
|
23
|
+
|
|
24
|
+
// console.log(await response.json());
|
|
25
|
+
|
|
26
|
+
if (response.status === 202) {
|
|
27
|
+
return await response.json();
|
|
28
|
+
}
|
|
29
|
+
throw Error(`Uploading the Video failed with status code ${response.status}.`);
|
|
30
|
+
};
|
|
31
|
+
exports.postVideo = postVideo;
|
|
32
|
+
//# sourceMappingURL=post.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post.js","names":["postVideo","_ref","accessToken","file","formData","FormData","append","requestInit","headers","Authorization","method","body","url","response","fetch","status","json","Error","exports"],"sources":["../../../src/api/video/post.ts"],"sourcesContent":["export interface PostVideoResult {\n id: number;\n originalVideoQuality: string;\n thumbnailUrl: string;\n url: string;\n urlMP4: string;\n}\n\ninterface PostVideoOptions {\n accessToken: string;\n file: File | Blob;\n}\n\nexport const postVideo = async ({\n accessToken,\n file,\n}: PostVideoOptions): Promise<PostVideoResult> => {\n const formData = new FormData();\n\n formData.append('files', file);\n\n const requestInit: RequestInit = {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n method: 'POST',\n body: formData,\n };\n\n const url = `https://streamingservice.chayns.space/video?disableIntercom=true`;\n\n const response = await fetch(url, requestInit);\n\n // console.log(await response.json());\n\n if (response.status === 202) {\n return (await response.json()) as PostVideoResult;\n }\n\n throw Error(`Uploading the Video failed with status code ${response.status}.`);\n};\n"],"mappings":";;;;;;AAaO,MAAMA,SAAS,GAAG,MAAAC,IAAA,IAGyB;EAAA,IAHlB;IAC5BC,WAAW;IACXC;EACc,CAAC,GAAAF,IAAA;EACf,MAAMG,QAAQ,GAAG,IAAIC,QAAQ,EAAE;EAE/BD,QAAQ,CAACE,MAAM,CAAC,OAAO,EAAEH,IAAI,CAAC;EAE9B,MAAMI,WAAwB,GAAG;IAC7BC,OAAO,EAAE;MACLC,aAAa,EAAG,UAASP,WAAY;IACzC,CAAC;IACDQ,MAAM,EAAE,MAAM;IACdC,IAAI,EAAEP;EACV,CAAC;EAED,MAAMQ,GAAG,GAAI,kEAAiE;EAE9E,MAAMC,QAAQ,GAAG,MAAMC,KAAK,CAACF,GAAG,EAAEL,WAAW,CAAC;;EAE9C;;EAEA,IAAIM,QAAQ,CAACE,MAAM,KAAK,GAAG,EAAE;IACzB,OAAQ,MAAMF,QAAQ,CAACG,IAAI,EAAE;EACjC;EAEA,MAAMC,KAAK,CAAE,+CAA8CJ,QAAQ,CAACE,MAAO,GAAE,CAAC;AAClF,CAAC;AAACG,OAAA,CAAAlB,SAAA,GAAAA,SAAA"}
|
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
import { FC } from 'react';
|
|
2
|
-
|
|
2
|
+
import type { UploadedFile } from '../../types/files';
|
|
3
|
+
export type GalleryProps = {
|
|
4
|
+
/**
|
|
5
|
+
* AccessToken of the user
|
|
6
|
+
*/
|
|
7
|
+
accessToken: string;
|
|
8
|
+
/**
|
|
9
|
+
* Function to be executed when files are added or removed
|
|
10
|
+
*/
|
|
11
|
+
onChange: (files: UploadedFile[]) => void;
|
|
12
|
+
/**
|
|
13
|
+
* PersonId of the user
|
|
14
|
+
*/
|
|
15
|
+
personId: string;
|
|
16
|
+
};
|
|
3
17
|
declare const Gallery: FC<GalleryProps>;
|
|
4
18
|
export default Gallery;
|
|
@@ -4,10 +4,180 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _react =
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _post = require("../../api/image/post");
|
|
9
|
+
var _post2 = require("../../api/video/post");
|
|
10
|
+
var _file = require("../../utils/file");
|
|
8
11
|
var _Gallery = require("./Gallery.styles");
|
|
9
|
-
|
|
10
|
-
|
|
12
|
+
var _core = require("@chayns-components/core");
|
|
13
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
14
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
|
+
// Types
|
|
16
|
+
|
|
17
|
+
const Gallery = _ref => {
|
|
18
|
+
let {
|
|
19
|
+
accessToken,
|
|
20
|
+
onChange,
|
|
21
|
+
personId
|
|
22
|
+
} = _ref;
|
|
23
|
+
const [uploadedFiles, setUploadedFiles] = (0, _react.useState)();
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Upload files
|
|
27
|
+
*/
|
|
28
|
+
const uploadFiles = (0, _react.useCallback)(async filesToUpload => {
|
|
29
|
+
if (!filesToUpload) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const videos = filesToUpload.filter(_ref2 => {
|
|
33
|
+
let {
|
|
34
|
+
type
|
|
35
|
+
} = _ref2;
|
|
36
|
+
return type.includes('video/');
|
|
37
|
+
});
|
|
38
|
+
const images = filesToUpload.filter(_ref3 => {
|
|
39
|
+
let {
|
|
40
|
+
type
|
|
41
|
+
} = _ref3;
|
|
42
|
+
return type.includes('image/');
|
|
43
|
+
});
|
|
44
|
+
let newUploadedFiles = [];
|
|
45
|
+
|
|
46
|
+
// Upload videos
|
|
47
|
+
const videoResult = videos.map(video => (0, _post2.postVideo)({
|
|
48
|
+
accessToken,
|
|
49
|
+
file: video
|
|
50
|
+
}));
|
|
51
|
+
newUploadedFiles = newUploadedFiles.concat(await Promise.all(videoResult));
|
|
52
|
+
newUploadedFiles = newUploadedFiles.flat();
|
|
53
|
+
|
|
54
|
+
// Upload images
|
|
55
|
+
const imageResult = images.map(image => (0, _post.imageUpload)({
|
|
56
|
+
accessToken,
|
|
57
|
+
file: image,
|
|
58
|
+
personId
|
|
59
|
+
}));
|
|
60
|
+
newUploadedFiles = newUploadedFiles.concat(await Promise.all(imageResult));
|
|
61
|
+
if (!uploadedFiles) {
|
|
62
|
+
setUploadedFiles(newUploadedFiles);
|
|
63
|
+
onChange(newUploadedFiles);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
setUploadedFiles((0, _file.filterDuplicateFiles)(uploadedFiles, newUploadedFiles));
|
|
67
|
+
onChange((0, _file.filterDuplicateFiles)(uploadedFiles, newUploadedFiles));
|
|
68
|
+
}, [accessToken, onChange, personId, uploadedFiles]);
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* This function adds new data to the existing data list
|
|
72
|
+
*/
|
|
73
|
+
const handleAdd = (0, _react.useCallback)(filesAdd => {
|
|
74
|
+
if (!filesAdd) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
void uploadFiles(filesAdd);
|
|
78
|
+
}, [uploadFiles]);
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Open a dialog to select files
|
|
82
|
+
*/
|
|
83
|
+
const openSelectDialog = (0, _react.useCallback)(() => {
|
|
84
|
+
void (0, _file.selectFiles)({
|
|
85
|
+
multiple: true,
|
|
86
|
+
type: 'image/*, video/*'
|
|
87
|
+
}).then(selectedFiles => {
|
|
88
|
+
if (selectedFiles && selectedFiles.length > 0) {
|
|
89
|
+
const fileArray = (0, _file.convertFileListToArray)(selectedFiles);
|
|
90
|
+
|
|
91
|
+
// Filters files to use only under 64MB
|
|
92
|
+
const filteredFileArray = fileArray.filter(_ref4 => {
|
|
93
|
+
let {
|
|
94
|
+
size,
|
|
95
|
+
type
|
|
96
|
+
} = _ref4;
|
|
97
|
+
const sizeInMB = size / 1024 / 1024;
|
|
98
|
+
if (type.includes('video/') && sizeInMB > 500) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
return !(type.includes('image/') && sizeInMB > 64);
|
|
102
|
+
});
|
|
103
|
+
if (fileArray.length !== filteredFileArray.length) {
|
|
104
|
+
// ToDo show dialog that some files are to big
|
|
105
|
+
}
|
|
106
|
+
if (filteredFileArray.length === 0) {
|
|
107
|
+
// ToDo show dialog that all files are to big
|
|
108
|
+
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
handleAdd(filteredFileArray);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}, [handleAdd]);
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* This function deletes a selected file from the data list
|
|
118
|
+
*/
|
|
119
|
+
const handleDelete = (0, _react.useCallback)(key => {
|
|
120
|
+
const filteredFiles = uploadedFiles === null || uploadedFiles === void 0 ? void 0 : uploadedFiles.filter(file => {
|
|
121
|
+
if ('thumbnailUrl' in file) {
|
|
122
|
+
return file.id !== key;
|
|
123
|
+
}
|
|
124
|
+
return file.key !== key;
|
|
125
|
+
});
|
|
126
|
+
setUploadedFiles(filteredFiles !== null && filteredFiles !== void 0 ? filteredFiles : []);
|
|
127
|
+
onChange(filteredFiles !== null && filteredFiles !== void 0 ? filteredFiles : []);
|
|
128
|
+
}, [onChange, uploadedFiles]);
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* This function shows a selected file
|
|
132
|
+
*/
|
|
133
|
+
const showFile = (0, _react.useCallback)(file => {
|
|
134
|
+
if ('thumbnailUrl' in file) {
|
|
135
|
+
// @ts-expect-error: Type is correct here
|
|
136
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
137
|
+
void chayns.openVideo(file.url);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// @ts-expect-error: Type is correct here
|
|
142
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
143
|
+
void chayns.openImage([`${file.base}/${file.key}`], 0);
|
|
144
|
+
}, []);
|
|
145
|
+
const galleryItems = (0, _react.useMemo)(() => {
|
|
146
|
+
const items = [];
|
|
147
|
+
if (uploadedFiles) {
|
|
148
|
+
uploadedFiles.forEach(file => {
|
|
149
|
+
items.push( /*#__PURE__*/_react.default.createElement(_Gallery.StyledGalleryItem, {
|
|
150
|
+
key: 'thumbnailUrl' in file ? file.id : file.key
|
|
151
|
+
}, /*#__PURE__*/_react.default.createElement(_Gallery.StyledGalleryItemDeleteButton, {
|
|
152
|
+
onClick: () => handleDelete('thumbnailUrl' in file ? file.id : file.key)
|
|
153
|
+
}, /*#__PURE__*/_react.default.createElement(_core.Icon, {
|
|
154
|
+
size: 20,
|
|
155
|
+
icons: ['ts-wrong']
|
|
156
|
+
})), 'thumbnailUrl' in file ? /*#__PURE__*/_react.default.createElement(_Gallery.StyledGalleryItemVideo, {
|
|
157
|
+
onClick: () => showFile(file),
|
|
158
|
+
poster: file.thumbnailUrl
|
|
159
|
+
}, /*#__PURE__*/_react.default.createElement("source", {
|
|
160
|
+
src: file.url,
|
|
161
|
+
type: "video/mp4"
|
|
162
|
+
})) : /*#__PURE__*/_react.default.createElement(_Gallery.StyledGalleryItemImage, {
|
|
163
|
+
onClick: () => showFile(file),
|
|
164
|
+
draggable: false,
|
|
165
|
+
src: `${file.base}/${file.key}`
|
|
166
|
+
})));
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
items.push( /*#__PURE__*/_react.default.createElement(_Gallery.StyledGalleryItem, {
|
|
170
|
+
key: "addButton"
|
|
171
|
+
}, /*#__PURE__*/_react.default.createElement(_Gallery.StyledGalleryItemAdd, {
|
|
172
|
+
onClick: openSelectDialog
|
|
173
|
+
}, /*#__PURE__*/_react.default.createElement(_core.Icon, {
|
|
174
|
+
size: 40,
|
|
175
|
+
icons: ['fa fa-plus']
|
|
176
|
+
}))));
|
|
177
|
+
return items;
|
|
178
|
+
}, [handleDelete, openSelectDialog, showFile, uploadedFiles]);
|
|
179
|
+
return /*#__PURE__*/_react.default.createElement(_Gallery.StyledGallery, null, galleryItems);
|
|
180
|
+
};
|
|
11
181
|
Gallery.displayName = 'Gallery';
|
|
12
182
|
var _default = Gallery;
|
|
13
183
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gallery.js","names":["_react","_interopRequireDefault","require","_Gallery","obj","__esModule","default","Gallery","createElement","StyledGallery","displayName","_default","exports"],"sources":["../../../src/components/gallery/Gallery.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport { StyledGallery } from './Gallery.styles';\n\nexport type GalleryProps = unknown;\n\nconst Gallery: FC<GalleryProps> = () => <StyledGallery>Gallery</StyledGallery>;\n\nGallery.displayName = 'Gallery';\n\nexport default Gallery;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAAiD,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAIjD,MAAMG,OAAyB,GAAGA,CAAA,kBAAMP,MAAA,CAAAM,OAAA,CAAAE,aAAA,CAACL,QAAA,CAAAM,aAAa,QAAC,SAAO,CAAgB;AAE9EF,OAAO,CAACG,WAAW,GAAG,SAAS;AAAC,IAAAC,QAAA,GAEjBJ,OAAO;AAAAK,OAAA,CAAAN,OAAA,GAAAK,QAAA"}
|
|
1
|
+
{"version":3,"file":"Gallery.js","names":["_react","_interopRequireWildcard","require","_post","_post2","_file","_Gallery","_core","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Gallery","_ref","accessToken","onChange","personId","uploadedFiles","setUploadedFiles","useState","uploadFiles","useCallback","filesToUpload","videos","filter","_ref2","type","includes","images","_ref3","newUploadedFiles","videoResult","map","video","postVideo","file","concat","Promise","all","flat","imageResult","image","imageUpload","filterDuplicateFiles","handleAdd","filesAdd","openSelectDialog","selectFiles","multiple","then","selectedFiles","length","fileArray","convertFileListToArray","filteredFileArray","_ref4","size","sizeInMB","handleDelete","filteredFiles","id","showFile","chayns","openVideo","url","openImage","base","galleryItems","useMemo","items","forEach","push","createElement","StyledGalleryItem","StyledGalleryItemDeleteButton","onClick","Icon","icons","StyledGalleryItemVideo","poster","thumbnailUrl","src","StyledGalleryItemImage","draggable","StyledGalleryItemAdd","StyledGallery","displayName","_default","exports"],"sources":["../../../src/components/gallery/Gallery.tsx"],"sourcesContent":["import React, { FC, ReactElement, useCallback, useMemo, useState } from 'react';\nimport { imageUpload } from '../../api/image/post';\nimport { postVideo } from '../../api/video/post';\nimport { convertFileListToArray, filterDuplicateFiles, selectFiles } from '../../utils/file';\nimport {\n StyledGallery,\n StyledGalleryItem,\n StyledGalleryItemAdd,\n StyledGalleryItemDeleteButton,\n StyledGalleryItemImage,\n StyledGalleryItemVideo,\n} from './Gallery.styles';\n\n// Types\nimport { Icon } from '@chayns-components/core';\nimport type { Image, UploadedFile, Video } from '../../types/files';\n\nexport type GalleryProps = {\n /**\n * AccessToken of the user\n */\n accessToken: string;\n /**\n * Function to be executed when files are added or removed\n */\n onChange: (files: UploadedFile[]) => void;\n /**\n * PersonId of the user\n */\n personId: string;\n};\n\nconst Gallery: FC<GalleryProps> = ({ accessToken, onChange, personId }) => {\n const [uploadedFiles, setUploadedFiles] = useState<UploadedFile[]>();\n\n /**\n * Upload files\n */\n const uploadFiles = useCallback(\n async (filesToUpload: File[]) => {\n if (!filesToUpload) {\n return;\n }\n\n const videos = filesToUpload.filter(({ type }) => type.includes('video/'));\n const images = filesToUpload.filter(({ type }) => type.includes('image/'));\n let newUploadedFiles: UploadedFile[] = [];\n\n // Upload videos\n const videoResult: Promise<Video>[] = videos.map((video) =>\n postVideo({ accessToken, file: video })\n );\n\n newUploadedFiles = newUploadedFiles.concat(await Promise.all(videoResult));\n newUploadedFiles = newUploadedFiles.flat();\n\n // Upload images\n const imageResult: Promise<Image>[] = images.map((image) =>\n imageUpload({\n accessToken,\n file: image,\n personId,\n })\n );\n\n newUploadedFiles = newUploadedFiles.concat(await Promise.all(imageResult));\n\n if (!uploadedFiles) {\n setUploadedFiles(newUploadedFiles);\n\n onChange(newUploadedFiles);\n\n return;\n }\n\n setUploadedFiles(filterDuplicateFiles(uploadedFiles, newUploadedFiles));\n\n onChange(filterDuplicateFiles(uploadedFiles, newUploadedFiles));\n },\n [accessToken, onChange, personId, uploadedFiles]\n );\n\n /**\n * This function adds new data to the existing data list\n */\n const handleAdd = useCallback(\n (filesAdd: File[]) => {\n if (!filesAdd) {\n return;\n }\n\n void uploadFiles(filesAdd);\n },\n [uploadFiles]\n );\n\n /**\n * Open a dialog to select files\n */\n const openSelectDialog = useCallback(() => {\n void selectFiles({\n multiple: true,\n type: 'image/*, video/*',\n }).then((selectedFiles) => {\n if (selectedFiles && selectedFiles.length > 0) {\n const fileArray = convertFileListToArray(selectedFiles);\n\n // Filters files to use only under 64MB\n const filteredFileArray = fileArray.filter(({ size, type }) => {\n const sizeInMB = size / 1024 / 1024;\n\n if (type.includes('video/') && sizeInMB > 500) {\n return false;\n }\n\n return !(type.includes('image/') && sizeInMB > 64);\n });\n\n if (fileArray.length !== filteredFileArray.length) {\n // ToDo show dialog that some files are to big\n }\n\n if (filteredFileArray.length === 0) {\n // ToDo show dialog that all files are to big\n\n return;\n }\n\n handleAdd(filteredFileArray);\n }\n });\n }, [handleAdd]);\n\n /**\n * This function deletes a selected file from the data list\n */\n const handleDelete = useCallback(\n (key: number | string) => {\n const filteredFiles = uploadedFiles?.filter((file) => {\n if ('thumbnailUrl' in file) {\n return file.id !== key;\n }\n return file.key !== key;\n });\n\n setUploadedFiles(filteredFiles ?? []);\n\n onChange(filteredFiles ?? []);\n },\n [onChange, uploadedFiles]\n );\n\n /**\n * This function shows a selected file\n */\n const showFile = useCallback((file: UploadedFile) => {\n if ('thumbnailUrl' in file) {\n // @ts-expect-error: Type is correct here\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access\n void chayns.openVideo(file.url);\n\n return;\n }\n\n // @ts-expect-error: Type is correct here\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access\n void chayns.openImage([`${file.base}/${file.key}`], 0);\n }, []);\n\n const galleryItems = useMemo(() => {\n const items: ReactElement[] = [];\n\n if (uploadedFiles) {\n uploadedFiles.forEach((file) => {\n items.push(\n <StyledGalleryItem key={'thumbnailUrl' in file ? file.id : file.key}>\n <StyledGalleryItemDeleteButton\n onClick={() =>\n handleDelete('thumbnailUrl' in file ? file.id : file.key)\n }\n >\n <Icon size={20} icons={['ts-wrong']} />\n </StyledGalleryItemDeleteButton>\n {'thumbnailUrl' in file ? (\n <StyledGalleryItemVideo\n onClick={() => showFile(file)}\n poster={file.thumbnailUrl}\n >\n <source src={file.url} type=\"video/mp4\" />\n </StyledGalleryItemVideo>\n ) : (\n <StyledGalleryItemImage\n onClick={() => showFile(file)}\n draggable={false}\n src={`${file.base}/${file.key}`}\n />\n )}\n </StyledGalleryItem>\n );\n });\n }\n\n items.push(\n <StyledGalleryItem key=\"addButton\">\n <StyledGalleryItemAdd onClick={openSelectDialog}>\n <Icon size={40} icons={['fa fa-plus']} />\n </StyledGalleryItemAdd>\n </StyledGalleryItem>\n );\n\n return items;\n }, [handleDelete, openSelectDialog, showFile, uploadedFiles]);\n\n return <StyledGallery>{galleryItems}</StyledGallery>;\n};\n\nGallery.displayName = 'Gallery';\n\nexport default Gallery;\n"],"mappings":"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"}
|
|
@@ -1 +1,14 @@
|
|
|
1
1
|
export declare const StyledGallery: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
2
|
+
export declare const StyledGalleryItem: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
3
|
+
export declare const StyledGalleryItemDeleteButton: import("styled-components").StyledComponent<"button", any, {
|
|
4
|
+
theme: import("@chayns-components/core/lib/components/color-scheme-provider/ColorSchemeProvider").Theme;
|
|
5
|
+
}, never>;
|
|
6
|
+
export declare const StyledGalleryItemAdd: import("styled-components").StyledComponent<"button", any, {
|
|
7
|
+
theme: import("@chayns-components/core/lib/components/color-scheme-provider/ColorSchemeProvider").Theme;
|
|
8
|
+
}, never>;
|
|
9
|
+
export declare const StyledGalleryItemImage: import("styled-components").StyledComponent<"img", any, {
|
|
10
|
+
theme: import("@chayns-components/core/lib/components/color-scheme-provider/ColorSchemeProvider").Theme;
|
|
11
|
+
}, never>;
|
|
12
|
+
export declare const StyledGalleryItemVideo: import("styled-components").StyledComponent<"video", any, {
|
|
13
|
+
theme: import("@chayns-components/core/lib/components/color-scheme-provider/ColorSchemeProvider").Theme;
|
|
14
|
+
}, never>;
|
|
@@ -3,9 +3,105 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.StyledGallery = void 0;
|
|
6
|
+
exports.StyledGalleryItemVideo = exports.StyledGalleryItemImage = exports.StyledGalleryItemDeleteButton = exports.StyledGalleryItemAdd = exports.StyledGalleryItem = exports.StyledGallery = void 0;
|
|
7
7
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
8
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
-
const StyledGallery = _styledComponents.default.div
|
|
9
|
+
const StyledGallery = _styledComponents.default.div`
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-direction: row;
|
|
12
|
+
flex-wrap: wrap;
|
|
13
|
+
gap: 10px;
|
|
14
|
+
padding: 15px;
|
|
15
|
+
|
|
16
|
+
& > * {
|
|
17
|
+
flex-basis: calc(25% - 7.5px); /* 25% Breite, abzüglich des Lückenabstands */
|
|
18
|
+
}
|
|
19
|
+
`;
|
|
10
20
|
exports.StyledGallery = StyledGallery;
|
|
21
|
+
const StyledGalleryItem = _styledComponents.default.div`
|
|
22
|
+
position: relative;
|
|
23
|
+
`;
|
|
24
|
+
exports.StyledGalleryItem = StyledGalleryItem;
|
|
25
|
+
const StyledGalleryItemDeleteButton = _styledComponents.default.button`
|
|
26
|
+
background-color: rgba(
|
|
27
|
+
${_ref => {
|
|
28
|
+
let {
|
|
29
|
+
theme
|
|
30
|
+
} = _ref;
|
|
31
|
+
return theme['000-rgb'];
|
|
32
|
+
}},
|
|
33
|
+
0.75
|
|
34
|
+
);
|
|
35
|
+
box-shadow: 0 0 0 1px
|
|
36
|
+
rgba(${_ref2 => {
|
|
37
|
+
let {
|
|
38
|
+
theme
|
|
39
|
+
} = _ref2;
|
|
40
|
+
return theme['009-rgb'];
|
|
41
|
+
}}, 0.08) inset;
|
|
42
|
+
position: absolute;
|
|
43
|
+
top: 0;
|
|
44
|
+
right: 0;
|
|
45
|
+
z-index: 2;
|
|
46
|
+
height: 30px;
|
|
47
|
+
width: 30px;
|
|
48
|
+
`;
|
|
49
|
+
exports.StyledGalleryItemDeleteButton = StyledGalleryItemDeleteButton;
|
|
50
|
+
const StyledGalleryItemAdd = _styledComponents.default.button`
|
|
51
|
+
background-color: ${_ref3 => {
|
|
52
|
+
let {
|
|
53
|
+
theme
|
|
54
|
+
} = _ref3;
|
|
55
|
+
return theme['101'];
|
|
56
|
+
}};
|
|
57
|
+
box-shadow: 0 0 0 1px
|
|
58
|
+
rgba(${_ref4 => {
|
|
59
|
+
let {
|
|
60
|
+
theme
|
|
61
|
+
} = _ref4;
|
|
62
|
+
return theme['009-rgb'];
|
|
63
|
+
}}, 0.08) inset;
|
|
64
|
+
width: 100%;
|
|
65
|
+
aspect-ratio: 1 / 1;
|
|
66
|
+
`;
|
|
67
|
+
exports.StyledGalleryItemAdd = StyledGalleryItemAdd;
|
|
68
|
+
const StyledGalleryItemImage = _styledComponents.default.img`
|
|
69
|
+
background-color: ${_ref5 => {
|
|
70
|
+
let {
|
|
71
|
+
theme
|
|
72
|
+
} = _ref5;
|
|
73
|
+
return theme['101'];
|
|
74
|
+
}};
|
|
75
|
+
box-shadow: 0 0 0 1px
|
|
76
|
+
rgba(${_ref6 => {
|
|
77
|
+
let {
|
|
78
|
+
theme
|
|
79
|
+
} = _ref6;
|
|
80
|
+
return theme['009-rgb'];
|
|
81
|
+
}}, 0.08) inset;
|
|
82
|
+
z-index: 1;
|
|
83
|
+
width: 100%;
|
|
84
|
+
aspect-ratio: 1 / 1;
|
|
85
|
+
object-fit: cover;
|
|
86
|
+
`;
|
|
87
|
+
exports.StyledGalleryItemImage = StyledGalleryItemImage;
|
|
88
|
+
const StyledGalleryItemVideo = _styledComponents.default.video`
|
|
89
|
+
background-color: ${_ref7 => {
|
|
90
|
+
let {
|
|
91
|
+
theme
|
|
92
|
+
} = _ref7;
|
|
93
|
+
return theme['101'];
|
|
94
|
+
}};
|
|
95
|
+
box-shadow: 0 0 0 1px
|
|
96
|
+
rgba(${_ref8 => {
|
|
97
|
+
let {
|
|
98
|
+
theme
|
|
99
|
+
} = _ref8;
|
|
100
|
+
return theme['009-rgb'];
|
|
101
|
+
}}, 0.08) inset;
|
|
102
|
+
width: 100%;
|
|
103
|
+
aspect-ratio: 1 / 1;
|
|
104
|
+
object-fit: cover;
|
|
105
|
+
`;
|
|
106
|
+
exports.StyledGalleryItemVideo = StyledGalleryItemVideo;
|
|
11
107
|
//# sourceMappingURL=Gallery.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gallery.styles.js","names":["_styledComponents","_interopRequireDefault","require","obj","__esModule","default","StyledGallery","styled","div","exports"],"sources":["../../../src/components/gallery/Gallery.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const StyledGallery = styled.div
|
|
1
|
+
{"version":3,"file":"Gallery.styles.js","names":["_styledComponents","_interopRequireDefault","require","obj","__esModule","default","StyledGallery","styled","div","exports","StyledGalleryItem","StyledGalleryItemDeleteButton","button","_ref","theme","_ref2","StyledGalleryItemAdd","_ref3","_ref4","StyledGalleryItemImage","img","_ref5","_ref6","StyledGalleryItemVideo","video","_ref7","_ref8"],"sources":["../../../src/components/gallery/Gallery.styles.ts"],"sourcesContent":["import type { WithTheme } from '@chayns-components/core';\nimport styled from 'styled-components';\n\nexport const StyledGallery = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 10px;\n padding: 15px;\n\n & > * {\n flex-basis: calc(25% - 7.5px); /* 25% Breite, abzüglich des Lückenabstands */\n }\n`;\n\nexport const StyledGalleryItem = styled.div`\n position: relative;\n`;\n\ntype StyledGalleryItemDeleteButtonProps = WithTheme<unknown>;\n\nexport const StyledGalleryItemDeleteButton = styled.button<StyledGalleryItemDeleteButtonProps>`\n background-color: rgba(\n ${({ theme }: StyledGalleryItemDeleteButtonProps) => theme['000-rgb']},\n 0.75\n );\n box-shadow: 0 0 0 1px\n rgba(${({ theme }: StyledGalleryItemImageProps) => theme['009-rgb']}, 0.08) inset;\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n height: 30px;\n width: 30px;\n`;\n\ntype StyledGalleryItemAddProps = WithTheme<unknown>;\n\nexport const StyledGalleryItemAdd = styled.button<StyledGalleryItemAddProps>`\n background-color: ${({ theme }: StyledGalleryItemAddProps) => theme['101']};\n box-shadow: 0 0 0 1px\n rgba(${({ theme }: StyledGalleryItemImageProps) => theme['009-rgb']}, 0.08) inset;\n width: 100%;\n aspect-ratio: 1 / 1;\n`;\n\ntype StyledGalleryItemImageProps = WithTheme<unknown>;\n\nexport const StyledGalleryItemImage = styled.img<StyledGalleryItemImageProps>`\n background-color: ${({ theme }: StyledGalleryItemImageProps) => theme['101']};\n box-shadow: 0 0 0 1px\n rgba(${({ theme }: StyledGalleryItemImageProps) => theme['009-rgb']}, 0.08) inset;\n z-index: 1;\n width: 100%;\n aspect-ratio: 1 / 1;\n object-fit: cover;\n`;\n\ntype StyledGalleryItemVideoProps = WithTheme<unknown>;\n\nexport const StyledGalleryItemVideo = styled.video<StyledGalleryItemVideoProps>`\n background-color: ${({ theme }: StyledGalleryItemVideoProps) => theme['101']};\n box-shadow: 0 0 0 1px\n rgba(${({ theme }: StyledGalleryItemImageProps) => theme['009-rgb']}, 0.08) inset;\n width: 100%;\n aspect-ratio: 1 / 1;\n object-fit: cover;\n`;\n"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEhC,MAAMG,aAAa,GAAGC,yBAAM,CAACC,GAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAACC,OAAA,CAAAH,aAAA,GAAAA,aAAA;AAEK,MAAMI,iBAAiB,GAAGH,yBAAM,CAACC,GAAI;AAC5C;AACA,CAAC;AAACC,OAAA,CAAAC,iBAAA,GAAAA,iBAAA;AAIK,MAAMC,6BAA6B,GAAGJ,yBAAM,CAACK,MAA2C;AAC/F;AACA,UAAUC,IAAA;EAAA,IAAC;IAAEC;EAA0C,CAAC,GAAAD,IAAA;EAAA,OAAKC,KAAK,CAAC,SAAS,CAAC;AAAA,CAAC;AAC9E;AACA;AACA;AACA,eAAeC,KAAA;EAAA,IAAC;IAAED;EAAmC,CAAC,GAAAC,KAAA;EAAA,OAAKD,KAAK,CAAC,SAAS,CAAC;AAAA,CAAC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAACL,OAAA,CAAAE,6BAAA,GAAAA,6BAAA;AAIK,MAAMK,oBAAoB,GAAGT,yBAAM,CAACK,MAAkC;AAC7E,wBAAwBK,KAAA;EAAA,IAAC;IAAEH;EAAiC,CAAC,GAAAG,KAAA;EAAA,OAAKH,KAAK,CAAC,KAAK,CAAC;AAAA,CAAC;AAC/E;AACA,eAAeI,KAAA;EAAA,IAAC;IAAEJ;EAAmC,CAAC,GAAAI,KAAA;EAAA,OAAKJ,KAAK,CAAC,SAAS,CAAC;AAAA,CAAC;AAC5E;AACA;AACA,CAAC;AAACL,OAAA,CAAAO,oBAAA,GAAAA,oBAAA;AAIK,MAAMG,sBAAsB,GAAGZ,yBAAM,CAACa,GAAiC;AAC9E,wBAAwBC,KAAA;EAAA,IAAC;IAAEP;EAAmC,CAAC,GAAAO,KAAA;EAAA,OAAKP,KAAK,CAAC,KAAK,CAAC;AAAA,CAAC;AACjF;AACA,eAAeQ,KAAA;EAAA,IAAC;IAAER;EAAmC,CAAC,GAAAQ,KAAA;EAAA,OAAKR,KAAK,CAAC,SAAS,CAAC;AAAA,CAAC;AAC5E;AACA;AACA;AACA;AACA,CAAC;AAACL,OAAA,CAAAU,sBAAA,GAAAA,sBAAA;AAIK,MAAMI,sBAAsB,GAAGhB,yBAAM,CAACiB,KAAmC;AAChF,wBAAwBC,KAAA;EAAA,IAAC;IAAEX;EAAmC,CAAC,GAAAW,KAAA;EAAA,OAAKX,KAAK,CAAC,KAAK,CAAC;AAAA,CAAC;AACjF;AACA,eAAeY,KAAA;EAAA,IAAC;IAAEZ;EAAmC,CAAC,GAAAY,KAAA;EAAA,OAAKZ,KAAK,CAAC,SAAS,CAAC;AAAA,CAAC;AAC5E;AACA;AACA;AACA,CAAC;AAACL,OAAA,CAAAc,sBAAA,GAAAA,sBAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface Video {
|
|
2
|
+
id: number;
|
|
3
|
+
originalVideoQuality: string;
|
|
4
|
+
thumbnailUrl: string;
|
|
5
|
+
url: string;
|
|
6
|
+
}
|
|
7
|
+
export interface Image {
|
|
8
|
+
key: string;
|
|
9
|
+
base: string;
|
|
10
|
+
meta: Meta;
|
|
11
|
+
}
|
|
12
|
+
export interface Meta {
|
|
13
|
+
preview: string;
|
|
14
|
+
width: string;
|
|
15
|
+
height: string;
|
|
16
|
+
}
|
|
17
|
+
export type UploadedFile = Video | Image;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","names":[],"sources":["../../src/types/files.ts"],"sourcesContent":["export interface Video {\n id: number;\n originalVideoQuality: string;\n thumbnailUrl: string;\n url: string;\n}\n\nexport interface Image {\n key: string;\n base: string;\n meta: Meta;\n}\n\nexport interface Meta {\n preview: string;\n width: string;\n height: string;\n}\n\nexport type UploadedFile = Video | Image;\n"],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { UploadedFile } from '../types/files';
|
|
2
|
+
interface SelectFilesOptions {
|
|
3
|
+
type: string;
|
|
4
|
+
multiple: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare const selectFiles: ({ type, multiple }: SelectFilesOptions) => Promise<null | FileList>;
|
|
7
|
+
export declare const convertFileListToArray: (fileList: FileList) => File[];
|
|
8
|
+
export declare const filterDuplicateFiles: (oldFiles: UploadedFile[], newFiles: UploadedFile[]) => UploadedFile[];
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.selectFiles = exports.filterDuplicateFiles = exports.convertFileListToArray = void 0;
|
|
7
|
+
const selectFiles = _ref => {
|
|
8
|
+
let {
|
|
9
|
+
type,
|
|
10
|
+
multiple
|
|
11
|
+
} = _ref;
|
|
12
|
+
return new Promise(resolve => {
|
|
13
|
+
const input = document.createElement('input');
|
|
14
|
+
input.type = 'file';
|
|
15
|
+
if (type !== '*/*' && type) {
|
|
16
|
+
input.accept = type;
|
|
17
|
+
}
|
|
18
|
+
if (multiple) {
|
|
19
|
+
input.multiple = true;
|
|
20
|
+
}
|
|
21
|
+
input.style.visibility = 'none';
|
|
22
|
+
input.style.width = '0';
|
|
23
|
+
input.style.height = '0';
|
|
24
|
+
input.style.display = 'none';
|
|
25
|
+
document.body.appendChild(input);
|
|
26
|
+
input.addEventListener('change', event => {
|
|
27
|
+
document.body.removeChild(input);
|
|
28
|
+
const target = event.target;
|
|
29
|
+
const {
|
|
30
|
+
files
|
|
31
|
+
} = target;
|
|
32
|
+
resolve(files);
|
|
33
|
+
});
|
|
34
|
+
input.click();
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
exports.selectFiles = selectFiles;
|
|
38
|
+
const convertFileListToArray = fileList => {
|
|
39
|
+
const filesArray = [];
|
|
40
|
+
for (let i = 0; i < fileList.length; i++) {
|
|
41
|
+
const file = fileList.item(i);
|
|
42
|
+
if (file) {
|
|
43
|
+
filesArray.push(file);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return filesArray;
|
|
47
|
+
};
|
|
48
|
+
exports.convertFileListToArray = convertFileListToArray;
|
|
49
|
+
const filterDuplicateFiles = (oldFiles, newFiles) => {
|
|
50
|
+
const seenKeys = new Set();
|
|
51
|
+
const filteredFiles = [];
|
|
52
|
+
oldFiles.forEach(file => {
|
|
53
|
+
let key;
|
|
54
|
+
if ('id' in file) {
|
|
55
|
+
key = file.id.toString();
|
|
56
|
+
} else {
|
|
57
|
+
key = file.key;
|
|
58
|
+
}
|
|
59
|
+
seenKeys.add(key);
|
|
60
|
+
filteredFiles.push(file);
|
|
61
|
+
});
|
|
62
|
+
newFiles.forEach(file => {
|
|
63
|
+
let key;
|
|
64
|
+
if ('id' in file) {
|
|
65
|
+
key = file.id.toString();
|
|
66
|
+
} else {
|
|
67
|
+
key = file.key;
|
|
68
|
+
}
|
|
69
|
+
if (!seenKeys.has(key)) {
|
|
70
|
+
seenKeys.add(key);
|
|
71
|
+
filteredFiles.push(file);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
return filteredFiles;
|
|
75
|
+
};
|
|
76
|
+
exports.filterDuplicateFiles = filterDuplicateFiles;
|
|
77
|
+
//# sourceMappingURL=file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.js","names":["selectFiles","_ref","type","multiple","Promise","resolve","input","document","createElement","accept","style","visibility","width","height","display","body","appendChild","addEventListener","event","removeChild","target","files","click","exports","convertFileListToArray","fileList","filesArray","i","length","file","item","push","filterDuplicateFiles","oldFiles","newFiles","seenKeys","Set","filteredFiles","forEach","key","id","toString","add","has"],"sources":["../../src/utils/file.ts"],"sourcesContent":["import type { UploadedFile } from '../types/files';\n\ninterface SelectFilesOptions {\n type: string;\n multiple: boolean;\n}\n\nexport const selectFiles = ({ type, multiple }: SelectFilesOptions): Promise<null | FileList> =>\n new Promise((resolve) => {\n const input = document.createElement('input');\n input.type = 'file';\n\n if (type !== '*/*' && type) {\n input.accept = type;\n }\n\n if (multiple) {\n input.multiple = true;\n }\n\n input.style.visibility = 'none';\n input.style.width = '0';\n input.style.height = '0';\n input.style.display = 'none';\n\n document.body.appendChild(input);\n\n input.addEventListener('change', (event) => {\n document.body.removeChild(input);\n\n const target = event.target as HTMLInputElement;\n const { files } = target;\n\n resolve(files);\n });\n\n input.click();\n });\n\nexport const convertFileListToArray = (fileList: FileList): File[] => {\n const filesArray = [];\n for (let i = 0; i < fileList.length; i++) {\n const file = fileList.item(i);\n\n if (file) {\n filesArray.push(file);\n }\n }\n\n return filesArray;\n};\n\nexport const filterDuplicateFiles = (\n oldFiles: UploadedFile[],\n newFiles: UploadedFile[]\n): UploadedFile[] => {\n const seenKeys = new Set<string>();\n const filteredFiles: UploadedFile[] = [];\n\n oldFiles.forEach((file) => {\n let key: string;\n if ('id' in file) {\n key = file.id.toString();\n } else {\n key = file.key;\n }\n\n seenKeys.add(key);\n filteredFiles.push(file);\n });\n\n newFiles.forEach((file) => {\n let key: string;\n if ('id' in file) {\n key = file.id.toString();\n } else {\n key = file.key;\n }\n\n if (!seenKeys.has(key)) {\n seenKeys.add(key);\n filteredFiles.push(file);\n }\n });\n\n return filteredFiles;\n};\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chayns-components/gallery",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.107",
|
|
4
4
|
"description": "A set of beautiful React components for developing your own applications with chayns.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"chayns",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"typescript": "^4.9.5"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@chayns-components/core": "^5.0.0-beta.
|
|
52
|
+
"@chayns-components/core": "^5.0.0-beta.105",
|
|
53
53
|
"@chayns/colors": "^2.0.0",
|
|
54
54
|
"clsx": "^1.2.1",
|
|
55
55
|
"framer-motion": "^6.5.1",
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"publishConfig": {
|
|
64
64
|
"access": "public"
|
|
65
65
|
},
|
|
66
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "7198903cf93e5e131f71f6d8cfe0f77ab133e504"
|
|
67
67
|
}
|
package/lib/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default as Gallery } from './components/gallery/Gallery';
|
package/lib/index.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
Object.defineProperty(exports, "Gallery", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function () {
|
|
9
|
-
return _Gallery.default;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
var _Gallery = _interopRequireDefault(require("./components/gallery/Gallery"));
|
|
13
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
-
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_Gallery","_interopRequireDefault","require","obj","__esModule","default"],"sources":["../src/index.ts"],"sourcesContent":["export { default as Gallery } from './components/gallery/Gallery';\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAkE,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA"}
|