11import { effect , peek , signal } from 'maverick.js' ;
2- import { DOMEvent , isKeyboardClick , listenEvent } from 'maverick.js/std' ;
2+ import { isKeyboardClick , listenEvent } from 'maverick.js/std' ;
33
44import { isHTMLMediaElement } from '../../providers/type-check' ;
55import type { MediaContext } from '../api/media-context' ;
@@ -80,7 +80,7 @@ export class MediaKeyboardController extends MediaPlayerController {
8080 event . preventDefault ( ) ;
8181 event . stopPropagation ( ) ;
8282 if ( this . _timeSlider ) {
83- this . _forwardTimeKeyboardEvent ( event ) ;
83+ this . _forwardTimeKeyboardEvent ( event , method === 'seekForward' ) ;
8484 this . _timeSlider = null ;
8585 } else {
8686 this . _media . remote . seek ( this . _seekTotal ! , event ) ;
@@ -90,7 +90,13 @@ export class MediaKeyboardController extends MediaPlayerController {
9090
9191 if ( method ?. startsWith ( 'volume' ) ) {
9292 const volumeSlider = this . el ! . querySelector ( '[data-media-volume-slider]' ) ;
93- volumeSlider ?. dispatchEvent ( new DOMEvent < void > ( 'keyup' , { trigger : event } ) ) ;
93+ volumeSlider ?. dispatchEvent (
94+ new KeyboardEvent ( 'keyup' , {
95+ key : method === 'volumeUp' ? 'Up' : 'Down' ,
96+ shiftKey : event . shiftKey ,
97+ trigger : event ,
98+ } as KeyboardEventInit ) ,
99+ ) ;
94100 }
95101 }
96102
@@ -124,13 +130,19 @@ export class MediaKeyboardController extends MediaPlayerController {
124130 switch ( method ) {
125131 case 'seekForward' :
126132 case 'seekBackward' :
127- this . _seeking ( event , method ) ;
133+ this . _seeking ( event , method , method === 'seekForward' ) ;
128134 break ;
129135 case 'volumeUp' :
130136 case 'volumeDown' :
131137 const volumeSlider = this . el ! . querySelector ( '[data-media-volume-slider]' ) ;
132138 if ( volumeSlider ) {
133- volumeSlider . dispatchEvent ( new DOMEvent < void > ( 'keydown' , { trigger : event } ) ) ;
139+ volumeSlider . dispatchEvent (
140+ new KeyboardEvent ( 'keydown' , {
141+ key : method === 'volumeUp' ? 'Up' : 'Down' ,
142+ shiftKey : event . shiftKey ,
143+ trigger : event ,
144+ } as KeyboardEventInit ) ,
145+ ) ;
134146 } else {
135147 const value = event . shiftKey ? 0.1 : 0.05 ;
136148 this . _media . remote . changeVolume (
@@ -187,15 +199,21 @@ export class MediaKeyboardController extends MediaPlayerController {
187199 }
188200
189201 private _timeSlider : Element | null = null ;
190- private _forwardTimeKeyboardEvent ( event : KeyboardEvent ) {
191- this . _timeSlider ?. dispatchEvent ( new DOMEvent < void > ( event . type , { trigger : event } ) ) ;
202+ private _forwardTimeKeyboardEvent ( event : KeyboardEvent , forward : boolean ) {
203+ this . _timeSlider ?. dispatchEvent (
204+ new KeyboardEvent ( event . type , {
205+ key : ! forward ? 'Left' : 'Right' ,
206+ shiftKey : event . shiftKey ,
207+ trigger : event ,
208+ } as KeyboardEventInit ) ,
209+ ) ;
192210 }
193211
194- private _seeking ( event : KeyboardEvent , type : string ) {
212+ private _seeking ( event : KeyboardEvent , type : string , forward : boolean ) {
195213 if ( ! this . $state . canSeek ( ) ) return ;
196214 if ( ! this . _timeSlider ) this . _timeSlider = this . el ! . querySelector ( '[data-media-time-slider]' ) ;
197215 if ( this . _timeSlider ) {
198- this . _forwardTimeKeyboardEvent ( event ) ;
216+ this . _forwardTimeKeyboardEvent ( event , forward ) ;
199217 } else {
200218 this . _media . remote . seeking ( this . _calcSeekAmount ( event , type ) , event ) ;
201219 }
0 commit comments