mirror of https://github.com/VERT-sh/VERT.git
47 lines
1.2 KiB
Svelte
47 lines
1.2 KiB
Svelte
<script lang="ts">
|
|
import { goto } from "$app/navigation";
|
|
import Uploader from "$lib/components/functional/Uploader.svelte";
|
|
import { converters } from "$lib/converters";
|
|
import { files } from "$lib/store/index.svelte";
|
|
|
|
const convertAllFiles = async () => {
|
|
const promises = files.files?.map(async (file, i) => {
|
|
let conversionType = files.conversionTypes[i];
|
|
const converter = converters[0];
|
|
const convertedFile = await converter.convert(
|
|
{
|
|
name: file.name,
|
|
buffer: await file.arrayBuffer(),
|
|
},
|
|
conversionType,
|
|
);
|
|
files.downloadFns[i] = () => {
|
|
const url = URL.createObjectURL(
|
|
new Blob([convertedFile.buffer]),
|
|
);
|
|
const a = document.createElement("a");
|
|
a.href = url;
|
|
if (conversionType.startsWith("."))
|
|
conversionType = conversionType.slice(1);
|
|
a.download = `${file.name}.${conversionType}`;
|
|
a.target = "_self";
|
|
a.click();
|
|
URL.revokeObjectURL(url);
|
|
};
|
|
});
|
|
if (promises) await Promise.all(promises);
|
|
};
|
|
</script>
|
|
|
|
<Uploader
|
|
bind:files={files.files}
|
|
onupload={() => files.files.length > 0 && goto("/convert")}
|
|
/>
|
|
|
|
<style>
|
|
/* for this page specifically */
|
|
:global(html, body) {
|
|
height: 100%;
|
|
}
|
|
</style>
|