UNPKG

mediasfu-reactnative-expo

Version:

mediasfu-reactnative-expo – Expo-managed React Native WebRTC SDK for video conferencing, webinars, live streaming, broadcast, screen sharing, whiteboard, chat, recording, live subtitles, translation, and AI agent rooms on iOS, Android, and web. Prebuilt r

91 lines 2.62 kB
/** * Override helper utilities for MediaSFU React Native Expo * * These utilities enable flexible component and function overrides * while maintaining React Native compatibility (no DOM APIs). */ /** * Applies a component override, returning the appropriate component to render * * @param override - The override configuration (component or render function) * @param DefaultComponent - The default component to use if no override is provided * @returns The component to render (either overridden or default) * * @example * ```tsx * const MyComponent = withOverride( * uiOverrides?.mainContainer, * MainContainerComponent * ); * * // Later in JSX: * <MyComponent {...props} /> * ``` */ export function withOverride(override, DefaultComponent) { // If no override provided, return default if (!override) { return DefaultComponent; } // If component replacement provided, use it if (override.component) { return override.component; } // If render function provided, create a wrapper component if (override.render) { return ((props) => override.render(props)); } // Fallback to default return DefaultComponent; } /** * Applies a function override, returning the appropriate function to use * * @param override - The override configuration (implementation or wrap function) * @param defaultFn - The default function to use if no override is provided * @returns The function to use (either overridden or default) * * @example * ```tsx * const customConsumerResume = withFunctionOverride( * uiOverrides?.consumerResume, * consumerResume * ); * * // Later in code: * await customConsumerResume(params); * ``` * * @example * // Wrapping with analytics * ```tsx * const override = { * wrap: (original) => async (params) => { * const start = performance.now(); * const result = await original(params); * analytics.track('consumer_resume', { * duration: performance.now() - start, * consumerId: params?.consumer?.id * }); * return result; * } * }; * ``` */ export function withFunctionOverride(override, defaultFn) { // If no override provided, return default if (!override) { return defaultFn; } // If implementation replacement provided, use it if (override.implementation) { return override.implementation; } // If wrap function provided, apply it if (override.wrap) { return override.wrap(defaultFn); } // Fallback to default return defaultFn; } //# sourceMappingURL=overrideHelpers.js.map