/**
* @file text-track-list-converter.js Utilidades para capturar el estado de la pista de texto y
* recrear pistas basadas en una captura.
*
* @module text-track-list-converter
* /
/**
* Examine un solo {@link TextTrack} y devuelva un objeto javascript compatible con JSON que
* representa el estado de {@link TextTrack}.
*
* @param {TextTrack} pista
* La pista de texto a consultar.
*
* @return {Objeto}
* Una representación javascript serializable de TextTrack.
* @privado
* /
const trackToJson_ = function(pista) {
constante ret = [
'tipo', 'etiqueta', 'idioma', 'id',
'inBandMetadataTrackDispatchType', 'modo', 'origen'
].reduce((acc, prop, i) => {
si (pista [accesorio]) {
acc[prop] = track[prop];
}
retorno acc;
}, {
cues: track.cues && Array.prototype.map.call(track.cues, function(cue) {
regreso {
hora de inicio: cue.hora de inicio,
hora de finalización: cue.hora de finalización,
texto: cue.texto,
id: cue.id
};
})
});
volver ret;
};
/**
* Examine un {@link Tech} y devuelva una matriz de javascript compatible con JSON que represente el
* estado de todos los {@link TextTrack} configurados actualmente. La matriz de retorno es compatible con
* {@link text-track-list-converter:jsonToTextTracks}.
*
* @param {Tecnología} tecnología
* El objeto tecnológico a consultar
*
* @return {Array}
* Una representación javascript serializable de los {@link Tech}s
* {@enlace TextTrackList}.
* /
const textTracksToJson = función (tecnología) {
const trackEls = tech.$$('pista');
const trackObjs = Array.prototype.map.call(trackEls, (t) => t.pista);
const pistas = Array.prototype.map.call(trackEls, function(trackEl) {
const json = trackToJson_(trackEl.track);
if (pistaEl.src) {
json.src = trackEl.src;
}
devolver json;
});
return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function(track) {
volver trackObjs.indexOf(pista) === -1;
}).mapa(seguimiento aJson_));
};
/**
* Cree un conjunto de {@link TextTrack} remotos en un {@link Tech} basado en una matriz de javascript
* Objeto {@link TextTrack} representaciones.
*
* @param {Arreglo} json
* Una matriz de objetos de representación `TextTrack`, como los que serían
* producido por `textTracksToJson`.
*
* @param {Tecnología} tecnología
* La `Tecnología` para crear `TextTrack`s.
* /
const jsonToTextTracks = función (json, tecnología) {
json.forEach(función(pista) {
const addedTrack = tech.addRemoteTextTrack(track).track;
si (!pista.src && pista.cues) {
track.cues.forEach((cue) => pista añadida.addCue(cue));
}
});
volver tech.textTracks();
};
exportar por defecto {textTracksToJson, jsonToTextTracks, trackToJson_};