diff --git a/dashboard-ui/bower_components/polymer/polymer-micro.html b/dashboard-ui/bower_components/polymer/polymer-micro.html index 8ff14b9786..caad8448e8 100644 --- a/dashboard-ui/bower_components/polymer/polymer-micro.html +++ b/dashboard-ui/bower_components/polymer/polymer-micro.html @@ -59,7 +59,11 @@ document.registerElement(prototype.is, options); return ctor; }; var desugar = function (prototype) { -prototype = Polymer.Base.chainObject(prototype, Polymer.Base); +var base = Polymer.Base; +if (prototype.extends) { +base = Polymer.Base._getExtendedPrototype(prototype.extends); +} +prototype = Polymer.Base.chainObject(prototype, base); prototype.registerCallback(); return prototype.constructor; }; @@ -92,6 +96,7 @@ return (document._currentScript || document.currentScript).ownerDocument; } }); Polymer.Base = { +__isPolymerInstance__: true, _addFeature: function (feature) { this.extend(this, feature); }, @@ -161,6 +166,16 @@ object.__proto__ = inherited; return object; }; Polymer.Base = Polymer.Base.chainObject(Polymer.Base, HTMLElement.prototype); +if (window.CustomElements) { +Polymer.instanceof = CustomElements.instanceof; +} else { +Polymer.instanceof = function (obj, ctor) { +return obj instanceof ctor; +}; +} +Polymer.isInstance = function (obj) { +return Boolean(obj && obj.__isPolymerInstance__); +}; Polymer.telemetry.instanceCount = 0; (function () { var modules = {}; @@ -289,11 +304,6 @@ this._marshalBehavior(this); } }); Polymer.Base._addFeature({ -_prepExtends: function () { -if (this.extends) { -this.__proto__ = this._getExtendedPrototype(this.extends); -} -}, _getExtendedPrototype: function (tag) { return this._getExtendedNativePrototype(tag); }, @@ -506,13 +516,12 @@ debouncer.stop(); } } }); -Polymer.version = '1.0.6'; +Polymer.version = '1.0.7'; Polymer.Base._addFeature({ _registerFeatures: function () { this._prepIs(); this._prepAttributes(); this._prepBehaviors(); -this._prepExtends(); this._prepConstructor(); }, _prepBehavior: function (b) { diff --git a/dashboard-ui/bower_components/polymer/polymer-mini.html b/dashboard-ui/bower_components/polymer/polymer-mini.html index 3b6aa690b7..de29af0a44 100644 --- a/dashboard-ui/bower_components/polymer/polymer-mini.html +++ b/dashboard-ui/bower_components/polymer/polymer-mini.html @@ -753,7 +753,7 @@ d.appendChild(nc); return n; }, importNode: function (externalNode, deep) { -var doc = this.node instanceof HTMLDocument ? this.node : this.node.ownerDocument; +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; @@ -941,15 +941,15 @@ DomApi.prototype.cloneNode = function (deep) { return this.node.cloneNode(deep); }; DomApi.prototype.importNode = function (externalNode, deep) { -var doc = this.node instanceof HTMLDocument ? this.node : this.node.ownerDocument; +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 () { @@ -1407,7 +1407,6 @@ _registerFeatures: function () { this._prepIs(); this._prepAttributes(); this._prepBehaviors(); -this._prepExtends(); this._prepConstructor(); this._prepTemplate(); this._prepShady(); diff --git a/dashboard-ui/bower_components/polymer/polymer.html b/dashboard-ui/bower_components/polymer/polymer.html index 05d3db7f42..89e28a32df 100644 --- a/dashboard-ui/bower_components/polymer/polymer.html +++ b/dashboard-ui/bower_components/polymer/polymer.html @@ -75,6 +75,14 @@ for (var i = 0, node = root.firstChild; node; node = node.nextSibling, i++) { if (node.localName === 'template' && !node.hasAttribute('preserve-content')) { this._parseTemplate(node, i, list, annote); } +if (node.nodeType === Node.TEXT_NODE) { +var n = node.nextSibling; +while (n && n.nodeType === Node.TEXT_NODE) { +node.textContent += n.textContent; +root.removeChild(n); +n = n.nextSibling; +} +} var childAnnotation = this._parseNodeAnnotations(node, list, callback); if (childAnnotation) { childAnnotation.parent = annote; @@ -568,8 +576,7 @@ prevent = dy > dx; prevent = dx > dy; } if (prevent) { -//This breaks scrolling in safari -//ev.preventDefault(); +ev.preventDefault(); } } }, @@ -1042,7 +1049,8 @@ Polymer.dom(toElement).setAttribute(name, ''); } }, getContentChildNodes: function (slctr) { -return Polymer.dom(Polymer.dom(this.root).querySelector(slctr || 'content')).getDistributedNodes(); +var content = Polymer.dom(this.root).querySelector(slctr || 'content'); +return content ? Polymer.dom(content).getDistributedNodes() : []; }, getContentChildren: function (slctr) { return this.getContentChildNodes(slctr).filter(function (n) { @@ -2046,9 +2054,11 @@ this.forEachStyleRule(rules, callback); return this.parser.stringify(rules, preserveProperties); }, forRulesInStyles: function (styles, callback) { +if (styles) { for (var i = 0, l = styles.length, s; i < l && (s = styles[i]); i++) { this.forEachStyleRule(this.rulesForStyle(s), callback); } +} }, rulesForStyle: function (style) { if (!style.__cssRules && style.textContent) { @@ -2827,8 +2837,18 @@ if (!this._scopeSelector && this._needsStyleProperties()) { this._updateStyleProperties(); } }, +_findStyleHost: function () { +var e = this, root; +while (root = Polymer.dom(e).getOwnerRoot()) { +if (Polymer.isInstance(root.host)) { +return root.host; +} +e = root.host; +} +return styleDefaults; +}, _updateStyleProperties: function () { -var info, scope = this.domHost || styleDefaults; +var info, scope = this._findStyleHost(); if (!scope._styleCache) { scope._styleCache = new Polymer.StyleCache(); } @@ -2863,7 +2883,7 @@ styleCache.store(this.is, Object.create(info), this._ownStyleProperties, this._s } }, _computeStyleProperties: function (scopeProps) { -var scope = this.domHost || styleDefaults; +var scope = this._findStyleHost(); if (!scope._styleProperties) { scope._computeStyleProperties(); } @@ -2896,7 +2916,7 @@ return style; }, serializeValueToAttribute: function (value, attribute, node) { node = node || this; -if (attribute === 'class') { +if (attribute === 'class' && !nativeShadow) { var host = node === this ? this.domHost || this.dataHost : this; if (host) { value = host._scopeElementClass(node, value); @@ -2952,7 +2972,6 @@ Polymer.Base._addFeature({ _registerFeatures: function () { this._prepIs(); this._prepAttributes(); -this._prepExtends(); this._prepConstructor(); this._prepTemplate(); this._prepStyles(); @@ -3422,19 +3441,18 @@ delay: Number }, behaviors: [Polymer.Templatizer], observers: ['_itemsChanged(items.*)'], +created: function () { +this._instances = []; +}, detached: function () { -if (this.rows) { -for (var i = 0; i < this.rows.length; i++) { +for (var i = 0; i < this._instances.length; i++) { this._detachRow(i); } -} }, attached: function () { -if (this.rows) { var parentNode = Polymer.dom(this).parentNode; -for (var i = 0; i < this.rows.length; i++) { -Polymer.dom(parentNode).insertBefore(this.rows[i].root, this); -} +for (var i = 0; i < this._instances.length; i++) { +Polymer.dom(parentNode).insertBefore(this._instances[i].root, this); } }, ready: function () { @@ -3451,7 +3469,7 @@ var sort = this.sort; this._sortFn = sort && (typeof sort == 'function' ? sort : function () { return dataHost[sort].apply(dataHost, arguments); }); -this._fullRefresh = true; +this._needFullRefresh = true; if (this.items) { this._debounceTemplate(this._render); } @@ -3462,7 +3480,7 @@ var filter = this.filter; this._filterFn = filter && (typeof filter == 'function' ? filter : function () { return dataHost[filter].apply(dataHost, arguments); }); -this._fullRefresh = true; +this._needFullRefresh = true; if (this.items) { this._debounceTemplate(this._render); } @@ -3480,7 +3498,7 @@ this.collection = null; this._error(this._logf('dom-repeat', 'expected array for `items`,' + ' found', this.items)); } this._splices = []; -this._fullRefresh = true; +this._needFullRefresh = true; this._debounceTemplate(this._render); } else if (change.path == 'items.splices') { this._splices = this._splices.concat(change.value.keySplices); @@ -3497,7 +3515,7 @@ path = path.substring(path.indexOf('.') + 1); var paths = this._observePaths; for (var i = 0; i < paths.length; i++) { if (path.indexOf(paths[i]) === 0) { -this._fullRefresh = true; +this._needFullRefresh = true; if (this.delay) { this.debounce('render', this._render, this.delay); } else { @@ -3509,102 +3527,111 @@ return; } }, render: function () { -this._fullRefresh = true; +this._needFullRefresh = true; this._debounceTemplate(this._render); this._flushTemplates(); }, _render: function () { var c = this.collection; -if (!this._fullRefresh) { +if (this._needFullRefresh) { +this._applyFullRefresh(); +this._needFullRefresh = false; +} else { if (this._sortFn) { -this._applySplicesViewSort(this._splices); +this._applySplicesUserSort(this._splices); } else { if (this._filterFn) { -this._fullRefresh = true; +this._applyFullRefresh(); } else { -this._applySplicesArraySort(this._splices); +this._applySplicesArrayOrder(this._splices); } } } -if (this._fullRefresh) { -this._sortAndFilter(); -this._fullRefresh = false; -} this._splices = []; -var rowForKey = this._rowForKey = {}; -var keys = this._orderedKeys; -this.rows = this.rows || []; -for (var i = 0; i < keys.length; i++) { -var key = keys[i]; -var item = c.getItem(key); -var row = this.rows[i]; -rowForKey[key] = i; -if (!row) { -this.rows.push(row = this._insertRow(i, null, item)); +var keyToIdx = this._keyToInstIdx = {}; +for (var i = 0; i < this._instances.length; i++) { +var inst = this._instances[i]; +keyToIdx[inst.__key__] = i; +inst.__setProperty(this.indexAs, i, true); } -row.__setProperty(this.as, item, true); -row.__setProperty('__key__', key, true); -row.__setProperty(this.indexAs, i, true); -} -for (; i < this.rows.length; i++) { -this._detachRow(i); -} -this.rows.splice(keys.length, this.rows.length - keys.length); this.fire('dom-change'); }, -_sortAndFilter: function () { +_applyFullRefresh: function () { var c = this.collection; -if (!this._sortFn) { -this._orderedKeys = []; +var keys; +if (this._sortFn) { +keys = c ? c.getKeys() : []; +} else { +keys = []; var items = this.items; if (items) { for (var i = 0; i < items.length; i++) { -this._orderedKeys.push(c.getKey(items[i])); +keys.push(c.getKey(items[i])); } } -} else { -this._orderedKeys = c ? c.getKeys() : []; } if (this._filterFn) { -this._orderedKeys = this._orderedKeys.filter(function (a) { +keys = keys.filter(function (a) { return this._filterFn(c.getItem(a)); }, this); } if (this._sortFn) { -this._orderedKeys.sort(function (a, b) { +keys.sort(function (a, b) { return this._sortFn(c.getItem(a), c.getItem(b)); }.bind(this)); } +for (var i = 0; i < keys.length; i++) { +var key = keys[i]; +var inst = this._instances[i]; +if (inst) { +inst.__setProperty('__key__', key, true); +inst.__setProperty(this.as, c.getItem(key), true); +} else { +this._instances.push(this._insertRow(i, key)); +} +} +for (; i < this._instances.length; i++) { +this._detachRow(i); +} +this._instances.splice(keys.length, this._instances.length - keys.length); }, _keySort: function (a, b) { return this.collection.getKey(a) - this.collection.getKey(b); }, -_applySplicesViewSort: function (splices) { +_applySplicesUserSort: function (splices) { var c = this.collection; -var keys = this._orderedKeys; -var rows = this.rows; -var removedRows = []; -var addedKeys = []; +var instances = this._instances; +var keyMap = {}; var pool = []; var sortFn = this._sortFn || this._keySort.bind(this); splices.forEach(function (s) { for (var i = 0; i < s.removed.length; i++) { -var idx = this._rowForKey[s.removed[i]]; -if (idx != null) { -removedRows.push(idx); -} +var key = s.removed[i]; +keyMap[key] = keyMap[key] ? null : -1; } for (var i = 0; i < s.added.length; i++) { -addedKeys.push(s.added[i]); +var key = s.added[i]; +keyMap[key] = keyMap[key] ? null : 1; } }, this); -if (removedRows.length) { -removedRows.sort(); -for (var i = removedRows.length - 1; i >= 0; i--) { -var idx = removedRows[i]; +var removedIdxs = []; +var addedKeys = []; +for (var key in keyMap) { +if (keyMap[key] === -1) { +removedIdxs.push(this._keyToInstIdx[key]); +} +if (keyMap[key] === 1) { +addedKeys.push(key); +} +} +if (removedIdxs.length) { +removedIdxs.sort(); +for (var i = removedIdxs.length - 1; i >= 0; i--) { +var idx = removedIdxs[i]; +if (idx !== undefined) { pool.push(this._detachRow(idx)); -rows.splice(idx, 1); -keys.splice(idx, 1); +instances.splice(idx, 1); +} } } if (addedKeys.length) { @@ -3618,19 +3645,19 @@ return this._sortFn(c.getItem(a), c.getItem(b)); }.bind(this)); var start = 0; for (var i = 0; i < addedKeys.length; i++) { -start = this._insertRowIntoViewSort(start, addedKeys[i], pool); +start = this._insertRowUserSort(start, addedKeys[i], pool); } } }, -_insertRowIntoViewSort: function (start, key, pool) { +_insertRowUserSort: function (start, key, pool) { var c = this.collection; var item = c.getItem(key); -var end = this.rows.length - 1; +var end = this._instances.length - 1; var idx = -1; var sortFn = this._sortFn || this._keySort.bind(this); while (start <= end) { var mid = start + end >> 1; -var midKey = this._orderedKeys[mid]; +var midKey = this._instances[mid].__key__; var cmp = sortFn(c.getItem(midKey), item); if (cmp < 0) { start = mid + 1; @@ -3644,106 +3671,110 @@ break; if (idx < 0) { idx = end + 1; } -this._orderedKeys.splice(idx, 0, key); -this.rows.splice(idx, 0, this._insertRow(idx, pool, c.getItem(key))); +this._instances.splice(idx, 0, this._insertRow(idx, key, pool)); return idx; }, -_applySplicesArraySort: function (splices) { -var keys = this._orderedKeys; +_applySplicesArrayOrder: function (splices) { var pool = []; -splices.forEach(function (s) { -for (var i = 0; i < s.removed.length; i++) { -pool.push(this._detachRow(s.index + i)); -} -this.rows.splice(s.index, s.removed.length); -}, this); var c = this.collection; splices.forEach(function (s) { -var args = [ -s.index, -s.removed.length -].concat(s.added); -keys.splice.apply(keys, args); +for (var i = 0; i < s.removed.length; i++) { +var inst = this._detachRow(s.index + i); +if (!inst.isPlaceholder) { +pool.push(inst); +} +} +this._instances.splice(s.index, s.removed.length); for (var i = 0; i < s.added.length; i++) { -var item = c.getItem(s.added[i]); -var row = this._insertRow(s.index + i, pool, item); -this.rows.splice(s.index + i, 0, row); +var inst = { +isPlaceholder: true, +key: s.added[i] +}; +this._instances.splice(s.index + i, 0, inst); } }, this); +for (var i = this._instances.length - 1; i >= 0; i--) { +var inst = this._instances[i]; +if (inst.isPlaceholder) { +this._instances[i] = this._insertRow(i, inst.key, pool, true); +} +} }, _detachRow: function (idx) { -var row = this.rows[idx]; +var inst = this._instances[idx]; +if (!inst.isPlaceholder) { var parentNode = Polymer.dom(this).parentNode; -for (var i = 0; i < row._children.length; i++) { -var el = row._children[i]; -Polymer.dom(row.root).appendChild(el); +for (var i = 0; i < inst._children.length; i++) { +var el = inst._children[i]; +Polymer.dom(inst.root).appendChild(el); } -return row; +} +return inst; }, -_insertRow: function (idx, pool, item) { -var row = pool && pool.pop() || this._generateRow(idx, item); -var beforeRow = this.rows[idx]; +_insertRow: function (idx, key, pool, replace) { +var inst; +if (inst = pool && pool.pop()) { +inst.__setProperty(this.as, this.collection.getItem(key), true); +inst.__setProperty('__key__', key, true); +} else { +inst = this._generateRow(idx, key); +} +var beforeRow = this._instances[replace ? idx + 1 : idx]; var beforeNode = beforeRow ? beforeRow._children[0] : this; var parentNode = Polymer.dom(this).parentNode; -Polymer.dom(parentNode).insertBefore(row.root, beforeNode); -return row; +Polymer.dom(parentNode).insertBefore(inst.root, beforeNode); +return inst; }, -_generateRow: function (idx, item) { -var model = { __key__: this.collection.getKey(item) }; -model[this.as] = item; +_generateRow: function (idx, key) { +var model = { __key__: key }; +model[this.as] = this.collection.getItem(key); model[this.indexAs] = idx; -var row = this.stamp(model); -return row; +var inst = this.stamp(model); +return inst; }, _showHideChildren: function (hidden) { -if (this.rows) { -for (var i = 0; i < this.rows.length; i++) { -this.rows[i]._showHideChildren(hidden); -} +for (var i = 0; i < this._instances.length; i++) { +this._instances[i]._showHideChildren(hidden); } }, -_forwardInstanceProp: function (row, prop, value) { +_forwardInstanceProp: function (inst, prop, value) { if (prop == this.as) { var idx; if (this._sortFn || this._filterFn) { -idx = this.items.indexOf(this.collection.getItem(row.__key__)); +idx = this.items.indexOf(this.collection.getItem(inst.__key__)); } else { -idx = row[this.indexAs]; +idx = inst[this.indexAs]; } this.set('items.' + idx, value); } }, -_forwardInstancePath: function (row, path, value) { +_forwardInstancePath: function (inst, path, value) { if (path.indexOf(this.as + '.') === 0) { -this.notifyPath('items.' + row.__key__ + '.' + path.slice(this.as.length + 1), value); +this.notifyPath('items.' + inst.__key__ + '.' + path.slice(this.as.length + 1), value); } }, _forwardParentProp: function (prop, value) { -if (this.rows) { -this.rows.forEach(function (row) { -row.__setProperty(prop, value, true); +this._instances.forEach(function (inst) { +inst.__setProperty(prop, value, true); }, this); -} }, _forwardParentPath: function (path, value) { -if (this.rows) { -this.rows.forEach(function (row) { -row.notifyPath(path, value, true); +this._instances.forEach(function (inst) { +inst.notifyPath(path, value, true); }, this); -} }, _forwardItemPath: function (path, value) { -if (this._rowForKey) { +if (this._keyToInstIdx) { var dot = path.indexOf('.'); var key = path.substring(0, dot < 0 ? path.length : dot); -var idx = this._rowForKey[key]; -var row = this.rows[idx]; -if (row) { +var idx = this._keyToInstIdx[key]; +var inst = this._instances[idx]; +if (inst) { if (dot >= 0) { path = this.as + '.' + path.substring(dot + 1); -row.notifyPath(path, value, true); +inst.notifyPath(path, value, true); } else { -row.__setProperty(this.as, value, true); +inst.__setProperty(this.as, value, true); } } } @@ -3960,7 +3991,6 @@ created: function () { Polymer.ImportStatus.whenLoaded(this._readySelf.bind(this)); }, _registerFeatures: function () { -this._prepExtends(); this._prepConstructor(); }, _insertChildren: function () {