{"version":3,"file":"useFocusEffect.js","names":[],"sources":["esm/useFocusEffect.js"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { useOptionalNavigation } from \"./link/useLoadedNavigation\";\nfunction useFocusEffect(effect, deps = []) {\n  const navigation = useOptionalNavigation();\n  const prevDepsRef = useRef(deps);\n  const depsCountRef = useRef(0);\n  if (!Array.isArray(deps) || !Array.isArray(prevDepsRef.current) || prevDepsRef.current.length !== deps.length || prevDepsRef.current.some((d, i) => !Object.is(d, deps[i]))) {\n    prevDepsRef.current = deps;\n    depsCountRef.current++;\n  }\n  useEffect(() => {\n    if (!navigation) {\n      return;\n    }\n    let isFocused = false;\n    let cleanup;\n    const callback = () => {\n      const destroy = effect();\n      if (destroy === void 0 || typeof destroy === \"function\") {\n        return destroy;\n      }\n      if (process.env.NODE_ENV !== \"production\") {\n        let message = \"An effect function must not return anything besides a function, which is used for clean-up.\";\n        if (destroy === null) {\n          message += \" You returned 'null'. If your effect does not require clean-up, return 'undefined' (or nothing).\";\n        } else if (typeof destroy.then === \"function\") {\n          message += \"\\n\\nIt looks like you wrote 'useFocusEffect(async () => ...)' or returned a Promise. Instead, write the async function inside your effect and call it immediately:\\n\\nuseFocusEffect(\\n  React.useCallback(() => {\\n    async function fetchData() {\\n      // You can await here\\n      const response = await MyAPI.getData(someId);\\n      // ...\\n    }\\n\\n    fetchData();\\n  }, [someId])\\n);\\n\\nSee usage guide: https://reactnavigation.org/docs/use-focus-effect\";\n        } else {\n          message += ` You returned '${JSON.stringify(destroy)}'.`;\n        }\n        console.error(message);\n      }\n    };\n    if (navigation.isFocused()) {\n      cleanup = callback();\n      isFocused = true;\n    }\n    const unsubscribeFocus = navigation.addListener(\"focus\", () => {\n      if (isFocused) return;\n      cleanup?.();\n      cleanup = callback();\n      isFocused = true;\n    });\n    const unsubscribeBlur = navigation.addListener(\"blur\", () => {\n      cleanup?.();\n      cleanup = void 0;\n      isFocused = false;\n    });\n    return () => {\n      cleanup?.();\n      unsubscribeFocus();\n      unsubscribeBlur();\n    };\n  }, [navigation, depsCountRef.current]);\n}\nexport {\n  useFocusEffect\n};\n//# sourceMappingURL=useFocusEffect.js.map\n"],"mappings":";;;;AAEA,SAAS,eAAe,QAAQ,OAAO,CAAC,GAAG;CACzC,MAAM,aAAa,sBAAsB;CACzC,MAAM,cAAc,OAAO,IAAI;CAC/B,MAAM,eAAe,OAAO,CAAC;CAC7B,IAAI,CAAC,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,QAAQ,YAAY,OAAO,KAAK,YAAY,QAAQ,WAAW,KAAK,UAAU,YAAY,QAAQ,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,GAAG,KAAK,EAAE,CAAC,GAAG;EAC3K,YAAY,UAAU;EACtB,aAAa;CACf;CACA,gBAAgB;EACd,IAAI,CAAC,YAAY;GACf;EACF;EACA,IAAI,YAAY;EAChB,IAAI;EACJ,MAAM,iBAAiB;GACrB,MAAM,UAAU,OAAO;GACvB,IAAI,YAAY,KAAK,KAAK,OAAO,YAAY,YAAY;IACvD,OAAO;GACT;GACA,IAAI,QAAQ,IAAI,aAAa,cAAc;IACzC,IAAI,UAAU;IACd,IAAI,YAAY,MAAM;KACpB,WAAW;IACb,OAAO,IAAI,OAAO,QAAQ,SAAS,YAAY;KAC7C,WAAW;IACb,OAAO;KACL,WAAW,kBAAkB,KAAK,UAAU,OAAO,EAAE;IACvD;IACA,QAAQ,MAAM,OAAO;GACvB;EACF;EACA,IAAI,WAAW,UAAU,GAAG;GAC1B,UAAU,SAAS;GACnB,YAAY;EACd;EACA,MAAM,mBAAmB,WAAW,YAAY,eAAe;GAC7D,IAAI,WAAW;GACf,UAAU;GACV,UAAU,SAAS;GACnB,YAAY;EACd,CAAC;EACD,MAAM,kBAAkB,WAAW,YAAY,cAAc;GAC3D,UAAU;GACV,UAAU,KAAK;GACf,YAAY;EACd,CAAC;EACD,aAAa;GACX,UAAU;GACV,iBAAiB;GACjB,gBAAgB;EAClB;CACF,GAAG,CAAC,YAAY,aAAa,OAAO,CAAC;AACvC"}