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.21 | 10 // @version 0.7.23 |
11 (function() { | 11 (function() { |
12 window.WebComponents = window.WebComponents || { | 12 window.WebComponents = window.WebComponents || { |
13 flags: {} | 13 flags: {} |
14 }; | 14 }; |
15 var file = "webcomponents-lite.js"; | 15 var file = "webcomponents-lite.js"; |
16 var script = document.querySelector('script[src*="' + file + '"]'); | 16 var script = document.querySelector('script[src*="' + file + '"]'); |
17 var flags = {}; | 17 var flags = {}; |
18 if (!flags.noOpts) { | 18 if (!flags.noOpts) { |
19 location.search.slice(1).split("&").forEach(function(option) { | 19 location.search.slice(1).split("&").forEach(function(option) { |
20 var parts = option.split("="); | 20 var parts = option.split("="); |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 break; | 158 break; |
159 | 159 |
160 case "scheme data": | 160 case "scheme data": |
161 if ("?" == c) { | 161 if ("?" == c) { |
162 this._query = "?"; | 162 this._query = "?"; |
163 state = "query"; | 163 state = "query"; |
164 } else if ("#" == c) { | 164 } else if ("#" == c) { |
165 this._fragment = "#"; | 165 this._fragment = "#"; |
166 state = "fragment"; | 166 state = "fragment"; |
167 } else { | 167 } else { |
168 if (EOF != c && "» " != c && "\n" != c && "\r" != c) { | 168 if (EOF != c && "\t" != c && "\n" != c && "\r" != c) { |
169 this._schemeData += percentEscape(c); | 169 this._schemeData += percentEscape(c); |
170 } | 170 } |
171 } | 171 } |
172 break; | 172 break; |
173 | 173 |
174 case "no scheme": | 174 case "no scheme": |
175 if (!base || !isRelativeScheme(base._scheme)) { | 175 if (!base || !isRelativeScheme(base._scheme)) { |
176 err("Missing scheme."); | 176 err("Missing scheme."); |
177 invalid.call(this); | 177 invalid.call(this); |
178 } else { | 178 } else { |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
289 | 289 |
290 case "authority": | 290 case "authority": |
291 if ("@" == c) { | 291 if ("@" == c) { |
292 if (seenAt) { | 292 if (seenAt) { |
293 err("@ already seen."); | 293 err("@ already seen."); |
294 buffer += "%40"; | 294 buffer += "%40"; |
295 } | 295 } |
296 seenAt = true; | 296 seenAt = true; |
297 for (var i = 0; i < buffer.length; i++) { | 297 for (var i = 0; i < buffer.length; i++) { |
298 var cp = buffer[i]; | 298 var cp = buffer[i]; |
299 if ("» " == cp || "\n" == cp || "\r" == cp) { | 299 if ("\t" == cp || "\n" == cp || "\r" == cp) { |
300 err("Invalid whitespace in authority."); | 300 err("Invalid whitespace in authority."); |
301 continue; | 301 continue; |
302 } | 302 } |
303 if (":" == cp && null === this._password) { | 303 if (":" == cp && null === this._password) { |
304 this._password = ""; | 304 this._password = ""; |
305 continue; | 305 continue; |
306 } | 306 } |
307 var tempC = percentEscape(cp); | 307 var tempC = percentEscape(cp); |
308 null !== this._password ? this._password += tempC : this._username +
= tempC; | 308 null !== this._password ? this._password += tempC : this._username +
= tempC; |
309 } | 309 } |
(...skipping 13 matching lines...) Expand all Loading... |
323 if (buffer.length == 2 && ALPHA.test(buffer[0]) && (buffer[1] == ":" |
| buffer[1] == "|")) { | 323 if (buffer.length == 2 && ALPHA.test(buffer[0]) && (buffer[1] == ":" |
| buffer[1] == "|")) { |
324 state = "relative path"; | 324 state = "relative path"; |
325 } else if (buffer.length == 0) { | 325 } else if (buffer.length == 0) { |
326 state = "relative path start"; | 326 state = "relative path start"; |
327 } else { | 327 } else { |
328 this._host = IDNAToASCII.call(this, buffer); | 328 this._host = IDNAToASCII.call(this, buffer); |
329 buffer = ""; | 329 buffer = ""; |
330 state = "relative path start"; | 330 state = "relative path start"; |
331 } | 331 } |
332 continue; | 332 continue; |
333 } else if ("» " == c || "\n" == c || "\r" == c) { | 333 } else if ("\t" == c || "\n" == c || "\r" == c) { |
334 err("Invalid whitespace in file host."); | 334 err("Invalid whitespace in file host."); |
335 } else { | 335 } else { |
336 buffer += c; | 336 buffer += c; |
337 } | 337 } |
338 break; | 338 break; |
339 | 339 |
340 case "host": | 340 case "host": |
341 case "hostname": | 341 case "hostname": |
342 if (":" == c && !seenBracket) { | 342 if (":" == c && !seenBracket) { |
343 this._host = IDNAToASCII.call(this, buffer); | 343 this._host = IDNAToASCII.call(this, buffer); |
344 buffer = ""; | 344 buffer = ""; |
345 state = "port"; | 345 state = "port"; |
346 if ("hostname" == stateOverride) { | 346 if ("hostname" == stateOverride) { |
347 break loop; | 347 break loop; |
348 } | 348 } |
349 } else if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c) { | 349 } else if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c) { |
350 this._host = IDNAToASCII.call(this, buffer); | 350 this._host = IDNAToASCII.call(this, buffer); |
351 buffer = ""; | 351 buffer = ""; |
352 state = "relative path start"; | 352 state = "relative path start"; |
353 if (stateOverride) { | 353 if (stateOverride) { |
354 break loop; | 354 break loop; |
355 } | 355 } |
356 continue; | 356 continue; |
357 } else if ("» " != c && "\n" != c && "\r" != c) { | 357 } else if ("\t" != c && "\n" != c && "\r" != c) { |
358 if ("[" == c) { | 358 if ("[" == c) { |
359 seenBracket = true; | 359 seenBracket = true; |
360 } else if ("]" == c) { | 360 } else if ("]" == c) { |
361 seenBracket = false; | 361 seenBracket = false; |
362 } | 362 } |
363 buffer += c; | 363 buffer += c; |
364 } else { | 364 } else { |
365 err("Invalid code point in host/hostname: " + c); | 365 err("Invalid code point in host/hostname: " + c); |
366 } | 366 } |
367 break; | 367 break; |
368 | 368 |
369 case "port": | 369 case "port": |
370 if (/[0-9]/.test(c)) { | 370 if (/[0-9]/.test(c)) { |
371 buffer += c; | 371 buffer += c; |
372 } else if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c ||
stateOverride) { | 372 } else if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c ||
stateOverride) { |
373 if ("" != buffer) { | 373 if ("" != buffer) { |
374 var temp = parseInt(buffer, 10); | 374 var temp = parseInt(buffer, 10); |
375 if (temp != relative[this._scheme]) { | 375 if (temp != relative[this._scheme]) { |
376 this._port = temp + ""; | 376 this._port = temp + ""; |
377 } | 377 } |
378 buffer = ""; | 378 buffer = ""; |
379 } | 379 } |
380 if (stateOverride) { | 380 if (stateOverride) { |
381 break loop; | 381 break loop; |
382 } | 382 } |
383 state = "relative path start"; | 383 state = "relative path start"; |
384 continue; | 384 continue; |
385 } else if ("» " == c || "\n" == c || "\r" == c) { | 385 } else if ("\t" == c || "\n" == c || "\r" == c) { |
386 err("Invalid code point in port: " + c); | 386 err("Invalid code point in port: " + c); |
387 } else { | 387 } else { |
388 invalid.call(this); | 388 invalid.call(this); |
389 } | 389 } |
390 break; | 390 break; |
391 | 391 |
392 case "relative path start": | 392 case "relative path start": |
393 if ("\\" == c) err("'\\' not allowed in path."); | 393 if ("\\" == c) err("'\\' not allowed in path."); |
394 state = "relative path"; | 394 state = "relative path"; |
395 if ("/" != c && "\\" != c) { | 395 if ("/" != c && "\\" != c) { |
(...skipping 24 matching lines...) Expand all Loading... |
420 this._path.push(buffer); | 420 this._path.push(buffer); |
421 } | 421 } |
422 buffer = ""; | 422 buffer = ""; |
423 if ("?" == c) { | 423 if ("?" == c) { |
424 this._query = "?"; | 424 this._query = "?"; |
425 state = "query"; | 425 state = "query"; |
426 } else if ("#" == c) { | 426 } else if ("#" == c) { |
427 this._fragment = "#"; | 427 this._fragment = "#"; |
428 state = "fragment"; | 428 state = "fragment"; |
429 } | 429 } |
430 } else if ("» " != c && "\n" != c && "\r" != c) { | 430 } else if ("\t" != c && "\n" != c && "\r" != c) { |
431 buffer += percentEscape(c); | 431 buffer += percentEscape(c); |
432 } | 432 } |
433 break; | 433 break; |
434 | 434 |
435 case "query": | 435 case "query": |
436 if (!stateOverride && "#" == c) { | 436 if (!stateOverride && "#" == c) { |
437 this._fragment = "#"; | 437 this._fragment = "#"; |
438 state = "fragment"; | 438 state = "fragment"; |
439 } else if (EOF != c && "» " != c && "\n" != c && "\r" != c) { | 439 } else if (EOF != c && "\t" != c && "\n" != c && "\r" != c) { |
440 this._query += percentEscapeQuery(c); | 440 this._query += percentEscapeQuery(c); |
441 } | 441 } |
442 break; | 442 break; |
443 | 443 |
444 case "fragment": | 444 case "fragment": |
445 if (EOF != c && "» " != c && "\n" != c && "\r" != c) { | 445 if (EOF != c && "\t" != c && "\n" != c && "\r" != c) { |
446 this._fragment += c; | 446 this._fragment += c; |
447 } | 447 } |
448 break; | 448 break; |
449 } | 449 } |
450 cursor++; | 450 cursor++; |
451 } | 451 } |
452 } | 452 } |
453 function clear() { | 453 function clear() { |
454 this._scheme = ""; | 454 this._scheme = ""; |
455 this._schemeData = ""; | 455 this._schemeData = ""; |
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
907 }; | 907 }; |
908 global.JsMutationObserver = JsMutationObserver; | 908 global.JsMutationObserver = JsMutationObserver; |
909 if (!global.MutationObserver) { | 909 if (!global.MutationObserver) { |
910 global.MutationObserver = JsMutationObserver; | 910 global.MutationObserver = JsMutationObserver; |
911 JsMutationObserver._isPolyfilled = true; | 911 JsMutationObserver._isPolyfilled = true; |
912 } | 912 } |
913 })(self); | 913 })(self); |
914 | 914 |
915 (function() { | 915 (function() { |
916 var needsTemplate = typeof HTMLTemplateElement === "undefined"; | 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 } |
917 var needsCloning = function() { | 932 var needsCloning = function() { |
918 if (!needsTemplate) { | 933 if (!needsTemplate) { |
919 var frag = document.createDocumentFragment(); | |
920 var t = document.createElement("template"); | 934 var t = document.createElement("template"); |
921 frag.appendChild(t); | 935 var t2 = document.createElement("template"); |
922 t.content.appendChild(document.createElement("div")); | 936 t2.content.appendChild(document.createElement("div")); |
923 var clone = frag.cloneNode(true); | 937 t.content.appendChild(t2); |
924 return clone.firstChild.content.childNodes.length === 0; | 938 var clone = t.cloneNode(true); |
| 939 return clone.content.childNodes.length === 0 || clone.content.firstChild.c
ontent.childNodes.length === 0; |
925 } | 940 } |
926 }(); | 941 }(); |
927 var TEMPLATE_TAG = "template"; | 942 var TEMPLATE_TAG = "template"; |
928 var TemplateImpl = function() {}; | 943 var TemplateImpl = function() {}; |
929 if (needsTemplate) { | 944 if (needsTemplate) { |
930 var contentDoc = document.implementation.createHTMLDocument("template"); | 945 var contentDoc = document.implementation.createHTMLDocument("template"); |
931 var canDecorate = true; | 946 var canDecorate = true; |
932 var templateStyle = document.createElement("style"); | 947 var templateStyle = document.createElement("style"); |
933 templateStyle.textContent = TEMPLATE_TAG + "{display:none;}"; | 948 templateStyle.textContent = TEMPLATE_TAG + "{display:none;}"; |
934 var head = document.head; | 949 var head = document.head; |
935 head.insertBefore(templateStyle, head.firstElementChild); | 950 head.insertBefore(templateStyle, head.firstElementChild); |
936 TemplateImpl.prototype = Object.create(HTMLElement.prototype); | 951 TemplateImpl.prototype = Object.create(HTMLElement.prototype); |
937 TemplateImpl.decorate = function(template) { | 952 TemplateImpl.decorate = function(template) { |
938 if (template.content) { | 953 if (template.content) { |
939 return; | 954 return; |
940 } | 955 } |
941 template.content = contentDoc.createDocumentFragment(); | 956 template.content = contentDoc.createDocumentFragment(); |
942 var child; | 957 var child; |
943 while (child = template.firstChild) { | 958 while (child = template.firstChild) { |
944 template.content.appendChild(child); | 959 template.content.appendChild(child); |
945 } | 960 } |
| 961 template.cloneNode = function(deep) { |
| 962 return TemplateImpl.cloneNode(this, deep); |
| 963 }; |
946 if (canDecorate) { | 964 if (canDecorate) { |
947 try { | 965 try { |
948 Object.defineProperty(template, "innerHTML", { | 966 Object.defineProperty(template, "innerHTML", { |
949 get: function() { | 967 get: function() { |
950 var o = ""; | 968 var o = ""; |
951 for (var e = this.content.firstChild; e; e = e.nextSibling) { | 969 for (var e = this.content.firstChild; e; e = e.nextSibling) { |
952 o += e.outerHTML || escapeData(e.data); | 970 o += e.outerHTML || escapeData(e.data); |
953 } | 971 } |
954 return o; | 972 return o; |
955 }, | 973 }, |
956 set: function(text) { | 974 set: function(text) { |
957 contentDoc.body.innerHTML = text; | 975 contentDoc.body.innerHTML = text; |
958 TemplateImpl.bootstrap(contentDoc); | 976 TemplateImpl.bootstrap(contentDoc); |
959 while (this.content.firstChild) { | 977 while (this.content.firstChild) { |
960 this.content.removeChild(this.content.firstChild); | 978 this.content.removeChild(this.content.firstChild); |
961 } | 979 } |
962 while (contentDoc.body.firstChild) { | 980 while (contentDoc.body.firstChild) { |
963 this.content.appendChild(contentDoc.body.firstChild); | 981 this.content.appendChild(contentDoc.body.firstChild); |
964 } | 982 } |
965 }, | 983 }, |
966 configurable: true | 984 configurable: true |
967 }); | 985 }); |
968 template.cloneNode = function(deep) { | |
969 return TemplateImpl.cloneNode(this, deep); | |
970 }; | |
971 } catch (err) { | 986 } catch (err) { |
972 canDecorate = false; | 987 canDecorate = false; |
973 } | 988 } |
974 } | 989 } |
975 TemplateImpl.bootstrap(template.content); | 990 TemplateImpl.bootstrap(template.content); |
976 }; | 991 }; |
977 TemplateImpl.bootstrap = function(doc) { | 992 TemplateImpl.bootstrap = function(doc) { |
978 var templates = doc.querySelectorAll(TEMPLATE_TAG); | 993 var templates = doc.querySelectorAll(TEMPLATE_TAG); |
979 for (var i = 0, l = templates.length, t; i < l && (t = templates[i]); i++)
{ | 994 for (var i = 0, l = templates.length, t; i < l && (t = templates[i]); i++)
{ |
980 TemplateImpl.decorate(t); | 995 TemplateImpl.decorate(t); |
981 } | 996 } |
982 }; | 997 }; |
983 document.addEventListener("DOMContentLoaded", function() { | 998 document.addEventListener("DOMContentLoaded", function() { |
984 TemplateImpl.bootstrap(document); | 999 TemplateImpl.bootstrap(document); |
985 }); | 1000 }); |
986 var createElement = document.createElement; | 1001 var createElement = document.createElement; |
987 document.createElement = function() { | 1002 document.createElement = function() { |
988 "use strict"; | 1003 "use strict"; |
989 var el = createElement.apply(document, arguments); | 1004 var el = createElement.apply(document, arguments); |
990 if (el.localName == "template") { | 1005 if (el.localName === "template") { |
991 TemplateImpl.decorate(el); | 1006 TemplateImpl.decorate(el); |
992 } | 1007 } |
993 return el; | 1008 return el; |
994 }; | 1009 }; |
995 var escapeDataRegExp = /[&\u00A0<>]/g; | 1010 var escapeDataRegExp = /[&\u00A0<>]/g; |
996 function escapeReplace(c) { | 1011 function escapeReplace(c) { |
997 switch (c) { | 1012 switch (c) { |
998 case "&": | 1013 case "&": |
999 return "&"; | 1014 return "&"; |
1000 | 1015 |
1001 case "<": | 1016 case "<": |
1002 return "<"; | 1017 return "<"; |
1003 | 1018 |
1004 case ">": | 1019 case ">": |
1005 return ">"; | 1020 return ">"; |
1006 | 1021 |
1007 case " ": | 1022 case " ": |
1008 return " "; | 1023 return " "; |
1009 } | 1024 } |
1010 } | 1025 } |
1011 function escapeData(s) { | 1026 function escapeData(s) { |
1012 return s.replace(escapeDataRegExp, escapeReplace); | 1027 return s.replace(escapeDataRegExp, escapeReplace); |
1013 } | 1028 } |
1014 } | 1029 } |
1015 if (needsTemplate || needsCloning) { | 1030 if (needsTemplate || needsCloning) { |
1016 var nativeCloneNode = Node.prototype.cloneNode; | 1031 var nativeCloneNode = Node.prototype.cloneNode; |
1017 TemplateImpl.cloneNode = function(template, deep) { | 1032 TemplateImpl.cloneNode = function(template, deep) { |
1018 var clone = nativeCloneNode.call(template); | 1033 var clone = nativeCloneNode.call(template, false); |
1019 if (this.decorate) { | 1034 if (this.decorate) { |
1020 this.decorate(clone); | 1035 this.decorate(clone); |
1021 } | 1036 } |
1022 if (deep) { | 1037 if (deep) { |
1023 clone.content.appendChild(nativeCloneNode.call(template.content, true)); | 1038 clone.content.appendChild(nativeCloneNode.call(template.content, true)); |
1024 this.fixClonedDom(clone.content, template.content); | 1039 this.fixClonedDom(clone.content, template.content); |
1025 } | 1040 } |
1026 return clone; | 1041 return clone; |
1027 }; | 1042 }; |
1028 TemplateImpl.fixClonedDom = function(clone, source) { | 1043 TemplateImpl.fixClonedDom = function(clone, source) { |
| 1044 if (!source.querySelectorAll) return; |
1029 var s$ = source.querySelectorAll(TEMPLATE_TAG); | 1045 var s$ = source.querySelectorAll(TEMPLATE_TAG); |
1030 var t$ = clone.querySelectorAll(TEMPLATE_TAG); | 1046 var t$ = clone.querySelectorAll(TEMPLATE_TAG); |
1031 for (var i = 0, l = t$.length, t, s; i < l; i++) { | 1047 for (var i = 0, l = t$.length, t, s; i < l; i++) { |
1032 s = s$[i]; | 1048 s = s$[i]; |
1033 t = t$[i]; | 1049 t = t$[i]; |
1034 if (this.decorate) { | 1050 if (this.decorate) { |
1035 this.decorate(s); | 1051 this.decorate(s); |
1036 } | 1052 } |
1037 t.parentNode.replaceChild(s.cloneNode(true), t); | 1053 t.parentNode.replaceChild(s.cloneNode(true), t); |
1038 } | 1054 } |
(...skipping 17 matching lines...) Expand all Loading... |
1056 return dom; | 1072 return dom; |
1057 } | 1073 } |
1058 }; | 1074 }; |
1059 if (needsCloning) { | 1075 if (needsCloning) { |
1060 HTMLTemplateElement.prototype.cloneNode = function(deep) { | 1076 HTMLTemplateElement.prototype.cloneNode = function(deep) { |
1061 return TemplateImpl.cloneNode(this, deep); | 1077 return TemplateImpl.cloneNode(this, deep); |
1062 }; | 1078 }; |
1063 } | 1079 } |
1064 } | 1080 } |
1065 if (needsTemplate) { | 1081 if (needsTemplate) { |
1066 HTMLTemplateElement = TemplateImpl; | 1082 window.HTMLTemplateElement = TemplateImpl; |
1067 } | 1083 } |
1068 })(); | 1084 })(); |
1069 | 1085 |
1070 (function(scope) { | 1086 (function(scope) { |
1071 "use strict"; | 1087 "use strict"; |
1072 if (!window.performance) { | 1088 if (!(window.performance && window.performance.now)) { |
1073 var start = Date.now(); | 1089 var start = Date.now(); |
1074 window.performance = { | 1090 window.performance = { |
1075 now: function() { | 1091 now: function() { |
1076 return Date.now() - start; | 1092 return Date.now() - start; |
1077 } | 1093 } |
1078 }; | 1094 }; |
1079 } | 1095 } |
1080 if (!window.requestAnimationFrame) { | 1096 if (!window.requestAnimationFrame) { |
1081 window.requestAnimationFrame = function() { | 1097 window.requestAnimationFrame = function() { |
1082 var nativeRaf = window.webkitRequestAnimationFrame || window.mozRequestAni
mationFrame; | 1098 var nativeRaf = window.webkitRequestAnimationFrame || window.mozRequestAni
mationFrame; |
(...skipping 1141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2224 if (isReservedTag(name)) { | 2240 if (isReservedTag(name)) { |
2225 throw new Error("Failed to execute 'registerElement' on 'Document': Regist
ration failed for type '" + String(name) + "'. The type name is invalid."); | 2241 throw new Error("Failed to execute 'registerElement' on 'Document': Regist
ration failed for type '" + String(name) + "'. The type name is invalid."); |
2226 } | 2242 } |
2227 if (getRegisteredDefinition(name)) { | 2243 if (getRegisteredDefinition(name)) { |
2228 throw new Error("DuplicateDefinitionError: a type with name '" + String(na
me) + "' is already registered"); | 2244 throw new Error("DuplicateDefinitionError: a type with name '" + String(na
me) + "' is already registered"); |
2229 } | 2245 } |
2230 if (!definition.prototype) { | 2246 if (!definition.prototype) { |
2231 definition.prototype = Object.create(HTMLElement.prototype); | 2247 definition.prototype = Object.create(HTMLElement.prototype); |
2232 } | 2248 } |
2233 definition.__name = name.toLowerCase(); | 2249 definition.__name = name.toLowerCase(); |
| 2250 if (definition.extends) { |
| 2251 definition.extends = definition.extends.toLowerCase(); |
| 2252 } |
2234 definition.lifecycle = definition.lifecycle || {}; | 2253 definition.lifecycle = definition.lifecycle || {}; |
2235 definition.ancestry = ancestry(definition.extends); | 2254 definition.ancestry = ancestry(definition.extends); |
2236 resolveTagName(definition); | 2255 resolveTagName(definition); |
2237 resolvePrototypeChain(definition); | 2256 resolvePrototypeChain(definition); |
2238 overrideAttributeApi(definition.prototype); | 2257 overrideAttributeApi(definition.prototype); |
2239 registerDefinition(definition.__name, definition); | 2258 registerDefinition(definition.__name, definition); |
2240 definition.ctor = generateConstructor(definition); | 2259 definition.ctor = generateConstructor(definition); |
2241 definition.ctor.prototype = definition.prototype; | 2260 definition.ctor.prototype = definition.prototype; |
2242 definition.prototype.constructor = definition.ctor; | 2261 definition.prototype.constructor = definition.ctor; |
2243 if (scope.ready) { | 2262 if (scope.ready) { |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2396 function wrapDomMethodToForceUpgrade(obj, methodName) { | 2415 function wrapDomMethodToForceUpgrade(obj, methodName) { |
2397 var orig = obj[methodName]; | 2416 var orig = obj[methodName]; |
2398 obj[methodName] = function() { | 2417 obj[methodName] = function() { |
2399 var n = orig.apply(this, arguments); | 2418 var n = orig.apply(this, arguments); |
2400 upgradeAll(n); | 2419 upgradeAll(n); |
2401 return n; | 2420 return n; |
2402 }; | 2421 }; |
2403 } | 2422 } |
2404 wrapDomMethodToForceUpgrade(Node.prototype, "cloneNode"); | 2423 wrapDomMethodToForceUpgrade(Node.prototype, "cloneNode"); |
2405 wrapDomMethodToForceUpgrade(document, "importNode"); | 2424 wrapDomMethodToForceUpgrade(document, "importNode"); |
2406 if (isIE) { | |
2407 (function() { | |
2408 var importNode = document.importNode; | |
2409 document.importNode = function() { | |
2410 var n = importNode.apply(document, arguments); | |
2411 if (n.nodeType == n.DOCUMENT_FRAGMENT_NODE) { | |
2412 var f = document.createDocumentFragment(); | |
2413 f.appendChild(n); | |
2414 return f; | |
2415 } else { | |
2416 return n; | |
2417 } | |
2418 }; | |
2419 })(); | |
2420 } | |
2421 document.registerElement = register; | 2425 document.registerElement = register; |
2422 document.createElement = createElement; | 2426 document.createElement = createElement; |
2423 document.createElementNS = createElementNS; | 2427 document.createElementNS = createElementNS; |
2424 scope.registry = registry; | 2428 scope.registry = registry; |
2425 scope.instanceof = isInstance; | 2429 scope.instanceof = isInstance; |
2426 scope.reservedTagList = reservedTagList; | 2430 scope.reservedTagList = reservedTagList; |
2427 scope.getRegisteredDefinition = getRegisteredDefinition; | 2431 scope.getRegisteredDefinition = getRegisteredDefinition; |
2428 document.register = document.registerElement; | 2432 document.register = document.registerElement; |
2429 }); | 2433 }); |
2430 | 2434 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2492 window.addEventListener(loadEvent, bootstrap); | 2496 window.addEventListener(loadEvent, bootstrap); |
2493 } | 2497 } |
2494 })(window.CustomElements); | 2498 })(window.CustomElements); |
2495 | 2499 |
2496 (function(scope) { | 2500 (function(scope) { |
2497 var style = document.createElement("style"); | 2501 var style = document.createElement("style"); |
2498 style.textContent = "" + "body {" + "transition: opacity ease-in 0.2s;" + " }
\n" + "body[unresolved] {" + "opacity: 0; display: block; overflow: hidden; posi
tion: relative;" + " } \n"; | 2502 style.textContent = "" + "body {" + "transition: opacity ease-in 0.2s;" + " }
\n" + "body[unresolved] {" + "opacity: 0; display: block; overflow: hidden; posi
tion: relative;" + " } \n"; |
2499 var head = document.querySelector("head"); | 2503 var head = document.querySelector("head"); |
2500 head.insertBefore(style, head.firstChild); | 2504 head.insertBefore(style, head.firstChild); |
2501 })(window.WebComponents); | 2505 })(window.WebComponents); |
OLD | NEW |