mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-30 02:58:11 +00:00
38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
export function openPdfBlob(blob: Blob, filename: string, targetWindow?: Window | null) {
|
|
const url = URL.createObjectURL(blob);
|
|
|
|
if (targetWindow && !targetWindow.closed) {
|
|
targetWindow.location.href = url;
|
|
setTimeout(() => URL.revokeObjectURL(url), 60_000);
|
|
return true;
|
|
}
|
|
|
|
const opened = window.open(url, '_blank');
|
|
if (opened) {
|
|
setTimeout(() => URL.revokeObjectURL(url), 60_000);
|
|
return true;
|
|
}
|
|
|
|
const a = document.createElement('a');
|
|
a.href = url;
|
|
a.download = filename;
|
|
document.body.appendChild(a);
|
|
a.click();
|
|
a.remove();
|
|
URL.revokeObjectURL(url);
|
|
return false;
|
|
}
|
|
|
|
/** Force a browser download of a blob under the given filename (no preview tab). */
|
|
export function saveBlob(blob: Blob, filename: string) {
|
|
const url = URL.createObjectURL(blob);
|
|
const a = document.createElement('a');
|
|
a.href = url;
|
|
a.download = filename;
|
|
document.body.appendChild(a);
|
|
a.click();
|
|
a.remove();
|
|
// Delay revoke so the download has time to start (esp. for rapid multi-saves).
|
|
setTimeout(() => URL.revokeObjectURL(url), 10_000);
|
|
}
|