···119119 listen("progress", this.#progress.set, link);
120120 this.#proxy.progress().then(this.#progress.set);
121121122122+ // Save intermediate batches as they arrive so progress isn't lost
123123+ listen("batch", (tracks) => this.output?.tracks.save(tracks), link);
124124+122125 // Process whenever tracks are initially loaded;
123126 // unless already done so (possibly through another instance of this element)
124127 if (this.hasAttribute("process-when-ready")) {
···88import { NAME as LOCAL_NAME } from "~/components/input/local/element.js";
99import { NAME as OPENSUBSONIC_NAME } from "~/components/input/opensubsonic/element.js";
1010import { NAME as S3_NAME } from "~/components/input/s3/element.js";
1111+import { NAME as WEBDAV_NAME } from "~/components/input/webdav/element.js";
111212131314/**
···2829 local(input);
2930 opensubsonic(input);
3031 s3(input);
3232+ webdav(input);
3133});
32343335////////////////////////////////////////////
···106108export function s3(input) {
107109 input.append(document.createElement(S3_NAME));
108110}
111111+112112+////////////////////////////////////////////
113113+// WEBDAV
114114+////////////////////////////////////////////
115115+116116+/**
117117+ * @param {InputConfigurator} input
118118+ */
119119+export function webdav(input) {
120120+ input.append(document.createElement(WEBDAV_NAME));
121121+}