import React, { useEffect, useRef, type ReactNode } from 'react'; import { PiCaretLeftLight, PiCaretRightLight } from 'react-icons/pi'; import { DevOnly, useControllable } from '@wener/reaction'; import { Window, WindowDock } from '..'; export const StandaloneWindow = ({ open: _open, onOpenChange: _onOpenChange, children, controller, body, }: { open?: boolean; onOpenChange?: (open: boolean) => void; children?: ReactNode; controller?: ReactNode; body?: HTMLElement; }) => { const initialRef = useRef(true); const [open, setOpen] = useControllable(_open, _onOpenChange, false); useEffect(() => { if (initialRef.current) return; return Window.getRoot().store.subscribe((s) => { if (s.windows.length && !initialRef.current) { initialRef.current = true; setOpen(true); } }); }, []); return ( <> {controller ?? (
{children}
)} ); };