'use client';
import { type AllHTMLAttributes } from 'react';
import { useExternRef } from '../../hooks/useExternRef';
import { useFocusTrap, type UseFocusTrapProps } from '../../hooks/useFocusTrap';
import { DEFAULT_MUTATION_OBSERVER_OPTIONS } from '../../hooks/useMutationObserver';
import type { HasComponent, HasRootRef } from '../../types';
export interface FocusTrapProps
extends UseFocusTrapProps,
Omit, keyof UseFocusTrapProps>,
HasRootRef,
HasComponent {}
export const FocusTrap = ({
Component = 'div',
onClose,
autoFocus = true,
restoreFocus = true,
disabled = false,
mount = true,
timeout = 0,
getRootRef,
children,
captureEscapeKeyboardEvent = true,
mutationObserverOptions = DEFAULT_MUTATION_OBSERVER_OPTIONS,
...restProps
}: FocusTrapProps): React.ReactNode => {
const ref = useExternRef(getRootRef);
useFocusTrap(ref, {
autoFocus,
restoreFocus,
disabled,
mount,
timeout,
onClose,
captureEscapeKeyboardEvent,
mutationObserverOptions,
});
return (
{children}
);
};