MCPcopy Index your code
hub / github.com/JavaCS3/xterm-player / PlayerView

Class PlayerView

src/ui/PlayerView.ts:7–141  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5import Icons from './Icons'
6
7export class PlayerView implements IComponent {
8 public readonly element: HTMLElement
9 public readonly videoWrapper: HTMLElement
10 public readonly controlBar: ControlBarView = new ControlBarView(this._player)
11
12 private _bigButton: HTMLElement
13 private _spinner: HTMLElement
14
15 private _state: IPlayerState = 'Paused'
16
17 constructor(private _player: XtermPlayer) {
18 const el = this.element = $div({ class: 'xp', attrs: { tabindex: '0' } },
19 this.videoWrapper = $div({ class: 'video-wrapper' }),
20 this._bigButton = $div({ class: 'xp-overlay xp-overlay-center xp-big-button' }),
21 this._spinner = $div({ class: 'xp-overlay xp-overlay-center sk-flow' },
22 $div({ class: 'sk-flow-dot' }),
23 $div({ class: 'sk-flow-dot' }),
24 $div({ class: 'sk-flow-dot' }),
25 ),
26 this.controlBar.element
27 )
28 addDisposableDomListener(el, 'mouseenter', () => {
29 if (this.state === 'Running') {
30 this._showControlBar()
31 }
32 })
33 addDisposableDomListener(el, 'mouseleave', () => {
34 if (this.state === 'Running') {
35 this._hideControlBar()
36 }
37 })
38 addDisposableDomListener(el, 'keydown', (ev: KeyboardEvent) => {
39 ev.preventDefault()
40 switch (ev.code) {
41 case 'Space':
42 this._togglePlayPauseReplay()
43 break
44 case 'ArrowRight':
45 this._player.currentTime += 3000
46 break
47 case 'ArrowLeft':
48 this._player.currentTime -= 3000
49 break
50 case 'ArrowUp':
51 this._player.volume += 0.1
52 break
53 case 'ArrowDown':
54 this._player.volume -= 0.1
55 break
56 }
57 }, true)
58 addDisposableDomListener(this._bigButton, 'click', this._togglePlayPauseReplay.bind(this))
59
60 this.controlBar.onPlaybackButtonClick(this._togglePlayPauseReplay.bind(this))
61 this.controlBar.onSeek((percent: number) => {
62 if (this.state !== 'Loading') {
63 this._player.currentTime = percent * this._player.duration
64 }

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected