| |
| |
| |
| import MenuItem from '../../menu/menu-item.js'; |
| import Component from '../../component.js'; |
| import * as Dom from '../../utils/dom.js'; |
| |
| |
| |
| |
| |
| |
| class AudioTrackMenuItem extends MenuItem { |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| constructor(player, options) { |
| const track = options.track; |
| const tracks = player.audioTracks(); |
| |
| |
| options.label = track.label || track.language || 'Unknown'; |
| options.selected = track.enabled; |
| |
| super(player, options); |
| |
| this.track = track; |
| |
| this.addClass(`vjs-${track.kind}-menu-item`); |
| |
| const changeHandler = (...args) => { |
| this.handleTracksChange.apply(this, args); |
| }; |
| |
| tracks.addEventListener('change', changeHandler); |
| this.on('dispose', () => { |
| tracks.removeEventListener('change', changeHandler); |
| }); |
| } |
| |
| createEl(type, props, attrs) { |
| const el = super.createEl(type, props, attrs); |
| const parentSpan = el.querySelector('.vjs-menu-item-text'); |
| |
| if (['main-desc', 'description'].indexOf(this.options_.track.kind) >= 0) { |
| parentSpan.appendChild(Dom.createEl('span', { |
| className: 'vjs-icon-placeholder' |
| }, { |
| 'aria-hidden': true |
| })); |
| parentSpan.appendChild(Dom.createEl('span', { |
| className: 'vjs-control-text', |
| textContent: ' ' + this.localize('Descriptions') |
| })); |
| } |
| |
| return el; |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| handleClick(event) { |
| super.handleClick(event); |
| |
| |
| |
| this.track.enabled = true; |
| |
| |
| if (this.player_.tech_.featuresNativeAudioTracks) { |
| const tracks = this.player_.audioTracks(); |
| |
| for (let i = 0; i < tracks.length; i++) { |
| const track = tracks[i]; |
| |
| |
| if (track === this.track) { |
| continue; |
| } |
| |
| track.enabled = track === this.track; |
| } |
| } |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| handleTracksChange(event) { |
| this.selected(this.track.enabled); |
| } |
| } |
| |
| Component.registerComponent('AudioTrackMenuItem', AudioTrackMenuItem); |
| export default AudioTrackMenuItem; |