import { createEffect, createSignal, onCleanup, type Component, } from "solid-js"; import Scaffold from "~material/Scaffold"; import BottomSheet from "~material/BottomSheet"; import { Button, IconButton, Input, ThemeProvider, Toolbar, } from "@suid/material"; import { Close as CloseIcon, ContentCopy } from "@suid/icons-material"; import { Title } from "~material/typography"; import { render } from "solid-js/web"; import { useRootTheme } from "~material/theme"; const ShareBottomSheet: Component<{ data?: ShareData; open?: boolean; onClose: () => void; }> = (props) => { return ( Share... } >
undefined} fullWidth />
); }; export function canShare(data?: ShareData) { if (navigator.canShare) { return navigator.canShare(data); } return !!data?.url; } export async function share(data?: ShareData): Promise { if (navigator.share) { return await navigator.share(data); } return new Promise((resolve) => { const element = document.createElement("div"); document.body.appendChild(element); const dispose = render(() => { const [open, setOpen] = createSignal(true); const theme = useRootTheme(); onCleanup(() => { element.remove(); resolve(); }); createEffect(() => { if (!open()) { dispose(); } }); return ( setOpen(false)} /> ); }, element); }); }