UNPKG

3.89 kBSource Map (JSON)View Raw
1{"version":3,"names":["getPathFromState","NavigationHelpersContext","React","LinkingContext","getRootStateForNavigate","navigation","state","parent","getParent","parentState","getState","index","routes","useLinkBuilder","useContext","linking","buildLink","useCallback","name","params","options","enabled","undefined","path","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,SACEA,gBADF,EAGEC,wBAHF,QAMO,wBANP;AAOA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AAEA,OAAOC,cAAP,MAA2B,kBAA3B;;AAWA,MAAMC,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;;;AACA,eAAe,SAASO,cAAT,GAA0B;EACvC,MAAMR,UAAU,GAAGH,KAAK,CAACY,UAAN,CAAiBb,wBAAjB,CAAnB;EACA,MAAMc,OAAO,GAAGb,KAAK,CAACY,UAAN,CAAiBX,cAAjB,CAAhB;EAEA,MAAMa,SAAS,GAAGd,KAAK,CAACe,WAAN,CAChB,CAACC,IAAD,EAAeC,MAAf,KAAmC;IACjC,MAAM;MAAEC;IAAF,IAAcL,OAApB;;IAEA,IAAI,CAAAK,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEC,OAAT,MAAqB,KAAzB,EAAgC;MAC9B,OAAOC,SAAP;IACD;;IAED,MAAMhB,KAAK,GAAGD,UAAU,GACpBD,uBAAuB,CAACC,UAAD,EAAa;MAClCM,KAAK,EAAE,CAD2B;MAElCC,MAAM,EAAE,CAAC;QAAEM,IAAF;QAAQC;MAAR,CAAD;IAF0B,CAAb,CADH,GAKpB;IACA;IACA;MACER,KAAK,EAAE,CADT;MAEEC,MAAM,EAAE,CAAC;QAAEM,IAAF;QAAQC;MAAR,CAAD;IAFV,CAPJ;IAYA,MAAMI,IAAI,GAAGH,OAAO,SAAP,IAAAA,OAAO,WAAP,IAAAA,OAAO,CAAEpB,gBAAT,GACToB,OAAO,CAACpB,gBAAR,CAAyBM,KAAzB,EAAgCc,OAAhC,aAAgCA,OAAhC,uBAAgCA,OAAO,CAAEI,MAAzC,CADS,GAETxB,gBAAgB,CAACM,KAAD,EAAQc,OAAR,aAAQA,OAAR,uBAAQA,OAAO,CAAEI,MAAjB,CAFpB;IAIA,OAAOD,IAAP;EACD,CAzBe,EA0BhB,CAACR,OAAD,EAAUV,UAAV,CA1BgB,CAAlB;EA6BA,OAAOW,SAAP;AACD"}
\No newline at end of file