import { createSignal, onCleanup, onMount, Show, For, type Accessor, } from "solid-js"; import type { TopBarDom, TopBarNavigationItem } from "../../eh"; import { nextUiScale, type UiScale, uiScaleLevel, } from "../../ui"; import texts from "../../i18n"; import { Icon } from "../Widgets/Icon"; const TOUCH_TOP_BAR_ICON_SIZE = "var(--ehpeek-touch-top-bar-icon-size)"; const TOUCH_TOP_BAR_PROJECT_ICON_SIZE = "var(--ehpeek-touch-top-bar-project-icon-size)"; const TOUCH_TOP_BAR_SINGLE_COLUMN_ICON_SIZE = "calc(var(--ehpeek-touch-top-bar-icon-size) * 1.1)"; const TOUCH_ICON_BUTTON_CLASS = "inline-flex w-[var(--ui-control-size-xl)] h-[var(--ui-control-size-xl)] items-center justify-center ui-rounded-md border-0 bg-transparent ehp-color-site-text no-underline cursor-pointer hover:bg-[var(--color-site-item-hover)] [touch-action:manipulation] [--ehpeek-touch-top-bar-icon-size:var(--ui-control-size-xs)]"; function TouchTopBarUiMenu(props: { uiScale: { value: Accessor; onChange: (scale: UiScale) => void; }; leftHandedControls: { enabled: Accessor; onChange: (enabled: boolean) => void; }; columns?: { enabled: Accessor; onChange: (enabled: boolean) => void; }; }) { const [open, setOpen] = createSignal(false); let root!: HTMLDivElement; onMount(() => { const onClick = (event: MouseEvent) => { if (!(event.target instanceof Element && root.contains(event.target))) { setOpen(false); } }; document.addEventListener("click", onClick); onCleanup(() => { document.removeEventListener("click", onClick); }); }); return (
); } function TouchTopBarMenu(props: { leftHanded: Accessor; source: TopBarDom; }) { const [open, setOpen] = createSignal(false); const [navItems, setNavItems] = createSignal([]); let root!: HTMLDivElement; const toggleMenu = () => { setOpen((value) => { const next = !value; if (next) { setNavItems(props.source.handle.readNavigationItems()); } return next; }); }; onMount(() => { const onClick = (event: MouseEvent) => { if (event.target instanceof Element && root.contains(event.target)) { return; } setOpen(false); }; document.addEventListener("click", onClick); onCleanup(() => { document.removeEventListener("click", onClick); }); }); return ( ); } export function TouchTopBar(props: { historyHref?: string; uiScale: { value: Accessor; onChange: (scale: UiScale) => void; }; leftHandedControls: { enabled: Accessor; onChange: (enabled: boolean) => void; }; columns?: { enabled: Accessor; onChange: (enabled: boolean) => void; }; source: TopBarDom; onSettingsMenuOpen: () => void; }) { return ( ); }