-
Notifications
You must be signed in to change notification settings - Fork 1
/
focus.js
66 lines (52 loc) · 1.43 KB
/
focus.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
var
fab = require( "../" ),
listeners = [];
module.exports = fab
( /\/listen/ )
( function(){ listeners.push( this ) } )
( /\/init/ )
( fab.tmpl, "(<%= this %>)()" )
( client.toString() )
( /\/focused/ )
( broadcast, listeners )
( fab.tmpl, "$('body').html('<%= this %>');" )
( userAgent )
( fab.tmpl, "<html><body style='font: bold 5em helvetica'><%= this %></body></html>" )
(
"<script src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'></script>" +
"<script src='/focus/init'></script>"
);
function broadcast( listeners ) {
listeners.call( function( obj ){ listeners = obj.body } );
return function( app ) {
return function() {
this();
return app.call( function fn( obj ) {
var i = listeners.length;
while ( i-- ) {
( obj ? listeners[ i ] : listeners.pop() )
.apply( this, arguments );
}
return fn;
})
}
}
}
function userAgent() {
var out = this;
return function( head ) {
var ua = head.headers[ "user-agent" ];
out({ body:
~ua.indexOf( "Firefox" ) ? "Firefox" :
~ua.indexOf( "Chrome" ) ? "Chrome" :
~ua.indexOf( "Safari" ) ? "Safari" :
"Other"
})();
}
}
function client() {
( function listen(){ $.getScript( "/focus/listen", listen ) })();
$( window )
.focus( function(){ $.getScript( "/focus/focused" ) } )
.focus();
}