Index: polymer_0.5.4/bower_components/webcomponentsjs/ShadowDOM.js |
diff --git a/polymer_0.5.0/bower_components/webcomponentsjs/ShadowDOM.js b/polymer_0.5.4/bower_components/webcomponentsjs/ShadowDOM.js |
similarity index 98% |
copy from polymer_0.5.0/bower_components/webcomponentsjs/ShadowDOM.js |
copy to polymer_0.5.4/bower_components/webcomponentsjs/ShadowDOM.js |
index 1a65017e8eaf1e21e8d2ac8ea6c6554e442fd3f7..f3b604c104798028b14096ffb32bc0ec51e43fa6 100644 |
--- a/polymer_0.5.0/bower_components/webcomponentsjs/ShadowDOM.js |
+++ b/polymer_0.5.4/bower_components/webcomponentsjs/ShadowDOM.js |
@@ -7,7 +7,7 @@ |
* Code distributed by Google as part of the polymer project is also |
* subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt |
*/ |
-// @version 0.5.1-1 |
+// @version 0.5.4 |
if (typeof WeakMap === "undefined") { |
(function() { |
var defineProperty = Object.defineProperty; |
@@ -1959,7 +1959,7 @@ window.ShadowDOMPolyfill = {}; |
for (var i = 0, n; i < nodes.length; i++) { |
n = nodes[i]; |
if (n.nodeType === Node.TEXT_NODE) { |
- if (!modNode && !n.data.length) this.removeNode(n); else if (!modNode) modNode = n; else { |
+ if (!modNode && !n.data.length) this.removeChild(n); else if (!modNode) modNode = n; else { |
s += n.data; |
remNodes.push(n); |
} |
@@ -2299,44 +2299,46 @@ window.ShadowDOMPolyfill = {}; |
(function(scope) { |
"use strict"; |
- var setWrapper = scope.setWrapper; |
var unsafeUnwrap = scope.unsafeUnwrap; |
+ var enqueueMutation = scope.enqueueMutation; |
+ function getClass(el) { |
+ return unsafeUnwrap(el).getAttribute("class"); |
+ } |
+ function enqueueClassAttributeChange(el, oldValue) { |
+ enqueueMutation(el, "attributes", { |
+ name: "class", |
+ namespace: null, |
+ oldValue: oldValue |
+ }); |
+ } |
function invalidateClass(el) { |
scope.invalidateRendererBasedOnAttribute(el, "class"); |
} |
- function DOMTokenList(impl, ownerElement) { |
- setWrapper(impl, this); |
- this.ownerElement_ = ownerElement; |
- } |
- DOMTokenList.prototype = { |
- constructor: DOMTokenList, |
- get length() { |
- return unsafeUnwrap(this).length; |
- }, |
- item: function(index) { |
- return unsafeUnwrap(this).item(index); |
- }, |
- contains: function(token) { |
- return unsafeUnwrap(this).contains(token); |
- }, |
- add: function() { |
- unsafeUnwrap(this).add.apply(unsafeUnwrap(this), arguments); |
- invalidateClass(this.ownerElement_); |
- }, |
- remove: function() { |
- unsafeUnwrap(this).remove.apply(unsafeUnwrap(this), arguments); |
- invalidateClass(this.ownerElement_); |
- }, |
- toggle: function(token) { |
- var rv = unsafeUnwrap(this).toggle.apply(unsafeUnwrap(this), arguments); |
- invalidateClass(this.ownerElement_); |
- return rv; |
- }, |
- toString: function() { |
- return unsafeUnwrap(this).toString(); |
+ function changeClass(tokenList, method, args) { |
+ var ownerElement = tokenList.ownerElement_; |
+ if (ownerElement == null) { |
+ return method.apply(tokenList, args); |
+ } |
+ var oldValue = getClass(ownerElement); |
+ var retv = method.apply(tokenList, args); |
+ if (getClass(ownerElement) !== oldValue) { |
+ enqueueClassAttributeChange(ownerElement, oldValue); |
+ invalidateClass(ownerElement); |
} |
+ return retv; |
+ } |
+ var oldAdd = DOMTokenList.prototype.add; |
+ DOMTokenList.prototype.add = function() { |
+ changeClass(this, oldAdd, arguments); |
+ }; |
+ var oldRemove = DOMTokenList.prototype.remove; |
+ DOMTokenList.prototype.remove = function() { |
+ changeClass(this, oldRemove, arguments); |
+ }; |
+ var oldToggle = DOMTokenList.prototype.toggle; |
+ DOMTokenList.prototype.toggle = function() { |
+ return changeClass(this, oldToggle, arguments); |
}; |
- scope.wrappers.DOMTokenList = DOMTokenList; |
})(window.ShadowDOMPolyfill); |
(function(scope) { |
@@ -2344,7 +2346,6 @@ window.ShadowDOMPolyfill = {}; |
var ChildNodeInterface = scope.ChildNodeInterface; |
var GetElementsByInterface = scope.GetElementsByInterface; |
var Node = scope.wrappers.Node; |
- var DOMTokenList = scope.wrappers.DOMTokenList; |
var ParentNodeInterface = scope.ParentNodeInterface; |
var SelectorsInterface = scope.SelectorsInterface; |
var addWrapNodeListMethod = scope.addWrapNodeListMethod; |
@@ -2407,7 +2408,9 @@ window.ShadowDOMPolyfill = {}; |
get classList() { |
var list = classListTable.get(this); |
if (!list) { |
- classListTable.set(this, list = new DOMTokenList(unsafeUnwrap(this).classList, this)); |
+ list = unsafeUnwrap(this).classList; |
+ list.ownerElement_ = this; |
+ classListTable.set(this, list); |
} |
return list; |
}, |
@@ -4011,7 +4014,8 @@ window.ShadowDOMPolyfill = {}; |
}; |
forwardMethodsToWrapper([ window.HTMLDocument || window.Document ], [ "registerElement" ]); |
} |
- forwardMethodsToWrapper([ window.HTMLBodyElement, window.HTMLDocument || window.Document, window.HTMLHeadElement, window.HTMLHtmlElement ], [ "appendChild", "compareDocumentPosition", "contains", "getElementsByClassName", "getElementsByTagName", "getElementsByTagNameNS", "insertBefore", "querySelector", "querySelectorAll", "removeChild", "replaceChild" ].concat(matchesNames)); |
+ forwardMethodsToWrapper([ window.HTMLBodyElement, window.HTMLDocument || window.Document, window.HTMLHeadElement, window.HTMLHtmlElement ], [ "appendChild", "compareDocumentPosition", "contains", "getElementsByClassName", "getElementsByTagName", "getElementsByTagNameNS", "insertBefore", "querySelector", "querySelectorAll", "removeChild", "replaceChild" ]); |
+ forwardMethodsToWrapper([ window.HTMLBodyElement, window.HTMLHeadElement, window.HTMLHtmlElement ], matchesNames); |
forwardMethodsToWrapper([ window.HTMLDocument || window.Document ], [ "adoptNode", "importNode", "contains", "createComment", "createDocumentFragment", "createElement", "createElementNS", "createEvent", "createEventNS", "createRange", "createTextNode", "elementFromPoint", "getElementById", "getElementsByName", "getSelection" ]); |
mixin(Document.prototype, GetElementsByInterface); |
mixin(Document.prototype, ParentNodeInterface); |