Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import { exportMergedPNG } from './exportMergedPNG';
import type { Project } from '@/shared/types';
export async function handleExportPNG(activeProject: Project) {
if (!activeProject) return;
const dataUrl = await exportMergedPNG();
const fileName = `${activeProject.name}.png`;
// --- File System Access API (Save As)
if (typeof window.showSaveFilePicker === 'function') {
const picker = window.showSaveFilePicker.bind(window);
const handle = await picker({
suggestedName: fileName,
types: [
{
description: 'PNG Image',
accept: { 'image/png': ['.png'] },
},
],
});
const writable = await handle.createWritable();
const blob = await (await fetch(dataUrl)).blob();
await writable.write(blob);
await writable.close();
return;
}
// --- Fallback (download)
const link = document.createElement('a');
link.href = dataUrl;
link.download = fileName;
link.click();
}
|