import { createSignal, onCleanup, onMount, type Accessor, type JSX } from 'solid-js' export default function CustomCursor(props: { children?: JSX.Element active: Accessor cursorText: Accessor isOpen: Accessor }): JSX.Element { // types interface XY { x: number y: number } // variables let controller: AbortController | undefined // states const [xy, setXy] = createSignal({ x: 0, y: 0 }) // helper functions const onMouse: (e: MouseEvent) => void = (e) => { const { clientX, clientY } = e setXy({ x: clientX, y: clientY }) } // effects onMount(() => { controller = new AbortController() const abortSignal = controller.signal window.addEventListener('mousemove', onMouse, { passive: true, signal: abortSignal }) }) onCleanup(() => { controller?.abort() }) return ( <>
{props.cursorText()}
) }