UNPKG

5.04 kBSource Map (JSON)View Raw
1{"version":3,"names":["NOT_INITIALIZED_ERROR","createNavigationContainerRef","methods","Object","keys","CommonActions","listeners","removeListener","event","callback","filter","cb","current","ref","value","entries","forEach","callbacks","addListener","isReady","reduce","acc","name","args","push","console","error"],"sources":["createNavigationContainerRef.tsx"],"sourcesContent":["import { CommonActions } from '@react-navigation/routers';\n\nimport type {\n NavigationContainerEventMap,\n NavigationContainerRef,\n NavigationContainerRefWithCurrent,\n} from './types';\n\nexport const NOT_INITIALIZED_ERROR =\n \"The 'navigation' object hasn't been initialized yet. This might happen if you don't have a navigator mounted, or if the navigator hasn't finished mounting. See https://reactnavigation.org/docs/navigating-without-navigation-prop#handling-initialization for more details.\";\n\nexport default function createNavigationContainerRef<\n ParamList extends {} = ReactNavigation.RootParamList\n>(): NavigationContainerRefWithCurrent<ParamList> {\n const methods = [\n ...Object.keys(CommonActions),\n 'addListener',\n 'removeListener',\n 'resetRoot',\n 'dispatch',\n 'isFocused',\n 'canGoBack',\n 'getRootState',\n 'getState',\n 'getParent',\n 'getCurrentRoute',\n 'getCurrentOptions',\n ] as const;\n\n const listeners: Record<string, ((...args: any[]) => void)[]> = {};\n\n const removeListener = (\n event: string,\n callback: (...args: any[]) => void\n ) => {\n if (listeners[event]) {\n listeners[event] = listeners[event].filter((cb) => cb !== callback);\n }\n };\n\n let current: NavigationContainerRef<ParamList> | null = null;\n\n const ref: NavigationContainerRefWithCurrent<ParamList> = {\n get current() {\n return current;\n },\n set current(value: NavigationContainerRef<ParamList> | null) {\n current = value;\n\n if (value != null) {\n Object.entries(listeners).forEach(([event, callbacks]) => {\n callbacks.forEach((callback) => {\n value.addListener(\n event as keyof NavigationContainerEventMap,\n callback\n );\n });\n });\n }\n },\n isReady: () => {\n if (current == null) {\n return false;\n }\n\n return current.isReady();\n },\n ...methods.reduce<any>((acc, name) => {\n acc[name] = (...args: any[]) => {\n if (current == null) {\n switch (name) {\n case 'addListener': {\n const [event, callback] = args;\n\n listeners[event] = listeners[event] || [];\n listeners[event].push(callback);\n\n return () => removeListener(event, callback);\n }\n case 'removeListener': {\n const [event, callback] = args;\n\n removeListener(event, callback);\n break;\n }\n default:\n console.error(NOT_INITIALIZED_ERROR);\n }\n } else {\n // @ts-expect-error: this is ok\n return current[name](...args);\n }\n };\n return acc;\n }, {}),\n };\n\n return ref;\n}\n"],"mappings":";;;;;;;;AAAA;;AAQO,MAAMA,qBAAqB,GAChC,+QADK;;;AAGQ,SAASC,4BAAT,GAEmC;EAChD,MAAMC,OAAO,GAAG,CACd,GAAGC,MAAM,CAACC,IAAP,CAAYC,sBAAZ,CADW,EAEd,aAFc,EAGd,gBAHc,EAId,WAJc,EAKd,UALc,EAMd,WANc,EAOd,WAPc,EAQd,cARc,EASd,UATc,EAUd,WAVc,EAWd,iBAXc,EAYd,mBAZc,CAAhB;EAeA,MAAMC,SAAuD,GAAG,EAAhE;;EAEA,MAAMC,cAAc,GAAG,CACrBC,KADqB,EAErBC,QAFqB,KAGlB;IACH,IAAIH,SAAS,CAACE,KAAD,CAAb,EAAsB;MACpBF,SAAS,CAACE,KAAD,CAAT,GAAmBF,SAAS,CAACE,KAAD,CAAT,CAAiBE,MAAjB,CAAyBC,EAAD,IAAQA,EAAE,KAAKF,QAAvC,CAAnB;IACD;EACF,CAPD;;EASA,IAAIG,OAAiD,GAAG,IAAxD;EAEA,MAAMC,GAAiD,GAAG;IACxD,IAAID,OAAJ,GAAc;MACZ,OAAOA,OAAP;IACD,CAHuD;;IAIxD,IAAIA,OAAJ,CAAYE,KAAZ,EAA6D;MAC3DF,OAAO,GAAGE,KAAV;;MAEA,IAAIA,KAAK,IAAI,IAAb,EAAmB;QACjBX,MAAM,CAACY,OAAP,CAAeT,SAAf,EAA0BU,OAA1B,CAAkC,QAAwB;UAAA,IAAvB,CAACR,KAAD,EAAQS,SAAR,CAAuB;UACxDA,SAAS,CAACD,OAAV,CAAmBP,QAAD,IAAc;YAC9BK,KAAK,CAACI,WAAN,CACEV,KADF,EAEEC,QAFF;UAID,CALD;QAMD,CAPD;MAQD;IACF,CAjBuD;;IAkBxDU,OAAO,EAAE,MAAM;MACb,IAAIP,OAAO,IAAI,IAAf,EAAqB;QACnB,OAAO,KAAP;MACD;;MAED,OAAOA,OAAO,CAACO,OAAR,EAAP;IACD,CAxBuD;IAyBxD,GAAGjB,OAAO,CAACkB,MAAR,CAAoB,CAACC,GAAD,EAAMC,IAAN,KAAe;MACpCD,GAAG,CAACC,IAAD,CAAH,GAAY,YAAoB;QAAA,kCAAhBC,IAAgB;UAAhBA,IAAgB;QAAA;;QAC9B,IAAIX,OAAO,IAAI,IAAf,EAAqB;UACnB,QAAQU,IAAR;YACE,KAAK,aAAL;cAAoB;gBAClB,MAAM,CAACd,KAAD,EAAQC,QAAR,IAAoBc,IAA1B;gBAEAjB,SAAS,CAACE,KAAD,CAAT,GAAmBF,SAAS,CAACE,KAAD,CAAT,IAAoB,EAAvC;gBACAF,SAAS,CAACE,KAAD,CAAT,CAAiBgB,IAAjB,CAAsBf,QAAtB;gBAEA,OAAO,MAAMF,cAAc,CAACC,KAAD,EAAQC,QAAR,CAA3B;cACD;;YACD,KAAK,gBAAL;cAAuB;gBACrB,MAAM,CAACD,KAAD,EAAQC,QAAR,IAAoBc,IAA1B;gBAEAhB,cAAc,CAACC,KAAD,EAAQC,QAAR,CAAd;gBACA;cACD;;YACD;cACEgB,OAAO,CAACC,KAAR,CAAc1B,qBAAd;UAhBJ;QAkBD,CAnBD,MAmBO;UACL;UACA,OAAOY,OAAO,CAACU,IAAD,CAAP,CAAc,GAAGC,IAAjB,CAAP;QACD;MACF,CAxBD;;MAyBA,OAAOF,GAAP;IACD,CA3BE,EA2BA,EA3BA;EAzBqD,CAA1D;EAuDA,OAAOR,GAAP;AACD"}
\No newline at end of file