spb/company-atlas
Public
Python 66.3%
TypeScript 22.7%
JavaScript 8.6%
HTML 1.4%
CSS 0.7%
1'use client';2import { createContext, type ReactNode, useCallback, useContext, useMemo, useState } from 'react';3import type { Event } from '@/lib/types';45interface Ctx {6 event: Event | null;7 open: (e: Event) => void;8 close: () => void;9}10const EventDrawerCtx = createContext<Ctx>({ event: null, open: () => undefined, close: () => undefined });1112/** Mounted once in the root layout: any event row can open the evidence drawer with the event it already has. */13export function EventDrawerProvider({ children }: { children: ReactNode }) {14 const [event, setEvent] = useState<Event | null>(null);15 const open = useCallback((e: Event) => setEvent(e), []);16 const close = useCallback(() => setEvent(null), []);17 const value = useMemo(() => ({ event, open, close }), [event, open, close]);18 return <EventDrawerCtx.Provider value={value}>{children}</EventDrawerCtx.Provider>;19}2021export function useEventDrawer() {22 return useContext(EventDrawerCtx);23}24