on 05631f2 help sign in
35 lines 971 B history raw
2Elm.Native.Window = function(elm) {
3 'use strict';
5 elm.Native = elm.Native || {};
6 if (elm.Native.Window) return elm.Native.Window;
8 var Signal = Elm.Signal(elm);
9 var Misc = Elm.Native.Misc(elm);
11 var dimensions = Signal.constant(Misc.Tuple2(window.innerWidth,window.innerHeight));
12 dimensions.defaultNumberOfKids = 2;
14 var width = A2(Signal.lift, function(p){return p._0}, dimensions);
15 width.defaultNumberOfKids = 0;
17 var height = A2(Signal.lift, function(p){return p._1}, dimensions);
18 height.defaultNumberOfKids = 0;
20 function resize(e) {
21 var w = elm.node.getElementById('widthChecker').offsetWidth;
22 var hasListener = elm.notify(dimensions.id,
23 Misc.Tuple2(w, window.innerHeight));
24 if (!hasListener)
25 this.removeEventListener('resize',arguments.callee,false);
26 }
27 Misc.addListener(window, 'resize', resize);
29 return elm.Native.Window = {
30 dimensions:dimensions,
31 width:width,
32 height:height
33 };
35};