1+ let brightnessOverlay = null ;
2+ let overlayTimeout = null ;
3+
4+ function showBrightnessOverlay ( value ) {
5+ if ( ! brightnessOverlay ) {
6+ brightnessOverlay = document . createElement ( 'div' ) ;
7+ brightnessOverlay . id = 'brightness-overlay' ;
8+ Object . assign ( brightnessOverlay . style , {
9+ position : 'fixed' ,
10+ top : '50%' ,
11+ left : '50%' ,
12+ transform : 'translate(-50%, -50%)' ,
13+ backgroundColor : 'rgba(0, 0, 0, 0.7)' ,
14+ color : 'white' ,
15+ padding : '10px 20px' ,
16+ borderRadius : '5px' ,
17+ zIndex : '10000' ,
18+ opacity : '0' ,
19+ transition : 'opacity 0.3s ease-in-out' ,
20+ pointerEvents : 'none' , // Allow clicks to pass through
21+ fontSize : '2em'
22+ } ) ;
23+ document . body . appendChild ( brightnessOverlay ) ;
24+ }
25+
26+ brightnessOverlay . textContent = `Video Brightness: ${ Math . round ( value * 100 ) } %` ;
27+ brightnessOverlay . style . opacity = '1' ;
28+
29+ if ( overlayTimeout ) {
30+ clearTimeout ( overlayTimeout ) ;
31+ }
32+
33+ overlayTimeout = setTimeout ( ( ) => {
34+ brightnessOverlay . style . opacity = '0' ;
35+ } , 2000 ) ; // Hide after 2 seconds
36+ }
37+
38+
39+ document . addEventListener ( 'keydown' , ( event ) => {
40+ const video = document . querySelector ( 'video' ) ;
41+ if ( ! video ) return ;
42+
43+ let currentBrightness = 1 ;
44+ const filter = video . style . filter ;
45+ const brightnessMatch = filter . match ( / b r i g h t n e s s \( ( [ ^ ) ] + ) \) / ) ;
46+
47+ if ( brightnessMatch ?. [ 1 ] ) {
48+ currentBrightness = Number . parseFloat ( brightnessMatch [ 1 ] ) ;
49+ }
50+
51+ let newBrightness = currentBrightness ;
52+
53+ if ( event . ctrlKey && event . key === '[' ) {
54+ // Decrease brightness
55+ newBrightness = Math . max ( 0.1 , currentBrightness - 0.1 ) ;
56+ event . preventDefault ( ) ; // Prevent default browser action
57+ } else if ( event . ctrlKey && event . key === ']' ) {
58+ // Increase brightness
59+ newBrightness = currentBrightness + 0.1 ;
60+ event . preventDefault ( ) ; // Prevent default browser action
61+ }
62+
63+ if ( newBrightness !== currentBrightness ) {
64+ // Update the filter property, preserving other filters if any
65+ if ( brightnessMatch ) {
66+ video . style . filter = filter . replace ( brightnessMatch [ 0 ] , `brightness(${ newBrightness } )` ) ;
67+ } else {
68+ video . style . filter = `${ filter } brightness(${ newBrightness } )` ;
69+ }
70+ showBrightnessOverlay ( newBrightness ) ;
71+ }
72+ } ) ;
0 commit comments