UNPKG

2.29 kBSource Map (JSON)View Raw
1{"version":3,"sources":["useOnRouteFocus.tsx"],"names":["useOnRouteFocus","router","getState","key","sourceRouteKey","setState","onRouteFocus","onRouteFocusParent","React","useContext","NavigationBuilderContext","useCallback","state","result","getStateForRouteFocus","undefined"],"mappings":";;;;;;;AAKA;;AAEA;;;;;;;;AASA;AACA;AACA;AACA;AACA;AACe,SAASA,eAAT,OAKK;AAAA,MALqD;AACvEC,IAAAA,MADuE;AAEvEC,IAAAA,QAFuE;AAGvEC,IAAAA,GAAG,EAAEC,cAHkE;AAIvEC,IAAAA;AAJuE,GAKrD;AAClB,QAAM;AAAEC,IAAAA,YAAY,EAAEC;AAAhB,MAAuCC,KAAK,CAACC,UAAN,CAC3CC,iCAD2C,CAA7C;AAIA,SAAOF,KAAK,CAACG,WAAN,CACJR,GAAD,IAAiB;AACf,UAAMS,KAAK,GAAGV,QAAQ,EAAtB;AACA,UAAMW,MAAM,GAAGZ,MAAM,CAACa,qBAAP,CAA6BF,KAA7B,EAAoCT,GAApC,CAAf;;AAEA,QAAIU,MAAM,KAAKD,KAAf,EAAsB;AACpBP,MAAAA,QAAQ,CAACQ,MAAD,CAAR;AACD;;AAED,QAAIN,kBAAkB,KAAKQ,SAAvB,IAAoCX,cAAc,KAAKW,SAA3D,EAAsE;AACpER,MAAAA,kBAAkB,CAACH,cAAD,CAAlB;AACD;AACF,GAZI,EAaL,CAACF,QAAD,EAAWK,kBAAX,EAA+BN,MAA/B,EAAuCI,QAAvC,EAAiDD,cAAjD,CAbK,CAAP;AAeD","sourcesContent":["import type {\n NavigationAction,\n NavigationState,\n Router,\n} from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport NavigationBuilderContext from './NavigationBuilderContext';\n\ntype Options<Action extends NavigationAction> = {\n router: Router<NavigationState, Action>;\n getState: () => NavigationState;\n setState: (state: NavigationState) => void;\n key?: string;\n};\n\n/**\n * Hook to handle focus actions for a route.\n * Focus action needs to be treated specially, coz when a nested route is focused,\n * the parent navigators also needs to be focused.\n */\nexport default function useOnRouteFocus<Action extends NavigationAction>({\n router,\n getState,\n key: sourceRouteKey,\n setState,\n}: Options<Action>) {\n const { onRouteFocus: onRouteFocusParent } = React.useContext(\n NavigationBuilderContext\n );\n\n return React.useCallback(\n (key: string) => {\n const state = getState();\n const result = router.getStateForRouteFocus(state, key);\n\n if (result !== state) {\n setState(result);\n }\n\n if (onRouteFocusParent !== undefined && sourceRouteKey !== undefined) {\n onRouteFocusParent(sourceRouteKey);\n }\n },\n [getState, onRouteFocusParent, router, setState, sourceRouteKey]\n );\n}\n"]}
\No newline at end of file