import {AudioTrackKind} from './track-enums' ;
import Track from './track' ;
import merge from '../utils/merge-options' ;
/**
* Une représentation d'une seule `Piste Audio`. S'il fait partie d'une {@link AudioTrackList}
* seule une `Piste audio` de la liste sera activée à la fois.
*
* @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotrack}
* @extends Track
*/
class AudioTrack extends Track {
/**
* Créer une instance de cette classe.
*
* @param {Objet} [options={}]
* Objet de noms et de valeurs d'options
*
* @param {AudioTrack~Kind} [options.kind='']
* Un type de piste audio valide
*
* @param {string} [options.id='vjs_track_' + Guid.newGUID()]
* Un identifiant unique pour cette piste audio.
*
* @param {string} [options.label='']
* L'étiquette du menu pour cette piste.
*
* @param {string} [options.language='']
* Un code linguistique valide à deux caractères.
*
* @param {boolean} [options.enabled]
* Si cette piste est celle qui est en cours de lecture. Si cette piste fait partie de
* une {@link AudioTrackList}, une seule {@link AudioTrack} sera activée.
*/
constructor(options = {}) {
const settings = merge(options, {
genre : AudioTrackKind[options.kind] || ''
}) ;
super(settings) ;
let enabled = false ;
/**
* @membre d'AudioTrack
* @member {boolean} enabled
* Si cette `Piste Audio` est activée ou non. Lors du réglage, cela
* déclenche {@link AudioTrack#enabledchange} si l'état de enabled est modifié.
* @instance
*
* @fires VideoTrack#selectedchange
*/
Object.defineProperty(this, 'enabled', {
get() {
retour activé ;
},
set(newEnabled) {
// une valeur non valide ou inchangée
if (typeof newEnabled !== 'boolean' || newEnabled === enabled) {
retour ;
}
enabled = newEnabled ;
/**
* Un événement qui se déclenche lorsque des modifications sont apportées à cette piste. Cela permet
* l'AudioTrackList qui contient cette piste pour agir en conséquence.
*
* > Remarque : Cela ne fait pas partie de la spécification ! Les pistes natives feront l'affaire
* en interne sans qu'il y ait d'événement.
*
* @event AudioTrack#enabledchange
* @type {EventTarget~Event}
*/
this.trigger('enabledchange') ;
}
}) ;
// si l'utilisateur définit cette piste comme étant sélectionnée, alors
// fixe la valeur sélectionnée à cette valeur réelle dans le cas contraire
// nous le gardons faux
if (settings.enabled) {
this.enabled = settings.enabled ;
}
this.loaded_ = true ;
}
}
exporter la piste audio par défaut ;