adf0d17497
publish / version_or_publish (push) Has been cancelled
storybook-build / changes (push) Has been cancelled
storybook-build / :storybook-build (push) Has been cancelled
Sync Gradio Skills to Hugging Face / sync-skills (push) Has been cancelled
functional / changes (push) Has been cancelled
functional / build-frontend (push) Has been cancelled
functional / functional-test-SSR=false (push) Has been cancelled
functional / functional-reload (push) Has been cancelled
js / changes (push) Has been cancelled
js / js-test (push) Has been cancelled
docs-build / changes (push) Has been cancelled
docs-build / docs-build (push) Has been cancelled
docs-build / website-build (push) Has been cancelled
functional / functional-test-SSR=true (push) Has been cancelled
hygiene / hygiene-test (push) Has been cancelled
python / changes (push) Has been cancelled
python / build (push) Has been cancelled
python / test-ubuntu-latest-flaky (push) Has been cancelled
python / test-ubuntu-latest-not-flaky (push) Has been cancelled
python / test-windows-latest-flaky (push) Has been cancelled
python / test-windows-latest-not-flaky (push) Has been cancelled
41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import { uploadToHuggingFace } from "@gradio/utils";
|
|
import { FileData } from "@gradio/client";
|
|
|
|
export async function format_gallery_for_sharing(
|
|
value: [FileData, string | null][] | null
|
|
): Promise<string> {
|
|
if (!value) return "";
|
|
let urls = await Promise.all(
|
|
value.map(async ([image, _]) => {
|
|
if (image === null || !image.url) return "";
|
|
return await uploadToHuggingFace(image.url, "url");
|
|
})
|
|
);
|
|
|
|
return `<div style="display: flex; flex-wrap: wrap; gap: 16px">${urls
|
|
.map((url) => `<img src="${url}" style="height: 400px" />`)
|
|
.join("")}</div>`;
|
|
}
|
|
|
|
export async function handle_save(
|
|
img_blob: Blob,
|
|
upload: (files: FileData[]) => Promise<(FileData | null)[] | null>,
|
|
filename = "uploaded_file"
|
|
): Promise<FileData[]> {
|
|
const ext = img_blob.type.split("/")[1] || "png";
|
|
const f_ = new File([img_blob], `${filename}.${ext}`);
|
|
const files = [
|
|
new FileData({
|
|
path: f_.name,
|
|
orig_name: f_.name,
|
|
blob: f_,
|
|
size: f_.size,
|
|
mime_type: f_.type,
|
|
is_stream: false
|
|
})
|
|
];
|
|
return ((await upload(files)) ?? []).filter(
|
|
(file): file is FileData => file !== null
|
|
);
|
|
}
|