| 152 | }; |
| 153 | |
| 154 | export const copyCanvasToClipboard = async canvas => { |
| 155 | if (!isClipboardImageSupported()) { |
| 156 | throw new Error('Clipboard image copy not supported in this browser'); |
| 157 | } |
| 158 | |
| 159 | return new Promise((resolve, reject) => { |
| 160 | canvas.toBlob(async blob => { |
| 161 | if (!blob) { |
| 162 | reject(new Error('Failed to create image blob')); |
| 163 | return; |
| 164 | } |
| 165 | |
| 166 | try { |
| 167 | const item = new ClipboardItem({ 'image/png': blob }); |
| 168 | await navigator.clipboard.write([item]); |
| 169 | resolve(); |
| 170 | } catch (err) { |
| 171 | reject(new Error(`Clipboard write failed: ${err.message}`)); |
| 172 | } |
| 173 | }, 'image/png'); |
| 174 | }); |
| 175 | }; |
| 176 | |
| 177 | export const copyDataURLToClipboard = async canvas => { |
| 178 | const dataUrl = canvas.toDataURL('image/png'); |
no test coverage detected