import { PlayerOptions } from './types' ; const defaultOptions = ( ) : Partial < PlayerOptions > => ( { shortcut : true , seekStep : 10 , volumeStep : 0.1 , volumeBarLength : 100 , settings : [ 'speed' ] , contextMenus : [ 'loop' , 'pip' , 'version' ] , contextMenuToggle : true , openEdgeInIE : true , posterEnable : true , videoProps : { preload : 'auto' , playsinline : 'true' , } , } ) ; export function processOptions ( opts ? ) { const dOpts = defaultOptions ( ) ; const res = { ... dOpts , isTouch : ( ( 'ontouchstart' in window ) || ( navigator . maxTouchPoints > 0 ) || ( navigator . msMaxTouchPoints > 0 ) ) , ... opts , } as Required < PlayerOptions > ; res . controls = res . controls || [ [ 'play' , res . isTouch ? '' : 'volume' , 'time' , 'spacer' , 'airplay' , 'settings' , 'web-fullscreen' , 'fullscreen' ] , [ res . live ? '' : 'progress' ] , ] ; res . bpControls = res . bpControls || { 650 : [ [ 'play' , res . live ? '' : 'progress' , 'time' , 'web-fullscreen' , 'fullscreen' ] , [ ] , [ 'spacer' , 'airplay' , 'settings' ] , ] , } ; res . controls = res . controls . filter ( Boolean ) . map ( ( x ) => x . filter ( Boolean ) ) ; const newBpControls = { } ; Object . keys ( res . bpControls ) . filter ( ( x ) => x && ! isNaN ( Number ( x ) ) && Array . isArray ( res . bpControls [ x ] ) ) . forEach ( ( k ) => { newBpControls [ k ] = res . bpControls [ k ] . filter ( Boolean ) . map ( ( x ) => x . filter ( Boolean ) ) ; } ) ; res . bpControls = newBpControls ; return res ; }