UNPKG

2 kBTypeScriptView Raw
1/**
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 *
7 * @format
8 */
9
10import {EmitterSubscription} from '../vendor/emitter/EventEmitter';
11
12export type Handle = number;
13
14export type SimpleTask = {
15 name: string;
16 gen: () => void;
17};
18export type PromiseTask = {
19 name: string;
20 gen: () => Promise<any>;
21};
22
23export interface InteractionManagerStatic {
24 Events: {
25 interactionStart: string;
26 interactionComplete: string;
27 };
28
29 /**
30 * Adds a listener to be invoked when events of the specified type are
31 * emitted. An optional calling context may be provided. The data arguments
32 * emitted will be passed to the listener function.
33 *
34 * @param eventType - Name of the event to listen to
35 * @param listener - Function to invoke when the specified event is
36 * emitted
37 * @param context - Optional context object to use when invoking the
38 * listener
39 */
40 addListener(
41 eventType: string,
42 listener: (...args: any[]) => any,
43 context?: any,
44 ): EmitterSubscription;
45
46 /**
47 * Schedule a function to run after all interactions have completed.
48 * Returns a cancellable
49 */
50 runAfterInteractions(task?: (() => any) | SimpleTask | PromiseTask): {
51 then: (onfulfilled?: () => any, onrejected?: () => any) => Promise<any>;
52 done: (...args: any[]) => any;
53 cancel: () => void;
54 };
55
56 /**
57 * Notify manager that an interaction has started.
58 */
59 createInteractionHandle(): Handle;
60
61 /**
62 * Notify manager that an interaction has completed.
63 */
64 clearInteractionHandle(handle: Handle): void;
65
66 /**
67 * A positive number will use setTimeout to schedule any tasks after
68 * the eventLoopRunningTime hits the deadline value, otherwise all
69 * tasks will be executed in one setImmediate batch (default).
70 */
71 setDeadline(deadline: number): void;
72}
73
74export const InteractionManager: InteractionManagerStatic;