UNPKG

3.6 kBSource Map (JSON)View Raw
1{"version":3,"names":["getActionFromState","getStateFromPath","NavigationContainerRefContext","React","LinkingContext","useLinkTo","navigation","useContext","linking","linkTo","useCallback","to","undefined","Error","navigate","screen","params","startsWith","options","state","config","action","dispatch","reset"],"sources":["useLinkTo.tsx"],"sourcesContent":["import {\n getActionFromState,\n getStateFromPath,\n NavigationContainerRefContext,\n} from '@react-navigation/core';\nimport * as React from 'react';\n\nimport LinkingContext from './LinkingContext';\n\nexport type To<\n ParamList extends ReactNavigation.RootParamList = ReactNavigation.RootParamList,\n RouteName extends keyof ParamList = keyof ParamList\n> =\n | string\n | (undefined extends ParamList[RouteName]\n ? {\n screen: Extract<RouteName, string>;\n params?: ParamList[RouteName];\n }\n : {\n screen: Extract<RouteName, string>;\n params: ParamList[RouteName];\n });\n\nexport default function useLinkTo<\n ParamList extends ReactNavigation.RootParamList\n>() {\n const navigation = React.useContext(NavigationContainerRefContext);\n const linking = React.useContext(LinkingContext);\n\n const linkTo = React.useCallback(\n (to: To<ParamList>) => {\n if (navigation === undefined) {\n throw new Error(\n \"Couldn't find a navigation object. Is your component inside NavigationContainer?\"\n );\n }\n\n if (typeof to !== 'string') {\n // @ts-expect-error: This is fine\n navigation.navigate(to.screen, to.params);\n return;\n }\n\n if (!to.startsWith('/')) {\n throw new Error(`The path must start with '/' (${to}).`);\n }\n\n const { options } = linking;\n\n const state = options?.getStateFromPath\n ? options.getStateFromPath(to, options.config)\n : getStateFromPath(to, options?.config);\n\n if (state) {\n const action = getActionFromState(state, options?.config);\n\n if (action !== undefined) {\n navigation.dispatch(action);\n } else {\n navigation.reset(state);\n }\n } else {\n throw new Error('Failed to parse the path to a navigation state.');\n }\n },\n [linking, navigation]\n );\n\n return linkTo;\n}\n"],"mappings":"AAAA,SACEA,kBADF,EAEEC,gBAFF,EAGEC,6BAHF,QAIO,wBAJP;AAKA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AAEA,OAAOC,cAAP,MAA2B,kBAA3B;AAiBA,eAAe,SAASC,SAAT,GAEX;EACF,MAAMC,UAAU,GAAGH,KAAK,CAACI,UAAN,CAAiBL,6BAAjB,CAAnB;EACA,MAAMM,OAAO,GAAGL,KAAK,CAACI,UAAN,CAAiBH,cAAjB,CAAhB;EAEA,MAAMK,MAAM,GAAGN,KAAK,CAACO,WAAN,CACZC,EAAD,IAAuB;IACrB,IAAIL,UAAU,KAAKM,SAAnB,EAA8B;MAC5B,MAAM,IAAIC,KAAJ,CACJ,kFADI,CAAN;IAGD;;IAED,IAAI,OAAOF,EAAP,KAAc,QAAlB,EAA4B;MAC1B;MACAL,UAAU,CAACQ,QAAX,CAAoBH,EAAE,CAACI,MAAvB,EAA+BJ,EAAE,CAACK,MAAlC;MACA;IACD;;IAED,IAAI,CAACL,EAAE,CAACM,UAAH,CAAc,GAAd,CAAL,EAAyB;MACvB,MAAM,IAAIJ,KAAJ,CAAW,iCAAgCF,EAAG,IAA9C,CAAN;IACD;;IAED,MAAM;MAAEO;IAAF,IAAcV,OAApB;IAEA,MAAMW,KAAK,GAAGD,OAAO,SAAP,IAAAA,OAAO,WAAP,IAAAA,OAAO,CAAEjB,gBAAT,GACViB,OAAO,CAACjB,gBAAR,CAAyBU,EAAzB,EAA6BO,OAAO,CAACE,MAArC,CADU,GAEVnB,gBAAgB,CAACU,EAAD,EAAKO,OAAL,aAAKA,OAAL,uBAAKA,OAAO,CAAEE,MAAd,CAFpB;;IAIA,IAAID,KAAJ,EAAW;MACT,MAAME,MAAM,GAAGrB,kBAAkB,CAACmB,KAAD,EAAQD,OAAR,aAAQA,OAAR,uBAAQA,OAAO,CAAEE,MAAjB,CAAjC;;MAEA,IAAIC,MAAM,KAAKT,SAAf,EAA0B;QACxBN,UAAU,CAACgB,QAAX,CAAoBD,MAApB;MACD,CAFD,MAEO;QACLf,UAAU,CAACiB,KAAX,CAAiBJ,KAAjB;MACD;IACF,CARD,MAQO;MACL,MAAM,IAAIN,KAAJ,CAAU,iDAAV,CAAN;IACD;EACF,CAnCY,EAoCb,CAACL,OAAD,EAAUF,UAAV,CApCa,CAAf;EAuCA,OAAOG,MAAP;AACD"}
\No newline at end of file