elm/core/Native/Window.js

35 lines
1.1 KiB
JavaScript

/*! Window !*/
Elm.Window = function() {
/*[Dimensions]*/
/** dimensions : Signal (Int,Int)
The current dimensions of the window (i.e. the area viewable to the
user, not including scroll bars).
**/
var dimensions = Elm.Signal.constant(Value.Tuple(window.innerWidth,
window.innerHeight));
dimensions.defaultNumberOfKids = 2;
/** width : Signal Int
The current width of the window.
**/
var width = Elm.Signal.lift(function(p){return p[1];})(dimensions);
width.defaultNumberOfKids = 0;
/** height : Signal Int
The current height of the window.
**/
var height = Elm.Signal.lift(function(p){return p[2];})(dimensions);
height.defaultNumberOfKids = 0;
Value.addListener(window, 'resize', function(e) {
var w = document.getElementById('widthChecker').offsetWidth;
var hasListener = Dispatcher.notify(dimensions.id,
Value.Tuple(w, window.innerHeight));
if (!hasListener)
this.removeEventListener('resize',arguments.callee,false);
});
return {dimensions:dimensions,width:width,height:height};
}();