import { Handle } from "@atcute/lexicons"; import { Meta, MetaProvider } from "@solidjs/meta"; import { A, RouteSectionProps, useLocation, useNavigate } from "@solidjs/router"; import { createEffect, ErrorBoundary, onCleanup, onMount, Show, Suspense } from "solid-js"; import { AccountManager } from "./auth/account.jsx"; import { hasUserScope } from "./auth/scope-utils"; import { agent } from "./auth/state.js"; import { RecordEditor } from "./components/create.jsx"; import { DropdownMenu, MenuProvider, MenuSeparator, NavMenu } from "./components/dropdown.jsx"; import { NavBar } from "./components/navbar.jsx"; import { NotificationContainer } from "./components/notification.jsx"; import { Search, SearchButton, showSearch } from "./components/search.jsx"; import { themeEvent } from "./components/theme.jsx"; import { resolveHandle } from "./utils/api.js"; export const isTouchDevice = "ontouchstart" in window || navigator.maxTouchPoints > 1; const headers: Record = { "did:plc:ia76kvnndjutgedggx2ibrem": "bunny.jpg", "did:plc:oisofpd7lj26yvgiivf3lxsi": "puppy.jpg", "did:plc:vwzwgnygau7ed7b7wt5ux7y2": "water.webp", "did:plc:uu5axsmbm2or2dngy4gwchec": "city.webp", "did:plc:aokggmp5jzj4nc5jifhiplqc": "bridge.jpg", "did:plc:bnqkww7bjxaacajzvu5gswdf": "forest.jpg", "did:plc:p2cp5gopk7mgjegy6wadk3ep": "aurora.jpg", "did:plc:ucaezectmpny7l42baeyooxi": "almaty.webp", "did:plc:7rfssi44thh6f4ywcl3u5nvt": "sonic.jpg", }; const Layout = (props: RouteSectionProps) => { const location = useLocation(); const navigate = useNavigate(); if (location.search.includes("hrt=true")) localStorage.setItem("hrt", "true"); else if (location.search.includes("hrt=false")) localStorage.setItem("hrt", "false"); if (location.search.includes("sailor=true")) localStorage.setItem("sailor", "true"); else if (location.search.includes("sailor=false")) localStorage.setItem("sailor", "false"); createEffect(async () => { if (props.params.repo && !props.params.repo.startsWith("did:")) { const did = await resolveHandle(props.params.repo as Handle); navigate(location.pathname.replace(props.params.repo, did), { replace: true }); } }); onMount(() => { window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", themeEvent); const handleGoToRepo = (ev: KeyboardEvent) => { if (document.querySelector("[data-modal]")) return; if (ev.target instanceof HTMLInputElement || ev.target instanceof HTMLTextAreaElement) return; if (ev.key === "g" && agent()?.sub) { ev.preventDefault(); navigate(`/at://${agent()!.sub}`); } }; window.addEventListener("keydown", handleGoToRepo); onCleanup(() => window.removeEventListener("keydown", handleGoToRepo)); if (localStorage.getItem("sailor") === "true") { const style = document.createElement("style"); style.textContent = ` html, * { cursor: url(/cursor.cur), pointer; } .star { position: fixed; pointer-events: none; z-index: 9999; font-size: 20px; animation: sparkle 0.8s ease-out forwards; } @keyframes sparkle { 0% { opacity: 1; transform: translate(0, 0) rotate(var(--ttheta1)) scale(1); } 100% { opacity: 0; transform: translate(var(--tx), var(--ty)) rotate(var(--ttheta2)) scale(0); } } `; document.head.appendChild(style); let lastTime = 0; const throttleDelay = 30; document.addEventListener("mousemove", (e) => { const now = Date.now(); if (now - lastTime < throttleDelay) return; lastTime = now; const star = document.createElement("div"); star.className = "star"; star.textContent = "✨"; star.style.left = e.clientX + "px"; star.style.top = e.clientY + "px"; const tx = (Math.random() - 0.5) * 50; const ty = (Math.random() - 0.5) * 50; const ttheta1 = Math.random() * 360; const ttheta2 = ttheta1 + (Math.random() - 0.5) * 540; star.style.setProperty("--tx", tx + "px"); star.style.setProperty("--ty", ty + "px"); star.style.setProperty("--ttheta1", ttheta1 + "deg"); star.style.setProperty("--ttheta2", ttheta2 + "deg"); document.body.appendChild(star); setTimeout(() => star.remove(), 800); }); } }); return (
PDSls
Error: {err.message}
} > } > {props.children}
); }; export { Layout };