UNPKG

repoweaver

Version:

A GitHub App that skillfully weaves multiple templates together to create and update repositories with intelligent merge strategies

1 lines 8.09 kB
{"ast":null,"code":"\"use strict\";\n\nimport * as React from 'react';\nimport { NavigationBuilderContext } from \"./NavigationBuilderContext.js\";\nimport { NavigationStateContext } from \"./NavigationStateContext.js\";\nexport function useOptionsGetters({\n key,\n options,\n navigation\n}) {\n const optionsRef = React.useRef(options);\n const optionsGettersFromChildRef = React.useRef({});\n const {\n onOptionsChange\n } = React.useContext(NavigationBuilderContext);\n const {\n addOptionsGetter: parentAddOptionsGetter\n } = React.useContext(NavigationStateContext);\n const optionsChangeListener = React.useCallback(() => {\n const isFocused = navigation?.isFocused() ?? true;\n const hasChildren = Object.keys(optionsGettersFromChildRef.current).length;\n if (isFocused && !hasChildren) {\n onOptionsChange(optionsRef.current ?? {});\n }\n }, [navigation, onOptionsChange]);\n React.useEffect(() => {\n optionsRef.current = options;\n optionsChangeListener();\n return navigation?.addListener('focus', optionsChangeListener);\n }, [navigation, options, optionsChangeListener]);\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 if (result !== null) {\n return result;\n }\n }\n }\n return null;\n }, []);\n const getCurrentOptions = React.useCallback(() => {\n const isFocused = navigation?.isFocused() ?? true;\n if (!isFocused) {\n return null;\n }\n const optionsFromListener = getOptionsFromListener();\n if (optionsFromListener !== null) {\n return optionsFromListener;\n }\n return optionsRef.current;\n }, [navigation, getOptionsFromListener]);\n React.useEffect(() => {\n return parentAddOptionsGetter?.(key, getCurrentOptions);\n }, [getCurrentOptions, parentAddOptionsGetter, key]);\n const addOptionsGetter = React.useCallback((key, getter) => {\n optionsGettersFromChildRef.current[key] = getter;\n optionsChangeListener();\n return () => {\n delete optionsGettersFromChildRef.current[key];\n optionsChangeListener();\n };\n }, [optionsChangeListener]);\n return {\n addOptionsGetter,\n getCurrentOptions\n };\n}","map":{"version":3,"names":["React","NavigationBuilderContext","NavigationStateContext","useOptionsGetters","key","options","navigation","optionsRef","useRef","optionsGettersFromChildRef","onOptionsChange","useContext","addOptionsGetter","parentAddOptionsGetter","optionsChangeListener","useCallback","isFocused","hasChildren","Object","keys","current","length","useEffect","addListener","getOptionsFromListener","result","getCurrentOptions","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":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,wBAAwB;AACjC,SAASC,sBAAsB;AAS/B,OAAO,SAASC,iBAAiBA,CAAC;EAAEC,GAAG;EAAEC,OAAO;EAAEC;AAAoB,CAAC,EAAE;EACvE,MAAMC,UAAU,GAAGP,KAAK,CAACQ,MAAM,CAAqBH,OAAO,CAAC;EAC5D,MAAMI,0BAA0B,GAAGT,KAAK,CAACQ,MAAM,CAE7C,CAAC,CAAC,CAAC;EAEL,MAAM;IAAEE;EAAgB,CAAC,GAAGV,KAAK,CAACW,UAAU,CAACV,wBAAwB,CAAC;EACtE,MAAM;IAAEW,gBAAgB,EAAEC;EAAuB,CAAC,GAAGb,KAAK,CAACW,UAAU,CACnET,sBACF,CAAC;EAED,MAAMY,qBAAqB,GAAGd,KAAK,CAACe,WAAW,CAAC,MAAM;IACpD,MAAMC,SAAS,GAAGV,UAAU,EAAEU,SAAS,CAAC,CAAC,IAAI,IAAI;IACjD,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAI,CAACV,0BAA0B,CAACW,OAAO,CAAC,CAACC,MAAM;IAE1E,IAAIL,SAAS,IAAI,CAACC,WAAW,EAAE;MAC7BP,eAAe,CAACH,UAAU,CAACa,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3C;EACF,CAAC,EAAE,CAACd,UAAU,EAAEI,eAAe,CAAC,CAAC;EAEjCV,KAAK,CAACsB,SAAS,CAAC,MAAM;IACpBf,UAAU,CAACa,OAAO,GAAGf,OAAO;IAC5BS,qBAAqB,CAAC,CAAC;IAEvB,OAAOR,UAAU,EAAEiB,WAAW,CAAC,OAAO,EAAET,qBAAqB,CAAC;EAChE,CAAC,EAAE,CAACR,UAAU,EAAED,OAAO,EAAES,qBAAqB,CAAC,CAAC;EAEhD,MAAMU,sBAAsB,GAAGxB,KAAK,CAACe,WAAW,CAAC,MAAM;IACrD,KAAK,MAAMX,GAAG,IAAIK,0BAA0B,CAACW,OAAO,EAAE;MACpD,IAAIhB,GAAG,IAAIK,0BAA0B,CAACW,OAAO,EAAE;QAC7C,MAAMK,MAAM,GAAGhB,0BAA0B,CAACW,OAAO,CAAChB,GAAG,CAAC,GAAG,CAAC;QAG1D,IAAIqB,MAAM,KAAK,IAAI,EAAE;UACnB,OAAOA,MAAM;QACf;MACF;IACF;IAEA,OAAO,IAAI;EACb,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,iBAAiB,GAAG1B,KAAK,CAACe,WAAW,CAAC,MAAM;IAChD,MAAMC,SAAS,GAAGV,UAAU,EAAEU,SAAS,CAAC,CAAC,IAAI,IAAI;IAEjD,IAAI,CAACA,SAAS,EAAE;MACd,OAAO,IAAI;IACb;IAEA,MAAMW,mBAAmB,GAAGH,sBAAsB,CAAC,CAAC;IAEpD,IAAIG,mBAAmB,KAAK,IAAI,EAAE;MAChC,OAAOA,mBAAmB;IAC5B;IAEA,OAAOpB,UAAU,CAACa,OAAO;EAC3B,CAAC,EAAE,CAACd,UAAU,EAAEkB,sBAAsB,CAAC,CAAC;EAExCxB,KAAK,CAACsB,SAAS,CAAC,MAAM;IACpB,OAAOT,sBAAsB,GAAGT,GAAG,EAAGsB,iBAAiB,CAAC;EAC1D,CAAC,EAAE,CAACA,iBAAiB,EAAEb,sBAAsB,EAAET,GAAG,CAAC,CAAC;EAEpD,MAAMQ,gBAAgB,GAAGZ,KAAK,CAACe,WAAW,CACxC,CAACX,GAAW,EAAEwB,MAAuC,KAAK;IACxDnB,0BAA0B,CAACW,OAAO,CAAChB,GAAG,CAAC,GAAGwB,MAAM;IAChDd,qBAAqB,CAAC,CAAC;IAEvB,OAAO,MAAM;MAEX,OAAOL,0BAA0B,CAACW,OAAO,CAAChB,GAAG,CAAC;MAC9CU,qBAAqB,CAAC,CAAC;IACzB,CAAC;EACH,CAAC,EACD,CAACA,qBAAqB,CACxB,CAAC;EAED,OAAO;IACLF,gBAAgB;IAChBc;EACF,CAAC;AACH","ignoreList":[]},"metadata":{"hasCjsExports":false},"sourceType":"module","externalDependencies":[]}