/**
* @archivo track.js
* /
importar * como Guid desde '../utils/guid.js';
importar EventTarget desde '../event-target';
/**
* Una clase de pista que contiene toda la funcionalidad común para {@link AudioTrack},
* {@link VideoTrack} y {@link TextTrack}.
*
* > Nota: Esta clase no debe utilizarse directamente
*
* @ver {@enlace https://html.spec.whatwg.org/multipage/embedded-content.html}
* @extiende EventTarget
* @abstracto
* /
clase Pista extiende EventTarget {
/**
* Crear una instancia de esta clase.
*
* @param {Objeto} [opciones={}]
* Objeto de nombres y valores de opciones
*
* @param {cadena} [opciones.tipo='']
* Un tipo válido para el tipo de pista que está creando.
*
* @param {cadena} [opciones.id='vjs_track_' + Guid.nuevoGUID()]
* Una identificación única para esta pista de audio.
*
* @param {cadena} [opciones.etiqueta='']
* La etiqueta del menú para esta pista.
*
* @param {cadena} [opciones.idioma='']
* Un código de idioma válido de dos caracteres.
*
* @abstracto
* /
constructor(opciones = {}) {
súper();
const trackProps = {
id: opciones.id || 'vjs_track_' + Guid.nuevoGUID(),
tipo: opciones.tipo || '',
idioma: opciones.idioma || ''
};
let etiqueta = opciones.etiqueta || '';
/**
* @memberof Pista
* @miembro {cadena} id
* El id de esta pista. No se puede cambiar después de la creación.
* @instancia
*
* @solo lectura
* /
/**
* @memberof Pista
* @member {cadena} tipo
* El tipo de pista que es esta. No se puede cambiar después de la creación.
* @instancia
*
* @solo lectura
* /
/**
* @memberof Pista
* @member {cadena} idioma
* El código de idioma de dos letras para esta pista. No se puede cambiar después
* creación.
* @instancia
*
* @solo lectura
* /
para (clave const en trackProps) {
Object.defineProperty(esto, clave, {
conseguir() {
return trackProps[clave];
},
colocar() {}
});
}
/**
* @memberof Pista
* etiqueta @member {cadena}
* La etiqueta de esta pista. No se puede cambiar después de la creación.
* @instancia
*
* @fires Track#labelchange
* /
Object.defineProperty(esto, 'etiqueta', {
conseguir() {
etiqueta de devolución;
},
establecer (nueva etiqueta) {
if (nuevaEtiqueta !== etiqueta) {
etiqueta = nuevaEtiqueta;
/**
* Un evento que se activa cuando cambia la etiqueta en esta pista.
*
* > Nota: ¡Esto no forma parte de la especificación!
*
* @event Pista#cambiodeetiqueta
* @type {Objetivo del evento~Evento}
* /
this.trigger('cambio de etiqueta');
}
}
});
}
}
exportar pista predeterminada;