11import { Menu , MenuItem } from 'electron' ;
2- import { createEffect , createResource , createSignal , Index , Match , onMount , Show , Switch } from 'solid-js' ;
2+ import { createEffect , createResource , createSignal , Index , Match , onCleanup , onMount , Show , Switch } from 'solid-js' ;
33import { css } from 'solid-styled-components' ;
44import { TransitionGroup } from 'solid-transition-group' ;
55
@@ -38,11 +38,16 @@ const titleStyle = cache(() => css`
3838 user-select : none;
3939
4040 transition : opacity 200ms ease 0s ,
41+ transform 300ms cubic-bezier (0.2 , 0 , 0.6 , 1 ) 0s ,
4142 background-color 300ms cubic-bezier (0.2 , 0 , 0.6 , 1 ) 0s ;
4243
4344 & [data-macos = "true" ] {
4445 padding : 4px 4px 4px 74px ;
4546 }
47+
48+ ytmusic-app : has (ytmusic-player [player-ui-state = FULLSCREEN ]) ~ & : not ([data-show = "true" ]) {
49+ transform : translateY (calc (-1 * var (--menu-bar-height , 32px )));
50+ }
4651` ) ;
4752
4853const separatorStyle = cache ( ( ) => css `
@@ -162,6 +167,7 @@ export const TitleBar = (props: TitleBarProps) => {
162167 const [ ignoreTransition , setIgnoreTransition ] = createSignal ( false ) ;
163168 const [ openTarget , setOpenTarget ] = createSignal < HTMLElement | null > ( null ) ;
164169 const [ menu , setMenu ] = createSignal < Menu | null > ( null ) ;
170+ const [ mouseY , setMouseY ] = createSignal ( 0 ) ;
165171
166172 const [ data , { refetch } ] = createResource ( async ( ) => await props . ipc . invoke ( 'get-menu' ) as Promise < Menu | null > ) ;
167173 const [ isMaximized , { refetch : refetchMaximize } ] = createResource ( async ( ) => await props . ipc . invoke ( 'window-is-maximized' ) as Promise < boolean > ) ;
@@ -224,6 +230,10 @@ export const TitleBar = (props: TitleBarProps) => {
224230 setMenu ( await refreshMenuItem ( menuData , commandId ) ) ;
225231 } ;
226232
233+ const listener = ( e : MouseEvent ) => {
234+ setMouseY ( e . clientY ) ;
235+ } ;
236+
227237 onMount ( ( ) => {
228238 props . ipc . on ( 'close-all-in-app-menu-panel' , async ( ) => {
229239 setIgnoreTransition ( true ) ;
@@ -257,6 +267,9 @@ export const TitleBar = (props: TitleBarProps) => {
257267 setOpenTarget ( null ) ;
258268 }
259269 } ) ;
270+
271+ // tracking mouse position
272+ window . addEventListener ( 'mousemove' , listener ) ;
260273 } ) ;
261274
262275 createEffect ( ( ) => {
@@ -265,8 +278,12 @@ export const TitleBar = (props: TitleBarProps) => {
265278 }
266279 } ) ;
267280
281+ onCleanup ( ( ) => {
282+ window . removeEventListener ( 'mousemove' , listener ) ;
283+ } ) ;
284+
268285 return (
269- < nav data-ytmd-main-panel = { true } class = { titleStyle ( ) } data-macos = { props . isMacOS } >
286+ < nav data-ytmd-main-panel = { true } class = { titleStyle ( ) } data-macos = { props . isMacOS } data-show = { mouseY ( ) < 32 } >
270287 < IconButton
271288 onClick = { ( ) => setCollapsed ( ! collapsed ( ) ) }
272289 style = { {
0 commit comments