39 lines
1.2 KiB
TypeScript
Executable File
39 lines
1.2 KiB
TypeScript
Executable File
import {FullscreenAdapter} from '@common/player/state/fullscreen/fullscreen-adapter';
|
|
import {IS_IPHONE} from '@common/utils/platform';
|
|
|
|
export function createIphoneFullscreenAdapter(
|
|
host: HTMLVideoElement,
|
|
onChange: () => void
|
|
): FullscreenAdapter {
|
|
return {
|
|
/**
|
|
* @link https://developer.apple.com/documentation/webkitjs/htmlvideoelement/1631913-webkitpresentationmode
|
|
*/
|
|
isFullscreen: () => {
|
|
return host.webkitPresentationMode === 'fullscreen';
|
|
},
|
|
/**
|
|
* @link https://developer.apple.com/documentation/webkitjs/htmlvideoelement/1628805-webkitsupportsfullscreen
|
|
*/
|
|
canFullScreen: () => {
|
|
return (
|
|
IS_IPHONE &&
|
|
typeof host.webkitSetPresentationMode === 'function' &&
|
|
(host.webkitSupportsFullscreen ?? false)
|
|
);
|
|
},
|
|
enter: () => {
|
|
return host.webkitSetPresentationMode?.('fullscreen');
|
|
},
|
|
exit: () => {
|
|
return host.webkitSetPresentationMode?.('inline');
|
|
},
|
|
bindEvents: () => {
|
|
host.removeEventListener('webkitpresentationmodechanged', onChange);
|
|
},
|
|
unbindEvents: () => {
|
|
host.addEventListener('webkitpresentationmodechanged', onChange);
|
|
},
|
|
};
|
|
}
|