@@ -31,6 +31,8 @@ export type Model = {
3131 clicked : Maybe < MousePosition >
3232 moved : Maybe < MousePosition >
3333 scrolled : Maybe < Position >
34+ nbResizeLeft : number
35+ nbResizeRight : number
3436} ;
3537
3638type MousePosition = {
@@ -47,6 +49,9 @@ export type Msg = {
4749} | {
4850 type : 'moved' ,
4951 position : MousePosition
52+ } | {
53+ type : 'resized' ,
54+ left : boolean
5055} | {
5156 type : 'scrolled' ,
5257 scroll : Position
@@ -56,7 +61,9 @@ export function init(): [Model, Cmd<Msg>] {
5661 return noCmd ( {
5762 clicked : nothing ,
5863 moved : nothing ,
59- scrolled : nothing
64+ scrolled : nothing ,
65+ nbResizeLeft : 0 ,
66+ nbResizeRight : 0 ,
6067 } ) ;
6168}
6269
@@ -75,6 +82,8 @@ export function view(dispatch: Dispatcher<Msg>, model: Model) {
7582 . map ( viewPosition ( 'Scrolled' ) )
7683 . withDefault ( < div > Waiting for move ...</ div > )
7784 }
85+ < div > resized left : { model . nbResizeLeft } </ div >
86+ < div > resized right : { model . nbResizeRight } </ div >
7887 </ div >
7988 ) ;
8089}
@@ -102,6 +111,13 @@ export function update(msg: Msg, model: Model): [Model, Cmd<Msg>] {
102111 } ;
103112 return [ model1 , Cmd . none ( ) ] ;
104113 }
114+ case 'resized' : {
115+ return noCmd ( {
116+ ...model ,
117+ nbResizeRight : msg . left ? model . nbResizeRight : model . nbResizeRight + 1 ,
118+ nbResizeLeft : msg . left ? model . nbResizeLeft + 1 : model . nbResizeLeft ,
119+ } ) ;
120+ }
105121 }
106122}
107123
@@ -110,30 +126,42 @@ const windowEvents = new WindowEvents<Msg>();
110126
111127export function subscriptions ( model : Model ) : Sub < Msg > {
112128 return Sub . batch ( [
113- // documentEvents.on('click', (e: MouseEvent) => (
114- // {
115- // type: 'clicked',
116- // position: {
117- // pos: [e.x, e.y],
118- // page: [e.pageX, e.pageY],
119- // offset: [e.offsetX, e.offsetY]
120- // }
121- // } as Msg
122- // )),
123- // documentEvents.on('mousemove', (e: MouseEvent) => ({
124- // type: 'moved',
125- // position: {
126- // pos: [e.x, e.y],
127- // page: [e.pageX, e.pageY],
128- // offset: [e.offsetX, e.offsetY]
129- // }
130- // } as Msg)),
131- // windowEvents.on('scroll', (e: Event) => {
132- // return {
133- // type: 'scrolled',
134- // scroll: [window.scrollX, window.scrollY]
135- // } as Msg;
136- // })
129+ documentEvents . on ( 'click' , ( e : MouseEvent ) => (
130+ {
131+ type : 'clicked' ,
132+ position : {
133+ pos : [ e . x , e . y ] ,
134+ page : [ e . pageX , e . pageY ] ,
135+ offset : [ e . offsetX , e . offsetY ]
136+ }
137+ } as Msg
138+ ) ) ,
139+ documentEvents . on ( 'mousemove' , ( e : MouseEvent ) => ( {
140+ type : 'moved' ,
141+ position : {
142+ pos : [ e . x , e . y ] ,
143+ page : [ e . pageX , e . pageY ] ,
144+ offset : [ e . offsetX , e . offsetY ]
145+ }
146+ } as Msg ) ) ,
147+ windowEvents . on ( 'scroll' , ( e : Event ) => {
148+ return {
149+ type : 'scrolled' ,
150+ scroll : [ window . scrollX , window . scrollY ]
151+ } as Msg ;
152+ } ) ,
153+ windowEvents . on ( 'resize' , ( ) => {
154+ return {
155+ type : 'resized' ,
156+ left : true
157+ } as Msg ;
158+ } ) ,
159+ windowEvents . on ( 'resize' , ( ) => {
160+ return {
161+ type : 'resized' ,
162+ left : false
163+ } as Msg ;
164+ } ) ,
137165 ] ) ;
138166}
139167
0 commit comments