{"version":3,"file":"FocusTrap.cjs","sources":["../../../src/components/FocusTrap/FocusTrap.tsx"],"sourcesContent":["import { cloneElement } from 'react';\nimport { useFocusTrap, useMergedRef } from '@raikou/hooks';\nimport { isElement } from '../../core';\nimport { VisuallyHidden } from '../VisuallyHidden';\n\nexport interface FocusTrapProps {\n  /** Element at which focus should be trapped, should support ref prop */\n  children: any;\n\n  /** Determines whether focus should be trapped within child element */\n  active?: boolean;\n\n  /** Prop that should be used to access component ref */\n  refProp?: string;\n\n  /** Assigns element `ref` */\n  innerRef?: React.ForwardedRef<any>;\n}\n\nexport function FocusTrap({\n  children,\n  active = true,\n  refProp = 'ref',\n  innerRef,\n}: FocusTrapProps): React.ReactElement {\n  const focusTrapRef = useFocusTrap(active);\n  const ref = useMergedRef(focusTrapRef, innerRef);\n\n  if (!isElement(children)) {\n    return children;\n  }\n\n  return cloneElement(children, { [refProp]: ref });\n}\n\nexport function FocusTrapInitialFocus(props: React.ComponentPropsWithoutRef<'span'>) {\n  return <VisuallyHidden tabIndex={-1} data-autofocus {...props} />;\n}\n\nFocusTrap.displayName = '@raikou/core/FocusTrap';\nFocusTrapInitialFocus.displayName = '@raikou/core/FocusTrapInitialFocus';\nFocusTrap.InitialFocus = FocusTrapInitialFocus;\n"],"names":["useFocusTrap","useMergedRef","isElement","cloneElement","VisuallyHidden"],"mappings":";;;;;;;;;;;;AAmBO,SAAS,SAAU,CAAA;AAAA,EACxB,QAAA;AAAA,EACA,MAAS,GAAA,IAAA;AAAA,EACT,OAAU,GAAA,KAAA;AAAA,EACV;AACF,CAAuC,EAAA;AACrC,EAAM,MAAA,YAAA,GAAeA,mBAAa,MAAM,CAAA;AACxC,EAAM,MAAA,GAAA,GAAMC,kBAAa,CAAA,YAAA,EAAc,QAAQ,CAAA;AAE/C,EAAI,IAAA,CAACC,mBAAU,CAAA,QAAQ,CAAG,EAAA;AACxB,IAAO,OAAA,QAAA;AAAA;AAGT,EAAA,OAAOC,mBAAa,QAAU,EAAA,EAAE,CAAC,OAAO,GAAG,KAAK,CAAA;AAClD;AAEO,SAAS,sBAAsB,KAA+C,EAAA;AACnF,EAAA,sCAAQC,6BAAe,EAAA,EAAA,QAAA,EAAU,IAAI,gBAAc,EAAA,IAAA,EAAE,GAAG,KAAO,EAAA,CAAA;AACjE;AAEA,SAAA,CAAU,WAAc,GAAA,wBAAA;AACxB,qBAAA,CAAsB,WAAc,GAAA,oCAAA;AACpC,SAAA,CAAU,YAAe,GAAA,qBAAA;;;;;"}