'use client'; import { useMemo, useState } from 'react'; import { ScrollText } from 'lucide-react'; import CopyButton from '@/components/CopyButton'; import Scrim from '@/components/Scrim'; import getCardInfo from '@/tools/getCardInfo'; import { cardMap, layout } from '@/constants/tarokka'; import { GameUpdate } from '@/types'; type NotesProps = { gameData: GameUpdate; show: boolean; }; export default function Notes({ gameData: { dmID, cards, settings }, show }: NotesProps) { const isDM = !!dmID; const [open, setOpen] = useState(false); const notes: (string[] | undefined)[] = useMemo( () => Array.from({ length: 9 }) .map((_cell: unknown, index: number) => cards[cardMap[index]]) .map((card, index) => card ? getCardInfo(card, layout[cardMap[index]], isDM, settings) : null, ) .map( (_cell: unknown, index: number, cards) => cards[Object.keys(cardMap).find((key) => cardMap[key] === index) || 0], ) .filter((truthy) => truthy), [settings], ); const showNotes = show && open && (isDM || settings.notes); return (
setOpen((prev) => !prev)} className={`transition-all duration-250 ${showNotes ? 'pointer-events-auto opacity-100' : 'pointer-events-none opacity-0'}`} >
note!.join('\n')).join('\n\n')} className="text-yellow-400 hover:drop-shadow-[0_0_1px_#ffd700] absolute top-2 right-2 p-2 transition-all duration-250 bg-black/20 hover:bg-black/40 rounded-full cursor-pointer" />
{notes.map((note, index) => (
{note!.map((blurb, index) => (

{blurb}

))}
{index < notes.length - 1 &&
}
))}
); }