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-lite.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(","); |
35 flags.log = {}; | 31 flags.log = {}; |
36 parts.forEach(function(f) { | 32 parts.forEach(function(f) { |
37 flags.log[f] = true; | 33 flags.log[f] = true; |
38 }); | 34 }); |
39 } else { | 35 } else { |
40 flags.log = {}; | 36 flags.log = {}; |
41 } | 37 } |
42 } | 38 } |
| 39 flags.shadow = flags.shadow || flags.shadowdom || flags.polyfill; |
| 40 if (flags.shadow === "native") { |
| 41 flags.shadow = false; |
| 42 } else { |
| 43 flags.shadow = flags.shadow || !HTMLElement.prototype.createShadowRoot; |
| 44 } |
43 if (flags.register) { | 45 if (flags.register) { |
44 window.CustomElements = window.CustomElements || { | 46 window.CustomElements = window.CustomElements || { |
45 flags: {} | 47 flags: {} |
46 }; | 48 }; |
47 window.CustomElements.flags.register = flags.register; | 49 window.CustomElements.flags.register = flags.register; |
48 } | 50 } |
49 WebComponents.flags = flags; | 51 scope.flags = flags; |
50 })(); | 52 })(WebComponents); |
51 | 53 |
52 (function(scope) { | 54 (function(scope) { |
53 "use strict"; | 55 "use strict"; |
54 var hasWorkingUrl = false; | 56 var hasWorkingUrl = false; |
55 if (!scope.forceJURL) { | 57 if (!scope.forceJURL) { |
56 try { | 58 try { |
57 var u = new URL("b", "http://a"); | 59 var u = new URL("b", "http://a"); |
58 u.pathname = "c%20d"; | 60 u.pathname = "c%20d"; |
59 hasWorkingUrl = u.href === "http://a/c%20d"; | 61 hasWorkingUrl = u.href === "http://a/c%20d"; |
60 } catch (e) {} | 62 } catch (e) {} |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 } else if (EOF == c) { | 154 } else if (EOF == c) { |
153 break loop; | 155 break loop; |
154 } else { | 156 } else { |
155 err("Code point not allowed in scheme: " + c); | 157 err("Code point not allowed in scheme: " + c); |
156 break loop; | 158 break loop; |
157 } | 159 } |
158 break; | 160 break; |
159 | 161 |
160 case "scheme data": | 162 case "scheme data": |
161 if ("?" == c) { | 163 if ("?" == c) { |
162 this._query = "?"; | 164 query = "?"; |
163 state = "query"; | 165 state = "query"; |
164 } else if ("#" == c) { | 166 } else if ("#" == c) { |
165 this._fragment = "#"; | 167 this._fragment = "#"; |
166 state = "fragment"; | 168 state = "fragment"; |
167 } else { | 169 } else { |
168 if (EOF != c && " " != c && "\n" != c && "\r" != c) { | 170 if (EOF != c && " " != c && "\n" != c && "\r" != c) { |
169 this._schemeData += percentEscape(c); | 171 this._schemeData += percentEscape(c); |
170 } | 172 } |
171 } | 173 } |
172 break; | 174 break; |
(...skipping 19 matching lines...) Expand all Loading... |
192 break; | 194 break; |
193 | 195 |
194 case "relative": | 196 case "relative": |
195 this._isRelative = true; | 197 this._isRelative = true; |
196 if ("file" != this._scheme) this._scheme = base._scheme; | 198 if ("file" != this._scheme) this._scheme = base._scheme; |
197 if (EOF == c) { | 199 if (EOF == c) { |
198 this._host = base._host; | 200 this._host = base._host; |
199 this._port = base._port; | 201 this._port = base._port; |
200 this._path = base._path.slice(); | 202 this._path = base._path.slice(); |
201 this._query = base._query; | 203 this._query = base._query; |
202 this._username = base._username; | |
203 this._password = base._password; | |
204 break loop; | 204 break loop; |
205 } else if ("/" == c || "\\" == c) { | 205 } else if ("/" == c || "\\" == c) { |
206 if ("\\" == c) err("\\ is an invalid code point."); | 206 if ("\\" == c) err("\\ is an invalid code point."); |
207 state = "relative slash"; | 207 state = "relative slash"; |
208 } else if ("?" == c) { | 208 } else if ("?" == c) { |
209 this._host = base._host; | 209 this._host = base._host; |
210 this._port = base._port; | 210 this._port = base._port; |
211 this._path = base._path.slice(); | 211 this._path = base._path.slice(); |
212 this._query = "?"; | 212 this._query = "?"; |
213 this._username = base._username; | |
214 this._password = base._password; | |
215 state = "query"; | 213 state = "query"; |
216 } else if ("#" == c) { | 214 } else if ("#" == c) { |
217 this._host = base._host; | 215 this._host = base._host; |
218 this._port = base._port; | 216 this._port = base._port; |
219 this._path = base._path.slice(); | 217 this._path = base._path.slice(); |
220 this._query = base._query; | 218 this._query = base._query; |
221 this._fragment = "#"; | 219 this._fragment = "#"; |
222 this._username = base._username; | |
223 this._password = base._password; | |
224 state = "fragment"; | 220 state = "fragment"; |
225 } else { | 221 } else { |
226 var nextC = input[cursor + 1]; | 222 var nextC = input[cursor + 1]; |
227 var nextNextC = input[cursor + 2]; | 223 var nextNextC = input[cursor + 2]; |
228 if ("file" != this._scheme || !ALPHA.test(c) || nextC != ":" && nextC
!= "|" || EOF != nextNextC && "/" != nextNextC && "\\" != nextNextC && "?" != ne
xtNextC && "#" != nextNextC) { | 224 if ("file" != this._scheme || !ALPHA.test(c) || nextC != ":" && nextC
!= "|" || EOF != nextNextC && "/" != nextNextC && "\\" != nextNextC && "?" != ne
xtNextC && "#" != nextNextC) { |
229 this._host = base._host; | 225 this._host = base._host; |
230 this._port = base._port; | 226 this._port = base._port; |
231 this._username = base._username; | |
232 this._password = base._password; | |
233 this._path = base._path.slice(); | 227 this._path = base._path.slice(); |
234 this._path.pop(); | 228 this._path.pop(); |
235 } | 229 } |
236 state = "relative path"; | 230 state = "relative path"; |
237 continue; | 231 continue; |
238 } | 232 } |
239 break; | 233 break; |
240 | 234 |
241 case "relative slash": | 235 case "relative slash": |
242 if ("/" == c || "\\" == c) { | 236 if ("/" == c || "\\" == c) { |
243 if ("\\" == c) { | 237 if ("\\" == c) { |
244 err("\\ is an invalid code point."); | 238 err("\\ is an invalid code point."); |
245 } | 239 } |
246 if ("file" == this._scheme) { | 240 if ("file" == this._scheme) { |
247 state = "file host"; | 241 state = "file host"; |
248 } else { | 242 } else { |
249 state = "authority ignore slashes"; | 243 state = "authority ignore slashes"; |
250 } | 244 } |
251 } else { | 245 } else { |
252 if ("file" != this._scheme) { | 246 if ("file" != this._scheme) { |
253 this._host = base._host; | 247 this._host = base._host; |
254 this._port = base._port; | 248 this._port = base._port; |
255 this._username = base._username; | |
256 this._password = base._password; | |
257 } | 249 } |
258 state = "relative path"; | 250 state = "relative path"; |
259 continue; | 251 continue; |
260 } | 252 } |
261 break; | 253 break; |
262 | 254 |
263 case "authority first slash": | 255 case "authority first slash": |
264 if ("/" == c) { | 256 if ("/" == c) { |
265 state = "authority second slash"; | 257 state = "authority second slash"; |
266 } else { | 258 } else { |
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
562 var OriginalURL = scope.URL; | 554 var OriginalURL = scope.URL; |
563 if (OriginalURL) { | 555 if (OriginalURL) { |
564 jURL.createObjectURL = function(blob) { | 556 jURL.createObjectURL = function(blob) { |
565 return OriginalURL.createObjectURL.apply(OriginalURL, arguments); | 557 return OriginalURL.createObjectURL.apply(OriginalURL, arguments); |
566 }; | 558 }; |
567 jURL.revokeObjectURL = function(url) { | 559 jURL.revokeObjectURL = function(url) { |
568 OriginalURL.revokeObjectURL(url); | 560 OriginalURL.revokeObjectURL(url); |
569 }; | 561 }; |
570 } | 562 } |
571 scope.URL = jURL; | 563 scope.URL = jURL; |
572 })(self); | 564 })(this); |
573 | 565 |
574 if (typeof WeakMap === "undefined") { | 566 if (typeof WeakMap === "undefined") { |
575 (function() { | 567 (function() { |
576 var defineProperty = Object.defineProperty; | 568 var defineProperty = Object.defineProperty; |
577 var counter = Date.now() % 1e9; | 569 var counter = Date.now() % 1e9; |
578 var WeakMap = function() { | 570 var WeakMap = function() { |
579 this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__"); | 571 this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__"); |
580 }; | 572 }; |
581 WeakMap.prototype = { | 573 WeakMap.prototype = { |
582 set: function(key, value) { | 574 set: function(key, value) { |
(...skipping 18 matching lines...) Expand all Loading... |
601 var entry = key[this.name]; | 593 var entry = key[this.name]; |
602 if (!entry) return false; | 594 if (!entry) return false; |
603 return entry[0] === key; | 595 return entry[0] === key; |
604 } | 596 } |
605 }; | 597 }; |
606 window.WeakMap = WeakMap; | 598 window.WeakMap = WeakMap; |
607 })(); | 599 })(); |
608 } | 600 } |
609 | 601 |
610 (function(global) { | 602 (function(global) { |
611 if (global.JsMutationObserver) { | |
612 return; | |
613 } | |
614 var registrationsTable = new WeakMap(); | 603 var registrationsTable = new WeakMap(); |
615 var setImmediate; | 604 var setImmediate; |
616 if (/Trident|Edge/.test(navigator.userAgent)) { | 605 if (/Trident|Edge/.test(navigator.userAgent)) { |
617 setImmediate = setTimeout; | 606 setImmediate = setTimeout; |
618 } else if (window.setImmediate) { | 607 } else if (window.setImmediate) { |
619 setImmediate = window.setImmediate; | 608 setImmediate = window.setImmediate; |
620 } else { | 609 } else { |
621 var setImmediateQueue = []; | 610 var setImmediateQueue = []; |
622 var sentinel = String(Math.random()); | 611 var sentinel = String(Math.random()); |
623 window.addEventListener("message", function(e) { | 612 window.addEventListener("message", function(e) { |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
899 record.nextSibling = nextSibling; | 888 record.nextSibling = nextSibling; |
900 forEachAncestorAndObserverEnqueueRecord(e.relatedNode, function(options)
{ | 889 forEachAncestorAndObserverEnqueueRecord(e.relatedNode, function(options)
{ |
901 if (!options.childList) return; | 890 if (!options.childList) return; |
902 return record; | 891 return record; |
903 }); | 892 }); |
904 } | 893 } |
905 clearRecords(); | 894 clearRecords(); |
906 } | 895 } |
907 }; | 896 }; |
908 global.JsMutationObserver = JsMutationObserver; | 897 global.JsMutationObserver = JsMutationObserver; |
909 if (!global.MutationObserver) { | 898 if (!global.MutationObserver) global.MutationObserver = JsMutationObserver; |
910 global.MutationObserver = JsMutationObserver; | 899 })(this); |
911 JsMutationObserver._isPolyfilled = true; | |
912 } | |
913 })(self); | |
914 | |
915 (function() { | |
916 var needsTemplate = typeof HTMLTemplateElement === "undefined"; | |
917 if (/Trident/.test(navigator.userAgent)) { | |
918 (function() { | |
919 var importNode = document.importNode; | |
920 document.importNode = function() { | |
921 var n = importNode.apply(document, arguments); | |
922 if (n.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { | |
923 var f = document.createDocumentFragment(); | |
924 f.appendChild(n); | |
925 return f; | |
926 } else { | |
927 return n; | |
928 } | |
929 }; | |
930 })(); | |
931 } | |
932 var needsCloning = function() { | |
933 if (!needsTemplate) { | |
934 var t = document.createElement("template"); | |
935 var t2 = document.createElement("template"); | |
936 t2.content.appendChild(document.createElement("div")); | |
937 t.content.appendChild(t2); | |
938 var clone = t.cloneNode(true); | |
939 return clone.content.childNodes.length === 0 || clone.content.firstChild.c
ontent.childNodes.length === 0; | |
940 } | |
941 }(); | |
942 var TEMPLATE_TAG = "template"; | |
943 var TemplateImpl = function() {}; | |
944 if (needsTemplate) { | |
945 var contentDoc = document.implementation.createHTMLDocument("template"); | |
946 var canDecorate = true; | |
947 var templateStyle = document.createElement("style"); | |
948 templateStyle.textContent = TEMPLATE_TAG + "{display:none;}"; | |
949 var head = document.head; | |
950 head.insertBefore(templateStyle, head.firstElementChild); | |
951 TemplateImpl.prototype = Object.create(HTMLElement.prototype); | |
952 TemplateImpl.decorate = function(template) { | |
953 if (template.content) { | |
954 return; | |
955 } | |
956 template.content = contentDoc.createDocumentFragment(); | |
957 var child; | |
958 while (child = template.firstChild) { | |
959 template.content.appendChild(child); | |
960 } | |
961 template.cloneNode = function(deep) { | |
962 return TemplateImpl.cloneNode(this, deep); | |
963 }; | |
964 if (canDecorate) { | |
965 try { | |
966 Object.defineProperty(template, "innerHTML", { | |
967 get: function() { | |
968 var o = ""; | |
969 for (var e = this.content.firstChild; e; e = e.nextSibling) { | |
970 o += e.outerHTML || escapeData(e.data); | |
971 } | |
972 return o; | |
973 }, | |
974 set: function(text) { | |
975 contentDoc.body.innerHTML = text; | |
976 TemplateImpl.bootstrap(contentDoc); | |
977 while (this.content.firstChild) { | |
978 this.content.removeChild(this.content.firstChild); | |
979 } | |
980 while (contentDoc.body.firstChild) { | |
981 this.content.appendChild(contentDoc.body.firstChild); | |
982 } | |
983 }, | |
984 configurable: true | |
985 }); | |
986 } catch (err) { | |
987 canDecorate = false; | |
988 } | |
989 } | |
990 TemplateImpl.bootstrap(template.content); | |
991 }; | |
992 TemplateImpl.bootstrap = function(doc) { | |
993 var templates = doc.querySelectorAll(TEMPLATE_TAG); | |
994 for (var i = 0, l = templates.length, t; i < l && (t = templates[i]); i++)
{ | |
995 TemplateImpl.decorate(t); | |
996 } | |
997 }; | |
998 document.addEventListener("DOMContentLoaded", function() { | |
999 TemplateImpl.bootstrap(document); | |
1000 }); | |
1001 var createElement = document.createElement; | |
1002 document.createElement = function() { | |
1003 "use strict"; | |
1004 var el = createElement.apply(document, arguments); | |
1005 if (el.localName === "template") { | |
1006 TemplateImpl.decorate(el); | |
1007 } | |
1008 return el; | |
1009 }; | |
1010 var escapeDataRegExp = /[&\u00A0<>]/g; | |
1011 function escapeReplace(c) { | |
1012 switch (c) { | |
1013 case "&": | |
1014 return "&"; | |
1015 | |
1016 case "<": | |
1017 return "<"; | |
1018 | |
1019 case ">": | |
1020 return ">"; | |
1021 | |
1022 case "Â ": | |
1023 return " "; | |
1024 } | |
1025 } | |
1026 function escapeData(s) { | |
1027 return s.replace(escapeDataRegExp, escapeReplace); | |
1028 } | |
1029 } | |
1030 if (needsTemplate || needsCloning) { | |
1031 var nativeCloneNode = Node.prototype.cloneNode; | |
1032 TemplateImpl.cloneNode = function(template, deep) { | |
1033 var clone = nativeCloneNode.call(template, false); | |
1034 if (this.decorate) { | |
1035 this.decorate(clone); | |
1036 } | |
1037 if (deep) { | |
1038 clone.content.appendChild(nativeCloneNode.call(template.content, true)); | |
1039 this.fixClonedDom(clone.content, template.content); | |
1040 } | |
1041 return clone; | |
1042 }; | |
1043 TemplateImpl.fixClonedDom = function(clone, source) { | |
1044 if (!source.querySelectorAll) return; | |
1045 var s$ = source.querySelectorAll(TEMPLATE_TAG); | |
1046 var t$ = clone.querySelectorAll(TEMPLATE_TAG); | |
1047 for (var i = 0, l = t$.length, t, s; i < l; i++) { | |
1048 s = s$[i]; | |
1049 t = t$[i]; | |
1050 if (this.decorate) { | |
1051 this.decorate(s); | |
1052 } | |
1053 t.parentNode.replaceChild(s.cloneNode(true), t); | |
1054 } | |
1055 }; | |
1056 var originalImportNode = document.importNode; | |
1057 Node.prototype.cloneNode = function(deep) { | |
1058 var dom = nativeCloneNode.call(this, deep); | |
1059 if (deep) { | |
1060 TemplateImpl.fixClonedDom(dom, this); | |
1061 } | |
1062 return dom; | |
1063 }; | |
1064 document.importNode = function(element, deep) { | |
1065 if (element.localName === TEMPLATE_TAG) { | |
1066 return TemplateImpl.cloneNode(element, deep); | |
1067 } else { | |
1068 var dom = originalImportNode.call(document, element, deep); | |
1069 if (deep) { | |
1070 TemplateImpl.fixClonedDom(dom, element); | |
1071 } | |
1072 return dom; | |
1073 } | |
1074 }; | |
1075 if (needsCloning) { | |
1076 HTMLTemplateElement.prototype.cloneNode = function(deep) { | |
1077 return TemplateImpl.cloneNode(this, deep); | |
1078 }; | |
1079 } | |
1080 } | |
1081 if (needsTemplate) { | |
1082 window.HTMLTemplateElement = TemplateImpl; | |
1083 } | |
1084 })(); | |
1085 | |
1086 (function(scope) { | |
1087 "use strict"; | |
1088 if (!window.performance) { | |
1089 var start = Date.now(); | |
1090 window.performance = { | |
1091 now: function() { | |
1092 return Date.now() - start; | |
1093 } | |
1094 }; | |
1095 } | |
1096 if (!window.requestAnimationFrame) { | |
1097 window.requestAnimationFrame = function() { | |
1098 var nativeRaf = window.webkitRequestAnimationFrame || window.mozRequestAni
mationFrame; | |
1099 return nativeRaf ? function(callback) { | |
1100 return nativeRaf(function() { | |
1101 callback(performance.now()); | |
1102 }); | |
1103 } : function(callback) { | |
1104 return window.setTimeout(callback, 1e3 / 60); | |
1105 }; | |
1106 }(); | |
1107 } | |
1108 if (!window.cancelAnimationFrame) { | |
1109 window.cancelAnimationFrame = function() { | |
1110 return window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame
|| function(id) { | |
1111 clearTimeout(id); | |
1112 }; | |
1113 }(); | |
1114 } | |
1115 var workingDefaultPrevented = function() { | |
1116 var e = document.createEvent("Event"); | |
1117 e.initEvent("foo", true, true); | |
1118 e.preventDefault(); | |
1119 return e.defaultPrevented; | |
1120 }(); | |
1121 if (!workingDefaultPrevented) { | |
1122 var origPreventDefault = Event.prototype.preventDefault; | |
1123 Event.prototype.preventDefault = function() { | |
1124 if (!this.cancelable) { | |
1125 return; | |
1126 } | |
1127 origPreventDefault.call(this); | |
1128 Object.defineProperty(this, "defaultPrevented", { | |
1129 get: function() { | |
1130 return true; | |
1131 }, | |
1132 configurable: true | |
1133 }); | |
1134 }; | |
1135 } | |
1136 var isIE = /Trident/.test(navigator.userAgent); | |
1137 if (!window.CustomEvent || isIE && typeof window.CustomEvent !== "function") { | |
1138 window.CustomEvent = function(inType, params) { | |
1139 params = params || {}; | |
1140 var e = document.createEvent("CustomEvent"); | |
1141 e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelab
le), params.detail); | |
1142 return e; | |
1143 }; | |
1144 window.CustomEvent.prototype = window.Event.prototype; | |
1145 } | |
1146 if (!window.Event || isIE && typeof window.Event !== "function") { | |
1147 var origEvent = window.Event; | |
1148 window.Event = function(inType, params) { | |
1149 params = params || {}; | |
1150 var e = document.createEvent("Event"); | |
1151 e.initEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable)); | |
1152 return e; | |
1153 }; | |
1154 window.Event.prototype = origEvent.prototype; | |
1155 } | |
1156 })(window.WebComponents); | |
1157 | 900 |
1158 window.HTMLImports = window.HTMLImports || { | 901 window.HTMLImports = window.HTMLImports || { |
1159 flags: {} | 902 flags: {} |
1160 }; | 903 }; |
1161 | 904 |
1162 (function(scope) { | 905 (function(scope) { |
1163 var IMPORT_LINK_TYPE = "import"; | 906 var IMPORT_LINK_TYPE = "import"; |
1164 var useNative = Boolean(IMPORT_LINK_TYPE in document.createElement("link")); | 907 var useNative = Boolean(IMPORT_LINK_TYPE in document.createElement("link")); |
1165 var hasShadowDOMPolyfill = Boolean(window.ShadowDOMPolyfill); | 908 var hasShadowDOMPolyfill = Boolean(window.ShadowDOMPolyfill); |
1166 var wrap = function(node) { | 909 var wrap = function(node) { |
1167 return hasShadowDOMPolyfill ? window.ShadowDOMPolyfill.wrapIfNeeded(node) :
node; | 910 return hasShadowDOMPolyfill ? ShadowDOMPolyfill.wrapIfNeeded(node) : node; |
1168 }; | 911 }; |
1169 var rootDocument = wrap(document); | 912 var rootDocument = wrap(document); |
1170 var currentScriptDescriptor = { | 913 var currentScriptDescriptor = { |
1171 get: function() { | 914 get: function() { |
1172 var script = window.HTMLImports.currentScript || document.currentScript ||
(document.readyState !== "complete" ? document.scripts[document.scripts.length
- 1] : null); | 915 var script = HTMLImports.currentScript || document.currentScript || (docum
ent.readyState !== "complete" ? document.scripts[document.scripts.length - 1] :
null); |
1173 return wrap(script); | 916 return wrap(script); |
1174 }, | 917 }, |
1175 configurable: true | 918 configurable: true |
1176 }; | 919 }; |
1177 Object.defineProperty(document, "_currentScript", currentScriptDescriptor); | 920 Object.defineProperty(document, "_currentScript", currentScriptDescriptor); |
1178 Object.defineProperty(rootDocument, "_currentScript", currentScriptDescriptor)
; | 921 Object.defineProperty(rootDocument, "_currentScript", currentScriptDescriptor)
; |
1179 var isIE = /Trident/.test(navigator.userAgent); | 922 var isIE = /Trident|Edge/.test(navigator.userAgent); |
1180 function whenReady(callback, doc) { | 923 function whenReady(callback, doc) { |
1181 doc = doc || rootDocument; | 924 doc = doc || rootDocument; |
1182 whenDocumentReady(function() { | 925 whenDocumentReady(function() { |
1183 watchImportsLoad(callback, doc); | 926 watchImportsLoad(callback, doc); |
1184 }, doc); | 927 }, doc); |
1185 } | 928 } |
1186 var requiredReadyState = isIE ? "complete" : "interactive"; | 929 var requiredReadyState = isIE ? "complete" : "interactive"; |
1187 var READY_EVENT = "readystatechange"; | 930 var READY_EVENT = "readystatechange"; |
1188 function isDocumentReady(doc) { | 931 function isDocumentReady(doc) { |
1189 return doc.readyState === "complete" || doc.readyState === requiredReadyStat
e; | 932 return doc.readyState === "complete" || doc.readyState === requiredReadyStat
e; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1223 checkDone(); | 966 checkDone(); |
1224 } | 967 } |
1225 function errorLoadingImport(e) { | 968 function errorLoadingImport(e) { |
1226 errorImports.push(this); | 969 errorImports.push(this); |
1227 parsedCount++; | 970 parsedCount++; |
1228 checkDone(); | 971 checkDone(); |
1229 } | 972 } |
1230 if (importCount) { | 973 if (importCount) { |
1231 for (var i = 0, imp; i < importCount && (imp = imports[i]); i++) { | 974 for (var i = 0, imp; i < importCount && (imp = imports[i]); i++) { |
1232 if (isImportLoaded(imp)) { | 975 if (isImportLoaded(imp)) { |
1233 newImports.push(this); | |
1234 parsedCount++; | 976 parsedCount++; |
1235 checkDone(); | 977 checkDone(); |
1236 } else { | 978 } else { |
1237 imp.addEventListener("load", loadedImport); | 979 imp.addEventListener("load", loadedImport); |
1238 imp.addEventListener("error", errorLoadingImport); | 980 imp.addEventListener("error", errorLoadingImport); |
1239 } | 981 } |
1240 } | 982 } |
1241 } else { | 983 } else { |
1242 checkDone(); | 984 checkDone(); |
1243 } | 985 } |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1279 (function() { | 1021 (function() { |
1280 if (document.readyState === "loading") { | 1022 if (document.readyState === "loading") { |
1281 var imports = document.querySelectorAll("link[rel=import]"); | 1023 var imports = document.querySelectorAll("link[rel=import]"); |
1282 for (var i = 0, l = imports.length, imp; i < l && (imp = imports[i]); i+
+) { | 1024 for (var i = 0, l = imports.length, imp; i < l && (imp = imports[i]); i+
+) { |
1283 handleImport(imp); | 1025 handleImport(imp); |
1284 } | 1026 } |
1285 } | 1027 } |
1286 })(); | 1028 })(); |
1287 } | 1029 } |
1288 whenReady(function(detail) { | 1030 whenReady(function(detail) { |
1289 window.HTMLImports.ready = true; | 1031 HTMLImports.ready = true; |
1290 window.HTMLImports.readyTime = new Date().getTime(); | 1032 HTMLImports.readyTime = new Date().getTime(); |
1291 var evt = rootDocument.createEvent("CustomEvent"); | 1033 var evt = rootDocument.createEvent("CustomEvent"); |
1292 evt.initCustomEvent("HTMLImportsLoaded", true, true, detail); | 1034 evt.initCustomEvent("HTMLImportsLoaded", true, true, detail); |
1293 rootDocument.dispatchEvent(evt); | 1035 rootDocument.dispatchEvent(evt); |
1294 }); | 1036 }); |
1295 scope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE; | 1037 scope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE; |
1296 scope.useNative = useNative; | 1038 scope.useNative = useNative; |
1297 scope.rootDocument = rootDocument; | 1039 scope.rootDocument = rootDocument; |
1298 scope.whenReady = whenReady; | 1040 scope.whenReady = whenReady; |
1299 scope.isIE = isIE; | 1041 scope.isIE = isIE; |
1300 })(window.HTMLImports); | 1042 })(HTMLImports); |
1301 | 1043 |
1302 (function(scope) { | 1044 (function(scope) { |
1303 var modules = []; | 1045 var modules = []; |
1304 var addModule = function(module) { | 1046 var addModule = function(module) { |
1305 modules.push(module); | 1047 modules.push(module); |
1306 }; | 1048 }; |
1307 var initializeModules = function() { | 1049 var initializeModules = function() { |
1308 modules.forEach(function(module) { | 1050 modules.forEach(function(module) { |
1309 module(scope); | 1051 module(scope); |
1310 }); | 1052 }); |
1311 }; | 1053 }; |
1312 scope.addModule = addModule; | 1054 scope.addModule = addModule; |
1313 scope.initializeModules = initializeModules; | 1055 scope.initializeModules = initializeModules; |
1314 })(window.HTMLImports); | 1056 })(HTMLImports); |
1315 | 1057 |
1316 window.HTMLImports.addModule(function(scope) { | 1058 HTMLImports.addModule(function(scope) { |
1317 var CSS_URL_REGEXP = /(url\()([^)]*)(\))/g; | 1059 var CSS_URL_REGEXP = /(url\()([^)]*)(\))/g; |
1318 var CSS_IMPORT_REGEXP = /(@import[\s]+(?!url\())([^;]*)(;)/g; | 1060 var CSS_IMPORT_REGEXP = /(@import[\s]+(?!url\())([^;]*)(;)/g; |
1319 var path = { | 1061 var path = { |
1320 resolveUrlsInStyle: function(style, linkUrl) { | 1062 resolveUrlsInStyle: function(style, linkUrl) { |
1321 var doc = style.ownerDocument; | 1063 var doc = style.ownerDocument; |
1322 var resolver = doc.createElement("a"); | 1064 var resolver = doc.createElement("a"); |
1323 style.textContent = this.resolveUrlsInCssText(style.textContent, linkUrl,
resolver); | 1065 style.textContent = this.resolveUrlsInCssText(style.textContent, linkUrl,
resolver); |
1324 return style; | 1066 return style; |
1325 }, | 1067 }, |
1326 resolveUrlsInCssText: function(cssText, linkUrl, urlObj) { | 1068 resolveUrlsInCssText: function(cssText, linkUrl, urlObj) { |
1327 var r = this.replaceUrls(cssText, urlObj, linkUrl, CSS_URL_REGEXP); | 1069 var r = this.replaceUrls(cssText, urlObj, linkUrl, CSS_URL_REGEXP); |
1328 r = this.replaceUrls(r, urlObj, linkUrl, CSS_IMPORT_REGEXP); | 1070 r = this.replaceUrls(r, urlObj, linkUrl, CSS_IMPORT_REGEXP); |
1329 return r; | 1071 return r; |
1330 }, | 1072 }, |
1331 replaceUrls: function(text, urlObj, linkUrl, regexp) { | 1073 replaceUrls: function(text, urlObj, linkUrl, regexp) { |
1332 return text.replace(regexp, function(m, pre, url, post) { | 1074 return text.replace(regexp, function(m, pre, url, post) { |
1333 var urlPath = url.replace(/["']/g, ""); | 1075 var urlPath = url.replace(/["']/g, ""); |
1334 if (linkUrl) { | 1076 if (linkUrl) { |
1335 urlPath = new URL(urlPath, linkUrl).href; | 1077 urlPath = new URL(urlPath, linkUrl).href; |
1336 } | 1078 } |
1337 urlObj.href = urlPath; | 1079 urlObj.href = urlPath; |
1338 urlPath = urlObj.href; | 1080 urlPath = urlObj.href; |
1339 return pre + "'" + urlPath + "'" + post; | 1081 return pre + "'" + urlPath + "'" + post; |
1340 }); | 1082 }); |
1341 } | 1083 } |
1342 }; | 1084 }; |
1343 scope.path = path; | 1085 scope.path = path; |
1344 }); | 1086 }); |
1345 | 1087 |
1346 window.HTMLImports.addModule(function(scope) { | 1088 HTMLImports.addModule(function(scope) { |
1347 var xhr = { | 1089 var xhr = { |
1348 async: true, | 1090 async: true, |
1349 ok: function(request) { | 1091 ok: function(request) { |
1350 return request.status >= 200 && request.status < 300 || request.status ===
304 || request.status === 0; | 1092 return request.status >= 200 && request.status < 300 || request.status ===
304 || request.status === 0; |
1351 }, | 1093 }, |
1352 load: function(url, next, nextContext) { | 1094 load: function(url, next, nextContext) { |
1353 var request = new XMLHttpRequest(); | 1095 var request = new XMLHttpRequest(); |
1354 if (scope.flags.debug || scope.flags.bust) { | 1096 if (scope.flags.debug || scope.flags.bust) { |
1355 url += "?" + Math.random(); | 1097 url += "?" + Math.random(); |
1356 } | 1098 } |
1357 request.open("GET", url, xhr.async); | 1099 request.open("GET", url, xhr.async); |
1358 request.addEventListener("readystatechange", function(e) { | 1100 request.addEventListener("readystatechange", function(e) { |
1359 if (request.readyState === 4) { | 1101 if (request.readyState === 4) { |
| 1102 var locationHeader = request.getResponseHeader("Location"); |
1360 var redirectedUrl = null; | 1103 var redirectedUrl = null; |
1361 try { | 1104 if (locationHeader) { |
1362 var locationHeader = request.getResponseHeader("Location"); | 1105 var redirectedUrl = locationHeader.substr(0, 1) === "/" ? location.o
rigin + locationHeader : locationHeader; |
1363 if (locationHeader) { | |
1364 redirectedUrl = locationHeader.substr(0, 1) === "/" ? location.ori
gin + locationHeader : locationHeader; | |
1365 } | |
1366 } catch (e) { | |
1367 console.error(e.message); | |
1368 } | 1106 } |
1369 next.call(nextContext, !xhr.ok(request) && request, request.response |
| request.responseText, redirectedUrl); | 1107 next.call(nextContext, !xhr.ok(request) && request, request.response |
| request.responseText, redirectedUrl); |
1370 } | 1108 } |
1371 }); | 1109 }); |
1372 request.send(); | 1110 request.send(); |
1373 return request; | 1111 return request; |
1374 }, | 1112 }, |
1375 loadDocument: function(url, next, nextContext) { | 1113 loadDocument: function(url, next, nextContext) { |
1376 this.load(url, next, nextContext).responseType = "document"; | 1114 this.load(url, next, nextContext).responseType = "document"; |
1377 } | 1115 } |
1378 }; | 1116 }; |
1379 scope.xhr = xhr; | 1117 scope.xhr = xhr; |
1380 }); | 1118 }); |
1381 | 1119 |
1382 window.HTMLImports.addModule(function(scope) { | 1120 HTMLImports.addModule(function(scope) { |
1383 var xhr = scope.xhr; | 1121 var xhr = scope.xhr; |
1384 var flags = scope.flags; | 1122 var flags = scope.flags; |
1385 var Loader = function(onLoad, onComplete) { | 1123 var Loader = function(onLoad, onComplete) { |
1386 this.cache = {}; | 1124 this.cache = {}; |
1387 this.onload = onLoad; | 1125 this.onload = onLoad; |
1388 this.oncomplete = onComplete; | 1126 this.oncomplete = onComplete; |
1389 this.inflight = 0; | 1127 this.inflight = 0; |
1390 this.pending = {}; | 1128 this.pending = {}; |
1391 }; | 1129 }; |
1392 Loader.prototype = { | 1130 Loader.prototype = { |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1465 }, | 1203 }, |
1466 checkDone: function() { | 1204 checkDone: function() { |
1467 if (!this.inflight) { | 1205 if (!this.inflight) { |
1468 this.oncomplete(); | 1206 this.oncomplete(); |
1469 } | 1207 } |
1470 } | 1208 } |
1471 }; | 1209 }; |
1472 scope.Loader = Loader; | 1210 scope.Loader = Loader; |
1473 }); | 1211 }); |
1474 | 1212 |
1475 window.HTMLImports.addModule(function(scope) { | 1213 HTMLImports.addModule(function(scope) { |
1476 var Observer = function(addCallback) { | 1214 var Observer = function(addCallback) { |
1477 this.addCallback = addCallback; | 1215 this.addCallback = addCallback; |
1478 this.mo = new MutationObserver(this.handler.bind(this)); | 1216 this.mo = new MutationObserver(this.handler.bind(this)); |
1479 }; | 1217 }; |
1480 Observer.prototype = { | 1218 Observer.prototype = { |
1481 handler: function(mutations) { | 1219 handler: function(mutations) { |
1482 for (var i = 0, l = mutations.length, m; i < l && (m = mutations[i]); i++)
{ | 1220 for (var i = 0, l = mutations.length, m; i < l && (m = mutations[i]); i++)
{ |
1483 if (m.type === "childList" && m.addedNodes.length) { | 1221 if (m.type === "childList" && m.addedNodes.length) { |
1484 this.addedNodes(m.addedNodes); | 1222 this.addedNodes(m.addedNodes); |
1485 } | 1223 } |
(...skipping 12 matching lines...) Expand all Loading... |
1498 observe: function(root) { | 1236 observe: function(root) { |
1499 this.mo.observe(root, { | 1237 this.mo.observe(root, { |
1500 childList: true, | 1238 childList: true, |
1501 subtree: true | 1239 subtree: true |
1502 }); | 1240 }); |
1503 } | 1241 } |
1504 }; | 1242 }; |
1505 scope.Observer = Observer; | 1243 scope.Observer = Observer; |
1506 }); | 1244 }); |
1507 | 1245 |
1508 window.HTMLImports.addModule(function(scope) { | 1246 HTMLImports.addModule(function(scope) { |
1509 var path = scope.path; | 1247 var path = scope.path; |
1510 var rootDocument = scope.rootDocument; | 1248 var rootDocument = scope.rootDocument; |
1511 var flags = scope.flags; | 1249 var flags = scope.flags; |
1512 var isIE = scope.isIE; | 1250 var isIE = scope.isIE; |
1513 var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE; | 1251 var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE; |
1514 var IMPORT_SELECTOR = "link[rel=" + IMPORT_LINK_TYPE + "]"; | 1252 var IMPORT_SELECTOR = "link[rel=" + IMPORT_LINK_TYPE + "]"; |
1515 var importParser = { | 1253 var importParser = { |
1516 documentSelectors: IMPORT_SELECTOR, | 1254 documentSelectors: IMPORT_SELECTOR, |
1517 importsSelectors: [ IMPORT_SELECTOR, "link[rel=stylesheet]:not([type])", "st
yle:not([type])", "script:not([type])", 'script[type="application/javascript"]',
'script[type="text/javascript"]' ].join(","), | 1255 importsSelectors: [ IMPORT_SELECTOR, "link[rel=stylesheet]", "style", "scrip
t:not([type])", 'script[type="text/javascript"]' ].join(","), |
1518 map: { | 1256 map: { |
1519 link: "parseLink", | 1257 link: "parseLink", |
1520 script: "parseScript", | 1258 script: "parseScript", |
1521 style: "parseStyle" | 1259 style: "parseStyle" |
1522 }, | 1260 }, |
1523 dynamicElements: [], | 1261 dynamicElements: [], |
1524 parseNext: function() { | 1262 parseNext: function() { |
1525 var next = this.nextToParse(); | 1263 var next = this.nextToParse(); |
1526 if (next) { | 1264 if (next) { |
1527 this.parse(next); | 1265 this.parse(next); |
(...skipping 30 matching lines...) Expand all Loading... |
1558 this.parsingElement = null; | 1296 this.parsingElement = null; |
1559 flags.parse && console.log("completed", elt); | 1297 flags.parse && console.log("completed", elt); |
1560 }, | 1298 }, |
1561 markDynamicParsingComplete: function(elt) { | 1299 markDynamicParsingComplete: function(elt) { |
1562 var i = this.dynamicElements.indexOf(elt); | 1300 var i = this.dynamicElements.indexOf(elt); |
1563 if (i >= 0) { | 1301 if (i >= 0) { |
1564 this.dynamicElements.splice(i, 1); | 1302 this.dynamicElements.splice(i, 1); |
1565 } | 1303 } |
1566 }, | 1304 }, |
1567 parseImport: function(elt) { | 1305 parseImport: function(elt) { |
1568 elt.import = elt.__doc; | 1306 if (HTMLImports.__importsParsingHook) { |
1569 if (window.HTMLImports.__importsParsingHook) { | 1307 HTMLImports.__importsParsingHook(elt); |
1570 window.HTMLImports.__importsParsingHook(elt); | |
1571 } | 1308 } |
1572 if (elt.import) { | 1309 if (elt.import) { |
1573 elt.import.__importParsed = true; | 1310 elt.import.__importParsed = true; |
1574 } | 1311 } |
1575 this.markParsingComplete(elt); | 1312 this.markParsingComplete(elt); |
1576 if (elt.__resource && !elt.__error) { | 1313 if (elt.__resource && !elt.__error) { |
1577 elt.dispatchEvent(new CustomEvent("load", { | 1314 elt.dispatchEvent(new CustomEvent("load", { |
1578 bubbles: false | 1315 bubbles: false |
1579 })); | 1316 })); |
1580 } else { | 1317 } else { |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1621 } | 1358 } |
1622 return n; | 1359 return n; |
1623 }, | 1360 }, |
1624 addElementToDocument: function(elt) { | 1361 addElementToDocument: function(elt) { |
1625 var port = this.rootImportForElement(elt.__importElement || elt); | 1362 var port = this.rootImportForElement(elt.__importElement || elt); |
1626 port.parentNode.insertBefore(elt, port); | 1363 port.parentNode.insertBefore(elt, port); |
1627 }, | 1364 }, |
1628 trackElement: function(elt, callback) { | 1365 trackElement: function(elt, callback) { |
1629 var self = this; | 1366 var self = this; |
1630 var done = function(e) { | 1367 var done = function(e) { |
1631 elt.removeEventListener("load", done); | |
1632 elt.removeEventListener("error", done); | |
1633 if (callback) { | 1368 if (callback) { |
1634 callback(e); | 1369 callback(e); |
1635 } | 1370 } |
1636 self.markParsingComplete(elt); | 1371 self.markParsingComplete(elt); |
1637 self.parseNext(); | 1372 self.parseNext(); |
1638 }; | 1373 }; |
1639 elt.addEventListener("load", done); | 1374 elt.addEventListener("load", done); |
1640 elt.addEventListener("error", done); | 1375 elt.addEventListener("error", done); |
1641 if (isIE && elt.localName === "style") { | 1376 if (isIE && elt.localName === "style") { |
1642 var fakeLoad = false; | 1377 var fakeLoad = false; |
1643 if (elt.textContent.indexOf("@import") == -1) { | 1378 if (elt.textContent.indexOf("@import") == -1) { |
1644 fakeLoad = true; | 1379 fakeLoad = true; |
1645 } else if (elt.sheet) { | 1380 } else if (elt.sheet) { |
1646 fakeLoad = true; | 1381 fakeLoad = true; |
1647 var csr = elt.sheet.cssRules; | 1382 var csr = elt.sheet.cssRules; |
1648 var len = csr ? csr.length : 0; | 1383 var len = csr ? csr.length : 0; |
1649 for (var i = 0, r; i < len && (r = csr[i]); i++) { | 1384 for (var i = 0, r; i < len && (r = csr[i]); i++) { |
1650 if (r.type === CSSRule.IMPORT_RULE) { | 1385 if (r.type === CSSRule.IMPORT_RULE) { |
1651 fakeLoad = fakeLoad && Boolean(r.styleSheet); | 1386 fakeLoad = fakeLoad && Boolean(r.styleSheet); |
1652 } | 1387 } |
1653 } | 1388 } |
1654 } | 1389 } |
1655 if (fakeLoad) { | 1390 if (fakeLoad) { |
1656 setTimeout(function() { | 1391 elt.dispatchEvent(new CustomEvent("load", { |
1657 elt.dispatchEvent(new CustomEvent("load", { | 1392 bubbles: false |
1658 bubbles: false | 1393 })); |
1659 })); | |
1660 }); | |
1661 } | 1394 } |
1662 } | 1395 } |
1663 }, | 1396 }, |
1664 parseScript: function(scriptElt) { | 1397 parseScript: function(scriptElt) { |
1665 var script = document.createElement("script"); | 1398 var script = document.createElement("script"); |
1666 script.__importElement = scriptElt; | 1399 script.__importElement = scriptElt; |
1667 script.src = scriptElt.src ? scriptElt.src : generateScriptDataUrl(scriptE
lt); | 1400 script.src = scriptElt.src ? scriptElt.src : generateScriptDataUrl(scriptE
lt); |
1668 scope.currentScript = scriptElt; | 1401 scope.currentScript = scriptElt; |
1669 this.trackElement(script, function(e) { | 1402 this.trackElement(script, function(e) { |
1670 if (script.parentNode) { | 1403 script.parentNode.removeChild(script); |
1671 script.parentNode.removeChild(script); | |
1672 } | |
1673 scope.currentScript = null; | 1404 scope.currentScript = null; |
1674 }); | 1405 }); |
1675 this.addElementToDocument(script); | 1406 this.addElementToDocument(script); |
1676 }, | 1407 }, |
1677 nextToParse: function() { | 1408 nextToParse: function() { |
1678 this._mayParse = []; | 1409 this._mayParse = []; |
1679 return !this.parsingElement && (this.nextToParseInDoc(rootDocument) || thi
s.nextToParseDynamic()); | 1410 return !this.parsingElement && (this.nextToParseInDoc(rootDocument) || thi
s.nextToParseDynamic()); |
1680 }, | 1411 }, |
1681 nextToParseInDoc: function(doc, link) { | 1412 nextToParseInDoc: function(doc, link) { |
1682 if (doc && this._mayParse.indexOf(doc) < 0) { | 1413 if (doc && this._mayParse.indexOf(doc) < 0) { |
1683 this._mayParse.push(doc); | 1414 this._mayParse.push(doc); |
1684 var nodes = doc.querySelectorAll(this.parseSelectorsForNode(doc)); | 1415 var nodes = doc.querySelectorAll(this.parseSelectorsForNode(doc)); |
1685 for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { | 1416 for (var i = 0, l = nodes.length, p = 0, n; i < l && (n = nodes[i]); i++
) { |
1686 if (!this.isParsed(n)) { | 1417 if (!this.isParsed(n)) { |
1687 if (this.hasResource(n)) { | 1418 if (this.hasResource(n)) { |
1688 return nodeIsImport(n) ? this.nextToParseInDoc(n.__doc, n) : n; | 1419 return nodeIsImport(n) ? this.nextToParseInDoc(n.import, n) : n; |
1689 } else { | 1420 } else { |
1690 return; | 1421 return; |
1691 } | 1422 } |
1692 } | 1423 } |
1693 } | 1424 } |
1694 } | 1425 } |
1695 return link; | 1426 return link; |
1696 }, | 1427 }, |
1697 nextToParseDynamic: function() { | 1428 nextToParseDynamic: function() { |
1698 return this.dynamicElements[0]; | 1429 return this.dynamicElements[0]; |
1699 }, | 1430 }, |
1700 parseSelectorsForNode: function(node) { | 1431 parseSelectorsForNode: function(node) { |
1701 var doc = node.ownerDocument || node; | 1432 var doc = node.ownerDocument || node; |
1702 return doc === rootDocument ? this.documentSelectors : this.importsSelecto
rs; | 1433 return doc === rootDocument ? this.documentSelectors : this.importsSelecto
rs; |
1703 }, | 1434 }, |
1704 isParsed: function(node) { | 1435 isParsed: function(node) { |
1705 return node.__importParsed; | 1436 return node.__importParsed; |
1706 }, | 1437 }, |
1707 needsDynamicParsing: function(elt) { | 1438 needsDynamicParsing: function(elt) { |
1708 return this.dynamicElements.indexOf(elt) >= 0; | 1439 return this.dynamicElements.indexOf(elt) >= 0; |
1709 }, | 1440 }, |
1710 hasResource: function(node) { | 1441 hasResource: function(node) { |
1711 if (nodeIsImport(node) && node.__doc === undefined) { | 1442 if (nodeIsImport(node) && node.import === undefined) { |
1712 return false; | 1443 return false; |
1713 } | 1444 } |
1714 return true; | 1445 return true; |
1715 } | 1446 } |
1716 }; | 1447 }; |
1717 function nodeIsImport(elt) { | 1448 function nodeIsImport(elt) { |
1718 return elt.localName === "link" && elt.rel === IMPORT_LINK_TYPE; | 1449 return elt.localName === "link" && elt.rel === IMPORT_LINK_TYPE; |
1719 } | 1450 } |
1720 function generateScriptDataUrl(script) { | 1451 function generateScriptDataUrl(script) { |
1721 var scriptContent = generateScriptContent(script); | 1452 var scriptContent = generateScriptContent(script); |
(...skipping 13 matching lines...) Expand all Loading... |
1735 function cloneStyle(style) { | 1466 function cloneStyle(style) { |
1736 var clone = style.ownerDocument.createElement("style"); | 1467 var clone = style.ownerDocument.createElement("style"); |
1737 clone.textContent = style.textContent; | 1468 clone.textContent = style.textContent; |
1738 path.resolveUrlsInStyle(clone); | 1469 path.resolveUrlsInStyle(clone); |
1739 return clone; | 1470 return clone; |
1740 } | 1471 } |
1741 scope.parser = importParser; | 1472 scope.parser = importParser; |
1742 scope.IMPORT_SELECTOR = IMPORT_SELECTOR; | 1473 scope.IMPORT_SELECTOR = IMPORT_SELECTOR; |
1743 }); | 1474 }); |
1744 | 1475 |
1745 window.HTMLImports.addModule(function(scope) { | 1476 HTMLImports.addModule(function(scope) { |
1746 var flags = scope.flags; | 1477 var flags = scope.flags; |
1747 var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE; | 1478 var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE; |
1748 var IMPORT_SELECTOR = scope.IMPORT_SELECTOR; | 1479 var IMPORT_SELECTOR = scope.IMPORT_SELECTOR; |
1749 var rootDocument = scope.rootDocument; | 1480 var rootDocument = scope.rootDocument; |
1750 var Loader = scope.Loader; | 1481 var Loader = scope.Loader; |
1751 var Observer = scope.Observer; | 1482 var Observer = scope.Observer; |
1752 var parser = scope.parser; | 1483 var parser = scope.parser; |
1753 var importer = { | 1484 var importer = { |
1754 documents: {}, | 1485 documents: {}, |
1755 documentPreloadSelectors: IMPORT_SELECTOR, | 1486 documentPreloadSelectors: IMPORT_SELECTOR, |
(...skipping 19 matching lines...) Expand all Loading... |
1775 if (isImportLink(elt)) { | 1506 if (isImportLink(elt)) { |
1776 var doc = this.documents[url]; | 1507 var doc = this.documents[url]; |
1777 if (doc === undefined) { | 1508 if (doc === undefined) { |
1778 doc = err ? null : makeDocument(resource, redirectedUrl || url); | 1509 doc = err ? null : makeDocument(resource, redirectedUrl || url); |
1779 if (doc) { | 1510 if (doc) { |
1780 doc.__importLink = elt; | 1511 doc.__importLink = elt; |
1781 this.bootDocument(doc); | 1512 this.bootDocument(doc); |
1782 } | 1513 } |
1783 this.documents[url] = doc; | 1514 this.documents[url] = doc; |
1784 } | 1515 } |
1785 elt.__doc = doc; | 1516 elt.import = doc; |
1786 } | 1517 } |
1787 parser.parseNext(); | 1518 parser.parseNext(); |
1788 }, | 1519 }, |
1789 bootDocument: function(doc) { | 1520 bootDocument: function(doc) { |
1790 this.loadSubtree(doc); | 1521 this.loadSubtree(doc); |
1791 this.observer.observe(doc); | 1522 this.observer.observe(doc); |
1792 parser.parseNext(); | 1523 parser.parseNext(); |
1793 }, | 1524 }, |
1794 loadedAll: function() { | 1525 loadedAll: function() { |
1795 parser.parseNext(); | 1526 parser.parseNext(); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1834 }, | 1565 }, |
1835 configurable: true | 1566 configurable: true |
1836 }; | 1567 }; |
1837 Object.defineProperty(document, "baseURI", baseURIDescriptor); | 1568 Object.defineProperty(document, "baseURI", baseURIDescriptor); |
1838 Object.defineProperty(rootDocument, "baseURI", baseURIDescriptor); | 1569 Object.defineProperty(rootDocument, "baseURI", baseURIDescriptor); |
1839 } | 1570 } |
1840 scope.importer = importer; | 1571 scope.importer = importer; |
1841 scope.importLoader = importLoader; | 1572 scope.importLoader = importLoader; |
1842 }); | 1573 }); |
1843 | 1574 |
1844 window.HTMLImports.addModule(function(scope) { | 1575 HTMLImports.addModule(function(scope) { |
1845 var parser = scope.parser; | 1576 var parser = scope.parser; |
1846 var importer = scope.importer; | 1577 var importer = scope.importer; |
1847 var dynamic = { | 1578 var dynamic = { |
1848 added: function(nodes) { | 1579 added: function(nodes) { |
1849 var owner, parsed, loading; | 1580 var owner, parsed, loading; |
1850 for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { | 1581 for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) { |
1851 if (!owner) { | 1582 if (!owner) { |
1852 owner = n.ownerDocument; | 1583 owner = n.ownerDocument; |
1853 parsed = parser.isParsed(owner); | 1584 parsed = parser.isParsed(owner); |
1854 } | 1585 } |
(...skipping 16 matching lines...) Expand all Loading... |
1871 importer.observer.addCallback = dynamic.added.bind(dynamic); | 1602 importer.observer.addCallback = dynamic.added.bind(dynamic); |
1872 var matches = HTMLElement.prototype.matches || HTMLElement.prototype.matchesSe
lector || HTMLElement.prototype.webkitMatchesSelector || HTMLElement.prototype.m
ozMatchesSelector || HTMLElement.prototype.msMatchesSelector; | 1603 var matches = HTMLElement.prototype.matches || HTMLElement.prototype.matchesSe
lector || HTMLElement.prototype.webkitMatchesSelector || HTMLElement.prototype.m
ozMatchesSelector || HTMLElement.prototype.msMatchesSelector; |
1873 }); | 1604 }); |
1874 | 1605 |
1875 (function(scope) { | 1606 (function(scope) { |
1876 var initializeModules = scope.initializeModules; | 1607 var initializeModules = scope.initializeModules; |
1877 var isIE = scope.isIE; | 1608 var isIE = scope.isIE; |
1878 if (scope.useNative) { | 1609 if (scope.useNative) { |
1879 return; | 1610 return; |
1880 } | 1611 } |
| 1612 if (isIE && typeof window.CustomEvent !== "function") { |
| 1613 window.CustomEvent = function(inType, params) { |
| 1614 params = params || {}; |
| 1615 var e = document.createEvent("CustomEvent"); |
| 1616 e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelab
le), params.detail); |
| 1617 return e; |
| 1618 }; |
| 1619 window.CustomEvent.prototype = window.Event.prototype; |
| 1620 } |
1881 initializeModules(); | 1621 initializeModules(); |
1882 var rootDocument = scope.rootDocument; | 1622 var rootDocument = scope.rootDocument; |
1883 function bootstrap() { | 1623 function bootstrap() { |
1884 window.HTMLImports.importer.bootDocument(rootDocument); | 1624 HTMLImports.importer.bootDocument(rootDocument); |
1885 } | 1625 } |
1886 if (document.readyState === "complete" || document.readyState === "interactive
" && !window.attachEvent) { | 1626 if (document.readyState === "complete" || document.readyState === "interactive
" && !window.attachEvent) { |
1887 bootstrap(); | 1627 bootstrap(); |
1888 } else { | 1628 } else { |
1889 document.addEventListener("DOMContentLoaded", bootstrap); | 1629 document.addEventListener("DOMContentLoaded", bootstrap); |
1890 } | 1630 } |
1891 })(window.HTMLImports); | 1631 })(HTMLImports); |
1892 | 1632 |
1893 window.CustomElements = window.CustomElements || { | 1633 window.CustomElements = window.CustomElements || { |
1894 flags: {} | 1634 flags: {} |
1895 }; | 1635 }; |
1896 | 1636 |
1897 (function(scope) { | 1637 (function(scope) { |
1898 var flags = scope.flags; | 1638 var flags = scope.flags; |
1899 var modules = []; | 1639 var modules = []; |
1900 var addModule = function(module) { | 1640 var addModule = function(module) { |
1901 modules.push(module); | 1641 modules.push(module); |
1902 }; | 1642 }; |
1903 var initializeModules = function() { | 1643 var initializeModules = function() { |
1904 modules.forEach(function(module) { | 1644 modules.forEach(function(module) { |
1905 module(scope); | 1645 module(scope); |
1906 }); | 1646 }); |
1907 }; | 1647 }; |
1908 scope.addModule = addModule; | 1648 scope.addModule = addModule; |
1909 scope.initializeModules = initializeModules; | 1649 scope.initializeModules = initializeModules; |
1910 scope.hasNative = Boolean(document.registerElement); | 1650 scope.hasNative = Boolean(document.registerElement); |
1911 scope.isIE = /Trident/.test(navigator.userAgent); | 1651 scope.useNative = !flags.register && scope.hasNative && !window.ShadowDOMPolyf
ill && (!window.HTMLImports || HTMLImports.useNative); |
1912 scope.useNative = !flags.register && scope.hasNative && !window.ShadowDOMPolyf
ill && (!window.HTMLImports || window.HTMLImports.useNative); | 1652 })(CustomElements); |
1913 })(window.CustomElements); | |
1914 | 1653 |
1915 window.CustomElements.addModule(function(scope) { | 1654 CustomElements.addModule(function(scope) { |
1916 var IMPORT_LINK_TYPE = window.HTMLImports ? window.HTMLImports.IMPORT_LINK_TYP
E : "none"; | 1655 var IMPORT_LINK_TYPE = window.HTMLImports ? HTMLImports.IMPORT_LINK_TYPE : "no
ne"; |
1917 function forSubtree(node, cb) { | 1656 function forSubtree(node, cb) { |
1918 findAllElements(node, function(e) { | 1657 findAllElements(node, function(e) { |
1919 if (cb(e)) { | 1658 if (cb(e)) { |
1920 return true; | 1659 return true; |
1921 } | 1660 } |
1922 forRoots(e, cb); | 1661 forRoots(e, cb); |
1923 }); | 1662 }); |
1924 forRoots(node, cb); | 1663 forRoots(node, cb); |
1925 } | 1664 } |
1926 function findAllElements(node, find, data) { | 1665 function findAllElements(node, find, data) { |
(...skipping 16 matching lines...) Expand all Loading... |
1943 var root = node.shadowRoot; | 1682 var root = node.shadowRoot; |
1944 while (root) { | 1683 while (root) { |
1945 forSubtree(root, cb); | 1684 forSubtree(root, cb); |
1946 root = root.olderShadowRoot; | 1685 root = root.olderShadowRoot; |
1947 } | 1686 } |
1948 } | 1687 } |
1949 function forDocumentTree(doc, cb) { | 1688 function forDocumentTree(doc, cb) { |
1950 _forDocumentTree(doc, cb, []); | 1689 _forDocumentTree(doc, cb, []); |
1951 } | 1690 } |
1952 function _forDocumentTree(doc, cb, processingDocuments) { | 1691 function _forDocumentTree(doc, cb, processingDocuments) { |
1953 doc = window.wrap(doc); | 1692 doc = wrap(doc); |
1954 if (processingDocuments.indexOf(doc) >= 0) { | 1693 if (processingDocuments.indexOf(doc) >= 0) { |
1955 return; | 1694 return; |
1956 } | 1695 } |
1957 processingDocuments.push(doc); | 1696 processingDocuments.push(doc); |
1958 var imports = doc.querySelectorAll("link[rel=" + IMPORT_LINK_TYPE + "]"); | 1697 var imports = doc.querySelectorAll("link[rel=" + IMPORT_LINK_TYPE + "]"); |
1959 for (var i = 0, l = imports.length, n; i < l && (n = imports[i]); i++) { | 1698 for (var i = 0, l = imports.length, n; i < l && (n = imports[i]); i++) { |
1960 if (n.import) { | 1699 if (n.import) { |
1961 _forDocumentTree(n.import, cb, processingDocuments); | 1700 _forDocumentTree(n.import, cb, processingDocuments); |
1962 } | 1701 } |
1963 } | 1702 } |
1964 cb(doc); | 1703 cb(doc); |
1965 } | 1704 } |
1966 scope.forDocumentTree = forDocumentTree; | 1705 scope.forDocumentTree = forDocumentTree; |
1967 scope.forSubtree = forSubtree; | 1706 scope.forSubtree = forSubtree; |
1968 }); | 1707 }); |
1969 | 1708 |
1970 window.CustomElements.addModule(function(scope) { | 1709 CustomElements.addModule(function(scope) { |
1971 var flags = scope.flags; | 1710 var flags = scope.flags; |
1972 var forSubtree = scope.forSubtree; | 1711 var forSubtree = scope.forSubtree; |
1973 var forDocumentTree = scope.forDocumentTree; | 1712 var forDocumentTree = scope.forDocumentTree; |
1974 function addedNode(node, isAttached) { | 1713 function addedNode(node) { |
1975 return added(node, isAttached) || addedSubtree(node, isAttached); | 1714 return added(node) || addedSubtree(node); |
1976 } | 1715 } |
1977 function added(node, isAttached) { | 1716 function added(node) { |
1978 if (scope.upgrade(node, isAttached)) { | 1717 if (scope.upgrade(node)) { |
1979 return true; | 1718 return true; |
1980 } | 1719 } |
1981 if (isAttached) { | 1720 attached(node); |
1982 attached(node); | |
1983 } | |
1984 } | 1721 } |
1985 function addedSubtree(node, isAttached) { | 1722 function addedSubtree(node) { |
1986 forSubtree(node, function(e) { | 1723 forSubtree(node, function(e) { |
1987 if (added(e, isAttached)) { | 1724 if (added(e)) { |
1988 return true; | 1725 return true; |
1989 } | 1726 } |
1990 }); | 1727 }); |
1991 } | 1728 } |
1992 var hasThrottledAttached = window.MutationObserver._isPolyfilled && flags["thr
ottle-attached"]; | 1729 function attachedNode(node) { |
1993 scope.hasPolyfillMutations = hasThrottledAttached; | 1730 attached(node); |
1994 scope.hasThrottledAttached = hasThrottledAttached; | 1731 if (inDocument(node)) { |
| 1732 forSubtree(node, function(e) { |
| 1733 attached(e); |
| 1734 }); |
| 1735 } |
| 1736 } |
| 1737 var hasPolyfillMutations = !window.MutationObserver || window.MutationObserver
=== window.JsMutationObserver; |
| 1738 scope.hasPolyfillMutations = hasPolyfillMutations; |
1995 var isPendingMutations = false; | 1739 var isPendingMutations = false; |
1996 var pendingMutations = []; | 1740 var pendingMutations = []; |
1997 function deferMutation(fn) { | 1741 function deferMutation(fn) { |
1998 pendingMutations.push(fn); | 1742 pendingMutations.push(fn); |
1999 if (!isPendingMutations) { | 1743 if (!isPendingMutations) { |
2000 isPendingMutations = true; | 1744 isPendingMutations = true; |
2001 setTimeout(takeMutations); | 1745 setTimeout(takeMutations); |
2002 } | 1746 } |
2003 } | 1747 } |
2004 function takeMutations() { | 1748 function takeMutations() { |
2005 isPendingMutations = false; | 1749 isPendingMutations = false; |
2006 var $p = pendingMutations; | 1750 var $p = pendingMutations; |
2007 for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) { | 1751 for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) { |
2008 p(); | 1752 p(); |
2009 } | 1753 } |
2010 pendingMutations = []; | 1754 pendingMutations = []; |
2011 } | 1755 } |
2012 function attached(element) { | 1756 function attached(element) { |
2013 if (hasThrottledAttached) { | 1757 if (hasPolyfillMutations) { |
2014 deferMutation(function() { | 1758 deferMutation(function() { |
2015 _attached(element); | 1759 _attached(element); |
2016 }); | 1760 }); |
2017 } else { | 1761 } else { |
2018 _attached(element); | 1762 _attached(element); |
2019 } | 1763 } |
2020 } | 1764 } |
2021 function _attached(element) { | 1765 function _attached(element) { |
2022 if (element.__upgraded__ && !element.__attached) { | 1766 if (element.__upgraded__ && (element.attachedCallback || element.detachedCal
lback)) { |
2023 element.__attached = true; | 1767 if (!element.__attached && inDocument(element)) { |
2024 if (element.attachedCallback) { | 1768 element.__attached = true; |
2025 element.attachedCallback(); | 1769 if (element.attachedCallback) { |
| 1770 element.attachedCallback(); |
| 1771 } |
2026 } | 1772 } |
2027 } | 1773 } |
2028 } | 1774 } |
2029 function detachedNode(node) { | 1775 function detachedNode(node) { |
2030 detached(node); | 1776 detached(node); |
2031 forSubtree(node, function(e) { | 1777 forSubtree(node, function(e) { |
2032 detached(e); | 1778 detached(e); |
2033 }); | 1779 }); |
2034 } | 1780 } |
2035 function detached(element) { | 1781 function detached(element) { |
2036 if (hasThrottledAttached) { | 1782 if (hasPolyfillMutations) { |
2037 deferMutation(function() { | 1783 deferMutation(function() { |
2038 _detached(element); | 1784 _detached(element); |
2039 }); | 1785 }); |
2040 } else { | 1786 } else { |
2041 _detached(element); | 1787 _detached(element); |
2042 } | 1788 } |
2043 } | 1789 } |
2044 function _detached(element) { | 1790 function _detached(element) { |
2045 if (element.__upgraded__ && element.__attached) { | 1791 if (element.__upgraded__ && (element.attachedCallback || element.detachedCal
lback)) { |
2046 element.__attached = false; | 1792 if (element.__attached && !inDocument(element)) { |
2047 if (element.detachedCallback) { | 1793 element.__attached = false; |
2048 element.detachedCallback(); | 1794 if (element.detachedCallback) { |
| 1795 element.detachedCallback(); |
| 1796 } |
2049 } | 1797 } |
2050 } | 1798 } |
2051 } | 1799 } |
2052 function inDocument(element) { | 1800 function inDocument(element) { |
2053 var p = element; | 1801 var p = element; |
2054 var doc = window.wrap(document); | 1802 var doc = wrap(document); |
2055 while (p) { | 1803 while (p) { |
2056 if (p == doc) { | 1804 if (p == doc) { |
2057 return true; | 1805 return true; |
2058 } | 1806 } |
2059 p = p.parentNode || p.nodeType === Node.DOCUMENT_FRAGMENT_NODE && p.host; | 1807 p = p.parentNode || p.nodeType === Node.DOCUMENT_FRAGMENT_NODE && p.host; |
2060 } | 1808 } |
2061 } | 1809 } |
2062 function watchShadow(node) { | 1810 function watchShadow(node) { |
2063 if (node.shadowRoot && !node.shadowRoot.__watched) { | 1811 if (node.shadowRoot && !node.shadowRoot.__watched) { |
2064 flags.dom && console.log("watching shadow-root for: ", node.localName); | 1812 flags.dom && console.log("watching shadow-root for: ", node.localName); |
2065 var root = node.shadowRoot; | 1813 var root = node.shadowRoot; |
2066 while (root) { | 1814 while (root) { |
2067 observe(root); | 1815 observe(root); |
2068 root = root.olderShadowRoot; | 1816 root = root.olderShadowRoot; |
2069 } | 1817 } |
2070 } | 1818 } |
2071 } | 1819 } |
2072 function handler(root, mutations) { | 1820 function handler(mutations) { |
2073 if (flags.dom) { | 1821 if (flags.dom) { |
2074 var mx = mutations[0]; | 1822 var mx = mutations[0]; |
2075 if (mx && mx.type === "childList" && mx.addedNodes) { | 1823 if (mx && mx.type === "childList" && mx.addedNodes) { |
2076 if (mx.addedNodes) { | 1824 if (mx.addedNodes) { |
2077 var d = mx.addedNodes[0]; | 1825 var d = mx.addedNodes[0]; |
2078 while (d && d !== document && !d.host) { | 1826 while (d && d !== document && !d.host) { |
2079 d = d.parentNode; | 1827 d = d.parentNode; |
2080 } | 1828 } |
2081 var u = d && (d.URL || d._URL || d.host && d.host.localName) || ""; | 1829 var u = d && (d.URL || d._URL || d.host && d.host.localName) || ""; |
2082 u = u.split("/?").shift().split("/").pop(); | 1830 u = u.split("/?").shift().split("/").pop(); |
2083 } | 1831 } |
2084 } | 1832 } |
2085 console.group("mutations (%d) [%s]", mutations.length, u || ""); | 1833 console.group("mutations (%d) [%s]", mutations.length, u || ""); |
2086 } | 1834 } |
2087 var isAttached = inDocument(root); | |
2088 mutations.forEach(function(mx) { | 1835 mutations.forEach(function(mx) { |
2089 if (mx.type === "childList") { | 1836 if (mx.type === "childList") { |
2090 forEach(mx.addedNodes, function(n) { | 1837 forEach(mx.addedNodes, function(n) { |
2091 if (!n.localName) { | 1838 if (!n.localName) { |
2092 return; | 1839 return; |
2093 } | 1840 } |
2094 addedNode(n, isAttached); | 1841 addedNode(n); |
2095 }); | 1842 }); |
2096 forEach(mx.removedNodes, function(n) { | 1843 forEach(mx.removedNodes, function(n) { |
2097 if (!n.localName) { | 1844 if (!n.localName) { |
2098 return; | 1845 return; |
2099 } | 1846 } |
2100 detachedNode(n); | 1847 detachedNode(n); |
2101 }); | 1848 }); |
2102 } | 1849 } |
2103 }); | 1850 }); |
2104 flags.dom && console.groupEnd(); | 1851 flags.dom && console.groupEnd(); |
2105 } | 1852 } |
2106 function takeRecords(node) { | 1853 function takeRecords(node) { |
2107 node = window.wrap(node); | 1854 node = wrap(node); |
2108 if (!node) { | 1855 if (!node) { |
2109 node = window.wrap(document); | 1856 node = wrap(document); |
2110 } | 1857 } |
2111 while (node.parentNode) { | 1858 while (node.parentNode) { |
2112 node = node.parentNode; | 1859 node = node.parentNode; |
2113 } | 1860 } |
2114 var observer = node.__observer; | 1861 var observer = node.__observer; |
2115 if (observer) { | 1862 if (observer) { |
2116 handler(node, observer.takeRecords()); | 1863 handler(observer.takeRecords()); |
2117 takeMutations(); | 1864 takeMutations(); |
2118 } | 1865 } |
2119 } | 1866 } |
2120 var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach); | 1867 var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach); |
2121 function observe(inRoot) { | 1868 function observe(inRoot) { |
2122 if (inRoot.__observer) { | 1869 if (inRoot.__observer) { |
2123 return; | 1870 return; |
2124 } | 1871 } |
2125 var observer = new MutationObserver(handler.bind(this, inRoot)); | 1872 var observer = new MutationObserver(handler); |
2126 observer.observe(inRoot, { | 1873 observer.observe(inRoot, { |
2127 childList: true, | 1874 childList: true, |
2128 subtree: true | 1875 subtree: true |
2129 }); | 1876 }); |
2130 inRoot.__observer = observer; | 1877 inRoot.__observer = observer; |
2131 } | 1878 } |
2132 function upgradeDocument(doc) { | 1879 function upgradeDocument(doc) { |
2133 doc = window.wrap(doc); | 1880 doc = wrap(doc); |
2134 flags.dom && console.group("upgradeDocument: ", doc.baseURI.split("/").pop()
); | 1881 flags.dom && console.group("upgradeDocument: ", doc.baseURI.split("/").pop()
); |
2135 var isMainDocument = doc === window.wrap(document); | 1882 addedNode(doc); |
2136 addedNode(doc, isMainDocument); | |
2137 observe(doc); | 1883 observe(doc); |
2138 flags.dom && console.groupEnd(); | 1884 flags.dom && console.groupEnd(); |
2139 } | 1885 } |
2140 function upgradeDocumentTree(doc) { | 1886 function upgradeDocumentTree(doc) { |
2141 forDocumentTree(doc, upgradeDocument); | 1887 forDocumentTree(doc, upgradeDocument); |
2142 } | 1888 } |
2143 var originalCreateShadowRoot = Element.prototype.createShadowRoot; | 1889 var originalCreateShadowRoot = Element.prototype.createShadowRoot; |
2144 if (originalCreateShadowRoot) { | 1890 if (originalCreateShadowRoot) { |
2145 Element.prototype.createShadowRoot = function() { | 1891 Element.prototype.createShadowRoot = function() { |
2146 var root = originalCreateShadowRoot.call(this); | 1892 var root = originalCreateShadowRoot.call(this); |
2147 window.CustomElements.watchShadow(this); | 1893 CustomElements.watchShadow(this); |
2148 return root; | 1894 return root; |
2149 }; | 1895 }; |
2150 } | 1896 } |
2151 scope.watchShadow = watchShadow; | 1897 scope.watchShadow = watchShadow; |
2152 scope.upgradeDocumentTree = upgradeDocumentTree; | 1898 scope.upgradeDocumentTree = upgradeDocumentTree; |
2153 scope.upgradeDocument = upgradeDocument; | |
2154 scope.upgradeSubtree = addedSubtree; | 1899 scope.upgradeSubtree = addedSubtree; |
2155 scope.upgradeAll = addedNode; | 1900 scope.upgradeAll = addedNode; |
2156 scope.attached = attached; | 1901 scope.attachedNode = attachedNode; |
2157 scope.takeRecords = takeRecords; | 1902 scope.takeRecords = takeRecords; |
2158 }); | 1903 }); |
2159 | 1904 |
2160 window.CustomElements.addModule(function(scope) { | 1905 CustomElements.addModule(function(scope) { |
2161 var flags = scope.flags; | 1906 var flags = scope.flags; |
2162 function upgrade(node, isAttached) { | 1907 function upgrade(node) { |
2163 if (node.localName === "template") { | |
2164 if (window.HTMLTemplateElement && HTMLTemplateElement.decorate) { | |
2165 HTMLTemplateElement.decorate(node); | |
2166 } | |
2167 } | |
2168 if (!node.__upgraded__ && node.nodeType === Node.ELEMENT_NODE) { | 1908 if (!node.__upgraded__ && node.nodeType === Node.ELEMENT_NODE) { |
2169 var is = node.getAttribute("is"); | 1909 var is = node.getAttribute("is"); |
2170 var definition = scope.getRegisteredDefinition(node.localName) || scope.ge
tRegisteredDefinition(is); | 1910 var definition = scope.getRegisteredDefinition(is || node.localName); |
2171 if (definition) { | 1911 if (definition) { |
2172 if (is && definition.tag == node.localName || !is && !definition.extends
) { | 1912 if (is && definition.tag == node.localName) { |
2173 return upgradeWithDefinition(node, definition, isAttached); | 1913 return upgradeWithDefinition(node, definition); |
| 1914 } else if (!is && !definition.extends) { |
| 1915 return upgradeWithDefinition(node, definition); |
2174 } | 1916 } |
2175 } | 1917 } |
2176 } | 1918 } |
2177 } | 1919 } |
2178 function upgradeWithDefinition(element, definition, isAttached) { | 1920 function upgradeWithDefinition(element, definition) { |
2179 flags.upgrade && console.group("upgrade:", element.localName); | 1921 flags.upgrade && console.group("upgrade:", element.localName); |
2180 if (definition.is) { | 1922 if (definition.is) { |
2181 element.setAttribute("is", definition.is); | 1923 element.setAttribute("is", definition.is); |
2182 } | 1924 } |
2183 implementPrototype(element, definition); | 1925 implementPrototype(element, definition); |
2184 element.__upgraded__ = true; | 1926 element.__upgraded__ = true; |
2185 created(element); | 1927 created(element); |
2186 if (isAttached) { | 1928 scope.attachedNode(element); |
2187 scope.attached(element); | 1929 scope.upgradeSubtree(element); |
2188 } | |
2189 scope.upgradeSubtree(element, isAttached); | |
2190 flags.upgrade && console.groupEnd(); | 1930 flags.upgrade && console.groupEnd(); |
2191 return element; | 1931 return element; |
2192 } | 1932 } |
2193 function implementPrototype(element, definition) { | 1933 function implementPrototype(element, definition) { |
2194 if (Object.__proto__) { | 1934 if (Object.__proto__) { |
2195 element.__proto__ = definition.prototype; | 1935 element.__proto__ = definition.prototype; |
2196 } else { | 1936 } else { |
2197 customMixin(element, definition.prototype, definition.native); | 1937 customMixin(element, definition.prototype, definition.native); |
2198 element.__proto__ = definition.prototype; | 1938 element.__proto__ = definition.prototype; |
2199 } | 1939 } |
(...skipping 15 matching lines...) Expand all Loading... |
2215 function created(element) { | 1955 function created(element) { |
2216 if (element.createdCallback) { | 1956 if (element.createdCallback) { |
2217 element.createdCallback(); | 1957 element.createdCallback(); |
2218 } | 1958 } |
2219 } | 1959 } |
2220 scope.upgrade = upgrade; | 1960 scope.upgrade = upgrade; |
2221 scope.upgradeWithDefinition = upgradeWithDefinition; | 1961 scope.upgradeWithDefinition = upgradeWithDefinition; |
2222 scope.implementPrototype = implementPrototype; | 1962 scope.implementPrototype = implementPrototype; |
2223 }); | 1963 }); |
2224 | 1964 |
2225 window.CustomElements.addModule(function(scope) { | 1965 CustomElements.addModule(function(scope) { |
2226 var isIE = scope.isIE; | 1966 var isIE11OrOlder = scope.isIE11OrOlder; |
2227 var upgradeDocumentTree = scope.upgradeDocumentTree; | 1967 var upgradeDocumentTree = scope.upgradeDocumentTree; |
2228 var upgradeAll = scope.upgradeAll; | 1968 var upgradeAll = scope.upgradeAll; |
2229 var upgradeWithDefinition = scope.upgradeWithDefinition; | 1969 var upgradeWithDefinition = scope.upgradeWithDefinition; |
2230 var implementPrototype = scope.implementPrototype; | 1970 var implementPrototype = scope.implementPrototype; |
2231 var useNative = scope.useNative; | 1971 var useNative = scope.useNative; |
2232 function register(name, options) { | 1972 function register(name, options) { |
2233 var definition = options || {}; | 1973 var definition = options || {}; |
2234 if (!name) { | 1974 if (!name) { |
2235 throw new Error("document.registerElement: first argument `name` must not
be empty"); | 1975 throw new Error("document.registerElement: first argument `name` must not
be empty"); |
2236 } | 1976 } |
2237 if (name.indexOf("-") < 0) { | 1977 if (name.indexOf("-") < 0) { |
2238 throw new Error("document.registerElement: first argument ('name') must co
ntain a dash ('-'). Argument provided was '" + String(name) + "'."); | 1978 throw new Error("document.registerElement: first argument ('name') must co
ntain a dash ('-'). Argument provided was '" + String(name) + "'."); |
2239 } | 1979 } |
2240 if (isReservedTag(name)) { | 1980 if (isReservedTag(name)) { |
2241 throw new Error("Failed to execute 'registerElement' on 'Document': Regist
ration failed for type '" + String(name) + "'. The type name is invalid."); | 1981 throw new Error("Failed to execute 'registerElement' on 'Document': Regist
ration failed for type '" + String(name) + "'. The type name is invalid."); |
2242 } | 1982 } |
2243 if (getRegisteredDefinition(name)) { | 1983 if (getRegisteredDefinition(name)) { |
2244 throw new Error("DuplicateDefinitionError: a type with name '" + String(na
me) + "' is already registered"); | 1984 throw new Error("DuplicateDefinitionError: a type with name '" + String(na
me) + "' is already registered"); |
2245 } | 1985 } |
2246 if (!definition.prototype) { | 1986 if (!definition.prototype) { |
2247 definition.prototype = Object.create(HTMLElement.prototype); | 1987 definition.prototype = Object.create(HTMLElement.prototype); |
2248 } | 1988 } |
2249 definition.__name = name.toLowerCase(); | 1989 definition.__name = name.toLowerCase(); |
2250 if (definition.extends) { | |
2251 definition.extends = definition.extends.toLowerCase(); | |
2252 } | |
2253 definition.lifecycle = definition.lifecycle || {}; | 1990 definition.lifecycle = definition.lifecycle || {}; |
2254 definition.ancestry = ancestry(definition.extends); | 1991 definition.ancestry = ancestry(definition.extends); |
2255 resolveTagName(definition); | 1992 resolveTagName(definition); |
2256 resolvePrototypeChain(definition); | 1993 resolvePrototypeChain(definition); |
2257 overrideAttributeApi(definition.prototype); | 1994 overrideAttributeApi(definition.prototype); |
2258 registerDefinition(definition.__name, definition); | 1995 registerDefinition(definition.__name, definition); |
2259 definition.ctor = generateConstructor(definition); | 1996 definition.ctor = generateConstructor(definition); |
2260 definition.ctor.prototype = definition.prototype; | 1997 definition.ctor.prototype = definition.prototype; |
2261 definition.prototype.constructor = definition.ctor; | 1998 definition.prototype.constructor = definition.ctor; |
2262 if (scope.ready) { | 1999 if (scope.ready) { |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2310 definition.tag = baseTag || definition.__name; | 2047 definition.tag = baseTag || definition.__name; |
2311 if (baseTag) { | 2048 if (baseTag) { |
2312 definition.is = definition.__name; | 2049 definition.is = definition.__name; |
2313 } | 2050 } |
2314 } | 2051 } |
2315 function resolvePrototypeChain(definition) { | 2052 function resolvePrototypeChain(definition) { |
2316 if (!Object.__proto__) { | 2053 if (!Object.__proto__) { |
2317 var nativePrototype = HTMLElement.prototype; | 2054 var nativePrototype = HTMLElement.prototype; |
2318 if (definition.is) { | 2055 if (definition.is) { |
2319 var inst = document.createElement(definition.tag); | 2056 var inst = document.createElement(definition.tag); |
2320 nativePrototype = Object.getPrototypeOf(inst); | 2057 var expectedPrototype = Object.getPrototypeOf(inst); |
| 2058 if (expectedPrototype === definition.prototype) { |
| 2059 nativePrototype = expectedPrototype; |
| 2060 } |
2321 } | 2061 } |
2322 var proto = definition.prototype, ancestor; | 2062 var proto = definition.prototype, ancestor; |
2323 var foundPrototype = false; | 2063 while (proto && proto !== nativePrototype) { |
2324 while (proto) { | |
2325 if (proto == nativePrototype) { | |
2326 foundPrototype = true; | |
2327 } | |
2328 ancestor = Object.getPrototypeOf(proto); | 2064 ancestor = Object.getPrototypeOf(proto); |
2329 if (ancestor) { | 2065 proto.__proto__ = ancestor; |
2330 proto.__proto__ = ancestor; | |
2331 } | |
2332 proto = ancestor; | 2066 proto = ancestor; |
2333 } | 2067 } |
2334 if (!foundPrototype) { | |
2335 console.warn(definition.tag + " prototype not found in prototype chain f
or " + definition.is); | |
2336 } | |
2337 definition.native = nativePrototype; | 2068 definition.native = nativePrototype; |
2338 } | 2069 } |
2339 } | 2070 } |
2340 function instantiate(definition) { | 2071 function instantiate(definition) { |
2341 return upgradeWithDefinition(domCreateElement(definition.tag), definition); | 2072 return upgradeWithDefinition(domCreateElement(definition.tag), definition); |
2342 } | 2073 } |
2343 var registry = {}; | 2074 var registry = {}; |
2344 function getRegisteredDefinition(name) { | 2075 function getRegisteredDefinition(name) { |
2345 if (name) { | 2076 if (name) { |
2346 return registry[name.toLowerCase()]; | 2077 return registry[name.toLowerCase()]; |
2347 } | 2078 } |
2348 } | 2079 } |
2349 function registerDefinition(name, definition) { | 2080 function registerDefinition(name, definition) { |
2350 registry[name] = definition; | 2081 registry[name] = definition; |
2351 } | 2082 } |
2352 function generateConstructor(definition) { | 2083 function generateConstructor(definition) { |
2353 return function() { | 2084 return function() { |
2354 return instantiate(definition); | 2085 return instantiate(definition); |
2355 }; | 2086 }; |
2356 } | 2087 } |
2357 var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml"; | 2088 var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml"; |
2358 function createElementNS(namespace, tag, typeExtension) { | 2089 function createElementNS(namespace, tag, typeExtension) { |
2359 if (namespace === HTML_NAMESPACE) { | 2090 if (namespace === HTML_NAMESPACE) { |
2360 return createElement(tag, typeExtension); | 2091 return createElement(tag, typeExtension); |
2361 } else { | 2092 } else { |
2362 return domCreateElementNS(namespace, tag); | 2093 return domCreateElementNS(namespace, tag); |
2363 } | 2094 } |
2364 } | 2095 } |
2365 function createElement(tag, typeExtension) { | 2096 function createElement(tag, typeExtension) { |
2366 if (tag) { | |
2367 tag = tag.toLowerCase(); | |
2368 } | |
2369 if (typeExtension) { | |
2370 typeExtension = typeExtension.toLowerCase(); | |
2371 } | |
2372 var definition = getRegisteredDefinition(typeExtension || tag); | 2097 var definition = getRegisteredDefinition(typeExtension || tag); |
2373 if (definition) { | 2098 if (definition) { |
2374 if (tag == definition.tag && typeExtension == definition.is) { | 2099 if (tag == definition.tag && typeExtension == definition.is) { |
2375 return new definition.ctor(); | 2100 return new definition.ctor(); |
2376 } | 2101 } |
2377 if (!typeExtension && !definition.is) { | 2102 if (!typeExtension && !definition.is) { |
2378 return new definition.ctor(); | 2103 return new definition.ctor(); |
2379 } | 2104 } |
2380 } | 2105 } |
2381 var element; | 2106 var element; |
2382 if (typeExtension) { | 2107 if (typeExtension) { |
2383 element = createElement(tag); | 2108 element = createElement(tag); |
2384 element.setAttribute("is", typeExtension); | 2109 element.setAttribute("is", typeExtension); |
2385 return element; | 2110 return element; |
2386 } | 2111 } |
2387 element = domCreateElement(tag); | 2112 element = domCreateElement(tag); |
2388 if (tag.indexOf("-") >= 0) { | 2113 if (tag.indexOf("-") >= 0) { |
2389 implementPrototype(element, HTMLElement); | 2114 implementPrototype(element, HTMLElement); |
2390 } | 2115 } |
2391 return element; | 2116 return element; |
2392 } | 2117 } |
2393 var domCreateElement = document.createElement.bind(document); | 2118 var domCreateElement = document.createElement.bind(document); |
2394 var domCreateElementNS = document.createElementNS.bind(document); | 2119 var domCreateElementNS = document.createElementNS.bind(document); |
2395 var isInstance; | 2120 var isInstance; |
2396 if (!Object.__proto__ && !useNative) { | 2121 if (!Object.__proto__ && !useNative) { |
2397 isInstance = function(obj, ctor) { | 2122 isInstance = function(obj, ctor) { |
2398 if (obj instanceof ctor) { | |
2399 return true; | |
2400 } | |
2401 var p = obj; | 2123 var p = obj; |
2402 while (p) { | 2124 while (p) { |
2403 if (p === ctor.prototype) { | 2125 if (p === ctor.prototype) { |
2404 return true; | 2126 return true; |
2405 } | 2127 } |
2406 p = p.__proto__; | 2128 p = p.__proto__; |
2407 } | 2129 } |
2408 return false; | 2130 return false; |
2409 }; | 2131 }; |
2410 } else { | 2132 } else { |
2411 isInstance = function(obj, base) { | 2133 isInstance = function(obj, base) { |
2412 return obj instanceof base; | 2134 return obj instanceof base; |
2413 }; | 2135 }; |
2414 } | 2136 } |
2415 function wrapDomMethodToForceUpgrade(obj, methodName) { | 2137 function wrapDomMethodToForceUpgrade(obj, methodName) { |
2416 var orig = obj[methodName]; | 2138 var orig = obj[methodName]; |
2417 obj[methodName] = function() { | 2139 obj[methodName] = function() { |
2418 var n = orig.apply(this, arguments); | 2140 var n = orig.apply(this, arguments); |
2419 upgradeAll(n); | 2141 upgradeAll(n); |
2420 return n; | 2142 return n; |
2421 }; | 2143 }; |
2422 } | 2144 } |
2423 wrapDomMethodToForceUpgrade(Node.prototype, "cloneNode"); | 2145 wrapDomMethodToForceUpgrade(Node.prototype, "cloneNode"); |
2424 wrapDomMethodToForceUpgrade(document, "importNode"); | 2146 wrapDomMethodToForceUpgrade(document, "importNode"); |
| 2147 if (isIE11OrOlder) { |
| 2148 (function() { |
| 2149 var importNode = document.importNode; |
| 2150 document.importNode = function() { |
| 2151 var n = importNode.apply(document, arguments); |
| 2152 if (n.nodeType == n.DOCUMENT_FRAGMENT_NODE) { |
| 2153 var f = document.createDocumentFragment(); |
| 2154 f.appendChild(n); |
| 2155 return f; |
| 2156 } else { |
| 2157 return n; |
| 2158 } |
| 2159 }; |
| 2160 })(); |
| 2161 } |
2425 document.registerElement = register; | 2162 document.registerElement = register; |
2426 document.createElement = createElement; | 2163 document.createElement = createElement; |
2427 document.createElementNS = createElementNS; | 2164 document.createElementNS = createElementNS; |
2428 scope.registry = registry; | 2165 scope.registry = registry; |
2429 scope.instanceof = isInstance; | 2166 scope.instanceof = isInstance; |
2430 scope.reservedTagList = reservedTagList; | 2167 scope.reservedTagList = reservedTagList; |
2431 scope.getRegisteredDefinition = getRegisteredDefinition; | 2168 scope.getRegisteredDefinition = getRegisteredDefinition; |
2432 document.register = document.registerElement; | 2169 document.register = document.registerElement; |
2433 }); | 2170 }); |
2434 | 2171 |
2435 (function(scope) { | 2172 (function(scope) { |
2436 var useNative = scope.useNative; | 2173 var useNative = scope.useNative; |
2437 var initializeModules = scope.initializeModules; | 2174 var initializeModules = scope.initializeModules; |
2438 var isIE = scope.isIE; | 2175 var isIE11OrOlder = /Trident/.test(navigator.userAgent); |
2439 if (useNative) { | 2176 if (useNative) { |
2440 var nop = function() {}; | 2177 var nop = function() {}; |
2441 scope.watchShadow = nop; | 2178 scope.watchShadow = nop; |
2442 scope.upgrade = nop; | 2179 scope.upgrade = nop; |
2443 scope.upgradeAll = nop; | 2180 scope.upgradeAll = nop; |
2444 scope.upgradeDocumentTree = nop; | 2181 scope.upgradeDocumentTree = nop; |
2445 scope.upgradeSubtree = nop; | 2182 scope.upgradeSubtree = nop; |
2446 scope.takeRecords = nop; | 2183 scope.takeRecords = nop; |
2447 scope.instanceof = function(obj, base) { | 2184 scope.instanceof = function(obj, base) { |
2448 return obj instanceof base; | 2185 return obj instanceof base; |
2449 }; | 2186 }; |
2450 } else { | 2187 } else { |
2451 initializeModules(); | 2188 initializeModules(); |
2452 } | 2189 } |
2453 var upgradeDocumentTree = scope.upgradeDocumentTree; | 2190 var upgradeDocumentTree = scope.upgradeDocumentTree; |
2454 var upgradeDocument = scope.upgradeDocument; | |
2455 if (!window.wrap) { | 2191 if (!window.wrap) { |
2456 if (window.ShadowDOMPolyfill) { | 2192 if (window.ShadowDOMPolyfill) { |
2457 window.wrap = window.ShadowDOMPolyfill.wrapIfNeeded; | 2193 window.wrap = ShadowDOMPolyfill.wrapIfNeeded; |
2458 window.unwrap = window.ShadowDOMPolyfill.unwrapIfNeeded; | 2194 window.unwrap = ShadowDOMPolyfill.unwrapIfNeeded; |
2459 } else { | 2195 } else { |
2460 window.wrap = window.unwrap = function(node) { | 2196 window.wrap = window.unwrap = function(node) { |
2461 return node; | 2197 return node; |
2462 }; | 2198 }; |
2463 } | 2199 } |
2464 } | 2200 } |
2465 if (window.HTMLImports) { | 2201 function bootstrap() { |
2466 window.HTMLImports.__importsParsingHook = function(elt) { | 2202 upgradeDocumentTree(wrap(document)); |
2467 if (elt.import) { | 2203 if (window.HTMLImports) { |
2468 upgradeDocument(wrap(elt.import)); | 2204 HTMLImports.__importsParsingHook = function(elt) { |
| 2205 upgradeDocumentTree(wrap(elt.import)); |
| 2206 }; |
| 2207 } |
| 2208 CustomElements.ready = true; |
| 2209 setTimeout(function() { |
| 2210 CustomElements.readyTime = Date.now(); |
| 2211 if (window.HTMLImports) { |
| 2212 CustomElements.elapsed = CustomElements.readyTime - HTMLImports.readyTim
e; |
2469 } | 2213 } |
| 2214 document.dispatchEvent(new CustomEvent("WebComponentsReady", { |
| 2215 bubbles: true |
| 2216 })); |
| 2217 }); |
| 2218 } |
| 2219 if (isIE11OrOlder && typeof window.CustomEvent !== "function") { |
| 2220 window.CustomEvent = function(inType, params) { |
| 2221 params = params || {}; |
| 2222 var e = document.createEvent("CustomEvent"); |
| 2223 e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelab
le), params.detail); |
| 2224 return e; |
2470 }; | 2225 }; |
2471 } | 2226 window.CustomEvent.prototype = window.Event.prototype; |
2472 function bootstrap() { | |
2473 upgradeDocumentTree(window.wrap(document)); | |
2474 window.CustomElements.ready = true; | |
2475 var requestAnimationFrame = window.requestAnimationFrame || function(f) { | |
2476 setTimeout(f, 16); | |
2477 }; | |
2478 requestAnimationFrame(function() { | |
2479 setTimeout(function() { | |
2480 window.CustomElements.readyTime = Date.now(); | |
2481 if (window.HTMLImports) { | |
2482 window.CustomElements.elapsed = window.CustomElements.readyTime - wind
ow.HTMLImports.readyTime; | |
2483 } | |
2484 document.dispatchEvent(new CustomEvent("WebComponentsReady", { | |
2485 bubbles: true | |
2486 })); | |
2487 }); | |
2488 }); | |
2489 } | 2227 } |
2490 if (document.readyState === "complete" || scope.flags.eager) { | 2228 if (document.readyState === "complete" || scope.flags.eager) { |
2491 bootstrap(); | 2229 bootstrap(); |
2492 } else if (document.readyState === "interactive" && !window.attachEvent && (!w
indow.HTMLImports || window.HTMLImports.ready)) { | 2230 } else if (document.readyState === "interactive" && !window.attachEvent && (!w
indow.HTMLImports || window.HTMLImports.ready)) { |
2493 bootstrap(); | 2231 bootstrap(); |
2494 } else { | 2232 } else { |
2495 var loadEvent = window.HTMLImports && !window.HTMLImports.ready ? "HTMLImpor
tsLoaded" : "DOMContentLoaded"; | 2233 var loadEvent = window.HTMLImports && !HTMLImports.ready ? "HTMLImportsLoade
d" : "DOMContentLoaded"; |
2496 window.addEventListener(loadEvent, bootstrap); | 2234 window.addEventListener(loadEvent, bootstrap); |
2497 } | 2235 } |
| 2236 scope.isIE11OrOlder = isIE11OrOlder; |
2498 })(window.CustomElements); | 2237 })(window.CustomElements); |
2499 | 2238 |
| 2239 if (typeof HTMLTemplateElement === "undefined") { |
| 2240 (function() { |
| 2241 var TEMPLATE_TAG = "template"; |
| 2242 HTMLTemplateElement = function() {}; |
| 2243 HTMLTemplateElement.prototype = Object.create(HTMLElement.prototype); |
| 2244 HTMLTemplateElement.decorate = function(template) { |
| 2245 if (!template.content) { |
| 2246 template.content = template.ownerDocument.createDocumentFragment(); |
| 2247 var child; |
| 2248 while (child = template.firstChild) { |
| 2249 template.content.appendChild(child); |
| 2250 } |
| 2251 } |
| 2252 }; |
| 2253 HTMLTemplateElement.bootstrap = function(doc) { |
| 2254 var templates = doc.querySelectorAll(TEMPLATE_TAG); |
| 2255 for (var i = 0, l = templates.length, t; i < l && (t = templates[i]); i++)
{ |
| 2256 HTMLTemplateElement.decorate(t); |
| 2257 } |
| 2258 }; |
| 2259 addEventListener("DOMContentLoaded", function() { |
| 2260 HTMLTemplateElement.bootstrap(document); |
| 2261 }); |
| 2262 })(); |
| 2263 } |
| 2264 |
2500 (function(scope) { | 2265 (function(scope) { |
2501 var style = document.createElement("style"); | 2266 var style = document.createElement("style"); |
2502 style.textContent = "" + "body {" + "transition: opacity ease-in 0.2s;" + " }
\n" + "body[unresolved] {" + "opacity: 0; display: block; overflow: hidden; posi
tion: relative;" + " } \n"; | 2267 style.textContent = "" + "body {" + "transition: opacity ease-in 0.2s;" + " }
\n" + "body[unresolved] {" + "opacity: 0; display: block; overflow: hidden; posi
tion: relative;" + " } \n"; |
2503 var head = document.querySelector("head"); | 2268 var head = document.querySelector("head"); |
2504 head.insertBefore(style, head.firstChild); | 2269 head.insertBefore(style, head.firstChild); |
2505 })(window.WebComponents); | 2270 })(window.WebComponents); |
OLD | NEW |