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