/**
* @Datei html-track-element-list.js
* /
/**
* Die aktuelle Liste der {@link HtmlTrackElement}s.
* /
klasse HtmlTrackElementList {
/**
* Erstellen Sie eine Instanz dieser Klasse.
*
* @param {HtmlTrackElement[]} [tracks=[]]
* Eine Liste von `HtmlTrackElement`, mit der die Liste instanziiert wird.
* /
constructor(trackElements = []) {
this.trackElements_ = [];
/**
* @memberof HtmlTrackElementList
* @Mitglied {Anzahl} Länge
* Die aktuelle Anzahl der "Tracks" in dieser Trackliste.
* @Instanz
* /
Object.defineProperty(this, 'length', {
get() {
return this.trackElements_.length;
}
});
for (let i = 0, length = trackElements.length; i < length; i++) {
this.addTrackElement_(trackElements[i]);
}
}
/**
* Hinzufügen eines {@link HtmlTrackElement} zur `HtmlTrackElementList`
*
* @param {HtmlTrackElement} trackElement
* Das Spurelement, das der Liste hinzugefügt werden soll.
*
* @privat
* /
addTrackElement_(trackElement) {
const index = this.trackElements_.length;
if (!('' + index in this)) {
Object.defineProperty(this, index, {
get() {
return this.trackElements_[index];
}
});
}
// Keine doppelten Elemente hinzufügen
if (this.trackElements_.indexOf(trackElement) === -1) {
this.trackElements_.push(trackElement);
}
}
/**
* Holt ein {@link HtmlTrackElement} aus der `HtmlTrackElementList` mit einer
* {@link TextTrack}.
*
* @param {TextTrack} track
* Die einem Gleiselement zugeordnete Spur.
*
* @return {HtmlTrackElement|undefined}
* Das gefundene oder undefinierte Spurelement.
*
* @privat
* /
getTrackElementByTrack_(track) {
let trackElement_;
for (let i = 0, length = this.trackElements_.length; i < length; i++) {
if (track === this.trackElements_[i].track) {
trackElement_ = this.trackElements_[i];
pause;
}
}
return trackElement_;
}
/**
* Entfernen eines {@link HtmlTrackElement} aus der `HtmlTrackElementList`
*
* @param {HtmlTrackElement} trackElement
* Das Spurelement, das aus der Liste entfernt werden soll.
*
* @privat
* /
removeTrackElement_(trackElement) {
for (let i = 0, length = this.trackElements_.length; i < length; i++) {
if (trackElement === this.trackElements_[i]) {
if (this.trackElements_[i].track && typeof this.trackElements_[i].track.off === 'function') {
this.trackElements_[i].track.off();
}
if (typeof this.trackElements_[i].off === 'function') {
this.trackElements_[i].off();
}
this.trackElements_.splice(i, 1);
pause;
}
}
}
}
exportieren Standard HtmlTrackElementList;