@@ -0,0 +1,38 @@
|
||||
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);
|
||||
},
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user