import type { CSSProperties } from 'react';
import type { StyleProp, ViewStyle } from 'react-native';
import type { WebViewProps } from 'react-native-webview';
import type { WebViewSourceUri } from 'react-native-webview/lib/WebViewTypes';
import type YoutubePlayer from '../modules/YoutubePlayer';
/**
* The props for the YoutubeView component.
* @example
* ```tsx
* const player = useYouTubePlayer('AbZH7XWDW_k');
*
*
* ```
*/
export type YoutubeViewProps = {
/**
* The player instance.
* @example
* ```tsx
* const player = useYouTubePlayer('AbZH7XWDW_k');
*
*
* ```
*/
player: YoutubePlayer;
/**
* The width of the player.
*/
width?: number | 'auto' | `${number}%`;
/**
* The height of the player.
*/
height?: number | 'auto' | `${number}%`;
/**
* The style of the player.
*/
style?: StyleProp;
/**
* The style of the iframe wrapper.
* @platform web
*/
iframeStyle?: CSSProperties;
/**
* If set to true, the player will use inline HTML.
* @remarks
* When false, the player will use a webview with the default URI (https://react-native-youtube-bridge.pages.dev).
* To use a custom webview, set `webViewUrl` to your own URL.
* @defaultValue true
* @platform ios, android
*/
useInlineHtml?: boolean;
/**
* The URL for the WebView source.
* @remarks
* When `useInlineHtml` is `true`, this value is set as the `baseUrl` for HTML content.
* In this case, the origin of `webViewUrl` MUST exactly match the YouTube IFrame API `origin`.
* - Include the port when applicable (e.g. baseUrl `https://localhost:8081/` ⇄ origin `https://localhost:8081`).
* - Use a trailing slash on the `baseUrl`, but not on `origin` (scheme + host [+ port] only).
*
* When `useInlineHtml` is `false`, this value overrides the default URI for the WebView source (https://react-native-youtube-bridge.pages.dev).
* @platform ios, android
*/
webViewUrl?: string;
/**
* The style of the WebView.
* @platform ios, android
*/
webViewStyle?: StyleProp;
/**
* The props of the WebView.
* @platform ios, android
*/
webViewProps?: Omit<
WebViewProps,
'ref' | 'source' | 'style' | 'onMessage' | 'javaScriptEnabled' | 'onError'
> & {
source?: Omit;
};
};