import { Show, createMemo, createSignal, type JSX } from 'solid-js' import type { ImageJSON } from '../resources' import type { Vector } from '../utils' import CustomCursor from './customCursor' import Nav from './nav' import Stage from './stage' import StageNav from './stageNav' /** * interfaces and types */ export interface DesktopImage extends HTMLImageElement { dataset: { hiUrl: string hiImgH: string hiImgW: string loUrl: string loImgH: string loImgW: string } } export interface HistoryItem { i: number x: number y: number } /** * components */ export default function Desktop(props: { children?: JSX.Element ijs: ImageJSON[] prevText: string closeText: string nextText: string loadingText: string }): JSX.Element { const [cordHist, setCordHist] = createSignal([]) const [isLoading, setIsLoading] = createSignal(false) const [isOpen, setIsOpen] = createSignal(false) const [isAnimating, setIsAnimating] = createSignal(false) const [hoverText, setHoverText] = createSignal('') const [navVector, setNavVector] = createSignal('none') const active = createMemo(() => isOpen() && !isAnimating()) const cursorText = createMemo(() => (isLoading() ? props.loadingText : hoverText())) return ( <>