Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(487)

Side by Side Diff: polymer_1.2.3/bower_components/webcomponentsjs/webcomponents.js

Issue 1581713003: [third_party] add polymer 1.2.3 (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: 1.2.3 Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /** 1 /**
2 * @license 2 * @license
3 * Copyright (c) 2014 The Polymer Project Authors. All rights reserved. 3 * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
4 * This code may only be used under the BSD style license found at http://polyme r.github.io/LICENSE.txt 4 * This code may only be used under the BSD style license found at http://polyme r.github.io/LICENSE.txt
5 * The complete set of authors may be found at http://polymer.github.io/AUTHORS. txt 5 * The complete set of authors may be found at http://polymer.github.io/AUTHORS. txt
6 * The complete set of contributors may be found at http://polymer.github.io/CON TRIBUTORS.txt 6 * The complete set of contributors may be found at http://polymer.github.io/CON TRIBUTORS.txt
7 * Code distributed by Google as part of the polymer project is also 7 * Code distributed by Google as part of the polymer project is also
8 * subject to an additional IP rights grant found at http://polymer.github.io/PA TENTS.txt 8 * subject to an additional IP rights grant found at http://polymer.github.io/PA TENTS.txt
9 */ 9 */
10 // @version 0.7.5 10 // @version 0.7.20
11 window.WebComponents = window.WebComponents || {}; 11 (function() {
12 12 window.WebComponents = window.WebComponents || {
13 (function(scope) { 13 flags: {}
14 var flags = scope.flags || {}; 14 };
15 var file = "webcomponents.js"; 15 var file = "webcomponents.js";
16 var script = document.querySelector('script[src*="' + file + '"]'); 16 var script = document.querySelector('script[src*="' + file + '"]');
17 var flags = {};
17 if (!flags.noOpts) { 18 if (!flags.noOpts) {
18 location.search.slice(1).split("&").forEach(function(option) { 19 location.search.slice(1).split("&").forEach(function(option) {
19 var parts = option.split("="); 20 var parts = option.split("=");
20 var match; 21 var match;
21 if (parts[0] && (match = parts[0].match(/wc-(.+)/))) { 22 if (parts[0] && (match = parts[0].match(/wc-(.+)/))) {
22 flags[match[1]] = parts[1] || true; 23 flags[match[1]] = parts[1] || true;
23 } 24 }
24 }); 25 });
25 if (script) { 26 if (script) {
26 for (var i = 0, a; a = script.attributes[i]; i++) { 27 for (var i = 0, a; a = script.attributes[i]; i++) {
(...skipping 17 matching lines...) Expand all
44 flags.shadow = false; 45 flags.shadow = false;
45 } else { 46 } else {
46 flags.shadow = flags.shadow || !HTMLElement.prototype.createShadowRoot; 47 flags.shadow = flags.shadow || !HTMLElement.prototype.createShadowRoot;
47 } 48 }
48 if (flags.register) { 49 if (flags.register) {
49 window.CustomElements = window.CustomElements || { 50 window.CustomElements = window.CustomElements || {
50 flags: {} 51 flags: {}
51 }; 52 };
52 window.CustomElements.flags.register = flags.register; 53 window.CustomElements.flags.register = flags.register;
53 } 54 }
54 scope.flags = flags; 55 WebComponents.flags = flags;
55 })(WebComponents); 56 })();
56 57
57 if (WebComponents.flags.shadow) { 58 if (WebComponents.flags.shadow) {
58 if (typeof WeakMap === "undefined") { 59 if (typeof WeakMap === "undefined") {
59 (function() { 60 (function() {
60 var defineProperty = Object.defineProperty; 61 var defineProperty = Object.defineProperty;
61 var counter = Date.now() % 1e9; 62 var counter = Date.now() % 1e9;
62 var WeakMap = function() { 63 var WeakMap = function() {
63 this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__"); 64 this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__");
64 }; 65 };
65 WeakMap.prototype = { 66 WeakMap.prototype = {
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 function forwardMethodsToWrapper(constructors, names) { 345 function forwardMethodsToWrapper(constructors, names) {
345 constructors.forEach(function(constructor) { 346 constructors.forEach(function(constructor) {
346 names.forEach(function(name) { 347 names.forEach(function(name) {
347 constructor.prototype[name] = function() { 348 constructor.prototype[name] = function() {
348 var w = wrapIfNeeded(this); 349 var w = wrapIfNeeded(this);
349 return w[name].apply(w, arguments); 350 return w[name].apply(w, arguments);
350 }; 351 };
351 }); 352 });
352 }); 353 });
353 } 354 }
355 scope.addForwardingProperties = addForwardingProperties;
354 scope.assert = assert; 356 scope.assert = assert;
355 scope.constructorTable = constructorTable; 357 scope.constructorTable = constructorTable;
356 scope.defineGetter = defineGetter; 358 scope.defineGetter = defineGetter;
357 scope.defineWrapGetter = defineWrapGetter; 359 scope.defineWrapGetter = defineWrapGetter;
358 scope.forwardMethodsToWrapper = forwardMethodsToWrapper; 360 scope.forwardMethodsToWrapper = forwardMethodsToWrapper;
359 scope.isIdentifierName = isIdentifierName; 361 scope.isIdentifierName = isIdentifierName;
360 scope.isWrapper = isWrapper; 362 scope.isWrapper = isWrapper;
361 scope.isWrapperFor = isWrapperFor; 363 scope.isWrapperFor = isWrapperFor;
362 scope.mixin = mixin; 364 scope.mixin = mixin;
363 scope.nativePrototypeTable = nativePrototypeTable; 365 scope.nativePrototypeTable = nativePrototypeTable;
(...skipping 787 matching lines...) Expand 10 before | Expand all | Expand 10 after
1151 return eventPath.slice(); 1153 return eventPath.slice();
1152 }, 1154 },
1153 stopPropagation: function() { 1155 stopPropagation: function() {
1154 stopPropagationTable.set(this, true); 1156 stopPropagationTable.set(this, true);
1155 }, 1157 },
1156 stopImmediatePropagation: function() { 1158 stopImmediatePropagation: function() {
1157 stopPropagationTable.set(this, true); 1159 stopPropagationTable.set(this, true);
1158 stopImmediatePropagationTable.set(this, true); 1160 stopImmediatePropagationTable.set(this, true);
1159 } 1161 }
1160 }; 1162 };
1163 var supportsDefaultPrevented = function() {
1164 var e = document.createEvent("Event");
1165 e.initEvent("test", true, true);
1166 e.preventDefault();
1167 return e.defaultPrevented;
1168 }();
1169 if (!supportsDefaultPrevented) {
1170 Event.prototype.preventDefault = function() {
1171 if (!this.cancelable) return;
1172 unsafeUnwrap(this).preventDefault();
1173 Object.defineProperty(this, "defaultPrevented", {
1174 get: function() {
1175 return true;
1176 },
1177 configurable: true
1178 });
1179 };
1180 }
1161 registerWrapper(OriginalEvent, Event, document.createEvent("Event")); 1181 registerWrapper(OriginalEvent, Event, document.createEvent("Event"));
1162 function unwrapOptions(options) { 1182 function unwrapOptions(options) {
1163 if (!options || !options.relatedTarget) return options; 1183 if (!options || !options.relatedTarget) return options;
1164 return Object.create(options, { 1184 return Object.create(options, {
1165 relatedTarget: { 1185 relatedTarget: {
1166 value: unwrap(options.relatedTarget) 1186 value: unwrap(options.relatedTarget)
1167 } 1187 }
1168 }); 1188 });
1169 } 1189 }
1170 function registerGenericEvent(name, SuperEvent, prototype) { 1190 function registerGenericEvent(name, SuperEvent, prototype) {
(...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after
1774 this.previousSibling_ = undefined; 1794 this.previousSibling_ = undefined;
1775 this.treeScope_ = undefined; 1795 this.treeScope_ = undefined;
1776 } 1796 }
1777 var OriginalDocumentFragment = window.DocumentFragment; 1797 var OriginalDocumentFragment = window.DocumentFragment;
1778 var originalAppendChild = OriginalNode.prototype.appendChild; 1798 var originalAppendChild = OriginalNode.prototype.appendChild;
1779 var originalCompareDocumentPosition = OriginalNode.prototype.compareDocument Position; 1799 var originalCompareDocumentPosition = OriginalNode.prototype.compareDocument Position;
1780 var originalIsEqualNode = OriginalNode.prototype.isEqualNode; 1800 var originalIsEqualNode = OriginalNode.prototype.isEqualNode;
1781 var originalInsertBefore = OriginalNode.prototype.insertBefore; 1801 var originalInsertBefore = OriginalNode.prototype.insertBefore;
1782 var originalRemoveChild = OriginalNode.prototype.removeChild; 1802 var originalRemoveChild = OriginalNode.prototype.removeChild;
1783 var originalReplaceChild = OriginalNode.prototype.replaceChild; 1803 var originalReplaceChild = OriginalNode.prototype.replaceChild;
1784 var isIe = /Trident|Edge/.test(navigator.userAgent); 1804 var isIEOrEdge = /Trident|Edge/.test(navigator.userAgent);
1785 var removeChildOriginalHelper = isIe ? function(parent, child) { 1805 var removeChildOriginalHelper = isIEOrEdge ? function(parent, child) {
1786 try { 1806 try {
1787 originalRemoveChild.call(parent, child); 1807 originalRemoveChild.call(parent, child);
1788 } catch (ex) { 1808 } catch (ex) {
1789 if (!(parent instanceof OriginalDocumentFragment)) throw ex; 1809 if (!(parent instanceof OriginalDocumentFragment)) throw ex;
1790 } 1810 }
1791 } : function(parent, child) { 1811 } : function(parent, child) {
1792 originalRemoveChild.call(parent, child); 1812 originalRemoveChild.call(parent, child);
1793 }; 1813 };
1794 Node.prototype = Object.create(EventTarget.prototype); 1814 Node.prototype = Object.create(EventTarget.prototype);
1795 mixin(Node.prototype, { 1815 mixin(Node.prototype, {
(...skipping 949 matching lines...) Expand 10 before | Expand all | Expand 10 after
2745 function methodRequiresRendering(name) { 2765 function methodRequiresRendering(name) {
2746 Object.defineProperty(HTMLElement.prototype, name, { 2766 Object.defineProperty(HTMLElement.prototype, name, {
2747 value: function() { 2767 value: function() {
2748 scope.renderAllPending(); 2768 scope.renderAllPending();
2749 return unsafeUnwrap(this)[name].apply(unsafeUnwrap(this), arguments); 2769 return unsafeUnwrap(this)[name].apply(unsafeUnwrap(this), arguments);
2750 }, 2770 },
2751 configurable: true, 2771 configurable: true,
2752 enumerable: true 2772 enumerable: true
2753 }); 2773 });
2754 } 2774 }
2755 [ "getBoundingClientRect", "getClientRects", "scrollIntoView" ].forEach(meth odRequiresRendering); 2775 [ "focus", "getBoundingClientRect", "getClientRects", "scrollIntoView" ].for Each(methodRequiresRendering);
2756 registerWrapper(OriginalHTMLElement, HTMLElement, document.createElement("b" )); 2776 registerWrapper(OriginalHTMLElement, HTMLElement, document.createElement("b" ));
2757 scope.wrappers.HTMLElement = HTMLElement; 2777 scope.wrappers.HTMLElement = HTMLElement;
2758 scope.getInnerHTML = getInnerHTML; 2778 scope.getInnerHTML = getInnerHTML;
2759 scope.setInnerHTML = setInnerHTML; 2779 scope.setInnerHTML = setInnerHTML;
2760 })(window.ShadowDOMPolyfill); 2780 })(window.ShadowDOMPolyfill);
2761 (function(scope) { 2781 (function(scope) {
2762 "use strict"; 2782 "use strict";
2763 var HTMLElement = scope.wrappers.HTMLElement; 2783 var HTMLElement = scope.wrappers.HTMLElement;
2764 var mixin = scope.mixin; 2784 var mixin = scope.mixin;
2765 var registerWrapper = scope.registerWrapper; 2785 var registerWrapper = scope.registerWrapper;
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
3152 HTMLElement.call(this, node); 3172 HTMLElement.call(this, node);
3153 } 3173 }
3154 HTMLUnknownElement.prototype = Object.create(HTMLElement.prototype); 3174 HTMLUnknownElement.prototype = Object.create(HTMLElement.prototype);
3155 registerWrapper(OriginalHTMLUnknownElement, HTMLUnknownElement); 3175 registerWrapper(OriginalHTMLUnknownElement, HTMLUnknownElement);
3156 scope.wrappers.HTMLUnknownElement = HTMLUnknownElement; 3176 scope.wrappers.HTMLUnknownElement = HTMLUnknownElement;
3157 })(window.ShadowDOMPolyfill); 3177 })(window.ShadowDOMPolyfill);
3158 (function(scope) { 3178 (function(scope) {
3159 "use strict"; 3179 "use strict";
3160 var Element = scope.wrappers.Element; 3180 var Element = scope.wrappers.Element;
3161 var HTMLElement = scope.wrappers.HTMLElement; 3181 var HTMLElement = scope.wrappers.HTMLElement;
3162 var registerObject = scope.registerObject; 3182 var registerWrapper = scope.registerWrapper;
3163 var defineWrapGetter = scope.defineWrapGetter; 3183 var defineWrapGetter = scope.defineWrapGetter;
3184 var unsafeUnwrap = scope.unsafeUnwrap;
3185 var wrap = scope.wrap;
3186 var mixin = scope.mixin;
3164 var SVG_NS = "http://www.w3.org/2000/svg"; 3187 var SVG_NS = "http://www.w3.org/2000/svg";
3188 var OriginalSVGElement = window.SVGElement;
3165 var svgTitleElement = document.createElementNS(SVG_NS, "title"); 3189 var svgTitleElement = document.createElementNS(SVG_NS, "title");
3166 var SVGTitleElement = registerObject(svgTitleElement);
3167 var SVGElement = Object.getPrototypeOf(SVGTitleElement.prototype).constructo r;
3168 if (!("classList" in svgTitleElement)) { 3190 if (!("classList" in svgTitleElement)) {
3169 var descr = Object.getOwnPropertyDescriptor(Element.prototype, "classList" ); 3191 var descr = Object.getOwnPropertyDescriptor(Element.prototype, "classList" );
3170 Object.defineProperty(HTMLElement.prototype, "classList", descr); 3192 Object.defineProperty(HTMLElement.prototype, "classList", descr);
3171 delete Element.prototype.classList; 3193 delete Element.prototype.classList;
3172 } 3194 }
3173 defineWrapGetter(SVGElement, "ownerSVGElement"); 3195 function SVGElement(node) {
3196 Element.call(this, node);
3197 }
3198 SVGElement.prototype = Object.create(Element.prototype);
3199 mixin(SVGElement.prototype, {
3200 get ownerSVGElement() {
3201 return wrap(unsafeUnwrap(this).ownerSVGElement);
3202 }
3203 });
3204 registerWrapper(OriginalSVGElement, SVGElement, document.createElementNS(SVG _NS, "title"));
3174 scope.wrappers.SVGElement = SVGElement; 3205 scope.wrappers.SVGElement = SVGElement;
3175 })(window.ShadowDOMPolyfill); 3206 })(window.ShadowDOMPolyfill);
3176 (function(scope) { 3207 (function(scope) {
3177 "use strict"; 3208 "use strict";
3178 var mixin = scope.mixin; 3209 var mixin = scope.mixin;
3179 var registerWrapper = scope.registerWrapper; 3210 var registerWrapper = scope.registerWrapper;
3180 var unwrap = scope.unwrap; 3211 var unwrap = scope.unwrap;
3181 var wrap = scope.wrap; 3212 var wrap = scope.wrap;
3182 var OriginalSVGUseElement = window.SVGUseElement; 3213 var OriginalSVGUseElement = window.SVGUseElement;
3183 var SVG_NS = "http://www.w3.org/2000/svg"; 3214 var SVG_NS = "http://www.w3.org/2000/svg";
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
3269 createPattern: function() { 3300 createPattern: function() {
3270 arguments[0] = unwrap(arguments[0]); 3301 arguments[0] = unwrap(arguments[0]);
3271 return unsafeUnwrap(this).createPattern.apply(unsafeUnwrap(this), argume nts); 3302 return unsafeUnwrap(this).createPattern.apply(unsafeUnwrap(this), argume nts);
3272 } 3303 }
3273 }); 3304 });
3274 registerWrapper(OriginalCanvasRenderingContext2D, CanvasRenderingContext2D, document.createElement("canvas").getContext("2d")); 3305 registerWrapper(OriginalCanvasRenderingContext2D, CanvasRenderingContext2D, document.createElement("canvas").getContext("2d"));
3275 scope.wrappers.CanvasRenderingContext2D = CanvasRenderingContext2D; 3306 scope.wrappers.CanvasRenderingContext2D = CanvasRenderingContext2D;
3276 })(window.ShadowDOMPolyfill); 3307 })(window.ShadowDOMPolyfill);
3277 (function(scope) { 3308 (function(scope) {
3278 "use strict"; 3309 "use strict";
3310 var addForwardingProperties = scope.addForwardingProperties;
3279 var mixin = scope.mixin; 3311 var mixin = scope.mixin;
3280 var registerWrapper = scope.registerWrapper; 3312 var registerWrapper = scope.registerWrapper;
3281 var setWrapper = scope.setWrapper; 3313 var setWrapper = scope.setWrapper;
3282 var unsafeUnwrap = scope.unsafeUnwrap; 3314 var unsafeUnwrap = scope.unsafeUnwrap;
3283 var unwrapIfNeeded = scope.unwrapIfNeeded; 3315 var unwrapIfNeeded = scope.unwrapIfNeeded;
3284 var wrap = scope.wrap; 3316 var wrap = scope.wrap;
3285 var OriginalWebGLRenderingContext = window.WebGLRenderingContext; 3317 var OriginalWebGLRenderingContext = window.WebGLRenderingContext;
3286 if (!OriginalWebGLRenderingContext) return; 3318 if (!OriginalWebGLRenderingContext) return;
3287 function WebGLRenderingContext(impl) { 3319 function WebGLRenderingContext(impl) {
3288 setWrapper(impl, this); 3320 setWrapper(impl, this);
3289 } 3321 }
3290 mixin(WebGLRenderingContext.prototype, { 3322 mixin(WebGLRenderingContext.prototype, {
3291 get canvas() { 3323 get canvas() {
3292 return wrap(unsafeUnwrap(this).canvas); 3324 return wrap(unsafeUnwrap(this).canvas);
3293 }, 3325 },
3294 texImage2D: function() { 3326 texImage2D: function() {
3295 arguments[5] = unwrapIfNeeded(arguments[5]); 3327 arguments[5] = unwrapIfNeeded(arguments[5]);
3296 unsafeUnwrap(this).texImage2D.apply(unsafeUnwrap(this), arguments); 3328 unsafeUnwrap(this).texImage2D.apply(unsafeUnwrap(this), arguments);
3297 }, 3329 },
3298 texSubImage2D: function() { 3330 texSubImage2D: function() {
3299 arguments[6] = unwrapIfNeeded(arguments[6]); 3331 arguments[6] = unwrapIfNeeded(arguments[6]);
3300 unsafeUnwrap(this).texSubImage2D.apply(unsafeUnwrap(this), arguments); 3332 unsafeUnwrap(this).texSubImage2D.apply(unsafeUnwrap(this), arguments);
3301 } 3333 }
3302 }); 3334 });
3335 var OriginalWebGLRenderingContextBase = Object.getPrototypeOf(OriginalWebGLR enderingContext.prototype);
3336 if (OriginalWebGLRenderingContextBase !== Object.prototype) {
3337 addForwardingProperties(OriginalWebGLRenderingContextBase, WebGLRenderingC ontext.prototype);
3338 }
3303 var instanceProperties = /WebKit/.test(navigator.userAgent) ? { 3339 var instanceProperties = /WebKit/.test(navigator.userAgent) ? {
3304 drawingBufferHeight: null, 3340 drawingBufferHeight: null,
3305 drawingBufferWidth: null 3341 drawingBufferWidth: null
3306 } : {}; 3342 } : {};
3307 registerWrapper(OriginalWebGLRenderingContext, WebGLRenderingContext, instan ceProperties); 3343 registerWrapper(OriginalWebGLRenderingContext, WebGLRenderingContext, instan ceProperties);
3308 scope.wrappers.WebGLRenderingContext = WebGLRenderingContext; 3344 scope.wrappers.WebGLRenderingContext = WebGLRenderingContext;
3309 })(window.ShadowDOMPolyfill); 3345 })(window.ShadowDOMPolyfill);
3310 (function(scope) { 3346 (function(scope) {
3311 "use strict"; 3347 "use strict";
3348 var Node = scope.wrappers.Node;
3312 var GetElementsByInterface = scope.GetElementsByInterface; 3349 var GetElementsByInterface = scope.GetElementsByInterface;
3313 var NonElementParentNodeInterface = scope.NonElementParentNodeInterface; 3350 var NonElementParentNodeInterface = scope.NonElementParentNodeInterface;
3314 var ParentNodeInterface = scope.ParentNodeInterface; 3351 var ParentNodeInterface = scope.ParentNodeInterface;
3315 var SelectorsInterface = scope.SelectorsInterface; 3352 var SelectorsInterface = scope.SelectorsInterface;
3316 var mixin = scope.mixin; 3353 var mixin = scope.mixin;
3317 var registerObject = scope.registerObject; 3354 var registerObject = scope.registerObject;
3318 var DocumentFragment = registerObject(document.createDocumentFragment()); 3355 var registerWrapper = scope.registerWrapper;
3356 var OriginalDocumentFragment = window.DocumentFragment;
3357 function DocumentFragment(node) {
3358 Node.call(this, node);
3359 }
3360 DocumentFragment.prototype = Object.create(Node.prototype);
3319 mixin(DocumentFragment.prototype, ParentNodeInterface); 3361 mixin(DocumentFragment.prototype, ParentNodeInterface);
3320 mixin(DocumentFragment.prototype, SelectorsInterface); 3362 mixin(DocumentFragment.prototype, SelectorsInterface);
3321 mixin(DocumentFragment.prototype, GetElementsByInterface); 3363 mixin(DocumentFragment.prototype, GetElementsByInterface);
3322 mixin(DocumentFragment.prototype, NonElementParentNodeInterface); 3364 mixin(DocumentFragment.prototype, NonElementParentNodeInterface);
3365 registerWrapper(OriginalDocumentFragment, DocumentFragment, document.createD ocumentFragment());
3366 scope.wrappers.DocumentFragment = DocumentFragment;
3323 var Comment = registerObject(document.createComment("")); 3367 var Comment = registerObject(document.createComment(""));
3324 scope.wrappers.Comment = Comment; 3368 scope.wrappers.Comment = Comment;
3325 scope.wrappers.DocumentFragment = DocumentFragment;
3326 })(window.ShadowDOMPolyfill); 3369 })(window.ShadowDOMPolyfill);
3327 (function(scope) { 3370 (function(scope) {
3328 "use strict"; 3371 "use strict";
3329 var DocumentFragment = scope.wrappers.DocumentFragment; 3372 var DocumentFragment = scope.wrappers.DocumentFragment;
3330 var TreeScope = scope.TreeScope; 3373 var TreeScope = scope.TreeScope;
3331 var elementFromPoint = scope.elementFromPoint; 3374 var elementFromPoint = scope.elementFromPoint;
3332 var getInnerHTML = scope.getInnerHTML; 3375 var getInnerHTML = scope.getInnerHTML;
3333 var getTreeScope = scope.getTreeScope; 3376 var getTreeScope = scope.getTreeScope;
3334 var mixin = scope.mixin; 3377 var mixin = scope.mixin;
3335 var rewrap = scope.rewrap; 3378 var rewrap = scope.rewrap;
3336 var setInnerHTML = scope.setInnerHTML; 3379 var setInnerHTML = scope.setInnerHTML;
3337 var unsafeUnwrap = scope.unsafeUnwrap; 3380 var unsafeUnwrap = scope.unsafeUnwrap;
3338 var unwrap = scope.unwrap; 3381 var unwrap = scope.unwrap;
3382 var wrap = scope.wrap;
3339 var shadowHostTable = new WeakMap(); 3383 var shadowHostTable = new WeakMap();
3340 var nextOlderShadowTreeTable = new WeakMap(); 3384 var nextOlderShadowTreeTable = new WeakMap();
3341 function ShadowRoot(hostWrapper) { 3385 function ShadowRoot(hostWrapper) {
3342 var node = unwrap(unsafeUnwrap(hostWrapper).ownerDocument.createDocumentFr agment()); 3386 var node = unwrap(unsafeUnwrap(hostWrapper).ownerDocument.createDocumentFr agment());
3343 DocumentFragment.call(this, node); 3387 DocumentFragment.call(this, node);
3344 rewrap(node, this); 3388 rewrap(node, this);
3345 var oldShadowRoot = hostWrapper.shadowRoot; 3389 var oldShadowRoot = hostWrapper.shadowRoot;
3346 nextOlderShadowTreeTable.set(this, oldShadowRoot); 3390 nextOlderShadowTreeTable.set(this, oldShadowRoot);
3347 this.treeScope_ = new TreeScope(this, getTreeScope(oldShadowRoot || hostWr apper)); 3391 this.treeScope_ = new TreeScope(this, getTreeScope(oldShadowRoot || hostWr apper));
3348 shadowHostTable.set(this, hostWrapper); 3392 shadowHostTable.set(this, hostWrapper);
(...skipping 12 matching lines...) Expand all
3361 return nextOlderShadowTreeTable.get(this) || null; 3405 return nextOlderShadowTreeTable.get(this) || null;
3362 }, 3406 },
3363 get host() { 3407 get host() {
3364 return shadowHostTable.get(this) || null; 3408 return shadowHostTable.get(this) || null;
3365 }, 3409 },
3366 invalidateShadowRenderer: function() { 3410 invalidateShadowRenderer: function() {
3367 return shadowHostTable.get(this).invalidateShadowRenderer(); 3411 return shadowHostTable.get(this).invalidateShadowRenderer();
3368 }, 3412 },
3369 elementFromPoint: function(x, y) { 3413 elementFromPoint: function(x, y) {
3370 return elementFromPoint(this, this.ownerDocument, x, y); 3414 return elementFromPoint(this, this.ownerDocument, x, y);
3415 },
3416 getSelection: function() {
3417 return document.getSelection();
3418 },
3419 get activeElement() {
3420 var unwrappedActiveElement = unwrap(this).ownerDocument.activeElement;
3421 if (!unwrappedActiveElement || !unwrappedActiveElement.nodeType) return null;
3422 var activeElement = wrap(unwrappedActiveElement);
3423 if (activeElement === this.host) {
3424 return null;
3425 }
3426 while (!this.contains(activeElement) && !this.host.contains(activeElemen t)) {
3427 while (activeElement.parentNode) {
3428 activeElement = activeElement.parentNode;
3429 }
3430 if (activeElement.host) {
3431 activeElement = activeElement.host;
3432 } else {
3433 return null;
3434 }
3435 }
3436 return activeElement;
3371 } 3437 }
3372 }); 3438 });
3373 scope.wrappers.ShadowRoot = ShadowRoot; 3439 scope.wrappers.ShadowRoot = ShadowRoot;
3374 })(window.ShadowDOMPolyfill); 3440 })(window.ShadowDOMPolyfill);
3375 (function(scope) { 3441 (function(scope) {
3376 "use strict"; 3442 "use strict";
3377 var registerWrapper = scope.registerWrapper; 3443 var registerWrapper = scope.registerWrapper;
3378 var setWrapper = scope.setWrapper; 3444 var setWrapper = scope.setWrapper;
3379 var unsafeUnwrap = scope.unsafeUnwrap; 3445 var unsafeUnwrap = scope.unsafeUnwrap;
3380 var unwrap = scope.unwrap; 3446 var unwrap = scope.unwrap;
(...skipping 567 matching lines...) Expand 10 before | Expand all | Expand 10 after
3948 containsNode: function(node, allowPartial) { 4014 containsNode: function(node, allowPartial) {
3949 return unsafeUnwrap(this).containsNode(unwrapIfNeeded(node), allowPartia l); 4015 return unsafeUnwrap(this).containsNode(unwrapIfNeeded(node), allowPartia l);
3950 }, 4016 },
3951 getRangeAt: function(index) { 4017 getRangeAt: function(index) {
3952 return wrap(unsafeUnwrap(this).getRangeAt(index)); 4018 return wrap(unsafeUnwrap(this).getRangeAt(index));
3953 }, 4019 },
3954 removeRange: function(range) { 4020 removeRange: function(range) {
3955 unsafeUnwrap(this).removeRange(unwrap(range)); 4021 unsafeUnwrap(this).removeRange(unwrap(range));
3956 }, 4022 },
3957 selectAllChildren: function(node) { 4023 selectAllChildren: function(node) {
3958 unsafeUnwrap(this).selectAllChildren(unwrapIfNeeded(node)); 4024 unsafeUnwrap(this).selectAllChildren(node instanceof ShadowRoot ? unsafe Unwrap(node.host) : unwrapIfNeeded(node));
3959 }, 4025 },
3960 toString: function() { 4026 toString: function() {
3961 return unsafeUnwrap(this).toString(); 4027 return unsafeUnwrap(this).toString();
3962 } 4028 }
3963 }; 4029 };
3964 if (OriginalSelection.prototype.extend) { 4030 if (OriginalSelection.prototype.extend) {
3965 Selection.prototype.extend = function(node, offset) { 4031 Selection.prototype.extend = function(node, offset) {
3966 unsafeUnwrap(this).extend(unwrapIfNeeded(node), offset); 4032 unsafeUnwrap(this).extend(unwrapIfNeeded(node), offset);
3967 }; 4033 };
3968 } 4034 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
4019 "use strict"; 4085 "use strict";
4020 var GetElementsByInterface = scope.GetElementsByInterface; 4086 var GetElementsByInterface = scope.GetElementsByInterface;
4021 var Node = scope.wrappers.Node; 4087 var Node = scope.wrappers.Node;
4022 var ParentNodeInterface = scope.ParentNodeInterface; 4088 var ParentNodeInterface = scope.ParentNodeInterface;
4023 var NonElementParentNodeInterface = scope.NonElementParentNodeInterface; 4089 var NonElementParentNodeInterface = scope.NonElementParentNodeInterface;
4024 var Selection = scope.wrappers.Selection; 4090 var Selection = scope.wrappers.Selection;
4025 var SelectorsInterface = scope.SelectorsInterface; 4091 var SelectorsInterface = scope.SelectorsInterface;
4026 var ShadowRoot = scope.wrappers.ShadowRoot; 4092 var ShadowRoot = scope.wrappers.ShadowRoot;
4027 var TreeScope = scope.TreeScope; 4093 var TreeScope = scope.TreeScope;
4028 var cloneNode = scope.cloneNode; 4094 var cloneNode = scope.cloneNode;
4095 var defineGetter = scope.defineGetter;
4029 var defineWrapGetter = scope.defineWrapGetter; 4096 var defineWrapGetter = scope.defineWrapGetter;
4030 var elementFromPoint = scope.elementFromPoint; 4097 var elementFromPoint = scope.elementFromPoint;
4031 var forwardMethodsToWrapper = scope.forwardMethodsToWrapper; 4098 var forwardMethodsToWrapper = scope.forwardMethodsToWrapper;
4032 var matchesNames = scope.matchesNames; 4099 var matchesNames = scope.matchesNames;
4033 var mixin = scope.mixin; 4100 var mixin = scope.mixin;
4034 var registerWrapper = scope.registerWrapper; 4101 var registerWrapper = scope.registerWrapper;
4035 var renderAllPending = scope.renderAllPending; 4102 var renderAllPending = scope.renderAllPending;
4036 var rewrap = scope.rewrap; 4103 var rewrap = scope.rewrap;
4037 var setWrapper = scope.setWrapper; 4104 var setWrapper = scope.setWrapper;
4038 var unsafeUnwrap = scope.unsafeUnwrap; 4105 var unsafeUnwrap = scope.unsafeUnwrap;
4039 var unwrap = scope.unwrap; 4106 var unwrap = scope.unwrap;
4040 var wrap = scope.wrap; 4107 var wrap = scope.wrap;
4041 var wrapEventTargetMethods = scope.wrapEventTargetMethods; 4108 var wrapEventTargetMethods = scope.wrapEventTargetMethods;
4042 var wrapNodeList = scope.wrapNodeList; 4109 var wrapNodeList = scope.wrapNodeList;
4043 var implementationTable = new WeakMap(); 4110 var implementationTable = new WeakMap();
4044 function Document(node) { 4111 function Document(node) {
4045 Node.call(this, node); 4112 Node.call(this, node);
4046 this.treeScope_ = new TreeScope(this, null); 4113 this.treeScope_ = new TreeScope(this, null);
4047 } 4114 }
4048 Document.prototype = Object.create(Node.prototype); 4115 Document.prototype = Object.create(Node.prototype);
4049 defineWrapGetter(Document, "documentElement"); 4116 defineWrapGetter(Document, "documentElement");
4050 defineWrapGetter(Document, "body"); 4117 defineWrapGetter(Document, "body");
4051 defineWrapGetter(Document, "head"); 4118 defineWrapGetter(Document, "head");
4119 defineGetter(Document, "activeElement", function() {
4120 var unwrappedActiveElement = unwrap(this).activeElement;
4121 if (!unwrappedActiveElement || !unwrappedActiveElement.nodeType) return nu ll;
4122 var activeElement = wrap(unwrappedActiveElement);
4123 while (!this.contains(activeElement)) {
4124 while (activeElement.parentNode) {
4125 activeElement = activeElement.parentNode;
4126 }
4127 if (activeElement.host) {
4128 activeElement = activeElement.host;
4129 } else {
4130 return null;
4131 }
4132 }
4133 return activeElement;
4134 });
4052 function wrapMethod(name) { 4135 function wrapMethod(name) {
4053 var original = document[name]; 4136 var original = document[name];
4054 Document.prototype[name] = function() { 4137 Document.prototype[name] = function() {
4055 return wrap(original.apply(unsafeUnwrap(this), arguments)); 4138 return wrap(original.apply(unsafeUnwrap(this), arguments));
4056 }; 4139 };
4057 } 4140 }
4058 [ "createComment", "createDocumentFragment", "createElement", "createElement NS", "createEvent", "createEventNS", "createRange", "createTextNode" ].forEach(w rapMethod); 4141 [ "createComment", "createDocumentFragment", "createElement", "createElement NS", "createEvent", "createEventNS", "createRange", "createTextNode" ].forEach(w rapMethod);
4059 var originalAdoptNode = document.adoptNode; 4142 var originalAdoptNode = document.adoptNode;
4060 function adoptNodeNoRemove(node, doc) { 4143 function adoptNodeNoRemove(node, doc) {
4061 originalAdoptNode.call(unsafeUnwrap(doc), unwrap(node)); 4144 originalAdoptNode.call(unsafeUnwrap(doc), unwrap(node));
(...skipping 1310 matching lines...) Expand 10 before | Expand all | Expand 10 after
5372 var OriginalURL = scope.URL; 5455 var OriginalURL = scope.URL;
5373 if (OriginalURL) { 5456 if (OriginalURL) {
5374 jURL.createObjectURL = function(blob) { 5457 jURL.createObjectURL = function(blob) {
5375 return OriginalURL.createObjectURL.apply(OriginalURL, arguments); 5458 return OriginalURL.createObjectURL.apply(OriginalURL, arguments);
5376 }; 5459 };
5377 jURL.revokeObjectURL = function(url) { 5460 jURL.revokeObjectURL = function(url) {
5378 OriginalURL.revokeObjectURL(url); 5461 OriginalURL.revokeObjectURL(url);
5379 }; 5462 };
5380 } 5463 }
5381 scope.URL = jURL; 5464 scope.URL = jURL;
5382 })(this); 5465 })(self);
5383 5466
5384 (function(global) { 5467 (function(global) {
5468 if (global.JsMutationObserver) {
5469 return;
5470 }
5385 var registrationsTable = new WeakMap(); 5471 var registrationsTable = new WeakMap();
5386 var setImmediate; 5472 var setImmediate;
5387 if (/Trident|Edge/.test(navigator.userAgent)) { 5473 if (/Trident|Edge/.test(navigator.userAgent)) {
5388 setImmediate = setTimeout; 5474 setImmediate = setTimeout;
5389 } else if (window.setImmediate) { 5475 } else if (window.setImmediate) {
5390 setImmediate = window.setImmediate; 5476 setImmediate = window.setImmediate;
5391 } else { 5477 } else {
5392 var setImmediateQueue = []; 5478 var setImmediateQueue = [];
5393 var sentinel = String(Math.random()); 5479 var sentinel = String(Math.random());
5394 window.addEventListener("message", function(e) { 5480 window.addEventListener("message", function(e) {
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
5670 record.nextSibling = nextSibling; 5756 record.nextSibling = nextSibling;
5671 forEachAncestorAndObserverEnqueueRecord(e.relatedNode, function(options) { 5757 forEachAncestorAndObserverEnqueueRecord(e.relatedNode, function(options) {
5672 if (!options.childList) return; 5758 if (!options.childList) return;
5673 return record; 5759 return record;
5674 }); 5760 });
5675 } 5761 }
5676 clearRecords(); 5762 clearRecords();
5677 } 5763 }
5678 }; 5764 };
5679 global.JsMutationObserver = JsMutationObserver; 5765 global.JsMutationObserver = JsMutationObserver;
5680 if (!global.MutationObserver) global.MutationObserver = JsMutationObserver; 5766 if (!global.MutationObserver) {
5681 })(this); 5767 global.MutationObserver = JsMutationObserver;
5768 JsMutationObserver._isPolyfilled = true;
5769 }
5770 })(self);
5771
5772 (function(scope) {
5773 "use strict";
5774 if (!window.performance) {
5775 var start = Date.now();
5776 window.performance = {
5777 now: function() {
5778 return Date.now() - start;
5779 }
5780 };
5781 }
5782 if (!window.requestAnimationFrame) {
5783 window.requestAnimationFrame = function() {
5784 var nativeRaf = window.webkitRequestAnimationFrame || window.mozRequestAni mationFrame;
5785 return nativeRaf ? function(callback) {
5786 return nativeRaf(function() {
5787 callback(performance.now());
5788 });
5789 } : function(callback) {
5790 return window.setTimeout(callback, 1e3 / 60);
5791 };
5792 }();
5793 }
5794 if (!window.cancelAnimationFrame) {
5795 window.cancelAnimationFrame = function() {
5796 return window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || function(id) {
5797 clearTimeout(id);
5798 };
5799 }();
5800 }
5801 var workingDefaultPrevented = function() {
5802 var e = document.createEvent("Event");
5803 e.initEvent("foo", true, true);
5804 e.preventDefault();
5805 return e.defaultPrevented;
5806 }();
5807 if (!workingDefaultPrevented) {
5808 var origPreventDefault = Event.prototype.preventDefault;
5809 Event.prototype.preventDefault = function() {
5810 if (!this.cancelable) {
5811 return;
5812 }
5813 origPreventDefault.call(this);
5814 Object.defineProperty(this, "defaultPrevented", {
5815 get: function() {
5816 return true;
5817 },
5818 configurable: true
5819 });
5820 };
5821 }
5822 var isIE = /Trident/.test(navigator.userAgent);
5823 if (!window.CustomEvent || isIE && typeof window.CustomEvent !== "function") {
5824 window.CustomEvent = function(inType, params) {
5825 params = params || {};
5826 var e = document.createEvent("CustomEvent");
5827 e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelab le), params.detail);
5828 return e;
5829 };
5830 window.CustomEvent.prototype = window.Event.prototype;
5831 }
5832 if (!window.Event || isIE && typeof window.Event !== "function") {
5833 var origEvent = window.Event;
5834 window.Event = function(inType, params) {
5835 params = params || {};
5836 var e = document.createEvent("Event");
5837 e.initEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable));
5838 return e;
5839 };
5840 window.Event.prototype = origEvent.prototype;
5841 }
5842 })(window.WebComponents);
5682 5843
5683 window.HTMLImports = window.HTMLImports || { 5844 window.HTMLImports = window.HTMLImports || {
5684 flags: {} 5845 flags: {}
5685 }; 5846 };
5686 5847
5687 (function(scope) { 5848 (function(scope) {
5688 var IMPORT_LINK_TYPE = "import"; 5849 var IMPORT_LINK_TYPE = "import";
5689 var useNative = Boolean(IMPORT_LINK_TYPE in document.createElement("link")); 5850 var useNative = Boolean(IMPORT_LINK_TYPE in document.createElement("link"));
5690 var hasShadowDOMPolyfill = Boolean(window.ShadowDOMPolyfill); 5851 var hasShadowDOMPolyfill = Boolean(window.ShadowDOMPolyfill);
5691 var wrap = function(node) { 5852 var wrap = function(node) {
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
5748 checkDone(); 5909 checkDone();
5749 } 5910 }
5750 function errorLoadingImport(e) { 5911 function errorLoadingImport(e) {
5751 errorImports.push(this); 5912 errorImports.push(this);
5752 parsedCount++; 5913 parsedCount++;
5753 checkDone(); 5914 checkDone();
5754 } 5915 }
5755 if (importCount) { 5916 if (importCount) {
5756 for (var i = 0, imp; i < importCount && (imp = imports[i]); i++) { 5917 for (var i = 0, imp; i < importCount && (imp = imports[i]); i++) {
5757 if (isImportLoaded(imp)) { 5918 if (isImportLoaded(imp)) {
5919 newImports.push(this);
5758 parsedCount++; 5920 parsedCount++;
5759 checkDone(); 5921 checkDone();
5760 } else { 5922 } else {
5761 imp.addEventListener("load", loadedImport); 5923 imp.addEventListener("load", loadedImport);
5762 imp.addEventListener("error", errorLoadingImport); 5924 imp.addEventListener("error", errorLoadingImport);
5763 } 5925 }
5764 } 5926 }
5765 } else { 5927 } else {
5766 checkDone(); 5928 checkDone();
5767 } 5929 }
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
5874 return request.status >= 200 && request.status < 300 || request.status === 304 || request.status === 0; 6036 return request.status >= 200 && request.status < 300 || request.status === 304 || request.status === 0;
5875 }, 6037 },
5876 load: function(url, next, nextContext) { 6038 load: function(url, next, nextContext) {
5877 var request = new XMLHttpRequest(); 6039 var request = new XMLHttpRequest();
5878 if (scope.flags.debug || scope.flags.bust) { 6040 if (scope.flags.debug || scope.flags.bust) {
5879 url += "?" + Math.random(); 6041 url += "?" + Math.random();
5880 } 6042 }
5881 request.open("GET", url, xhr.async); 6043 request.open("GET", url, xhr.async);
5882 request.addEventListener("readystatechange", function(e) { 6044 request.addEventListener("readystatechange", function(e) {
5883 if (request.readyState === 4) { 6045 if (request.readyState === 4) {
5884 var locationHeader = request.getResponseHeader("Location");
5885 var redirectedUrl = null; 6046 var redirectedUrl = null;
5886 if (locationHeader) { 6047 try {
5887 var redirectedUrl = locationHeader.substr(0, 1) === "/" ? location.o rigin + locationHeader : locationHeader; 6048 var locationHeader = request.getResponseHeader("Location");
6049 if (locationHeader) {
6050 redirectedUrl = locationHeader.substr(0, 1) === "/" ? location.ori gin + locationHeader : locationHeader;
6051 }
6052 } catch (e) {
6053 console.error(e.message);
5888 } 6054 }
5889 next.call(nextContext, !xhr.ok(request) && request, request.response | | request.responseText, redirectedUrl); 6055 next.call(nextContext, !xhr.ok(request) && request, request.response | | request.responseText, redirectedUrl);
5890 } 6056 }
5891 }); 6057 });
5892 request.send(); 6058 request.send();
5893 return request; 6059 return request;
5894 }, 6060 },
5895 loadDocument: function(url, next, nextContext) { 6061 loadDocument: function(url, next, nextContext) {
5896 this.load(url, next, nextContext).responseType = "document"; 6062 this.load(url, next, nextContext).responseType = "document";
5897 } 6063 }
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
6027 6193
6028 window.HTMLImports.addModule(function(scope) { 6194 window.HTMLImports.addModule(function(scope) {
6029 var path = scope.path; 6195 var path = scope.path;
6030 var rootDocument = scope.rootDocument; 6196 var rootDocument = scope.rootDocument;
6031 var flags = scope.flags; 6197 var flags = scope.flags;
6032 var isIE = scope.isIE; 6198 var isIE = scope.isIE;
6033 var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE; 6199 var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;
6034 var IMPORT_SELECTOR = "link[rel=" + IMPORT_LINK_TYPE + "]"; 6200 var IMPORT_SELECTOR = "link[rel=" + IMPORT_LINK_TYPE + "]";
6035 var importParser = { 6201 var importParser = {
6036 documentSelectors: IMPORT_SELECTOR, 6202 documentSelectors: IMPORT_SELECTOR,
6037 importsSelectors: [ IMPORT_SELECTOR, "link[rel=stylesheet]", "style", "scrip t:not([type])", 'script[type="application/javascript"]', 'script[type="text/java script"]' ].join(","), 6203 importsSelectors: [ IMPORT_SELECTOR, "link[rel=stylesheet]:not([type])", "st yle:not([type])", "script:not([type])", 'script[type="application/javascript"]', 'script[type="text/javascript"]' ].join(","),
6038 map: { 6204 map: {
6039 link: "parseLink", 6205 link: "parseLink",
6040 script: "parseScript", 6206 script: "parseScript",
6041 style: "parseStyle" 6207 style: "parseStyle"
6042 }, 6208 },
6043 dynamicElements: [], 6209 dynamicElements: [],
6044 parseNext: function() { 6210 parseNext: function() {
6045 var next = this.nextToParse(); 6211 var next = this.nextToParse();
6046 if (next) { 6212 if (next) {
6047 this.parse(next); 6213 this.parse(next);
(...skipping 30 matching lines...) Expand all
6078 this.parsingElement = null; 6244 this.parsingElement = null;
6079 flags.parse && console.log("completed", elt); 6245 flags.parse && console.log("completed", elt);
6080 }, 6246 },
6081 markDynamicParsingComplete: function(elt) { 6247 markDynamicParsingComplete: function(elt) {
6082 var i = this.dynamicElements.indexOf(elt); 6248 var i = this.dynamicElements.indexOf(elt);
6083 if (i >= 0) { 6249 if (i >= 0) {
6084 this.dynamicElements.splice(i, 1); 6250 this.dynamicElements.splice(i, 1);
6085 } 6251 }
6086 }, 6252 },
6087 parseImport: function(elt) { 6253 parseImport: function(elt) {
6254 elt.import = elt.__doc;
6088 if (window.HTMLImports.__importsParsingHook) { 6255 if (window.HTMLImports.__importsParsingHook) {
6089 window.HTMLImports.__importsParsingHook(elt); 6256 window.HTMLImports.__importsParsingHook(elt);
6090 } 6257 }
6091 if (elt.import) { 6258 if (elt.import) {
6092 elt.import.__importParsed = true; 6259 elt.import.__importParsed = true;
6093 } 6260 }
6094 this.markParsingComplete(elt); 6261 this.markParsingComplete(elt);
6095 if (elt.__resource && !elt.__error) { 6262 if (elt.__resource && !elt.__error) {
6096 elt.dispatchEvent(new CustomEvent("load", { 6263 elt.dispatchEvent(new CustomEvent("load", {
6097 bubbles: false 6264 bubbles: false
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
6140 } 6307 }
6141 return n; 6308 return n;
6142 }, 6309 },
6143 addElementToDocument: function(elt) { 6310 addElementToDocument: function(elt) {
6144 var port = this.rootImportForElement(elt.__importElement || elt); 6311 var port = this.rootImportForElement(elt.__importElement || elt);
6145 port.parentNode.insertBefore(elt, port); 6312 port.parentNode.insertBefore(elt, port);
6146 }, 6313 },
6147 trackElement: function(elt, callback) { 6314 trackElement: function(elt, callback) {
6148 var self = this; 6315 var self = this;
6149 var done = function(e) { 6316 var done = function(e) {
6317 elt.removeEventListener("load", done);
6318 elt.removeEventListener("error", done);
6150 if (callback) { 6319 if (callback) {
6151 callback(e); 6320 callback(e);
6152 } 6321 }
6153 self.markParsingComplete(elt); 6322 self.markParsingComplete(elt);
6154 self.parseNext(); 6323 self.parseNext();
6155 }; 6324 };
6156 elt.addEventListener("load", done); 6325 elt.addEventListener("load", done);
6157 elt.addEventListener("error", done); 6326 elt.addEventListener("error", done);
6158 if (isIE && elt.localName === "style") { 6327 if (isIE && elt.localName === "style") {
6159 var fakeLoad = false; 6328 var fakeLoad = false;
(...skipping 17 matching lines...) Expand all
6177 }); 6346 });
6178 } 6347 }
6179 } 6348 }
6180 }, 6349 },
6181 parseScript: function(scriptElt) { 6350 parseScript: function(scriptElt) {
6182 var script = document.createElement("script"); 6351 var script = document.createElement("script");
6183 script.__importElement = scriptElt; 6352 script.__importElement = scriptElt;
6184 script.src = scriptElt.src ? scriptElt.src : generateScriptDataUrl(scriptE lt); 6353 script.src = scriptElt.src ? scriptElt.src : generateScriptDataUrl(scriptE lt);
6185 scope.currentScript = scriptElt; 6354 scope.currentScript = scriptElt;
6186 this.trackElement(script, function(e) { 6355 this.trackElement(script, function(e) {
6187 script.parentNode.removeChild(script); 6356 if (script.parentNode) {
6357 script.parentNode.removeChild(script);
6358 }
6188 scope.currentScript = null; 6359 scope.currentScript = null;
6189 }); 6360 });
6190 this.addElementToDocument(script); 6361 this.addElementToDocument(script);
6191 }, 6362 },
6192 nextToParse: function() { 6363 nextToParse: function() {
6193 this._mayParse = []; 6364 this._mayParse = [];
6194 return !this.parsingElement && (this.nextToParseInDoc(rootDocument) || thi s.nextToParseDynamic()); 6365 return !this.parsingElement && (this.nextToParseInDoc(rootDocument) || thi s.nextToParseDynamic());
6195 }, 6366 },
6196 nextToParseInDoc: function(doc, link) { 6367 nextToParseInDoc: function(doc, link) {
6197 if (doc && this._mayParse.indexOf(doc) < 0) { 6368 if (doc && this._mayParse.indexOf(doc) < 0) {
6198 this._mayParse.push(doc); 6369 this._mayParse.push(doc);
6199 var nodes = doc.querySelectorAll(this.parseSelectorsForNode(doc)); 6370 var nodes = doc.querySelectorAll(this.parseSelectorsForNode(doc));
6200 for (var i = 0, l = nodes.length, p = 0, n; i < l && (n = nodes[i]); i++ ) { 6371 for (var i = 0, l = nodes.length, p = 0, n; i < l && (n = nodes[i]); i++ ) {
6201 if (!this.isParsed(n)) { 6372 if (!this.isParsed(n)) {
6202 if (this.hasResource(n)) { 6373 if (this.hasResource(n)) {
6203 return nodeIsImport(n) ? this.nextToParseInDoc(n.import, n) : n; 6374 return nodeIsImport(n) ? this.nextToParseInDoc(n.__doc, n) : n;
6204 } else { 6375 } else {
6205 return; 6376 return;
6206 } 6377 }
6207 } 6378 }
6208 } 6379 }
6209 } 6380 }
6210 return link; 6381 return link;
6211 }, 6382 },
6212 nextToParseDynamic: function() { 6383 nextToParseDynamic: function() {
6213 return this.dynamicElements[0]; 6384 return this.dynamicElements[0];
6214 }, 6385 },
6215 parseSelectorsForNode: function(node) { 6386 parseSelectorsForNode: function(node) {
6216 var doc = node.ownerDocument || node; 6387 var doc = node.ownerDocument || node;
6217 return doc === rootDocument ? this.documentSelectors : this.importsSelecto rs; 6388 return doc === rootDocument ? this.documentSelectors : this.importsSelecto rs;
6218 }, 6389 },
6219 isParsed: function(node) { 6390 isParsed: function(node) {
6220 return node.__importParsed; 6391 return node.__importParsed;
6221 }, 6392 },
6222 needsDynamicParsing: function(elt) { 6393 needsDynamicParsing: function(elt) {
6223 return this.dynamicElements.indexOf(elt) >= 0; 6394 return this.dynamicElements.indexOf(elt) >= 0;
6224 }, 6395 },
6225 hasResource: function(node) { 6396 hasResource: function(node) {
6226 if (nodeIsImport(node) && node.import === undefined) { 6397 if (nodeIsImport(node) && node.__doc === undefined) {
6227 return false; 6398 return false;
6228 } 6399 }
6229 return true; 6400 return true;
6230 } 6401 }
6231 }; 6402 };
6232 function nodeIsImport(elt) { 6403 function nodeIsImport(elt) {
6233 return elt.localName === "link" && elt.rel === IMPORT_LINK_TYPE; 6404 return elt.localName === "link" && elt.rel === IMPORT_LINK_TYPE;
6234 } 6405 }
6235 function generateScriptDataUrl(script) { 6406 function generateScriptDataUrl(script) {
6236 var scriptContent = generateScriptContent(script); 6407 var scriptContent = generateScriptContent(script);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
6290 if (isImportLink(elt)) { 6461 if (isImportLink(elt)) {
6291 var doc = this.documents[url]; 6462 var doc = this.documents[url];
6292 if (doc === undefined) { 6463 if (doc === undefined) {
6293 doc = err ? null : makeDocument(resource, redirectedUrl || url); 6464 doc = err ? null : makeDocument(resource, redirectedUrl || url);
6294 if (doc) { 6465 if (doc) {
6295 doc.__importLink = elt; 6466 doc.__importLink = elt;
6296 this.bootDocument(doc); 6467 this.bootDocument(doc);
6297 } 6468 }
6298 this.documents[url] = doc; 6469 this.documents[url] = doc;
6299 } 6470 }
6300 elt.import = doc; 6471 elt.__doc = doc;
6301 } 6472 }
6302 parser.parseNext(); 6473 parser.parseNext();
6303 }, 6474 },
6304 bootDocument: function(doc) { 6475 bootDocument: function(doc) {
6305 this.loadSubtree(doc); 6476 this.loadSubtree(doc);
6306 this.observer.observe(doc); 6477 this.observer.observe(doc);
6307 parser.parseNext(); 6478 parser.parseNext();
6308 }, 6479 },
6309 loadedAll: function() { 6480 loadedAll: function() {
6310 parser.parseNext(); 6481 parser.parseNext();
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
6386 importer.observer.addCallback = dynamic.added.bind(dynamic); 6557 importer.observer.addCallback = dynamic.added.bind(dynamic);
6387 var matches = HTMLElement.prototype.matches || HTMLElement.prototype.matchesSe lector || HTMLElement.prototype.webkitMatchesSelector || HTMLElement.prototype.m ozMatchesSelector || HTMLElement.prototype.msMatchesSelector; 6558 var matches = HTMLElement.prototype.matches || HTMLElement.prototype.matchesSe lector || HTMLElement.prototype.webkitMatchesSelector || HTMLElement.prototype.m ozMatchesSelector || HTMLElement.prototype.msMatchesSelector;
6388 }); 6559 });
6389 6560
6390 (function(scope) { 6561 (function(scope) {
6391 var initializeModules = scope.initializeModules; 6562 var initializeModules = scope.initializeModules;
6392 var isIE = scope.isIE; 6563 var isIE = scope.isIE;
6393 if (scope.useNative) { 6564 if (scope.useNative) {
6394 return; 6565 return;
6395 } 6566 }
6396 if (isIE && typeof window.CustomEvent !== "function") {
6397 window.CustomEvent = function(inType, params) {
6398 params = params || {};
6399 var e = document.createEvent("CustomEvent");
6400 e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelab le), params.detail);
6401 e.preventDefault = function() {
6402 Object.defineProperty(this, "defaultPrevented", {
6403 get: function() {
6404 return true;
6405 }
6406 });
6407 };
6408 return e;
6409 };
6410 window.CustomEvent.prototype = window.Event.prototype;
6411 }
6412 initializeModules(); 6567 initializeModules();
6413 var rootDocument = scope.rootDocument; 6568 var rootDocument = scope.rootDocument;
6414 function bootstrap() { 6569 function bootstrap() {
6415 window.HTMLImports.importer.bootDocument(rootDocument); 6570 window.HTMLImports.importer.bootDocument(rootDocument);
6416 } 6571 }
6417 if (document.readyState === "complete" || document.readyState === "interactive " && !window.attachEvent) { 6572 if (document.readyState === "complete" || document.readyState === "interactive " && !window.attachEvent) {
6418 bootstrap(); 6573 bootstrap();
6419 } else { 6574 } else {
6420 document.addEventListener("DOMContentLoaded", bootstrap); 6575 document.addEventListener("DOMContentLoaded", bootstrap);
6421 } 6576 }
(...skipping 10 matching lines...) Expand all
6432 modules.push(module); 6587 modules.push(module);
6433 }; 6588 };
6434 var initializeModules = function() { 6589 var initializeModules = function() {
6435 modules.forEach(function(module) { 6590 modules.forEach(function(module) {
6436 module(scope); 6591 module(scope);
6437 }); 6592 });
6438 }; 6593 };
6439 scope.addModule = addModule; 6594 scope.addModule = addModule;
6440 scope.initializeModules = initializeModules; 6595 scope.initializeModules = initializeModules;
6441 scope.hasNative = Boolean(document.registerElement); 6596 scope.hasNative = Boolean(document.registerElement);
6597 scope.isIE = /Trident/.test(navigator.userAgent);
6442 scope.useNative = !flags.register && scope.hasNative && !window.ShadowDOMPolyf ill && (!window.HTMLImports || window.HTMLImports.useNative); 6598 scope.useNative = !flags.register && scope.hasNative && !window.ShadowDOMPolyf ill && (!window.HTMLImports || window.HTMLImports.useNative);
6443 })(window.CustomElements); 6599 })(window.CustomElements);
6444 6600
6445 window.CustomElements.addModule(function(scope) { 6601 window.CustomElements.addModule(function(scope) {
6446 var IMPORT_LINK_TYPE = window.HTMLImports ? window.HTMLImports.IMPORT_LINK_TYP E : "none"; 6602 var IMPORT_LINK_TYPE = window.HTMLImports ? window.HTMLImports.IMPORT_LINK_TYP E : "none";
6447 function forSubtree(node, cb) { 6603 function forSubtree(node, cb) {
6448 findAllElements(node, function(e) { 6604 findAllElements(node, function(e) {
6449 if (cb(e)) { 6605 if (cb(e)) {
6450 return true; 6606 return true;
6451 } 6607 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
6494 cb(doc); 6650 cb(doc);
6495 } 6651 }
6496 scope.forDocumentTree = forDocumentTree; 6652 scope.forDocumentTree = forDocumentTree;
6497 scope.forSubtree = forSubtree; 6653 scope.forSubtree = forSubtree;
6498 }); 6654 });
6499 6655
6500 window.CustomElements.addModule(function(scope) { 6656 window.CustomElements.addModule(function(scope) {
6501 var flags = scope.flags; 6657 var flags = scope.flags;
6502 var forSubtree = scope.forSubtree; 6658 var forSubtree = scope.forSubtree;
6503 var forDocumentTree = scope.forDocumentTree; 6659 var forDocumentTree = scope.forDocumentTree;
6504 function addedNode(node) { 6660 function addedNode(node, isAttached) {
6505 return added(node) || addedSubtree(node); 6661 return added(node, isAttached) || addedSubtree(node, isAttached);
6506 } 6662 }
6507 function added(node) { 6663 function added(node, isAttached) {
6508 if (scope.upgrade(node)) { 6664 if (scope.upgrade(node, isAttached)) {
6509 return true; 6665 return true;
6510 } 6666 }
6511 attached(node); 6667 if (isAttached) {
6668 attached(node);
6669 }
6512 } 6670 }
6513 function addedSubtree(node) { 6671 function addedSubtree(node, isAttached) {
6514 forSubtree(node, function(e) { 6672 forSubtree(node, function(e) {
6515 if (added(e)) { 6673 if (added(e, isAttached)) {
6516 return true; 6674 return true;
6517 } 6675 }
6518 }); 6676 });
6519 } 6677 }
6520 function attachedNode(node) { 6678 var hasThrottledAttached = window.MutationObserver._isPolyfilled && flags["thr ottle-attached"];
6521 attached(node); 6679 scope.hasPolyfillMutations = hasThrottledAttached;
6522 if (inDocument(node)) { 6680 scope.hasThrottledAttached = hasThrottledAttached;
6523 forSubtree(node, function(e) {
6524 attached(e);
6525 });
6526 }
6527 }
6528 var hasPolyfillMutations = !window.MutationObserver || window.MutationObserver === window.JsMutationObserver;
6529 scope.hasPolyfillMutations = hasPolyfillMutations;
6530 var isPendingMutations = false; 6681 var isPendingMutations = false;
6531 var pendingMutations = []; 6682 var pendingMutations = [];
6532 function deferMutation(fn) { 6683 function deferMutation(fn) {
6533 pendingMutations.push(fn); 6684 pendingMutations.push(fn);
6534 if (!isPendingMutations) { 6685 if (!isPendingMutations) {
6535 isPendingMutations = true; 6686 isPendingMutations = true;
6536 setTimeout(takeMutations); 6687 setTimeout(takeMutations);
6537 } 6688 }
6538 } 6689 }
6539 function takeMutations() { 6690 function takeMutations() {
6540 isPendingMutations = false; 6691 isPendingMutations = false;
6541 var $p = pendingMutations; 6692 var $p = pendingMutations;
6542 for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) { 6693 for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) {
6543 p(); 6694 p();
6544 } 6695 }
6545 pendingMutations = []; 6696 pendingMutations = [];
6546 } 6697 }
6547 function attached(element) { 6698 function attached(element) {
6548 if (hasPolyfillMutations) { 6699 if (hasThrottledAttached) {
6549 deferMutation(function() { 6700 deferMutation(function() {
6550 _attached(element); 6701 _attached(element);
6551 }); 6702 });
6552 } else { 6703 } else {
6553 _attached(element); 6704 _attached(element);
6554 } 6705 }
6555 } 6706 }
6556 function _attached(element) { 6707 function _attached(element) {
6557 if (element.__upgraded__ && (element.attachedCallback || element.detachedCal lback)) { 6708 if (element.__upgraded__ && !element.__attached) {
6558 if (!element.__attached && inDocument(element)) { 6709 element.__attached = true;
6559 element.__attached = true; 6710 if (element.attachedCallback) {
6560 if (element.attachedCallback) { 6711 element.attachedCallback();
6561 element.attachedCallback();
6562 }
6563 } 6712 }
6564 } 6713 }
6565 } 6714 }
6566 function detachedNode(node) { 6715 function detachedNode(node) {
6567 detached(node); 6716 detached(node);
6568 forSubtree(node, function(e) { 6717 forSubtree(node, function(e) {
6569 detached(e); 6718 detached(e);
6570 }); 6719 });
6571 } 6720 }
6572 function detached(element) { 6721 function detached(element) {
6573 if (hasPolyfillMutations) { 6722 if (hasThrottledAttached) {
6574 deferMutation(function() { 6723 deferMutation(function() {
6575 _detached(element); 6724 _detached(element);
6576 }); 6725 });
6577 } else { 6726 } else {
6578 _detached(element); 6727 _detached(element);
6579 } 6728 }
6580 } 6729 }
6581 function _detached(element) { 6730 function _detached(element) {
6582 if (element.__upgraded__ && (element.attachedCallback || element.detachedCal lback)) { 6731 if (element.__upgraded__ && element.__attached) {
6583 if (element.__attached && !inDocument(element)) { 6732 element.__attached = false;
6584 element.__attached = false; 6733 if (element.detachedCallback) {
6585 if (element.detachedCallback) { 6734 element.detachedCallback();
6586 element.detachedCallback();
6587 }
6588 } 6735 }
6589 } 6736 }
6590 } 6737 }
6591 function inDocument(element) { 6738 function inDocument(element) {
6592 var p = element; 6739 var p = element;
6593 var doc = wrap(document); 6740 var doc = window.wrap(document);
6594 while (p) { 6741 while (p) {
6595 if (p == doc) { 6742 if (p == doc) {
6596 return true; 6743 return true;
6597 } 6744 }
6598 p = p.parentNode || p.nodeType === Node.DOCUMENT_FRAGMENT_NODE && p.host; 6745 p = p.parentNode || p.nodeType === Node.DOCUMENT_FRAGMENT_NODE && p.host;
6599 } 6746 }
6600 } 6747 }
6601 function watchShadow(node) { 6748 function watchShadow(node) {
6602 if (node.shadowRoot && !node.shadowRoot.__watched) { 6749 if (node.shadowRoot && !node.shadowRoot.__watched) {
6603 flags.dom && console.log("watching shadow-root for: ", node.localName); 6750 flags.dom && console.log("watching shadow-root for: ", node.localName);
6604 var root = node.shadowRoot; 6751 var root = node.shadowRoot;
6605 while (root) { 6752 while (root) {
6606 observe(root); 6753 observe(root);
6607 root = root.olderShadowRoot; 6754 root = root.olderShadowRoot;
6608 } 6755 }
6609 } 6756 }
6610 } 6757 }
6611 function handler(mutations) { 6758 function handler(root, mutations) {
6612 if (flags.dom) { 6759 if (flags.dom) {
6613 var mx = mutations[0]; 6760 var mx = mutations[0];
6614 if (mx && mx.type === "childList" && mx.addedNodes) { 6761 if (mx && mx.type === "childList" && mx.addedNodes) {
6615 if (mx.addedNodes) { 6762 if (mx.addedNodes) {
6616 var d = mx.addedNodes[0]; 6763 var d = mx.addedNodes[0];
6617 while (d && d !== document && !d.host) { 6764 while (d && d !== document && !d.host) {
6618 d = d.parentNode; 6765 d = d.parentNode;
6619 } 6766 }
6620 var u = d && (d.URL || d._URL || d.host && d.host.localName) || ""; 6767 var u = d && (d.URL || d._URL || d.host && d.host.localName) || "";
6621 u = u.split("/?").shift().split("/").pop(); 6768 u = u.split("/?").shift().split("/").pop();
6622 } 6769 }
6623 } 6770 }
6624 console.group("mutations (%d) [%s]", mutations.length, u || ""); 6771 console.group("mutations (%d) [%s]", mutations.length, u || "");
6625 } 6772 }
6773 var isAttached = inDocument(root);
6626 mutations.forEach(function(mx) { 6774 mutations.forEach(function(mx) {
6627 if (mx.type === "childList") { 6775 if (mx.type === "childList") {
6628 forEach(mx.addedNodes, function(n) { 6776 forEach(mx.addedNodes, function(n) {
6629 if (!n.localName) { 6777 if (!n.localName) {
6630 return; 6778 return;
6631 } 6779 }
6632 addedNode(n); 6780 addedNode(n, isAttached);
6633 }); 6781 });
6634 forEach(mx.removedNodes, function(n) { 6782 forEach(mx.removedNodes, function(n) {
6635 if (!n.localName) { 6783 if (!n.localName) {
6636 return; 6784 return;
6637 } 6785 }
6638 detachedNode(n); 6786 detachedNode(n);
6639 }); 6787 });
6640 } 6788 }
6641 }); 6789 });
6642 flags.dom && console.groupEnd(); 6790 flags.dom && console.groupEnd();
6643 } 6791 }
6644 function takeRecords(node) { 6792 function takeRecords(node) {
6645 node = window.wrap(node); 6793 node = window.wrap(node);
6646 if (!node) { 6794 if (!node) {
6647 node = window.wrap(document); 6795 node = window.wrap(document);
6648 } 6796 }
6649 while (node.parentNode) { 6797 while (node.parentNode) {
6650 node = node.parentNode; 6798 node = node.parentNode;
6651 } 6799 }
6652 var observer = node.__observer; 6800 var observer = node.__observer;
6653 if (observer) { 6801 if (observer) {
6654 handler(observer.takeRecords()); 6802 handler(node, observer.takeRecords());
6655 takeMutations(); 6803 takeMutations();
6656 } 6804 }
6657 } 6805 }
6658 var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach); 6806 var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);
6659 function observe(inRoot) { 6807 function observe(inRoot) {
6660 if (inRoot.__observer) { 6808 if (inRoot.__observer) {
6661 return; 6809 return;
6662 } 6810 }
6663 var observer = new MutationObserver(handler); 6811 var observer = new MutationObserver(handler.bind(this, inRoot));
6664 observer.observe(inRoot, { 6812 observer.observe(inRoot, {
6665 childList: true, 6813 childList: true,
6666 subtree: true 6814 subtree: true
6667 }); 6815 });
6668 inRoot.__observer = observer; 6816 inRoot.__observer = observer;
6669 } 6817 }
6670 function upgradeDocument(doc) { 6818 function upgradeDocument(doc) {
6671 doc = window.wrap(doc); 6819 doc = window.wrap(doc);
6672 flags.dom && console.group("upgradeDocument: ", doc.baseURI.split("/").pop() ); 6820 flags.dom && console.group("upgradeDocument: ", doc.baseURI.split("/").pop() );
6673 addedNode(doc); 6821 var isMainDocument = doc === window.wrap(document);
6822 addedNode(doc, isMainDocument);
6674 observe(doc); 6823 observe(doc);
6675 flags.dom && console.groupEnd(); 6824 flags.dom && console.groupEnd();
6676 } 6825 }
6677 function upgradeDocumentTree(doc) { 6826 function upgradeDocumentTree(doc) {
6678 forDocumentTree(doc, upgradeDocument); 6827 forDocumentTree(doc, upgradeDocument);
6679 } 6828 }
6680 var originalCreateShadowRoot = Element.prototype.createShadowRoot; 6829 var originalCreateShadowRoot = Element.prototype.createShadowRoot;
6681 if (originalCreateShadowRoot) { 6830 if (originalCreateShadowRoot) {
6682 Element.prototype.createShadowRoot = function() { 6831 Element.prototype.createShadowRoot = function() {
6683 var root = originalCreateShadowRoot.call(this); 6832 var root = originalCreateShadowRoot.call(this);
6684 window.CustomElements.watchShadow(this); 6833 window.CustomElements.watchShadow(this);
6685 return root; 6834 return root;
6686 }; 6835 };
6687 } 6836 }
6688 scope.watchShadow = watchShadow; 6837 scope.watchShadow = watchShadow;
6689 scope.upgradeDocumentTree = upgradeDocumentTree; 6838 scope.upgradeDocumentTree = upgradeDocumentTree;
6839 scope.upgradeDocument = upgradeDocument;
6690 scope.upgradeSubtree = addedSubtree; 6840 scope.upgradeSubtree = addedSubtree;
6691 scope.upgradeAll = addedNode; 6841 scope.upgradeAll = addedNode;
6692 scope.attachedNode = attachedNode; 6842 scope.attached = attached;
6693 scope.takeRecords = takeRecords; 6843 scope.takeRecords = takeRecords;
6694 }); 6844 });
6695 6845
6696 window.CustomElements.addModule(function(scope) { 6846 window.CustomElements.addModule(function(scope) {
6697 var flags = scope.flags; 6847 var flags = scope.flags;
6698 function upgrade(node) { 6848 function upgrade(node, isAttached) {
6849 if (node.localName === "template") {
6850 if (window.HTMLTemplateElement && HTMLTemplateElement.decorate) {
6851 HTMLTemplateElement.decorate(node);
6852 }
6853 }
6699 if (!node.__upgraded__ && node.nodeType === Node.ELEMENT_NODE) { 6854 if (!node.__upgraded__ && node.nodeType === Node.ELEMENT_NODE) {
6700 var is = node.getAttribute("is"); 6855 var is = node.getAttribute("is");
6701 var definition = scope.getRegisteredDefinition(is || node.localName); 6856 var definition = scope.getRegisteredDefinition(node.localName) || scope.ge tRegisteredDefinition(is);
6702 if (definition) { 6857 if (definition) {
6703 if (is && definition.tag == node.localName) { 6858 if (is && definition.tag == node.localName || !is && !definition.extends ) {
6704 return upgradeWithDefinition(node, definition); 6859 return upgradeWithDefinition(node, definition, isAttached);
6705 } else if (!is && !definition.extends) {
6706 return upgradeWithDefinition(node, definition);
6707 } 6860 }
6708 } 6861 }
6709 } 6862 }
6710 } 6863 }
6711 function upgradeWithDefinition(element, definition) { 6864 function upgradeWithDefinition(element, definition, isAttached) {
6712 flags.upgrade && console.group("upgrade:", element.localName); 6865 flags.upgrade && console.group("upgrade:", element.localName);
6713 if (definition.is) { 6866 if (definition.is) {
6714 element.setAttribute("is", definition.is); 6867 element.setAttribute("is", definition.is);
6715 } 6868 }
6716 implementPrototype(element, definition); 6869 implementPrototype(element, definition);
6717 element.__upgraded__ = true; 6870 element.__upgraded__ = true;
6718 created(element); 6871 created(element);
6719 scope.attachedNode(element); 6872 if (isAttached) {
6720 scope.upgradeSubtree(element); 6873 scope.attached(element);
6874 }
6875 scope.upgradeSubtree(element, isAttached);
6721 flags.upgrade && console.groupEnd(); 6876 flags.upgrade && console.groupEnd();
6722 return element; 6877 return element;
6723 } 6878 }
6724 function implementPrototype(element, definition) { 6879 function implementPrototype(element, definition) {
6725 if (Object.__proto__) { 6880 if (Object.__proto__) {
6726 element.__proto__ = definition.prototype; 6881 element.__proto__ = definition.prototype;
6727 } else { 6882 } else {
6728 customMixin(element, definition.prototype, definition.native); 6883 customMixin(element, definition.prototype, definition.native);
6729 element.__proto__ = definition.prototype; 6884 element.__proto__ = definition.prototype;
6730 } 6885 }
(...skipping 16 matching lines...) Expand all
6747 if (element.createdCallback) { 6902 if (element.createdCallback) {
6748 element.createdCallback(); 6903 element.createdCallback();
6749 } 6904 }
6750 } 6905 }
6751 scope.upgrade = upgrade; 6906 scope.upgrade = upgrade;
6752 scope.upgradeWithDefinition = upgradeWithDefinition; 6907 scope.upgradeWithDefinition = upgradeWithDefinition;
6753 scope.implementPrototype = implementPrototype; 6908 scope.implementPrototype = implementPrototype;
6754 }); 6909 });
6755 6910
6756 window.CustomElements.addModule(function(scope) { 6911 window.CustomElements.addModule(function(scope) {
6757 var isIE11OrOlder = scope.isIE11OrOlder; 6912 var isIE = scope.isIE;
6758 var upgradeDocumentTree = scope.upgradeDocumentTree; 6913 var upgradeDocumentTree = scope.upgradeDocumentTree;
6759 var upgradeAll = scope.upgradeAll; 6914 var upgradeAll = scope.upgradeAll;
6760 var upgradeWithDefinition = scope.upgradeWithDefinition; 6915 var upgradeWithDefinition = scope.upgradeWithDefinition;
6761 var implementPrototype = scope.implementPrototype; 6916 var implementPrototype = scope.implementPrototype;
6762 var useNative = scope.useNative; 6917 var useNative = scope.useNative;
6763 function register(name, options) { 6918 function register(name, options) {
6764 var definition = options || {}; 6919 var definition = options || {};
6765 if (!name) { 6920 if (!name) {
6766 throw new Error("document.registerElement: first argument `name` must not be empty"); 6921 throw new Error("document.registerElement: first argument `name` must not be empty");
6767 } 6922 }
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
6838 definition.tag = baseTag || definition.__name; 6993 definition.tag = baseTag || definition.__name;
6839 if (baseTag) { 6994 if (baseTag) {
6840 definition.is = definition.__name; 6995 definition.is = definition.__name;
6841 } 6996 }
6842 } 6997 }
6843 function resolvePrototypeChain(definition) { 6998 function resolvePrototypeChain(definition) {
6844 if (!Object.__proto__) { 6999 if (!Object.__proto__) {
6845 var nativePrototype = HTMLElement.prototype; 7000 var nativePrototype = HTMLElement.prototype;
6846 if (definition.is) { 7001 if (definition.is) {
6847 var inst = document.createElement(definition.tag); 7002 var inst = document.createElement(definition.tag);
6848 var expectedPrototype = Object.getPrototypeOf(inst); 7003 nativePrototype = Object.getPrototypeOf(inst);
6849 if (expectedPrototype === definition.prototype) {
6850 nativePrototype = expectedPrototype;
6851 }
6852 } 7004 }
6853 var proto = definition.prototype, ancestor; 7005 var proto = definition.prototype, ancestor;
6854 while (proto && proto !== nativePrototype) { 7006 var foundPrototype = false;
7007 while (proto) {
7008 if (proto == nativePrototype) {
7009 foundPrototype = true;
7010 }
6855 ancestor = Object.getPrototypeOf(proto); 7011 ancestor = Object.getPrototypeOf(proto);
6856 proto.__proto__ = ancestor; 7012 if (ancestor) {
7013 proto.__proto__ = ancestor;
7014 }
6857 proto = ancestor; 7015 proto = ancestor;
6858 } 7016 }
7017 if (!foundPrototype) {
7018 console.warn(definition.tag + " prototype not found in prototype chain f or " + definition.is);
7019 }
6859 definition.native = nativePrototype; 7020 definition.native = nativePrototype;
6860 } 7021 }
6861 } 7022 }
6862 function instantiate(definition) { 7023 function instantiate(definition) {
6863 return upgradeWithDefinition(domCreateElement(definition.tag), definition); 7024 return upgradeWithDefinition(domCreateElement(definition.tag), definition);
6864 } 7025 }
6865 var registry = {}; 7026 var registry = {};
6866 function getRegisteredDefinition(name) { 7027 function getRegisteredDefinition(name) {
6867 if (name) { 7028 if (name) {
6868 return registry[name.toLowerCase()]; 7029 return registry[name.toLowerCase()];
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
6910 if (tag.indexOf("-") >= 0) { 7071 if (tag.indexOf("-") >= 0) {
6911 implementPrototype(element, HTMLElement); 7072 implementPrototype(element, HTMLElement);
6912 } 7073 }
6913 return element; 7074 return element;
6914 } 7075 }
6915 var domCreateElement = document.createElement.bind(document); 7076 var domCreateElement = document.createElement.bind(document);
6916 var domCreateElementNS = document.createElementNS.bind(document); 7077 var domCreateElementNS = document.createElementNS.bind(document);
6917 var isInstance; 7078 var isInstance;
6918 if (!Object.__proto__ && !useNative) { 7079 if (!Object.__proto__ && !useNative) {
6919 isInstance = function(obj, ctor) { 7080 isInstance = function(obj, ctor) {
7081 if (obj instanceof ctor) {
7082 return true;
7083 }
6920 var p = obj; 7084 var p = obj;
6921 while (p) { 7085 while (p) {
6922 if (p === ctor.prototype) { 7086 if (p === ctor.prototype) {
6923 return true; 7087 return true;
6924 } 7088 }
6925 p = p.__proto__; 7089 p = p.__proto__;
6926 } 7090 }
6927 return false; 7091 return false;
6928 }; 7092 };
6929 } else { 7093 } else {
6930 isInstance = function(obj, base) { 7094 isInstance = function(obj, base) {
6931 return obj instanceof base; 7095 return obj instanceof base;
6932 }; 7096 };
6933 } 7097 }
6934 function wrapDomMethodToForceUpgrade(obj, methodName) { 7098 function wrapDomMethodToForceUpgrade(obj, methodName) {
6935 var orig = obj[methodName]; 7099 var orig = obj[methodName];
6936 obj[methodName] = function() { 7100 obj[methodName] = function() {
6937 var n = orig.apply(this, arguments); 7101 var n = orig.apply(this, arguments);
6938 upgradeAll(n); 7102 upgradeAll(n);
6939 return n; 7103 return n;
6940 }; 7104 };
6941 } 7105 }
6942 wrapDomMethodToForceUpgrade(Node.prototype, "cloneNode"); 7106 wrapDomMethodToForceUpgrade(Node.prototype, "cloneNode");
6943 wrapDomMethodToForceUpgrade(document, "importNode"); 7107 wrapDomMethodToForceUpgrade(document, "importNode");
6944 if (isIE11OrOlder) { 7108 if (isIE) {
6945 (function() { 7109 (function() {
6946 var importNode = document.importNode; 7110 var importNode = document.importNode;
6947 document.importNode = function() { 7111 document.importNode = function() {
6948 var n = importNode.apply(document, arguments); 7112 var n = importNode.apply(document, arguments);
6949 if (n.nodeType == n.DOCUMENT_FRAGMENT_NODE) { 7113 if (n.nodeType == n.DOCUMENT_FRAGMENT_NODE) {
6950 var f = document.createDocumentFragment(); 7114 var f = document.createDocumentFragment();
6951 f.appendChild(n); 7115 f.appendChild(n);
6952 return f; 7116 return f;
6953 } else { 7117 } else {
6954 return n; 7118 return n;
6955 } 7119 }
6956 }; 7120 };
6957 })(); 7121 })();
6958 } 7122 }
6959 document.registerElement = register; 7123 document.registerElement = register;
6960 document.createElement = createElement; 7124 document.createElement = createElement;
6961 document.createElementNS = createElementNS; 7125 document.createElementNS = createElementNS;
6962 scope.registry = registry; 7126 scope.registry = registry;
6963 scope.instanceof = isInstance; 7127 scope.instanceof = isInstance;
6964 scope.reservedTagList = reservedTagList; 7128 scope.reservedTagList = reservedTagList;
6965 scope.getRegisteredDefinition = getRegisteredDefinition; 7129 scope.getRegisteredDefinition = getRegisteredDefinition;
6966 document.register = document.registerElement; 7130 document.register = document.registerElement;
6967 }); 7131 });
6968 7132
6969 (function(scope) { 7133 (function(scope) {
6970 var useNative = scope.useNative; 7134 var useNative = scope.useNative;
6971 var initializeModules = scope.initializeModules; 7135 var initializeModules = scope.initializeModules;
6972 var isIE11OrOlder = /Trident/.test(navigator.userAgent); 7136 var isIE = scope.isIE;
6973 if (useNative) { 7137 if (useNative) {
6974 var nop = function() {}; 7138 var nop = function() {};
6975 scope.watchShadow = nop; 7139 scope.watchShadow = nop;
6976 scope.upgrade = nop; 7140 scope.upgrade = nop;
6977 scope.upgradeAll = nop; 7141 scope.upgradeAll = nop;
6978 scope.upgradeDocumentTree = nop; 7142 scope.upgradeDocumentTree = nop;
6979 scope.upgradeSubtree = nop; 7143 scope.upgradeSubtree = nop;
6980 scope.takeRecords = nop; 7144 scope.takeRecords = nop;
6981 scope.instanceof = function(obj, base) { 7145 scope.instanceof = function(obj, base) {
6982 return obj instanceof base; 7146 return obj instanceof base;
6983 }; 7147 };
6984 } else { 7148 } else {
6985 initializeModules(); 7149 initializeModules();
6986 } 7150 }
6987 var upgradeDocumentTree = scope.upgradeDocumentTree; 7151 var upgradeDocumentTree = scope.upgradeDocumentTree;
7152 var upgradeDocument = scope.upgradeDocument;
6988 if (!window.wrap) { 7153 if (!window.wrap) {
6989 if (window.ShadowDOMPolyfill) { 7154 if (window.ShadowDOMPolyfill) {
6990 window.wrap = window.ShadowDOMPolyfill.wrapIfNeeded; 7155 window.wrap = window.ShadowDOMPolyfill.wrapIfNeeded;
6991 window.unwrap = window.ShadowDOMPolyfill.unwrapIfNeeded; 7156 window.unwrap = window.ShadowDOMPolyfill.unwrapIfNeeded;
6992 } else { 7157 } else {
6993 window.wrap = window.unwrap = function(node) { 7158 window.wrap = window.unwrap = function(node) {
6994 return node; 7159 return node;
6995 }; 7160 };
6996 } 7161 }
6997 } 7162 }
7163 if (window.HTMLImports) {
7164 window.HTMLImports.__importsParsingHook = function(elt) {
7165 if (elt.import) {
7166 upgradeDocument(wrap(elt.import));
7167 }
7168 };
7169 }
6998 function bootstrap() { 7170 function bootstrap() {
6999 upgradeDocumentTree(window.wrap(document)); 7171 upgradeDocumentTree(window.wrap(document));
7000 if (window.HTMLImports) {
7001 window.HTMLImports.__importsParsingHook = function(elt) {
7002 upgradeDocumentTree(wrap(elt.import));
7003 };
7004 }
7005 window.CustomElements.ready = true; 7172 window.CustomElements.ready = true;
7006 setTimeout(function() { 7173 var requestAnimationFrame = window.requestAnimationFrame || function(f) {
7007 window.CustomElements.readyTime = Date.now(); 7174 setTimeout(f, 16);
7008 if (window.HTMLImports) { 7175 };
7009 window.CustomElements.elapsed = window.CustomElements.readyTime - window .HTMLImports.readyTime; 7176 requestAnimationFrame(function() {
7010 } 7177 setTimeout(function() {
7011 document.dispatchEvent(new CustomEvent("WebComponentsReady", { 7178 window.CustomElements.readyTime = Date.now();
7012 bubbles: true 7179 if (window.HTMLImports) {
7013 })); 7180 window.CustomElements.elapsed = window.CustomElements.readyTime - wind ow.HTMLImports.readyTime;
7181 }
7182 document.dispatchEvent(new CustomEvent("WebComponentsReady", {
7183 bubbles: true
7184 }));
7185 });
7014 }); 7186 });
7015 } 7187 }
7016 if (isIE11OrOlder && typeof window.CustomEvent !== "function") {
7017 window.CustomEvent = function(inType, params) {
7018 params = params || {};
7019 var e = document.createEvent("CustomEvent");
7020 e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelab le), params.detail);
7021 e.preventDefault = function() {
7022 Object.defineProperty(this, "defaultPrevented", {
7023 get: function() {
7024 return true;
7025 }
7026 });
7027 };
7028 return e;
7029 };
7030 window.CustomEvent.prototype = window.Event.prototype;
7031 }
7032 if (document.readyState === "complete" || scope.flags.eager) { 7188 if (document.readyState === "complete" || scope.flags.eager) {
7033 bootstrap(); 7189 bootstrap();
7034 } else if (document.readyState === "interactive" && !window.attachEvent && (!w indow.HTMLImports || window.HTMLImports.ready)) { 7190 } else if (document.readyState === "interactive" && !window.attachEvent && (!w indow.HTMLImports || window.HTMLImports.ready)) {
7035 bootstrap(); 7191 bootstrap();
7036 } else { 7192 } else {
7037 var loadEvent = window.HTMLImports && !window.HTMLImports.ready ? "HTMLImpor tsLoaded" : "DOMContentLoaded"; 7193 var loadEvent = window.HTMLImports && !window.HTMLImports.ready ? "HTMLImpor tsLoaded" : "DOMContentLoaded";
7038 window.addEventListener(loadEvent, bootstrap); 7194 window.addEventListener(loadEvent, bootstrap);
7039 } 7195 }
7040 scope.isIE11OrOlder = isIE11OrOlder;
7041 })(window.CustomElements); 7196 })(window.CustomElements);
7042 7197
7043 (function(scope) { 7198 (function(scope) {
7044 if (!Function.prototype.bind) { 7199 if (!Function.prototype.bind) {
7045 Function.prototype.bind = function(scope) { 7200 Function.prototype.bind = function(scope) {
7046 var self = this; 7201 var self = this;
7047 var args = Array.prototype.slice.call(arguments, 1); 7202 var args = Array.prototype.slice.call(arguments, 1);
7048 return function() { 7203 return function() {
7049 var args2 = args.slice(); 7204 var args2 = args.slice();
7050 args2.push.apply(args2, arguments); 7205 args2.push.apply(args2, arguments);
7051 return self.apply(scope, args2); 7206 return self.apply(scope, args2);
7052 }; 7207 };
7053 }; 7208 };
7054 } 7209 }
7055 })(window.WebComponents); 7210 })(window.WebComponents);
7056 7211
7057 (function(scope) { 7212 (function(scope) {
7058 "use strict";
7059 if (!window.performance) {
7060 var start = Date.now();
7061 window.performance = {
7062 now: function() {
7063 return Date.now() - start;
7064 }
7065 };
7066 }
7067 if (!window.requestAnimationFrame) {
7068 window.requestAnimationFrame = function() {
7069 var nativeRaf = window.webkitRequestAnimationFrame || window.mozRequestAni mationFrame;
7070 return nativeRaf ? function(callback) {
7071 return nativeRaf(function() {
7072 callback(performance.now());
7073 });
7074 } : function(callback) {
7075 return window.setTimeout(callback, 1e3 / 60);
7076 };
7077 }();
7078 }
7079 if (!window.cancelAnimationFrame) {
7080 window.cancelAnimationFrame = function() {
7081 return window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || function(id) {
7082 clearTimeout(id);
7083 };
7084 }();
7085 }
7086 var elementDeclarations = [];
7087 var polymerStub = function(name, dictionary) {
7088 if (typeof name !== "string" && arguments.length === 1) {
7089 Array.prototype.push.call(arguments, document._currentScript);
7090 }
7091 elementDeclarations.push(arguments);
7092 };
7093 window.Polymer = polymerStub;
7094 scope.consumeDeclarations = function(callback) {
7095 scope.consumeDeclarations = function() {
7096 throw "Possible attempt to load Polymer twice";
7097 };
7098 if (callback) {
7099 callback(elementDeclarations);
7100 }
7101 elementDeclarations = null;
7102 };
7103 function installPolymerWarning() {
7104 if (window.Polymer === polymerStub) {
7105 window.Polymer = function() {
7106 throw new Error("You tried to use polymer without loading it first. To " + 'load polymer, <link rel="import" href="' + 'components/polymer/polymer.html" >');
7107 };
7108 }
7109 }
7110 if (HTMLImports.useNative) {
7111 installPolymerWarning();
7112 } else {
7113 window.addEventListener("DOMContentLoaded", installPolymerWarning);
7114 }
7115 })(window.WebComponents);
7116
7117 (function(scope) {
7118 var style = document.createElement("style"); 7213 var style = document.createElement("style");
7119 style.textContent = "" + "body {" + "transition: opacity ease-in 0.2s;" + " } \n" + "body[unresolved] {" + "opacity: 0; display: block; overflow: hidden; posi tion: relative;" + " } \n"; 7214 style.textContent = "" + "body {" + "transition: opacity ease-in 0.2s;" + " } \n" + "body[unresolved] {" + "opacity: 0; display: block; overflow: hidden; posi tion: relative;" + " } \n";
7120 var head = document.querySelector("head"); 7215 var head = document.querySelector("head");
7121 head.insertBefore(style, head.firstChild); 7216 head.insertBefore(style, head.firstChild);
7122 })(window.WebComponents); 7217 })(window.WebComponents);
7123 7218
7124 (function(scope) { 7219 (function(scope) {
7125 window.Platform = scope; 7220 window.Platform = scope;
7126 })(window.WebComponents); 7221 })(window.WebComponents);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698