diff --git a/src/app.css b/src/app.css
index 1905de8..4c409ed 100644
--- a/src/app.css
+++ b/src/app.css
@@ -21,5 +21,5 @@
body {
@apply text-foreground bg-background font-body overflow-x-hidden;
- padding-left: calc(100vw - 100%);
+ width: 100vw;
}
diff --git a/src/lib/components/functional/Uploader.svelte b/src/lib/components/functional/Uploader.svelte
index 8138c51..469323e 100644
--- a/src/lib/components/functional/Uploader.svelte
+++ b/src/lib/components/functional/Uploader.svelte
@@ -55,6 +55,7 @@
if (!event.dataTransfer) return;
if (!files) files = Array.from(event.dataTransfer.files);
else files.push(...Array.from(event.dataTransfer.files));
+ onupload?.();
return true;
}
diff --git a/src/lib/components/visual/effects/ProgressiveBlur.svelte b/src/lib/components/visual/effects/ProgressiveBlur.svelte
new file mode 100644
index 0000000..1bdc6d3
--- /dev/null
+++ b/src/lib/components/visual/effects/ProgressiveBlur.svelte
@@ -0,0 +1,68 @@
+
+
+
+ {#each blurSteps as { blurIntensity, mask }, index}
+
+ {/each}
+
+
+
diff --git a/src/lib/store/index.svelte.ts b/src/lib/store/index.svelte.ts
index 1db8e3e..ce27efc 100644
--- a/src/lib/store/index.svelte.ts
+++ b/src/lib/store/index.svelte.ts
@@ -1,7 +1,12 @@
class Files {
- public files = $state([]);
+ public files = $state<
+ {
+ file: File;
+ to: string;
+ blobUrl: string;
+ }[]
+ >([]);
public conversionTypes = $state([]);
- public downloadFns = $state<(() => void)[]>([]);
public beenToConverterPage = $state(false);
public shouldShowAlert = $derived(
!this.beenToConverterPage && this.files.length > 0,
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index e57eac9..b1605a7 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -25,18 +25,30 @@
const linkIndex = $derived(
Object.keys(links).findIndex((link) => links[link] === data.pathname),
);
+
+ const maybeNavToHome = (e: DragEvent) => {
+ if (e.dataTransfer?.types.includes("Files")) {
+ e.preventDefault();
+ goto("/");
+ }
+ };
-
+
-
-
{#each Object.entries(links) as [name, link] (link)}
-
+
{#key data.pathname}
-
+
{
- 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);
+ let ourFiles = $state
();
+
+ const runUpload = () => {
+ files.files = [
+ ...files.files,
+ ...(ourFiles || []).map((f) => ({
+ file: f,
+ to: converters[0].supportedFormats[0],
+ blobUrl: URL.createObjectURL(f),
+ })),
+ ];
+
+ ourFiles = [];
+
+ if (files.files.length > 0 && !files.beenToConverterPage)
+ goto("/convert");
};
+
+ // 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);
+ // };
- files.files.length > 0 && goto("/convert")}
-/>
+
+
+