From e2ae6f2288560d2f60859b1b6d9f420760472197 Mon Sep 17 00:00:00 2001 From: Half-Shot Date: Thu, 5 Jun 2025 09:58:51 +0100 Subject: [PATCH] Specify options for the original component. --- .../element-web-module-api.api.md | 9 +++++++-- packages/element-web-module-api/package.json | 6 +++--- .../src/api/custom-components.ts | 17 ++++++++++++----- 3 files changed, 22 insertions(+), 10 deletions(-) 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 f7160e5289..90cd4df08f 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 @@ -70,16 +70,16 @@ export interface CustomComponentsApi { export type CustomMessageComponentProps = { mxEvent: MatrixEvent; highlights?: string[]; - showUrlPreview?: boolean; forExport?: boolean; }; // Warning: (ae-incompatible-release-tags) The symbol "CustomMessageRenderFunction" is marked as @beta, but its signature references "CustomMessageComponentProps" which is marked as @alpha +// Warning: (ae-incompatible-release-tags) The symbol "CustomMessageRenderFunction" is marked as @beta, but its signature references "OriginalComponentProps" which is marked as @alpha // // @beta export type CustomMessageRenderFunction = ( props: CustomMessageComponentProps, -originalComponent?: () => React.JSX.Element) => JSX.Element | null; +originalComponent?: (props?: OriginalComponentProps) => React.JSX.Element) => JSX.Element | null; // @alpha @deprecated (undocumented) export interface DirectoryCustomisations { @@ -205,6 +205,11 @@ export class ModuleLoader { start(): Promise; } +// @alpha +export type OriginalComponentProps = { + showUrlPreview?: boolean; +}; + // @alpha @deprecated (undocumented) export interface RoomListCustomisations { isRoomVisible?(room: Room): boolean; diff --git a/packages/element-web-module-api/package.json b/packages/element-web-module-api/package.json index f2fed95dfb..94d1d4913d 100644 --- a/packages/element-web-module-api/package.json +++ b/packages/element-web-module-api/package.json @@ -38,21 +38,21 @@ "@types/react-dom": "^19.0.4", "@types/semver": "^7.5.8", "@vitest/coverage-v8": "^3.0.4", + "matrix-js-sdk": "^37.5.0", "matrix-web-i18n": "^3.3.0", "semver": "^7.6.3", "typescript": "^5.7.3", "vite": "^6.1.6", "vite-plugin-dts": "^4.5.0", "vitest": "^3.0.5", - "vitest-sonar-reporter": "^2.0.0", - "matrix-js-sdk": "^37.5.0" + "vitest-sonar-reporter": "^2.0.0" }, "peerDependencies": { "@matrix-org/react-sdk-module-api": "*", "@types/react": "*", "@types/react-dom": "*", - "matrix-web-i18n": "*", "matrix-js-sdk": "*", + "matrix-web-i18n": "*", "react": "^19" }, "peerDependenciesMeta": { diff --git a/packages/element-web-module-api/src/api/custom-components.ts b/packages/element-web-module-api/src/api/custom-components.ts index 4f008acafe..5ce0f8fefd 100644 --- a/packages/element-web-module-api/src/api/custom-components.ts +++ b/packages/element-web-module-api/src/api/custom-components.ts @@ -22,16 +22,23 @@ export type CustomMessageComponentProps = { * May be undefined if the client does not need to highlight */ highlights?: string[]; - /** - * Should previews be shown for this event - */ - showUrlPreview?: boolean; /** * Is this event being rendered to a static export */ forExport?: boolean; }; +/** + * Properties to alter the render function of the original component. + * @alpha Subject to change. + */ +export type OriginalComponentProps = { + /** + * Should previews be shown for this event. + */ + showUrlPreview?: boolean; +}; + /** * Function used to render a message component. * @beta Unlikely to change @@ -44,7 +51,7 @@ export type CustomMessageRenderFunction = ( /** * Render function for the original component. This may be omitted if the message would not normally be rendered. */ - originalComponent?: () => React.JSX.Element, + originalComponent?: (props?: OriginalComponentProps) => React.JSX.Element, ) => JSX.Element | null; /**