UNPKG

1.7 kBSource Map (JSON)View Raw
1{"version":3,"sources":["useRegisterNavigator.tsx"],"names":["useRegisterNavigator","key","React","useState","container","useContext","SingleNavigatorContext","undefined","Error","useEffect","register","unregister"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;;;;;AAEA;AACA;AACA;AACA;AACe,SAASA,oBAAT,GAAgC;AAC7C,QAAM,CAACC,GAAD,IAAQC,KAAK,CAACC,QAAN,CAAe,MAAM,wBAArB,CAAd;AACA,QAAMC,SAAS,GAAGF,KAAK,CAACG,UAAN,CAAiBC,6CAAjB,CAAlB;;AAEA,MAAIF,SAAS,KAAKG,SAAlB,EAA6B;AAC3B,UAAM,IAAIC,KAAJ,CACJ,wLADI,CAAN;AAGD;;AAEDN,EAAAA,KAAK,CAACO,SAAN,CAAgB,MAAM;AACpB,UAAM;AAAEC,MAAAA,QAAF;AAAYC,MAAAA;AAAZ,QAA2BP,SAAjC;AAEAM,IAAAA,QAAQ,CAACT,GAAD,CAAR;AAEA,WAAO,MAAMU,UAAU,CAACV,GAAD,CAAvB;AACD,GAND,EAMG,CAACG,SAAD,EAAYH,GAAZ,CANH;AAQA,SAAOA,GAAP;AACD","sourcesContent":["import { nanoid } from 'nanoid/non-secure';\nimport * as React from 'react';\n\nimport { SingleNavigatorContext } from './EnsureSingleNavigator';\n\n/**\n * Register a navigator in the parent context (either a navigation container or a screen).\n * This is used to prevent multiple navigators under a single container or screen.\n */\nexport default function useRegisterNavigator() {\n const [key] = React.useState(() => nanoid());\n const container = React.useContext(SingleNavigatorContext);\n\n if (container === undefined) {\n throw new Error(\n \"Couldn't register the navigator. Have you wrapped your app with 'NavigationContainer'?\\n\\nThis can also happen if there are multiple copies of '@react-navigation' packages installed.\"\n );\n }\n\n React.useEffect(() => {\n const { register, unregister } = container;\n\n register(key);\n\n return () => unregister(key);\n }, [container, key]);\n\n return key;\n}\n"]}
\No newline at end of file