mirror of
https://github.com/jlengrand/webcomponentsjs.git
synced 2026-03-10 08:51:22 +00:00
102 lines
2.8 KiB
JavaScript
102 lines
2.8 KiB
JavaScript
/**
|
|
* @license
|
|
* Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
|
|
* This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
|
* The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
|
* The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
|
* Code distributed by Google as part of the polymer project is also
|
|
* subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
|
*/
|
|
|
|
(function() {
|
|
|
|
// Establish scope.
|
|
window.WebComponents = window.WebComponents || {flags:{}};
|
|
|
|
// loading script
|
|
var file = 'webcomponents.js';
|
|
var script = document.querySelector('script[src*="' + file + '"]');
|
|
|
|
// Flags. Convert url arguments to flags
|
|
var flags = {};
|
|
if (!flags.noOpts) {
|
|
// from url
|
|
location.search.slice(1).split('&').forEach(function(o) {
|
|
o = o.split('=');
|
|
var m;
|
|
if (o[0] && (m = o[0].match(/wc-(.+)/))) {
|
|
flags[m[1]] = o[1] || true;
|
|
}
|
|
});
|
|
// from script
|
|
if (script) {
|
|
for (var i=0, a; (a=script.attributes[i]); i++) {
|
|
if (a.name !== 'src') {
|
|
flags[a.name] = a.value || true;
|
|
}
|
|
}
|
|
}
|
|
// log flags
|
|
if (flags.log && flags.log.split) {
|
|
var parts = flags.log.split(',');
|
|
flags.log = {};
|
|
parts.forEach(function(f) {
|
|
flags.log[f] = true;
|
|
});
|
|
} else {
|
|
flags.log = {};
|
|
}
|
|
}
|
|
|
|
// Determine default settings.
|
|
// If any of these flags match 'native', then force native ShadowDOM; any
|
|
// other truthy value, or failure to detect native
|
|
// ShadowDOM, results in polyfill
|
|
flags.shadow = (flags.shadow || flags.shadowdom || flags.polyfill);
|
|
if (flags.shadow === 'native') {
|
|
flags.shadow = false;
|
|
} else {
|
|
flags.shadow = flags.shadow || !HTMLElement.prototype.createShadowRoot;
|
|
}
|
|
|
|
// Load.
|
|
var ShadowDOMNative = [
|
|
'WebComponents/shadowdom.js'
|
|
];
|
|
|
|
var ShadowDOMPolyfill = [
|
|
'ShadowDOM/ShadowDOM.js',
|
|
'WebComponents/shadowdom.js',
|
|
'ShadowCSS/ShadowCSS.js'
|
|
];
|
|
|
|
// select ShadowDOM impl
|
|
var ShadowDOM = flags.shadow ? ShadowDOMPolyfill : ShadowDOMNative;
|
|
|
|
// construct full dependency list
|
|
var modules = [].concat(
|
|
ShadowDOM,
|
|
[
|
|
'HTMLImports/HTMLImports.js',
|
|
'CustomElements/CustomElements.js',
|
|
'WebComponents/lang.js',
|
|
// these scripts are loaded here due to polyfill timing issues
|
|
'WebComponents/dom.js',
|
|
'WebComponents/unresolved.js',
|
|
// back compat.
|
|
'WebComponents/bc.js'
|
|
]
|
|
);
|
|
|
|
var src = script.getAttribute('src');
|
|
var path = src.slice(0, src.lastIndexOf(file));
|
|
|
|
modules.forEach(function(f) {
|
|
document.write('<script src="' + path + 'src/' + f + '"></script>');
|
|
});
|
|
|
|
// exports
|
|
WebComponents.flags = flags;
|
|
|
|
})();
|