| Index: third_party/polymer/v1_0/components/polymer/polymer-mini.html
|
| diff --git a/third_party/polymer/v1_0/components/polymer/polymer-mini.html b/third_party/polymer/v1_0/components/polymer/polymer-mini.html
|
| index 533db50e6198bb187067e59b483e5bd2fdcdf3f6..de29af0a444bed18af2320449daf69fa004b9845 100644
|
| --- a/third_party/polymer/v1_0/components/polymer/polymer-mini.html
|
| +++ b/third_party/polymer/v1_0/components/polymer/polymer-mini.html
|
| @@ -11,13 +11,6 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
|
| <script>Polymer.Base._addFeature({
|
| _prepTemplate: function () {
|
| this._template = this._template || Polymer.DomModule.import(this.is, 'template');
|
| -if (!this._template) {
|
| -var script = document._currentScript || document.currentScript;
|
| -var prev = script && script.previousElementSibling;
|
| -if (prev && prev.localName === 'template') {
|
| -this._template = prev;
|
| -}
|
| -}
|
| if (this._template && this._template.hasAttribute('is')) {
|
| this._warn(this._logf('_prepTemplate', 'top-level Polymer template ' + 'must not be a type-extension, found', this._template, 'Move inside simple <template>.'));
|
| }
|
| @@ -433,6 +426,8 @@ var getInnerHTML = Polymer.domInnerHTML.getInnerHTML;
|
| var nativeInsertBefore = Element.prototype.insertBefore;
|
| var nativeRemoveChild = Element.prototype.removeChild;
|
| var nativeAppendChild = Element.prototype.appendChild;
|
| +var nativeCloneNode = Element.prototype.cloneNode;
|
| +var nativeImportNode = Document.prototype.importNode;
|
| var dirtyRoots = [];
|
| var DomApi = function (node) {
|
| this.node = node;
|
| @@ -456,20 +451,17 @@ dirtyRoots.push(host);
|
| }
|
| },
|
| appendChild: function (node) {
|
| -var distributed;
|
| -this._removeNodeFromHost(node);
|
| +var handled;
|
| +this._removeNodeFromHost(node, true);
|
| if (this._nodeIsInLogicalTree(this.node)) {
|
| -var host = this._hostForNode(this.node);
|
| -this._addLogicalInfo(node, this.node, host && host.shadyRoot);
|
| +this._addLogicalInfo(node, this.node);
|
| this._addNodeToHost(node);
|
| -if (host) {
|
| -distributed = this._maybeDistribute(node, this.node, host);
|
| -}
|
| +handled = this._maybeDistribute(node, this.node);
|
| }
|
| -if (!distributed && !this._tryRemoveUndistributedNode(node)) {
|
| +if (!handled && !this._tryRemoveUndistributedNode(node)) {
|
| var container = this.node._isShadyRoot ? this.node.host : this.node;
|
| -nativeAppendChild.call(container, node);
|
| addToComposedParent(container, node);
|
| +nativeAppendChild.call(container, node);
|
| }
|
| return node;
|
| },
|
| @@ -477,8 +469,8 @@ insertBefore: function (node, ref_node) {
|
| if (!ref_node) {
|
| return this.appendChild(node);
|
| }
|
| -var distributed;
|
| -this._removeNodeFromHost(node);
|
| +var handled;
|
| +this._removeNodeFromHost(node, true);
|
| if (this._nodeIsInLogicalTree(this.node)) {
|
| saveLightChildrenIfNeeded(this.node);
|
| var children = this.childNodes;
|
| @@ -486,18 +478,15 @@ var index = children.indexOf(ref_node);
|
| if (index < 0) {
|
| throw Error('The ref_node to be inserted before is not a child ' + 'of this node');
|
| }
|
| -var host = this._hostForNode(this.node);
|
| -this._addLogicalInfo(node, this.node, host && host.shadyRoot, index);
|
| +this._addLogicalInfo(node, this.node, index);
|
| this._addNodeToHost(node);
|
| -if (host) {
|
| -distributed = this._maybeDistribute(node, this.node, host);
|
| +handled = this._maybeDistribute(node, this.node);
|
| }
|
| -}
|
| -if (!distributed && !this._tryRemoveUndistributedNode(node)) {
|
| +if (!handled && !this._tryRemoveUndistributedNode(node)) {
|
| ref_node = ref_node.localName === CONTENT ? this._firstComposedNode(ref_node) : ref_node;
|
| var container = this.node._isShadyRoot ? this.node.host : this.node;
|
| -nativeInsertBefore.call(container, node, ref_node);
|
| addToComposedParent(container, node, ref_node);
|
| +nativeInsertBefore.call(container, node, ref_node);
|
| }
|
| return node;
|
| },
|
| @@ -505,17 +494,16 @@ removeChild: function (node) {
|
| if (factory(node).parentNode !== this.node) {
|
| console.warn('The node to be removed is not a child of this node', node);
|
| }
|
| -var distributed;
|
| +var handled;
|
| if (this._nodeIsInLogicalTree(this.node)) {
|
| -var host = this._hostForNode(this.node);
|
| -distributed = this._maybeDistribute(node, this.node, host);
|
| this._removeNodeFromHost(node);
|
| +handled = this._maybeDistribute(node, this.node);
|
| }
|
| -if (!distributed) {
|
| +if (!handled) {
|
| var container = this.node._isShadyRoot ? this.node.host : this.node;
|
| if (container === node.parentNode) {
|
| -nativeRemoveChild.call(container, node);
|
| removeFromComposedParent(container, node);
|
| +nativeRemoveChild.call(container, node);
|
| }
|
| }
|
| return node;
|
| @@ -548,21 +536,28 @@ node._ownerShadyRoot = root;
|
| }
|
| return node._ownerShadyRoot;
|
| },
|
| -_maybeDistribute: function (node, parent, host) {
|
| -var nodeNeedsDistribute = this._nodeNeedsDistribution(node);
|
| -var distribute = this._parentNeedsDistribution(parent) || nodeNeedsDistribute;
|
| -if (nodeNeedsDistribute) {
|
| +_maybeDistribute: function (node, parent) {
|
| +var fragContent = node.nodeType === Node.DOCUMENT_FRAGMENT_NODE && !node.__noContent && Polymer.dom(node).querySelector(CONTENT);
|
| +var wrappedContent = fragContent && Polymer.dom(fragContent).parentNode.nodeType !== Node.DOCUMENT_FRAGMENT_NODE;
|
| +var hasContent = fragContent || node.localName === CONTENT;
|
| +if (hasContent) {
|
| +var root = this._ownerShadyRootForNode(parent);
|
| +if (root) {
|
| +var host = root.host;
|
| this._updateInsertionPoints(host);
|
| -}
|
| -if (distribute) {
|
| this._lazyDistribute(host);
|
| }
|
| -return distribute;
|
| +}
|
| +var parentNeedsDist = this._parentNeedsDistribution(parent);
|
| +if (parentNeedsDist) {
|
| +this._lazyDistribute(parent);
|
| +}
|
| +return parentNeedsDist || hasContent && !wrappedContent;
|
| },
|
| _tryRemoveUndistributedNode: function (node) {
|
| if (this.node.shadyRoot) {
|
| -if (node.parentNode) {
|
| -nativeRemoveChild.call(node.parentNode, node);
|
| +if (node._composedParent) {
|
| +nativeRemoveChild.call(node._composedParent, node);
|
| }
|
| return true;
|
| }
|
| @@ -571,27 +566,58 @@ _updateInsertionPoints: function (host) {
|
| host.shadyRoot._insertionPoints = factory(host.shadyRoot).querySelectorAll(CONTENT);
|
| },
|
| _nodeIsInLogicalTree: function (node) {
|
| -return Boolean(node._lightParent || node._isShadyRoot || this._ownerShadyRootForNode(node) || node.shadyRoot);
|
| -},
|
| -_hostForNode: function (node) {
|
| -var root = node.shadyRoot || (node._isShadyRoot ? node : this._ownerShadyRootForNode(node));
|
| -return root && root.host;
|
| +return Boolean(node._lightParent !== undefined || node._isShadyRoot || this._ownerShadyRootForNode(node) || node.shadyRoot);
|
| },
|
| _parentNeedsDistribution: function (parent) {
|
| return parent && parent.shadyRoot && hasInsertionPoint(parent.shadyRoot);
|
| },
|
| -_nodeNeedsDistribution: function (node) {
|
| -return node.localName === CONTENT || node.nodeType === Node.DOCUMENT_FRAGMENT_NODE && node.querySelector(CONTENT);
|
| -},
|
| -_removeNodeFromHost: function (node) {
|
| -if (node._lightParent) {
|
| -var root = this._ownerShadyRootForNode(node);
|
| +_removeNodeFromHost: function (node, ensureComposedRemoval) {
|
| +var hostNeedsDist;
|
| +var root;
|
| +var parent = node._lightParent;
|
| +if (parent) {
|
| +root = this._ownerShadyRootForNode(node);
|
| if (root) {
|
| root.host._elementRemove(node);
|
| +hostNeedsDist = this._removeDistributedChildren(root, node);
|
| }
|
| this._removeLogicalInfo(node, node._lightParent);
|
| }
|
| this._removeOwnerShadyRoot(node);
|
| +if (root && hostNeedsDist) {
|
| +this._updateInsertionPoints(root.host);
|
| +this._lazyDistribute(root.host);
|
| +} else if (ensureComposedRemoval) {
|
| +removeFromComposedParent(parent || node.parentNode, node);
|
| +}
|
| +},
|
| +_removeDistributedChildren: function (root, container) {
|
| +var hostNeedsDist;
|
| +var ip$ = root._insertionPoints;
|
| +for (var i = 0; i < ip$.length; i++) {
|
| +var content = ip$[i];
|
| +if (this._contains(container, content)) {
|
| +var dc$ = factory(content).getDistributedNodes();
|
| +for (var j = 0; j < dc$.length; j++) {
|
| +hostNeedsDist = true;
|
| +var node = dc$[j];
|
| +var parent = node.parentNode;
|
| +if (parent) {
|
| +removeFromComposedParent(parent, node);
|
| +nativeRemoveChild.call(parent, node);
|
| +}
|
| +}
|
| +}
|
| +}
|
| +return hostNeedsDist;
|
| +},
|
| +_contains: function (container, node) {
|
| +while (node) {
|
| +if (node == container) {
|
| +return true;
|
| +}
|
| +node = factory(node).parentNode;
|
| +}
|
| },
|
| _addNodeToHost: function (node) {
|
| var checkNode = node.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? node.firstChild : node;
|
| @@ -600,7 +626,7 @@ if (root) {
|
| root.host._elementAdd(node);
|
| }
|
| },
|
| -_addLogicalInfo: function (node, container, root, index) {
|
| +_addLogicalInfo: function (node, container, index) {
|
| saveLightChildrenIfNeeded(container);
|
| var children = factory(container).childNodes;
|
| index = index === undefined ? children.length : index;
|
| @@ -713,6 +739,31 @@ _distributeParent: function () {
|
| if (this._parentNeedsDistribution(this.parentNode)) {
|
| this._lazyDistribute(this.parentNode);
|
| }
|
| +},
|
| +cloneNode: function (deep) {
|
| +var n = nativeCloneNode.call(this.node, false);
|
| +if (deep) {
|
| +var c$ = this.childNodes;
|
| +var d = factory(n);
|
| +for (var i = 0, nc; i < c$.length; i++) {
|
| +nc = factory(c$[i]).cloneNode(true);
|
| +d.appendChild(nc);
|
| +}
|
| +}
|
| +return n;
|
| +},
|
| +importNode: function (externalNode, deep) {
|
| +var doc = this.node instanceof Document ? this.node : this.node.ownerDocument;
|
| +var n = nativeImportNode.call(doc, externalNode, false);
|
| +if (deep) {
|
| +var c$ = factory(externalNode).childNodes;
|
| +var d = factory(n);
|
| +for (var i = 0, nc; i < c$.length; i++) {
|
| +nc = factory(doc).importNode(c$[i], true);
|
| +d.appendChild(nc);
|
| +}
|
| +}
|
| +return n;
|
| }
|
| };
|
| Object.defineProperty(DomApi.prototype, 'classList', {
|
| @@ -740,6 +791,9 @@ this.domApi._distributeParent();
|
| toggle: function () {
|
| this.node.classList.toggle.apply(this.node.classList, arguments);
|
| this.domApi._distributeParent();
|
| +},
|
| +contains: function () {
|
| +return this.node.classList.contains.apply(this.node.classList, arguments);
|
| }
|
| };
|
| if (!Settings.useShadow) {
|
| @@ -858,8 +912,9 @@ if (this.node.nodeType !== Node.TEXT_NODE) {
|
| this._clear();
|
| var d = document.createElement('div');
|
| d.innerHTML = text;
|
| -for (var e = d.firstChild; e; e = e.nextSibling) {
|
| -this.appendChild(e);
|
| +var c$ = Array.prototype.slice.call(d.childNodes);
|
| +for (var i = 0; i < c$.length; i++) {
|
| +this.appendChild(c$[i]);
|
| }
|
| }
|
| },
|
| @@ -882,12 +937,19 @@ return n;
|
| n = n.parentNode;
|
| }
|
| };
|
| +DomApi.prototype.cloneNode = function (deep) {
|
| +return this.node.cloneNode(deep);
|
| +};
|
| +DomApi.prototype.importNode = function (externalNode, deep) {
|
| +var doc = this.node instanceof Document ? this.node : this.node.ownerDocument;
|
| +return doc.importNode(externalNode, deep);
|
| +};
|
| DomApi.prototype.getDestinationInsertionPoints = function () {
|
| -var n$ = this.node.getDestinationInsertionPoints();
|
| +var n$ = this.node.getDestinationInsertionPoints && this.node.getDestinationInsertionPoints();
|
| return n$ ? Array.prototype.slice.call(n$) : [];
|
| };
|
| DomApi.prototype.getDistributedNodes = function () {
|
| -var n$ = this.node.getDistributedNodes();
|
| +var n$ = this.node.getDistributedNodes && this.node.getDistributedNodes();
|
| return n$ ? Array.prototype.slice.call(n$) : [];
|
| };
|
| DomApi.prototype._distributeParent = function () {
|
| @@ -975,20 +1037,17 @@ var children = getComposedChildren(parent);
|
| var i = ref_node ? children.indexOf(ref_node) : -1;
|
| if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
|
| var fragChildren = getComposedChildren(node);
|
| -fragChildren.forEach(function (c) {
|
| -addNodeToComposedChildren(c, parent, children, i);
|
| -});
|
| +for (var j = 0; j < fragChildren.length; j++) {
|
| +addNodeToComposedChildren(fragChildren[j], parent, children, i + j);
|
| +}
|
| +node._composedChildren = null;
|
| } else {
|
| addNodeToComposedChildren(node, parent, children, i);
|
| }
|
| }
|
| function addNodeToComposedChildren(node, parent, children, i) {
|
| node._composedParent = parent;
|
| -if (i >= 0) {
|
| -children.splice(i, 0, node);
|
| -} else {
|
| -children.push(node);
|
| -}
|
| +children.splice(i >= 0 ? i : children.length, 0, node);
|
| }
|
| function removeFromComposedParent(parent, node) {
|
| node._composedParent = null;
|
| @@ -1029,9 +1088,6 @@ factory: factory
|
| Polymer.Base._addFeature({
|
| _prepShady: function () {
|
| this._useContent = this._useContent || Boolean(this._template);
|
| -if (this._useContent) {
|
| -this._template._hasInsertionPoint = this._template.content.querySelector('content');
|
| -}
|
| },
|
| _poolContent: function () {
|
| if (this._useContent) {
|
| @@ -1051,7 +1107,7 @@ this.shadyRoot = this.root;
|
| this.shadyRoot._distributionClean = false;
|
| this.shadyRoot._isShadyRoot = true;
|
| this.shadyRoot._dirtyRoots = [];
|
| -this.shadyRoot._insertionPoints = this._template._hasInsertionPoint ? this.shadyRoot.querySelectorAll('content') : [];
|
| +this.shadyRoot._insertionPoints = !this._notes || this._notes._hasContent ? this.shadyRoot.querySelectorAll('content') : [];
|
| saveLightChildrenIfNeeded(this.shadyRoot);
|
| this.shadyRoot.host = this;
|
| },
|
| @@ -1059,10 +1115,14 @@ get domHost() {
|
| var root = Polymer.dom(this).getOwnerRoot();
|
| return root && root.host;
|
| },
|
| -distributeContent: function () {
|
| +distributeContent: function (updateInsertionPoints) {
|
| if (this.shadyRoot) {
|
| +var dom = Polymer.dom(this);
|
| +if (updateInsertionPoints) {
|
| +dom._updateInsertionPoints(this);
|
| +}
|
| var host = getTopDistributingHost(this);
|
| -Polymer.dom(this)._lazyDistribute(host);
|
| +dom._lazyDistribute(host);
|
| }
|
| },
|
| _distributeContent: function () {
|
| @@ -1092,6 +1152,7 @@ this._composeTree();
|
| } else {
|
| if (!this.shadyRoot._hasDistributed) {
|
| this.textContent = '';
|
| +this._composedChildren = null;
|
| this.appendChild(this.shadyRoot);
|
| } else {
|
| var children = this._composeNode(this);
|
| @@ -1251,6 +1312,7 @@ points.push(insertionPoint);
|
| }
|
| function clearDistributedDestinationInsertionPoints(content) {
|
| var e$ = content._distributedNodes;
|
| +if (e$) {
|
| for (var i = 0; i < e$.length; i++) {
|
| var d = e$[i]._destinationInsertionPoints;
|
| if (d) {
|
| @@ -1258,6 +1320,7 @@ d.splice(d.indexOf(content) + 1, d.length);
|
| }
|
| }
|
| }
|
| +}
|
| function maybeRedistributeParent(content, host) {
|
| var parent = content._lightParent;
|
| if (parent && parent.shadyRoot && hasInsertionPoint(parent.shadyRoot) && parent.shadyRoot._distributionClean) {
|
| @@ -1344,7 +1407,6 @@ _registerFeatures: function () {
|
| this._prepIs();
|
| this._prepAttributes();
|
| this._prepBehaviors();
|
| -this._prepExtends();
|
| this._prepConstructor();
|
| this._prepTemplate();
|
| this._prepShady();
|
|
|