trimble-connect-workspace-api
Version:
Trimble Connect Workspace API
69 lines (68 loc) • 2.62 kB
TypeScript
import { EventId, IClient, WorkspaceAPI, WorkspaceEventData } from "..";
/**
* Event callback signature.
* @param event The event identifier.
* @param data The event data.
*/
export declare type EventCallback = (event: string, data: unknown) => void;
/**
* Generic connection handler.
*/
interface IConnectHandler {
/**
* Handles a new connection.
* @param client The connected client.
*/
onConnect(client: IClient): void;
}
/**
* Generic request handler.
*/
interface IRequestHandler {
/**
* Handles an API request.
* @param client The request source client.
* @param api The requested API entry point.
* @param args The request arguments.
* @returns A promise that resolves into a result, or nothing if the handler cannot handle the request.
*/
onRequest(client: IClient, api: string, args: unknown[]): Promise<unknown> | undefined;
}
/**
* Connects to an external API.
* @param target The target dispatcher or iframe.
* @param onEvent The callback that receives the events dispatched from the external API.
* @returns A promise that resolves to the external API.
*/
export declare function connect(target: Window | HTMLIFrameElement, onEvent?: EventCallback, timeout?: number): Promise<unknown>;
/**
* Destrory the connection made by the connect function.
*/
export declare function disconnect(): void;
/**
* Exposes the API to clients.
* @param api The api to expose.
*/
export declare function expose(api: Partial<IConnectHandler & IRequestHandler & WorkspaceAPI>): void;
/**
* Pre-registers a client that is expected to connect.
* @param client The client to register.
*/
export declare function preregister(client: IClient): IClient | void;
/**
* Removes the registered client that is expected to unmount
* @param client The client to be removed
*/
export declare function removeClient(client: IClient): void;
/**
* Dispatches an event to all connected clients.
* @param event The event identifier.
* @param data The event data.
* @param targetClient The client(optional), If specified then event will be sent to specified client with given `identifier`.
* Otherwise event will be sent to all connected clients.
* @param originClientId Optional {@link IClient.identifier}. Used to indicate that this event originated from a
* Workspace API function call of the given client.
*/
export declare function sendEventToAllClients<TEvent extends EventId>(event: TEvent, data: WorkspaceEventData<TEvent>, targetClient?: IClient, originClientId?: string): void;
export declare function isApplicationEmbedded(): boolean;
export {};