/**
* @파일 설명-버튼.js
*/
'./text-track-button.js'에서 TextTrackButton 가져오기;
'../../component.js'에서 컴포넌트 가져오기;
import * as Fn from '../../utils/fn.js';
/**
* 설명 전환 및 선택을 위한 버튼 구성 요소
*
* @extends TextTrackButton
*/
클래스 DescriptionsButton은 TextTrackButton을 확장합니다 {
/**
* 이 클래스의 인스턴스를 만듭니다.
*
* @param {플레이어} 플레이어
* 이 클래스가 연결되어야 하는 `Player`.
*
* @param {객체} [옵션]
* 플레이어 옵션의 키/값 저장소.
*
* @param {Component~ReadyCallback} [준비]
* 이 구성 요소가 준비되었을 때 호출할 함수입니다.
*/
생성자(플레이어, 옵션, 준비) {
super(플레이어, 옵션, 준비);
const 트랙 = player.textTracks();
const changeHandler = Fn.bind(this, this.handleTracksChange);
tracks.addEventListener('변경', changeHandler);
this.on('처리', function() {
tracks.removeEventListener('변경', changeHandler);
});
}
/**
* 텍스트 트랙 변경 처리
*
* @param {EventTarget~Event} 이벤트
* 이 기능을 실행하게 만든 이벤트
*
* @listens TextTrackList#change
*/
handleTracksChange(이벤트) {
const 트랙 = this.player().textTracks();
비활성화하자 = 거짓;
// 다른 종류의 트랙이 표시되는지 확인
for (let i = 0, l = 트랙 길이; i < 엘; i++) {
const 트랙 = 트랙[i];
if (track.kind !== this.kind_ && track.mode === '표시') {
비활성화 = 참;
부서지다;
}
}
// 다른 트랙이 표시되면 이 메뉴 버튼을 비활성화합니다.
if (비활성화) {
this.disable();
} else {
this.enable();
}
}
/**
* 기본 DOM `className`을 빌드합니다.
*
* @return {문자열}
* 이 개체의 DOM `className`입니다.
*/
buildCSSClass() {
`vjs-descriptions-button ${super.buildCSSClass()}` 반환;
}
buildWrapperCSSClass() {
`vjs-descriptions-button ${super.buildWrapperCSSClass()}` 반환;
}
}
/**
* 이 메뉴와 연결하기 위해 찾을 TextTrack의 `종류`.
*
* @유형 {문자열}
* @사적인
*/
DescriptionsButton.prototype.kind_ = '설명';
/**
* `DescriptionsButton` 컨트롤 위에 표시되어야 하는 텍스트입니다. 현지화를 위해 추가되었습니다.
*
* @유형 {문자열}
* @사적인
*/
DescriptionsButton.prototype.controlText_ = '설명';
Component.registerComponent('DescriptionsButton', DescriptionsButton);
기본 DescriptionsButton 내보내기;