Something went wrong. Try again.
Experiment to rebuild Diffuse using web applets.
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283<main class="container"> <h1>Native file system input</h1> <p> Add music from your device. <br />Music added so far: </p> <div id="directories"> <p> <span class="with-icon"> <i class="iconoir-bonfire"></i> <small>Just a moment, loading mounted directories.</small> </span> </p> </div> <button id="mount">Mount directory</button></main>
<script> import type { Tasks } from "@scripts/input/native-fs/worker"; import type { Track } from "@applets/core/types.d.ts"; import { register } from "@scripts/applet/common"; import { endpoint, inIframe, SharedWorker, transfer } from "@scripts/common"; import * as Mounting from "@scripts/input/native-fs/mounting"; import manifest from "./_manifest.json";
//////////////////////////////////////////// // SETUP //////////////////////////////////////////// const worker = endpoint<Tasks>( new Worker(new URL("../../../scripts/input/native-fs/worker", import.meta.url), { type: "module", name: manifest.name, }), );
// Register applet const context = register({ worker });
//////////////////////////////////////////// // ACTIONS //////////////////////////////////////////// const consult = async (fileUriOrScheme: string) => { return await worker.consult(fileUriOrScheme); };
const contextualize = async (cachedTracks: Track[]) => { return await worker.contextualize(transfer(cachedTracks)); };
const groupConsult = async (tracks: Track[]) => { return await worker.groupConsult(transfer(tracks)); };
const list = async (cachedTracks: Track[] = []) => { return await worker.list(transfer(cachedTracks)); };
const resolve = async (args: { method: string; uri: string }) => { return await worker.resolve(args); };
const mount = async () => { return Mounting.mount(); };
const unmount = async (handleId: string) => { return Mounting.unmount(handleId); };
context.setActionHandler("consult", consult); context.setActionHandler("contextualize", contextualize); context.setActionHandler("groupConsult", groupConsult); context.setActionHandler("list", list); context.setActionHandler("resolve", resolve); context.setActionHandler("mount", mount); context.setActionHandler("unmount", unmount);
//////////////////////////////////////////// // UI //////////////////////////////////////////// const ui = inIframe() ? undefined : await import("@scripts/input/native-fs/ui");</script>