26 lines
846 B
JavaScript
26 lines
846 B
JavaScript
export function withCacheBuster(url) {
|
|
const separator = url.includes('?') ? '&' : '?';
|
|
return `${url}${separator}t=${new Date().getTime()}`;
|
|
}
|
|
|
|
export function clamp(value, min, max) {
|
|
return Math.min(Math.max(value, min), max);
|
|
}
|
|
|
|
export function dataUrlToBlob(dataUrl) {
|
|
try {
|
|
const [prefix, base64] = dataUrl.split(',');
|
|
const mimeMatch = prefix.match(/:(.*?);/);
|
|
const mime = mimeMatch ? mimeMatch[1] : 'image/png';
|
|
const binary = atob(base64);
|
|
const len = binary.length;
|
|
const buffer = new Uint8Array(len);
|
|
for (let i = 0; i < len; i++) {
|
|
buffer[i] = binary.charCodeAt(i);
|
|
}
|
|
return new Blob([buffer], { type: mime });
|
|
} catch (error) {
|
|
console.warn('Unable to convert cached image to blob', error);
|
|
return null;
|
|
}
|
|
}
|