UNPKG

3.82 kBSource Map (JSON)View Raw
1{"version":3,"names":["getRootStateForNavigate","navigation","state","parent","getParent","parentState","getState","index","routes","useLinkBuilder","React","useContext","NavigationHelpersContext","linking","LinkingContext","buildLink","useCallback","name","params","options","enabled","undefined","path","getPathFromState","config"],"sources":["useLinkBuilder.tsx"],"sourcesContent":["import {\n getPathFromState,\n NavigationHelpers,\n NavigationHelpersContext,\n NavigationProp,\n ParamListBase,\n} from '@react-navigation/core';\nimport * as React from 'react';\n\nimport LinkingContext from './LinkingContext';\n\ntype NavigationObject =\n | NavigationHelpers<ParamListBase>\n | NavigationProp<ParamListBase>;\n\ntype MinimalState = {\n index: number;\n routes: { name: string; params?: object; state?: MinimalState }[];\n};\n\nconst getRootStateForNavigate = (\n navigation: NavigationObject,\n state: MinimalState\n): MinimalState => {\n const parent = navigation.getParent();\n\n if (parent) {\n const parentState = parent.getState();\n\n return getRootStateForNavigate(parent, {\n index: 0,\n routes: [\n {\n ...parentState.routes[parentState.index],\n state: state,\n },\n ],\n });\n }\n\n return state;\n};\n\n/**\n * Build destination link for a navigate action.\n * Useful for showing anchor tags on the web for buttons that perform navigation.\n */\nexport default function useLinkBuilder() {\n const navigation = React.useContext(NavigationHelpersContext);\n const linking = React.useContext(LinkingContext);\n\n const buildLink = React.useCallback(\n (name: string, params?: object) => {\n const { options } = linking;\n\n if (options?.enabled === false) {\n return undefined;\n }\n\n const state = navigation\n ? getRootStateForNavigate(navigation, {\n index: 0,\n routes: [{ name, params }],\n })\n : // If we couldn't find a navigation object in context, we're at root\n // So we'll construct a basic state object to use\n {\n index: 0,\n routes: [{ name, params }],\n };\n\n const path = options?.getPathFromState\n ? options.getPathFromState(state, options?.config)\n : getPathFromState(state, options?.config);\n\n return path;\n },\n [linking, navigation]\n );\n\n return buildLink;\n}\n"],"mappings":";;;;;;;AAAA;;AAOA;;AAEA;;;;;;;;AAWA,MAAMA,uBAAuB,GAAG,CAC9BC,UAD8B,EAE9BC,KAF8B,KAGb;EACjB,MAAMC,MAAM,GAAGF,UAAU,CAACG,SAAX,EAAf;;EAEA,IAAID,MAAJ,EAAY;IACV,MAAME,WAAW,GAAGF,MAAM,CAACG,QAAP,EAApB;IAEA,OAAON,uBAAuB,CAACG,MAAD,EAAS;MACrCI,KAAK,EAAE,CAD8B;MAErCC,MAAM,EAAE,CACN,EACE,GAAGH,WAAW,CAACG,MAAZ,CAAmBH,WAAW,CAACE,KAA/B,CADL;QAEEL,KAAK,EAAEA;MAFT,CADM;IAF6B,CAAT,CAA9B;EASD;;EAED,OAAOA,KAAP;AACD,CArBD;AAuBA;AACA;AACA;AACA;;;AACe,SAASO,cAAT,GAA0B;EACvC,MAAMR,UAAU,GAAGS,KAAK,CAACC,UAAN,CAAiBC,8BAAjB,CAAnB;EACA,MAAMC,OAAO,GAAGH,KAAK,CAACC,UAAN,CAAiBG,uBAAjB,CAAhB;EAEA,MAAMC,SAAS,GAAGL,KAAK,CAACM,WAAN,CAChB,CAACC,IAAD,EAAeC,MAAf,KAAmC;IACjC,MAAM;MAAEC;IAAF,IAAcN,OAApB;;IAEA,IAAI,CAAAM,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEC,OAAT,MAAqB,KAAzB,EAAgC;MAC9B,OAAOC,SAAP;IACD;;IAED,MAAMnB,KAAK,GAAGD,UAAU,GACpBD,uBAAuB,CAACC,UAAD,EAAa;MAClCM,KAAK,EAAE,CAD2B;MAElCC,MAAM,EAAE,CAAC;QAAES,IAAF;QAAQC;MAAR,CAAD;IAF0B,CAAb,CADH,GAKpB;IACA;IACA;MACEX,KAAK,EAAE,CADT;MAEEC,MAAM,EAAE,CAAC;QAAES,IAAF;QAAQC;MAAR,CAAD;IAFV,CAPJ;IAYA,MAAMI,IAAI,GAAGH,OAAO,SAAP,IAAAA,OAAO,WAAP,IAAAA,OAAO,CAAEI,gBAAT,GACTJ,OAAO,CAACI,gBAAR,CAAyBrB,KAAzB,EAAgCiB,OAAhC,aAAgCA,OAAhC,uBAAgCA,OAAO,CAAEK,MAAzC,CADS,GAET,IAAAD,sBAAA,EAAiBrB,KAAjB,EAAwBiB,OAAxB,aAAwBA,OAAxB,uBAAwBA,OAAO,CAAEK,MAAjC,CAFJ;IAIA,OAAOF,IAAP;EACD,CAzBe,EA0BhB,CAACT,OAAD,EAAUZ,UAAV,CA1BgB,CAAlB;EA6BA,OAAOc,SAAP;AACD"}
\No newline at end of file