on c710179 help sign in
elk/core/Native/Window.js
35 lines 1.1 kB history raw
1/*! Window !*/
3Elm.Window = function() {
5 /*[Dimensions]*/
7 /** dimensions : Signal (Int,Int)
8 The current dimensions of the window (i.e. the area viewable to the
9 user, not including scroll bars).
10 **/
11 var dimensions = Elm.Signal.constant(Value.Tuple(window.innerWidth,
12 window.innerHeight));
13 dimensions.defaultNumberOfKids = 2;
15 /** width : Signal Int
16 The current width of the window.
17 **/
18 var width = Elm.Signal.lift(function(p){return p[1];})(dimensions);
19 width.defaultNumberOfKids = 0;
21 /** height : Signal Int
22 The current height of the window.
23 **/
24 var height = Elm.Signal.lift(function(p){return p[2];})(dimensions);
25 height.defaultNumberOfKids = 0;
27 Value.addListener(window, 'resize', function(e) {
28 var w = document.getElementById('widthChecker').offsetWidth;
29 var hasListener = Dispatcher.notify(dimensions.id,
30 Value.Tuple(w, window.innerHeight));
31 if (!hasListener)
32 this.removeEventListener('resize',arguments.callee,false);
33 });
34 return {dimensions:dimensions,width:width,height:height};
35}();