25328f98d0
In #2198, we introduced a regression on ios around image exports. ios will block copys if they're not called syncronously in a UI event. It's important to make ios copys like this: ```ts navigator.clipboard.write(new ClipboardItem(getStuffToCopyAsAPromise()) ``` instead of ```ts getStuffToCopyAsAPromise().then(stuff => { navigator.clipboard.write(new ClipboardItem(stuff)) }) ``` We've written and fixed this bug a few times, which i think is because of how our export/copy code is written: the formatting is interspersed with interacting with the browser APIs, which makes it hard to change one without accidentally affecting the other. This diff fixes the bug, but also restructures our export/copy code: all the formatting is handled by `exportToBlob` and related which just return `Blob`s. This leaves `copyAs`, `exportAs` etc. to just handle interacting with the browser APIs. Fixes #2312 ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Test copy/export as on all browsers ### Release Notes - Fix a bug preventing copying as an image on iOS --------- Co-authored-by: huppy-bot[bot] <128400622+huppy-bot[bot]@users.noreply.github.com>
3.2 KiB
163x164px
3.2 KiB
163x164px