From b30a00a9713fd52865129132317beb6fa875017c Mon Sep 17 00:00:00 2001 From: "bozo.kopic" Date: Sun, 13 Nov 2022 03:39:02 +0100 Subject: type script --- src_js/file.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src_js/file.ts (limited to 'src_js/file.ts') diff --git a/src_js/file.ts b/src_js/file.ts new file mode 100644 index 0000000..0466339 --- /dev/null +++ b/src_js/file.ts @@ -0,0 +1,31 @@ + + +export function load(ext: string): Promise { + const el = document.createElement('input'); + (el as any).style = 'display: none'; + el.type = 'file'; + el.accept = ext; + document.body.appendChild(el); + + return new Promise(resolve => { + const listener = (evt: Event) => { + const f = (evt.target as HTMLInputElement).files?.[0] ?? null; + document.body.removeChild(el); + resolve(f); + }; + el.addEventListener('change', listener); + // TODO blur not fired on close??? + el.addEventListener('blur', listener); + el.click(); + }); +} + + +export function save(f: File) { + const a = document.createElement('a'); + a.download = f.name; + a.rel = 'noopener'; + a.href = URL.createObjectURL(f); + setTimeout(() => { URL.revokeObjectURL(a.href); }, 20000); + setTimeout(() => { a.click(); }, 0); +} -- cgit v1.2.3-70-g09d2