OLD | NEW |
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.22 | 10 // @version 0.6.1 |
11 (function() { | 11 window.WebComponents = window.WebComponents || {}; |
12 window.WebComponents = window.WebComponents || { | 12 |
13 flags: {} | 13 (function(scope) { |
14 }; | 14 var flags = scope.flags || {}; |
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 = {}; | |
18 if (!flags.noOpts) { | 17 if (!flags.noOpts) { |
19 location.search.slice(1).split("&").forEach(function(option) { | 18 location.search.slice(1).split("&").forEach(function(o) { |
20 var parts = option.split("="); | 19 o = o.split("="); |
21 var match; | 20 o[0] && (flags[o[0]] = o[1] || true); |
22 if (parts[0] && (match = parts[0].match(/wc-(.+)/))) { | |
23 flags[match[1]] = parts[1] || true; | |
24 } | |
25 }); | 21 }); |
26 if (script) { | 22 if (script) { |
27 for (var i = 0, a; a = script.attributes[i]; i++) { | 23 for (var i = 0, a; a = script.attributes[i]; i++) { |
28 if (a.name !== "src") { | 24 if (a.name !== "src") { |
29 flags[a.name] = a.value || true; | 25 flags[a.name] = a.value || true; |
30 } | 26 } |
31 } | 27 } |
32 } | 28 } |
33 if (flags.log && flags.log.split) { | 29 if (flags.log && flags.log.split) { |
34 var parts = flags.log.split(","); | 30 var parts = flags.log.split(","); |
(...skipping 10 matching lines...) Expand all Loading... |
45 flags.shadow = false; | 41 flags.shadow = false; |
46 } else { | 42 } else { |
47 flags.shadow = flags.shadow || !HTMLElement.prototype.createShadowRoot; | 43 flags.shadow = flags.shadow || !HTMLElement.prototype.createShadowRoot; |
48 } | 44 } |
49 if (flags.register) { | 45 if (flags.register) { |
50 window.CustomElements = window.CustomElements || { | 46 window.CustomElements = window.CustomElements || { |
51 flags: {} | 47 flags: {} |
52 }; | 48 }; |
53 window.CustomElements.flags.register = flags.register; | 49 window.CustomElements.flags.register = flags.register; |
54 } | 50 } |
55 WebComponents.flags = flags; | 51 scope.flags = flags; |
56 })(); | 52 })(WebComponents); |
57 | 53 |
58 if (WebComponents.flags.shadow) { | 54 if (WebComponents.flags.shadow) { |
59 if (typeof WeakMap === "undefined") { | 55 if (typeof WeakMap === "undefined") { |
60 (function() { | 56 (function() { |
61 var defineProperty = Object.defineProperty; | 57 var defineProperty = Object.defineProperty; |
62 var counter = Date.now() % 1e9; | 58 var counter = Date.now() % 1e9; |
63 var WeakMap = function() { | 59 var WeakMap = function() { |
64 this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__"); | 60 this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__"); |
65 }; | 61 }; |
66 WeakMap.prototype = { | 62 WeakMap.prototype = { |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 value: undefined, | 148 value: undefined, |
153 configurable: true, | 149 configurable: true, |
154 enumerable: false, | 150 enumerable: false, |
155 writable: true | 151 writable: true |
156 }; | 152 }; |
157 function defineNonEnumerableDataProperty(object, name, value) { | 153 function defineNonEnumerableDataProperty(object, name, value) { |
158 nonEnumerableDataDescriptor.value = value; | 154 nonEnumerableDataDescriptor.value = value; |
159 defineProperty(object, name, nonEnumerableDataDescriptor); | 155 defineProperty(object, name, nonEnumerableDataDescriptor); |
160 } | 156 } |
161 getOwnPropertyNames(window); | 157 getOwnPropertyNames(window); |
162 function getWrapperConstructor(node, opt_instance) { | 158 function getWrapperConstructor(node) { |
163 var nativePrototype = node.__proto__ || Object.getPrototypeOf(node); | 159 var nativePrototype = node.__proto__ || Object.getPrototypeOf(node); |
164 if (isFirefox) { | 160 if (isFirefox) { |
165 try { | 161 try { |
166 getOwnPropertyNames(nativePrototype); | 162 getOwnPropertyNames(nativePrototype); |
167 } catch (error) { | 163 } catch (error) { |
168 nativePrototype = nativePrototype.__proto__; | 164 nativePrototype = nativePrototype.__proto__; |
169 } | 165 } |
170 } | 166 } |
171 var wrapperConstructor = constructorTable.get(nativePrototype); | 167 var wrapperConstructor = constructorTable.get(nativePrototype); |
172 if (wrapperConstructor) return wrapperConstructor; | 168 if (wrapperConstructor) return wrapperConstructor; |
173 var parentWrapperConstructor = getWrapperConstructor(nativePrototype); | 169 var parentWrapperConstructor = getWrapperConstructor(nativePrototype); |
174 var GeneratedWrapper = createWrapperConstructor(parentWrapperConstructor); | 170 var GeneratedWrapper = createWrapperConstructor(parentWrapperConstructor); |
175 registerInternal(nativePrototype, GeneratedWrapper, opt_instance); | 171 registerInternal(nativePrototype, GeneratedWrapper, node); |
176 return GeneratedWrapper; | 172 return GeneratedWrapper; |
177 } | 173 } |
178 function addForwardingProperties(nativePrototype, wrapperPrototype) { | 174 function addForwardingProperties(nativePrototype, wrapperPrototype) { |
179 installProperty(nativePrototype, wrapperPrototype, true); | 175 installProperty(nativePrototype, wrapperPrototype, true); |
180 } | 176 } |
181 function registerInstanceProperties(wrapperPrototype, instanceObject) { | 177 function registerInstanceProperties(wrapperPrototype, instanceObject) { |
182 installProperty(instanceObject, wrapperPrototype, false); | 178 installProperty(instanceObject, wrapperPrototype, false); |
183 } | 179 } |
184 var isFirefox = /Firefox/.test(navigator.userAgent); | 180 var isFirefox = /Firefox/.test(navigator.userAgent); |
185 var dummyDescriptor = { | 181 var dummyDescriptor = { |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 for (var i = 0; i < names.length; i++) { | 221 for (var i = 0; i < names.length; i++) { |
226 var name = names[i]; | 222 var name = names[i]; |
227 if (name === "polymerBlackList_") continue; | 223 if (name === "polymerBlackList_") continue; |
228 if (name in target) continue; | 224 if (name in target) continue; |
229 if (source.polymerBlackList_ && source.polymerBlackList_[name]) continue
; | 225 if (source.polymerBlackList_ && source.polymerBlackList_[name]) continue
; |
230 if (isFirefox) { | 226 if (isFirefox) { |
231 source.__lookupGetter__(name); | 227 source.__lookupGetter__(name); |
232 } | 228 } |
233 var descriptor = getDescriptor(source, name); | 229 var descriptor = getDescriptor(source, name); |
234 var getter, setter; | 230 var getter, setter; |
235 if (typeof descriptor.value === "function") { | 231 if (allowMethod && typeof descriptor.value === "function") { |
236 if (allowMethod) { | 232 target[name] = getMethod(name); |
237 target[name] = getMethod(name); | |
238 } | |
239 continue; | 233 continue; |
240 } | 234 } |
241 var isEvent = isEventHandlerName(name); | 235 var isEvent = isEventHandlerName(name); |
242 if (isEvent) getter = scope.getEventHandlerGetter(name); else getter = g
etGetter(name); | 236 if (isEvent) getter = scope.getEventHandlerGetter(name); else getter = g
etGetter(name); |
243 if (descriptor.writable || descriptor.set || isBrokenSafari) { | 237 if (descriptor.writable || descriptor.set || isBrokenSafari) { |
244 if (isEvent) setter = scope.getEventHandlerSetter(name); else setter =
getSetter(name); | 238 if (isEvent) setter = scope.getEventHandlerSetter(name); else setter =
getSetter(name); |
245 } | 239 } |
246 var configurable = isBrokenSafari || descriptor.configurable; | 240 var configurable = isBrokenSafari || descriptor.configurable; |
247 defineProperty(target, name, { | 241 defineProperty(target, name, { |
248 get: getter, | 242 get: getter, |
249 set: setter, | 243 set: setter, |
250 configurable: configurable, | 244 configurable: configurable, |
251 enumerable: descriptor.enumerable | 245 enumerable: descriptor.enumerable |
252 }); | 246 }); |
253 } | 247 } |
254 } | 248 } |
255 function register(nativeConstructor, wrapperConstructor, opt_instance) { | 249 function register(nativeConstructor, wrapperConstructor, opt_instance) { |
256 if (nativeConstructor == null) { | |
257 return; | |
258 } | |
259 var nativePrototype = nativeConstructor.prototype; | 250 var nativePrototype = nativeConstructor.prototype; |
260 registerInternal(nativePrototype, wrapperConstructor, opt_instance); | 251 registerInternal(nativePrototype, wrapperConstructor, opt_instance); |
261 mixinStatics(wrapperConstructor, nativeConstructor); | 252 mixinStatics(wrapperConstructor, nativeConstructor); |
262 } | 253 } |
263 function registerInternal(nativePrototype, wrapperConstructor, opt_instance)
{ | 254 function registerInternal(nativePrototype, wrapperConstructor, opt_instance)
{ |
264 var wrapperPrototype = wrapperConstructor.prototype; | 255 var wrapperPrototype = wrapperConstructor.prototype; |
265 assert(constructorTable.get(nativePrototype) === undefined); | 256 assert(constructorTable.get(nativePrototype) === undefined); |
266 constructorTable.set(nativePrototype, wrapperConstructor); | 257 constructorTable.set(nativePrototype, wrapperConstructor); |
267 nativePrototypeTable.set(wrapperPrototype, nativePrototype); | 258 nativePrototypeTable.set(wrapperPrototype, nativePrototype); |
268 addForwardingProperties(nativePrototype, wrapperPrototype); | 259 addForwardingProperties(nativePrototype, wrapperPrototype); |
(...skipping 22 matching lines...) Expand all Loading... |
291 } | 282 } |
292 function isWrapper(object) { | 283 function isWrapper(object) { |
293 return object && object.__impl4cf1e782hg__; | 284 return object && object.__impl4cf1e782hg__; |
294 } | 285 } |
295 function isNative(object) { | 286 function isNative(object) { |
296 return !isWrapper(object); | 287 return !isWrapper(object); |
297 } | 288 } |
298 function wrap(impl) { | 289 function wrap(impl) { |
299 if (impl === null) return null; | 290 if (impl === null) return null; |
300 assert(isNative(impl)); | 291 assert(isNative(impl)); |
301 var wrapper = impl.__wrapper8e3dd93a60__; | 292 return impl.__wrapper8e3dd93a60__ || (impl.__wrapper8e3dd93a60__ = new (ge
tWrapperConstructor(impl))(impl)); |
302 if (wrapper != null) { | |
303 return wrapper; | |
304 } | |
305 return impl.__wrapper8e3dd93a60__ = new (getWrapperConstructor(impl, impl)
)(impl); | |
306 } | 293 } |
307 function unwrap(wrapper) { | 294 function unwrap(wrapper) { |
308 if (wrapper === null) return null; | 295 if (wrapper === null) return null; |
309 assert(isWrapper(wrapper)); | 296 assert(isWrapper(wrapper)); |
310 return wrapper.__impl4cf1e782hg__; | 297 return wrapper.__impl4cf1e782hg__; |
311 } | 298 } |
312 function unsafeUnwrap(wrapper) { | 299 function unsafeUnwrap(wrapper) { |
313 return wrapper.__impl4cf1e782hg__; | 300 return wrapper.__impl4cf1e782hg__; |
314 } | 301 } |
315 function setWrapper(impl, wrapper) { | 302 function setWrapper(impl, wrapper) { |
(...skipping 29 matching lines...) Expand all Loading... |
345 function forwardMethodsToWrapper(constructors, names) { | 332 function forwardMethodsToWrapper(constructors, names) { |
346 constructors.forEach(function(constructor) { | 333 constructors.forEach(function(constructor) { |
347 names.forEach(function(name) { | 334 names.forEach(function(name) { |
348 constructor.prototype[name] = function() { | 335 constructor.prototype[name] = function() { |
349 var w = wrapIfNeeded(this); | 336 var w = wrapIfNeeded(this); |
350 return w[name].apply(w, arguments); | 337 return w[name].apply(w, arguments); |
351 }; | 338 }; |
352 }); | 339 }); |
353 }); | 340 }); |
354 } | 341 } |
355 scope.addForwardingProperties = addForwardingProperties; | |
356 scope.assert = assert; | 342 scope.assert = assert; |
357 scope.constructorTable = constructorTable; | 343 scope.constructorTable = constructorTable; |
358 scope.defineGetter = defineGetter; | 344 scope.defineGetter = defineGetter; |
359 scope.defineWrapGetter = defineWrapGetter; | 345 scope.defineWrapGetter = defineWrapGetter; |
360 scope.forwardMethodsToWrapper = forwardMethodsToWrapper; | 346 scope.forwardMethodsToWrapper = forwardMethodsToWrapper; |
361 scope.isIdentifierName = isIdentifierName; | 347 scope.isIdentifierName = isIdentifierName; |
362 scope.isWrapper = isWrapper; | 348 scope.isWrapper = isWrapper; |
363 scope.isWrapperFor = isWrapperFor; | 349 scope.isWrapperFor = isWrapperFor; |
364 scope.mixin = mixin; | 350 scope.mixin = mixin; |
365 scope.nativePrototypeTable = nativePrototypeTable; | 351 scope.nativePrototypeTable = nativePrototypeTable; |
(...skipping 787 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1153 return eventPath.slice(); | 1139 return eventPath.slice(); |
1154 }, | 1140 }, |
1155 stopPropagation: function() { | 1141 stopPropagation: function() { |
1156 stopPropagationTable.set(this, true); | 1142 stopPropagationTable.set(this, true); |
1157 }, | 1143 }, |
1158 stopImmediatePropagation: function() { | 1144 stopImmediatePropagation: function() { |
1159 stopPropagationTable.set(this, true); | 1145 stopPropagationTable.set(this, true); |
1160 stopImmediatePropagationTable.set(this, true); | 1146 stopImmediatePropagationTable.set(this, true); |
1161 } | 1147 } |
1162 }; | 1148 }; |
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 } | |
1181 registerWrapper(OriginalEvent, Event, document.createEvent("Event")); | 1149 registerWrapper(OriginalEvent, Event, document.createEvent("Event")); |
1182 function unwrapOptions(options) { | 1150 function unwrapOptions(options) { |
1183 if (!options || !options.relatedTarget) return options; | 1151 if (!options || !options.relatedTarget) return options; |
1184 return Object.create(options, { | 1152 return Object.create(options, { |
1185 relatedTarget: { | 1153 relatedTarget: { |
1186 value: unwrap(options.relatedTarget) | 1154 value: unwrap(options.relatedTarget) |
1187 } | 1155 } |
1188 }); | 1156 }); |
1189 } | 1157 } |
1190 function registerGenericEvent(name, SuperEvent, prototype) { | 1158 function registerGenericEvent(name, SuperEvent, prototype) { |
(...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1794 this.previousSibling_ = undefined; | 1762 this.previousSibling_ = undefined; |
1795 this.treeScope_ = undefined; | 1763 this.treeScope_ = undefined; |
1796 } | 1764 } |
1797 var OriginalDocumentFragment = window.DocumentFragment; | 1765 var OriginalDocumentFragment = window.DocumentFragment; |
1798 var originalAppendChild = OriginalNode.prototype.appendChild; | 1766 var originalAppendChild = OriginalNode.prototype.appendChild; |
1799 var originalCompareDocumentPosition = OriginalNode.prototype.compareDocument
Position; | 1767 var originalCompareDocumentPosition = OriginalNode.prototype.compareDocument
Position; |
1800 var originalIsEqualNode = OriginalNode.prototype.isEqualNode; | 1768 var originalIsEqualNode = OriginalNode.prototype.isEqualNode; |
1801 var originalInsertBefore = OriginalNode.prototype.insertBefore; | 1769 var originalInsertBefore = OriginalNode.prototype.insertBefore; |
1802 var originalRemoveChild = OriginalNode.prototype.removeChild; | 1770 var originalRemoveChild = OriginalNode.prototype.removeChild; |
1803 var originalReplaceChild = OriginalNode.prototype.replaceChild; | 1771 var originalReplaceChild = OriginalNode.prototype.replaceChild; |
1804 var isIEOrEdge = /Trident|Edge/.test(navigator.userAgent); | 1772 var isIe = /Trident|Edge/.test(navigator.userAgent); |
1805 var removeChildOriginalHelper = isIEOrEdge ? function(parent, child) { | 1773 var removeChildOriginalHelper = isIe ? function(parent, child) { |
1806 try { | 1774 try { |
1807 originalRemoveChild.call(parent, child); | 1775 originalRemoveChild.call(parent, child); |
1808 } catch (ex) { | 1776 } catch (ex) { |
1809 if (!(parent instanceof OriginalDocumentFragment)) throw ex; | 1777 if (!(parent instanceof OriginalDocumentFragment)) throw ex; |
1810 } | 1778 } |
1811 } : function(parent, child) { | 1779 } : function(parent, child) { |
1812 originalRemoveChild.call(parent, child); | 1780 originalRemoveChild.call(parent, child); |
1813 }; | 1781 }; |
1814 Node.prototype = Object.create(EventTarget.prototype); | 1782 Node.prototype = Object.create(EventTarget.prototype); |
1815 mixin(Node.prototype, { | 1783 mixin(Node.prototype, { |
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2305 } | 2273 } |
2306 }; | 2274 }; |
2307 var ChildNodeInterface = { | 2275 var ChildNodeInterface = { |
2308 get nextElementSibling() { | 2276 get nextElementSibling() { |
2309 return forwardElement(this.nextSibling); | 2277 return forwardElement(this.nextSibling); |
2310 }, | 2278 }, |
2311 get previousElementSibling() { | 2279 get previousElementSibling() { |
2312 return backwardsElement(this.previousSibling); | 2280 return backwardsElement(this.previousSibling); |
2313 } | 2281 } |
2314 }; | 2282 }; |
2315 var NonElementParentNodeInterface = { | |
2316 getElementById: function(id) { | |
2317 if (/[ \t\n\r\f]/.test(id)) return null; | |
2318 return this.querySelector('[id="' + id + '"]'); | |
2319 } | |
2320 }; | |
2321 scope.ChildNodeInterface = ChildNodeInterface; | 2283 scope.ChildNodeInterface = ChildNodeInterface; |
2322 scope.NonElementParentNodeInterface = NonElementParentNodeInterface; | |
2323 scope.ParentNodeInterface = ParentNodeInterface; | 2284 scope.ParentNodeInterface = ParentNodeInterface; |
2324 })(window.ShadowDOMPolyfill); | 2285 })(window.ShadowDOMPolyfill); |
2325 (function(scope) { | 2286 (function(scope) { |
2326 "use strict"; | 2287 "use strict"; |
2327 var ChildNodeInterface = scope.ChildNodeInterface; | 2288 var ChildNodeInterface = scope.ChildNodeInterface; |
2328 var Node = scope.wrappers.Node; | 2289 var Node = scope.wrappers.Node; |
2329 var enqueueMutation = scope.enqueueMutation; | 2290 var enqueueMutation = scope.enqueueMutation; |
2330 var mixin = scope.mixin; | 2291 var mixin = scope.mixin; |
2331 var registerWrapper = scope.registerWrapper; | 2292 var registerWrapper = scope.registerWrapper; |
2332 var unsafeUnwrap = scope.unsafeUnwrap; | 2293 var unsafeUnwrap = scope.unsafeUnwrap; |
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2588 } | 2549 } |
2589 function makeSet(arr) { | 2550 function makeSet(arr) { |
2590 var set = {}; | 2551 var set = {}; |
2591 for (var i = 0; i < arr.length; i++) { | 2552 for (var i = 0; i < arr.length; i++) { |
2592 set[arr[i]] = true; | 2553 set[arr[i]] = true; |
2593 } | 2554 } |
2594 return set; | 2555 return set; |
2595 } | 2556 } |
2596 var voidElements = makeSet([ "area", "base", "br", "col", "command", "embed"
, "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "w
br" ]); | 2557 var voidElements = makeSet([ "area", "base", "br", "col", "command", "embed"
, "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "w
br" ]); |
2597 var plaintextParents = makeSet([ "style", "script", "xmp", "iframe", "noembe
d", "noframes", "plaintext", "noscript" ]); | 2558 var plaintextParents = makeSet([ "style", "script", "xmp", "iframe", "noembe
d", "noframes", "plaintext", "noscript" ]); |
2598 var XHTML_NS = "http://www.w3.org/1999/xhtml"; | |
2599 function needsSelfClosingSlash(node) { | |
2600 if (node.namespaceURI !== XHTML_NS) return true; | |
2601 var doctype = node.ownerDocument.doctype; | |
2602 return doctype && doctype.publicId && doctype.systemId; | |
2603 } | |
2604 function getOuterHTML(node, parentNode) { | 2559 function getOuterHTML(node, parentNode) { |
2605 switch (node.nodeType) { | 2560 switch (node.nodeType) { |
2606 case Node.ELEMENT_NODE: | 2561 case Node.ELEMENT_NODE: |
2607 var tagName = node.tagName.toLowerCase(); | 2562 var tagName = node.tagName.toLowerCase(); |
2608 var s = "<" + tagName; | 2563 var s = "<" + tagName; |
2609 var attrs = node.attributes; | 2564 var attrs = node.attributes; |
2610 for (var i = 0, attr; attr = attrs[i]; i++) { | 2565 for (var i = 0, attr; attr = attrs[i]; i++) { |
2611 s += " " + attr.name + '="' + escapeAttr(attr.value) + '"'; | 2566 s += " " + attr.name + '="' + escapeAttr(attr.value) + '"'; |
2612 } | 2567 } |
2613 if (voidElements[tagName]) { | 2568 s += ">"; |
2614 if (needsSelfClosingSlash(node)) s += "/"; | 2569 if (voidElements[tagName]) return s; |
2615 return s + ">"; | 2570 return s + getInnerHTML(node) + "</" + tagName + ">"; |
2616 } | |
2617 return s + ">" + getInnerHTML(node) + "</" + tagName + ">"; | |
2618 | 2571 |
2619 case Node.TEXT_NODE: | 2572 case Node.TEXT_NODE: |
2620 var data = node.data; | 2573 var data = node.data; |
2621 if (parentNode && plaintextParents[parentNode.localName]) return data; | 2574 if (parentNode && plaintextParents[parentNode.localName]) return data; |
2622 return escapeData(data); | 2575 return escapeData(data); |
2623 | 2576 |
2624 case Node.COMMENT_NODE: | 2577 case Node.COMMENT_NODE: |
2625 return "<!--" + node.data + "-->"; | 2578 return "<!--" + node.data + "-->"; |
2626 | 2579 |
2627 default: | 2580 default: |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2765 function methodRequiresRendering(name) { | 2718 function methodRequiresRendering(name) { |
2766 Object.defineProperty(HTMLElement.prototype, name, { | 2719 Object.defineProperty(HTMLElement.prototype, name, { |
2767 value: function() { | 2720 value: function() { |
2768 scope.renderAllPending(); | 2721 scope.renderAllPending(); |
2769 return unsafeUnwrap(this)[name].apply(unsafeUnwrap(this), arguments); | 2722 return unsafeUnwrap(this)[name].apply(unsafeUnwrap(this), arguments); |
2770 }, | 2723 }, |
2771 configurable: true, | 2724 configurable: true, |
2772 enumerable: true | 2725 enumerable: true |
2773 }); | 2726 }); |
2774 } | 2727 } |
2775 [ "focus", "getBoundingClientRect", "getClientRects", "scrollIntoView" ].for
Each(methodRequiresRendering); | 2728 [ "getBoundingClientRect", "getClientRects", "scrollIntoView" ].forEach(meth
odRequiresRendering); |
2776 registerWrapper(OriginalHTMLElement, HTMLElement, document.createElement("b"
)); | 2729 registerWrapper(OriginalHTMLElement, HTMLElement, document.createElement("b"
)); |
2777 scope.wrappers.HTMLElement = HTMLElement; | 2730 scope.wrappers.HTMLElement = HTMLElement; |
2778 scope.getInnerHTML = getInnerHTML; | 2731 scope.getInnerHTML = getInnerHTML; |
2779 scope.setInnerHTML = setInnerHTML; | 2732 scope.setInnerHTML = setInnerHTML; |
2780 })(window.ShadowDOMPolyfill); | 2733 })(window.ShadowDOMPolyfill); |
2781 (function(scope) { | 2734 (function(scope) { |
2782 "use strict"; | 2735 "use strict"; |
2783 var HTMLElement = scope.wrappers.HTMLElement; | 2736 var HTMLElement = scope.wrappers.HTMLElement; |
2784 var mixin = scope.mixin; | 2737 var mixin = scope.mixin; |
2785 var registerWrapper = scope.registerWrapper; | 2738 var registerWrapper = scope.registerWrapper; |
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3172 HTMLElement.call(this, node); | 3125 HTMLElement.call(this, node); |
3173 } | 3126 } |
3174 HTMLUnknownElement.prototype = Object.create(HTMLElement.prototype); | 3127 HTMLUnknownElement.prototype = Object.create(HTMLElement.prototype); |
3175 registerWrapper(OriginalHTMLUnknownElement, HTMLUnknownElement); | 3128 registerWrapper(OriginalHTMLUnknownElement, HTMLUnknownElement); |
3176 scope.wrappers.HTMLUnknownElement = HTMLUnknownElement; | 3129 scope.wrappers.HTMLUnknownElement = HTMLUnknownElement; |
3177 })(window.ShadowDOMPolyfill); | 3130 })(window.ShadowDOMPolyfill); |
3178 (function(scope) { | 3131 (function(scope) { |
3179 "use strict"; | 3132 "use strict"; |
3180 var Element = scope.wrappers.Element; | 3133 var Element = scope.wrappers.Element; |
3181 var HTMLElement = scope.wrappers.HTMLElement; | 3134 var HTMLElement = scope.wrappers.HTMLElement; |
3182 var registerWrapper = scope.registerWrapper; | 3135 var registerObject = scope.registerObject; |
3183 var defineWrapGetter = scope.defineWrapGetter; | 3136 var defineWrapGetter = scope.defineWrapGetter; |
3184 var unsafeUnwrap = scope.unsafeUnwrap; | |
3185 var wrap = scope.wrap; | |
3186 var mixin = scope.mixin; | |
3187 var SVG_NS = "http://www.w3.org/2000/svg"; | 3137 var SVG_NS = "http://www.w3.org/2000/svg"; |
3188 var OriginalSVGElement = window.SVGElement; | |
3189 var svgTitleElement = document.createElementNS(SVG_NS, "title"); | 3138 var svgTitleElement = document.createElementNS(SVG_NS, "title"); |
| 3139 var SVGTitleElement = registerObject(svgTitleElement); |
| 3140 var SVGElement = Object.getPrototypeOf(SVGTitleElement.prototype).constructo
r; |
3190 if (!("classList" in svgTitleElement)) { | 3141 if (!("classList" in svgTitleElement)) { |
3191 var descr = Object.getOwnPropertyDescriptor(Element.prototype, "classList"
); | 3142 var descr = Object.getOwnPropertyDescriptor(Element.prototype, "classList"
); |
3192 Object.defineProperty(HTMLElement.prototype, "classList", descr); | 3143 Object.defineProperty(HTMLElement.prototype, "classList", descr); |
3193 delete Element.prototype.classList; | 3144 delete Element.prototype.classList; |
3194 } | 3145 } |
3195 function SVGElement(node) { | 3146 defineWrapGetter(SVGElement, "ownerSVGElement"); |
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")); | |
3205 scope.wrappers.SVGElement = SVGElement; | 3147 scope.wrappers.SVGElement = SVGElement; |
3206 })(window.ShadowDOMPolyfill); | 3148 })(window.ShadowDOMPolyfill); |
3207 (function(scope) { | 3149 (function(scope) { |
3208 "use strict"; | 3150 "use strict"; |
3209 var mixin = scope.mixin; | 3151 var mixin = scope.mixin; |
3210 var registerWrapper = scope.registerWrapper; | 3152 var registerWrapper = scope.registerWrapper; |
3211 var unwrap = scope.unwrap; | 3153 var unwrap = scope.unwrap; |
3212 var wrap = scope.wrap; | 3154 var wrap = scope.wrap; |
3213 var OriginalSVGUseElement = window.SVGUseElement; | 3155 var OriginalSVGUseElement = window.SVGUseElement; |
3214 var SVG_NS = "http://www.w3.org/2000/svg"; | 3156 var SVG_NS = "http://www.w3.org/2000/svg"; |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3300 createPattern: function() { | 3242 createPattern: function() { |
3301 arguments[0] = unwrap(arguments[0]); | 3243 arguments[0] = unwrap(arguments[0]); |
3302 return unsafeUnwrap(this).createPattern.apply(unsafeUnwrap(this), argume
nts); | 3244 return unsafeUnwrap(this).createPattern.apply(unsafeUnwrap(this), argume
nts); |
3303 } | 3245 } |
3304 }); | 3246 }); |
3305 registerWrapper(OriginalCanvasRenderingContext2D, CanvasRenderingContext2D,
document.createElement("canvas").getContext("2d")); | 3247 registerWrapper(OriginalCanvasRenderingContext2D, CanvasRenderingContext2D,
document.createElement("canvas").getContext("2d")); |
3306 scope.wrappers.CanvasRenderingContext2D = CanvasRenderingContext2D; | 3248 scope.wrappers.CanvasRenderingContext2D = CanvasRenderingContext2D; |
3307 })(window.ShadowDOMPolyfill); | 3249 })(window.ShadowDOMPolyfill); |
3308 (function(scope) { | 3250 (function(scope) { |
3309 "use strict"; | 3251 "use strict"; |
3310 var addForwardingProperties = scope.addForwardingProperties; | |
3311 var mixin = scope.mixin; | 3252 var mixin = scope.mixin; |
3312 var registerWrapper = scope.registerWrapper; | 3253 var registerWrapper = scope.registerWrapper; |
3313 var setWrapper = scope.setWrapper; | 3254 var setWrapper = scope.setWrapper; |
3314 var unsafeUnwrap = scope.unsafeUnwrap; | 3255 var unsafeUnwrap = scope.unsafeUnwrap; |
3315 var unwrapIfNeeded = scope.unwrapIfNeeded; | 3256 var unwrapIfNeeded = scope.unwrapIfNeeded; |
3316 var wrap = scope.wrap; | 3257 var wrap = scope.wrap; |
3317 var OriginalWebGLRenderingContext = window.WebGLRenderingContext; | 3258 var OriginalWebGLRenderingContext = window.WebGLRenderingContext; |
3318 if (!OriginalWebGLRenderingContext) return; | 3259 if (!OriginalWebGLRenderingContext) return; |
3319 function WebGLRenderingContext(impl) { | 3260 function WebGLRenderingContext(impl) { |
3320 setWrapper(impl, this); | 3261 setWrapper(impl, this); |
3321 } | 3262 } |
3322 mixin(WebGLRenderingContext.prototype, { | 3263 mixin(WebGLRenderingContext.prototype, { |
3323 get canvas() { | 3264 get canvas() { |
3324 return wrap(unsafeUnwrap(this).canvas); | 3265 return wrap(unsafeUnwrap(this).canvas); |
3325 }, | 3266 }, |
3326 texImage2D: function() { | 3267 texImage2D: function() { |
3327 arguments[5] = unwrapIfNeeded(arguments[5]); | 3268 arguments[5] = unwrapIfNeeded(arguments[5]); |
3328 unsafeUnwrap(this).texImage2D.apply(unsafeUnwrap(this), arguments); | 3269 unsafeUnwrap(this).texImage2D.apply(unsafeUnwrap(this), arguments); |
3329 }, | 3270 }, |
3330 texSubImage2D: function() { | 3271 texSubImage2D: function() { |
3331 arguments[6] = unwrapIfNeeded(arguments[6]); | 3272 arguments[6] = unwrapIfNeeded(arguments[6]); |
3332 unsafeUnwrap(this).texSubImage2D.apply(unsafeUnwrap(this), arguments); | 3273 unsafeUnwrap(this).texSubImage2D.apply(unsafeUnwrap(this), arguments); |
3333 } | 3274 } |
3334 }); | 3275 }); |
3335 var OriginalWebGLRenderingContextBase = Object.getPrototypeOf(OriginalWebGLR
enderingContext.prototype); | |
3336 if (OriginalWebGLRenderingContextBase !== Object.prototype) { | |
3337 addForwardingProperties(OriginalWebGLRenderingContextBase, WebGLRenderingC
ontext.prototype); | |
3338 } | |
3339 var instanceProperties = /WebKit/.test(navigator.userAgent) ? { | 3276 var instanceProperties = /WebKit/.test(navigator.userAgent) ? { |
3340 drawingBufferHeight: null, | 3277 drawingBufferHeight: null, |
3341 drawingBufferWidth: null | 3278 drawingBufferWidth: null |
3342 } : {}; | 3279 } : {}; |
3343 registerWrapper(OriginalWebGLRenderingContext, WebGLRenderingContext, instan
ceProperties); | 3280 registerWrapper(OriginalWebGLRenderingContext, WebGLRenderingContext, instan
ceProperties); |
3344 scope.wrappers.WebGLRenderingContext = WebGLRenderingContext; | 3281 scope.wrappers.WebGLRenderingContext = WebGLRenderingContext; |
3345 })(window.ShadowDOMPolyfill); | 3282 })(window.ShadowDOMPolyfill); |
3346 (function(scope) { | 3283 (function(scope) { |
3347 "use strict"; | 3284 "use strict"; |
3348 var Node = scope.wrappers.Node; | |
3349 var GetElementsByInterface = scope.GetElementsByInterface; | 3285 var GetElementsByInterface = scope.GetElementsByInterface; |
3350 var NonElementParentNodeInterface = scope.NonElementParentNodeInterface; | |
3351 var ParentNodeInterface = scope.ParentNodeInterface; | 3286 var ParentNodeInterface = scope.ParentNodeInterface; |
3352 var SelectorsInterface = scope.SelectorsInterface; | 3287 var SelectorsInterface = scope.SelectorsInterface; |
3353 var mixin = scope.mixin; | 3288 var mixin = scope.mixin; |
3354 var registerObject = scope.registerObject; | 3289 var registerObject = scope.registerObject; |
3355 var registerWrapper = scope.registerWrapper; | 3290 var DocumentFragment = registerObject(document.createDocumentFragment()); |
3356 var OriginalDocumentFragment = window.DocumentFragment; | |
3357 function DocumentFragment(node) { | |
3358 Node.call(this, node); | |
3359 } | |
3360 DocumentFragment.prototype = Object.create(Node.prototype); | |
3361 mixin(DocumentFragment.prototype, ParentNodeInterface); | 3291 mixin(DocumentFragment.prototype, ParentNodeInterface); |
3362 mixin(DocumentFragment.prototype, SelectorsInterface); | 3292 mixin(DocumentFragment.prototype, SelectorsInterface); |
3363 mixin(DocumentFragment.prototype, GetElementsByInterface); | 3293 mixin(DocumentFragment.prototype, GetElementsByInterface); |
3364 mixin(DocumentFragment.prototype, NonElementParentNodeInterface); | |
3365 registerWrapper(OriginalDocumentFragment, DocumentFragment, document.createD
ocumentFragment()); | |
3366 scope.wrappers.DocumentFragment = DocumentFragment; | |
3367 var Comment = registerObject(document.createComment("")); | 3294 var Comment = registerObject(document.createComment("")); |
3368 scope.wrappers.Comment = Comment; | 3295 scope.wrappers.Comment = Comment; |
| 3296 scope.wrappers.DocumentFragment = DocumentFragment; |
3369 })(window.ShadowDOMPolyfill); | 3297 })(window.ShadowDOMPolyfill); |
3370 (function(scope) { | 3298 (function(scope) { |
3371 "use strict"; | 3299 "use strict"; |
3372 var DocumentFragment = scope.wrappers.DocumentFragment; | 3300 var DocumentFragment = scope.wrappers.DocumentFragment; |
3373 var TreeScope = scope.TreeScope; | 3301 var TreeScope = scope.TreeScope; |
3374 var elementFromPoint = scope.elementFromPoint; | 3302 var elementFromPoint = scope.elementFromPoint; |
3375 var getInnerHTML = scope.getInnerHTML; | 3303 var getInnerHTML = scope.getInnerHTML; |
3376 var getTreeScope = scope.getTreeScope; | 3304 var getTreeScope = scope.getTreeScope; |
3377 var mixin = scope.mixin; | 3305 var mixin = scope.mixin; |
3378 var rewrap = scope.rewrap; | 3306 var rewrap = scope.rewrap; |
3379 var setInnerHTML = scope.setInnerHTML; | 3307 var setInnerHTML = scope.setInnerHTML; |
3380 var unsafeUnwrap = scope.unsafeUnwrap; | 3308 var unsafeUnwrap = scope.unsafeUnwrap; |
3381 var unwrap = scope.unwrap; | 3309 var unwrap = scope.unwrap; |
3382 var wrap = scope.wrap; | |
3383 var shadowHostTable = new WeakMap(); | 3310 var shadowHostTable = new WeakMap(); |
3384 var nextOlderShadowTreeTable = new WeakMap(); | 3311 var nextOlderShadowTreeTable = new WeakMap(); |
| 3312 var spaceCharRe = /[ \t\n\r\f]/; |
3385 function ShadowRoot(hostWrapper) { | 3313 function ShadowRoot(hostWrapper) { |
3386 var node = unwrap(unsafeUnwrap(hostWrapper).ownerDocument.createDocumentFr
agment()); | 3314 var node = unwrap(unsafeUnwrap(hostWrapper).ownerDocument.createDocumentFr
agment()); |
3387 DocumentFragment.call(this, node); | 3315 DocumentFragment.call(this, node); |
3388 rewrap(node, this); | 3316 rewrap(node, this); |
3389 var oldShadowRoot = hostWrapper.shadowRoot; | 3317 var oldShadowRoot = hostWrapper.shadowRoot; |
3390 nextOlderShadowTreeTable.set(this, oldShadowRoot); | 3318 nextOlderShadowTreeTable.set(this, oldShadowRoot); |
3391 this.treeScope_ = new TreeScope(this, getTreeScope(oldShadowRoot || hostWr
apper)); | 3319 this.treeScope_ = new TreeScope(this, getTreeScope(oldShadowRoot || hostWr
apper)); |
3392 shadowHostTable.set(this, hostWrapper); | 3320 shadowHostTable.set(this, hostWrapper); |
3393 } | 3321 } |
3394 ShadowRoot.prototype = Object.create(DocumentFragment.prototype); | 3322 ShadowRoot.prototype = Object.create(DocumentFragment.prototype); |
(...skipping 11 matching lines...) Expand all Loading... |
3406 }, | 3334 }, |
3407 get host() { | 3335 get host() { |
3408 return shadowHostTable.get(this) || null; | 3336 return shadowHostTable.get(this) || null; |
3409 }, | 3337 }, |
3410 invalidateShadowRenderer: function() { | 3338 invalidateShadowRenderer: function() { |
3411 return shadowHostTable.get(this).invalidateShadowRenderer(); | 3339 return shadowHostTable.get(this).invalidateShadowRenderer(); |
3412 }, | 3340 }, |
3413 elementFromPoint: function(x, y) { | 3341 elementFromPoint: function(x, y) { |
3414 return elementFromPoint(this, this.ownerDocument, x, y); | 3342 return elementFromPoint(this, this.ownerDocument, x, y); |
3415 }, | 3343 }, |
3416 getSelection: function() { | 3344 getElementById: function(id) { |
3417 return document.getSelection(); | 3345 if (spaceCharRe.test(id)) return null; |
3418 }, | 3346 return this.querySelector('[id="' + id + '"]'); |
3419 get activeElement() { | |
3420 var unwrappedActiveElement = unwrap(this).ownerDocument.activeElement; | |
3421 if (!unwrappedActiveElement || !unwrappedActiveElement.nodeType) return
null; | |
3422 var activeElement = wrap(unwrappedActiveElement); | |
3423 while (!this.contains(activeElement)) { | |
3424 while (activeElement.parentNode) { | |
3425 activeElement = activeElement.parentNode; | |
3426 } | |
3427 if (activeElement.host) { | |
3428 activeElement = activeElement.host; | |
3429 } else { | |
3430 return null; | |
3431 } | |
3432 } | |
3433 return activeElement; | |
3434 } | 3347 } |
3435 }); | 3348 }); |
3436 scope.wrappers.ShadowRoot = ShadowRoot; | 3349 scope.wrappers.ShadowRoot = ShadowRoot; |
3437 })(window.ShadowDOMPolyfill); | 3350 })(window.ShadowDOMPolyfill); |
3438 (function(scope) { | 3351 (function(scope) { |
3439 "use strict"; | 3352 "use strict"; |
3440 var registerWrapper = scope.registerWrapper; | 3353 var registerWrapper = scope.registerWrapper; |
3441 var setWrapper = scope.setWrapper; | 3354 var setWrapper = scope.setWrapper; |
3442 var unsafeUnwrap = scope.unsafeUnwrap; | 3355 var unsafeUnwrap = scope.unsafeUnwrap; |
3443 var unwrap = scope.unwrap; | 3356 var unwrap = scope.unwrap; |
(...skipping 567 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4011 containsNode: function(node, allowPartial) { | 3924 containsNode: function(node, allowPartial) { |
4012 return unsafeUnwrap(this).containsNode(unwrapIfNeeded(node), allowPartia
l); | 3925 return unsafeUnwrap(this).containsNode(unwrapIfNeeded(node), allowPartia
l); |
4013 }, | 3926 }, |
4014 getRangeAt: function(index) { | 3927 getRangeAt: function(index) { |
4015 return wrap(unsafeUnwrap(this).getRangeAt(index)); | 3928 return wrap(unsafeUnwrap(this).getRangeAt(index)); |
4016 }, | 3929 }, |
4017 removeRange: function(range) { | 3930 removeRange: function(range) { |
4018 unsafeUnwrap(this).removeRange(unwrap(range)); | 3931 unsafeUnwrap(this).removeRange(unwrap(range)); |
4019 }, | 3932 }, |
4020 selectAllChildren: function(node) { | 3933 selectAllChildren: function(node) { |
4021 unsafeUnwrap(this).selectAllChildren(node instanceof ShadowRoot ? unsafe
Unwrap(node.host) : unwrapIfNeeded(node)); | 3934 unsafeUnwrap(this).selectAllChildren(unwrapIfNeeded(node)); |
4022 }, | 3935 }, |
4023 toString: function() { | 3936 toString: function() { |
4024 return unsafeUnwrap(this).toString(); | 3937 return unsafeUnwrap(this).toString(); |
4025 } | 3938 } |
4026 }; | 3939 }; |
4027 if (OriginalSelection.prototype.extend) { | 3940 if (OriginalSelection.prototype.extend) { |
4028 Selection.prototype.extend = function(node, offset) { | 3941 Selection.prototype.extend = function(node, offset) { |
4029 unsafeUnwrap(this).extend(unwrapIfNeeded(node), offset); | 3942 unsafeUnwrap(this).extend(unwrapIfNeeded(node), offset); |
4030 }; | 3943 }; |
4031 } | 3944 } |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4076 } | 3989 } |
4077 }; | 3990 }; |
4078 registerWrapper(OriginalTreeWalker, TreeWalker); | 3991 registerWrapper(OriginalTreeWalker, TreeWalker); |
4079 scope.wrappers.TreeWalker = TreeWalker; | 3992 scope.wrappers.TreeWalker = TreeWalker; |
4080 })(window.ShadowDOMPolyfill); | 3993 })(window.ShadowDOMPolyfill); |
4081 (function(scope) { | 3994 (function(scope) { |
4082 "use strict"; | 3995 "use strict"; |
4083 var GetElementsByInterface = scope.GetElementsByInterface; | 3996 var GetElementsByInterface = scope.GetElementsByInterface; |
4084 var Node = scope.wrappers.Node; | 3997 var Node = scope.wrappers.Node; |
4085 var ParentNodeInterface = scope.ParentNodeInterface; | 3998 var ParentNodeInterface = scope.ParentNodeInterface; |
4086 var NonElementParentNodeInterface = scope.NonElementParentNodeInterface; | |
4087 var Selection = scope.wrappers.Selection; | 3999 var Selection = scope.wrappers.Selection; |
4088 var SelectorsInterface = scope.SelectorsInterface; | 4000 var SelectorsInterface = scope.SelectorsInterface; |
4089 var ShadowRoot = scope.wrappers.ShadowRoot; | 4001 var ShadowRoot = scope.wrappers.ShadowRoot; |
4090 var TreeScope = scope.TreeScope; | 4002 var TreeScope = scope.TreeScope; |
4091 var cloneNode = scope.cloneNode; | 4003 var cloneNode = scope.cloneNode; |
4092 var defineGetter = scope.defineGetter; | |
4093 var defineWrapGetter = scope.defineWrapGetter; | 4004 var defineWrapGetter = scope.defineWrapGetter; |
4094 var elementFromPoint = scope.elementFromPoint; | 4005 var elementFromPoint = scope.elementFromPoint; |
4095 var forwardMethodsToWrapper = scope.forwardMethodsToWrapper; | 4006 var forwardMethodsToWrapper = scope.forwardMethodsToWrapper; |
4096 var matchesNames = scope.matchesNames; | 4007 var matchesNames = scope.matchesNames; |
4097 var mixin = scope.mixin; | 4008 var mixin = scope.mixin; |
4098 var registerWrapper = scope.registerWrapper; | 4009 var registerWrapper = scope.registerWrapper; |
4099 var renderAllPending = scope.renderAllPending; | 4010 var renderAllPending = scope.renderAllPending; |
4100 var rewrap = scope.rewrap; | 4011 var rewrap = scope.rewrap; |
4101 var setWrapper = scope.setWrapper; | 4012 var setWrapper = scope.setWrapper; |
4102 var unsafeUnwrap = scope.unsafeUnwrap; | 4013 var unsafeUnwrap = scope.unsafeUnwrap; |
4103 var unwrap = scope.unwrap; | 4014 var unwrap = scope.unwrap; |
4104 var wrap = scope.wrap; | 4015 var wrap = scope.wrap; |
4105 var wrapEventTargetMethods = scope.wrapEventTargetMethods; | 4016 var wrapEventTargetMethods = scope.wrapEventTargetMethods; |
4106 var wrapNodeList = scope.wrapNodeList; | 4017 var wrapNodeList = scope.wrapNodeList; |
4107 var implementationTable = new WeakMap(); | 4018 var implementationTable = new WeakMap(); |
4108 function Document(node) { | 4019 function Document(node) { |
4109 Node.call(this, node); | 4020 Node.call(this, node); |
4110 this.treeScope_ = new TreeScope(this, null); | 4021 this.treeScope_ = new TreeScope(this, null); |
4111 } | 4022 } |
4112 Document.prototype = Object.create(Node.prototype); | 4023 Document.prototype = Object.create(Node.prototype); |
4113 defineWrapGetter(Document, "documentElement"); | 4024 defineWrapGetter(Document, "documentElement"); |
4114 defineWrapGetter(Document, "body"); | 4025 defineWrapGetter(Document, "body"); |
4115 defineWrapGetter(Document, "head"); | 4026 defineWrapGetter(Document, "head"); |
4116 defineGetter(Document, "activeElement", function() { | |
4117 var unwrappedActiveElement = unwrap(this).activeElement; | |
4118 if (!unwrappedActiveElement || !unwrappedActiveElement.nodeType) return nu
ll; | |
4119 var activeElement = wrap(unwrappedActiveElement); | |
4120 while (!this.contains(activeElement)) { | |
4121 while (activeElement.parentNode) { | |
4122 activeElement = activeElement.parentNode; | |
4123 } | |
4124 if (activeElement.host) { | |
4125 activeElement = activeElement.host; | |
4126 } else { | |
4127 return null; | |
4128 } | |
4129 } | |
4130 return activeElement; | |
4131 }); | |
4132 function wrapMethod(name) { | 4027 function wrapMethod(name) { |
4133 var original = document[name]; | 4028 var original = document[name]; |
4134 Document.prototype[name] = function() { | 4029 Document.prototype[name] = function() { |
4135 return wrap(original.apply(unsafeUnwrap(this), arguments)); | 4030 return wrap(original.apply(unsafeUnwrap(this), arguments)); |
4136 }; | 4031 }; |
4137 } | 4032 } |
4138 [ "createComment", "createDocumentFragment", "createElement", "createElement
NS", "createEvent", "createEventNS", "createRange", "createTextNode" ].forEach(w
rapMethod); | 4033 [ "createComment", "createDocumentFragment", "createElement", "createElement
NS", "createEvent", "createEventNS", "createRange", "createTextNode", "getElemen
tById" ].forEach(wrapMethod); |
4139 var originalAdoptNode = document.adoptNode; | 4034 var originalAdoptNode = document.adoptNode; |
4140 function adoptNodeNoRemove(node, doc) { | 4035 function adoptNodeNoRemove(node, doc) { |
4141 originalAdoptNode.call(unsafeUnwrap(doc), unwrap(node)); | 4036 originalAdoptNode.call(unsafeUnwrap(doc), unwrap(node)); |
4142 adoptSubtree(node, doc); | 4037 adoptSubtree(node, doc); |
4143 } | 4038 } |
4144 function adoptSubtree(node, doc) { | 4039 function adoptSubtree(node, doc) { |
4145 if (node.shadowRoot) doc.adoptNode(node.shadowRoot); | 4040 if (node.shadowRoot) doc.adoptNode(node.shadowRoot); |
4146 if (node instanceof ShadowRoot) adoptOlderShadowRoots(node, doc); | 4041 if (node instanceof ShadowRoot) adoptOlderShadowRoots(node, doc); |
4147 for (var child = node.firstChild; child; child = child.nextSibling) { | 4042 for (var child = node.firstChild; child; child = child.nextSibling) { |
4148 adoptSubtree(child, doc); | 4043 adoptSubtree(child, doc); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4252 return CustomElementConstructor; | 4147 return CustomElementConstructor; |
4253 }; | 4148 }; |
4254 forwardMethodsToWrapper([ window.HTMLDocument || window.Document ], [ "reg
isterElement" ]); | 4149 forwardMethodsToWrapper([ window.HTMLDocument || window.Document ], [ "reg
isterElement" ]); |
4255 } | 4150 } |
4256 forwardMethodsToWrapper([ window.HTMLBodyElement, window.HTMLDocument || win
dow.Document, window.HTMLHeadElement, window.HTMLHtmlElement ], [ "appendChild",
"compareDocumentPosition", "contains", "getElementsByClassName", "getElementsBy
TagName", "getElementsByTagNameNS", "insertBefore", "querySelector", "querySelec
torAll", "removeChild", "replaceChild" ]); | 4151 forwardMethodsToWrapper([ window.HTMLBodyElement, window.HTMLDocument || win
dow.Document, window.HTMLHeadElement, window.HTMLHtmlElement ], [ "appendChild",
"compareDocumentPosition", "contains", "getElementsByClassName", "getElementsBy
TagName", "getElementsByTagNameNS", "insertBefore", "querySelector", "querySelec
torAll", "removeChild", "replaceChild" ]); |
4257 forwardMethodsToWrapper([ window.HTMLBodyElement, window.HTMLHeadElement, wi
ndow.HTMLHtmlElement ], matchesNames); | 4152 forwardMethodsToWrapper([ window.HTMLBodyElement, window.HTMLHeadElement, wi
ndow.HTMLHtmlElement ], matchesNames); |
4258 forwardMethodsToWrapper([ window.HTMLDocument || window.Document ], [ "adopt
Node", "importNode", "contains", "createComment", "createDocumentFragment", "cre
ateElement", "createElementNS", "createEvent", "createEventNS", "createRange", "
createTextNode", "createTreeWalker", "elementFromPoint", "getElementById", "getE
lementsByName", "getSelection" ]); | 4153 forwardMethodsToWrapper([ window.HTMLDocument || window.Document ], [ "adopt
Node", "importNode", "contains", "createComment", "createDocumentFragment", "cre
ateElement", "createElementNS", "createEvent", "createEventNS", "createRange", "
createTextNode", "createTreeWalker", "elementFromPoint", "getElementById", "getE
lementsByName", "getSelection" ]); |
4259 mixin(Document.prototype, GetElementsByInterface); | 4154 mixin(Document.prototype, GetElementsByInterface); |
4260 mixin(Document.prototype, ParentNodeInterface); | 4155 mixin(Document.prototype, ParentNodeInterface); |
4261 mixin(Document.prototype, SelectorsInterface); | 4156 mixin(Document.prototype, SelectorsInterface); |
4262 mixin(Document.prototype, NonElementParentNodeInterface); | |
4263 mixin(Document.prototype, { | 4157 mixin(Document.prototype, { |
4264 get implementation() { | 4158 get implementation() { |
4265 var implementation = implementationTable.get(this); | 4159 var implementation = implementationTable.get(this); |
4266 if (implementation) return implementation; | 4160 if (implementation) return implementation; |
4267 implementation = new DOMImplementation(unwrap(this).implementation); | 4161 implementation = new DOMImplementation(unwrap(this).implementation); |
4268 implementationTable.set(this, implementation); | 4162 implementationTable.set(this, implementation); |
4269 return implementation; | 4163 return implementation; |
4270 }, | 4164 }, |
4271 get defaultView() { | 4165 get defaultView() { |
4272 return wrap(unwrap(this).defaultView); | 4166 return wrap(unwrap(this).defaultView); |
4273 } | 4167 } |
4274 }); | 4168 }); |
4275 registerWrapper(window.Document, Document, document.implementation.createHTM
LDocument("")); | 4169 registerWrapper(window.Document, Document, document.implementation.createHTM
LDocument("")); |
4276 if (window.HTMLDocument) registerWrapper(window.HTMLDocument, Document); | 4170 if (window.HTMLDocument) registerWrapper(window.HTMLDocument, Document); |
4277 wrapEventTargetMethods([ window.HTMLBodyElement, window.HTMLDocument || wind
ow.Document, window.HTMLHeadElement ]); | 4171 wrapEventTargetMethods([ window.HTMLBodyElement, window.HTMLDocument || wind
ow.Document, window.HTMLHeadElement ]); |
4278 function DOMImplementation(impl) { | 4172 function DOMImplementation(impl) { |
4279 setWrapper(impl, this); | 4173 setWrapper(impl, this); |
4280 } | 4174 } |
4281 var originalCreateDocument = document.implementation.createDocument; | |
4282 DOMImplementation.prototype.createDocument = function() { | |
4283 arguments[2] = unwrap(arguments[2]); | |
4284 return wrap(originalCreateDocument.apply(unsafeUnwrap(this), arguments)); | |
4285 }; | |
4286 function wrapImplMethod(constructor, name) { | 4175 function wrapImplMethod(constructor, name) { |
4287 var original = document.implementation[name]; | 4176 var original = document.implementation[name]; |
4288 constructor.prototype[name] = function() { | 4177 constructor.prototype[name] = function() { |
4289 return wrap(original.apply(unsafeUnwrap(this), arguments)); | 4178 return wrap(original.apply(unsafeUnwrap(this), arguments)); |
4290 }; | 4179 }; |
4291 } | 4180 } |
4292 function forwardImplMethod(constructor, name) { | 4181 function forwardImplMethod(constructor, name) { |
4293 var original = document.implementation[name]; | 4182 var original = document.implementation[name]; |
4294 constructor.prototype[name] = function() { | 4183 constructor.prototype[name] = function() { |
4295 return original.apply(unsafeUnwrap(this), arguments); | 4184 return original.apply(unsafeUnwrap(this), arguments); |
4296 }; | 4185 }; |
4297 } | 4186 } |
4298 wrapImplMethod(DOMImplementation, "createDocumentType"); | 4187 wrapImplMethod(DOMImplementation, "createDocumentType"); |
| 4188 wrapImplMethod(DOMImplementation, "createDocument"); |
4299 wrapImplMethod(DOMImplementation, "createHTMLDocument"); | 4189 wrapImplMethod(DOMImplementation, "createHTMLDocument"); |
4300 forwardImplMethod(DOMImplementation, "hasFeature"); | 4190 forwardImplMethod(DOMImplementation, "hasFeature"); |
4301 registerWrapper(window.DOMImplementation, DOMImplementation); | 4191 registerWrapper(window.DOMImplementation, DOMImplementation); |
4302 forwardMethodsToWrapper([ window.DOMImplementation ], [ "createDocument", "c
reateDocumentType", "createHTMLDocument", "hasFeature" ]); | 4192 forwardMethodsToWrapper([ window.DOMImplementation ], [ "createDocumentType"
, "createDocument", "createHTMLDocument", "hasFeature" ]); |
4303 scope.adoptNodeNoRemove = adoptNodeNoRemove; | 4193 scope.adoptNodeNoRemove = adoptNodeNoRemove; |
4304 scope.wrappers.DOMImplementation = DOMImplementation; | 4194 scope.wrappers.DOMImplementation = DOMImplementation; |
4305 scope.wrappers.Document = Document; | 4195 scope.wrappers.Document = Document; |
4306 })(window.ShadowDOMPolyfill); | 4196 })(window.ShadowDOMPolyfill); |
4307 (function(scope) { | 4197 (function(scope) { |
4308 "use strict"; | 4198 "use strict"; |
4309 var EventTarget = scope.wrappers.EventTarget; | 4199 var EventTarget = scope.wrappers.EventTarget; |
4310 var Selection = scope.wrappers.Selection; | 4200 var Selection = scope.wrappers.Selection; |
4311 var mixin = scope.mixin; | 4201 var mixin = scope.mixin; |
4312 var registerWrapper = scope.registerWrapper; | 4202 var registerWrapper = scope.registerWrapper; |
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4767 } | 4657 } |
4768 }, | 4658 }, |
4769 addCssToDocument: function(cssText, name) { | 4659 addCssToDocument: function(cssText, name) { |
4770 if (cssText.match("@import")) { | 4660 if (cssText.match("@import")) { |
4771 addOwnSheet(cssText, name); | 4661 addOwnSheet(cssText, name); |
4772 } else { | 4662 } else { |
4773 addCssToDocument(cssText); | 4663 addCssToDocument(cssText); |
4774 } | 4664 } |
4775 } | 4665 } |
4776 }; | 4666 }; |
4777 var selectorRe = /([^{]*)({[\s\S]*?})/gim, cssCommentRe = /\/\*[^*]*\*+([^\/
*][^*]*\*+)*\//gim, cssCommentNextSelectorRe = /\/\*\s*@polyfill ([^*]*\*+([^\/*
][^*]*\*+)*\/)([^{]*?){/gim, cssContentNextSelectorRe = /polyfill-next-selector[
^}]*content\:[\s]*?['"](.*?)['"][;\s]*}([^{]*?){/gim, cssCommentRuleRe = /\/\*\s
@polyfill-rule([^*]*\*+([^\/*][^*]*\*+)*)\//gim, cssContentRuleRe = /(polyfill-r
ule)[^}]*(content\:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim, cssCommentUnscopedRuleRe
= /\/\*\s@polyfill-unscoped-rule([^*]*\*+([^\/*][^*]*\*+)*)\//gim, cssContentUn
scopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content\:[\s]*['"](.*?)['"])[;\s]*
[^}]*}/gim, cssPseudoRe = /::(x-[^\s{,(]*)/gim, cssPartRe = /::part\(([^)]*)\)/g
im, polyfillHost = "-shadowcsshost", polyfillHostContext = "-shadowcsscontext",
parenSuffix = ")(?:\\((" + "(?:\\([^)(]*\\)|[^)(]*)+?" + ")\\))?([^,{]*)"; | 4667 var selectorRe = /([^{]*)({[\s\S]*?})/gim, cssCommentRe = /\/\*[^*]*\*+([^/*
][^*]*\*+)*\//gim, cssCommentNextSelectorRe = /\/\*\s*@polyfill ([^*]*\*+([^/*][
^*]*\*+)*\/)([^{]*?){/gim, cssContentNextSelectorRe = /polyfill-next-selector[^}
]*content\:[\s]*?['"](.*?)['"][;\s]*}([^{]*?){/gim, cssCommentRuleRe = /\/\*\s@p
olyfill-rule([^*]*\*+([^/*][^*]*\*+)*)\//gim, cssContentRuleRe = /(polyfill-rule
)[^}]*(content\:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim, cssCommentUnscopedRuleRe =
/\/\*\s@polyfill-unscoped-rule([^*]*\*+([^/*][^*]*\*+)*)\//gim, cssContentUnscop
edRuleRe = /(polyfill-unscoped-rule)[^}]*(content\:[\s]*['"](.*?)['"])[;\s]*[^}]
*}/gim, cssPseudoRe = /::(x-[^\s{,(]*)/gim, cssPartRe = /::part\(([^)]*)\)/gim,
polyfillHost = "-shadowcsshost", polyfillHostContext = "-shadowcsscontext", pare
nSuffix = ")(?:\\((" + "(?:\\([^)(]*\\)|[^)(]*)+?" + ")\\))?([^,{]*)"; |
4778 var cssColonHostRe = new RegExp("(" + polyfillHost + parenSuffix, "gim"), cs
sColonHostContextRe = new RegExp("(" + polyfillHostContext + parenSuffix, "gim")
, selectorReSuffix = "([>\\s~+[.,{:][\\s\\S]*)?$", colonHostRe = /\:host/gim, co
lonHostContextRe = /\:host-context/gim, polyfillHostNoCombinator = polyfillHost
+ "-no-combinator", polyfillHostRe = new RegExp(polyfillHost, "gim"), polyfillHo
stContextRe = new RegExp(polyfillHostContext, "gim"), shadowDOMSelectorsRe = [ /
>>>/g, /::shadow/g, /::content/g, /\/deep\//g, /\/shadow\//g, /\/shadow-deep\//g
, /\^\^/g, /\^/g ]; | 4668 var cssColonHostRe = new RegExp("(" + polyfillHost + parenSuffix, "gim"), cs
sColonHostContextRe = new RegExp("(" + polyfillHostContext + parenSuffix, "gim")
, selectorReSuffix = "([>\\s~+[.,{:][\\s\\S]*)?$", colonHostRe = /\:host/gim, co
lonHostContextRe = /\:host-context/gim, polyfillHostNoCombinator = polyfillHost
+ "-no-combinator", polyfillHostRe = new RegExp(polyfillHost, "gim"), polyfillHo
stContextRe = new RegExp(polyfillHostContext, "gim"), shadowDOMSelectorsRe = [ /
>>>/g, /::shadow/g, /::content/g, /\/deep\//g, /\/shadow\//g, /\/shadow-deep\//g
, /\^\^/g, /\^/g ]; |
4779 function stylesToCssText(styles, preserveComments) { | 4669 function stylesToCssText(styles, preserveComments) { |
4780 var cssText = ""; | 4670 var cssText = ""; |
4781 Array.prototype.forEach.call(styles, function(s) { | 4671 Array.prototype.forEach.call(styles, function(s) { |
4782 cssText += s.textContent + "\n\n"; | 4672 cssText += s.textContent + "\n\n"; |
4783 }); | 4673 }); |
4784 if (!preserveComments) { | 4674 if (!preserveComments) { |
4785 cssText = cssText.replace(cssCommentRe, ""); | 4675 cssText = cssText.replace(cssCommentRe, ""); |
4786 } | 4676 } |
4787 return cssText; | 4677 return cssText; |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5042 } else if (EOF == c) { | 4932 } else if (EOF == c) { |
5043 break loop; | 4933 break loop; |
5044 } else { | 4934 } else { |
5045 err("Code point not allowed in scheme: " + c); | 4935 err("Code point not allowed in scheme: " + c); |
5046 break loop; | 4936 break loop; |
5047 } | 4937 } |
5048 break; | 4938 break; |
5049 | 4939 |
5050 case "scheme data": | 4940 case "scheme data": |
5051 if ("?" == c) { | 4941 if ("?" == c) { |
5052 this._query = "?"; | 4942 query = "?"; |
5053 state = "query"; | 4943 state = "query"; |
5054 } else if ("#" == c) { | 4944 } else if ("#" == c) { |
5055 this._fragment = "#"; | 4945 this._fragment = "#"; |
5056 state = "fragment"; | 4946 state = "fragment"; |
5057 } else { | 4947 } else { |
5058 if (EOF != c && " " != c && "\n" != c && "\r" != c) { | 4948 if (EOF != c && " " != c && "\n" != c && "\r" != c) { |
5059 this._schemeData += percentEscape(c); | 4949 this._schemeData += percentEscape(c); |
5060 } | 4950 } |
5061 } | 4951 } |
5062 break; | 4952 break; |
(...skipping 19 matching lines...) Expand all Loading... |
5082 break; | 4972 break; |
5083 | 4973 |
5084 case "relative": | 4974 case "relative": |
5085 this._isRelative = true; | 4975 this._isRelative = true; |
5086 if ("file" != this._scheme) this._scheme = base._scheme; | 4976 if ("file" != this._scheme) this._scheme = base._scheme; |
5087 if (EOF == c) { | 4977 if (EOF == c) { |
5088 this._host = base._host; | 4978 this._host = base._host; |
5089 this._port = base._port; | 4979 this._port = base._port; |
5090 this._path = base._path.slice(); | 4980 this._path = base._path.slice(); |
5091 this._query = base._query; | 4981 this._query = base._query; |
5092 this._username = base._username; | |
5093 this._password = base._password; | |
5094 break loop; | 4982 break loop; |
5095 } else if ("/" == c || "\\" == c) { | 4983 } else if ("/" == c || "\\" == c) { |
5096 if ("\\" == c) err("\\ is an invalid code point."); | 4984 if ("\\" == c) err("\\ is an invalid code point."); |
5097 state = "relative slash"; | 4985 state = "relative slash"; |
5098 } else if ("?" == c) { | 4986 } else if ("?" == c) { |
5099 this._host = base._host; | 4987 this._host = base._host; |
5100 this._port = base._port; | 4988 this._port = base._port; |
5101 this._path = base._path.slice(); | 4989 this._path = base._path.slice(); |
5102 this._query = "?"; | 4990 this._query = "?"; |
5103 this._username = base._username; | |
5104 this._password = base._password; | |
5105 state = "query"; | 4991 state = "query"; |
5106 } else if ("#" == c) { | 4992 } else if ("#" == c) { |
5107 this._host = base._host; | 4993 this._host = base._host; |
5108 this._port = base._port; | 4994 this._port = base._port; |
5109 this._path = base._path.slice(); | 4995 this._path = base._path.slice(); |
5110 this._query = base._query; | 4996 this._query = base._query; |
5111 this._fragment = "#"; | 4997 this._fragment = "#"; |
5112 this._username = base._username; | |
5113 this._password = base._password; | |
5114 state = "fragment"; | 4998 state = "fragment"; |
5115 } else { | 4999 } else { |
5116 var nextC = input[cursor + 1]; | 5000 var nextC = input[cursor + 1]; |
5117 var nextNextC = input[cursor + 2]; | 5001 var nextNextC = input[cursor + 2]; |
5118 if ("file" != this._scheme || !ALPHA.test(c) || nextC != ":" && nextC
!= "|" || EOF != nextNextC && "/" != nextNextC && "\\" != nextNextC && "?" != ne
xtNextC && "#" != nextNextC) { | 5002 if ("file" != this._scheme || !ALPHA.test(c) || nextC != ":" && nextC
!= "|" || EOF != nextNextC && "/" != nextNextC && "\\" != nextNextC && "?" != ne
xtNextC && "#" != nextNextC) { |
5119 this._host = base._host; | 5003 this._host = base._host; |
5120 this._port = base._port; | 5004 this._port = base._port; |
5121 this._username = base._username; | |
5122 this._password = base._password; | |
5123 this._path = base._path.slice(); | 5005 this._path = base._path.slice(); |
5124 this._path.pop(); | 5006 this._path.pop(); |
5125 } | 5007 } |
5126 state = "relative path"; | 5008 state = "relative path"; |
5127 continue; | 5009 continue; |
5128 } | 5010 } |
5129 break; | 5011 break; |
5130 | 5012 |
5131 case "relative slash": | 5013 case "relative slash": |
5132 if ("/" == c || "\\" == c) { | 5014 if ("/" == c || "\\" == c) { |
5133 if ("\\" == c) { | 5015 if ("\\" == c) { |
5134 err("\\ is an invalid code point."); | 5016 err("\\ is an invalid code point."); |
5135 } | 5017 } |
5136 if ("file" == this._scheme) { | 5018 if ("file" == this._scheme) { |
5137 state = "file host"; | 5019 state = "file host"; |
5138 } else { | 5020 } else { |
5139 state = "authority ignore slashes"; | 5021 state = "authority ignore slashes"; |
5140 } | 5022 } |
5141 } else { | 5023 } else { |
5142 if ("file" != this._scheme) { | 5024 if ("file" != this._scheme) { |
5143 this._host = base._host; | 5025 this._host = base._host; |
5144 this._port = base._port; | 5026 this._port = base._port; |
5145 this._username = base._username; | |
5146 this._password = base._password; | |
5147 } | 5027 } |
5148 state = "relative path"; | 5028 state = "relative path"; |
5149 continue; | 5029 continue; |
5150 } | 5030 } |
5151 break; | 5031 break; |
5152 | 5032 |
5153 case "authority first slash": | 5033 case "authority first slash": |
5154 if ("/" == c) { | 5034 if ("/" == c) { |
5155 state = "authority second slash"; | 5035 state = "authority second slash"; |
5156 } else { | 5036 } else { |
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5452 var OriginalURL = scope.URL; | 5332 var OriginalURL = scope.URL; |
5453 if (OriginalURL) { | 5333 if (OriginalURL) { |
5454 jURL.createObjectURL = function(blob) { | 5334 jURL.createObjectURL = function(blob) { |
5455 return OriginalURL.createObjectURL.apply(OriginalURL, arguments); | 5335 return OriginalURL.createObjectURL.apply(OriginalURL, arguments); |
5456 }; | 5336 }; |
5457 jURL.revokeObjectURL = function(url) { | 5337 jURL.revokeObjectURL = function(url) { |
5458 OriginalURL.revokeObjectURL(url); | 5338 OriginalURL.revokeObjectURL(url); |
5459 }; | 5339 }; |
5460 } | 5340 } |
5461 scope.URL = jURL; | 5341 scope.URL = jURL; |
5462 })(self); | 5342 })(this); |
5463 | 5343 |
5464 (function(global) { | 5344 (function(global) { |
5465 if (global.JsMutationObserver) { | |
5466 return; | |
5467 } | |
5468 var registrationsTable = new WeakMap(); | 5345 var registrationsTable = new WeakMap(); |
5469 var setImmediate; | 5346 var setImmediate; |
5470 if (/Trident|Edge/.test(navigator.userAgent)) { | 5347 if (/Trident|Edge/.test(navigator.userAgent)) { |
5471 setImmediate = setTimeout; | 5348 setImmediate = setTimeout; |
5472 } else if (window.setImmediate) { | 5349 } else if (window.setImmediate) { |
5473 setImmediate = window.setImmediate; | 5350 setImmediate = window.setImmediate; |
5474 } else { | 5351 } else { |
5475 var setImmediateQueue = []; | 5352 var setImmediateQueue = []; |
5476 var sentinel = String(Math.random()); | 5353 var sentinel = String(Math.random()); |
5477 window.addEventListener("message", function(e) { | 5354 window.addEventListener("message", function(e) { |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5753 record.nextSibling = nextSibling; | 5630 record.nextSibling = nextSibling; |
5754 forEachAncestorAndObserverEnqueueRecord(e.relatedNode, function(options)
{ | 5631 forEachAncestorAndObserverEnqueueRecord(e.relatedNode, function(options)
{ |
5755 if (!options.childList) return; | 5632 if (!options.childList) return; |
5756 return record; | 5633 return record; |
5757 }); | 5634 }); |
5758 } | 5635 } |
5759 clearRecords(); | 5636 clearRecords(); |
5760 } | 5637 } |
5761 }; | 5638 }; |
5762 global.JsMutationObserver = JsMutationObserver; | 5639 global.JsMutationObserver = JsMutationObserver; |
5763 if (!global.MutationObserver) { | 5640 if (!global.MutationObserver) global.MutationObserver = JsMutationObserver; |
5764 global.MutationObserver = JsMutationObserver; | 5641 })(this); |
5765 JsMutationObserver._isPolyfilled = true; | |
5766 } | |
5767 })(self); | |
5768 | |
5769 (function(scope) { | |
5770 "use strict"; | |
5771 if (!window.performance) { | |
5772 var start = Date.now(); | |
5773 window.performance = { | |
5774 now: function() { | |
5775 return Date.now() - start; | |
5776 } | |
5777 }; | |
5778 } | |
5779 if (!window.requestAnimationFrame) { | |
5780 window.requestAnimationFrame = function() { | |
5781 var nativeRaf = window.webkitRequestAnimationFrame || window.mozRequestAni
mationFrame; | |
5782 return nativeRaf ? function(callback) { | |
5783 return nativeRaf(function() { | |
5784 callback(performance.now()); | |
5785 }); | |
5786 } : function(callback) { | |
5787 return window.setTimeout(callback, 1e3 / 60); | |
5788 }; | |
5789 }(); | |
5790 } | |
5791 if (!window.cancelAnimationFrame) { | |
5792 window.cancelAnimationFrame = function() { | |
5793 return window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame
|| function(id) { | |
5794 clearTimeout(id); | |
5795 }; | |
5796 }(); | |
5797 } | |
5798 var workingDefaultPrevented = function() { | |
5799 var e = document.createEvent("Event"); | |
5800 e.initEvent("foo", true, true); | |
5801 e.preventDefault(); | |
5802 return e.defaultPrevented; | |
5803 }(); | |
5804 if (!workingDefaultPrevented) { | |
5805 var origPreventDefault = Event.prototype.preventDefault; | |
5806 Event.prototype.preventDefault = function() { | |
5807 if (!this.cancelable) { | |
5808 return; | |
5809 } | |
5810 origPreventDefault.call(this); | |
5811 Object.defineProperty(this, "defaultPrevented", { | |
5812 get: function() { | |
5813 return true; | |
5814 }, | |
5815 configurable: true | |
5816 }); | |
5817 }; | |
5818 } | |
5819 var isIE = /Trident/.test(navigator.userAgent); | |
5820 if (!window.CustomEvent || isIE && typeof window.CustomEvent !== "function") { | |
5821 window.CustomEvent = function(inType, params) { | |
5822 params = params || {}; | |
5823 var e = document.createEvent("CustomEvent"); | |
5824 e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelab
le), params.detail); | |
5825 return e; | |
5826 }; | |
5827 window.CustomEvent.prototype = window.Event.prototype; | |
5828 } | |
5829 if (!window.Event || isIE && typeof window.Event !== "function") { | |
5830 var origEvent = window.Event; | |
5831 window.Event = function(inType, params) { | |
5832 params = params || {}; | |
5833 var e = document.createEvent("Event"); | |
5834 e.initEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable)); | |
5835 return e; | |
5836 }; | |
5837 window.Event.prototype = origEvent.prototype; | |
5838 } | |
5839 })(window.WebComponents); | |
5840 | 5642 |
5841 window.HTMLImports = window.HTMLImports || { | 5643 window.HTMLImports = window.HTMLImports || { |
5842 flags: {} | 5644 flags: {} |
5843 }; | 5645 }; |
5844 | 5646 |
5845 (function(scope) { | 5647 (function(scope) { |
5846 var IMPORT_LINK_TYPE = "import"; | 5648 var IMPORT_LINK_TYPE = "import"; |
5847 var useNative = Boolean(IMPORT_LINK_TYPE in document.createElement("link")); | 5649 var useNative = Boolean(IMPORT_LINK_TYPE in document.createElement("link")); |
5848 var hasShadowDOMPolyfill = Boolean(window.ShadowDOMPolyfill); | 5650 var hasShadowDOMPolyfill = Boolean(window.ShadowDOMPolyfill); |
5849 var wrap = function(node) { | 5651 var wrap = function(node) { |
5850 return hasShadowDOMPolyfill ? window.ShadowDOMPolyfill.wrapIfNeeded(node) :
node; | 5652 return hasShadowDOMPolyfill ? ShadowDOMPolyfill.wrapIfNeeded(node) : node; |
5851 }; | 5653 }; |
5852 var rootDocument = wrap(document); | 5654 var rootDocument = wrap(document); |
5853 var currentScriptDescriptor = { | 5655 var currentScriptDescriptor = { |
5854 get: function() { | 5656 get: function() { |
5855 var script = window.HTMLImports.currentScript || document.currentScript ||
(document.readyState !== "complete" ? document.scripts[document.scripts.length
- 1] : null); | 5657 var script = HTMLImports.currentScript || document.currentScript || (docum
ent.readyState !== "complete" ? document.scripts[document.scripts.length - 1] :
null); |
5856 return wrap(script); | 5658 return wrap(script); |
5857 }, | 5659 }, |
5858 configurable: true | 5660 configurable: true |
5859 }; | 5661 }; |
5860 Object.defineProperty(document, "_currentScript", currentScriptDescriptor); | 5662 Object.defineProperty(document, "_currentScript", currentScriptDescriptor); |
5861 Object.defineProperty(rootDocument, "_currentScript", currentScriptDescriptor)
; | 5663 Object.defineProperty(rootDocument, "_currentScript", currentScriptDescriptor)
; |
5862 var isIE = /Trident/.test(navigator.userAgent); | 5664 var isIE = /Trident|Edge/.test(navigator.userAgent); |
5863 function whenReady(callback, doc) { | 5665 function whenReady(callback, doc) { |
5864 doc = doc || rootDocument; | 5666 doc = doc || rootDocument; |
5865 whenDocumentReady(function() { | 5667 whenDocumentReady(function() { |
5866 watchImportsLoad(callback, doc); | 5668 watchImportsLoad(callback, doc); |
5867 }, doc); | 5669 }, doc); |
5868 } | 5670 } |
5869 var requiredReadyState = isIE ? "complete" : "interactive"; | 5671 var requiredReadyState = isIE ? "complete" : "interactive"; |
5870 var READY_EVENT = "readystatechange"; | 5672 var READY_EVENT = "readystatechange"; |
5871 function isDocumentReady(doc) { | 5673 function isDocumentReady(doc) { |
5872 return doc.readyState === "complete" || doc.readyState === requiredReadyStat
e; | 5674 return doc.readyState === "complete" || doc.readyState === requiredReadyStat
e; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5906 checkDone(); | 5708 checkDone(); |
5907 } | 5709 } |
5908 function errorLoadingImport(e) { | 5710 function errorLoadingImport(e) { |
5909 errorImports.push(this); | 5711 errorImports.push(this); |
5910 parsedCount++; | 5712 parsedCount++; |
5911 checkDone(); | 5713 checkDone(); |
5912 } | 5714 } |
5913 if (importCount) { | 5715 if (importCount) { |
5914 for (var i = 0, imp; i < importCount && (imp = imports[i]); i++) { | 5716 for (var i = 0, imp; i < importCount && (imp = imports[i]); i++) { |
5915 if (isImportLoaded(imp)) { | 5717 if (isImportLoaded(imp)) { |
5916 newImports.push(this); | |
5917 parsedCount++; | 5718 parsedCount++; |
5918 checkDone(); | 5719 checkDone(); |
5919 } else { | 5720 } else { |
5920 imp.addEventListener("load", loadedImport); | 5721 imp.addEventListener("load", loadedImport); |
5921 imp.addEventListener("error", errorLoadingImport); | 5722 imp.addEventListener("error", errorLoadingImport); |
5922 } | 5723 } |
5923 } | 5724 } |
5924 } else { | 5725 } else { |
5925 checkDone(); | 5726 checkDone(); |
5926 } | 5727 } |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5962 (function() { | 5763 (function() { |
5963 if (document.readyState === "loading") { | 5764 if (document.readyState === "loading") { |
5964 var imports = document.querySelectorAll("link[rel=import]"); | 5765 var imports = document.querySelectorAll("link[rel=import]"); |
5965 for (var i = 0, l = imports.length, imp; i < l && (imp = imports[i]); i+
+) { | 5766 for (var i = 0, l = imports.length, imp; i < l && (imp = imports[i]); i+
+) { |
5966 handleImport(imp); | 5767 handleImport(imp); |
5967 } | 5768 } |
5968 } | 5769 } |
5969 })(); | 5770 })(); |
5970 } | 5771 } |
5971 whenReady(function(detail) { | 5772 whenReady(function(detail) { |
5972 window.HTMLImports.ready = true; | 5773 HTMLImports.ready = true; |
5973 window.HTMLImports.readyTime = new Date().getTime(); | 5774 HTMLImports.readyTime = new Date().getTime(); |
5974 var evt = rootDocument.createEvent("CustomEvent"); | 5775 var evt = rootDocument.createEvent("CustomEvent"); |
5975 evt.initCustomEvent("HTMLImportsLoaded", true, true, detail); | 5776 evt.initCustomEvent("HTMLImportsLoaded", true, true, detail); |
5976 rootDocument.dispatchEvent(evt); | 5777 rootDocument.dispatchEvent(evt); |
5977 }); | 5778 }); |
5978 scope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE; | 5779 scope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE; |
5979 scope.useNative = useNative; | 5780 scope.useNative = useNative; |
5980 scope.rootDocument = rootDocument; | 5781 scope.rootDocument = rootDocument; |
5981 scope.whenReady = whenReady; | 5782 scope.whenReady = whenReady; |
5982 scope.isIE = isIE; | 5783 scope.isIE = isIE; |
5983 })(window.HTMLImports); | 5784 })(HTMLImports); |
5984 | 5785 |
5985 (function(scope) { | 5786 (function(scope) { |
5986 var modules = []; | 5787 var modules = []; |
5987 var addModule = function(module) { | 5788 var addModule = function(module) { |
5988 modules.push(module); | 5789 modules.push(module); |
5989 }; | 5790 }; |
5990 var initializeModules = function() { | 5791 var initializeModules = function() { |
5991 modules.forEach(function(module) { | 5792 modules.forEach(function(module) { |
5992 module(scope); | 5793 module(scope); |
5993 }); | 5794 }); |
5994 }; | 5795 }; |
5995 scope.addModule = addModule; | 5796 scope.addModule = addModule; |
5996 scope.initializeModules = initializeModules; | 5797 scope.initializeModules = initializeModules; |
5997 })(window.HTMLImports); | 5798 })(HTMLImports); |
5998 | 5799 |
5999 window.HTMLImports.addModule(function(scope) { | 5800 HTMLImports.addModule(function(scope) { |
6000 var CSS_URL_REGEXP = /(url\()([^)]*)(\))/g; | 5801 var CSS_URL_REGEXP = /(url\()([^)]*)(\))/g; |
6001 var CSS_IMPORT_REGEXP = /(@import[\s]+(?!url\())([^;]*)(;)/g; | 5802 var CSS_IMPORT_REGEXP = /(@import[\s]+(?!url\())([^;]*)(;)/g; |
6002 var path = { | 5803 var path = { |
6003 resolveUrlsInStyle: function(style, linkUrl) { | 5804 resolveUrlsInStyle: function(style, linkUrl) { |
6004 var doc = style.ownerDocument; | 5805 var doc = style.ownerDocument; |
6005 var resolver = doc.createElement("a"); | 5806 var resolver = doc.createElement("a"); |
6006 style.textContent = this.resolveUrlsInCssText(style.textContent, linkUrl,
resolver); | 5807 style.textContent = this.resolveUrlsInCssText(style.textContent, linkUrl,
resolver); |
6007 return style; | 5808 return style; |
6008 }, | 5809 }, |
6009 resolveUrlsInCssText: function(cssText, linkUrl, urlObj) { | 5810 resolveUrlsInCssText: function(cssText, linkUrl, urlObj) { |
6010 var r = this.replaceUrls(cssText, urlObj, linkUrl, CSS_URL_REGEXP); | 5811 var r = this.replaceUrls(cssText, urlObj, linkUrl, CSS_URL_REGEXP); |
6011 r = this.replaceUrls(r, urlObj, linkUrl, CSS_IMPORT_REGEXP); | 5812 r = this.replaceUrls(r, urlObj, linkUrl, CSS_IMPORT_REGEXP); |
6012 return r; | 5813 return r; |
6013 }, | 5814 }, |
6014 replaceUrls: function(text, urlObj, linkUrl, regexp) { | 5815 replaceUrls: function(text, urlObj, linkUrl, regexp) { |
6015 return text.replace(regexp, function(m, pre, url, post) { | 5816 return text.replace(regexp, function(m, pre, url, post) { |
6016 var urlPath = url.replace(/["']/g, ""); | 5817 var urlPath = url.replace(/["']/g, ""); |
6017 if (linkUrl) { | 5818 if (linkUrl) { |
6018 urlPath = new URL(urlPath, linkUrl).href; | 5819 urlPath = new URL(urlPath, linkUrl).href; |
6019 } | 5820 } |
6020 urlObj.href = urlPath; | 5821 urlObj.href = urlPath; |
6021 urlPath = urlObj.href; | 5822 urlPath = urlObj.href; |
6022 return pre + "'" + urlPath + "'" + post; | 5823 return pre + "'" + urlPath + "'" + post; |
6023 }); | 5824 }); |
6024 } | 5825 } |
6025 }; | 5826 }; |
6026 scope.path = path; | 5827 scope.path = path; |
6027 }); | 5828 }); |
6028 | 5829 |
6029 window.HTMLImports.addModule(function(scope) { | 5830 HTMLImports.addModule(function(scope) { |
6030 var xhr = { | 5831 var xhr = { |
6031 async: true, | 5832 async: true, |
6032 ok: function(request) { | 5833 ok: function(request) { |
6033 return request.status >= 200 && request.status < 300 || request.status ===
304 || request.status === 0; | 5834 return request.status >= 200 && request.status < 300 || request.status ===
304 || request.status === 0; |
6034 }, | 5835 }, |
6035 load: function(url, next, nextContext) { | 5836 load: function(url, next, nextContext) { |
6036 var request = new XMLHttpRequest(); | 5837 var request = new XMLHttpRequest(); |
6037 if (scope.flags.debug || scope.flags.bust) { | 5838 if (scope.flags.debug || scope.flags.bust) { |
6038 url += "?" + Math.random(); | 5839 url += "?" + Math.random(); |
6039 } | 5840 } |
6040 request.open("GET", url, xhr.async); | 5841 request.open("GET", url, xhr.async); |
6041 request.addEventListener("readystatechange", function(e) { | 5842 request.addEventListener("readystatechange", function(e) { |
6042 if (request.readyState === 4) { | 5843 if (request.readyState === 4) { |
| 5844 var locationHeader = request.getResponseHeader("Location"); |
6043 var redirectedUrl = null; | 5845 var redirectedUrl = null; |
6044 try { | 5846 if (locationHeader) { |
6045 var locationHeader = request.getResponseHeader("Location"); | 5847 var redirectedUrl = locationHeader.substr(0, 1) === "/" ? location.o
rigin + locationHeader : locationHeader; |
6046 if (locationHeader) { | |
6047 redirectedUrl = locationHeader.substr(0, 1) === "/" ? location.ori
gin + locationHeader : locationHeader; | |
6048 } | |
6049 } catch (e) { | |
6050 console.error(e.message); | |
6051 } | 5848 } |
6052 next.call(nextContext, !xhr.ok(request) && request, request.response |
| request.responseText, redirectedUrl); | 5849 next.call(nextContext, !xhr.ok(request) && request, request.response |
| request.responseText, redirectedUrl); |
6053 } | 5850 } |
6054 }); | 5851 }); |
6055 request.send(); | 5852 request.send(); |
6056 return request; | 5853 return request; |
6057 }, | 5854 }, |
6058 loadDocument: function(url, next, nextContext) { | 5855 loadDocument: function(url, next, nextContext) { |
6059 this.load(url, next, nextContext).responseType = "document"; | 5856 this.load(url, next, nextContext).responseType = "document"; |
6060 } | 5857 } |
6061 }; | 5858 }; |
6062 scope.xhr = xhr; | 5859 scope.xhr = xhr; |
6063 }); | 5860 }); |
6064 | 5861 |
6065 window.HTMLImports.addModule(function(scope) { | 5862 HTMLImports.addModule(function(scope) { |
6066 var xhr = scope.xhr; | 5863 var xhr = scope.xhr; |
6067 var flags = scope.flags; | 5864 var flags = scope.flags; |
6068 var Loader = function(onLoad, onComplete) { | 5865 var Loader = function(onLoad, onComplete) { |
6069 this.cache = {}; | 5866 this.cache = {}; |
6070 this.onload = onLoad; | 5867 this.onload = onLoad; |
6071 this.oncomplete = onComplete; | 5868 this.oncomplete = onComplete; |
6072 this.inflight = 0; | 5869 this.inflight = 0; |
6073 this.pending = {}; | 5870 this.pending = {}; |
6074 }; | 5871 }; |
6075 Loader.prototype = { | 5872 Loader.prototype = { |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6148 }, | 5945 }, |
6149 checkDone: function() { | 5946 checkDone: function() { |
6150 if (!this.inflight) { | 5947 if (!this.inflight) { |
6151 this.oncomplete(); | 5948 this.oncomplete(); |
6152 } | 5949 } |
6153 } | 5950 } |
6154 }; | 5951 }; |
6155 scope.Loader = Loader; | 5952 scope.Loader = Loader; |
6156 }); | 5953 }); |
6157 | 5954 |
6158 window.HTMLImports.addModule(function(scope) { | 5955 HTMLImports.addModule(function(scope) { |
6159 var Observer = function(addCallback) { | 5956 var Observer = function(addCallback) { |
6160 this.addCallback = addCallback; | 5957 this.addCallback = addCallback; |
6161 this.mo = new MutationObserver(this.handler.bind(this)); | 5958 this.mo = new MutationObserver(this.handler.bind(this)); |
6162 }; | 5959 }; |
6163 Observer.prototype = { | 5960 Observer.prototype = { |
6164 handler: function(mutations) { | 5961 handler: function(mutations) { |
6165 for (var i = 0, l = mutations.length, m; i < l && (m = mutations[i]); i++)
{ | 5962 for (var i = 0, l = mutations.length, m; i < l && (m = mutations[i]); i++)
{ |
6166 if (m.type === "childList" && m.addedNodes.length) { | 5963 if (m.type === "childList" && m.addedNodes.length) { |
6167 this.addedNodes(m.addedNodes); | 5964 this.addedNodes(m.addedNodes); |
6168 } | 5965 } |
(...skipping 12 matching lines...) Expand all Loading... |
6181 observe: function(root) { | 5978 observe: function(root) { |
6182 this.mo.observe(root, { | 5979 this.mo.observe(root, { |
6183 childList: true, | 5980 childList: true, |
6184 subtree: true | 5981 subtree: true |
6185 }); | 5982 }); |
6186 } | 5983 } |
6187 }; | 5984 }; |
6188 scope.Observer = Observer; | 5985 scope.Observer = Observer; |
6189 }); | 5986 }); |
6190 | 5987 |
6191 window.HTMLImports.addModule(function(scope) { | 5988 HTMLImports.addModule(function(scope) { |
6192 var path = scope.path; | 5989 var path = scope.path; |
6193 var rootDocument = scope.rootDocument; | 5990 var rootDocument = scope.rootDocument; |
6194 var flags = scope.flags; | 5991 var flags = scope.flags; |
6195 var isIE = scope.isIE; | 5992 var isIE = scope.isIE; |
6196 var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE; | 5993 var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE; |
6197 var IMPORT_SELECTOR = "link[rel=" + IMPORT_LINK_TYPE + "]"; | 5994 var IMPORT_SELECTOR = "link[rel=" + IMPORT_LINK_TYPE + "]"; |
6198 var importParser = { | 5995 var importParser = { |
6199 documentSelectors: IMPORT_SELECTOR, | 5996 documentSelectors: IMPORT_SELECTOR, |
6200 importsSelectors: [ IMPORT_SELECTOR, "link[rel=stylesheet]:not([type])", "st
yle:not([type])", "script:not([type])", 'script[type="application/javascript"]',
'script[type="text/javascript"]' ].join(","), | 5997 importsSelectors: [ IMPORT_SELECTOR, "link[rel=stylesheet]", "style", "scrip
t:not([type])", 'script[type="text/javascript"]' ].join(","), |
6201 map: { | 5998 map: { |
6202 link: "parseLink", | 5999 link: "parseLink", |
6203 script: "parseScript", | 6000 script: "parseScript", |
6204 style: "parseStyle" | 6001 style: "parseStyle" |
6205 }, | 6002 }, |
6206 dynamicElements: [], | 6003 dynamicElements: [], |
6207 parseNext: function() { | 6004 parseNext: function() { |
6208 var next = this.nextToParse(); | 6005 var next = this.nextToParse(); |
6209 if (next) { | 6006 if (next) { |
6210 this.parse(next); | 6007 this.parse(next); |
(...skipping 30 matching lines...) Expand all Loading... |
6241 this.parsingElement = null; | 6038 this.parsingElement = null; |
6242 flags.parse && console.log("completed", elt); | 6039 flags.parse && console.log("completed", elt); |
6243 }, | 6040 }, |
6244 markDynamicParsingComplete: function(elt) { | 6041 markDynamicParsingComplete: function(elt) { |
6245 var i = this.dynamicElements.indexOf(elt); | 6042 var i = this.dynamicElements.indexOf(elt); |
6246 if (i >= 0) { | 6043 if (i >= 0) { |
6247 this.dynamicElements.splice(i, 1); | 6044 this.dynamicElements.splice(i, 1); |
6248 } | 6045 } |
6249 }, | 6046 }, |
6250 parseImport: function(elt) { | 6047 parseImport: function(elt) { |
6251 elt.import = elt.__doc; | 6048 if (HTMLImports.__importsParsingHook) { |
6252 if (window.HTMLImports.__importsParsingHook) { | 6049 HTMLImports.__importsParsingHook(elt); |
6253 window.HTMLImports.__importsParsingHook(elt); | |
6254 } | 6050 } |
6255 if (elt.import) { | 6051 if (elt.import) { |
6256 elt.import.__importParsed = true; | 6052 elt.import.__importParsed = true; |
6257 } | 6053 } |
6258 this.markParsingComplete(elt); | 6054 this.markParsingComplete(elt); |
6259 if (elt.__resource && !elt.__error) { | 6055 if (elt.__resource && !elt.__error) { |
6260 elt.dispatchEvent(new CustomEvent("load", { | 6056 elt.dispatchEvent(new CustomEvent("load", { |
6261 bubbles: false | 6057 bubbles: false |
6262 })); | 6058 })); |
6263 } else { | 6059 } else { |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6304 } | 6100 } |
6305 return n; | 6101 return n; |
6306 }, | 6102 }, |
6307 addElementToDocument: function(elt) { | 6103 addElementToDocument: function(elt) { |
6308 var port = this.rootImportForElement(elt.__importElement || elt); | 6104 var port = this.rootImportForElement(elt.__importElement || elt); |
6309 port.parentNode.insertBefore(elt, port); | 6105 port.parentNode.insertBefore(elt, port); |
6310 }, | 6106 }, |
6311 trackElement: function(elt, callback) { | 6107 trackElement: function(elt, callback) { |
6312 var self = this; | 6108 var self = this; |
6313 var done = function(e) { | 6109 var done = function(e) { |
6314 elt.removeEventListener("load", done); | |
6315 elt.removeEventListener("error", done); | |
6316 if (callback) { | 6110 if (callback) { |
6317 callback(e); | 6111 callback(e); |
6318 } | 6112 } |
6319 self.markParsingComplete(elt); | 6113 self.markParsingComplete(elt); |
6320 self.parseNext(); | 6114 self.parseNext(); |
6321 }; | 6115 }; |
6322 elt.addEventListener("load", done); | 6116 elt.addEventListener("load", done); |
6323 elt.addEventListener("error", done); | 6117 elt.addEventListener("error", done); |
6324 if (isIE && elt.localName === "style") { | 6118 if (isIE && elt.localName === "style") { |
6325 var fakeLoad = false; | 6119 var fakeLoad = false; |
6326 if (elt.textContent.indexOf("@import") == -1) { | 6120 if (elt.textContent.indexOf("@import") == -1) { |
6327 fakeLoad = true; | 6121 fakeLoad = true; |
6328 } else if (elt.sheet) { | 6122 } else if (elt.sheet) { |
6329 fakeLoad = true; | 6123 fakeLoad = true; |
6330 var csr = elt.sheet.cssRules; | 6124 var csr = elt.sheet.cssRules; |
6331 var len = csr ? csr.length : 0; | 6125 var len = csr ? csr.length : 0; |
6332 for (var i = 0, r; i < len && (r = csr[i]); i++) { | 6126 for (var i = 0, r; i < len && (r = csr[i]); i++) { |
6333 if (r.type === CSSRule.IMPORT_RULE) { | 6127 if (r.type === CSSRule.IMPORT_RULE) { |
6334 fakeLoad = fakeLoad && Boolean(r.styleSheet); | 6128 fakeLoad = fakeLoad && Boolean(r.styleSheet); |
6335 } | 6129 } |
6336 } | 6130 } |
6337 } | 6131 } |
6338 if (fakeLoad) { | 6132 if (fakeLoad) { |
6339 setTimeout(function() { | 6133 elt.dispatchEvent(new CustomEvent("load", { |
6340 elt.dispatchEvent(new CustomEvent("load", { | 6134 bubbles: false |
6341 bubbles: false | 6135 })); |
6342 })); | |
6343 }); | |
6344 } | 6136 } |
6345 } | 6137 } |
6346 }, | 6138 }, |
6347 parseScript: function(scriptElt) { | 6139 parseScript: function(scriptElt) { |
6348 var script = document.createElement("script"); | 6140 var script = document.createElement("script"); |
6349 script.__importElement = scriptElt; | 6141 script.__importElement = scriptElt; |
6350 script.src = scriptElt.src ? scriptElt.src : generateScriptDataUrl(scriptE
lt); | 6142 script.src = scriptElt.src ? scriptElt.src : generateScriptDataUrl(scriptE
lt); |
6351 scope.currentScript = scriptElt; | 6143 scope.currentScript = scriptElt; |
6352 this.trackElement(script, function(e) { | 6144 this.trackElement(script, function(e) { |
6353 if (script.parentNode) { | 6145 script.parentNode.removeChild(script); |
6354 script.parentNode.removeChild(script); | |
6355 } | |
6356 scope.currentScript = null; | 6146 scope.currentScript = null; |
6357 }); | 6147 }); |
6358 this.addElementToDocument(script); | 6148 this.addElementToDocument(script); |
6359 }, | 6149 }, |
6360 nextToParse: function() { | 6150 nextToParse: function() { |
6361 this._mayParse = []; | 6151 this._mayParse = []; |
6362 return !this.parsingElement && (this.nextToParseInDoc(rootDocument) || thi
s.nextToParseDynamic()); | 6152 return !this.parsingElement && (this.nextToParseInDoc(rootDocument) || thi
s.nextToParseDynamic()); |
6363 }, | 6153 }, |
6364 nextToParseInDoc: function(doc, link) { | 6154 nextToParseInDoc: function(doc, link) { |
6365 if (doc && this._mayParse.indexOf(doc) < 0) { | 6155 if (doc && this._mayParse.indexOf(doc) < 0) { |
6366 this._mayParse.push(doc); | 6156 this._mayParse.push(doc); |
6367 var nodes = doc.querySelectorAll(this.parseSelectorsForNode(doc)); | 6157 var nodes = doc.querySelectorAll(this.parseSelectorsForNode(doc)); |
6368 for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { | 6158 for (var i = 0, l = nodes.length, p = 0, n; i < l && (n = nodes[i]); i++
) { |
6369 if (!this.isParsed(n)) { | 6159 if (!this.isParsed(n)) { |
6370 if (this.hasResource(n)) { | 6160 if (this.hasResource(n)) { |
6371 return nodeIsImport(n) ? this.nextToParseInDoc(n.__doc, n) : n; | 6161 return nodeIsImport(n) ? this.nextToParseInDoc(n.import, n) : n; |
6372 } else { | 6162 } else { |
6373 return; | 6163 return; |
6374 } | 6164 } |
6375 } | 6165 } |
6376 } | 6166 } |
6377 } | 6167 } |
6378 return link; | 6168 return link; |
6379 }, | 6169 }, |
6380 nextToParseDynamic: function() { | 6170 nextToParseDynamic: function() { |
6381 return this.dynamicElements[0]; | 6171 return this.dynamicElements[0]; |
6382 }, | 6172 }, |
6383 parseSelectorsForNode: function(node) { | 6173 parseSelectorsForNode: function(node) { |
6384 var doc = node.ownerDocument || node; | 6174 var doc = node.ownerDocument || node; |
6385 return doc === rootDocument ? this.documentSelectors : this.importsSelecto
rs; | 6175 return doc === rootDocument ? this.documentSelectors : this.importsSelecto
rs; |
6386 }, | 6176 }, |
6387 isParsed: function(node) { | 6177 isParsed: function(node) { |
6388 return node.__importParsed; | 6178 return node.__importParsed; |
6389 }, | 6179 }, |
6390 needsDynamicParsing: function(elt) { | 6180 needsDynamicParsing: function(elt) { |
6391 return this.dynamicElements.indexOf(elt) >= 0; | 6181 return this.dynamicElements.indexOf(elt) >= 0; |
6392 }, | 6182 }, |
6393 hasResource: function(node) { | 6183 hasResource: function(node) { |
6394 if (nodeIsImport(node) && node.__doc === undefined) { | 6184 if (nodeIsImport(node) && node.import === undefined) { |
6395 return false; | 6185 return false; |
6396 } | 6186 } |
6397 return true; | 6187 return true; |
6398 } | 6188 } |
6399 }; | 6189 }; |
6400 function nodeIsImport(elt) { | 6190 function nodeIsImport(elt) { |
6401 return elt.localName === "link" && elt.rel === IMPORT_LINK_TYPE; | 6191 return elt.localName === "link" && elt.rel === IMPORT_LINK_TYPE; |
6402 } | 6192 } |
6403 function generateScriptDataUrl(script) { | 6193 function generateScriptDataUrl(script) { |
6404 var scriptContent = generateScriptContent(script); | 6194 var scriptContent = generateScriptContent(script); |
(...skipping 13 matching lines...) Expand all Loading... |
6418 function cloneStyle(style) { | 6208 function cloneStyle(style) { |
6419 var clone = style.ownerDocument.createElement("style"); | 6209 var clone = style.ownerDocument.createElement("style"); |
6420 clone.textContent = style.textContent; | 6210 clone.textContent = style.textContent; |
6421 path.resolveUrlsInStyle(clone); | 6211 path.resolveUrlsInStyle(clone); |
6422 return clone; | 6212 return clone; |
6423 } | 6213 } |
6424 scope.parser = importParser; | 6214 scope.parser = importParser; |
6425 scope.IMPORT_SELECTOR = IMPORT_SELECTOR; | 6215 scope.IMPORT_SELECTOR = IMPORT_SELECTOR; |
6426 }); | 6216 }); |
6427 | 6217 |
6428 window.HTMLImports.addModule(function(scope) { | 6218 HTMLImports.addModule(function(scope) { |
6429 var flags = scope.flags; | 6219 var flags = scope.flags; |
6430 var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE; | 6220 var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE; |
6431 var IMPORT_SELECTOR = scope.IMPORT_SELECTOR; | 6221 var IMPORT_SELECTOR = scope.IMPORT_SELECTOR; |
6432 var rootDocument = scope.rootDocument; | 6222 var rootDocument = scope.rootDocument; |
6433 var Loader = scope.Loader; | 6223 var Loader = scope.Loader; |
6434 var Observer = scope.Observer; | 6224 var Observer = scope.Observer; |
6435 var parser = scope.parser; | 6225 var parser = scope.parser; |
6436 var importer = { | 6226 var importer = { |
6437 documents: {}, | 6227 documents: {}, |
6438 documentPreloadSelectors: IMPORT_SELECTOR, | 6228 documentPreloadSelectors: IMPORT_SELECTOR, |
(...skipping 19 matching lines...) Expand all Loading... |
6458 if (isImportLink(elt)) { | 6248 if (isImportLink(elt)) { |
6459 var doc = this.documents[url]; | 6249 var doc = this.documents[url]; |
6460 if (doc === undefined) { | 6250 if (doc === undefined) { |
6461 doc = err ? null : makeDocument(resource, redirectedUrl || url); | 6251 doc = err ? null : makeDocument(resource, redirectedUrl || url); |
6462 if (doc) { | 6252 if (doc) { |
6463 doc.__importLink = elt; | 6253 doc.__importLink = elt; |
6464 this.bootDocument(doc); | 6254 this.bootDocument(doc); |
6465 } | 6255 } |
6466 this.documents[url] = doc; | 6256 this.documents[url] = doc; |
6467 } | 6257 } |
6468 elt.__doc = doc; | 6258 elt.import = doc; |
6469 } | 6259 } |
6470 parser.parseNext(); | 6260 parser.parseNext(); |
6471 }, | 6261 }, |
6472 bootDocument: function(doc) { | 6262 bootDocument: function(doc) { |
6473 this.loadSubtree(doc); | 6263 this.loadSubtree(doc); |
6474 this.observer.observe(doc); | 6264 this.observer.observe(doc); |
6475 parser.parseNext(); | 6265 parser.parseNext(); |
6476 }, | 6266 }, |
6477 loadedAll: function() { | 6267 loadedAll: function() { |
6478 parser.parseNext(); | 6268 parser.parseNext(); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6517 }, | 6307 }, |
6518 configurable: true | 6308 configurable: true |
6519 }; | 6309 }; |
6520 Object.defineProperty(document, "baseURI", baseURIDescriptor); | 6310 Object.defineProperty(document, "baseURI", baseURIDescriptor); |
6521 Object.defineProperty(rootDocument, "baseURI", baseURIDescriptor); | 6311 Object.defineProperty(rootDocument, "baseURI", baseURIDescriptor); |
6522 } | 6312 } |
6523 scope.importer = importer; | 6313 scope.importer = importer; |
6524 scope.importLoader = importLoader; | 6314 scope.importLoader = importLoader; |
6525 }); | 6315 }); |
6526 | 6316 |
6527 window.HTMLImports.addModule(function(scope) { | 6317 HTMLImports.addModule(function(scope) { |
6528 var parser = scope.parser; | 6318 var parser = scope.parser; |
6529 var importer = scope.importer; | 6319 var importer = scope.importer; |
6530 var dynamic = { | 6320 var dynamic = { |
6531 added: function(nodes) { | 6321 added: function(nodes) { |
6532 var owner, parsed, loading; | 6322 var owner, parsed, loading; |
6533 for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { | 6323 for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { |
6534 if (!owner) { | 6324 if (!owner) { |
6535 owner = n.ownerDocument; | 6325 owner = n.ownerDocument; |
6536 parsed = parser.isParsed(owner); | 6326 parsed = parser.isParsed(owner); |
6537 } | 6327 } |
(...skipping 16 matching lines...) Expand all Loading... |
6554 importer.observer.addCallback = dynamic.added.bind(dynamic); | 6344 importer.observer.addCallback = dynamic.added.bind(dynamic); |
6555 var matches = HTMLElement.prototype.matches || HTMLElement.prototype.matchesSe
lector || HTMLElement.prototype.webkitMatchesSelector || HTMLElement.prototype.m
ozMatchesSelector || HTMLElement.prototype.msMatchesSelector; | 6345 var matches = HTMLElement.prototype.matches || HTMLElement.prototype.matchesSe
lector || HTMLElement.prototype.webkitMatchesSelector || HTMLElement.prototype.m
ozMatchesSelector || HTMLElement.prototype.msMatchesSelector; |
6556 }); | 6346 }); |
6557 | 6347 |
6558 (function(scope) { | 6348 (function(scope) { |
6559 var initializeModules = scope.initializeModules; | 6349 var initializeModules = scope.initializeModules; |
6560 var isIE = scope.isIE; | 6350 var isIE = scope.isIE; |
6561 if (scope.useNative) { | 6351 if (scope.useNative) { |
6562 return; | 6352 return; |
6563 } | 6353 } |
| 6354 if (isIE && typeof window.CustomEvent !== "function") { |
| 6355 window.CustomEvent = function(inType, params) { |
| 6356 params = params || {}; |
| 6357 var e = document.createEvent("CustomEvent"); |
| 6358 e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelab
le), params.detail); |
| 6359 return e; |
| 6360 }; |
| 6361 window.CustomEvent.prototype = window.Event.prototype; |
| 6362 } |
6564 initializeModules(); | 6363 initializeModules(); |
6565 var rootDocument = scope.rootDocument; | 6364 var rootDocument = scope.rootDocument; |
6566 function bootstrap() { | 6365 function bootstrap() { |
6567 window.HTMLImports.importer.bootDocument(rootDocument); | 6366 HTMLImports.importer.bootDocument(rootDocument); |
6568 } | 6367 } |
6569 if (document.readyState === "complete" || document.readyState === "interactive
" && !window.attachEvent) { | 6368 if (document.readyState === "complete" || document.readyState === "interactive
" && !window.attachEvent) { |
6570 bootstrap(); | 6369 bootstrap(); |
6571 } else { | 6370 } else { |
6572 document.addEventListener("DOMContentLoaded", bootstrap); | 6371 document.addEventListener("DOMContentLoaded", bootstrap); |
6573 } | 6372 } |
6574 })(window.HTMLImports); | 6373 })(HTMLImports); |
6575 | 6374 |
6576 window.CustomElements = window.CustomElements || { | 6375 window.CustomElements = window.CustomElements || { |
6577 flags: {} | 6376 flags: {} |
6578 }; | 6377 }; |
6579 | 6378 |
6580 (function(scope) { | 6379 (function(scope) { |
6581 var flags = scope.flags; | 6380 var flags = scope.flags; |
6582 var modules = []; | 6381 var modules = []; |
6583 var addModule = function(module) { | 6382 var addModule = function(module) { |
6584 modules.push(module); | 6383 modules.push(module); |
6585 }; | 6384 }; |
6586 var initializeModules = function() { | 6385 var initializeModules = function() { |
6587 modules.forEach(function(module) { | 6386 modules.forEach(function(module) { |
6588 module(scope); | 6387 module(scope); |
6589 }); | 6388 }); |
6590 }; | 6389 }; |
6591 scope.addModule = addModule; | 6390 scope.addModule = addModule; |
6592 scope.initializeModules = initializeModules; | 6391 scope.initializeModules = initializeModules; |
6593 scope.hasNative = Boolean(document.registerElement); | 6392 scope.hasNative = Boolean(document.registerElement); |
6594 scope.isIE = /Trident/.test(navigator.userAgent); | 6393 scope.useNative = !flags.register && scope.hasNative && !window.ShadowDOMPolyf
ill && (!window.HTMLImports || HTMLImports.useNative); |
6595 scope.useNative = !flags.register && scope.hasNative && !window.ShadowDOMPolyf
ill && (!window.HTMLImports || window.HTMLImports.useNative); | 6394 })(CustomElements); |
6596 })(window.CustomElements); | |
6597 | 6395 |
6598 window.CustomElements.addModule(function(scope) { | 6396 CustomElements.addModule(function(scope) { |
6599 var IMPORT_LINK_TYPE = window.HTMLImports ? window.HTMLImports.IMPORT_LINK_TYP
E : "none"; | 6397 var IMPORT_LINK_TYPE = window.HTMLImports ? HTMLImports.IMPORT_LINK_TYPE : "no
ne"; |
6600 function forSubtree(node, cb) { | 6398 function forSubtree(node, cb) { |
6601 findAllElements(node, function(e) { | 6399 findAllElements(node, function(e) { |
6602 if (cb(e)) { | 6400 if (cb(e)) { |
6603 return true; | 6401 return true; |
6604 } | 6402 } |
6605 forRoots(e, cb); | 6403 forRoots(e, cb); |
6606 }); | 6404 }); |
6607 forRoots(node, cb); | 6405 forRoots(node, cb); |
6608 } | 6406 } |
6609 function findAllElements(node, find, data) { | 6407 function findAllElements(node, find, data) { |
(...skipping 16 matching lines...) Expand all Loading... |
6626 var root = node.shadowRoot; | 6424 var root = node.shadowRoot; |
6627 while (root) { | 6425 while (root) { |
6628 forSubtree(root, cb); | 6426 forSubtree(root, cb); |
6629 root = root.olderShadowRoot; | 6427 root = root.olderShadowRoot; |
6630 } | 6428 } |
6631 } | 6429 } |
6632 function forDocumentTree(doc, cb) { | 6430 function forDocumentTree(doc, cb) { |
6633 _forDocumentTree(doc, cb, []); | 6431 _forDocumentTree(doc, cb, []); |
6634 } | 6432 } |
6635 function _forDocumentTree(doc, cb, processingDocuments) { | 6433 function _forDocumentTree(doc, cb, processingDocuments) { |
6636 doc = window.wrap(doc); | 6434 doc = wrap(doc); |
6637 if (processingDocuments.indexOf(doc) >= 0) { | 6435 if (processingDocuments.indexOf(doc) >= 0) { |
6638 return; | 6436 return; |
6639 } | 6437 } |
6640 processingDocuments.push(doc); | 6438 processingDocuments.push(doc); |
6641 var imports = doc.querySelectorAll("link[rel=" + IMPORT_LINK_TYPE + "]"); | 6439 var imports = doc.querySelectorAll("link[rel=" + IMPORT_LINK_TYPE + "]"); |
6642 for (var i = 0, l = imports.length, n; i < l && (n = imports[i]); i++) { | 6440 for (var i = 0, l = imports.length, n; i < l && (n = imports[i]); i++) { |
6643 if (n.import) { | 6441 if (n.import) { |
6644 _forDocumentTree(n.import, cb, processingDocuments); | 6442 _forDocumentTree(n.import, cb, processingDocuments); |
6645 } | 6443 } |
6646 } | 6444 } |
6647 cb(doc); | 6445 cb(doc); |
6648 } | 6446 } |
6649 scope.forDocumentTree = forDocumentTree; | 6447 scope.forDocumentTree = forDocumentTree; |
6650 scope.forSubtree = forSubtree; | 6448 scope.forSubtree = forSubtree; |
6651 }); | 6449 }); |
6652 | 6450 |
6653 window.CustomElements.addModule(function(scope) { | 6451 CustomElements.addModule(function(scope) { |
6654 var flags = scope.flags; | 6452 var flags = scope.flags; |
6655 var forSubtree = scope.forSubtree; | 6453 var forSubtree = scope.forSubtree; |
6656 var forDocumentTree = scope.forDocumentTree; | 6454 var forDocumentTree = scope.forDocumentTree; |
6657 function addedNode(node, isAttached) { | 6455 function addedNode(node) { |
6658 return added(node, isAttached) || addedSubtree(node, isAttached); | 6456 return added(node) || addedSubtree(node); |
6659 } | 6457 } |
6660 function added(node, isAttached) { | 6458 function added(node) { |
6661 if (scope.upgrade(node, isAttached)) { | 6459 if (scope.upgrade(node)) { |
6662 return true; | 6460 return true; |
6663 } | 6461 } |
6664 if (isAttached) { | 6462 attached(node); |
6665 attached(node); | |
6666 } | |
6667 } | 6463 } |
6668 function addedSubtree(node, isAttached) { | 6464 function addedSubtree(node) { |
6669 forSubtree(node, function(e) { | 6465 forSubtree(node, function(e) { |
6670 if (added(e, isAttached)) { | 6466 if (added(e)) { |
6671 return true; | 6467 return true; |
6672 } | 6468 } |
6673 }); | 6469 }); |
6674 } | 6470 } |
6675 var hasThrottledAttached = window.MutationObserver._isPolyfilled && flags["thr
ottle-attached"]; | 6471 function attachedNode(node) { |
6676 scope.hasPolyfillMutations = hasThrottledAttached; | 6472 attached(node); |
6677 scope.hasThrottledAttached = hasThrottledAttached; | 6473 if (inDocument(node)) { |
| 6474 forSubtree(node, function(e) { |
| 6475 attached(e); |
| 6476 }); |
| 6477 } |
| 6478 } |
| 6479 var hasPolyfillMutations = !window.MutationObserver || window.MutationObserver
=== window.JsMutationObserver; |
| 6480 scope.hasPolyfillMutations = hasPolyfillMutations; |
6678 var isPendingMutations = false; | 6481 var isPendingMutations = false; |
6679 var pendingMutations = []; | 6482 var pendingMutations = []; |
6680 function deferMutation(fn) { | 6483 function deferMutation(fn) { |
6681 pendingMutations.push(fn); | 6484 pendingMutations.push(fn); |
6682 if (!isPendingMutations) { | 6485 if (!isPendingMutations) { |
6683 isPendingMutations = true; | 6486 isPendingMutations = true; |
6684 setTimeout(takeMutations); | 6487 setTimeout(takeMutations); |
6685 } | 6488 } |
6686 } | 6489 } |
6687 function takeMutations() { | 6490 function takeMutations() { |
6688 isPendingMutations = false; | 6491 isPendingMutations = false; |
6689 var $p = pendingMutations; | 6492 var $p = pendingMutations; |
6690 for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) { | 6493 for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) { |
6691 p(); | 6494 p(); |
6692 } | 6495 } |
6693 pendingMutations = []; | 6496 pendingMutations = []; |
6694 } | 6497 } |
6695 function attached(element) { | 6498 function attached(element) { |
6696 if (hasThrottledAttached) { | 6499 if (hasPolyfillMutations) { |
6697 deferMutation(function() { | 6500 deferMutation(function() { |
6698 _attached(element); | 6501 _attached(element); |
6699 }); | 6502 }); |
6700 } else { | 6503 } else { |
6701 _attached(element); | 6504 _attached(element); |
6702 } | 6505 } |
6703 } | 6506 } |
6704 function _attached(element) { | 6507 function _attached(element) { |
6705 if (element.__upgraded__ && !element.__attached) { | 6508 if (element.__upgraded__ && (element.attachedCallback || element.detachedCal
lback)) { |
6706 element.__attached = true; | 6509 if (!element.__attached && inDocument(element)) { |
6707 if (element.attachedCallback) { | 6510 element.__attached = true; |
6708 element.attachedCallback(); | 6511 if (element.attachedCallback) { |
| 6512 element.attachedCallback(); |
| 6513 } |
6709 } | 6514 } |
6710 } | 6515 } |
6711 } | 6516 } |
6712 function detachedNode(node) { | 6517 function detachedNode(node) { |
6713 detached(node); | 6518 detached(node); |
6714 forSubtree(node, function(e) { | 6519 forSubtree(node, function(e) { |
6715 detached(e); | 6520 detached(e); |
6716 }); | 6521 }); |
6717 } | 6522 } |
6718 function detached(element) { | 6523 function detached(element) { |
6719 if (hasThrottledAttached) { | 6524 if (hasPolyfillMutations) { |
6720 deferMutation(function() { | 6525 deferMutation(function() { |
6721 _detached(element); | 6526 _detached(element); |
6722 }); | 6527 }); |
6723 } else { | 6528 } else { |
6724 _detached(element); | 6529 _detached(element); |
6725 } | 6530 } |
6726 } | 6531 } |
6727 function _detached(element) { | 6532 function _detached(element) { |
6728 if (element.__upgraded__ && element.__attached) { | 6533 if (element.__upgraded__ && (element.attachedCallback || element.detachedCal
lback)) { |
6729 element.__attached = false; | 6534 if (element.__attached && !inDocument(element)) { |
6730 if (element.detachedCallback) { | 6535 element.__attached = false; |
6731 element.detachedCallback(); | 6536 if (element.detachedCallback) { |
| 6537 element.detachedCallback(); |
| 6538 } |
6732 } | 6539 } |
6733 } | 6540 } |
6734 } | 6541 } |
6735 function inDocument(element) { | 6542 function inDocument(element) { |
6736 var p = element; | 6543 var p = element; |
6737 var doc = window.wrap(document); | 6544 var doc = wrap(document); |
6738 while (p) { | 6545 while (p) { |
6739 if (p == doc) { | 6546 if (p == doc) { |
6740 return true; | 6547 return true; |
6741 } | 6548 } |
6742 p = p.parentNode || p.nodeType === Node.DOCUMENT_FRAGMENT_NODE && p.host; | 6549 p = p.parentNode || p.nodeType === Node.DOCUMENT_FRAGMENT_NODE && p.host; |
6743 } | 6550 } |
6744 } | 6551 } |
6745 function watchShadow(node) { | 6552 function watchShadow(node) { |
6746 if (node.shadowRoot && !node.shadowRoot.__watched) { | 6553 if (node.shadowRoot && !node.shadowRoot.__watched) { |
6747 flags.dom && console.log("watching shadow-root for: ", node.localName); | 6554 flags.dom && console.log("watching shadow-root for: ", node.localName); |
6748 var root = node.shadowRoot; | 6555 var root = node.shadowRoot; |
6749 while (root) { | 6556 while (root) { |
6750 observe(root); | 6557 observe(root); |
6751 root = root.olderShadowRoot; | 6558 root = root.olderShadowRoot; |
6752 } | 6559 } |
6753 } | 6560 } |
6754 } | 6561 } |
6755 function handler(root, mutations) { | 6562 function handler(mutations) { |
6756 if (flags.dom) { | 6563 if (flags.dom) { |
6757 var mx = mutations[0]; | 6564 var mx = mutations[0]; |
6758 if (mx && mx.type === "childList" && mx.addedNodes) { | 6565 if (mx && mx.type === "childList" && mx.addedNodes) { |
6759 if (mx.addedNodes) { | 6566 if (mx.addedNodes) { |
6760 var d = mx.addedNodes[0]; | 6567 var d = mx.addedNodes[0]; |
6761 while (d && d !== document && !d.host) { | 6568 while (d && d !== document && !d.host) { |
6762 d = d.parentNode; | 6569 d = d.parentNode; |
6763 } | 6570 } |
6764 var u = d && (d.URL || d._URL || d.host && d.host.localName) || ""; | 6571 var u = d && (d.URL || d._URL || d.host && d.host.localName) || ""; |
6765 u = u.split("/?").shift().split("/").pop(); | 6572 u = u.split("/?").shift().split("/").pop(); |
6766 } | 6573 } |
6767 } | 6574 } |
6768 console.group("mutations (%d) [%s]", mutations.length, u || ""); | 6575 console.group("mutations (%d) [%s]", mutations.length, u || ""); |
6769 } | 6576 } |
6770 var isAttached = inDocument(root); | |
6771 mutations.forEach(function(mx) { | 6577 mutations.forEach(function(mx) { |
6772 if (mx.type === "childList") { | 6578 if (mx.type === "childList") { |
6773 forEach(mx.addedNodes, function(n) { | 6579 forEach(mx.addedNodes, function(n) { |
6774 if (!n.localName) { | 6580 if (!n.localName) { |
6775 return; | 6581 return; |
6776 } | 6582 } |
6777 addedNode(n, isAttached); | 6583 addedNode(n); |
6778 }); | 6584 }); |
6779 forEach(mx.removedNodes, function(n) { | 6585 forEach(mx.removedNodes, function(n) { |
6780 if (!n.localName) { | 6586 if (!n.localName) { |
6781 return; | 6587 return; |
6782 } | 6588 } |
6783 detachedNode(n); | 6589 detachedNode(n); |
6784 }); | 6590 }); |
6785 } | 6591 } |
6786 }); | 6592 }); |
6787 flags.dom && console.groupEnd(); | 6593 flags.dom && console.groupEnd(); |
6788 } | 6594 } |
6789 function takeRecords(node) { | 6595 function takeRecords(node) { |
6790 node = window.wrap(node); | 6596 node = wrap(node); |
6791 if (!node) { | 6597 if (!node) { |
6792 node = window.wrap(document); | 6598 node = wrap(document); |
6793 } | 6599 } |
6794 while (node.parentNode) { | 6600 while (node.parentNode) { |
6795 node = node.parentNode; | 6601 node = node.parentNode; |
6796 } | 6602 } |
6797 var observer = node.__observer; | 6603 var observer = node.__observer; |
6798 if (observer) { | 6604 if (observer) { |
6799 handler(node, observer.takeRecords()); | 6605 handler(observer.takeRecords()); |
6800 takeMutations(); | 6606 takeMutations(); |
6801 } | 6607 } |
6802 } | 6608 } |
6803 var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach); | 6609 var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach); |
6804 function observe(inRoot) { | 6610 function observe(inRoot) { |
6805 if (inRoot.__observer) { | 6611 if (inRoot.__observer) { |
6806 return; | 6612 return; |
6807 } | 6613 } |
6808 var observer = new MutationObserver(handler.bind(this, inRoot)); | 6614 var observer = new MutationObserver(handler); |
6809 observer.observe(inRoot, { | 6615 observer.observe(inRoot, { |
6810 childList: true, | 6616 childList: true, |
6811 subtree: true | 6617 subtree: true |
6812 }); | 6618 }); |
6813 inRoot.__observer = observer; | 6619 inRoot.__observer = observer; |
6814 } | 6620 } |
6815 function upgradeDocument(doc) { | 6621 function upgradeDocument(doc) { |
6816 doc = window.wrap(doc); | 6622 doc = wrap(doc); |
6817 flags.dom && console.group("upgradeDocument: ", doc.baseURI.split("/").pop()
); | 6623 flags.dom && console.group("upgradeDocument: ", doc.baseURI.split("/").pop()
); |
6818 var isMainDocument = doc === window.wrap(document); | 6624 addedNode(doc); |
6819 addedNode(doc, isMainDocument); | |
6820 observe(doc); | 6625 observe(doc); |
6821 flags.dom && console.groupEnd(); | 6626 flags.dom && console.groupEnd(); |
6822 } | 6627 } |
6823 function upgradeDocumentTree(doc) { | 6628 function upgradeDocumentTree(doc) { |
6824 forDocumentTree(doc, upgradeDocument); | 6629 forDocumentTree(doc, upgradeDocument); |
6825 } | 6630 } |
6826 var originalCreateShadowRoot = Element.prototype.createShadowRoot; | 6631 var originalCreateShadowRoot = Element.prototype.createShadowRoot; |
6827 if (originalCreateShadowRoot) { | 6632 if (originalCreateShadowRoot) { |
6828 Element.prototype.createShadowRoot = function() { | 6633 Element.prototype.createShadowRoot = function() { |
6829 var root = originalCreateShadowRoot.call(this); | 6634 var root = originalCreateShadowRoot.call(this); |
6830 window.CustomElements.watchShadow(this); | 6635 CustomElements.watchShadow(this); |
6831 return root; | 6636 return root; |
6832 }; | 6637 }; |
6833 } | 6638 } |
6834 scope.watchShadow = watchShadow; | 6639 scope.watchShadow = watchShadow; |
6835 scope.upgradeDocumentTree = upgradeDocumentTree; | 6640 scope.upgradeDocumentTree = upgradeDocumentTree; |
6836 scope.upgradeDocument = upgradeDocument; | |
6837 scope.upgradeSubtree = addedSubtree; | 6641 scope.upgradeSubtree = addedSubtree; |
6838 scope.upgradeAll = addedNode; | 6642 scope.upgradeAll = addedNode; |
6839 scope.attached = attached; | 6643 scope.attachedNode = attachedNode; |
6840 scope.takeRecords = takeRecords; | 6644 scope.takeRecords = takeRecords; |
6841 }); | 6645 }); |
6842 | 6646 |
6843 window.CustomElements.addModule(function(scope) { | 6647 CustomElements.addModule(function(scope) { |
6844 var flags = scope.flags; | 6648 var flags = scope.flags; |
6845 function upgrade(node, isAttached) { | 6649 function upgrade(node) { |
6846 if (node.localName === "template") { | |
6847 if (window.HTMLTemplateElement && HTMLTemplateElement.decorate) { | |
6848 HTMLTemplateElement.decorate(node); | |
6849 } | |
6850 } | |
6851 if (!node.__upgraded__ && node.nodeType === Node.ELEMENT_NODE) { | 6650 if (!node.__upgraded__ && node.nodeType === Node.ELEMENT_NODE) { |
6852 var is = node.getAttribute("is"); | 6651 var is = node.getAttribute("is"); |
6853 var definition = scope.getRegisteredDefinition(node.localName) || scope.ge
tRegisteredDefinition(is); | 6652 var definition = scope.getRegisteredDefinition(is || node.localName); |
6854 if (definition) { | 6653 if (definition) { |
6855 if (is && definition.tag == node.localName || !is && !definition.extends
) { | 6654 if (is && definition.tag == node.localName) { |
6856 return upgradeWithDefinition(node, definition, isAttached); | 6655 return upgradeWithDefinition(node, definition); |
| 6656 } else if (!is && !definition.extends) { |
| 6657 return upgradeWithDefinition(node, definition); |
6857 } | 6658 } |
6858 } | 6659 } |
6859 } | 6660 } |
6860 } | 6661 } |
6861 function upgradeWithDefinition(element, definition, isAttached) { | 6662 function upgradeWithDefinition(element, definition) { |
6862 flags.upgrade && console.group("upgrade:", element.localName); | 6663 flags.upgrade && console.group("upgrade:", element.localName); |
6863 if (definition.is) { | 6664 if (definition.is) { |
6864 element.setAttribute("is", definition.is); | 6665 element.setAttribute("is", definition.is); |
6865 } | 6666 } |
6866 implementPrototype(element, definition); | 6667 implementPrototype(element, definition); |
6867 element.__upgraded__ = true; | 6668 element.__upgraded__ = true; |
6868 created(element); | 6669 created(element); |
6869 if (isAttached) { | 6670 scope.attachedNode(element); |
6870 scope.attached(element); | 6671 scope.upgradeSubtree(element); |
6871 } | |
6872 scope.upgradeSubtree(element, isAttached); | |
6873 flags.upgrade && console.groupEnd(); | 6672 flags.upgrade && console.groupEnd(); |
6874 return element; | 6673 return element; |
6875 } | 6674 } |
6876 function implementPrototype(element, definition) { | 6675 function implementPrototype(element, definition) { |
6877 if (Object.__proto__) { | 6676 if (Object.__proto__) { |
6878 element.__proto__ = definition.prototype; | 6677 element.__proto__ = definition.prototype; |
6879 } else { | 6678 } else { |
6880 customMixin(element, definition.prototype, definition.native); | 6679 customMixin(element, definition.prototype, definition.native); |
6881 element.__proto__ = definition.prototype; | 6680 element.__proto__ = definition.prototype; |
6882 } | 6681 } |
(...skipping 15 matching lines...) Expand all Loading... |
6898 function created(element) { | 6697 function created(element) { |
6899 if (element.createdCallback) { | 6698 if (element.createdCallback) { |
6900 element.createdCallback(); | 6699 element.createdCallback(); |
6901 } | 6700 } |
6902 } | 6701 } |
6903 scope.upgrade = upgrade; | 6702 scope.upgrade = upgrade; |
6904 scope.upgradeWithDefinition = upgradeWithDefinition; | 6703 scope.upgradeWithDefinition = upgradeWithDefinition; |
6905 scope.implementPrototype = implementPrototype; | 6704 scope.implementPrototype = implementPrototype; |
6906 }); | 6705 }); |
6907 | 6706 |
6908 window.CustomElements.addModule(function(scope) { | 6707 CustomElements.addModule(function(scope) { |
6909 var isIE = scope.isIE; | 6708 var isIE11OrOlder = scope.isIE11OrOlder; |
6910 var upgradeDocumentTree = scope.upgradeDocumentTree; | 6709 var upgradeDocumentTree = scope.upgradeDocumentTree; |
6911 var upgradeAll = scope.upgradeAll; | 6710 var upgradeAll = scope.upgradeAll; |
6912 var upgradeWithDefinition = scope.upgradeWithDefinition; | 6711 var upgradeWithDefinition = scope.upgradeWithDefinition; |
6913 var implementPrototype = scope.implementPrototype; | 6712 var implementPrototype = scope.implementPrototype; |
6914 var useNative = scope.useNative; | 6713 var useNative = scope.useNative; |
6915 function register(name, options) { | 6714 function register(name, options) { |
6916 var definition = options || {}; | 6715 var definition = options || {}; |
6917 if (!name) { | 6716 if (!name) { |
6918 throw new Error("document.registerElement: first argument `name` must not
be empty"); | 6717 throw new Error("document.registerElement: first argument `name` must not
be empty"); |
6919 } | 6718 } |
6920 if (name.indexOf("-") < 0) { | 6719 if (name.indexOf("-") < 0) { |
6921 throw new Error("document.registerElement: first argument ('name') must co
ntain a dash ('-'). Argument provided was '" + String(name) + "'."); | 6720 throw new Error("document.registerElement: first argument ('name') must co
ntain a dash ('-'). Argument provided was '" + String(name) + "'."); |
6922 } | 6721 } |
6923 if (isReservedTag(name)) { | 6722 if (isReservedTag(name)) { |
6924 throw new Error("Failed to execute 'registerElement' on 'Document': Regist
ration failed for type '" + String(name) + "'. The type name is invalid."); | 6723 throw new Error("Failed to execute 'registerElement' on 'Document': Regist
ration failed for type '" + String(name) + "'. The type name is invalid."); |
6925 } | 6724 } |
6926 if (getRegisteredDefinition(name)) { | 6725 if (getRegisteredDefinition(name)) { |
6927 throw new Error("DuplicateDefinitionError: a type with name '" + String(na
me) + "' is already registered"); | 6726 throw new Error("DuplicateDefinitionError: a type with name '" + String(na
me) + "' is already registered"); |
6928 } | 6727 } |
6929 if (!definition.prototype) { | 6728 if (!definition.prototype) { |
6930 definition.prototype = Object.create(HTMLElement.prototype); | 6729 definition.prototype = Object.create(HTMLElement.prototype); |
6931 } | 6730 } |
6932 definition.__name = name.toLowerCase(); | 6731 definition.__name = name.toLowerCase(); |
6933 if (definition.extends) { | |
6934 definition.extends = definition.extends.toLowerCase(); | |
6935 } | |
6936 definition.lifecycle = definition.lifecycle || {}; | 6732 definition.lifecycle = definition.lifecycle || {}; |
6937 definition.ancestry = ancestry(definition.extends); | 6733 definition.ancestry = ancestry(definition.extends); |
6938 resolveTagName(definition); | 6734 resolveTagName(definition); |
6939 resolvePrototypeChain(definition); | 6735 resolvePrototypeChain(definition); |
6940 overrideAttributeApi(definition.prototype); | 6736 overrideAttributeApi(definition.prototype); |
6941 registerDefinition(definition.__name, definition); | 6737 registerDefinition(definition.__name, definition); |
6942 definition.ctor = generateConstructor(definition); | 6738 definition.ctor = generateConstructor(definition); |
6943 definition.ctor.prototype = definition.prototype; | 6739 definition.ctor.prototype = definition.prototype; |
6944 definition.prototype.constructor = definition.ctor; | 6740 definition.prototype.constructor = definition.ctor; |
6945 if (scope.ready) { | 6741 if (scope.ready) { |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6993 definition.tag = baseTag || definition.__name; | 6789 definition.tag = baseTag || definition.__name; |
6994 if (baseTag) { | 6790 if (baseTag) { |
6995 definition.is = definition.__name; | 6791 definition.is = definition.__name; |
6996 } | 6792 } |
6997 } | 6793 } |
6998 function resolvePrototypeChain(definition) { | 6794 function resolvePrototypeChain(definition) { |
6999 if (!Object.__proto__) { | 6795 if (!Object.__proto__) { |
7000 var nativePrototype = HTMLElement.prototype; | 6796 var nativePrototype = HTMLElement.prototype; |
7001 if (definition.is) { | 6797 if (definition.is) { |
7002 var inst = document.createElement(definition.tag); | 6798 var inst = document.createElement(definition.tag); |
7003 nativePrototype = Object.getPrototypeOf(inst); | 6799 var expectedPrototype = Object.getPrototypeOf(inst); |
| 6800 if (expectedPrototype === definition.prototype) { |
| 6801 nativePrototype = expectedPrototype; |
| 6802 } |
7004 } | 6803 } |
7005 var proto = definition.prototype, ancestor; | 6804 var proto = definition.prototype, ancestor; |
7006 var foundPrototype = false; | 6805 while (proto && proto !== nativePrototype) { |
7007 while (proto) { | |
7008 if (proto == nativePrototype) { | |
7009 foundPrototype = true; | |
7010 } | |
7011 ancestor = Object.getPrototypeOf(proto); | 6806 ancestor = Object.getPrototypeOf(proto); |
7012 if (ancestor) { | 6807 proto.__proto__ = ancestor; |
7013 proto.__proto__ = ancestor; | |
7014 } | |
7015 proto = ancestor; | 6808 proto = ancestor; |
7016 } | 6809 } |
7017 if (!foundPrototype) { | |
7018 console.warn(definition.tag + " prototype not found in prototype chain f
or " + definition.is); | |
7019 } | |
7020 definition.native = nativePrototype; | 6810 definition.native = nativePrototype; |
7021 } | 6811 } |
7022 } | 6812 } |
7023 function instantiate(definition) { | 6813 function instantiate(definition) { |
7024 return upgradeWithDefinition(domCreateElement(definition.tag), definition); | 6814 return upgradeWithDefinition(domCreateElement(definition.tag), definition); |
7025 } | 6815 } |
7026 var registry = {}; | 6816 var registry = {}; |
7027 function getRegisteredDefinition(name) { | 6817 function getRegisteredDefinition(name) { |
7028 if (name) { | 6818 if (name) { |
7029 return registry[name.toLowerCase()]; | 6819 return registry[name.toLowerCase()]; |
7030 } | 6820 } |
7031 } | 6821 } |
7032 function registerDefinition(name, definition) { | 6822 function registerDefinition(name, definition) { |
7033 registry[name] = definition; | 6823 registry[name] = definition; |
7034 } | 6824 } |
7035 function generateConstructor(definition) { | 6825 function generateConstructor(definition) { |
7036 return function() { | 6826 return function() { |
7037 return instantiate(definition); | 6827 return instantiate(definition); |
7038 }; | 6828 }; |
7039 } | 6829 } |
7040 var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml"; | 6830 var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml"; |
7041 function createElementNS(namespace, tag, typeExtension) { | 6831 function createElementNS(namespace, tag, typeExtension) { |
7042 if (namespace === HTML_NAMESPACE) { | 6832 if (namespace === HTML_NAMESPACE) { |
7043 return createElement(tag, typeExtension); | 6833 return createElement(tag, typeExtension); |
7044 } else { | 6834 } else { |
7045 return domCreateElementNS(namespace, tag); | 6835 return domCreateElementNS(namespace, tag); |
7046 } | 6836 } |
7047 } | 6837 } |
7048 function createElement(tag, typeExtension) { | 6838 function createElement(tag, typeExtension) { |
7049 if (tag) { | |
7050 tag = tag.toLowerCase(); | |
7051 } | |
7052 if (typeExtension) { | |
7053 typeExtension = typeExtension.toLowerCase(); | |
7054 } | |
7055 var definition = getRegisteredDefinition(typeExtension || tag); | 6839 var definition = getRegisteredDefinition(typeExtension || tag); |
7056 if (definition) { | 6840 if (definition) { |
7057 if (tag == definition.tag && typeExtension == definition.is) { | 6841 if (tag == definition.tag && typeExtension == definition.is) { |
7058 return new definition.ctor(); | 6842 return new definition.ctor(); |
7059 } | 6843 } |
7060 if (!typeExtension && !definition.is) { | 6844 if (!typeExtension && !definition.is) { |
7061 return new definition.ctor(); | 6845 return new definition.ctor(); |
7062 } | 6846 } |
7063 } | 6847 } |
7064 var element; | 6848 var element; |
7065 if (typeExtension) { | 6849 if (typeExtension) { |
7066 element = createElement(tag); | 6850 element = createElement(tag); |
7067 element.setAttribute("is", typeExtension); | 6851 element.setAttribute("is", typeExtension); |
7068 return element; | 6852 return element; |
7069 } | 6853 } |
7070 element = domCreateElement(tag); | 6854 element = domCreateElement(tag); |
7071 if (tag.indexOf("-") >= 0) { | 6855 if (tag.indexOf("-") >= 0) { |
7072 implementPrototype(element, HTMLElement); | 6856 implementPrototype(element, HTMLElement); |
7073 } | 6857 } |
7074 return element; | 6858 return element; |
7075 } | 6859 } |
7076 var domCreateElement = document.createElement.bind(document); | 6860 var domCreateElement = document.createElement.bind(document); |
7077 var domCreateElementNS = document.createElementNS.bind(document); | 6861 var domCreateElementNS = document.createElementNS.bind(document); |
7078 var isInstance; | 6862 var isInstance; |
7079 if (!Object.__proto__ && !useNative) { | 6863 if (!Object.__proto__ && !useNative) { |
7080 isInstance = function(obj, ctor) { | 6864 isInstance = function(obj, ctor) { |
7081 if (obj instanceof ctor) { | |
7082 return true; | |
7083 } | |
7084 var p = obj; | 6865 var p = obj; |
7085 while (p) { | 6866 while (p) { |
7086 if (p === ctor.prototype) { | 6867 if (p === ctor.prototype) { |
7087 return true; | 6868 return true; |
7088 } | 6869 } |
7089 p = p.__proto__; | 6870 p = p.__proto__; |
7090 } | 6871 } |
7091 return false; | 6872 return false; |
7092 }; | 6873 }; |
7093 } else { | 6874 } else { |
7094 isInstance = function(obj, base) { | 6875 isInstance = function(obj, base) { |
7095 return obj instanceof base; | 6876 return obj instanceof base; |
7096 }; | 6877 }; |
7097 } | 6878 } |
7098 function wrapDomMethodToForceUpgrade(obj, methodName) { | 6879 function wrapDomMethodToForceUpgrade(obj, methodName) { |
7099 var orig = obj[methodName]; | 6880 var orig = obj[methodName]; |
7100 obj[methodName] = function() { | 6881 obj[methodName] = function() { |
7101 var n = orig.apply(this, arguments); | 6882 var n = orig.apply(this, arguments); |
7102 upgradeAll(n); | 6883 upgradeAll(n); |
7103 return n; | 6884 return n; |
7104 }; | 6885 }; |
7105 } | 6886 } |
7106 wrapDomMethodToForceUpgrade(Node.prototype, "cloneNode"); | 6887 wrapDomMethodToForceUpgrade(Node.prototype, "cloneNode"); |
7107 wrapDomMethodToForceUpgrade(document, "importNode"); | 6888 wrapDomMethodToForceUpgrade(document, "importNode"); |
| 6889 if (isIE11OrOlder) { |
| 6890 (function() { |
| 6891 var importNode = document.importNode; |
| 6892 document.importNode = function() { |
| 6893 var n = importNode.apply(document, arguments); |
| 6894 if (n.nodeType == n.DOCUMENT_FRAGMENT_NODE) { |
| 6895 var f = document.createDocumentFragment(); |
| 6896 f.appendChild(n); |
| 6897 return f; |
| 6898 } else { |
| 6899 return n; |
| 6900 } |
| 6901 }; |
| 6902 })(); |
| 6903 } |
7108 document.registerElement = register; | 6904 document.registerElement = register; |
7109 document.createElement = createElement; | 6905 document.createElement = createElement; |
7110 document.createElementNS = createElementNS; | 6906 document.createElementNS = createElementNS; |
7111 scope.registry = registry; | 6907 scope.registry = registry; |
7112 scope.instanceof = isInstance; | 6908 scope.instanceof = isInstance; |
7113 scope.reservedTagList = reservedTagList; | 6909 scope.reservedTagList = reservedTagList; |
7114 scope.getRegisteredDefinition = getRegisteredDefinition; | 6910 scope.getRegisteredDefinition = getRegisteredDefinition; |
7115 document.register = document.registerElement; | 6911 document.register = document.registerElement; |
7116 }); | 6912 }); |
7117 | 6913 |
7118 (function(scope) { | 6914 (function(scope) { |
7119 var useNative = scope.useNative; | 6915 var useNative = scope.useNative; |
7120 var initializeModules = scope.initializeModules; | 6916 var initializeModules = scope.initializeModules; |
7121 var isIE = scope.isIE; | 6917 var isIE11OrOlder = /Trident/.test(navigator.userAgent); |
7122 if (useNative) { | 6918 if (useNative) { |
7123 var nop = function() {}; | 6919 var nop = function() {}; |
7124 scope.watchShadow = nop; | 6920 scope.watchShadow = nop; |
7125 scope.upgrade = nop; | 6921 scope.upgrade = nop; |
7126 scope.upgradeAll = nop; | 6922 scope.upgradeAll = nop; |
7127 scope.upgradeDocumentTree = nop; | 6923 scope.upgradeDocumentTree = nop; |
7128 scope.upgradeSubtree = nop; | 6924 scope.upgradeSubtree = nop; |
7129 scope.takeRecords = nop; | 6925 scope.takeRecords = nop; |
7130 scope.instanceof = function(obj, base) { | 6926 scope.instanceof = function(obj, base) { |
7131 return obj instanceof base; | 6927 return obj instanceof base; |
7132 }; | 6928 }; |
7133 } else { | 6929 } else { |
7134 initializeModules(); | 6930 initializeModules(); |
7135 } | 6931 } |
7136 var upgradeDocumentTree = scope.upgradeDocumentTree; | 6932 var upgradeDocumentTree = scope.upgradeDocumentTree; |
7137 var upgradeDocument = scope.upgradeDocument; | |
7138 if (!window.wrap) { | 6933 if (!window.wrap) { |
7139 if (window.ShadowDOMPolyfill) { | 6934 if (window.ShadowDOMPolyfill) { |
7140 window.wrap = window.ShadowDOMPolyfill.wrapIfNeeded; | 6935 window.wrap = ShadowDOMPolyfill.wrapIfNeeded; |
7141 window.unwrap = window.ShadowDOMPolyfill.unwrapIfNeeded; | 6936 window.unwrap = ShadowDOMPolyfill.unwrapIfNeeded; |
7142 } else { | 6937 } else { |
7143 window.wrap = window.unwrap = function(node) { | 6938 window.wrap = window.unwrap = function(node) { |
7144 return node; | 6939 return node; |
7145 }; | 6940 }; |
7146 } | 6941 } |
7147 } | 6942 } |
7148 if (window.HTMLImports) { | 6943 function bootstrap() { |
7149 window.HTMLImports.__importsParsingHook = function(elt) { | 6944 upgradeDocumentTree(wrap(document)); |
7150 if (elt.import) { | 6945 if (window.HTMLImports) { |
7151 upgradeDocument(wrap(elt.import)); | 6946 HTMLImports.__importsParsingHook = function(elt) { |
| 6947 upgradeDocumentTree(wrap(elt.import)); |
| 6948 }; |
| 6949 } |
| 6950 CustomElements.ready = true; |
| 6951 setTimeout(function() { |
| 6952 CustomElements.readyTime = Date.now(); |
| 6953 if (window.HTMLImports) { |
| 6954 CustomElements.elapsed = CustomElements.readyTime - HTMLImports.readyTim
e; |
7152 } | 6955 } |
| 6956 document.dispatchEvent(new CustomEvent("WebComponentsReady", { |
| 6957 bubbles: true |
| 6958 })); |
| 6959 }); |
| 6960 } |
| 6961 if (isIE11OrOlder && typeof window.CustomEvent !== "function") { |
| 6962 window.CustomEvent = function(inType, params) { |
| 6963 params = params || {}; |
| 6964 var e = document.createEvent("CustomEvent"); |
| 6965 e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelab
le), params.detail); |
| 6966 return e; |
7153 }; | 6967 }; |
7154 } | 6968 window.CustomEvent.prototype = window.Event.prototype; |
7155 function bootstrap() { | |
7156 upgradeDocumentTree(window.wrap(document)); | |
7157 window.CustomElements.ready = true; | |
7158 var requestAnimationFrame = window.requestAnimationFrame || function(f) { | |
7159 setTimeout(f, 16); | |
7160 }; | |
7161 requestAnimationFrame(function() { | |
7162 setTimeout(function() { | |
7163 window.CustomElements.readyTime = Date.now(); | |
7164 if (window.HTMLImports) { | |
7165 window.CustomElements.elapsed = window.CustomElements.readyTime - wind
ow.HTMLImports.readyTime; | |
7166 } | |
7167 document.dispatchEvent(new CustomEvent("WebComponentsReady", { | |
7168 bubbles: true | |
7169 })); | |
7170 }); | |
7171 }); | |
7172 } | 6969 } |
7173 if (document.readyState === "complete" || scope.flags.eager) { | 6970 if (document.readyState === "complete" || scope.flags.eager) { |
7174 bootstrap(); | 6971 bootstrap(); |
7175 } else if (document.readyState === "interactive" && !window.attachEvent && (!w
indow.HTMLImports || window.HTMLImports.ready)) { | 6972 } else if (document.readyState === "interactive" && !window.attachEvent && (!w
indow.HTMLImports || window.HTMLImports.ready)) { |
7176 bootstrap(); | 6973 bootstrap(); |
7177 } else { | 6974 } else { |
7178 var loadEvent = window.HTMLImports && !window.HTMLImports.ready ? "HTMLImpor
tsLoaded" : "DOMContentLoaded"; | 6975 var loadEvent = window.HTMLImports && !HTMLImports.ready ? "HTMLImportsLoade
d" : "DOMContentLoaded"; |
7179 window.addEventListener(loadEvent, bootstrap); | 6976 window.addEventListener(loadEvent, bootstrap); |
7180 } | 6977 } |
| 6978 scope.isIE11OrOlder = isIE11OrOlder; |
7181 })(window.CustomElements); | 6979 })(window.CustomElements); |
7182 | 6980 |
7183 (function(scope) { | 6981 (function(scope) { |
7184 if (!Function.prototype.bind) { | 6982 if (!Function.prototype.bind) { |
7185 Function.prototype.bind = function(scope) { | 6983 Function.prototype.bind = function(scope) { |
7186 var self = this; | 6984 var self = this; |
7187 var args = Array.prototype.slice.call(arguments, 1); | 6985 var args = Array.prototype.slice.call(arguments, 1); |
7188 return function() { | 6986 return function() { |
7189 var args2 = args.slice(); | 6987 var args2 = args.slice(); |
7190 args2.push.apply(args2, arguments); | 6988 args2.push.apply(args2, arguments); |
7191 return self.apply(scope, args2); | 6989 return self.apply(scope, args2); |
7192 }; | 6990 }; |
7193 }; | 6991 }; |
7194 } | 6992 } |
7195 })(window.WebComponents); | 6993 })(window.WebComponents); |
7196 | 6994 |
7197 (function(scope) { | 6995 (function(scope) { |
| 6996 "use strict"; |
| 6997 if (!window.performance) { |
| 6998 var start = Date.now(); |
| 6999 window.performance = { |
| 7000 now: function() { |
| 7001 return Date.now() - start; |
| 7002 } |
| 7003 }; |
| 7004 } |
| 7005 if (!window.requestAnimationFrame) { |
| 7006 window.requestAnimationFrame = function() { |
| 7007 var nativeRaf = window.webkitRequestAnimationFrame || window.mozRequestAni
mationFrame; |
| 7008 return nativeRaf ? function(callback) { |
| 7009 return nativeRaf(function() { |
| 7010 callback(performance.now()); |
| 7011 }); |
| 7012 } : function(callback) { |
| 7013 return window.setTimeout(callback, 1e3 / 60); |
| 7014 }; |
| 7015 }(); |
| 7016 } |
| 7017 if (!window.cancelAnimationFrame) { |
| 7018 window.cancelAnimationFrame = function() { |
| 7019 return window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame
|| function(id) { |
| 7020 clearTimeout(id); |
| 7021 }; |
| 7022 }(); |
| 7023 } |
| 7024 var elementDeclarations = []; |
| 7025 var polymerStub = function(name, dictionary) { |
| 7026 if (typeof name !== "string" && arguments.length === 1) { |
| 7027 Array.prototype.push.call(arguments, document._currentScript); |
| 7028 } |
| 7029 elementDeclarations.push(arguments); |
| 7030 }; |
| 7031 window.Polymer = polymerStub; |
| 7032 scope.consumeDeclarations = function(callback) { |
| 7033 scope.consumeDeclarations = function() { |
| 7034 throw "Possible attempt to load Polymer twice"; |
| 7035 }; |
| 7036 if (callback) { |
| 7037 callback(elementDeclarations); |
| 7038 } |
| 7039 elementDeclarations = null; |
| 7040 }; |
| 7041 function installPolymerWarning() { |
| 7042 if (window.Polymer === polymerStub) { |
| 7043 window.Polymer = function() { |
| 7044 throw new Error("You tried to use polymer without loading it first. To "
+ 'load polymer, <link rel="import" href="' + 'components/polymer/polymer.html"
>'); |
| 7045 }; |
| 7046 } |
| 7047 } |
| 7048 if (HTMLImports.useNative) { |
| 7049 installPolymerWarning(); |
| 7050 } else { |
| 7051 addEventListener("DOMContentLoaded", installPolymerWarning); |
| 7052 } |
| 7053 })(window.WebComponents); |
| 7054 |
| 7055 (function(scope) { |
7198 var style = document.createElement("style"); | 7056 var style = document.createElement("style"); |
7199 style.textContent = "" + "body {" + "transition: opacity ease-in 0.2s;" + " }
\n" + "body[unresolved] {" + "opacity: 0; display: block; overflow: hidden; posi
tion: relative;" + " } \n"; | 7057 style.textContent = "" + "body {" + "transition: opacity ease-in 0.2s;" + " }
\n" + "body[unresolved] {" + "opacity: 0; display: block; overflow: hidden; posi
tion: relative;" + " } \n"; |
7200 var head = document.querySelector("head"); | 7058 var head = document.querySelector("head"); |
7201 head.insertBefore(style, head.firstChild); | 7059 head.insertBefore(style, head.firstChild); |
7202 })(window.WebComponents); | 7060 })(window.WebComponents); |
7203 | 7061 |
7204 (function(scope) { | 7062 (function(scope) { |
7205 window.Platform = scope; | 7063 window.Platform = scope; |
7206 })(window.WebComponents); | 7064 })(window.WebComponents); |
OLD | NEW |