UNPKG

2.88 kBSource Map (JSON)View Raw
1{"version":3,"names":["React","isArrayEqual","NavigationBuilderContext","NavigationRouteContext","useOnGetState","getState","getStateListeners","addKeyedListener","useContext","route","key","getRehydratedState","useCallback","state","routes","map","childState","useEffect"],"sources":["useOnGetState.tsx"],"sourcesContent":["import type { NavigationState } from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport isArrayEqual from './isArrayEqual';\nimport NavigationBuilderContext, {\n GetStateListener,\n} from './NavigationBuilderContext';\nimport NavigationRouteContext from './NavigationRouteContext';\n\ntype Options = {\n getState: () => NavigationState;\n getStateListeners: Record<string, GetStateListener | undefined>;\n};\n\nexport default function useOnGetState({\n getState,\n getStateListeners,\n}: Options) {\n const { addKeyedListener } = React.useContext(NavigationBuilderContext);\n const route = React.useContext(NavigationRouteContext);\n const key = route ? route.key : 'root';\n\n const getRehydratedState = React.useCallback(() => {\n const state = getState();\n\n // Avoid returning new route objects if we don't need to\n const routes = state.routes.map((route) => {\n const childState = getStateListeners[route.key]?.();\n\n if (route.state === childState) {\n return route;\n }\n\n return { ...route, state: childState };\n });\n\n if (isArrayEqual(state.routes, routes)) {\n return state;\n }\n\n return { ...state, routes };\n }, [getState, getStateListeners]);\n\n React.useEffect(() => {\n return addKeyedListener?.('getState', key, getRehydratedState);\n }, [addKeyedListener, getRehydratedState, key]);\n}\n"],"mappings":"AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,OAAOC,YAAP,MAAyB,gBAAzB;AACA,OAAOC,wBAAP,MAEO,4BAFP;AAGA,OAAOC,sBAAP,MAAmC,0BAAnC;AAOA,eAAe,SAASC,aAAT,OAGH;EAAA,IAH0B;IACpCC,QADoC;IAEpCC;EAFoC,CAG1B;EACV,MAAM;IAAEC;EAAF,IAAuBP,KAAK,CAACQ,UAAN,CAAiBN,wBAAjB,CAA7B;EACA,MAAMO,KAAK,GAAGT,KAAK,CAACQ,UAAN,CAAiBL,sBAAjB,CAAd;EACA,MAAMO,GAAG,GAAGD,KAAK,GAAGA,KAAK,CAACC,GAAT,GAAe,MAAhC;EAEA,MAAMC,kBAAkB,GAAGX,KAAK,CAACY,WAAN,CAAkB,MAAM;IACjD,MAAMC,KAAK,GAAGR,QAAQ,EAAtB,CADiD,CAGjD;;IACA,MAAMS,MAAM,GAAGD,KAAK,CAACC,MAAN,CAAaC,GAAb,CAAkBN,KAAD,IAAW;MAAA;;MACzC,MAAMO,UAAU,4BAAGV,iBAAiB,CAACG,KAAK,CAACC,GAAP,CAApB,0DAAG,2BAAAJ,iBAAiB,CAApC;;MAEA,IAAIG,KAAK,CAACI,KAAN,KAAgBG,UAApB,EAAgC;QAC9B,OAAOP,KAAP;MACD;;MAED,OAAO,EAAE,GAAGA,KAAL;QAAYI,KAAK,EAAEG;MAAnB,CAAP;IACD,CARc,CAAf;;IAUA,IAAIf,YAAY,CAACY,KAAK,CAACC,MAAP,EAAeA,MAAf,CAAhB,EAAwC;MACtC,OAAOD,KAAP;IACD;;IAED,OAAO,EAAE,GAAGA,KAAL;MAAYC;IAAZ,CAAP;EACD,CAnB0B,EAmBxB,CAACT,QAAD,EAAWC,iBAAX,CAnBwB,CAA3B;EAqBAN,KAAK,CAACiB,SAAN,CAAgB,MAAM;IACpB,OAAOV,gBAAP,aAAOA,gBAAP,uBAAOA,gBAAgB,CAAG,UAAH,EAAeG,GAAf,EAAoBC,kBAApB,CAAvB;EACD,CAFD,EAEG,CAACJ,gBAAD,EAAmBI,kBAAnB,EAAuCD,GAAvC,CAFH;AAGD"}
\No newline at end of file