@selfcommunity/react-ui 0.7.0-alpha.353 → 0.7.0-alpha.355
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/cjs/components/AccountDataPortability/AccountDataPortability.js +3 -1
- package/lib/cjs/components/FeedObject/Poll/Poll.js +5 -8
- package/lib/cjs/components/PrivateMessageEditor/MessageMediaUploader/index.js +7 -7
- package/lib/cjs/components/PrivateMessageThreadItem/PrivateMessageThreadItem.d.ts +1 -0
- package/lib/cjs/components/PrivateMessageThreadItem/PrivateMessageThreadItem.js +15 -5
- package/lib/cjs/shared/MessageChunkUploader/index.js +6 -2
- package/lib/cjs/utils/thumbnailCoverter.d.ts +7 -2
- package/lib/cjs/utils/thumbnailCoverter.js +85 -48
- package/lib/esm/components/AccountDataPortability/AccountDataPortability.js +3 -1
- package/lib/esm/components/FeedObject/Poll/Poll.js +5 -8
- package/lib/esm/components/PrivateMessageEditor/MessageMediaUploader/index.js +8 -8
- package/lib/esm/components/PrivateMessageThreadItem/PrivateMessageThreadItem.d.ts +1 -0
- package/lib/esm/components/PrivateMessageThreadItem/PrivateMessageThreadItem.js +15 -5
- package/lib/esm/shared/MessageChunkUploader/index.js +7 -3
- package/lib/esm/utils/thumbnailCoverter.d.ts +7 -2
- package/lib/esm/utils/thumbnailCoverter.js +81 -46
- package/lib/umd/react-ui.js +1 -1
- package/package.json +5 -5
|
@@ -1,44 +1,74 @@
|
|
|
1
|
+
import { SCMessageFileType } from '@selfcommunity/types';
|
|
1
2
|
export const pdfImagePlaceholder = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAHXElEQVR4nO2dXUxTZxjHXzeXLHFXy7bsbskud+suVnXubC7ZvJm7mIm6XWzZspiYVBZzQFFUFCcq04ooYDQYzQD5CH4uMX5hgqhYnSiKolMUkBZoe87bllL68SzvodJz2lOoCuec9jz/5ElMwZbz/Po+X+97WkJQKBQKhUKhUChUOqKUfi6KYq0oin2iKIYppWBkE0UxLIpiL6W0mlI6N2soA8BMURTL9XYwfX1AZexaSKYrG2DQOJQaAHiTZHKY0tuJdOqtCgBmkEwUyxkGcCBMg5WSTBRL4IkXs3d3IyyYlwOcxWpoWzAvB0qKa1iYShW+CkmmSa2a+nr+H7o7m3sJ+2tbzUQ5ZRXJJKldhN4O5l7Byvc0pQISpZQuJ9kCBHjekBbh+SQoVQdOpYISEQThR5IJylQgoALkyzkrofbvs6mghL1e72JidGUTEC4GpbHuYiooQVEUFxIjK9uAcBYrfDU3B/45eTlVovdTSucToyobgXAWq1QpXjxvT7VSqCAInxIjKluBcBYrfMOtgtaWdlUogiAMUUo/IUZTNgPhLFZYuICHmzc6VaF4PJ5+QRA+JkZStgPhLFb47tvV0HHnUSoovW63+yNiFJkBCGexwqKF+dB577EqFJfL9djn831IjCCzAOEsVli8qAD+e/RMFcrAwECnIAjv6s3DVEA4ixWW/VAIT7v7VKE4HI5/nU7nOwiE1w4Is5+X/QnP+5yqUHp7e68CwNu4QnjtgDD7/Zft4HQOqULp7u6+CABvYcjipx/IF7J/W5fbYHDQpQrl9u3b9YQQ7XcdzZZDuATLWVEKLpdbFcrOnTtXEELeQCC8dkCYreErweMRkoDY7fZWQoi2I5ZMXiGLuZVTBqWkuFqt6nIRQpYSQj5AIPzkQK7+tmrKoLBhpMq8KxIDot0hvExeIfCaFk0Ie2q+iAH5HoHw2kBJE8gSBMIbCshS04Ss6IYNEC4rg8iOHQC5uZqHLQTCx5yxZg0ELlwAKsTLTf+DBxDdvBmB6LFCApfV97z9nZ0IRGsgke3bgaY4/sksvGcPhiwtgQTr6sZfy+twQGTbNvB1xrdZgydPIhAtgYycPj3+Wr6HD8cg1dePP8ZyCyZ1LVdIY2P8DSCKAHl5EDx2bPyxkfPnEYiWQEKHDilzhs0GgebmOJAzZxCIpkm9qEhZWXV0gK+3N55D6usRiNZlr7enJ2WVFSovRyBaAxk5q35KnVm0qAiBaA0kvGuXKgxvX59mMJjh6ISPO8Pf1ZUEZLi1FYHoNVwMJVRbzEZraxGIbtPevDwpRMlfe0TDLh1DFq90RrSgAKjHo3xDuN3SKAWB6LBCRo8cUZ/4dnRotjeCSZ2PO2PYrn6Hk9QcHj+OQLRcIdGNGxXhyutKOEHo8UB4925cIVoBCcoHjGxFnDiRtGnlff582ptEDFn8mCN8j2R3NAmCtHUbXbsWfE+fKqD42LbuunUIZDpXSLisTNkM3rw5/rNISQl4BweVSf7uXYjm58fDXUGBNCFmRUGwoQGCTU0wWlcHocpK6We4Ql4SyHBbm3KYeOCAEti+fUnlsK+rC/zt7Ul9S5K53TBy7px0iAJDVhowIlu2KE6a+Hp6pAZR8TslJTDcrn47c7oWSHMEY/ocEmBHf+TJvKlJejeH9u+HwKVLk68AedJ3u6UtYP+tWzB84wZ4nbK7okQxrQbT1ECibGPK7U7KH4k5I10bvn5dWk0vmsjE2VioqgqBTAQkcFH9Q2FSroChISnfjFZXSyEo5e85HBC4ckUKf/LH0+ljTLtCQhUVyXMrFfM9eSJtXoXZruHq1YrnGD18OO2QxoqAdMYvpgMSqqwE/717Ezvv2TMYOXUKIsXFkz9nfr605+6/f1/9sJ0oSvkkumkTJnVF6WqzjTktFQhBgOFr16Se5FUHiWz8Ei4tlXKHZBUVEC0sfKnnyPoVwhqzAKukJjgqyoaK7OTJVBYMr2pZDYS9WyeL8V42n1q/XncQWQ9EKjkTJ7Y02UIHD+oOIeuBSBtNshDldTqlxJtYqrKcoTeArAfCwo98LyPQ0jI2/GPzKDkkh0NKwnoDyHogbDAo/7/sFrXI1q3gHRhQVFQMkN7ONwcQ1vDJe4qeHiUMdrTn6FHdHW8aIGww6OvuTtlrBBsadHe6uYDERurshk35c/jv3JGOi+rtcFMCkSw3V7p3kM2gIgZp+swNJEONQyC87hAQCK+/4xEIr7+zEYgBHAwIRH+nAgLR35GAQPR3HiAQ7EOI0RpDMxk1QqeeDV8syU3/p5JqCiRjv3qVmyJj18quOdEP/f39Lj2A1KiOztGgra2tRfNPJRVF8bPY15MiBKr0QU5OzoYYkEWaAYlB2YtAqAJGc3PzGVm4smgKBABm9vX1HUQodBzGrFmzfpIBeZ/oIZvN9qvdbr/MkhmrMMwCSBCECLtmu93eYrVaX4SpFzab6KgZsa9nkP9BZrbZunypi4rYEp0TS2ZLDOCYpRrZktg1s2t/T28IKBQKhUKhiP76HypRqVUz8CeSAAAAAElFTkSuQmCC';
|
|
3
|
+
export const videoPlaceholder = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAACXBIWXMAAAsTAAALEwEAmpwYAAACYUlEQVR4nO3cvWoUURjG8T/YrGAROzFi5Q1oa+Fd2Jp02tiGpPcCvAE/+mxAvIpEsfILBat0ogtJsBKfsDA2h4zuTDL7vjvn+cHTHrLPO3POptgDZmZmZmZmZmZmZmZmZmZpXAU2gT3gM3ACaEVy0vzN0+YzrLFCLgM7wCxBkbqgzD/LNjAhuevAQYLCNFDeATdJ6gZwmKAkDZzD5rOm23beJihHS8pBtu1oJ0EpWnLmZ8J53AOeAx+bvATu9P22M6YDVwtm1nz2Li4B94E3LWv+Bh51HcBmgjIUlI0FO7oCPAa+LbDmfAh3uwxgL0ERCsruf7q5BjwBfnRc91WXAXxNUISCMv9n7Sy3gKfAr57rfu8ygOMERSgoR2f08Rr4cwFrL0yVpzTUuq1UeUoeAB5A+FMpvwHxxchbUHw58hkw/pSGWreVKk/JA8ADCH8q5Tcgvhh5C4ovRz4Dxp/SUOu2UuUpeQB4AOFPpfwGxBcjb0Hx5chnwPhTGmrdVqo8JQ8ADyD8qZTfgPhi5C0ovhz5DBh/SkOt20qVp+QB4AGEP5XyGxBfjLwFxZcjnwHjT2modVup8pQ8ADyA8KdSfgPii5G3oPhyVMMZcJSgBNX8I70vCYpQUD5l+JnqNEERqvmH2hsJilBQHmS4qqDWyzp+9rjKbJHLOh7Sw3aCQrTkbHH+62qeAe+BD8AL4HbfxSYjv6pMRfazXdg0t17RlWXrJL60bz9BSarx0r6/Js2ZMBvZgbuVcdv5l7XmK+q0+Ydlla61OW7+5t3mq+ZKXdxqZmZmZmZmZmZmZmZmZkZ3p+uwFZYL7fr1AAAAAElFTkSuQmCC';
|
|
4
|
+
export const documentPlaceholder = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAuUlEQVR4nO3WQQpCMRRD0axCxP0vSRRXExE6EMHBl5e09uVCcSiHBi2Q/isKzw3AeQcIATwAXJyQ6uwYiiH3t0/pzNSQE4Cr42YohsCFoQFiwdAEkWNohLySYdwQGWYGRIKZBSnHOP7Zj7zNtoCw4gtnx0BGuZHimGl1mxaLz7cCaTctVwyk241Q9Cv1WSDtpuWKgXS7EeathbUeja4YyCg3UhwzrVGmVRwzrVGmteq0uMj5uW0gCeaeAHHCuEhTlUIAAAAASUVORK5CYII=';
|
|
5
|
+
export const audioPlaceHolder = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAABVElEQVR4nO3Xu0rEUBDG8b8PoJUXrAT3EWxsrOztLHwISwtRK1sVS7e1tbQWLBWs3EJ8BhsFr4WMBKaQRV3WnJlkwnwwBAI5OT/OJSeQiRUxqjtgvgsQ8caIlkWbrhgxhAy+XWcLv8MVMgPceo2MGELwxIgxxA0jDhAXjDhBzDHiCKlihvGGmGGagJhgmoIUx1gfUcapQYmXlkydg2arII30QxLSwRFZB/rAAbAJzEWFPAwt2BdgH5iMBnn8ZQd6Ba6A5egQ0TrsCuQoEuQZWAE2gFPgIyrkaejeArAHnAOrkSHjRhKiyRHRTABvXZhaa/p8KMgisAWcAGfANfAZDbIEvP/x0at2Lo9+1G5gd8TXu/rnDgHZHgE5jgLp6Tr4CXEPTEda7D09yV4CN8AFsANM1elAW7bfUpGEaHJECkdyamlyahWO5NTSSMvq3+kMJINzvgAzxLJFazyrgQAAAABJRU5ErkJggg==';
|
|
2
6
|
const MAX_WIDTH = 1920;
|
|
3
|
-
function
|
|
7
|
+
export function isSupportedVideoFormat(filename) {
|
|
8
|
+
const extension = filename.split('.').pop().toLowerCase();
|
|
9
|
+
const supportedFormats = ['mp4', 'webm', 'ogv', 'mp3', 'm3u8', 'mpd'];
|
|
10
|
+
return supportedFormats.includes(extension);
|
|
11
|
+
}
|
|
12
|
+
function dataURLtoFile(dataUrl, file) {
|
|
4
13
|
let arr = dataUrl.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
|
|
5
|
-
const _fileName =
|
|
14
|
+
const _fileName = file.file && file.file.type.startsWith(SCMessageFileType.DOCUMENT) ? file.file.name.replace(/(\.[^.]+)$/, '.jpeg') : file.name;
|
|
6
15
|
while (n--) {
|
|
7
16
|
u8arr[n] = bstr.charCodeAt(n);
|
|
8
17
|
}
|
|
9
18
|
return new File([u8arr], _fileName, { type: mime });
|
|
10
19
|
}
|
|
11
|
-
export function
|
|
20
|
+
export function createAudioThumbnail(file) {
|
|
21
|
+
return new Promise(function (resolve, reject) {
|
|
22
|
+
try {
|
|
23
|
+
resolve(dataURLtoFile(audioPlaceHolder, file));
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
reject(e);
|
|
27
|
+
console.log(e);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
export function createDocumentThumbnail(url, file) {
|
|
12
32
|
const pdfjsLib = require('pdfjs-dist/webpack');
|
|
13
33
|
return new Promise(function (resolve, reject) {
|
|
14
34
|
try {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
.
|
|
20
|
-
.
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
if (!file.file.name.endsWith('.pdf')) {
|
|
36
|
+
resolve(dataURLtoFile(documentPlaceholder, file));
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
const canvas = document.createElement('canvas');
|
|
40
|
+
const ctx = canvas.getContext('2d');
|
|
41
|
+
// Load the PDF file
|
|
42
|
+
pdfjsLib
|
|
43
|
+
.getDocument(url)
|
|
44
|
+
.promise.then((pdf) => {
|
|
45
|
+
// Get the first page of the PDF
|
|
46
|
+
return pdf.getPage(1);
|
|
47
|
+
})
|
|
48
|
+
.then((page) => {
|
|
49
|
+
// Set the canvas dimensions to match the PDF page dimensions
|
|
50
|
+
const viewport = page.getViewport({ scale: 1 });
|
|
51
|
+
canvas.width = viewport.width;
|
|
52
|
+
canvas.height = viewport.height;
|
|
53
|
+
// Render the PDF page onto the canvas
|
|
54
|
+
const renderContext = {
|
|
55
|
+
canvasContext: ctx,
|
|
56
|
+
viewport: viewport
|
|
57
|
+
};
|
|
58
|
+
return page.render(renderContext).promise;
|
|
59
|
+
})
|
|
60
|
+
.then(() => {
|
|
61
|
+
// Convert the canvas to an image
|
|
62
|
+
const thumbnailUrl = canvas.toDataURL('image/jpeg', 1);
|
|
63
|
+
// Resolve the Promise with the generated value
|
|
64
|
+
resolve(dataURLtoFile(thumbnailUrl, file));
|
|
65
|
+
})
|
|
66
|
+
.catch((error) => {
|
|
67
|
+
console.error('Error converting PDF to JPEG:', error);
|
|
68
|
+
reject(error);
|
|
69
|
+
return Promise.reject(error);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
42
72
|
}
|
|
43
73
|
catch (e) {
|
|
44
74
|
reject(e);
|
|
@@ -63,7 +93,7 @@ export function createThumbnail(file) {
|
|
|
63
93
|
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
|
|
64
94
|
const thumbnailData = canvas.toDataURL('image/jpeg', 0.5);
|
|
65
95
|
// Resolve the Promise with the generated value
|
|
66
|
-
resolve(dataURLtoFile(thumbnailData, file
|
|
96
|
+
resolve(dataURLtoFile(thumbnailData, file));
|
|
67
97
|
};
|
|
68
98
|
img.src = event.target.result;
|
|
69
99
|
};
|
|
@@ -76,25 +106,30 @@ export function createThumbnail(file) {
|
|
|
76
106
|
}
|
|
77
107
|
});
|
|
78
108
|
}
|
|
79
|
-
export function createVideoThumbnail(
|
|
109
|
+
export function createVideoThumbnail(fileUrl, file) {
|
|
80
110
|
return new Promise(function (resolve, reject) {
|
|
81
111
|
try {
|
|
82
112
|
const video = document.createElement('video');
|
|
83
|
-
video.src =
|
|
113
|
+
video.src = fileUrl;
|
|
84
114
|
video.crossOrigin = '*';
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
115
|
+
if (!isSupportedVideoFormat(file.file.name)) {
|
|
116
|
+
resolve(dataURLtoFile(videoPlaceholder, file));
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
video.addEventListener('seeked', function () {
|
|
120
|
+
const canvas = document.createElement('canvas');
|
|
121
|
+
canvas.width = MAX_WIDTH;
|
|
122
|
+
//to keep aspect ratio
|
|
123
|
+
const scaleSize = MAX_WIDTH / video.videoWidth;
|
|
124
|
+
canvas.height = video.videoHeight * scaleSize;
|
|
125
|
+
const ctx = canvas.getContext('2d');
|
|
126
|
+
// Draw the canvas
|
|
127
|
+
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
|
|
128
|
+
const thumbnailUrl = canvas.toDataURL('image/jpeg', 0.5);
|
|
129
|
+
// Resolve the Promise with the generated value
|
|
130
|
+
resolve(dataURLtoFile(thumbnailUrl, file));
|
|
131
|
+
});
|
|
132
|
+
}
|
|
98
133
|
video.currentTime = 1;
|
|
99
134
|
}
|
|
100
135
|
catch (e) {
|