///
///
///
export interface UploadInit {
/** uploadできるファイルの種類 */
accept: string;
/** 複数個ファイルをuploadできるかどうか */
multiple?: boolean;
}
export function upload(
init: Omit & { multiple?: false },
): Promise;
export function upload(
init: Omit & { multiple: true },
): Promise;
export function upload(init: UploadInit): Promise {
return new Promise((resolve, reject) => {
const input = document.createElement("input");
input.type = "file";
input.accept = init.accept;
input.multiple = init.multiple ?? false;
input.addEventListener("change", () => {
resolve(
init.multiple === true
? (!input.files ? undefined : input.files.length === 0 ? undefined : input.files)
: (input.files?.[0] ?? undefined),
);
});
input.addEventListener("error", reject);
input.click();
});
}