| <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; | |
| } | |
| }} | |
| /> | |