import Player, { PlayerPlugin } from '@oplayer/core' const ICON = `` class AirPlay implements PlayerPlugin { public name = 'oplayer-plugin-airplay' public version = __VERSION__ public player: Player constructor() {} apply(player: Player) { if (!this.canPlay()) return this.player = player //https://developer.apple.com/documentation/webkitjs/adding_an_airplay_button_to_your_safari_media_controls player.$video.addEventListener('webkitplaybacktargetavailabilitychanged', (e: any) => { if (e.availability === 'available') { this.registerUI() } else { this.unregisterUI() } }) return this } canPlay() { return !!(globalThis as any).WebKitPlaybackTargetAvailabilityEvent } start() { const $media: any = this.player.$video if ($media.webkitShowPlaybackTargetPicker) { $media.webkitShowPlaybackTargetPicker() } } registerUI() { if (!this.player.context.ui) return const { menu, icons } = this.player.context.ui menu?.register({ name: this.player.locales.get('AirPlay'), position: 'top', icon: icons.airplay || ICON, onClick: () => this.start() }) } unregisterUI() { this.player.context.ui?.menu?.unregister('AirPlay') } } export default AirPlay