nplayer
Version:
powerful danmaku video player
49 lines (39 loc) • 1.31 kB
text/typescript
import {
addDisposable, addDisposableListener, Component, hide, show,
} from 'src/ts/utils';
import { Icon } from 'src/ts/features/icons';
import { Player } from 'src/ts/player';
import { EVENT } from 'src/ts/constants';
import { I18n, PAUSE, PLAY } from 'src/ts/features/i18n';
import { Tooltip } from 'src/ts/components/tooltip';
import { ControlItem } from '..';
class Play extends Component implements ControlItem {
readonly id = 'play';
private playIcon!: HTMLElement;
private pauseIcon!: HTMLElement;
tooltip!: Tooltip;
init(player: Player, _: any, tooltip: Tooltip) {
this.tooltip = tooltip;
this.playIcon = this.el.appendChild(Icon.play());
this.pauseIcon = this.el.appendChild(Icon.pause());
if (player.paused) {
this.onPause();
} else {
this.onPlay();
}
addDisposable(this, player.on(EVENT.PLAY, this.onPlay));
addDisposable(this, player.on(EVENT.PAUSE, this.onPause));
addDisposableListener(this, this.el, 'click', player.toggle);
}
private onPlay = () => {
show(this.pauseIcon);
hide(this.playIcon);
this.tooltip.html = I18n.t(PAUSE);
}
private onPause = () => {
show(this.playIcon);
hide(this.pauseIcon);
this.tooltip.html = I18n.t(PLAY);
}
}
export const playControlItem = () => new Play();