mediasfu-reactjs
Version:
mediasfu-reactjs – React 18/19 WebRTC SDK for video conferencing, webinars, broadcasts, live streaming, chat, recording, whiteboard, and AI agents. Plug-in prebuilt rooms or build fully custom UIs.
82 lines • 3.27 kB
TypeScript
/**
* Override Helpers for MediaSFU UI Customization
*
* Provides utilities to selectively replace or wrap MediaSFU components and functions
* without touching core logic. These helpers power the uiOverrides system.
*
* @module overrideHelpers
*
* @example
* // Override a component via render function
* ```tsx
* const mainContainerOverride: CustomComponentOverride<MainContainerProps> = {
* render: (props) => (
* <div style={{ border: "4px dashed purple", borderRadius: 28, padding: 16 }}>
* <MainContainerComponent {...props} />
* </div>
* ),
* };
* const EnhancedMainContainer = withOverride(mainContainerOverride, MainContainerComponent);
* ```
*
* @example
* // Override a function to add analytics
* ```tsx
* const resumeOverride: CustomFunctionOverride<typeof consumerResume> = {
* wrap: (original) => async (params) => {
* const start = performance.now();
* const result = await original(params);
* analytics.track("consumer_resume", { durationMs: performance.now() - start });
* return result;
* },
* };
* const wrappedResume = withFunctionOverride(resumeOverride, consumerResume);
* ```
*/
import React from 'react';
import type { CustomComponentOverride, CustomFunctionOverride } from '../../@types/types';
/**
* Renders a component with optional override.
*
* @template Props - Component props type
* @param {CustomComponentOverride<Props>} override - Override definition (render or component)
* @param {React.ComponentType<Props>} DefaultComponent - Fallback component
* @param {Props} props - Props to forward
* @returns {React.ReactNode} - Rendered component
*/
export declare const renderWithOverride: <Props extends object>(override: CustomComponentOverride<Props> | undefined, DefaultComponent: React.ComponentType<Props>, props: Props) => React.ReactNode;
/**
* Wraps a component with override support for use in useMemo.
*
* @template Props - Component props type
* @param {CustomComponentOverride<Props>} override - Override definition
* @param {React.ComponentType<Props>} DefaultComponent - Default component
* @returns {React.ComponentType<Props>} - Wrapped component
*
* @example
* ```tsx
* const MainContainer = useMemo(
* () => withOverride(uiOverrides?.mainContainer, MainContainerComponent),
* [uiOverrides?.mainContainer]
* );
* ```
*/
export declare const withOverride: <Props extends object>(override: CustomComponentOverride<Props> | undefined, DefaultComponent: React.ComponentType<Props>) => React.ComponentType<Props>;
/**
* Wraps a function with override support (replacement or interception).
*
* @template Fn - Function signature
* @param {CustomFunctionOverride<Fn>} override - Override definition (wrap or implementation)
* @param {Fn} defaultImplementation - Default function
* @returns {Fn} - Wrapped or replaced function
*
* @example
* ```tsx
* const consumerResumeFn = useMemo(
* () => withFunctionOverride(uiOverrides?.consumerResume, consumerResume),
* [uiOverrides?.consumerResume]
* );
* ```
*/
export declare const withFunctionOverride: <Fn extends (...args: any[]) => any>(override: CustomFunctionOverride<Fn> | undefined, defaultImplementation: Fn) => Fn;
//# sourceMappingURL=overrideHelpers.d.ts.map