{"version":3,"file":"ModalFocus.cjs","sourceRoot":"","sources":["../../../src/components/ModalFocus/ModalFocus.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA2C;AAC3C,wEAA8C;AAI9C;;;GAGG;AAEH,4EAA4E;AAC5E,8EAA8E;AAC9E,qEAAqE;AACrE,MAAM,SAAS;AACb,8DAA8D;AAC7D,0BAAsB,CAAC,OAAO,IAAI,0BAAc,CAAC;AAE7C,MAAM,UAAU,GAA8B,CAAC,EACpD,eAAe,EACf,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACpC,IAAI,eAAe,EAAE,OAAO,EAAE;YAC5B,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;SACjC;IACH,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,MAAM,cAAc,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACtC,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,MAAM,WAAW,GAAG,YAAY,IAAI,CAAC,aAAa,CAAC;IAEnD,OAAO,CACL,8BAAC,SAAS,IACR,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,WAAW,KACpB,KAAK,IAER,QAAQ,CACC,CACb,CAAC;AACJ,CAAC,CAAC;AA/BW,QAAA,UAAU,cA+BrB;AAEF,kBAAU,CAAC,WAAW,GAAG,YAAY,CAAC","sourcesContent":["import React, { useCallback } from 'react';\nimport ReactFocusLock from 'react-focus-lock';\n\nimport type { ModalFocusProps } from './ModalFocus.types';\n\n/**\n * Based on the ModalFocusScope component from chakra-ui:\n * https://github.com/chakra-ui/chakra-ui/blob/main/packages/components/modal/src/modal-focus.tsx\n */\n\n// `react-focus-lock` ships dual ESM/CJS builds; depending on the consumer's\n// bundler interop, the default export can land as either the component itself\n// or wrapped under `.default`. This picks whichever one is callable.\nconst FocusTrap: typeof ReactFocusLock =\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  (ReactFocusLock as any).default ?? ReactFocusLock;\n\nexport const ModalFocus: React.FC<ModalFocusProps> = ({\n  initialFocusRef,\n  finalFocusRef,\n  restoreFocus,\n  children,\n  autoFocus,\n  ...props\n}) => {\n  const onActivation = useCallback(() => {\n    if (initialFocusRef?.current) {\n      initialFocusRef.current.focus();\n    }\n  }, [initialFocusRef]);\n\n  const onDeactivation = useCallback(() => {\n    finalFocusRef?.current?.focus();\n  }, [finalFocusRef]);\n\n  const returnFocus = restoreFocus && !finalFocusRef;\n\n  return (\n    <FocusTrap\n      autoFocus={autoFocus}\n      onActivation={onActivation}\n      onDeactivation={onDeactivation}\n      returnFocus={returnFocus}\n      {...props}\n    >\n      {children}\n    </FocusTrap>\n  );\n};\n\nModalFocus.displayName = 'ModalFocus';\n"]}