diff --git a/packages/element-web-module-api/element-web-module-api.api.md b/packages/element-web-module-api/element-web-module-api.api.md index d7590281ea..b75e57e9c9 100644 --- a/packages/element-web-module-api/element-web-module-api.api.md +++ b/packages/element-web-module-api/element-web-module-api.api.md @@ -55,6 +55,8 @@ export interface Api extends LegacyModuleApiExtension, LegacyCustomisationsApiEx readonly navigation: NavigationApi; readonly rootNode: HTMLElement; readonly stores: StoresApi; + // @alpha + readonly widgetLifecycle: WidgetLifecycleApi; } // @alpha @@ -64,6 +66,9 @@ export interface BuiltinsApi { renderRoomView(roomId: string, props?: RoomViewProps): React.ReactNode; } +// @alpha +export type CapabilitiesApprover = (widget: WidgetDescriptor, requestedCapabilities: Set) => Set | Promise | undefined> | undefined; + // @alpha @deprecated (undocumented) export interface ChatExportCustomisations { getForceChatExportParameters(): { @@ -180,6 +185,9 @@ export interface I18nApi { translate(key: keyof Translations, variables?: Variables): string; } +// @alpha +export type IdentityApprover = (widget: WidgetDescriptor) => boolean | Promise | undefined; + // @alpha @deprecated (undocumented) export type LegacyCustomisations = (customisations: T) => void; @@ -325,6 +333,9 @@ export type OriginalMessageComponentProps = { showUrlPreview?: boolean; }; +// @alpha +export type PreloadApprover = (widget: WidgetDescriptor) => boolean | Promise | undefined; + // @public export interface Profile { displayName?: string; @@ -422,6 +433,27 @@ export class Watchable { watch(listener: (value: T) => void): void; } +// @alpha +export type WidgetDescriptor = { + id: string; + templateUrl: string; + creatorUserId: string; + type: string; + origin: string; + roomId?: string; + kind: WidgetKind; +}; + +// @alpha +export type WidgetKind = "room" | "account" | "modal"; + +// @alpha +export interface WidgetLifecycleApi { + registerCapabilitiesApprover(approver: CapabilitiesApprover): void; + registerIdentityApprover(approver: IdentityApprover): void; + registerPreloadApprover(approver: PreloadApprover): void; +} + // @alpha @deprecated (undocumented) export interface WidgetPermissionsCustomisations { preapproveCapabilities?(widget: Widget, requestedCapabilities: Set): Promise>;