tunnels.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import React from "react";
  2. import tunnel from "tunnel-rat";
  3. export type Tunnel = ReturnType<typeof tunnel>;
  4. type TunnelsContextValue = {
  5. MainMenuTunnel: Tunnel;
  6. WelcomeScreenMenuHintTunnel: Tunnel;
  7. WelcomeScreenToolbarHintTunnel: Tunnel;
  8. WelcomeScreenHelpHintTunnel: Tunnel;
  9. WelcomeScreenCenterTunnel: Tunnel;
  10. FooterCenterTunnel: Tunnel;
  11. DefaultSidebarTriggerTunnel: Tunnel;
  12. DefaultSidebarTabTriggersTunnel: Tunnel;
  13. OverwriteConfirmDialogTunnel: Tunnel;
  14. TTDDialogTriggerTunnel: Tunnel;
  15. jotaiScope: symbol;
  16. };
  17. export const TunnelsContext = React.createContext<TunnelsContextValue>(null!);
  18. export const useTunnels = () => React.useContext(TunnelsContext);
  19. export const useInitializeTunnels = () => {
  20. return React.useMemo((): TunnelsContextValue => {
  21. return {
  22. MainMenuTunnel: tunnel(),
  23. WelcomeScreenMenuHintTunnel: tunnel(),
  24. WelcomeScreenToolbarHintTunnel: tunnel(),
  25. WelcomeScreenHelpHintTunnel: tunnel(),
  26. WelcomeScreenCenterTunnel: tunnel(),
  27. FooterCenterTunnel: tunnel(),
  28. DefaultSidebarTriggerTunnel: tunnel(),
  29. DefaultSidebarTabTriggersTunnel: tunnel(),
  30. OverwriteConfirmDialogTunnel: tunnel(),
  31. TTDDialogTriggerTunnel: tunnel(),
  32. jotaiScope: Symbol(),
  33. };
  34. }, []);
  35. };