]> git.wh0rd.org - tt-rss.git/blob - lib/dojo/ready.js.uncompressed.js
upgrade dojo to 1.8.3 (refs #570)
[tt-rss.git] / lib / dojo / ready.js.uncompressed.js
1 define("dojo/ready", ["./_base/kernel", "./has", "require", "./domReady", "./_base/lang"], function(dojo, has, require, domReady, lang){
2 // module:
3 // dojo/ready
4 // note:
5 // This module should be unnecessary in dojo 2.0
6
7 var
8 // truthy if DOMContentLoaded or better (e.g., window.onload fired) has been achieved
9 isDomReady = 0,
10
11 // a function to call to cause onLoad to be called when all requested modules have been loaded
12 requestCompleteSignal,
13
14 // The queue of functions waiting to execute as soon as dojo.ready conditions satisfied
15 loadQ = [],
16
17 // prevent recursion in onLoad
18 onLoadRecursiveGuard = 0,
19
20 handleDomReady = function(){
21 isDomReady = 1;
22 dojo._postLoad = dojo.config.afterOnLoad = true;
23 if(loadQ.length){
24 requestCompleteSignal(onLoad);
25 }
26 },
27
28 // run the next function queued with dojo.ready
29 onLoad = function(){
30 if(isDomReady && !onLoadRecursiveGuard && loadQ.length){
31 //guard against recursions into this function
32 onLoadRecursiveGuard = 1;
33 var f = loadQ.shift();
34 try{
35 f();
36 }
37 // FIXME: signal the error via require.on
38 finally{
39 onLoadRecursiveGuard = 0;
40 }
41 onLoadRecursiveGuard = 0;
42 if(loadQ.length){
43 requestCompleteSignal(onLoad);
44 }
45 }
46 };
47
48 require.on("idle", onLoad);
49 requestCompleteSignal = function(){
50 if(require.idle()){
51 onLoad();
52 } // else do nothing, onLoad will be called with the next idle signal
53 };
54
55 var ready = dojo.ready = dojo.addOnLoad = function(priority, context, callback){
56 // summary:
57 // Add a function to execute on DOM content loaded and all requested modules have arrived and been evaluated.
58 // In most cases, the `domReady` plug-in should suffice and this method should not be needed.
59 // priority: Integer?
60 // The order in which to exec this callback relative to other callbacks, defaults to 1000
61 // context: Object?|Function
62 // The context in which to run execute callback, or a callback if not using context
63 // callback: Function?
64 // The function to execute.
65 //
66 // example:
67 // Simple DOM and Modules ready syntax
68 // | require(["dojo/ready"], function(ready){
69 // | ready(function(){ alert("Dom ready!"); });
70 // | });
71 //
72 // example:
73 // Using a priority
74 // | require(["dojo/ready"], function(ready){
75 // | ready(2, function(){ alert("low priority ready!"); })
76 // | });
77 //
78 // example:
79 // Using context
80 // | require(["dojo/ready"], function(ready){
81 // | ready(foo, function(){
82 // | // in here, this == foo
83 // | });
84 // | });
85 //
86 // example:
87 // Using dojo/hitch style args:
88 // | require(["dojo/ready"], function(ready){
89 // | var foo = { dojoReady: function(){ console.warn(this, "dojo dom and modules ready."); } };
90 // | ready(foo, "dojoReady");
91 // | });
92
93 var hitchArgs = lang._toArray(arguments);
94 if(typeof priority != "number"){
95 callback = context;
96 context = priority;
97 priority = 1000;
98 }else{
99 hitchArgs.shift();
100 }
101 callback = callback ?
102 lang.hitch.apply(dojo, hitchArgs) :
103 function(){
104 context();
105 };
106 callback.priority = priority;
107 for(var i = 0; i < loadQ.length && priority >= loadQ[i].priority; i++){}
108 loadQ.splice(i, 0, callback);
109 requestCompleteSignal();
110 };
111
112 1 || has.add("dojo-config-addOnLoad", 1);
113 if( 1 ){
114 var dca = dojo.config.addOnLoad;
115 if(dca){
116 ready[(lang.isArray(dca) ? "apply" : "call")](dojo, dca);
117 }
118 }
119
120 if( 1 && dojo.config.parseOnLoad && !dojo.isAsync){
121 ready(99, function(){
122 if(!dojo.parser){
123 dojo.deprecated("Add explicit require(['dojo/parser']);", "", "2.0");
124 require(["dojo/parser"]);
125 }
126 });
127 }
128
129 if( 1 ){
130 domReady(handleDomReady);
131 }else{
132 handleDomReady();
133 }
134
135 return ready;
136 });