UNPKG

@byomakase/omakase-player

Version:

## Omakase Player - Open source JavaScript framework for building frame accurate video experiences

173 lines (172 loc) • 15 kB
import { OmpBroadcastChannelActionsMap } from '../common/omp-broadcast-channel'; import { VideoControllerApi } from './video-controller-api'; import { UnwrapObservable } from '../types'; import { Observable } from 'rxjs'; type ExtractType<T, K extends keyof T> = T[K]; type ExtractReturnType<T, K extends keyof T> = T[K] extends (...args: any[]) => infer R ? R : never; type ExtractParameterTypes<T, K extends keyof T> = T[K] extends (...args: infer A) => any ? A : never; type ExtractPropertyTypes<T, K extends keyof T> = { requestType: UnwrapObservable<ExtractType<T, K>>; responseType: ExtractType<T, K>; }; type ExtractMethodTypes<T, K extends keyof T> = { requestType: ExtractParameterTypes<T, K>; responseType: ExtractReturnType<T, K>; }; export type HandshakeChannelActionsMap = OmpBroadcastChannelActionsMap<{ 'DetachedControllerProxy.connect': { requestType: { proxyId: string; }; responseType: { proxyId: string; messageChannelId: string; }; }; 'DetachedControllerProxy.connected': { requestType: { proxyId: string; messageChannelId: string; }; responseType: { proxyId: string; }; }; 'DetachedControllerProxy.heartbeat': { requestType: { proxyId: string; heartbeat: number; }; responseType: { proxyId: string; heartbeat: number; }; }; }>; export type FlattenObservableToVoid<T> = T extends Observable<infer U> ? Observable<void> : T; export type MessageChannelActionsMap = OmpBroadcastChannelActionsMap<{ 'VideoControllerApi.onVideoLoading$': ExtractPropertyTypes<VideoControllerApi, 'onVideoLoading$'>; 'VideoControllerApi.onVideoLoaded$': ExtractPropertyTypes<VideoControllerApi, 'onVideoLoaded$'>; 'VideoControllerApi.onPlay$': ExtractPropertyTypes<VideoControllerApi, 'onPlay$'>; 'VideoControllerApi.onPause$': ExtractPropertyTypes<VideoControllerApi, 'onPause$'>; 'VideoControllerApi.onVideoTimeChange$': ExtractPropertyTypes<VideoControllerApi, 'onVideoTimeChange$'>; 'VideoControllerApi.onSeeking$': ExtractPropertyTypes<VideoControllerApi, 'onSeeking$'>; 'VideoControllerApi.onSeeked$': ExtractPropertyTypes<VideoControllerApi, 'onSeeked$'>; 'VideoControllerApi.onBuffering$': ExtractPropertyTypes<VideoControllerApi, 'onBuffering$'>; 'VideoControllerApi.onEnded$': ExtractPropertyTypes<VideoControllerApi, 'onEnded$'>; 'VideoControllerApi.onAudioSwitched$': ExtractPropertyTypes<VideoControllerApi, 'onAudioSwitched$'>; 'VideoControllerApi.onAudioUpdated$': ExtractPropertyTypes<VideoControllerApi, 'onAudioUpdated$'>; 'VideoControllerApi.onAudioOutputVolumeChange$': ExtractPropertyTypes<VideoControllerApi, 'onAudioOutputVolumeChange$'>; 'VideoControllerApi.onVideoWindowPlaybackStateChange$': ExtractPropertyTypes<VideoControllerApi, 'onVideoWindowPlaybackStateChange$'>; 'VideoControllerApi.onVideoError$': ExtractPropertyTypes<VideoControllerApi, 'onVideoError$'>; 'VideoControllerApi.onVolumeChange$': ExtractPropertyTypes<VideoControllerApi, 'onVolumeChange$'>; 'VideoControllerApi.onFullscreenChange$': ExtractPropertyTypes<VideoControllerApi, 'onFullscreenChange$'>; 'VideoControllerApi.onVideoSafeZoneChange$': ExtractPropertyTypes<VideoControllerApi, 'onVideoSafeZoneChange$'>; 'VideoControllerApi.onPlaybackRateChange$': ExtractPropertyTypes<VideoControllerApi, 'onPlaybackRateChange$'>; 'VideoControllerApi.onHelpMenuChange$': ExtractPropertyTypes<VideoControllerApi, 'onHelpMenuChange$'>; 'VideoControllerApi.onPlaybackState$': ExtractPropertyTypes<VideoControllerApi, 'onPlaybackState$'>; 'VideoControllerApi.onAudioLoaded$': ExtractPropertyTypes<VideoControllerApi, 'onAudioLoaded$'>; 'VideoControllerApi.onSubtitlesLoaded$': ExtractPropertyTypes<VideoControllerApi, 'onSubtitlesLoaded$'>; 'VideoControllerApi.onSubtitlesCreate$': ExtractPropertyTypes<VideoControllerApi, 'onSubtitlesCreate$'>; 'VideoControllerApi.onSubtitlesHide$': ExtractPropertyTypes<VideoControllerApi, 'onSubtitlesHide$'>; 'VideoControllerApi.onSubtitlesRemove$': ExtractPropertyTypes<VideoControllerApi, 'onSubtitlesRemove$'>; 'VideoControllerApi.onSubtitlesShow$': ExtractPropertyTypes<VideoControllerApi, 'onSubtitlesShow$'>; 'VideoControllerApi.onMainAudioChange$': ExtractPropertyTypes<VideoControllerApi, 'onMainAudioChange$'>; 'VideoControllerApi.onMainAudioPeakProcessorMessage$': ExtractPropertyTypes<VideoControllerApi, 'onMainAudioPeakProcessorMessage$'>; 'VideoControllerApi.onMainAudioInputSoloMute$': ExtractPropertyTypes<VideoControllerApi, 'onMainAudioInputSoloMute$'>; 'VideoControllerApi.onSidecarAudioCreate$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioCreate$'>; 'VideoControllerApi.onSidecarAudioLoaded$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioLoaded$'>; 'VideoControllerApi.onSidecarAudioRemove$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioRemove$'>; 'VideoControllerApi.onSidecarAudioChange$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioChange$'>; 'VideoControllerApi.onSidecarAudioVolumeChange$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioVolumeChange$'>; 'VideoControllerApi.onSidecarAudioPeakProcessorMessage$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioPeakProcessorMessage$'>; 'VideoControllerApi.onSidecarAudioInputSoloMute$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudioInputSoloMute$'>; 'VideoControllerApi.onSidecarAudiosChange$': ExtractPropertyTypes<VideoControllerApi, 'onSidecarAudiosChange$'>; 'VideoControllerApi.onThumbnailVttUrlChanged$': ExtractPropertyTypes<VideoControllerApi, 'onThumbnailVttUrlChanged$'>; 'VideoControllerApi.onActiveNamedEventStreamsChange$': ExtractPropertyTypes<VideoControllerApi, 'onActiveNamedEventStreamsChange$'>; 'VideoControllerApi.onNamedEvent$': ExtractPropertyTypes<VideoControllerApi, 'onNamedEvent$'>; 'VideoControllerApi.loadVideoInternal': ExtractMethodTypes<VideoControllerApi, 'loadVideoInternal'>; 'VideoControllerApi.loadVideo': ExtractMethodTypes<VideoControllerApi, 'loadVideo'>; 'VideoControllerApi.reloadVideo': ExtractMethodTypes<VideoControllerApi, 'reloadVideo'>; 'VideoControllerApi.setVolume': ExtractMethodTypes<VideoControllerApi, 'setVolume'>; 'VideoControllerApi.setPlaybackRate': ExtractMethodTypes<VideoControllerApi, 'setPlaybackRate'>; 'VideoControllerApi.play': ExtractMethodTypes<VideoControllerApi, 'play'>; 'VideoControllerApi.pause': ExtractMethodTypes<VideoControllerApi, 'pause'>; 'VideoControllerApi.togglePlayPause': ExtractMethodTypes<VideoControllerApi, 'togglePlayPause'>; 'VideoControllerApi.seekToFrame': ExtractMethodTypes<VideoControllerApi, 'seekToFrame'>; 'VideoControllerApi.seekFromCurrentFrame': ExtractMethodTypes<VideoControllerApi, 'seekFromCurrentFrame'>; 'VideoControllerApi.seekFromCurrentTime': ExtractMethodTypes<VideoControllerApi, 'seekFromCurrentTime'>; 'VideoControllerApi.seekPreviousFrame': ExtractMethodTypes<VideoControllerApi, 'seekPreviousFrame'>; 'VideoControllerApi.seekNextFrame': ExtractMethodTypes<VideoControllerApi, 'seekNextFrame'>; 'VideoControllerApi.seekToTime': ExtractMethodTypes<VideoControllerApi, 'seekToTime'>; 'VideoControllerApi.seekToTimecode': ExtractMethodTypes<VideoControllerApi, 'seekToTimecode'>; 'VideoControllerApi.seekToPercent': ExtractMethodTypes<VideoControllerApi, 'seekToPercent'>; 'VideoControllerApi.seekToEnd': ExtractMethodTypes<VideoControllerApi, 'seekToEnd'>; 'VideoControllerApi.mute': ExtractMethodTypes<VideoControllerApi, 'mute'>; 'VideoControllerApi.unmute': ExtractMethodTypes<VideoControllerApi, 'unmute'>; 'VideoControllerApi.toggleMuteUnmute': ExtractMethodTypes<VideoControllerApi, 'toggleMuteUnmute'>; 'VideoControllerApi.toggleFullscreen': ExtractMethodTypes<VideoControllerApi, 'toggleFullscreen'>; 'VideoControllerApi.appendHelpMenuGroup': ExtractMethodTypes<VideoControllerApi, 'appendHelpMenuGroup'>; 'VideoControllerApi.prependHelpMenuGroup': ExtractMethodTypes<VideoControllerApi, 'prependHelpMenuGroup'>; 'VideoControllerApi.clearHelpMenuGroups': ExtractMethodTypes<VideoControllerApi, 'clearHelpMenuGroups'>; 'VideoControllerApi.addSafeZone': ExtractMethodTypes<VideoControllerApi, 'addSafeZone'>; 'VideoControllerApi.removeSafeZone': ExtractMethodTypes<VideoControllerApi, 'removeSafeZone'>; 'VideoControllerApi.clearSafeZones': ExtractMethodTypes<VideoControllerApi, 'clearSafeZones'>; 'VideoControllerApi.createSubtitlesVttTrack': ExtractMethodTypes<VideoControllerApi, 'createSubtitlesVttTrack'>; 'VideoControllerApi.hideSubtitlesTrack': ExtractMethodTypes<VideoControllerApi, 'hideSubtitlesTrack'>; 'VideoControllerApi.removeAllSubtitlesTracks': ExtractMethodTypes<VideoControllerApi, 'removeAllSubtitlesTracks'>; 'VideoControllerApi.removeSubtitlesTrack': ExtractMethodTypes<VideoControllerApi, 'removeSubtitlesTrack'>; 'VideoControllerApi.showSubtitlesTrack': ExtractMethodTypes<VideoControllerApi, 'showSubtitlesTrack'>; 'VideoControllerApi.setActiveAudioTrack': ExtractMethodTypes<VideoControllerApi, 'setActiveAudioTrack'>; 'VideoControllerApi.updateAudioTrack': ExtractMethodTypes<VideoControllerApi, 'updateAudioTrack'>; 'VideoControllerApi.activateMainAudio': ExtractMethodTypes<VideoControllerApi, 'activateMainAudio'>; 'VideoControllerApi.deactivateMainAudio': ExtractMethodTypes<VideoControllerApi, 'deactivateMainAudio'>; 'VideoControllerApi.createMainAudioRouter': ExtractMethodTypes<VideoControllerApi, 'createMainAudioRouter'>; 'VideoControllerApi.setAudioOutputVolume': ExtractMethodTypes<VideoControllerApi, 'setAudioOutputVolume'>; 'VideoControllerApi.setAudioOutputMuted': ExtractMethodTypes<VideoControllerApi, 'setAudioOutputMuted'>; 'VideoControllerApi.toggleAudioOutputMuteUnmute': ExtractMethodTypes<VideoControllerApi, 'toggleAudioOutputMuteUnmute'>; 'VideoControllerApi.muteAudioOutput': ExtractMethodTypes<VideoControllerApi, 'muteAudioOutput'>; 'VideoControllerApi.unmuteAudioOutput': ExtractMethodTypes<VideoControllerApi, 'unmuteAudioOutput'>; 'VideoControllerApi.createMainAudioPeakProcessor': { requestType: ExtractParameterTypes<VideoControllerApi, 'createMainAudioPeakProcessor'>; responseType: FlattenObservableToVoid<ExtractReturnType<VideoControllerApi, 'createMainAudioPeakProcessor'>>; }; 'VideoControllerApi.updateMainAudioRouterConnections': ExtractMethodTypes<VideoControllerApi, 'updateMainAudioRouterConnections'>; 'VideoControllerApi.toggleMainAudioRouterSolo': ExtractMethodTypes<VideoControllerApi, 'toggleMainAudioRouterSolo'>; 'VideoControllerApi.toggleMainAudioRouterMute': ExtractMethodTypes<VideoControllerApi, 'toggleMainAudioRouterMute'>; 'VideoControllerApi.setMainAudioRouterInitialRoutingConnections': ExtractMethodTypes<VideoControllerApi, 'setMainAudioRouterInitialRoutingConnections'>; 'VideoControllerApi.setMainAudioEffectsGraphs': ExtractMethodTypes<VideoControllerApi, 'setMainAudioEffectsGraphs'>; 'VideoControllerApi.removeMainAudioEffectsGraphs': ExtractMethodTypes<VideoControllerApi, 'removeMainAudioEffectsGraphs'>; 'VideoControllerApi.setMainAudioEffectsParams': ExtractMethodTypes<VideoControllerApi, 'setMainAudioEffectsParams'>; 'VideoControllerApi.createSidecarAudioTrack': ExtractMethodTypes<VideoControllerApi, 'createSidecarAudioTrack'>; 'VideoControllerApi.createSidecarAudioTracks': ExtractMethodTypes<VideoControllerApi, 'createSidecarAudioTracks'>; 'VideoControllerApi.removeSidecarAudioTracks': ExtractMethodTypes<VideoControllerApi, 'removeSidecarAudioTracks'>; 'VideoControllerApi.activateSidecarAudioTracks': ExtractMethodTypes<VideoControllerApi, 'activateSidecarAudioTracks'>; 'VideoControllerApi.deactivateSidecarAudioTracks': ExtractMethodTypes<VideoControllerApi, 'deactivateSidecarAudioTracks'>; 'VideoControllerApi.setSidecarVolume': ExtractMethodTypes<VideoControllerApi, 'setSidecarVolume'>; 'VideoControllerApi.setSidecarMuted': ExtractMethodTypes<VideoControllerApi, 'setSidecarMuted'>; 'VideoControllerApi.muteSidecar': ExtractMethodTypes<VideoControllerApi, 'muteSidecar'>; 'VideoControllerApi.unmuteSidecar': ExtractMethodTypes<VideoControllerApi, 'unmuteSidecar'>; 'VideoControllerApi.removeAllSidecarAudioTracks': ExtractMethodTypes<VideoControllerApi, 'removeAllSidecarAudioTracks'>; 'VideoControllerApi.createSidecarAudioRouter': ExtractMethodTypes<VideoControllerApi, 'createSidecarAudioRouter'>; 'VideoControllerApi.setSidecarAudioRouterInitialRoutingConnections': ExtractMethodTypes<VideoControllerApi, 'setSidecarAudioRouterInitialRoutingConnections'>; 'VideoControllerApi.updateSidecarAudioRouterConnections': ExtractMethodTypes<VideoControllerApi, 'updateSidecarAudioRouterConnections'>; 'VideoControllerApi.toggleSidecarAudioRouterSolo': ExtractMethodTypes<VideoControllerApi, 'toggleSidecarAudioRouterSolo'>; 'VideoControllerApi.toggleSidecarAudioRouterMute': ExtractMethodTypes<VideoControllerApi, 'toggleSidecarAudioRouterMute'>; 'VideoControllerApi.setSidecarAudioEffectsGraph': ExtractMethodTypes<VideoControllerApi, 'setSidecarAudioEffectsGraph'>; 'VideoControllerApi.removeSidecarAudioEffectsGraphs': ExtractMethodTypes<VideoControllerApi, 'removeSidecarAudioEffectsGraphs'>; 'VideoControllerApi.setSidecarAudioEffectsParams': ExtractMethodTypes<VideoControllerApi, 'setSidecarAudioEffectsParams'>; 'VideoControllerApi.createSidecarAudioPeakProcessor': { requestType: ExtractParameterTypes<VideoControllerApi, 'createSidecarAudioPeakProcessor'>; responseType: FlattenObservableToVoid<ExtractReturnType<VideoControllerApi, 'createSidecarAudioPeakProcessor'>>; }; 'VideoControllerApi.exportMainAudioTrackToSidecar': ExtractMethodTypes<VideoControllerApi, 'exportMainAudioTrackToSidecar'>; 'VideoControllerApi.exportMainAudioTracksToSidecar': ExtractMethodTypes<VideoControllerApi, 'exportMainAudioTracksToSidecar'>; 'VideoControllerApi.loadThumbnailVttUrl': ExtractMethodTypes<VideoControllerApi, 'loadThumbnailVttUrl'>; 'VideoControllerApi.updateActiveNamedEventStreams': ExtractMethodTypes<VideoControllerApi, 'updateActiveNamedEventStreams'>; 'VideoControllerApi.getActiveNamedEventStreams': ExtractMethodTypes<VideoControllerApi, 'getActiveNamedEventStreams'>; 'VideoControllerApi.loadBlackVideo': ExtractMethodTypes<VideoControllerApi, 'loadBlackVideo'>; 'VideoControllerApi.extractVideoKeyframe': ExtractMethodTypes<VideoControllerApi, 'extractVideoKeyframe'>; 'VideoControllerApi.attachVideoWindow': ExtractMethodTypes<VideoControllerApi, 'attachVideoWindow'>; }>; export {};