UNPKG

1.98 kBSource Map (JSON)View Raw
1{"version":3,"names":["React","useKeyedChildListeners","current","keyedListeners","useRef","Object","assign","create","getState","beforeRemove","addKeyedListener","useCallback","type","key","listener","undefined"],"sources":["useKeyedChildListeners.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport type { KeyedListenerMap } from './NavigationBuilderContext';\n\n/**\n * Hook which lets child navigators add getters to be called for obtaining rehydrated state.\n */\nexport default function useKeyedChildListeners() {\n const { current: keyedListeners } = React.useRef<{\n [K in keyof KeyedListenerMap]: Record<\n string,\n KeyedListenerMap[K] | undefined\n >;\n }>(\n Object.assign(Object.create(null), {\n getState: {},\n beforeRemove: {},\n })\n );\n\n const addKeyedListener = React.useCallback(\n <T extends keyof KeyedListenerMap>(\n type: T,\n key: string,\n listener: KeyedListenerMap[T]\n ) => {\n // @ts-expect-error: according to ref stated above you can use `key` to index type\n keyedListeners[type][key] = listener;\n\n return () => {\n // @ts-expect-error: according to ref stated above you can use `key` to index type\n keyedListeners[type][key] = undefined;\n };\n },\n [keyedListeners]\n );\n\n return {\n keyedListeners,\n addKeyedListener,\n };\n}\n"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;;AAIA;AACA;AACA;AACA,eAAe,SAASC,sBAAT,GAAkC;EAC/C,MAAM;IAAEC,OAAO,EAAEC;EAAX,IAA8BH,KAAK,CAACI,MAAN,CAMlCC,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACE,MAAP,CAAc,IAAd,CAAd,EAAmC;IACjCC,QAAQ,EAAE,EADuB;IAEjCC,YAAY,EAAE;EAFmB,CAAnC,CANkC,CAApC;EAYA,MAAMC,gBAAgB,GAAGV,KAAK,CAACW,WAAN,CACvB,CACEC,IADF,EAEEC,GAFF,EAGEC,QAHF,KAIK;IACH;IACAX,cAAc,CAACS,IAAD,CAAd,CAAqBC,GAArB,IAA4BC,QAA5B;IAEA,OAAO,MAAM;MACX;MACAX,cAAc,CAACS,IAAD,CAAd,CAAqBC,GAArB,IAA4BE,SAA5B;IACD,CAHD;EAID,CAbsB,EAcvB,CAACZ,cAAD,CAduB,CAAzB;EAiBA,OAAO;IACLA,cADK;IAELO;EAFK,CAAP;AAID"}
\No newline at end of file