/**
* @Datei track.js
* /
import * as Guid from '../utils/guid.js';
import EventTarget from '../event-target';
/**
* Eine Track-Klasse, die die gesamte gemeinsame Funktionalität für {@link AudioTrack} enthält,
* {@link VideoTrack}, und {@link TextTrack}.
*
* > Anmerkung: Diese Klasse sollte nicht direkt verwendet werden
*
* @siehe {@link https://html.spec.whatwg.org/multipage/embedded-content.html}
* @extends EventTarget
* @Abstrakt
* /
class Track extends EventTarget {
/**
* Erstellen Sie eine Instanz dieser Klasse.
*
* @param {Object} [options={}]
* Objekt der Optionsnamen und -werte
*
* @param {string} [options.kind='']
* Ein gültiger Typ für die Art der Spur, die Sie erstellen.
*
* @param {string} [options.id='vjs_track_' + Guid.newGUID()]
* Eine eindeutige ID für diesen AudioTrack.
*
* @param {string} [options.label='']
* Die Menübezeichnung für diesen Titel.
*
* @param {string} [options.language='']
* Ein gültiger zweistelliger Sprachcode.
*
* @Abstrakt
* /
constructor(options = {}) {
super();
const trackProps = {
id: options.id || 'vjs_track_' + Guid.newGUID(),
kind: options.kind || '',
sprache: options.language || ''
};
let label = options.label || '';
/**
* @MitgliedderSpur
* @member {string} id
* Die ID dieses Titels. Kann nach der Erstellung nicht geändert werden.
* @Instanz
*
* @readonly
* /
/**
* @MitgliedderSpur
* @member {string} kind
* Die Art von Track, die dies ist. Kann nach der Erstellung nicht geändert werden.
* @Instanz
*
* @readonly
* /
/**
* @MitgliedderSpur
* @member {string} Sprache
* Der aus zwei Buchstaben bestehende Sprachcode für diesen Titel. Kann nicht geändert werden nach
* erstellung.
* @Instanz
*
* @readonly
* /
for (const key in trackProps) {
Object.defineProperty(this, key, {
get() {
return trackProps[key];
},
set() {}
});
}
/**
* @MitgliedderSpur
* @member {string} label
* Die Bezeichnung dieses Titels. Kann nach der Erstellung nicht geändert werden.
* @Instanz
*
* @fires Track#labelchange
* /
Object.defineProperty(this, 'label', {
get() {
rücksendeetikett;
},
set(newLabel) {
if (newLabel !== label) {
label = newLabel;
/**
* Ein Ereignis, das ausgelöst wird, wenn sich das Label auf dieser Spur ändert.
*
* > Anmerkung: Dies ist nicht Teil der Spezifikation!
*
* @event Track#labelchange
* @Typ {EventTarget~Event}
* /
this.trigger('labelchange');
}
}
});
}
}
standard Track exportieren;