UNPKG

6.51 kBSource Map (JSON)View Raw
1{"version":3,"sources":["createStackNavigator.tsx"],"names":["StackNavigator","id","initialRouteName","children","screenListeners","screenOptions","rest","mode","headerMode","keyboardHandlingEnabled","undefined","defaultScreenOptions","presentation","headerShown","state","descriptors","navigation","NavigationContent","StackRouter","React","useEffect","addListener","e","isFocused","requestAnimationFrame","index","defaultPrevented","dispatch","StackActions","popToTop","target","key"],"mappings":";;;;;;;AAAA;;AAYA;;AACA;;AAQA;;;;;;;;;;AAWA,SAASA,cAAT,OAOU;AAAA,MAPc;AACtBC,IAAAA,EADsB;AAEtBC,IAAAA,gBAFsB;AAGtBC,IAAAA,QAHsB;AAItBC,IAAAA,eAJsB;AAKtBC,IAAAA,aALsB;AAMtB,OAAGC;AANmB,GAOd;AACR;AACA,QAAMC,IAAI,GAAGD,IAAI,CAACC,IAAlB;AAEA,yBACEA,IAAI,IAAI,IADV,EAEG,2BAA0BA,IAAK,yCAAwCA,IAAK,uHAF/E,EAJQ,CASR;;AACA,QAAMC,UAAU,GAAGF,IAAI,CAACE,UAAxB;AAEA,yBACEA,UAAU,KAAK,MADjB,EAEG,iMAFH;AAKA,yBACEA,UAAU,IAAI,IAAd,IAAsBA,UAAU,KAAK,MADvC,EAEG,kMAFH,EAjBQ,CAsBR;;AACA,QAAMC,uBAAuB,GAAGH,IAAI,CAACG,uBAArC;AAEA,yBACEA,uBAAuB,KAAKC,SAD9B,EAEG,4NAFH;AAKA,QAAMC,oBAA4C,GAAG;AACnDC,IAAAA,YAAY,EAAEL,IADqC;AAEnDM,IAAAA,WAAW,EAAEL,UAAU,GAAGA,UAAU,KAAK,MAAlB,GAA2B,IAFC;AAGnDA,IAAAA,UAAU,EAAEA,UAAU,IAAIA,UAAU,KAAK,MAA7B,GAAsCA,UAAtC,GAAmDE,SAHZ;AAInDD,IAAAA;AAJmD,GAArD;AAOA,QAAM;AAAEK,IAAAA,KAAF;AAASC,IAAAA,WAAT;AAAsBC,IAAAA,UAAtB;AAAkCC,IAAAA;AAAlC,MACJ,kCAMEC,mBANF,EAMe;AACbjB,IAAAA,EADa;AAEbC,IAAAA,gBAFa;AAGbC,IAAAA,QAHa;AAIbC,IAAAA,eAJa;AAKbC,IAAAA,aALa;AAMbM,IAAAA;AANa,GANf,CADF;AAgBAQ,EAAAA,KAAK,CAACC,SAAN,CACE;AAAA;;AAAA,WACE;AADF,+BAEEJ,UAAU,CAACK,WAFb,0DAEE,2BAAAL,UAAU,EAAe,UAAf,EAA4BM,CAAD,IAAO;AAC1C,cAAMC,SAAS,GAAGP,UAAU,CAACO,SAAX,EAAlB,CAD0C,CAG1C;AACA;;AACAC,QAAAA,qBAAqB,CAAC,MAAM;AAC1B,cACEV,KAAK,CAACW,KAAN,GAAc,CAAd,IACAF,SADA,IAEA,CAAED,CAAD,CAA6CI,gBAHhD,EAIE;AACA;AACA;AACAV,YAAAA,UAAU,CAACW,QAAX,CAAoB,EAClB,GAAGC,qBAAaC,QAAb,EADe;AAElBC,cAAAA,MAAM,EAAEhB,KAAK,CAACiB;AAFI,aAApB;AAID;AACF,SAboB,CAArB;AAcD,OAnBS;AAFZ;AAAA,GADF,EAuBE,CAACf,UAAD,EAAaF,KAAK,CAACW,KAAnB,EAA0BX,KAAK,CAACiB,GAAhC,CAvBF;AA0BA,sBACE,oBAAC,iBAAD,qBACE,oBAAC,kBAAD,eACMzB,IADN;AAEE,IAAA,KAAK,EAAEQ,KAFT;AAGE,IAAA,WAAW,EAAEC,WAHf;AAIE,IAAA,UAAU,EAAEC;AAJd,KADF,CADF;AAUD;;eAEc,oCAKbhB,cALa,C","sourcesContent":["import {\n createNavigatorFactory,\n DefaultNavigatorOptions,\n EventArg,\n ParamListBase,\n StackActionHelpers,\n StackActions,\n StackNavigationState,\n StackRouter,\n StackRouterOptions,\n useNavigationBuilder,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport warnOnce from 'warn-once';\n\nimport type {\n StackHeaderMode,\n StackNavigationConfig,\n StackNavigationEventMap,\n StackNavigationOptions,\n} from '../types';\nimport StackView from '../views/Stack/StackView';\n\ntype Props = DefaultNavigatorOptions<\n ParamListBase,\n StackNavigationState<ParamListBase>,\n StackNavigationOptions,\n StackNavigationEventMap\n> &\n StackRouterOptions &\n StackNavigationConfig;\n\nfunction StackNavigator({\n id,\n initialRouteName,\n children,\n screenListeners,\n screenOptions,\n ...rest\n}: Props) {\n // @ts-expect-error: mode is deprecated\n const mode = rest.mode as 'card' | 'modal' | undefined;\n\n warnOnce(\n mode != null,\n `Stack Navigator: 'mode=\"${mode}\"' is deprecated. Use 'presentation: \"${mode}\"' in 'screenOptions' instead.\\n\\nSee https://reactnavigation.org/docs/stack-navigator#presentation for more details.`\n );\n\n // @ts-expect-error: headerMode='none' is deprecated\n const headerMode = rest.headerMode as StackHeaderMode | 'none' | undefined;\n\n warnOnce(\n headerMode === 'none',\n `Stack Navigator: 'headerMode=\"none\"' is deprecated. Use 'headerShown: false' in 'screenOptions' instead.\\n\\nSee https://reactnavigation.org/docs/stack-navigator/#headershown for more details.`\n );\n\n warnOnce(\n headerMode != null && headerMode !== 'none',\n `Stack Navigator: 'headerMode' is moved to 'options'. Moved it to 'screenOptions' to keep current behavior.\\n\\nSee https://reactnavigation.org/docs/stack-navigator/#headermode for more details.`\n );\n\n // @ts-expect-error: headerMode='none' is deprecated\n const keyboardHandlingEnabled = rest.keyboardHandlingEnabled;\n\n warnOnce(\n keyboardHandlingEnabled !== undefined,\n `Stack Navigator: 'keyboardHandlingEnabled' is moved to 'options'. Moved it to 'screenOptions' to keep current behavior.\\n\\nSee https://reactnavigation.org/docs/stack-navigator/#keyboardhandlingenabled for more details.`\n );\n\n const defaultScreenOptions: StackNavigationOptions = {\n presentation: mode,\n headerShown: headerMode ? headerMode !== 'none' : true,\n headerMode: headerMode && headerMode !== 'none' ? headerMode : undefined,\n keyboardHandlingEnabled,\n };\n\n const { state, descriptors, navigation, NavigationContent } =\n useNavigationBuilder<\n StackNavigationState<ParamListBase>,\n StackRouterOptions,\n StackActionHelpers<ParamListBase>,\n StackNavigationOptions,\n StackNavigationEventMap\n >(StackRouter, {\n id,\n initialRouteName,\n children,\n screenListeners,\n screenOptions,\n defaultScreenOptions,\n });\n\n React.useEffect(\n () =>\n // @ts-expect-error: there may not be a tab navigator in parent\n navigation.addListener?.('tabPress', (e) => {\n const isFocused = navigation.isFocused();\n\n // Run the operation in the next frame so we're sure all listeners have been run\n // This is necessary to know if preventDefault() has been called\n requestAnimationFrame(() => {\n if (\n state.index > 0 &&\n isFocused &&\n !(e as unknown as EventArg<'tabPress', true>).defaultPrevented\n ) {\n // When user taps on already focused tab and we're inside the tab,\n // reset the stack to replicate native behaviour\n navigation.dispatch({\n ...StackActions.popToTop(),\n target: state.key,\n });\n }\n });\n }),\n [navigation, state.index, state.key]\n );\n\n return (\n <NavigationContent>\n <StackView\n {...rest}\n state={state}\n descriptors={descriptors}\n navigation={navigation}\n />\n </NavigationContent>\n );\n}\n\nexport default createNavigatorFactory<\n StackNavigationState<ParamListBase>,\n StackNavigationOptions,\n StackNavigationEventMap,\n typeof StackNavigator\n>(StackNavigator);\n"]}
\No newline at end of file