/**
* @file text-track-list.js
*/
import TrackList from './track-list' ;
/**
* La liste actuelle des {@link TextTrack} d'un fichier média.
*
* @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist}
* @extends TrackList
*/
class TextTrackList extends TrackList {
/**
* Ajouter un {@link TextTrack} à la `TextTrackList`
*
* @param {TextTrack} track
* La piste de texte à ajouter à la liste.
*
* @fires TrackList#addtrack
*/
addTrack(track) {
super.addTrack(track) ;
if (!this.queueChange_) {
this.queueChange_ = () => this.queueTrigger('change') ;
}
if (!this.triggerSelectedlanguagechange) {
this.triggerSelectedlanguagechange_ = () => this.trigger('selectedlanguagechange') ;
}
/**
* @listens TextTrack#modechange
* @fires TrackList#change
*/
track.addEventListener('modechange', this.queueChange_) ;
const nonLanguageTextTrackKind = ['metadata', 'chapters'] ;
if (nonLanguageTextTrackKind.indexOf(track.kind) === -1) {
track.addEventListener('modechange', this.triggerSelectedlanguagechange_) ;
}
}
removeTrack(rtrack) {
super.removeTrack(rtrack) ;
// supprimer manuellement les gestionnaires d'événements que nous avons ajoutés
if (rtrack.removeEventListener) {
if (this.queueChange_) {
rtrack.removeEventListener('modechange', this.queueChange_) ;
}
if (this.selectedlanguagechange_) {
rtrack.removeEventListener('modechange', this.triggerSelectedlanguagechange_) ;
}
}
}
}
export default TextTrackList ;