{"ast":null,"code":"\"use strict\";\n\nimport * as React from 'react';\nimport { NavigationBuilderContext } from \"./NavigationBuilderContext.js\";\nimport { NavigationStateContext } from \"./NavigationStateContext.js\";\nexport function useOptionsGetters(_ref) {\n  var key = _ref.key,\n    options = _ref.options,\n    navigation = _ref.navigation;\n  var optionsRef = React.useRef(options);\n  var optionsGettersFromChildRef = React.useRef({});\n  var _React$useContext = React.useContext(NavigationBuilderContext),\n    onOptionsChange = _React$useContext.onOptionsChange;\n  var _React$useContext2 = React.useContext(NavigationStateContext),\n    parentAddOptionsGetter = _React$useContext2.addOptionsGetter;\n  var optionsChangeListener = React.useCallback(function () {\n    var _navigation$isFocused;\n    var isFocused = (_navigation$isFocused = navigation == null ? void 0 : navigation.isFocused()) != null ? _navigation$isFocused : true;\n    var hasChildren = Object.keys(optionsGettersFromChildRef.current).length;\n    if (isFocused && !hasChildren) {\n      var _optionsRef$current;\n      onOptionsChange((_optionsRef$current = optionsRef.current) != null ? _optionsRef$current : {});\n    }\n  }, [navigation, onOptionsChange]);\n  React.useEffect(function () {\n    optionsRef.current = options;\n    optionsChangeListener();\n    return navigation == null ? void 0 : navigation.addListener('focus', optionsChangeListener);\n  }, [navigation, options, optionsChangeListener]);\n  var getOptionsFromListener = React.useCallback(function () {\n    for (var _key in optionsGettersFromChildRef.current) {\n      if (_key in optionsGettersFromChildRef.current) {\n        var _optionsGettersFromCh, _optionsGettersFromCh2;\n        var result = (_optionsGettersFromCh = (_optionsGettersFromCh2 = optionsGettersFromChildRef.current)[_key]) == null ? void 0 : _optionsGettersFromCh.call(_optionsGettersFromCh2);\n        if (result !== null) {\n          return result;\n        }\n      }\n    }\n    return null;\n  }, []);\n  var getCurrentOptions = React.useCallback(function () {\n    var _navigation$isFocused2;\n    var isFocused = (_navigation$isFocused2 = navigation == null ? void 0 : navigation.isFocused()) != null ? _navigation$isFocused2 : true;\n    if (!isFocused) {\n      return null;\n    }\n    var optionsFromListener = getOptionsFromListener();\n    if (optionsFromListener !== null) {\n      return optionsFromListener;\n    }\n    return optionsRef.current;\n  }, [navigation, getOptionsFromListener]);\n  React.useEffect(function () {\n    return parentAddOptionsGetter == null ? void 0 : parentAddOptionsGetter(key, getCurrentOptions);\n  }, [getCurrentOptions, parentAddOptionsGetter, key]);\n  var addOptionsGetter = React.useCallback(function (key, getter) {\n    optionsGettersFromChildRef.current[key] = getter;\n    optionsChangeListener();\n    return function () {\n      delete optionsGettersFromChildRef.current[key];\n      optionsChangeListener();\n    };\n  }, [optionsChangeListener]);\n  return {\n    addOptionsGetter: addOptionsGetter,\n    getCurrentOptions: getCurrentOptions\n  };\n}","map":{"version":3,"names":["React","NavigationBuilderContext","NavigationStateContext","useOptionsGetters","_ref","key","options","navigation","optionsRef","useRef","optionsGettersFromChildRef","_React$useContext","useContext","onOptionsChange","_React$useContext2","parentAddOptionsGetter","addOptionsGetter","optionsChangeListener","useCallback","_navigation$isFocused","isFocused","hasChildren","Object","keys","current","length","_optionsRef$current","useEffect","addListener","getOptionsFromListener","_optionsGettersFromCh","_optionsGettersFromCh2","result","call","getCurrentOptions","_navigation$isFocused2","optionsFromListener","getter"],"sources":["/Users/pmouli/Documents/GitHub.nosync/boots-strapper/mobile/node_modules/@react-navigation/core/src/useOptionsGetters.tsx"],"sourcesContent":["import type { ParamListBase } from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport { NavigationBuilderContext } from './NavigationBuilderContext';\nimport { NavigationStateContext } from './NavigationStateContext';\nimport type { NavigationProp } from './types';\n\ntype Options = {\n  key?: string;\n  navigation?: NavigationProp<ParamListBase>;\n  options?: object | undefined;\n};\n\nexport function useOptionsGetters({ key, options, navigation }: Options) {\n  const optionsRef = React.useRef<object | undefined>(options);\n  const optionsGettersFromChildRef = React.useRef<\n    Record<string, () => object | undefined | null>\n  >({});\n\n  const { onOptionsChange } = React.useContext(NavigationBuilderContext);\n  const { addOptionsGetter: parentAddOptionsGetter } = React.useContext(\n    NavigationStateContext\n  );\n\n  const optionsChangeListener = React.useCallback(() => {\n    const isFocused = navigation?.isFocused() ?? true;\n    const hasChildren = Object.keys(optionsGettersFromChildRef.current).length;\n\n    if (isFocused && !hasChildren) {\n      onOptionsChange(optionsRef.current ?? {});\n    }\n  }, [navigation, onOptionsChange]);\n\n  React.useEffect(() => {\n    optionsRef.current = options;\n    optionsChangeListener();\n\n    return navigation?.addListener('focus', optionsChangeListener);\n  }, [navigation, options, optionsChangeListener]);\n\n  const getOptionsFromListener = React.useCallback(() => {\n    for (const key in optionsGettersFromChildRef.current) {\n      if (key in optionsGettersFromChildRef.current) {\n        const result = optionsGettersFromChildRef.current[key]?.();\n\n        // null means unfocused route\n        if (result !== null) {\n          return result;\n        }\n      }\n    }\n\n    return null;\n  }, []);\n\n  const getCurrentOptions = React.useCallback(() => {\n    const isFocused = navigation?.isFocused() ?? true;\n\n    if (!isFocused) {\n      return null;\n    }\n\n    const optionsFromListener = getOptionsFromListener();\n\n    if (optionsFromListener !== null) {\n      return optionsFromListener;\n    }\n\n    return optionsRef.current;\n  }, [navigation, getOptionsFromListener]);\n\n  React.useEffect(() => {\n    return parentAddOptionsGetter?.(key!, getCurrentOptions);\n  }, [getCurrentOptions, parentAddOptionsGetter, key]);\n\n  const addOptionsGetter = React.useCallback(\n    (key: string, getter: () => object | undefined | null) => {\n      optionsGettersFromChildRef.current[key] = getter;\n      optionsChangeListener();\n\n      return () => {\n        // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n        delete optionsGettersFromChildRef.current[key];\n        optionsChangeListener();\n      };\n    },\n    [optionsChangeListener]\n  );\n\n  return {\n    addOptionsGetter,\n    getCurrentOptions,\n  };\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}