summaryrefslogtreecommitdiffstats
path: root/module/web/static/js/utils/lazyRequire.js
diff options
context:
space:
mode:
authorGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2012-09-16 21:45:10 +0200
committerGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2012-09-16 21:45:10 +0200
commit6a8303b004e1976739371431aa7358c672ad7313 (patch)
tree108da54419661af1cd6edc860ec6494be61e7051 /module/web/static/js/utils/lazyRequire.js
parenthigher low speed time, easier way to set curl options (diff)
downloadpyload-6a8303b004e1976739371431aa7358c672ad7313.tar.xz
added bootstrap
Diffstat (limited to 'module/web/static/js/utils/lazyRequire.js')
-rw-r--r--module/web/static/js/utils/lazyRequire.js89
1 files changed, 89 insertions, 0 deletions
diff --git a/module/web/static/js/utils/lazyRequire.js b/module/web/static/js/utils/lazyRequire.js
new file mode 100644
index 000000000..d20d78610
--- /dev/null
+++ b/module/web/static/js/utils/lazyRequire.js
@@ -0,0 +1,89 @@
+// Define the module.
+define(
+ [
+ "require"
+ ],
+ function( require ){
+
+
+ // Define the states of loading for a given set of modules
+ // within a require() statement.
+ var states = {
+ unloaded: "UNLOADED",
+ loading: "LOADING",
+ loaded: "LOADED"
+ };
+
+
+ // Define the top-level module container. Mostly, we're making
+ // the top-level container a non-Function so that users won't
+ // try to invoke this without calling the once() method below.
+ var lazyRequire = {};
+
+
+ // I will return a new, unique instance of the requrieOnce()
+ // method. Each instance will only call the require() method
+ // once internally.
+ lazyRequire.once = function(){
+
+ // The modules start in an unloaded state before
+ // requireOnce() is invoked by the calling code.
+ var state = states.unloaded;
+ var args;
+
+ var requireOnce = function( dependencies, loadCallback ){
+
+ // Use the module state to determine which method to
+ // invoke (or just to ignore the invocation).
+ if (state === states.loaded){
+ loadCallback.apply(null, args);
+
+ // The modules have not yet been requested - let's
+ // lazy load them.
+ } else if (state !== states.loading){
+
+ // We're about to load the modules asynchronously;
+ // flag the interim state.
+ state = states.loading;
+
+ // Load the modules.
+ require(
+ dependencies,
+ function(){
+
+ args = arguments;
+ loadCallback.apply( null, args );
+ state = states.loaded;
+
+
+ }
+ );
+
+ // RequireJS is currently loading the modules
+ // asynchronously, but they have not finished
+ // loading yet.
+ } else {
+
+ // Simply ignore this call.
+ return;
+
+ }
+
+ };
+
+ // Return the new lazy loader.
+ return( requireOnce );
+
+ };
+
+
+ // -------------------------------------------------- //
+ // -------------------------------------------------- //
+
+
+ // Return the module definition.
+ return( lazyRequire );
+
+
+ }
+); \ No newline at end of file