/**
* @file track.js
*/
import * as Guid from '../utils/guid.js' ;
import EventTarget from '../event-target' ;
/**
* Une classe Track qui contient toutes les fonctionnalités communes à {@link AudioTrack},
* {@link VideoTrack}, et {@link TextTrack}.
*
* > Remarque : Cette classe ne doit pas être utilisée directement
*
* @see {@link https://html.spec.whatwg.org/multipage/embedded-content.html}
* @extends EventTarget
* @abstract
*/
class Track extends EventTarget {
/**
* Créer une instance de cette classe.
*
* @param {Objet} [options={}]
* Objet de noms et de valeurs d'options
*
* @param {string} [options.kind='']
* Un type valide pour le type de piste que vous créez.
*
* @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.
*
* @abstract
*/
constructor(options = {}) {
super() ;
const trackProps = {
id : options.id || 'vjs_track_' + Guid.newGUID(),
kind : options.kind || '',
language : options.language || ''
};
let label = options.label || '' ;
/**
* @memberof Track
* @member {string} id
* L'identifiant de cette piste. Ne peut pas être modifié après la création.
* @instance
*
* en lecture seule
*/
/**
* @memberof Track
* @member {string} kind
* Le genre de piste que c'est. Ne peut pas être modifié après la création.
* @instance
*
* en lecture seule
*/
/**
* @memberof Track
* @member {string} language
* Code linguistique à deux lettres pour cette piste. Ne peut être modifié après
* création.
* @instance
*
* en lecture seule
*/
for (const key in trackProps) {
Object.defineProperty(this, key, {
get() {
return trackProps[key] ;
},
set() {}
}) ;
}
/**
* @memberof Track
* @member {string} label
* L'étiquette de ce titre. Ne peut pas être modifié après la création.
* @instance
*
* @fires Track#labelchange
*/
Object.defineProperty(this, 'label', {
get() {
étiquette de retour ;
},
set(newLabel) {
if (newLabel !== label) {
label = newLabel ;
/**
* Un événement qui se déclenche en cas de changement d'étiquette sur cette piste.
*
* > Remarque : Cela ne fait pas partie de la spécification !
*
* @event Track#labelchange
* @type {EventTarget~Event}
*/
this.trigger('labelchange') ;
}
}
}) ;
}
}
exporter la piste par défaut ;