UNPKG

bitmovin-player-ui

Version:
73 lines (63 loc) 2.63 kB
import { SubtitleSettingSelectBox, SubtitleSettingSelectBoxConfig } from './SubtitleSettingSelectBox'; import { UIInstanceManager } from '../../../UIManager'; import { PlayerAPI } from 'bitmovin-player'; import { i18n } from '../../../localization/i18n'; /** * A select box providing a selection of different character edge. * * @category Components */ export class CharacterEdgeSelectBox extends SubtitleSettingSelectBox { constructor(config: SubtitleSettingSelectBoxConfig) { super(config); this.config = this.mergeConfig( config, { cssClasses: ['ui-subtitlesettingscharacteredgeselectbox'], }, this.config, ); } configure(player: PlayerAPI, uimanager: UIInstanceManager): void { super.configure(player, uimanager); this.addItem(null, i18n.getLocalizer('default')); this.addItem('raised', i18n.getLocalizer('settings.subtitles.characterEdge.raised')); this.addItem('depressed', i18n.getLocalizer('settings.subtitles.characterEdge.depressed')); this.addItem('uniform', i18n.getLocalizer('settings.subtitles.characterEdge.uniform')); this.addItem('dropshadowed', i18n.getLocalizer('settings.subtitles.characterEdge.dropshadowed')); const setColorAndEdgeType = () => { if (this.settingsManager.characterEdge.isSet() && this.settingsManager.characterEdgeColor.isSet()) { this.toggleOverlayClass( 'characteredge-' + this.settingsManager.characterEdge.value + '-' + this.settingsManager.characterEdgeColor.value, ); } else { this.toggleOverlayClass(null); } }; this.onItemSelectionChanged.subscribe((sender, key: string) => { this.settingsManager.characterEdge.value = key; }); this.settingsManager.characterEdge.onChanged.subscribe((sender, property) => { // Edge type and color go together, so we need to... if (!this.settingsManager.characterEdge.isSet()) { // ... clear the color when the edge type is not set this.settingsManager.characterEdgeColor.clear(); } else if (!this.settingsManager.characterEdgeColor.isSet()) { // ... set a color when the edge type is set this.settingsManager.characterEdgeColor.value = 'black'; } this.selectItem(property.value); setColorAndEdgeType(); }); this.settingsManager.characterEdgeColor.onChanged.subscribe(() => { setColorAndEdgeType(); }); // Load initial value if (this.settingsManager.characterEdge.isSet()) { this.selectItem(this.settingsManager.characterEdge.value); } } }