/**
* @file audio-track-menu-item.js
*/
'../../menu/menu-item.js'에서 MenuItem 가져오기;
'../../component.js'에서 컴포넌트 가져오기;
import * as Dom from '../../utils/dom.js';
/**
* {@link AudioTrack} {@link MenuItem}
*
* @extends 메뉴 항목
*/
클래스 AudioTrackMenuItem은 MenuItem {를 확장합니다.
/**
* 이 클래스의 인스턴스를 만듭니다.
*
* @param {플레이어} 플레이어
* 이 클래스가 연결되어야 하는 `Player`.
*
* @param {객체} [옵션]
* 플레이어 옵션의 키/값 저장소.
*/
생성자(플레이어, 옵션) {
const track = options.track;
const 트랙 = player.audioTracks();
// 상위 MenuItem 클래스의 init에 대한 옵션을 수정합니다.
options.label = track.label || 트랙.언어 || '알려지지 않은';
options.selected = 트랙.활성화;
super(플레이어, 옵션);
this.track = 트랙;
this.addClass(`vjs-${track.kind}-menu-item`);
const changeHandler = (...인수) => {
this.handleTracksChange.apply(this, args);
};
tracks.addEventListener('변경', changeHandler);
this.on('처리', () => {
tracks.removeEventListener('변경', changeHandler);
});
}
createEl(유형, 소품, 속성) {
const el = super.createEl(type, props, attrs);
const parentSpan = el.querySelector('.vjs-menu-item-text');
if (this.options_.track.kind === 'main-desc') {
parentSpan.appendChild(Dom.createEl('스팬', {
className: 'vjs-icon-placeholder'
}, {
'아리아 숨김': 참
}));
parentSpan.appendChild(Dom.createEl('스팬', {
className: 'vjs-control-text',
textContent: ' ' + this.localize('설명')
}));
}
반환 엘;
}
/**
* 이것은 `AudioTrackMenuItem이 "클릭"될 때 호출됩니다. {@link ClickableComponent} 참조
* 클릭이 무엇인지에 대한 자세한 정보를 보려면.
*
* @param {이벤트대상~이벤트} [이벤트]
* 이 함수를 실행하게 만든 `keydown`, `tap` 또는 `click` 이벤트
* 라고 불리는.
*
* @listens 탭
* @듣기 클릭
*/
handleClick(이벤트) {
super.handleClick(event);
// 오디오 트랙 목록은 자동으로 다른 트랙을 토글합니다.
// 꺼져 있습니다.
this.track.enabled = 참;
// 네이티브 오디오 트랙이 사용될 때 다른 트랙이 꺼져 있는지 확인하고 싶습니다.
if (this.player_.tech_.featuresNativeAudioTracks) {
const 트랙 = this.player_.audioTracks();
에 대한 (하자 i = 0; i < 트랙.길이; i++) {
const 트랙 = 트랙[i];
// 위에서 활성화했기 때문에 현재 트랙을 건너뜁니다.
if (트랙 === this.track) {
계속하다;
}
track.enabled = 트랙 === this.track;
}
}
}
/**
* 모든 {@link AudioTrack} 변경을 처리합니다.
*
* @param {이벤트대상~이벤트} [이벤트]
* 실행을 유발한 {@link AudioTrackList#change} 이벤트입니다.
*
* @listens AudioTrackList#변경
*/
handleTracksChange(이벤트) {
this.selected(this.track.enabled);
}
}
Component.registerComponent('AudioTrackMenuItem', AudioTrackMenuItem);
기본 AudioTrackMenuItem 내보내기;