import type { Page } from "./urlState"; // Page links: a page's own address, and whether a click on one is the app's to handle. /** A page's own address, for a link to it (the nav rail's rows). Only the page: the rest of a page's * state — the feed's filters, Plex's library — a fresh tab restores from the account's own storage, * as a bookmark would; the CURRENT page's params would be the wrong page's state. */ export function pageHref(p: Page): string { return `/?page=${p}`; } /** Should this click be handled IN-APP, or left to the browser? * * An anchor that ALSO navigates in-app has to keep the browser's own gestures working — Ctrl/Cmd-click * and Shift-click open a tab/window, and middle-click arrives as `auxclick` and never reaches React's * `onClick` at all (the `button !== 0` arm is belt-and-braces for synthetic events). Otherwise the * thing looks like a link and behaves like a button, which is what the channel name in the player did. * One predicate, so a second such link cannot forget an arm. */ export function isPlainLeftClick(e: { metaKey: boolean; ctrlKey: boolean; shiftKey: boolean; altKey: boolean; button: number; }): boolean { return !e.metaKey && !e.ctrlKey && !e.shiftKey && !e.altKey && e.button === 0; }