my_gradio / js /atoms /src /ShareButton.svelte
xray918's picture
Upload folder using huggingface_hub
0ad74ed verified
raw
history blame contribute delete
949 Bytes
<script lang="ts">
import IconButton from "./IconButton.svelte";
import { Community } from "@gradio/icons";
import { createEventDispatcher } from "svelte";
import type { ShareData } from "@gradio/utils";
import { ShareError } from "@gradio/utils";
import type { I18nFormatter } from "@gradio/utils";
const dispatch = createEventDispatcher<{
share: ShareData;
error: string;
}>();
export let formatter: (arg0: any) => Promise<string>;
export let value: any;
export let i18n: I18nFormatter;
let pending = false;
</script>
<IconButton
Icon={Community}
label={i18n("common.share")}
{pending}
on:click={async () => {
try {
pending = true;
const formatted = await formatter(value);
dispatch("share", {
description: formatted
});
} catch (e) {
console.error(e);
let message = e instanceof ShareError ? e.message : "Share failed.";
dispatch("error", message);
} finally {
pending = false;
}
}}
/>