UNPKG

node-red-contrib-polymer

Version:
1,885 lines (1,853 loc) 937 kB
<!DOCTYPE html><html manifest="app.manifest"><head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1, user-scalable=yes"> <title>Node-RED Polymer</title> <meta name="description" content="Node-RED Polymer"> <!--<link rel="icon" href="/images/favicon.ico">--> <!-- See https://goo.gl/OOhYW5 <link rel="manifest" href="/manifest.json"> <meta name="theme-color" content="#3f51b5"> --> <!-- Add to homescreen for Chrome on Android. Fallback for manifest.json --> <meta name="mobile-web-app-capable" content="yes"> <meta name="application-name" content="Node-RED Polymer"> <!-- Add to homescreen for Safari on iOS --> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <meta name="apple-mobile-web-app-title" content="Node-RED Polymer"> <!-- Homescreen icons <link rel="apple-touch-icon" href="/images/manifest/icon-48x48.png"> <link rel="apple-touch-icon" sizes="72x72" href="/images/manifest/icon-72x72.png"> <link rel="apple-touch-icon" sizes="96x96" href="/images/manifest/icon-96x96.png"> <link rel="apple-touch-icon" sizes="144x144" href="/images/manifest/icon-144x144.png"> <link rel="apple-touch-icon" sizes="192x192" href="/images/manifest/icon-192x192.png"> --> <style> body { margin: 0; font-family: sans-serif; background-color: #f1f1f1; } div.loader { width: 100%; height: 100%; position: absolute; left: 0; top: 0; z-index: 10000; background-color: grey; } paper-card { width: calc(100% - 6px); padding: 3px; margin: 3px; } .card-content { width: calc(100% - 52px); } i.menu-icon { width: 21px; padding-right: 5px; } node-red-polymer app-toolbar { background-color: #3f51b5; color: #ddd; } .node-red-widget { padding: 5px; } </style> <link rel="stylesheet" href="bower_components/components-font-awesome/css/font-awesome.min.css"> <script src="socket.io/socket.io.js"></script> <script src="bower_components/async/dist/async.min.js"></script> <script src="bower_components/store-js/store.min.js"></script> <script src="bower_components/webcomponentsjs/webcomponents-lite.js"></script> <script src="node_modules/canvas-gauges/gauge.min.js"></script> </head> <body><div hidden="" by-vulcanize=""><!-- @license Copyright (c) 2015 The Polymer Project Authors. All rights reserved. This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 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 --><!-- @license Copyright (c) 2014 The Polymer Project Authors. All rights reserved. This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 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 --><!-- @license Copyright (c) 2014 The Polymer Project Authors. All rights reserved. This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 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 --><!-- @license Copyright (c) 2014 The Polymer Project Authors. All rights reserved. This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 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 --><script>(function () { function resolve() { document.body.removeAttribute('unresolved'); } if (window.WebComponents) { addEventListener('WebComponentsReady', resolve); } else { if (document.readyState === 'interactive' || document.readyState === 'complete') { resolve(); } else { addEventListener('DOMContentLoaded', resolve); } } }());window.Polymer = { Settings: function () { var settings = window.Polymer || {}; if (!settings.noUrlSettings) { var parts = location.search.slice(1).split('&'); for (var i = 0, o; i < parts.length && (o = parts[i]); i++) { o = o.split('='); o[0] && (settings[o[0]] = o[1] || true); } } settings.wantShadow = settings.dom === 'shadow'; settings.hasShadow = Boolean(Element.prototype.createShadowRoot); settings.nativeShadow = settings.hasShadow && !window.ShadowDOMPolyfill; settings.useShadow = settings.wantShadow && settings.hasShadow; settings.hasNativeImports = Boolean('import' in document.createElement('link')); settings.useNativeImports = settings.hasNativeImports; settings.useNativeCustomElements = !window.CustomElements || window.CustomElements.useNative; settings.useNativeShadow = settings.useShadow && settings.nativeShadow; settings.usePolyfillProto = !settings.useNativeCustomElements && !Object.__proto__; settings.hasNativeCSSProperties = !navigator.userAgent.match(/AppleWebKit\/601|Edge\/15/) && window.CSS && CSS.supports && CSS.supports('box-shadow', '0 0 0 var(--foo)'); settings.useNativeCSSProperties = settings.hasNativeCSSProperties && settings.lazyRegister && settings.useNativeCSSProperties; settings.isIE = navigator.userAgent.match('Trident'); settings.passiveTouchGestures = settings.passiveTouchGestures || false; return settings; }() };(function () { var userPolymer = window.Polymer; window.Polymer = function (prototype) { if (typeof prototype === 'function') { prototype = prototype.prototype; } if (!prototype) { prototype = {}; } prototype = desugar(prototype); var customCtor = prototype === prototype.constructor.prototype ? prototype.constructor : null; var options = { prototype: prototype }; if (prototype.extends) { options.extends = prototype.extends; } Polymer.telemetry._registrate(prototype); var ctor = document.registerElement(prototype.is, options); return customCtor || ctor; }; var desugar = function (prototype) { var base = Polymer.Base; if (prototype.extends) { base = Polymer.Base._getExtendedPrototype(prototype.extends); } prototype = Polymer.Base.chainObject(prototype, base); prototype.registerCallback(); return prototype; }; if (userPolymer) { for (var i in userPolymer) { Polymer[i] = userPolymer[i]; } } Polymer.Class = function (prototype) { if (!prototype.factoryImpl) { prototype.factoryImpl = function () { }; } return desugar(prototype).constructor; }; }()); Polymer.telemetry = { registrations: [], _regLog: function (prototype) { console.log('[' + prototype.is + ']: registered'); }, _registrate: function (prototype) { this.registrations.push(prototype); Polymer.log && this._regLog(prototype); }, dumpRegistrations: function () { this.registrations.forEach(this._regLog); } };Object.defineProperty(window, 'currentImport', { enumerable: true, configurable: true, get: function () { return (document._currentScript || document.currentScript || {}).ownerDocument; } });Polymer.RenderStatus = { _ready: false, _callbacks: [], whenReady: function (cb) { if (this._ready) { cb(); } else { this._callbacks.push(cb); } }, _makeReady: function () { this._ready = true; for (var i = 0; i < this._callbacks.length; i++) { this._callbacks[i](); } this._callbacks = []; }, _catchFirstRender: function () { requestAnimationFrame(function () { Polymer.RenderStatus._makeReady(); }); }, _afterNextRenderQueue: [], _waitingNextRender: false, afterNextRender: function (element, fn, args) { this._watchNextRender(); this._afterNextRenderQueue.push([ element, fn, args ]); }, hasRendered: function () { return this._ready; }, _watchNextRender: function () { if (!this._waitingNextRender) { this._waitingNextRender = true; var fn = function () { Polymer.RenderStatus._flushNextRender(); }; if (!this._ready) { this.whenReady(fn); } else { requestAnimationFrame(fn); } } }, _flushNextRender: function () { var self = this; setTimeout(function () { self._flushRenderCallbacks(self._afterNextRenderQueue); self._afterNextRenderQueue = []; self._waitingNextRender = false; }); }, _flushRenderCallbacks: function (callbacks) { for (var i = 0, h; i < callbacks.length; i++) { h = callbacks[i]; h[1].apply(h[0], h[2] || Polymer.nar); } } }; if (window.HTMLImports) { HTMLImports.whenReady(function () { Polymer.RenderStatus._catchFirstRender(); }); } else { Polymer.RenderStatus._catchFirstRender(); } Polymer.ImportStatus = Polymer.RenderStatus; Polymer.ImportStatus.whenLoaded = Polymer.ImportStatus.whenReady;(function () { 'use strict'; var settings = Polymer.Settings; Polymer.Base = { __isPolymerInstance__: true, _addFeature: function (feature) { this.mixin(this, feature); }, registerCallback: function () { if (settings.lazyRegister === 'max') { if (this.beforeRegister) { this.beforeRegister(); } } else { this._desugarBehaviors(); for (var i = 0, b; i < this.behaviors.length; i++) { b = this.behaviors[i]; if (b.beforeRegister) { b.beforeRegister.call(this); } } if (this.beforeRegister) { this.beforeRegister(); } } this._registerFeatures(); if (!settings.lazyRegister) { this.ensureRegisterFinished(); } }, createdCallback: function () { if (settings.disableUpgradeEnabled) { if (this.hasAttribute('disable-upgrade')) { this._propertySetter = disableUpgradePropertySetter; this._configValue = null; this.__data__ = {}; return; } else { this.__hasInitialized = true; } } this.__initialize(); }, __initialize: function () { if (!this.__hasRegisterFinished) { this._ensureRegisterFinished(this.__proto__); } Polymer.telemetry.instanceCount++; this.root = this; for (var i = 0, b; i < this.behaviors.length; i++) { b = this.behaviors[i]; if (b.created) { b.created.call(this); } } if (this.created) { this.created(); } this._initFeatures(); }, ensureRegisterFinished: function () { this._ensureRegisterFinished(this); }, _ensureRegisterFinished: function (proto) { if (proto.__hasRegisterFinished !== proto.is || !proto.is) { if (settings.lazyRegister === 'max') { proto._desugarBehaviors(); for (var i = 0, b; i < proto.behaviors.length; i++) { b = proto.behaviors[i]; if (b.beforeRegister) { b.beforeRegister.call(proto); } } } proto.__hasRegisterFinished = proto.is; if (proto._finishRegisterFeatures) { proto._finishRegisterFeatures(); } for (var j = 0, pb; j < proto.behaviors.length; j++) { pb = proto.behaviors[j]; if (pb.registered) { pb.registered.call(proto); } } if (proto.registered) { proto.registered(); } if (settings.usePolyfillProto && proto !== this) { proto.extend(this, proto); } } }, attachedCallback: function () { var self = this; Polymer.RenderStatus.whenReady(function () { self.isAttached = true; for (var i = 0, b; i < self.behaviors.length; i++) { b = self.behaviors[i]; if (b.attached) { b.attached.call(self); } } if (self.attached) { self.attached(); } }); }, detachedCallback: function () { var self = this; Polymer.RenderStatus.whenReady(function () { self.isAttached = false; for (var i = 0, b; i < self.behaviors.length; i++) { b = self.behaviors[i]; if (b.detached) { b.detached.call(self); } } if (self.detached) { self.detached(); } }); }, attributeChangedCallback: function (name, oldValue, newValue) { this._attributeChangedImpl(name); for (var i = 0, b; i < this.behaviors.length; i++) { b = this.behaviors[i]; if (b.attributeChanged) { b.attributeChanged.call(this, name, oldValue, newValue); } } if (this.attributeChanged) { this.attributeChanged(name, oldValue, newValue); } }, _attributeChangedImpl: function (name) { this._setAttributeToProperty(this, name); }, extend: function (target, source) { if (target && source) { var n$ = Object.getOwnPropertyNames(source); for (var i = 0, n; i < n$.length && (n = n$[i]); i++) { this.copyOwnProperty(n, source, target); } } return target || source; }, mixin: function (target, source) { for (var i in source) { target[i] = source[i]; } return target; }, copyOwnProperty: function (name, source, target) { var pd = Object.getOwnPropertyDescriptor(source, name); if (pd) { Object.defineProperty(target, name, pd); } }, _logger: function (level, args) { if (args.length === 1 && Array.isArray(args[0])) { args = args[0]; } switch (level) { case 'log': case 'warn': case 'error': console[level].apply(console, args); break; } }, _log: function () { var args = Array.prototype.slice.call(arguments, 0); this._logger('log', args); }, _warn: function () { var args = Array.prototype.slice.call(arguments, 0); this._logger('warn', args); }, _error: function () { var args = Array.prototype.slice.call(arguments, 0); this._logger('error', args); }, _logf: function () { return this._logPrefix.concat(this.is).concat(Array.prototype.slice.call(arguments, 0)); } }; Polymer.Base._logPrefix = function () { var color = window.chrome && !/edge/i.test(navigator.userAgent) || /firefox/i.test(navigator.userAgent); return color ? [ '%c[%s::%s]:', 'font-weight: bold; background-color:#EEEE00;' ] : ['[%s::%s]:']; }(); Polymer.Base.chainObject = function (object, inherited) { if (object && inherited && object !== inherited) { if (!Object.__proto__) { object = Polymer.Base.extend(Object.create(inherited), object); } object.__proto__ = inherited; } return object; }; Polymer.Base = Polymer.Base.chainObject(Polymer.Base, HTMLElement.prototype); Polymer.BaseDescriptors = {}; var disableUpgradePropertySetter; if (settings.disableUpgradeEnabled) { disableUpgradePropertySetter = function (property, value) { this.__data__[property] = value; }; var origAttributeChangedCallback = Polymer.Base.attributeChangedCallback; Polymer.Base.attributeChangedCallback = function (name, oldValue, newValue) { if (!this.__hasInitialized && name === 'disable-upgrade') { this.__hasInitialized = true; this._propertySetter = Polymer.Bind._modelApi._propertySetter; this._configValue = Polymer.Base._configValue; this.__initialize(); } origAttributeChangedCallback.call(this, name, oldValue, newValue); }; } 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 = {}; var lcModules = {}; var findModule = function (id) { return modules[id] || lcModules[id.toLowerCase()]; }; var DomModule = function () { return document.createElement('dom-module'); }; DomModule.prototype = Object.create(HTMLElement.prototype); Polymer.Base.mixin(DomModule.prototype, { createdCallback: function () { this.register(); }, register: function (id) { id = id || this.id || this.getAttribute('name') || this.getAttribute('is'); if (id) { this.id = id; modules[id] = this; lcModules[id.toLowerCase()] = this; } }, import: function (id, selector) { if (id) { var m = findModule(id); if (!m) { forceDomModulesUpgrade(); m = findModule(id); } if (m && selector) { m = m.querySelector(selector); } return m; } } }); Object.defineProperty(DomModule.prototype, 'constructor', { value: DomModule, configurable: true, writable: true }); var cePolyfill = window.CustomElements && !CustomElements.useNative; document.registerElement('dom-module', DomModule); function forceDomModulesUpgrade() { if (cePolyfill) { var script = document._currentScript || document.currentScript; var doc = script && script.ownerDocument || document; var modules = doc.querySelectorAll('dom-module'); for (var i = modules.length - 1, m; i >= 0 && (m = modules[i]); i--) { if (m.__upgraded__) { return; } else { CustomElements.upgrade(m); } } } } }());Polymer.Base._addFeature({ _prepIs: function () { if (!this.is) { var module = (document._currentScript || document.currentScript).parentNode; if (module.localName === 'dom-module') { var id = module.id || module.getAttribute('name') || module.getAttribute('is'); this.is = id; } } if (this.is) { this.is = this.is.toLowerCase(); } } });Polymer.Base._addFeature({ behaviors: [], _desugarBehaviors: function () { if (this.behaviors.length) { this.behaviors = this._desugarSomeBehaviors(this.behaviors); } }, _desugarSomeBehaviors: function (behaviors) { var behaviorSet = []; behaviors = this._flattenBehaviorsList(behaviors); for (var i = behaviors.length - 1; i >= 0; i--) { var b = behaviors[i]; if (behaviorSet.indexOf(b) === -1) { this._mixinBehavior(b); behaviorSet.unshift(b); } } return behaviorSet; }, _flattenBehaviorsList: function (behaviors) { var flat = []; for (var i = 0; i < behaviors.length; i++) { var b = behaviors[i]; if (b instanceof Array) { flat = flat.concat(this._flattenBehaviorsList(b)); } else if (b) { flat.push(b); } else { this._warn(this._logf('_flattenBehaviorsList', 'behavior is null, check for missing or 404 import')); } } return flat; }, _mixinBehavior: function (b) { var n$ = Object.getOwnPropertyNames(b); var useAssignment = b._noAccessors; for (var i = 0, n; i < n$.length && (n = n$[i]); i++) { if (!Polymer.Base._behaviorProperties[n] && !this.hasOwnProperty(n)) { if (useAssignment) { this[n] = b[n]; } else { this.copyOwnProperty(n, b, this); } } } }, _prepBehaviors: function () { this._prepFlattenedBehaviors(this.behaviors); }, _prepFlattenedBehaviors: function (behaviors) { for (var i = 0, l = behaviors.length; i < l; i++) { this._prepBehavior(behaviors[i]); } this._prepBehavior(this); }, _marshalBehaviors: function () { for (var i = 0; i < this.behaviors.length; i++) { this._marshalBehavior(this.behaviors[i]); } this._marshalBehavior(this); } }); Polymer.Base._behaviorProperties = { hostAttributes: true, beforeRegister: true, registered: true, properties: true, observers: true, listeners: true, created: true, attached: true, detached: true, attributeChanged: true, ready: true, _noAccessors: true };Polymer.Base._addFeature({ _getExtendedPrototype: function (tag) { return this._getExtendedNativePrototype(tag); }, _nativePrototypes: {}, _getExtendedNativePrototype: function (tag) { var p = this._nativePrototypes[tag]; if (!p) { p = Object.create(this.getNativePrototype(tag)); var p$ = Object.getOwnPropertyNames(Polymer.Base); for (var i = 0, n; i < p$.length && (n = p$[i]); i++) { if (!Polymer.BaseDescriptors[n]) { p[n] = Polymer.Base[n]; } } Object.defineProperties(p, Polymer.BaseDescriptors); this._nativePrototypes[tag] = p; } return p; }, getNativePrototype: function (tag) { return Object.getPrototypeOf(document.createElement(tag)); } });Polymer.Base._addFeature({ _prepConstructor: function () { this._factoryArgs = this.extends ? [ this.extends, this.is ] : [this.is]; var ctor = function () { return this._factory(arguments); }; if (this.hasOwnProperty('extends')) { ctor.extends = this.extends; } Object.defineProperty(this, 'constructor', { value: ctor, writable: true, configurable: true }); ctor.prototype = this; }, _factory: function (args) { var elt = document.createElement.apply(document, this._factoryArgs); if (this.factoryImpl) { this.factoryImpl.apply(elt, args); } return elt; } });Polymer.nob = Object.create(null); Polymer.Base._addFeature({ getPropertyInfo: function (property) { var info = this._getPropertyInfo(property, this.properties); if (!info) { for (var i = 0; i < this.behaviors.length; i++) { info = this._getPropertyInfo(property, this.behaviors[i].properties); if (info) { return info; } } } return info || Polymer.nob; }, _getPropertyInfo: function (property, properties) { var p = properties && properties[property]; if (typeof p === 'function') { p = properties[property] = { type: p }; } if (p) { p.defined = true; } return p; }, _prepPropertyInfo: function () { this._propertyInfo = {}; for (var i = 0; i < this.behaviors.length; i++) { this._addPropertyInfo(this._propertyInfo, this.behaviors[i].properties); } this._addPropertyInfo(this._propertyInfo, this.properties); this._addPropertyInfo(this._propertyInfo, this._propertyEffects); }, _addPropertyInfo: function (target, source) { if (source) { var t, s; for (var i in source) { t = target[i]; s = source[i]; if (i[0] === '_' && !s.readOnly) { continue; } if (!target[i]) { target[i] = { type: typeof s === 'function' ? s : s.type, readOnly: s.readOnly, attribute: Polymer.CaseMap.camelToDashCase(i) }; } else { if (!t.type) { t.type = s.type; } if (!t.readOnly) { t.readOnly = s.readOnly; } } } } } }); (function () { var propertiesDesc = { configurable: true, writable: true, enumerable: true, value: {} }; Polymer.BaseDescriptors.properties = propertiesDesc; Object.defineProperty(Polymer.Base, 'properties', propertiesDesc); }());Polymer.CaseMap = { _caseMap: {}, _rx: { dashToCamel: /-[a-z]/g, camelToDash: /([A-Z])/g }, dashToCamelCase: function (dash) { return this._caseMap[dash] || (this._caseMap[dash] = dash.indexOf('-') < 0 ? dash : dash.replace(this._rx.dashToCamel, function (m) { return m[1].toUpperCase(); })); }, camelToDashCase: function (camel) { return this._caseMap[camel] || (this._caseMap[camel] = camel.replace(this._rx.camelToDash, '-$1').toLowerCase()); } };Polymer.Base._addFeature({ _addHostAttributes: function (attributes) { if (!this._aggregatedAttributes) { this._aggregatedAttributes = {}; } if (attributes) { this.mixin(this._aggregatedAttributes, attributes); } }, _marshalHostAttributes: function () { if (this._aggregatedAttributes) { this._applyAttributes(this, this._aggregatedAttributes); } }, _applyAttributes: function (node, attr$) { for (var n in attr$) { if (!this.hasAttribute(n) && n !== 'class') { var v = attr$[n]; this.serializeValueToAttribute(v, n, this); } } }, _marshalAttributes: function () { this._takeAttributesToModel(this); }, _takeAttributesToModel: function (model) { if (this.hasAttributes()) { for (var i in this._propertyInfo) { var info = this._propertyInfo[i]; if (this.hasAttribute(info.attribute)) { this._setAttributeToProperty(model, info.attribute, i, info); } } } }, _setAttributeToProperty: function (model, attribute, property, info) { if (!this._serializing) { property = property || Polymer.CaseMap.dashToCamelCase(attribute); info = info || this._propertyInfo && this._propertyInfo[property]; if (info && !info.readOnly) { var v = this.getAttribute(attribute); model[property] = this.deserialize(v, info.type); } } }, _serializing: false, reflectPropertyToAttribute: function (property, attribute, value) { this._serializing = true; value = value === undefined ? this[property] : value; this.serializeValueToAttribute(value, attribute || Polymer.CaseMap.camelToDashCase(property)); this._serializing = false; }, serializeValueToAttribute: function (value, attribute, node) { var str = this.serialize(value); node = node || this; if (str === undefined) { node.removeAttribute(attribute); } else { node.setAttribute(attribute, str); } }, deserialize: function (value, type) { switch (type) { case Number: value = Number(value); break; case Boolean: value = value != null; break; case Object: try { value = JSON.parse(value); } catch (x) { } break; case Array: try { value = JSON.parse(value); } catch (x) { value = null; console.warn('Polymer::Attributes: couldn`t decode Array as JSON'); } break; case Date: value = new Date(value); break; case String: default: break; } return value; }, serialize: function (value) { switch (typeof value) { case 'boolean': return value ? '' : undefined; case 'object': if (value instanceof Date) { return value.toString(); } else if (value) { try { return JSON.stringify(value); } catch (x) { return ''; } } default: return value != null ? value : undefined; } } });Polymer.version = "1.11.1";Polymer.Base._addFeature({ _registerFeatures: function () { this._prepIs(); this._prepBehaviors(); this._prepConstructor(); this._prepPropertyInfo(); }, _prepBehavior: function (b) { this._addHostAttributes(b.hostAttributes); }, _marshalBehavior: function (b) { }, _initFeatures: function () { this._marshalHostAttributes(); this._marshalBehaviors(); } });</script> <script>(function () { function resolveCss(cssText, ownerDocument) { return cssText.replace(CSS_URL_RX, function (m, pre, url, post) { return pre + '\'' + resolve(url.replace(/["']/g, ''), ownerDocument) + '\'' + post; }); } function resolveAttrs(element, ownerDocument) { for (var name in URL_ATTRS) { var a$ = URL_ATTRS[name]; for (var i = 0, l = a$.length, a, at, v; i < l && (a = a$[i]); i++) { if (name === '*' || element.localName === name) { at = element.attributes[a]; v = at && at.value; if (v && v.search(BINDING_RX) < 0) { at.value = a === 'style' ? resolveCss(v, ownerDocument) : resolve(v, ownerDocument); } } } } } function resolve(url, ownerDocument) { if (url && ABS_URL.test(url)) { return url; } var resolver = getUrlResolver(ownerDocument); resolver.href = url; return resolver.href || url; } var tempDoc; var tempDocBase; function resolveUrl(url, baseUri) { if (!tempDoc) { tempDoc = document.implementation.createHTMLDocument('temp'); tempDocBase = tempDoc.createElement('base'); tempDoc.head.appendChild(tempDocBase); } tempDocBase.href = baseUri; return resolve(url, tempDoc); } function getUrlResolver(ownerDocument) { return ownerDocument.body.__urlResolver || (ownerDocument.body.__urlResolver = ownerDocument.createElement('a')); } function pathFromUrl(url) { return url.substring(0, url.lastIndexOf('/') + 1); } var CSS_URL_RX = /(url\()([^)]*)(\))/g; var URL_ATTRS = { '*': [ 'href', 'src', 'style', 'url' ], form: ['action'] }; var ABS_URL = /(^\/)|(^#)|(^[\w-\d]*:)/; var BINDING_RX = /\{\{|\[\[/; Polymer.ResolveUrl = { resolveCss: resolveCss, resolveAttrs: resolveAttrs, resolveUrl: resolveUrl, pathFromUrl: pathFromUrl }; Polymer.rootPath = Polymer.Settings.rootPath || pathFromUrl(document.baseURI || window.location.href); }());Polymer.Base._addFeature({ _prepTemplate: function () { var module; if (this._template === undefined) { module = Polymer.DomModule.import(this.is); this._template = module && module.querySelector('template'); } if (module) { var assetPath = module.getAttribute('assetpath') || ''; var importURL = Polymer.ResolveUrl.resolveUrl(assetPath, module.ownerDocument.baseURI); this._importPath = Polymer.ResolveUrl.pathFromUrl(importURL); } else { this._importPath = ''; } 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>.')); } if (this._template && !this._template.content && window.HTMLTemplateElement && HTMLTemplateElement.decorate) { HTMLTemplateElement.decorate(this._template); } }, _stampTemplate: function () { if (this._template) { this.root = this.instanceTemplate(this._template); } }, instanceTemplate: function (template) { var dom = document.importNode(template._content || template.content, true); return dom; } });(function () { var baseAttachedCallback = Polymer.Base.attachedCallback; var baseDetachedCallback = Polymer.Base.detachedCallback; Polymer.Base._addFeature({ _hostStack: [], ready: function () { }, _registerHost: function (host) { this.dataHost = host = host || Polymer.Base._hostStack[Polymer.Base._hostStack.length - 1]; if (host && host._clients) { host._clients.push(this); } this._clients = null; this._clientsReadied = false; }, _beginHosting: function () { Polymer.Base._hostStack.push(this); if (!this._clients) { this._clients = []; } }, _endHosting: function () { Polymer.Base._hostStack.pop(); }, _tryReady: function () { this._readied = false; if (this._canReady()) { this._ready(); } }, _canReady: function () { return !this.dataHost || this.dataHost._clientsReadied; }, _ready: function () { this._beforeClientsReady(); if (this._template) { this._setupRoot(); this._readyClients(); } this._clientsReadied = true; this._clients = null; this._afterClientsReady(); this._readySelf(); }, _readyClients: function () { this._beginDistribute(); var c$ = this._clients; if (c$) { for (var i = 0, l = c$.length, c; i < l && (c = c$[i]); i++) { c._ready(); } } this._finishDistribute(); }, _readySelf: function () { for (var i = 0, b; i < this.behaviors.length; i++) { b = this.behaviors[i]; if (b.ready) { b.ready.call(this); } } if (this.ready) { this.ready(); } this._readied = true; if (this._attachedPending) { this._attachedPending = false; this.attachedCallback(); } }, _beforeClientsReady: function () { }, _afterClientsReady: function () { }, _beforeAttached: function () { }, attachedCallback: function () { if (this._readied) { this._beforeAttached(); baseAttachedCallback.call(this); } else { this._attachedPending = true; } }, detachedCallback: function () { if (this._readied) { baseDetachedCallback.call(this); } else { this._attachedPending = false; } } }); }());Polymer.ArraySplice = function () { function newSplice(index, removed, addedCount) { return { index: index, removed: removed, addedCount: addedCount }; } var EDIT_LEAVE = 0; var EDIT_UPDATE = 1; var EDIT_ADD = 2; var EDIT_DELETE = 3; function ArraySplice() { } ArraySplice.prototype = { calcEditDistances: function (current, currentStart, currentEnd, old, oldStart, oldEnd) { var rowCount = oldEnd - oldStart + 1; var columnCount = currentEnd - currentStart + 1; var distances = new Array(rowCount); for (var i = 0; i < rowCount; i++) { distances[i] = new Array(columnCount); distances[i][0] = i; } for (var j = 0; j < columnCount; j++) distances[0][j] = j; for (i = 1; i < rowCount; i++) { for (j = 1; j < columnCount; j++) { if (this.equals(current[currentStart + j - 1], old[oldStart + i - 1])) distances[i][j] = distances[i - 1][j - 1]; else { var north = distances[i - 1][j] + 1; var west = distances[i][j - 1] + 1; distances[i][j] = north < west ? north : west; } } } return distances; }, spliceOperationsFromEditDistances: function (distances) { var i = distances.length - 1; var j = distances[0].length - 1; var current = distances[i][j]; var edits = []; while (i > 0 || j > 0) { if (i == 0) { edits.push(EDIT_ADD); j--; continue; } if (j == 0) { edits.push(EDIT_DELETE); i--; continue; } var northWest = distances[i - 1][j - 1]; var west = distances[i - 1][j]; var north = distances[i][j - 1]; var min; if (west < north) min = west < northWest ? west : northWest; else min = north < northWest ? north : northWest; if (min == northWest) { if (northWest == current) { edits.push(EDIT_LEAVE); } else { edits.push(EDIT_UPDATE); current = northWest; } i--; j--; } else if (min == west) { edits.push(EDIT_DELETE); i--; current = west; } else { edits.push(EDIT_ADD); j--; current = north; } } edits.reverse(); return edits; }, calcSplices: function (current, currentStart, currentEnd, old, oldStart, oldEnd) { var prefixCount = 0; var suffixCount = 0; var minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart); if (currentStart == 0 && oldStart == 0) prefixCount = this.sharedPrefix(current, old, minLength); if (currentEnd == current.length && oldEnd == old.length) suffixCount = this.sharedSuffix(current, old, minLength - prefixCount); currentStart += prefixCount; oldStart += prefixCount; currentEnd -= suffixCount; oldEnd -= suffixCount; if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0) return []; if (currentStart == currentEnd) { var splice = newSplice(currentStart, [], 0); while (oldStart < oldEnd) splice.removed.push(old[oldStart++]); return [splice]; } else if (oldStart == oldEnd) return [newSplice(currentStart, [], currentEnd - currentStart)]; var ops = this.spliceOperationsFromEditDistances(this.calcEditDistances(current, currentStart, currentEnd, old, oldStart, oldEnd)); splice = undefined; var splices = []; var index = currentStart; var oldIndex = oldStart; for (var i = 0; i < ops.length; i++) { switch (ops[i]) { case EDIT_LEAVE: if (splice) { splices.push(splice); splice = undefined; } index++; oldIndex++; break; case EDIT_UPDATE: if (!splice) splice = newSplice(index, [], 0); splice.addedCount++; index++; splice.removed.push(old[oldIndex]); oldIndex++; break; case EDIT_ADD: if (!splice) splice = newSplice(index, [], 0); splice.addedCount++; index++; break; case EDIT_DELETE: if (!splice) splice = newSplice(index, [], 0); splice.removed.push(old[oldIndex]); oldIndex++; break; } } if (splice) { splices.push(splice); } return splices; }, sharedPrefix: function (current, old, searchLength) { for (var i = 0; i < searchLength; i++) if (!this.equals(current[i], old[i])) return i; return searchLength; }, sharedSuffix: function (current, old, searchLength) { var index1 = current.length; var index2 = old.length; var count = 0; while (count < searchLength && this.equals(current[--index1], old[--index2])) count++; return count; }, calculateSplices: function (current, previous) { return this.calcSplices(current, 0, current.length, previous, 0, previous.length); }, equals: function (currentValue, previousValue) { return currentValue === previousValue; } }; return new ArraySplice(); }();Polymer.domInnerHTML = function () { var escapeAttrRegExp = /[&\u00A0"]/g; var escapeDataRegExp = /[&\u00A0<>]/g; function escapeReplace(c) { switch (c) { case '&': return '&amp;'; case '<': return '&lt;'; case '>': return '&gt;'; case '"': return '&quot;'; case '\xA0': return '&nbsp;'; } } function escapeAttr(s) { return s.replace(escapeAttrRegExp, escapeReplace); } function escapeData(s) { return s.replace(escapeDataRegExp, escapeReplace); } function makeSet(arr) { var set = {}; for (var i = 0; i < arr.length; i++) { set[arr[i]] = true; } return set; } var voidElements = makeSet([ 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr' ]); var plaintextParents = makeSet([ 'style', 'script', 'xmp', 'iframe', 'noembed', 'noframes', 'plaintext', 'noscript' ]); function getOuterHTML(node, parentNode, composed) { switch (node.nodeType) { case Node.ELEMENT_NODE: var tagName = node.localName; var s = '<' + tagName; var attrs = node.attributes; for (var i = 0, attr; attr = attrs[i]; i++) { s += ' ' + attr.name + '="' + escapeAttr(attr.value) + '"'; } s += '>'; if (voidElements[tagName]) { return s; } return s + getInnerHTML(node, composed) + '</' + tagName + '>'; case Node.TEXT_NODE: var data = node.data; if (parentNode && plaintextParents[parentNode.localName]) { return data; } return escapeData(data); case Node.COMMENT_NODE: return '<!--' + node.data + '-->'; default: console.error(node); throw new Error('not implemented'); } } function getInnerHTML(node, composed) { if (node instanceof HTMLTemplateElement) node = node.content; var s = ''; var c$ = Polymer.dom(node).childNodes; for (var i = 0, l = c$.length, child; i < l && (child = c$[i]); i++) { s += getOuterHTML(child, node, composed); } return s; } return { getInnerHTML: getInnerHTML }; }();(function () { 'use strict'; var nativeInsertBefore = Element.prototype.insertBefore; var nativeAppendChild = Element.prototype.appendChild; var nativeRemoveChild = Element.prototype.removeChild; Polymer.TreeApi = { arrayCopyChildNodes: function (parent) { var copy = [], i = 0; for (var n = parent.firstChild; n; n = n.nextSibling) { copy[i++] = n; } return copy; }, arrayCopyChildren: function (parent) { var copy = [], i = 0; for (var n = parent.firstElementChild; n; n = n.nextElementSibling) { copy[i++] = n; } return copy; }, arrayCopy: function (a$) { var l = a$.length; var copy = new Array(l); for (var i = 0; i < l; i++) { copy[i] = a$[i]; } return copy; } }; Polymer.TreeApi.Logical = { hasParentNode: function (node) { return Boolean(node.__dom && node.__dom.parentNode); }, hasChildNodes: function (node) { return Boolean(node.__dom && node.__dom.childNodes !== undefined); }, getChildNodes: function (node) { return this.hasChildNodes(node) ? this._getChildNodes(node) : node.childNodes; }, _getChildNodes: function (node) { if (!node.__dom.childNodes) { node.__dom.childNodes = []; for (var n = node.__dom.firstChild; n; n = n.__dom.nextSibling) { node.__dom.childNodes.push(n); } } return node.__dom.childNodes; }, getParentNode: function (node) { return node.__dom && node.__dom.parentNode !== undefined ? node.__dom.parentNode : node.parentNode; }, getFirstChild: function (node) { return node.__dom && node.__dom.firstChild !== undefined ? node.__dom.firstChild : node.firstChild; }, getLastChild: function (node) { return node.__dom && node.__dom.lastChild !== undefined ? node.__dom.lastChild : node.lastChild; }, getNextSibling: function (node) { return node.__dom && node.__dom.nextSibling !== undefined ? node.__dom.nextSibling : node.nextSibling; }, getPreviousSibling: function (node) { return node.__dom && node.__dom.previousSibling !== undefined ? node.__dom.previousSibling : node.previousSibling; }, getFirstElementChild: function (node) { return node.__dom && node.__dom.firstChild !== undefined ? this._getFirstElementChild(node) : node.firstElementChild; }, _getFirstElementChild: function (node) { var n = node.__dom.firstChild; while (n && n.nodeType !== Node.ELEMENT_NODE) { n = n.__dom.nextSibling; } return n; }, getLastElementChild: function (node) { return node.__dom && node.__dom.lastChild !== undefined ? this._getLastElementChild(node) : node.lastElementChild; }, _getLastElementChild: function (node) { var n = node.__dom.lastChild; while (n && n.nodeType !== Node.ELEMENT_NODE) { n = n.__dom.previousSibling; } return n; }, getNextElementSibling: function (node) { return node.__dom && node.__dom.nextSibling !== undefined ? this._getNextElementSibling(node) : node.nextElementSibling; }, _getNextElementSibling: function (node) { var n = node.__dom.nextSibling; while (n && n.nodeType !== Node.ELEMENT_NODE) { n = n.__dom.nextSibling; } return n; }, getPreviousElementSibling: function (node) { return node.__dom && node.__dom.previousSibling !== undefined ? this._getPreviousElementSibling(node) : node.previousElementSibling; }, _getPreviousElementSibling: function (node) { var n = node.__dom.previousSibling; while (n && n.nodeType !== Node.ELEMENT_NODE) { n = n.__dom.previousSibling; } return n; }, saveChildNodes: function (node) { if (!this.hasChildNodes(node)) { node.__dom = node.__dom || {}; node.__dom.firstChild = node.firstChild; node.__dom.lastChild = node.lastChild; node.__dom.childNodes = []; for (var n = node.firstChild; n; n = n.nextSibling) { n.__dom = n.__dom || {}; n.__dom.parentNode = node; node.__dom.childNodes.push(n); n.__dom.nextSibling = n.nextSibling; n.__dom.previousSibling = n.previousSibling; } } }, recordInsertBefore: function (node, container, ref_node) { container.__dom.childNodes = null; if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { for (var n = node.firstChild; n; n = n.nextSibling) { this._linkNode(n, container, ref_node); } } else { this._linkNode(node, container, ref_node); } }, _linkNode: function (node, container, ref_node) { node.__dom = node.__dom || {}; container.__dom = container.__dom || {}; if (ref_node) { ref_node.__dom = ref_node.__dom || {}; } node.__dom.previousSibling = ref_node ? ref_node.__dom.previousSibling : container.__dom.lastChild; if (node.__dom.previousSibling) { node.__dom.previousSibling.__dom.nextSibling = node; } node.__dom.nextSibling = ref_node || null; if (node.__dom.nextSibling) { node.__dom.nextSibling.__dom.previousSibling = node; } node.__dom.parentNode = container; if (ref_node) { if (ref_node === container.__dom.firstChild) { container.__dom.firstChild = node; } } else { container.__dom.lastChild = node; if (!container.__dom.firstChild) { container.__dom.firstChild = node; } } container.__dom.childNodes = null; }, recordRemoveChild: function (node, container) { node.__dom = node.__dom || {}; container.__dom = container.__dom || {}; if (node === container.__dom.firstChild) { container.__dom.firstChild = node.__dom.nextSibling; } if (node === container.__dom.lastChild) { container.__dom.lastChild = node.__dom.previousSibling; } var p = node.__dom.previousSibling; var n = node.__dom.nextSibling; if (p) { p.__dom.nextSibling = n; } if (n) { n.__dom.previousSibling = p; } node.__dom.parentNode = node.__dom.previousSibling = node.__dom.nextSibling = undefined; container.__dom.childNodes = null; } }; Polymer.TreeApi.Composed = { getChildNodes: function (node) { return Polymer.TreeApi.arrayCopyChildNodes(node); }, getParentNode: function (node) { return node.parentNode; }, clearChildNodes: function (node) { node.textContent = ''; }, insertBefore: function (parentNode, newChild, refChild) { return nativeInsertBefore.call(parentNode, newChild, refChild || null); }, appendChild: function (parentNode, newChild) { return nativeAppendChild.call(parentNode, newChild); }, removeChild: function (parentNode, node) { return nativeRemoveChild.call(parentNode, node); } }; }());Polymer.DomApi = function () { 'use strict'; var Settings = Polymer.Settings; var TreeApi = Polymer.TreeApi; var DomApi = function (node) { this.node = needsToWrap ? DomApi.wrap(node) : node; }; var needsToWrap = Settings.hasShadow && !Settings.nativeShadow; DomApi.wrap = window.wrap ? window.wrap : function (node) { return node; }; DomApi.prototype = { flush: function () { Polymer.dom.flush(); }, deepContains: function (node) { if (this.node.contains(node)) { return true; } var n = node; var doc = node.ownerDocument; while (n && n !== doc && n !== this.node) { n = Polymer.dom(n).parentNode || n.host; } return n === this.node; }, queryDistributedElements: function (selector) { var c$ = this.getEffectiveChildNodes(); var list = []; for (var i = 0, l = c$.length, c; i < l && (c = c$[i]); i++) { if (c.nodeType === Node.ELEMENT_NODE && DomApi.matchesSelector.call(c, selector)) { list.push(c); } } return list; }, getEffectiveChildNodes: function () { var list = []; var c$ = this.childNodes; for (var i = 0, l = c$.length, c; i < l && (c = c$[i]); i++) { if (c.localName === CONTENT) { var d$ = dom(c).getDistributedNodes(); for (var j = 0; j < d$.length; j++) { list.push(d$[j]); } } else { list.push(c); } } return list; }, observeNodes: function (callback) { if (callback) { if (!this.observer) { this.observer = this.node.localName === CONTENT ? new DomApi.DistributedNodesObserver(this) : new DomApi.EffectiveNodesObserver(this); } return this.observer.addListener(callback); } }, unobserveNodes: function (handle) { if (this.observer) { this.observer.removeListener(handle); } }, notifyObserver: function () { if (this.observer) { this.observer.notify(); } }, _query: function (matcher, node, halter) { node = node || this.node; var list = []; this._queryElements(TreeApi.Logical.getChildNodes(node), matcher, halter, list); return list; }, _queryElements: function (elements, matcher, halter, list) { for (var i = 0, l = elements.length, c; i < l && (c = elements[i]); i++) { if (c.nodeType === Node.ELEMENT_NODE) { if (this._queryElement(c, matcher, halter, list)) { return true; } } } }, _queryElement: function (node, matcher, halter, list) { var result = matcher(node); if (result) { list.push(node); } if (halter && halter(result)) { return result; } this._queryElements(TreeApi.Logical.getChildNodes(node), matcher, halter, list); } }; var CONTENT = DomApi.CONTENT = 'content'; var dom = DomApi.factory = function (node) { node = node || document; if (!node.__domApi) { node.__domApi = new DomApi.ctor(node); } return node.__domApi; }; DomApi.hasApi = function (node) { return Boolean(node.__domApi); }; DomApi.ctor = DomApi; Polymer.dom = function (obj, patch) { if (obj instanceof Event) { return Polymer.EventApi.factory(obj); } else { return DomApi.factory(obj, patch); } }; var p = Element.prototype; DomApi.matchesSelector = p.matches || p.matchesSelector || p.mozMatchesSelector || p.msMatchesSelector || p.oMatchesSelector || p.webkitMatchesSelector; return DomApi; }();(function () { 'use strict'; var Settings = Polymer.Settings; var DomApi = Polymer.DomApi; var dom = DomApi.factory; var TreeApi = Polymer.TreeApi; var getInnerHTML = Polymer.domInnerHTML.getInnerHTML; var CONTENT = DomApi.CONTENT; if (Settings.useShadow) { return; } var nativeCloneNode = Element.prototype.cloneNode; var nativeImportNode = Document.prototype.importNode; Polymer.Base.mixin(DomApi.prototype, { _lazyDistribute: function (host) { if (host.shadyRoot && host.shadyRoot._distributionClean) { host.shadyRoot._distributionClean = false; Polymer.dom.addDebouncer(host.debounce('_distribute', host._distributeContent)); } }, appendChild: function (node) { return this.insertBefore(node); }, insertBefore: function (node, ref_node) { if (ref_node && TreeApi.Logical.getParentNode(ref_node) !== this.node) { throw Error('The ref_node to be inserted before is not a child ' + 'of this node'); } if (node.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) { var parent = TreeApi.Logical.getParentNode(node); if (parent) { if (DomApi.hasApi(parent)) { dom(parent).notifyObserver(); } this._removeNode(node); } else { this._removeOwnerShadyRoot(node); } } if (!this._addNode(node, ref_node)) { if (ref_node) { ref_node = ref_node.localName === CONTENT ? this._firstComposedNode(ref_node) : ref_node; } var container = this.node._isShadyRoot ? this.node.host : this.node; if (ref_node) { TreeApi.Composed.insertBefore(container, node, ref_node); } else { TreeApi.Composed.appendChild(container, node); } } this.notifyObserver(); return node; }, _addNode: function (node, ref_node) { var root = this.getOwnerRoot(); if (root) { var ipAdded = this._maybeAddInsertionPoint(node, this.node); if (!root._invalidInsertionPoints) { root._invalidInsertionPoints = ipAdded; } this._addNodeToHost(root.host, node); } if (TreeApi.Logical.hasChildNodes(this.node)) { TreeApi.Logical.recordInsertBefore(node, this.node, ref_node); } var handled = this._maybeDistribute(node) || this.node.shadyRoot; if (handled) { if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { while (node.firstChild) { TreeApi.Composed.removeChild(node, node.firstChild); } } else { var parent = TreeApi.Composed.getParentNode(node); if (parent) { TreeApi.Composed.removeChild(parent, node); } } } return handled; }, removeChild: function (node) { if (TreeApi.Logical.getParentNode(node) !== this.node) { throw Error('The node to be removed is not a child of this node: ' + node); } if (!this._removeNode(node)) { var container = this.node._isShadyRoot ? this.node.host : this.node; var parent = TreeApi.Composed.getParentNode(node); if (container === parent) { TreeApi.Composed.removeChild(container, node); } } this.notifyObserver(); return node; }, _removeNode: function (node) { var logicalParent = TreeApi.Logical.hasParentNode(node) && TreeApi.Logical.getParentNode(node); var distributed; var root = this._ownerShadyRootForNode(node); if (logicalParent) { distributed = dom(node)._maybeDistributeParent(); TreeApi.Logical.recordRemoveChild(node, logicalParent); if (root && this._removeDistributedChildren(root, node)) { root._invalidInsertionPoints = true; this._lazyDistribute(root.host); } } this._removeOwnerShadyRoot(node); if (root) { this._removeNodeFromHost(root.host, node); } return distributed; }, replaceChild: function (node, ref_node) { this.insertBefore(node, ref_node); this.removeChild(ref_node); return node; }, _hasCachedOwnerRoot: function (node) { return Boolean(node._ownerShadyRoot !== undefined); }, getOwnerRoot: function () { return this._ownerShadyRootForNode(this.node); }, _ownerShadyRootForNode: function (node) { if (!node) { return; } var root = node._ownerShadyRoot; if (root === undefined) { if (node._isShadyRoot) { root = node; } else { var parent = TreeApi.Logical.getParentNode(node); if (parent) { root = parent._isShadyRoot ? parent : this._ownerShadyRootForNode(parent); } else { root = null; } } if (root || document.documentElement.contains(node)) { node._ownerShadyRoot = root; } } return root; }, _maybeDistribute: function (node) { var fragContent = node.nodeType === Node.DOCUMENT_FRAGMENT_NODE && !node.__noContent && dom(node).querySelector(CONTENT); var wrappedContent = fragContent && TreeApi.Logical.getParentNode(fragContent).nodeType !== Node.DOCUMENT_FRAGMENT_NODE; var hasContent = fragContent || node.localName === CONTENT; if (hasContent) { var root = this.getOwnerRoot(); if (root) { this._lazyDistribute(root.host); } } var needsDist = this._nodeNeedsDistribution(this.node); if (needsDist) { this._lazyDistribute(this.node); } return needsDist || hasContent && !wrappedContent; }, _maybeAddInsertionPoint: function (node, parent) { var added; if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE && !node.__noContent) { var c$ = dom(node).querySelectorAll(CONTENT); for (var i = 0, n, np, na; i < c$.length && (n = c$[i]); i++) { np = TreeApi.Logical.getParentNode(n); if (np === node) { np = parent; } na = this._maybeAddInsertionPoint(n, np); added = added || na; } } else if (node.localName === CONTENT) { TreeApi.Logical.saveChildNodes(parent); TreeApi.Logical.saveChildNodes(node); added = true; } return added; }, _updateInsertionPoints: function (host) { var i$ = host.shadyRoot._insertionPoints = dom(host.shadyRoot).querySelectorAll(CONTENT); for (var i = 0, c; i < i$.length; i++) { c = i$[i]; TreeApi.Logical.saveChildNodes(c); TreeApi.Logical.saveChildNodes(TreeApi.Logical.getParentNode(c)); } }, _nodeNeedsDistribution: function (node) { retur