/**
* @file off-text-track-menu-item.js
*/
'./text-track-menu-item.js'에서 TextTrackMenuItem 가져오기;
'../../component.js'에서 컴포넌트 가져오기;
/**
* 특정 유형의 텍스트 트랙을 전환하기 위한 특수 메뉴 항목
*
* @extends TextTrackMenuItem
*/
클래스 OffTextTrackMenuItem은 TextTrackMenuItem {을 확장합니다.
/**
* 이 클래스의 인스턴스를 만듭니다.
*
* @param {플레이어} 플레이어
* 이 클래스가 연결되어야 하는 `Player`.
*
* @param {객체} [옵션]
* 플레이어 옵션의 키/값 저장소.
*/
생성자(플레이어, 옵션) {
// 유사 트랙 정보 생성
// options['종류'] 필요
옵션.트랙 = {
플레이어,
// 더 이상 트랙 자체에 `kind` 또는 `kinds`를 저장할 필요가 없습니다.
// 이제 모든 인스턴스의 `kinds` 속성에 저장되기 때문입니다.
// TextTrackMenuItem이지만 이전 버전과의 호환성을 위해 유지됩니다.
종류: options.kind,
종류: options.kinds,
기본값: 거짓,
모드: '비활성화'
};
if (!options.kinds) {
options.kinds = [옵션.종류];
}
if (옵션.레이블) {
options.track.label = 옵션.라벨;
} else {
options.track.label = options.kinds.join(' and ') + ' 꺼짐';
}
// MenuItem을 선택할 수 있습니다.
options.selectable = 참;
// MenuItem은 multiSelectable이 아닙니다(즉, 한 번에 하나만 "선택됨"으로 표시할 수 있음).
options.multiSelectable = 거짓;
super(플레이어, 옵션);
}
/**
* 텍스트 트랙 변경 처리
*
* @param {EventTarget~Event} 이벤트
* 이 기능을 실행하게 만든 이벤트
*/
handleTracksChange(이벤트) {
const 트랙 = this.player().textTracks();
let shouldBeSelected = true;
for (let i = 0, l = 트랙 길이; i < 엘; i++) {
const 트랙 = 트랙[i];
if ((this.options_.kinds.indexOf(track.kind) > -1) && track.mode === '표시') {
shouldBeSelected = 거짓;
부서지다;
}
}
// 불필요한 selected() 호출을 방지합니다.
// 추가된 제어 텍스트를 불필요하게 읽는 스크린 리더
if (shouldBeSelected !== this.isSelected_) {
this.selected(shouldBeSelected);
}
}
handleSelectedLanguageChange(이벤트) {
const 트랙 = this.player().textTracks();
let allHidden = true;
for (let i = 0, l = 트랙 길이; i < 엘; i++) {
const 트랙 = 트랙[i];
if ((['캡션', '설명', '자막'].indexOf(트랙.종류) > -1) && track.mode === '표시') {
allHidden = 거짓;
부서지다;
}
}
if (allHidden) {
this.player_.cache_.selectedLanguage = {
활성화: 거짓
};
}
}
}
Component.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);
기본 OffTextTrackMenuItem 내보내기;