69 lines
2.4 KiB
TypeScript
69 lines
2.4 KiB
TypeScript
/*
|
|
Copyright 2026 Element Creations Ltd.
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
|
Please see LICENSE files in the repository root for full details.
|
|
*/
|
|
|
|
import { type IWidget } from "matrix-widget-api";
|
|
|
|
/**
|
|
* Containers that control where a widget is displayed on the screen.
|
|
*
|
|
* "top" is the app drawer, and currently the only sensible value.
|
|
*
|
|
* "right" is the right panel, and the default for widgets. Setting
|
|
* this as a container on a widget is essentially like saying "no
|
|
* changes needed", though this may change in the future.
|
|
*
|
|
* "center" was uncodumented at time of porting this from an enum.
|
|
* Possibly when a widget replaces the main chat view like element call.
|
|
*
|
|
* @alpha Subject to change.
|
|
*/
|
|
export type Container = "top" | "right" | "center";
|
|
|
|
/**
|
|
* An API for interfacing with widgets in Element Web, including getting what widgets
|
|
* are active in a given room.
|
|
* @alpha Subject to change.
|
|
*/
|
|
export interface WidgetApi {
|
|
/**
|
|
* Gets the widgets active in a given room.
|
|
*
|
|
* @param roomId - The room to get the widgets for.
|
|
*/
|
|
getWidgetsInRoom(roomId: string): IWidget[];
|
|
|
|
/**
|
|
* Gets the URL of a widget's avatar, if it has one.
|
|
*
|
|
* @param app - The widget to get the avatar URL for.
|
|
* @param width - Optional width to resize the avatar to.
|
|
* @param height - Optional height to resize the avatar to.
|
|
* @param resizeMethod - Optional method to use when resizing the avatar.
|
|
* @returns The URL of the widget's avatar, or null if it doesn't have one.
|
|
*/
|
|
getAppAvatarUrl(app: IWidget, width?: number, height?: number, resizeMethod?: string): string | null;
|
|
|
|
/**
|
|
* Checks if a widget is in a specific container in a given room.
|
|
*
|
|
* @param app - The widget to check.
|
|
* @param container - The container to check.
|
|
* @param roomId - The room to check in.
|
|
* @returns True if the widget is in the specified container, false otherwise.
|
|
*/
|
|
isAppInContainer(app: IWidget, container: Container, roomId: string): boolean;
|
|
|
|
/**
|
|
* Moves a widget to a specific container in a given room.
|
|
*
|
|
* @param app - The widget to move.
|
|
* @param container - The container to move the widget to.
|
|
* @param roomId - The room to move the widget in.
|
|
*/
|
|
moveAppToContainer(app: IWidget, container: Container, roomId: string): void;
|
|
}
|