2022-08-04 08:49:54 +02:00
|
|
|
import IS_WEBP_SUPPORTED from './webpSupport';
|
2021-10-27 17:41:23 +02:00
|
|
|
|
|
|
|
const IMAGE_MIME_TYPES_SUPPORTED = new Set([
|
|
|
|
'image/jpeg',
|
|
|
|
'image/png',
|
|
|
|
'image/bmp'
|
|
|
|
]);
|
|
|
|
|
|
|
|
if(IS_WEBP_SUPPORTED) {
|
|
|
|
IMAGE_MIME_TYPES_SUPPORTED.add('image/webp');
|
|
|
|
}
|
|
|
|
|
2024-01-22 23:34:05 +01:00
|
|
|
const possible: [string, string][] = [
|
|
|
|
['image/jxl', 'data:image/jxl;base64,/woIAAAMABKIAgC4AF3lEgAAFSqjjBu8nOv58kOHxbSN6wxttW1hSaLIODZJJ3BIEkkaoCUzGM6qJAE='],
|
|
|
|
['image/avif', 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=']
|
|
|
|
];
|
|
|
|
|
|
|
|
const promises = possible.map(([mime, data]) => {
|
|
|
|
const img = new Image();
|
|
|
|
const promise = new Promise<string>((resolve) => {
|
|
|
|
img.onload = img.onerror = () => {
|
|
|
|
const supported = img.height === 2;
|
|
|
|
resolve(supported ? mime : undefined);
|
|
|
|
};
|
|
|
|
});
|
|
|
|
img.src = data;
|
|
|
|
return promise;
|
|
|
|
});
|
|
|
|
|
|
|
|
export const IMAGE_MIME_TYPES_SUPPORTED_PROMISE = Promise.all(promises).then((mimeTypes) => mimeTypes.filter(Boolean));
|
|
|
|
|
2021-10-27 17:41:23 +02:00
|
|
|
export default IMAGE_MIME_TYPES_SUPPORTED;
|