/**
* @archivo html-track-element-list.js
* /
/**
* La lista actual de {@link HtmlTrackElement}s.
* /
clase HtmlTrackElementList {
/**
* Crear una instancia de esta clase.
*
* @param {HtmlTrackElement[]} [pistas=[]]
* Una lista de `HtmlTrackElement` para instanciar la lista.
* /
constructor(trackElements = []) {
this.trackElements_ = [];
/**
* @memberof HtmlTrackElementList
* @miembro {número} longitud
* El número actual de 'Pistas' en este Trackist.
* @instancia
* /
Object.defineProperty(esto, 'longitud', {
conseguir() {
devuelve this.trackElements_.length;
}
});
for (sea i = 0, longitud = trackElements.longitud; i < longitud; i++) {
this.addTrackElement_(trackElements[i]);
}
}
/**
* Agregue un {@link HtmlTrackElement} a `HtmlTrackElementList`
*
* @param {HtmlTrackElement} trackElement
* El elemento de seguimiento para agregar a la lista.
*
* @privado
* /
addTrackElement_(trackElement) {
const index = this.trackElements_.length;
if (!('' + índice en esto)) {
Object.defineProperty(este, índice, {
conseguir() {
devuelve esto.trackElements_[índice];
}
});
}
// No agregue elementos duplicados
if (this.trackElements_.indexOf(trackElement) === -1) {
this.trackElements_.push(trackElement);
}
}
/**
* Obtener un {@link HtmlTrackElement} de `HtmlTrackElementList` dado un
* {@enlace TextTrack}.
*
* @param {TextTrack} pista
* La pista asociada con un elemento de pista.
*
* @return {HtmlTrackElement|indefinido}
* El elemento de la pista que se encontró o no se definió.
*
* @privado
* /
getTrackElementByTrack_(pista) {
vamos trackElement_;
for (sea i = 0, longitud = this.trackElements_.length; i < longitud; i++) {
if (pista === this.trackElements_[i].pista) {
trackElement_ = this.trackElements_[i];
romper;
}
}
volver trackElement_;
}
/**
* Eliminar un {@link HtmlTrackElement} de `HtmlTrackElementList`
*
* @param {HtmlTrackElement} trackElement
* El elemento de pista a eliminar de la lista.
*
* @privado
* /
removeTrackElement_(trackElement) {
for (sea i = 0, longitud = this.trackElements_.length; i < longitud; i++) {
if (trackElement === this.trackElements_[i]) {
if (this.trackElements_[i].track && typeof this.trackElements_[i].track.off === 'función') {
este.trackElements_[i].track.off();
}
if (tipo de this.trackElements_[i].off === 'función') {
este.trackElements_[i].off();
}
este.trackElements_.splice(i, 1);
romper;
}
}
}
}
exportar HtmlTrackElementList predeterminado;