eventManager.d.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /// <reference types="react" />
  2. import { Id, ToastContent, ClearWaitingQueueParams, NotValidatedToastProps, ToastItem } from '../types';
  3. import { ContainerInstance } from '../hooks';
  4. export declare const enum Event {
  5. Show = 0,
  6. Clear = 1,
  7. DidMount = 2,
  8. WillUnmount = 3,
  9. Change = 4,
  10. ClearWaitingQueue = 5
  11. }
  12. type OnShowCallback = (content: ToastContent, options: NotValidatedToastProps) => void;
  13. type OnClearCallback = (id?: Id) => void;
  14. type OnClearWaitingQueue = (params: ClearWaitingQueueParams) => void;
  15. type OnDidMountCallback = (containerInstance: ContainerInstance) => void;
  16. type OnWillUnmountCallback = OnDidMountCallback;
  17. export type OnChangeCallback = (toast: ToastItem) => void;
  18. type Callback = OnShowCallback | OnClearCallback | OnClearWaitingQueue | OnDidMountCallback | OnWillUnmountCallback | OnChangeCallback;
  19. type TimeoutId = ReturnType<typeof setTimeout>;
  20. export interface EventManager {
  21. list: Map<Event, Callback[]>;
  22. emitQueue: Map<Event, TimeoutId[]>;
  23. on(event: Event.Show, callback: OnShowCallback): EventManager;
  24. on(event: Event.Clear, callback: OnClearCallback): EventManager;
  25. on(event: Event.ClearWaitingQueue, callback: OnClearWaitingQueue): EventManager;
  26. on(event: Event.DidMount, callback: OnDidMountCallback): EventManager;
  27. on(event: Event.WillUnmount, callback: OnWillUnmountCallback): EventManager;
  28. on(event: Event.Change, callback: OnChangeCallback): EventManager;
  29. off(event: Event, callback?: Callback): EventManager;
  30. cancelEmit(event: Event): EventManager;
  31. emit<TData>(event: Event.Show, content: React.ReactNode | ToastContent<TData>, options: NotValidatedToastProps): void;
  32. emit(event: Event.Clear, id?: string | number): void;
  33. emit(event: Event.ClearWaitingQueue, params: ClearWaitingQueueParams): void;
  34. emit(event: Event.DidMount, containerInstance: ContainerInstance): void;
  35. emit(event: Event.WillUnmount, containerInstance: ContainerInstance): void;
  36. emit(event: Event.Change, data: ToastItem): void;
  37. }
  38. export declare const eventManager: EventManager;
  39. export {};