web/remux: improve accessibility

This commit is contained in:
wukko 2024-09-07 18:21:40 +06:00
parent 3232c4a51b
commit 7cd572954f
No known key found for this signature in database
GPG key ID: 3E30B3F26C7B4AA2

View file

@ -2,7 +2,7 @@
import mime from "mime"; import mime from "mime";
import LibAVWrapper from "$lib/libav"; import LibAVWrapper from "$lib/libav";
import { browser } from "$app/environment"; import { browser } from "$app/environment";
import { beforeNavigate } from '$app/navigation'; import { beforeNavigate } from "$app/navigation";
import { openURL } from "$lib/download"; import { openURL } from "$lib/download";
import { t } from "$lib/i18n/translations"; import { t } from "$lib/i18n/translations";
@ -23,7 +23,10 @@
$: { $: {
if (totalDuration && processedDuration) { if (totalDuration && processedDuration) {
const percentage = Math.max(0, Math.min(100, (processedDuration / totalDuration) * 100)).toFixed(2); const percentage = Math.max(
0,
Math.min(100, (processedDuration / totalDuration) * 100)
).toFixed(2);
progress = percentage; progress = percentage;
} else if (processing) { } else if (processing) {
progress = undefined; progress = undefined;
@ -101,17 +104,19 @@
totalDuration = Number(file_info.format.duration); totalDuration = Number(file_info.format.duration);
if (file instanceof File && !file.type) { if (file instanceof File && !file.type) {
file = new Blob([ file ], { file = new Blob([file], {
type: mime.getType(file.name) ?? undefined type: mime.getType(file.name) ?? undefined,
}); });
} }
const render = await ff.render({ const render = await ff
.render({
blob: file, blob: file,
args: ['-c', 'copy', '-map', '0'] args: ["-c", "copy", "-map", "0"],
}).catch(e => { })
console.error("uh-oh! render error") .catch((e) => {
console.error(e) console.error("uh-oh! render error");
console.error(e);
return createDialog({ return createDialog({
id: "remux-error", id: "remux-error",
type: "small", type: "small",
@ -132,7 +137,6 @@
} else { } else {
console.log("not a valid file"); console.log("not a valid file");
} }
} finally { } finally {
processing = false; processing = false;
file = undefined; file = undefined;
@ -150,7 +154,7 @@
event.cancel(); event.cancel();
//TODO: show a popup with an option to kill ongoing processing //TODO: show a popup with an option to kill ongoing processing
} }
}) });
$: if (browser && processing) { $: if (browser && processing) {
window.addEventListener("beforeunload", beforeUnloadHandler); window.addEventListener("beforeunload", beforeUnloadHandler);
@ -168,7 +172,13 @@
</svelte:head> </svelte:head>
<DropReceiver id="remux-container" bind:draggedOver bind:file> <DropReceiver id="remux-container" bind:draggedOver bind:file>
<div id="remux-open" class:processing> <div
id="remux-open"
class:processing
tabindex="-1"
data-first-focus
data-focus-ring-hidden
>
<FileReceiver <FileReceiver
bind:draggedOver bind:draggedOver
bind:file bind:file
@ -188,11 +198,15 @@
</div> </div>
</div> </div>
<div id="remux-processing" class:processing> <div id="remux-processing" class:processing aria-hidden={!processing}>
{#if processing} {#if processing}
{#if progress && speed} {#if progress && speed}
<div class="progress-bar"> <div class="progress-bar">
<Skeleton width="{progress}%" height="20px" class="elevated" /> <Skeleton
width="{progress}%"
height="20px"
class="elevated"
/>
</div> </div>
<div class="progress-text"> <div class="progress-text">
processing ({progress}%, {speed}x)... processing ({progress}%, {speed}x)...