import { atom } from 'elementos' ; type Size = { width : number ; height : number ; } ; export const createWindowSize$ = ( ) => { const size$ = atom < Size | null > ( null ) ; let listener ; size$ . onObserverChange ( ( { count } ) => { if ( count === 0 && listener ) { window . removeEventListener ( 'resize' , listener ) ; } else if ( count > 0 && ! listener ) { listener = ( ) => { size$ . actions . set ( { height : window . innerHeight , width : window . innerWidth } ) ; } ; window . addEventListener ( 'resize' , listener ) ; } } ) ; return size$ ; } ;