Index: runtime/bin/vmservice/observatory/deployed/web/packages/html_import/tools/loader/loader.js |
diff --git a/runtime/bin/vmservice/observatory/deployed/web/packages/html_import/tools/loader/loader.js b/runtime/bin/vmservice/observatory/deployed/web/packages/html_import/tools/loader/loader.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1aa3f9c2935edd6ff4905e792ad5028f1eb74545 |
--- /dev/null |
+++ b/runtime/bin/vmservice/observatory/deployed/web/packages/html_import/tools/loader/loader.js |
@@ -0,0 +1,101 @@ |
+/* |
+ * Copyright 2013 The Polymer Authors. All rights reserved. |
+ * Use of this source code is governed by a BSD-style |
+ * license that can be found in the LICENSE file. |
+ */ |
+ |
+(function() { |
+ |
+var scope = window.Loader = {}; |
+var flags = {}; |
+ |
+// convert url arguments to flags |
+ |
+if (!flags.noOpts) { |
+ location.search.slice(1).split('&').forEach(function(o) { |
+ o = o.split('='); |
+ o[0] && (flags[o[0]] = o[1] || true); |
+ }); |
+} |
+ |
+// process global logFlags |
+ |
+parseLogFlags(flags); |
+ |
+function load(scopeName) { |
+ // imports |
+ |
+ var scope = window[scopeName]; |
+ var entryPointName = scope.entryPointName; |
+ var processFlags = scope.processFlags; |
+ |
+ // acquire attributes and base path from entry point |
+ |
+ var entryPoint = findScript(entryPointName); |
+ var base = entryPoint.basePath; |
+ |
+ // acquire common flags |
+ var flags = Loader.flags; |
+ |
+ // convert attributes to flags |
+ var flags = Loader.flags; |
+ for (var i=0, a; (a=entryPoint.attributes[i]); i++) { |
+ if (a.name !== 'src') { |
+ flags[a.name] = a.value || true; |
+ } |
+ } |
+ |
+ // parse log flags into global |
+ parseLogFlags(flags); |
+ |
+ // exports |
+ |
+ scope.basePath = base; |
+ scope.flags = flags; |
+ |
+ // process flags for dynamic dependencies |
+ |
+ if (processFlags) { |
+ processFlags.call(scope, flags); |
+ } |
+ |
+ // post-process imports |
+ |
+ var modules = scope.modules || []; |
+ var sheets = scope.sheets || []; |
+ |
+ // write script tags for dependencies |
+ |
+ modules.forEach(function(src) { |
+ document.write('<script src="' + base + src + '"></script>'); |
+ }); |
+ |
+ // write link tags for styles |
+ |
+ sheets.forEach(function(src) { |
+ document.write('<link rel="stylesheet" href="' + base + src + '">'); |
+ }); |
+} |
+ |
+// utility method |
+ |
+function findScript(fileName) { |
+ var script = document.querySelector('script[src*="' + fileName + '"]'); |
+ var src = script.attributes.src.value; |
+ script.basePath = src.slice(0, src.indexOf(fileName)); |
+ return script; |
+} |
+ |
+function parseLogFlags(flags) { |
+ var logFlags = window.logFlags = window.logFlags || {}; |
+ if (flags.log) { |
+ flags.log.split(',').forEach(function(f) { |
+ logFlags[f] = true; |
+ }); |
+ } |
+} |
+ |
+scope.flags = flags; |
+scope.load = load; |
+ |
+})(); |