{"ast":null,"code":"import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport { useNavigation } from \"@react-navigation/native\";\nimport { useCallback, useState, useEffect, useRef } from \"react\";\nimport { useExpoRouter } from \"../global-state/router-store\";\nexport function useLoadedNavigation() {\n  var _useExpoRouter = useExpoRouter(),\n    navigationRef = _useExpoRouter.navigationRef;\n  var navigation = useNavigation();\n  var isMounted = useRef(true);\n  var pending = useRef([]);\n  useEffect(function () {\n    isMounted.current = true;\n    return function () {\n      isMounted.current = false;\n    };\n  }, []);\n  var flush = useCallback(function () {\n    if (isMounted.current) {\n      var pendingCallbacks = pending.current;\n      pending.current = [];\n      pendingCallbacks.forEach(function (callback) {\n        callback(navigation);\n      });\n    }\n  }, [navigation]);\n  useEffect(function () {\n    if (navigationRef.current) {\n      flush();\n    }\n  }, [flush]);\n  var push = useCallback(function (fn) {\n    pending.current.push(fn);\n    if (navigationRef.current) {\n      flush();\n    }\n  }, [flush]);\n  return push;\n}\nexport function useOptionalNavigation() {\n  var _useState = useState(null),\n    _useState2 = _slicedToArray(_useState, 2),\n    navigation = _useState2[0],\n    setNavigation = _useState2[1];\n  var loadNavigation = useLoadedNavigation();\n  useEffect(function () {\n    loadNavigation(function (nav) {\n      return setNavigation(nav);\n    });\n  }, []);\n  return navigation;\n}","map":{"version":3,"names":["useNavigation","useCallback","useState","useEffect","useRef","useExpoRouter","useLoadedNavigation","_useExpoRouter","navigationRef","navigation","isMounted","pending","current","flush","pendingCallbacks","forEach","callback","push","fn","useOptionalNavigation","_useState","_useState2","_slicedToArray","setNavigation","loadNavigation","nav"],"sources":["/Users/Daniel.Antelo/Workspaces/expo-template-reactrouter-nativebase/node_modules/expo-router/src/link/useLoadedNavigation.ts"],"sourcesContent":["import { NavigationProp, useNavigation } from \"@react-navigation/native\";\nimport { useCallback, useState, useEffect, useRef } from \"react\";\n\nimport { useExpoRouter } from \"../global-state/router-store\";\n\ntype GenericNavigation = NavigationProp<ReactNavigation.RootParamList>;\n\n/** Returns a callback which is invoked when the navigation state has loaded. */\nexport function useLoadedNavigation() {\n  const { navigationRef } = useExpoRouter();\n  const navigation = useNavigation();\n  const isMounted = useRef(true);\n  const pending = useRef<((navigation: GenericNavigation) => void)[]>([]);\n\n  useEffect(() => {\n    isMounted.current = true;\n    return () => {\n      isMounted.current = false;\n    };\n  }, []);\n\n  const flush = useCallback(() => {\n    if (isMounted.current) {\n      const pendingCallbacks = pending.current;\n      pending.current = [];\n      pendingCallbacks.forEach((callback) => {\n        callback(navigation);\n      });\n    }\n  }, [navigation]);\n\n  useEffect(() => {\n    if (navigationRef.current) {\n      flush();\n    }\n  }, [flush]);\n\n  const push = useCallback(\n    (fn: (navigation: GenericNavigation) => void) => {\n      pending.current.push(fn);\n      if (navigationRef.current) {\n        flush();\n      }\n    },\n    [flush]\n  );\n\n  return push;\n}\n\nexport function useOptionalNavigation(): GenericNavigation | null {\n  const [navigation, setNavigation] = useState<GenericNavigation | null>(null);\n  const loadNavigation = useLoadedNavigation();\n\n  useEffect(() => {\n    loadNavigation((nav) => setNavigation(nav));\n  }, []);\n\n  return navigation;\n}\n"],"mappings":";AAAA,SAAyBA,aAAa,QAAQ,0BAA0B;AACxE,SAASC,WAAW,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAEhE,SAASC,aAAa;AAKtB,OAAO,SAASC,mBAAmBA,CAAA,EAAG;EACpC,IAAAC,cAAA,GAA0BF,aAAa,CAAC,CAAC;IAAjCG,aAAa,GAAAD,cAAA,CAAbC,aAAa;EACrB,IAAMC,UAAU,GAAGT,aAAa,CAAC,CAAC;EAClC,IAAMU,SAAS,GAAGN,MAAM,CAAC,IAAI,CAAC;EAC9B,IAAMO,OAAO,GAAGP,MAAM,CAA8C,EAAE,CAAC;EAEvED,SAAS,CAAC,YAAM;IACdO,SAAS,CAACE,OAAO,GAAG,IAAI;IACxB,OAAO,YAAM;MACXF,SAAS,CAACE,OAAO,GAAG,KAAK;IAC3B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMC,KAAK,GAAGZ,WAAW,CAAC,YAAM;IAC9B,IAAIS,SAAS,CAACE,OAAO,EAAE;MACrB,IAAME,gBAAgB,GAAGH,OAAO,CAACC,OAAO;MACxCD,OAAO,CAACC,OAAO,GAAG,EAAE;MACpBE,gBAAgB,CAACC,OAAO,CAAC,UAACC,QAAQ,EAAK;QACrCA,QAAQ,CAACP,UAAU,CAAC;MACtB,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;EAEhBN,SAAS,CAAC,YAAM;IACd,IAAIK,aAAa,CAACI,OAAO,EAAE;MACzBC,KAAK,CAAC,CAAC;IACT;EACF,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAEX,IAAMI,IAAI,GAAGhB,WAAW,CACtB,UAACiB,EAA2C,EAAK;IAC/CP,OAAO,CAACC,OAAO,CAACK,IAAI,CAACC,EAAE,CAAC;IACxB,IAAIV,aAAa,CAACI,OAAO,EAAE;MACzBC,KAAK,CAAC,CAAC;IACT;EACF,CAAC,EACD,CAACA,KAAK,CACR,CAAC;EAED,OAAOI,IAAI;AACb;AAEA,OAAO,SAASE,qBAAqBA,CAAA,EAA6B;EAChE,IAAAC,SAAA,GAAoClB,QAAQ,CAA2B,IAAI,CAAC;IAAAmB,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAArEX,UAAU,GAAAY,UAAA;IAAEE,aAAa,GAAAF,UAAA;EAChC,IAAMG,cAAc,GAAGlB,mBAAmB,CAAC,CAAC;EAE5CH,SAAS,CAAC,YAAM;IACdqB,cAAc,CAAC,UAACC,GAAG;MAAA,OAAKF,aAAa,CAACE,GAAG,CAAC;IAAA,EAAC;EAC7C,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOhB,UAAU;AACnB"},"metadata":{},"sourceType":"module"}