{"ast":null,"code":"\"use strict\";\n\nimport { findFocusedRoute, getActionFromState as getActionFromStateDefault, getPathFromState as getPathFromStateDefault, getStateFromPath as getStateFromPathDefault, useNavigationIndependentTree } from '@react-navigation/core';\nimport isEqual from 'fast-deep-equal';\nimport * as React from 'react';\nimport { createMemoryHistory } from \"./createMemoryHistory.js\";\nimport { ServerContext } from \"./ServerContext.js\";\nconst findMatchingState = (a, b) => {\n  if (a === undefined || b === undefined || a.key !== b.key) {\n    return [undefined, undefined];\n  }\n  const aHistoryLength = a.history ? a.history.length : a.routes.length;\n  const bHistoryLength = b.history ? b.history.length : b.routes.length;\n  const aRoute = a.routes[a.index];\n  const bRoute = b.routes[b.index];\n  const aChildState = aRoute.state;\n  const bChildState = bRoute.state;\n  if (aHistoryLength !== bHistoryLength || aRoute.key !== bRoute.key || aChildState === undefined || bChildState === undefined || aChildState.key !== bChildState.key) {\n    return [a, b];\n  }\n  return findMatchingState(aChildState, bChildState);\n};\nexport const series = cb => {\n  let queue = Promise.resolve();\n  const callback = () => {\n    queue = queue.then(cb);\n  };\n  return callback;\n};\nconst linkingHandlers = [];\nexport function useLinking(ref, {\n  enabled = true,\n  config,\n  getStateFromPath = getStateFromPathDefault,\n  getPathFromState = getPathFromStateDefault,\n  getActionFromState = getActionFromStateDefault\n}, onUnhandledLinking) {\n  const independent = useNavigationIndependentTree();\n  React.useEffect(() => {\n    if (process.env.NODE_ENV === 'production') {\n      return undefined;\n    }\n    if (independent) {\n      return undefined;\n    }\n    if (enabled !== false && linkingHandlers.length) {\n      console.error(['Looks like you have configured linking in multiple places. This is likely an error since deep links should only be handled in one place to avoid conflicts. Make sure that:', \"- You don't have multiple NavigationContainers in the app each with 'linking' enabled\", '- Only a single instance of the root component is rendered'].join('\\n').trim());\n    }\n    const handler = Symbol();\n    if (enabled !== false) {\n      linkingHandlers.push(handler);\n    }\n    return () => {\n      const index = linkingHandlers.indexOf(handler);\n      if (index > -1) {\n        linkingHandlers.splice(index, 1);\n      }\n    };\n  }, [enabled, independent]);\n  const [history] = React.useState(createMemoryHistory);\n  const enabledRef = React.useRef(enabled);\n  const configRef = React.useRef(config);\n  const getStateFromPathRef = React.useRef(getStateFromPath);\n  const getPathFromStateRef = React.useRef(getPathFromState);\n  const getActionFromStateRef = React.useRef(getActionFromState);\n  React.useEffect(() => {\n    enabledRef.current = enabled;\n    configRef.current = config;\n    getStateFromPathRef.current = getStateFromPath;\n    getPathFromStateRef.current = getPathFromState;\n    getActionFromStateRef.current = getActionFromState;\n  });\n  const validateRoutesNotExistInRootState = React.useCallback(state => {\n    const navigation = ref.current;\n    const rootState = navigation?.getRootState();\n    return state?.routes.some(r => !rootState?.routeNames.includes(r.name));\n  }, [ref]);\n  const server = React.useContext(ServerContext);\n  const getInitialState = React.useCallback(() => {\n    let value;\n    if (enabledRef.current) {\n      const location = server?.location ?? (typeof window !== 'undefined' ? window.location : undefined);\n      const path = location ? location.pathname + location.search : undefined;\n      if (path) {\n        value = getStateFromPathRef.current(path, configRef.current);\n      }\n      onUnhandledLinking(path);\n    }\n    const thenable = {\n      then(onfulfilled) {\n        return Promise.resolve(onfulfilled ? onfulfilled(value) : value);\n      },\n      catch() {\n        return thenable;\n      }\n    };\n    return thenable;\n  }, []);\n  const previousIndexRef = React.useRef(undefined);\n  const previousStateRef = React.useRef(undefined);\n  const pendingPopStatePathRef = React.useRef(undefined);\n  React.useEffect(() => {\n    previousIndexRef.current = history.index;\n    return history.listen(() => {\n      const navigation = ref.current;\n      if (!navigation || !enabled) {\n        return;\n      }\n      const {\n        location\n      } = window;\n      const path = location.pathname + location.search;\n      const index = history.index;\n      const previousIndex = previousIndexRef.current ?? 0;\n      previousIndexRef.current = index;\n      pendingPopStatePathRef.current = path;\n      const record = history.get(index);\n      if (record?.path === path && record?.state) {\n        navigation.resetRoot(record.state);\n        return;\n      }\n      const state = getStateFromPathRef.current(path, configRef.current);\n      if (state) {\n        onUnhandledLinking(path);\n        if (validateRoutesNotExistInRootState(state)) {\n          return;\n        }\n        if (index > previousIndex) {\n          const action = getActionFromStateRef.current(state, configRef.current);\n          if (action !== undefined) {\n            try {\n              navigation.dispatch(action);\n            } catch (e) {\n              console.warn(`An error occurred when trying to handle the link '${path}': ${typeof e === 'object' && e != null && 'message' in e ? e.message : e}`);\n            }\n          } else {\n            navigation.resetRoot(state);\n          }\n        } else {\n          navigation.resetRoot(state);\n        }\n      } else {\n        navigation.resetRoot(state);\n      }\n    });\n  }, [enabled, history, onUnhandledLinking, ref, validateRoutesNotExistInRootState]);\n  React.useEffect(() => {\n    if (!enabled) {\n      return;\n    }\n    const getPathForRoute = (route, state) => {\n      let path;\n      if (route?.path) {\n        const stateForPath = getStateFromPathRef.current(route.path, configRef.current);\n        if (stateForPath) {\n          const focusedRoute = findFocusedRoute(stateForPath);\n          if (focusedRoute && focusedRoute.name === route.name && isEqual(focusedRoute.params, route.params)) {\n            path = route.path;\n          }\n        }\n      }\n      if (path == null) {\n        path = getPathFromStateRef.current(state, configRef.current);\n      }\n      const previousRoute = previousStateRef.current ? findFocusedRoute(previousStateRef.current) : undefined;\n      if (previousRoute && route && 'key' in previousRoute && 'key' in route && previousRoute.key === route.key) {\n        path = path + location.hash;\n      }\n      return path;\n    };\n    if (ref.current) {\n      const state = ref.current.getRootState();\n      if (state) {\n        const route = findFocusedRoute(state);\n        const path = getPathForRoute(route, state);\n        if (previousStateRef.current === undefined) {\n          previousStateRef.current = state;\n        }\n        history.replace({\n          path,\n          state\n        });\n      }\n    }\n    const onStateChange = async () => {\n      const navigation = ref.current;\n      if (!navigation || !enabled) {\n        return;\n      }\n      const previousState = previousStateRef.current;\n      const state = navigation.getRootState();\n      if (!state) {\n        return;\n      }\n      const pendingPath = pendingPopStatePathRef.current;\n      const route = findFocusedRoute(state);\n      const path = getPathForRoute(route, state);\n      previousStateRef.current = state;\n      pendingPopStatePathRef.current = undefined;\n      const [previousFocusedState, focusedState] = findMatchingState(previousState, state);\n      if (previousFocusedState && focusedState && path !== pendingPath) {\n        const historyDelta = (focusedState.history ? focusedState.history.length : focusedState.routes.length) - (previousFocusedState.history ? previousFocusedState.history.length : previousFocusedState.routes.length);\n        if (historyDelta > 0) {\n          history.push({\n            path,\n            state\n          });\n        } else if (historyDelta < 0) {\n          const nextIndex = history.backIndex({\n            path\n          });\n          const currentIndex = history.index;\n          try {\n            if (nextIndex !== -1 && nextIndex < currentIndex && history.get(nextIndex)) {\n              await history.go(nextIndex - currentIndex);\n            } else {\n              await history.go(historyDelta);\n            }\n            history.replace({\n              path,\n              state\n            });\n          } catch (e) {}\n        } else {\n          history.replace({\n            path,\n            state\n          });\n        }\n      } else {\n        history.replace({\n          path,\n          state\n        });\n      }\n    };\n    return ref.current?.addListener('state', series(onStateChange));\n  }, [enabled, history, ref]);\n  return {\n    getInitialState\n  };\n}","map":{"version":3,"names":["findFocusedRoute","getActionFromState","getActionFromStateDefault","getPathFromState","getPathFromStateDefault","getStateFromPath","getStateFromPathDefault","useNavigationIndependentTree","isEqual","React","createMemoryHistory","ServerContext","findMatchingState","a","b","undefined","key","aHistoryLength","history","length","routes","bHistoryLength","aRoute","index","bRoute","aChildState","state","bChildState","series","cb","queue","Promise","resolve","callback","then","linkingHandlers","useLinking","ref","enabled","config","onUnhandledLinking","independent","useEffect","process","env","NODE_ENV","console","error","join","trim","handler","Symbol","push","indexOf","splice","useState","enabledRef","useRef","configRef","getStateFromPathRef","getPathFromStateRef","getActionFromStateRef","current","validateRoutesNotExistInRootState","useCallback","navigation","rootState","getRootState","some","r","routeNames","includes","name","server","useContext","getInitialState","value","location","window","path","pathname","search","thenable","onfulfilled","catch","previousIndexRef","previousStateRef","pendingPopStatePathRef","listen","previousIndex","record","get","resetRoot","action","dispatch","e","warn","message","getPathForRoute","route","stateForPath","focusedRoute","params","previousRoute","hash","replace","onStateChange","previousState","pendingPath","previousFocusedState","focusedState","historyDelta","nextIndex","backIndex","currentIndex","go","addListener"],"sources":["/Users/pmouli/Documents/GitHub.nosync/boots-strapper/mobile/node_modules/@react-navigation/native/src/useLinking.tsx"],"sourcesContent":["import {\n  findFocusedRoute,\n  getActionFromState as getActionFromStateDefault,\n  getPathFromState as getPathFromStateDefault,\n  getStateFromPath as getStateFromPathDefault,\n  type NavigationContainerRef,\n  type NavigationState,\n  type ParamListBase,\n  useNavigationIndependentTree,\n} from '@react-navigation/core';\nimport isEqual from 'fast-deep-equal';\nimport * as React from 'react';\n\nimport { createMemoryHistory } from './createMemoryHistory';\nimport { ServerContext } from './ServerContext';\nimport type { LinkingOptions } from './types';\n\ntype ResultState = ReturnType<typeof getStateFromPathDefault>;\n\n/**\n * Find the matching navigation state that changed between 2 navigation states\n * e.g.: a -> b -> c -> d and a -> b -> c -> e -> f, if history in b changed, b is the matching state\n */\nconst findMatchingState = <T extends NavigationState>(\n  a: T | undefined,\n  b: T | undefined\n): [T | undefined, T | undefined] => {\n  if (a === undefined || b === undefined || a.key !== b.key) {\n    return [undefined, undefined];\n  }\n\n  // Tab and drawer will have `history` property, but stack will have history in `routes`\n  const aHistoryLength = a.history ? a.history.length : a.routes.length;\n  const bHistoryLength = b.history ? b.history.length : b.routes.length;\n\n  const aRoute = a.routes[a.index];\n  const bRoute = b.routes[b.index];\n\n  const aChildState = aRoute.state as T | undefined;\n  const bChildState = bRoute.state as T | undefined;\n\n  // Stop here if this is the state object that changed:\n  // - history length is different\n  // - focused routes are different\n  // - one of them doesn't have child state\n  // - child state keys are different\n  if (\n    aHistoryLength !== bHistoryLength ||\n    aRoute.key !== bRoute.key ||\n    aChildState === undefined ||\n    bChildState === undefined ||\n    aChildState.key !== bChildState.key\n  ) {\n    return [a, b];\n  }\n\n  return findMatchingState(aChildState, bChildState);\n};\n\n/**\n * Run async function in series as it's called.\n */\nexport const series = (cb: () => Promise<void>) => {\n  let queue = Promise.resolve();\n  const callback = () => {\n    // eslint-disable-next-line promise/no-callback-in-promise\n    queue = queue.then(cb);\n  };\n  return callback;\n};\n\nconst linkingHandlers: symbol[] = [];\n\ntype Options = LinkingOptions<ParamListBase>;\n\nexport function useLinking(\n  ref: React.RefObject<NavigationContainerRef<ParamListBase> | null>,\n  {\n    enabled = true,\n    config,\n    getStateFromPath = getStateFromPathDefault,\n    getPathFromState = getPathFromStateDefault,\n    getActionFromState = getActionFromStateDefault,\n  }: Options,\n  onUnhandledLinking: (lastUnhandledLining: string | undefined) => void\n) {\n  const independent = useNavigationIndependentTree();\n\n  React.useEffect(() => {\n    if (process.env.NODE_ENV === 'production') {\n      return undefined;\n    }\n\n    if (independent) {\n      return undefined;\n    }\n\n    if (enabled !== false && linkingHandlers.length) {\n      console.error(\n        [\n          'Looks like you have configured linking in multiple places. This is likely an error since deep links should only be handled in one place to avoid conflicts. Make sure that:',\n          \"- You don't have multiple NavigationContainers in the app each with 'linking' enabled\",\n          '- Only a single instance of the root component is rendered',\n        ]\n          .join('\\n')\n          .trim()\n      );\n    }\n\n    const handler = Symbol();\n\n    if (enabled !== false) {\n      linkingHandlers.push(handler);\n    }\n\n    return () => {\n      const index = linkingHandlers.indexOf(handler);\n\n      if (index > -1) {\n        linkingHandlers.splice(index, 1);\n      }\n    };\n  }, [enabled, independent]);\n\n  const [history] = React.useState(createMemoryHistory);\n\n  // We store these options in ref to avoid re-creating getInitialState and re-subscribing listeners\n  // This lets user avoid wrapping the items in `React.useCallback` or `React.useMemo`\n  // Not re-creating `getInitialState` is important coz it makes it easier for the user to use in an effect\n  const enabledRef = React.useRef(enabled);\n  const configRef = React.useRef(config);\n  const getStateFromPathRef = React.useRef(getStateFromPath);\n  const getPathFromStateRef = React.useRef(getPathFromState);\n  const getActionFromStateRef = React.useRef(getActionFromState);\n\n  React.useEffect(() => {\n    enabledRef.current = enabled;\n    configRef.current = config;\n    getStateFromPathRef.current = getStateFromPath;\n    getPathFromStateRef.current = getPathFromState;\n    getActionFromStateRef.current = getActionFromState;\n  });\n\n  const validateRoutesNotExistInRootState = React.useCallback(\n    (state: ResultState) => {\n      const navigation = ref.current;\n      const rootState = navigation?.getRootState();\n      // Make sure that the routes in the state exist in the root navigator\n      // Otherwise there's an error in the linking configuration\n      return state?.routes.some((r) => !rootState?.routeNames.includes(r.name));\n    },\n    [ref]\n  );\n\n  const server = React.useContext(ServerContext);\n\n  const getInitialState = React.useCallback(() => {\n    let value: ResultState | undefined;\n\n    if (enabledRef.current) {\n      const location =\n        server?.location ??\n        (typeof window !== 'undefined' ? window.location : undefined);\n\n      const path = location ? location.pathname + location.search : undefined;\n\n      if (path) {\n        value = getStateFromPathRef.current(path, configRef.current);\n      }\n\n      // If the link were handled, it gets cleared in NavigationContainer\n      onUnhandledLinking(path);\n    }\n\n    const thenable = {\n      then(onfulfilled?: (state: ResultState | undefined) => void) {\n        return Promise.resolve(onfulfilled ? onfulfilled(value) : value);\n      },\n      catch() {\n        return thenable;\n      },\n    };\n\n    return thenable as PromiseLike<ResultState | undefined>;\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  const previousIndexRef = React.useRef<number | undefined>(undefined);\n  const previousStateRef = React.useRef<NavigationState | undefined>(undefined);\n  const pendingPopStatePathRef = React.useRef<string | undefined>(undefined);\n\n  React.useEffect(() => {\n    previousIndexRef.current = history.index;\n\n    return history.listen(() => {\n      const navigation = ref.current;\n\n      if (!navigation || !enabled) {\n        return;\n      }\n\n      const { location } = window;\n\n      const path = location.pathname + location.search;\n      const index = history.index;\n\n      const previousIndex = previousIndexRef.current ?? 0;\n\n      previousIndexRef.current = index;\n      pendingPopStatePathRef.current = path;\n\n      // When browser back/forward is clicked, we first need to check if state object for this index exists\n      // If it does we'll reset to that state object\n      // Otherwise, we'll handle it like a regular deep link\n      const record = history.get(index);\n\n      if (record?.path === path && record?.state) {\n        navigation.resetRoot(record.state);\n        return;\n      }\n\n      const state = getStateFromPathRef.current(path, configRef.current);\n\n      // We should only dispatch an action when going forward\n      // Otherwise the action will likely add items to history, which would mess things up\n      if (state) {\n        // If the link were handled, it gets cleared in NavigationContainer\n        onUnhandledLinking(path);\n        // Make sure that the routes in the state exist in the root navigator\n        // Otherwise there's an error in the linking configuration\n        if (validateRoutesNotExistInRootState(state)) {\n          return;\n        }\n\n        if (index > previousIndex) {\n          const action = getActionFromStateRef.current(\n            state,\n            configRef.current\n          );\n\n          if (action !== undefined) {\n            try {\n              navigation.dispatch(action);\n            } catch (e) {\n              // Ignore any errors from deep linking.\n              // This could happen in case of malformed links, navigation object not being initialized etc.\n              console.warn(\n                `An error occurred when trying to handle the link '${path}': ${\n                  typeof e === 'object' && e != null && 'message' in e\n                    ? e.message\n                    : e\n                }`\n              );\n            }\n          } else {\n            navigation.resetRoot(state);\n          }\n        } else {\n          navigation.resetRoot(state);\n        }\n      } else {\n        // if current path didn't return any state, we should revert to initial state\n        navigation.resetRoot(state);\n      }\n    });\n  }, [\n    enabled,\n    history,\n    onUnhandledLinking,\n    ref,\n    validateRoutesNotExistInRootState,\n  ]);\n\n  React.useEffect(() => {\n    if (!enabled) {\n      return;\n    }\n\n    const getPathForRoute = (\n      route: ReturnType<typeof findFocusedRoute>,\n      state: NavigationState\n    ): string => {\n      let path;\n\n      // If the `route` object contains a `path`, use that path as long as `route.name` and `params` still match\n      // This makes sure that we preserve the original URL for wildcard routes\n      if (route?.path) {\n        const stateForPath = getStateFromPathRef.current(\n          route.path,\n          configRef.current\n        );\n\n        if (stateForPath) {\n          const focusedRoute = findFocusedRoute(stateForPath);\n\n          if (\n            focusedRoute &&\n            focusedRoute.name === route.name &&\n            isEqual(focusedRoute.params, route.params)\n          ) {\n            path = route.path;\n          }\n        }\n      }\n\n      if (path == null) {\n        path = getPathFromStateRef.current(state, configRef.current);\n      }\n\n      const previousRoute = previousStateRef.current\n        ? findFocusedRoute(previousStateRef.current)\n        : undefined;\n\n      // Preserve the hash if the route didn't change\n      if (\n        previousRoute &&\n        route &&\n        'key' in previousRoute &&\n        'key' in route &&\n        previousRoute.key === route.key\n      ) {\n        path = path + location.hash;\n      }\n\n      return path;\n    };\n\n    if (ref.current) {\n      // We need to record the current metadata on the first render if they aren't set\n      // This will allow the initial state to be in the history entry\n      const state = ref.current.getRootState();\n\n      if (state) {\n        const route = findFocusedRoute(state);\n        const path = getPathForRoute(route, state);\n\n        if (previousStateRef.current === undefined) {\n          previousStateRef.current = state;\n        }\n\n        history.replace({ path, state });\n      }\n    }\n\n    const onStateChange = async () => {\n      const navigation = ref.current;\n\n      if (!navigation || !enabled) {\n        return;\n      }\n\n      const previousState = previousStateRef.current;\n      const state = navigation.getRootState();\n\n      // root state may not available, for example when root navigators switch inside the container\n      if (!state) {\n        return;\n      }\n\n      const pendingPath = pendingPopStatePathRef.current;\n      const route = findFocusedRoute(state);\n      const path = getPathForRoute(route, state);\n\n      previousStateRef.current = state;\n      pendingPopStatePathRef.current = undefined;\n\n      // To detect the kind of state change, we need to:\n      // - Find the common focused navigation state in previous and current state\n      // - If only the route keys changed, compare history/routes.length to check if we go back/forward/replace\n      // - If no common focused navigation state found, it's a replace\n      const [previousFocusedState, focusedState] = findMatchingState(\n        previousState,\n        state\n      );\n\n      if (\n        previousFocusedState &&\n        focusedState &&\n        // We should only handle push/pop if path changed from what was in last `popstate`\n        // Otherwise it's likely a change triggered by `popstate`\n        path !== pendingPath\n      ) {\n        const historyDelta =\n          (focusedState.history\n            ? focusedState.history.length\n            : focusedState.routes.length) -\n          (previousFocusedState.history\n            ? previousFocusedState.history.length\n            : previousFocusedState.routes.length);\n\n        if (historyDelta > 0) {\n          // If history length is increased, we should pushState\n          // Note that path might not actually change here, for example, drawer open should pushState\n          history.push({ path, state });\n        } else if (historyDelta < 0) {\n          // If history length is decreased, i.e. entries were removed, we want to go back\n\n          const nextIndex = history.backIndex({ path });\n          const currentIndex = history.index;\n\n          try {\n            if (\n              nextIndex !== -1 &&\n              nextIndex < currentIndex &&\n              // We should only go back if the entry exists and it's less than current index\n              history.get(nextIndex)\n            ) {\n              // An existing entry for this path exists and it's less than current index, go back to that\n              await history.go(nextIndex - currentIndex);\n            } else {\n              // We couldn't find an existing entry to go back to, so we'll go back by the delta\n              // This won't be correct if multiple routes were pushed in one go before\n              // Usually this shouldn't happen and this is a fallback for that\n              await history.go(historyDelta);\n            }\n\n            // Store the updated state as well as fix the path if incorrect\n            history.replace({ path, state });\n          } catch (e) {\n            // The navigation was interrupted\n          }\n        } else {\n          // If history length is unchanged, we want to replaceState\n          history.replace({ path, state });\n        }\n      } else {\n        // If no common navigation state was found, assume it's a replace\n        // This would happen if the user did a reset/conditionally changed navigators\n        history.replace({ path, state });\n      }\n    };\n\n    // We debounce onStateChange coz we don't want multiple state changes to be handled at one time\n    // This could happen since `history.go(n)` is asynchronous\n    // If `pushState` or `replaceState` were called before `history.go(n)` completes, it'll mess stuff up\n    return ref.current?.addListener('state', series(onStateChange));\n  }, [enabled, history, ref]);\n\n  return {\n    getInitialState,\n  };\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{"hasCjsExports":false},"sourceType":"module","externalDependencies":[]}