From c54d13af1ddee12445cce0ac2ccdba0ded067be5 Mon Sep 17 00:00:00 2001 From: niels Date: Sun, 31 Jan 2021 16:36:28 +0100 Subject: [PATCH] release v1.5.2 --- custom_components/alarmo/const.py | 2 +- .../alarmo/frontend/dist/alarm-panel.js | 12118 +++------------- .../alarmo/frontend/package.json | 2 +- .../alarmo/frontend/src/const.ts | 2 +- 4 files changed, 2094 insertions(+), 10030 deletions(-) diff --git a/custom_components/alarmo/const.py b/custom_components/alarmo/const.py index 4720035..436e895 100755 --- a/custom_components/alarmo/const.py +++ b/custom_components/alarmo/const.py @@ -21,7 +21,7 @@ SUPPORT_ALARM_ARM_CUSTOM_BYPASS, ) -VERSION = "1.5.1" +VERSION = "1.5.2" NAME = "Alarmo" MANUFACTURER = "@nielsfaber" diff --git a/custom_components/alarmo/frontend/dist/alarm-panel.js b/custom_components/alarmo/frontend/dist/alarm-panel.js index e43d8b3..b477309 100644 --- a/custom_components/alarmo/frontend/dist/alarm-panel.js +++ b/custom_components/alarmo/frontend/dist/alarm-panel.js @@ -1,29 +1,19 @@ -(function (exports) { - 'use strict'; - - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. - ***************************************************************************** */ - - function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - } - - /** +!function(e){"use strict"; +/*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */function t(e,t,a,i){var s,n=arguments.length,o=n<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,a):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,a,i);else for(var r=e.length-1;r>=0;r--)(s=e[r])&&(o=(n<3?s(o):n>3?s(t,a,o):s(t,a))||o);return n>3&&o&&Object.defineProperty(t,a,o),o +/** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. * This code may only be used under the BSD style license found at @@ -35,27 +25,8 @@ * 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 - */ - /** - * True if the custom elements polyfill is in use. - */ - const isCEPolyfill = typeof window !== 'undefined' && - window.customElements != null && - window.customElements.polyfillWrapFlushCallback !== - undefined; - /** - * Removes nodes, starting from `start` (inclusive) to `end` (exclusive), from - * `container`. - */ - const removeNodes = (container, start, end = null) => { - while (start !== end) { - const n = start.nextSibling; - container.removeChild(start); - start = n; - } - }; - - /** + */}const a="undefined"!=typeof window&&null!=window.customElements&&void 0!==window.customElements.polyfillWrapFlushCallback,i=(e,t,a=null)=>{for(;t!==a;){const a=t.nextSibling;e.removeChild(t),t=a}},s=`{{lit-${String(Math.random()).slice(2)}}}`,n=`\x3c!--${s}--\x3e`,o=new RegExp(`${s}|${n}`);class r{constructor(e,t){this.parts=[],this.element=t;const a=[],i=[],n=document.createTreeWalker(t.content,133,null,!1);let r=0,l=-1,u=0;const{strings:m,values:{length:p}}=e;for(;u0;){const t=m[u],a=h.exec(t)[2],i=a.toLowerCase()+"$lit$",s=e.getAttribute(i);e.removeAttribute(i);const n=s.split(o);this.parts.push({type:"attribute",index:l,name:a,strings:n}),u+=n.length-1}}"TEMPLATE"===e.tagName&&(i.push(e),n.currentNode=e.content)}else if(3===e.nodeType){const t=e.data;if(t.indexOf(s)>=0){const i=e.parentNode,s=t.split(o),n=s.length-1;for(let t=0;t{const a=e.length-t.length;return a>=0&&e.slice(a)===t},l=e=>-1!==e.index,c=()=>document.createComment(""),h=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;function u(e,t){const{element:{content:a},parts:i}=e,s=document.createTreeWalker(a,133,null,!1);let n=p(i),o=i[n],r=-1,d=0;const l=[];let c=null;for(;s.nextNode();){r++;const e=s.currentNode;for(e.previousSibling===c&&(c=null),t.has(e)&&(l.push(e),null===c&&(c=e)),null!==c&&d++;void 0!==o&&o.index===r;)o.index=null!==c?-1:o.index-d,n=p(i,n),o=i[n]}l.forEach(e=>e.parentNode.removeChild(e))}const m=e=>{let t=11===e.nodeType?0:1;const a=document.createTreeWalker(e,133,null,!1);for(;a.nextNode();)t++;return t},p=(e,t=-1)=>{for(let a=t+1;a`; - const markerRegex = new RegExp(`${marker}|${nodeMarker}`); - /** - * Suffix appended to all bound attribute names. - */ - const boundAttributeSuffix = '$lit$'; - /** - * An updatable Template that tracks the location of dynamic parts. - */ - class Template { - constructor(result, element) { - this.parts = []; - this.element = element; - const nodesToRemove = []; - const stack = []; - // Edge needs all 4 parameters present; IE11 needs 3rd parameter to be null - const walker = document.createTreeWalker(element.content, 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */, null, false); - // Keeps track of the last index associated with a part. We try to delete - // unnecessary nodes, but we never want to associate two different parts - // to the same index. They must have a constant node between. - let lastPartIndex = 0; - let index = -1; - let partIndex = 0; - const { strings, values: { length } } = result; - while (partIndex < length) { - const node = walker.nextNode(); - if (node === null) { - // We've exhausted the content inside a nested template element. - // Because we still have parts (the outer for-loop), we know: - // - There is a template in the stack - // - The walker will find a nextNode outside the template - walker.currentNode = stack.pop(); - continue; - } - index++; - if (node.nodeType === 1 /* Node.ELEMENT_NODE */) { - if (node.hasAttributes()) { - const attributes = node.attributes; - const { length } = attributes; - // Per - // https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap, - // attributes are not guaranteed to be returned in document order. - // In particular, Edge/IE can return them out of order, so we cannot - // assume a correspondence between part index and attribute index. - let count = 0; - for (let i = 0; i < length; i++) { - if (endsWith(attributes[i].name, boundAttributeSuffix)) { - count++; - } - } - while (count-- > 0) { - // Get the template literal section leading up to the first - // expression in this attribute - const stringForPart = strings[partIndex]; - // Find the attribute name - const name = lastAttributeNameRegex.exec(stringForPart)[2]; - // Find the corresponding attribute - // All bound attributes have had a suffix added in - // TemplateResult#getHTML to opt out of special attribute - // handling. To look up the attribute value we also need to add - // the suffix. - const attributeLookupName = name.toLowerCase() + boundAttributeSuffix; - const attributeValue = node.getAttribute(attributeLookupName); - node.removeAttribute(attributeLookupName); - const statics = attributeValue.split(markerRegex); - this.parts.push({ type: 'attribute', index, name, strings: statics }); - partIndex += statics.length - 1; - } - } - if (node.tagName === 'TEMPLATE') { - stack.push(node); - walker.currentNode = node.content; - } - } - else if (node.nodeType === 3 /* Node.TEXT_NODE */) { - const data = node.data; - if (data.indexOf(marker) >= 0) { - const parent = node.parentNode; - const strings = data.split(markerRegex); - const lastIndex = strings.length - 1; - // Generate a new text node for each literal section - // These nodes are also used as the markers for node parts - for (let i = 0; i < lastIndex; i++) { - let insert; - let s = strings[i]; - if (s === '') { - insert = createMarker(); - } - else { - const match = lastAttributeNameRegex.exec(s); - if (match !== null && endsWith(match[2], boundAttributeSuffix)) { - s = s.slice(0, match.index) + match[1] + - match[2].slice(0, -boundAttributeSuffix.length) + match[3]; - } - insert = document.createTextNode(s); - } - parent.insertBefore(insert, node); - this.parts.push({ type: 'node', index: ++index }); - } - // If there's no text, we must insert a comment to mark our place. - // Else, we can trust it will stick around after cloning. - if (strings[lastIndex] === '') { - parent.insertBefore(createMarker(), node); - nodesToRemove.push(node); - } - else { - node.data = strings[lastIndex]; - } - // We have a part for each match found - partIndex += lastIndex; - } - } - else if (node.nodeType === 8 /* Node.COMMENT_NODE */) { - if (node.data === marker) { - const parent = node.parentNode; - // Add a new marker node to be the startNode of the Part if any of - // the following are true: - // * We don't have a previousSibling - // * The previousSibling is already the start of a previous part - if (node.previousSibling === null || index === lastPartIndex) { - index++; - parent.insertBefore(createMarker(), node); - } - lastPartIndex = index; - this.parts.push({ type: 'node', index }); - // If we don't have a nextSibling, keep this node so we have an end. - // Else, we can remove it to save future costs. - if (node.nextSibling === null) { - node.data = ''; - } - else { - nodesToRemove.push(node); - index--; - } - partIndex++; - } - else { - let i = -1; - while ((i = node.data.indexOf(marker, i + 1)) !== -1) { - // Comment node has a binding marker inside, make an inactive part - // The binding won't work, but subsequent bindings will - // TODO (justinfagnani): consider whether it's even worth it to - // make bindings in comments work - this.parts.push({ type: 'node', index: -1 }); - partIndex++; - } - } - } - } - // Remove text binding nodes after the walk to not disturb the TreeWalker - for (const n of nodesToRemove) { - n.parentNode.removeChild(n); - } - } - } - const endsWith = (str, suffix) => { - const index = str.length - suffix.length; - return index >= 0 && str.slice(index) === suffix; - }; - const isTemplatePartActive = (part) => part.index !== -1; - // Allows `document.createComment('')` to be renamed for a - // small manual size-savings. - const createMarker = () => document.createComment(''); - /** - * This regex extracts the attribute name preceding an attribute-position - * expression. It does this by matching the syntax allowed for attributes - * against the string literal directly preceding the expression, assuming that - * the expression is in an attribute-value position. - * - * See attributes in the HTML spec: - * https://www.w3.org/TR/html5/syntax.html#elements-attributes - * - * " \x09\x0a\x0c\x0d" are HTML space characters: - * https://www.w3.org/TR/html5/infrastructure.html#space-characters - * - * "\0-\x1F\x7F-\x9F" are Unicode control characters, which includes every - * space character except " ". - * - * So an attribute is: - * * The name: any character except a control character, space character, ('), - * ("), ">", "=", or "/" - * * Followed by zero or more space characters - * * Followed by "=" - * * Followed by zero or more space characters - * * Followed by: - * * Any character except space, ('), ("), "<", ">", "=", (`), or - * * (") then any non-("), or - * * (') then any non-(') - */ - const lastAttributeNameRegex = - // eslint-disable-next-line no-control-regex - /([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/; - - /** +const g=new WeakMap,v=e=>"function"==typeof e&&g.has(e),_={},f={}; +/** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. * This code may only be used under the BSD style license found at @@ -283,118 +53,8 @@ * subject to an additional IP rights grant found at * http://polymer.github.io/PATENTS.txt */ - const walkerNodeFilter = 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */; - /** - * Removes the list of nodes from a Template safely. In addition to removing - * nodes from the Template, the Template part indices are updated to match - * the mutated Template DOM. - * - * As the template is walked the removal state is tracked and - * part indices are adjusted as needed. - * - * div - * div#1 (remove) <-- start removing (removing node is div#1) - * div - * div#2 (remove) <-- continue removing (removing node is still div#1) - * div - * div <-- stop removing since previous sibling is the removing node (div#1, - * removed 4 nodes) - */ - function removeNodesFromTemplate(template, nodesToRemove) { - const { element: { content }, parts } = template; - const walker = document.createTreeWalker(content, walkerNodeFilter, null, false); - let partIndex = nextActiveIndexInTemplateParts(parts); - let part = parts[partIndex]; - let nodeIndex = -1; - let removeCount = 0; - const nodesToRemoveInTemplate = []; - let currentRemovingNode = null; - while (walker.nextNode()) { - nodeIndex++; - const node = walker.currentNode; - // End removal if stepped past the removing node - if (node.previousSibling === currentRemovingNode) { - currentRemovingNode = null; - } - // A node to remove was found in the template - if (nodesToRemove.has(node)) { - nodesToRemoveInTemplate.push(node); - // Track node we're removing - if (currentRemovingNode === null) { - currentRemovingNode = node; - } - } - // When removing, increment count by which to adjust subsequent part indices - if (currentRemovingNode !== null) { - removeCount++; - } - while (part !== undefined && part.index === nodeIndex) { - // If part is in a removed node deactivate it by setting index to -1 or - // adjust the index as needed. - part.index = currentRemovingNode !== null ? -1 : part.index - removeCount; - // go to the next active part. - partIndex = nextActiveIndexInTemplateParts(parts, partIndex); - part = parts[partIndex]; - } - } - nodesToRemoveInTemplate.forEach((n) => n.parentNode.removeChild(n)); - } - const countNodes = (node) => { - let count = (node.nodeType === 11 /* Node.DOCUMENT_FRAGMENT_NODE */) ? 0 : 1; - const walker = document.createTreeWalker(node, walkerNodeFilter, null, false); - while (walker.nextNode()) { - count++; - } - return count; - }; - const nextActiveIndexInTemplateParts = (parts, startIndex = -1) => { - for (let i = startIndex + 1; i < parts.length; i++) { - const part = parts[i]; - if (isTemplatePartActive(part)) { - return i; - } - } - return -1; - }; - /** - * Inserts the given node into the Template, optionally before the given - * refNode. In addition to inserting the node into the Template, the Template - * part indices are updated to match the mutated Template DOM. - */ - function insertNodeIntoTemplate(template, node, refNode = null) { - const { element: { content }, parts } = template; - // If there's no refNode, then put node at end of template. - // No part indices need to be shifted in this case. - if (refNode === null || refNode === undefined) { - content.appendChild(node); - return; - } - const walker = document.createTreeWalker(content, walkerNodeFilter, null, false); - let partIndex = nextActiveIndexInTemplateParts(parts); - let insertCount = 0; - let walkerIndex = -1; - while (walker.nextNode()) { - walkerIndex++; - const walkerNode = walker.currentNode; - if (walkerNode === refNode) { - insertCount = countNodes(node); - refNode.parentNode.insertBefore(node, refNode); - } - while (partIndex !== -1 && parts[partIndex].index === walkerIndex) { - // If we've inserted the node, simply adjust all subsequent parts - if (insertCount > 0) { - while (partIndex !== -1) { - parts[partIndex].index += insertCount; - partIndex = nextActiveIndexInTemplateParts(parts, partIndex); - } - return; - } - partIndex = nextActiveIndexInTemplateParts(parts, partIndex); - } - } - } - - /** +class b{constructor(e,t,a){this.__parts=[],this.template=e,this.processor=t,this.options=a}update(e){let t=0;for(const a of this.__parts)void 0!==a&&a.setValue(e[t]),t++;for(const e of this.__parts)void 0!==e&&e.commit()}_clone(){const e=a?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),t=[],i=this.template.parts,s=document.createTreeWalker(e,133,null,!1);let n,o=0,r=0,d=s.nextNode();for(;o void`. - * - * A directive _factory_ is a function that takes arguments for data and - * configuration and returns a directive. Users of directive usually refer to - * the directive factory as the directive. For example, "The repeat directive". - * - * Usually a template author will invoke a directive factory in their template - * with relevant arguments, which will then return a directive function. - * - * Here's an example of using the `repeat()` directive factory that takes an - * array and a function to render an item: - * - * ```js - * html`
    <${repeat(items, (item) => html`
  • ${item}
  • `)}
` - * ``` - * - * When `repeat` is invoked, it returns a directive function that closes over - * `items` and the template function. When the outer template is rendered, the - * return directive function is called with the Part for the expression. - * `repeat` then performs it's custom logic to render multiple items. - * - * @param f The directive factory function. Must be a function that returns a - * function of the signature `(part: Part) => void`. The returned function will - * be called with the part object. - * - * @example - * - * import {directive, html} from 'lit-html'; - * - * const immutable = directive((v) => (part) => { - * if (part.value !== v) { - * part.setValue(v) - * } - * }); - */ - const directive = (f) => ((...args) => { - const d = f(...args); - directives.set(d, true); - return d; - }); - const isDirective = (o) => { - return typeof o === 'function' && directives.has(o); - }; - - /** - * @license - * Copyright (c) 2018 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 - */ - /** - * A sentinel value that signals that a value was handled by a directive and - * should not be written to the DOM. - */ - const noChange = {}; - /** - * A sentinel value that signals a NodePart to fully clear its content. - */ - const nothing = {}; - - /** + */const w=window.trustedTypes&&trustedTypes.createPolicy("lit-html",{createHTML:e=>e}),y=` ${s} `;class ${constructor(e,t,a,i){this.strings=e,this.values=t,this.type=a,this.processor=i}getHTML(){const e=this.strings.length-1;let t="",a=!1;for(let i=0;i-1||a)&&-1===e.indexOf("--\x3e",o+1);const r=h.exec(e);t+=null===r?e+(a?y:n):e.substr(0,r.index)+r[1]+r[2]+"$lit$"+r[3]+s}return t+=this.strings[e],t}getTemplateElement(){const e=document.createElement("template");let t=this.getHTML();return void 0!==w&&(t=w.createHTML(t)),e.innerHTML=t,e}} +/** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. * This code may only be used under the BSD style license found at @@ -492,127 +79,8 @@ * 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 - */ - /** - * An instance of a `Template` that can be attached to the DOM and updated - * with new values. - */ - class TemplateInstance { - constructor(template, processor, options) { - this.__parts = []; - this.template = template; - this.processor = processor; - this.options = options; - } - update(values) { - let i = 0; - for (const part of this.__parts) { - if (part !== undefined) { - part.setValue(values[i]); - } - i++; - } - for (const part of this.__parts) { - if (part !== undefined) { - part.commit(); - } - } - } - _clone() { - // There are a number of steps in the lifecycle of a template instance's - // DOM fragment: - // 1. Clone - create the instance fragment - // 2. Adopt - adopt into the main document - // 3. Process - find part markers and create parts - // 4. Upgrade - upgrade custom elements - // 5. Update - set node, attribute, property, etc., values - // 6. Connect - connect to the document. Optional and outside of this - // method. - // - // We have a few constraints on the ordering of these steps: - // * We need to upgrade before updating, so that property values will pass - // through any property setters. - // * We would like to process before upgrading so that we're sure that the - // cloned fragment is inert and not disturbed by self-modifying DOM. - // * We want custom elements to upgrade even in disconnected fragments. - // - // Given these constraints, with full custom elements support we would - // prefer the order: Clone, Process, Adopt, Upgrade, Update, Connect - // - // But Safari does not implement CustomElementRegistry#upgrade, so we - // can not implement that order and still have upgrade-before-update and - // upgrade disconnected fragments. So we instead sacrifice the - // process-before-upgrade constraint, since in Custom Elements v1 elements - // must not modify their light DOM in the constructor. We still have issues - // when co-existing with CEv0 elements like Polymer 1, and with polyfills - // that don't strictly adhere to the no-modification rule because shadow - // DOM, which may be created in the constructor, is emulated by being placed - // in the light DOM. - // - // The resulting order is on native is: Clone, Adopt, Upgrade, Process, - // Update, Connect. document.importNode() performs Clone, Adopt, and Upgrade - // in one step. - // - // The Custom Elements v1 polyfill supports upgrade(), so the order when - // polyfilled is the more ideal: Clone, Process, Adopt, Upgrade, Update, - // Connect. - const fragment = isCEPolyfill ? - this.template.element.content.cloneNode(true) : - document.importNode(this.template.element.content, true); - const stack = []; - const parts = this.template.parts; - // Edge needs all 4 parameters present; IE11 needs 3rd parameter to be null - const walker = document.createTreeWalker(fragment, 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */, null, false); - let partIndex = 0; - let nodeIndex = 0; - let part; - let node = walker.nextNode(); - // Loop through all the nodes and parts of a template - while (partIndex < parts.length) { - part = parts[partIndex]; - if (!isTemplatePartActive(part)) { - this.__parts.push(undefined); - partIndex++; - continue; - } - // Progress the tree walker until we find our next part's node. - // Note that multiple parts may share the same node (attribute parts - // on a single element), so this loop may not run at all. - while (nodeIndex < part.index) { - nodeIndex++; - if (node.nodeName === 'TEMPLATE') { - stack.push(node); - walker.currentNode = node.content; - } - if ((node = walker.nextNode()) === null) { - // We've exhausted the content inside a nested template element. - // Because we still have parts (the outer for-loop), we know: - // - There is a template in the stack - // - The walker will find a nextNode outside the template - walker.currentNode = stack.pop(); - node = walker.nextNode(); - } - } - // We've arrived at our part's node. - if (part.type === 'node') { - const part = this.processor.handleTextExpression(this.options); - part.insertAfterNode(node.previousSibling); - this.__parts.push(part); - } - else { - this.__parts.push(...this.processor.handleAttributeExpressions(node, part.name, part.strings, this.options)); - } - partIndex++; - } - if (isCEPolyfill) { - document.adoptNode(fragment); - customElements.upgrade(fragment); - } - return fragment; - } - } - - /** + */const k=e=>null===e||!("object"==typeof e||"function"==typeof e),A=e=>Array.isArray(e)||!(!e||!e[Symbol.iterator]);class x{constructor(e,t,a){this.dirty=!0,this.element=e,this.name=t,this.strings=a,this.parts=[];for(let e=0;e{try{const e={get capture(){return M=!0,!1}};window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch(e){}})();class E{constructor(e,t,a){this.value=void 0,this.__pendingValue=void 0,this.element=e,this.eventName=t,this.eventContext=a,this.__boundHandleEvent=e=>this.handleEvent(e)}setValue(e){this.__pendingValue=e}commit(){for(;v(this.__pendingValue);){const e=this.__pendingValue;this.__pendingValue=_,e(this)}if(this.__pendingValue===_)return;const e=this.__pendingValue,t=this.value,a=null==e||null!=t&&(e.capture!==t.capture||e.once!==t.once||e.passive!==t.passive),i=null!=e&&(null==t||a);a&&this.element.removeEventListener(this.eventName,this.__boundHandleEvent,this.__options),i&&(this.__options=D(e),this.element.addEventListener(this.eventName,this.__boundHandleEvent,this.__options)),this.value=e,this.__pendingValue=_}handleEvent(e){"function"==typeof this.value?this.value.call(this.eventContext||this.element,e):this.value.handleEvent(e)}}const D=e=>e&&(M?{capture:e.capture,passive:e.passive,once:e.once}:e.capture) +/** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. * This code may only be used under the BSD style license found at @@ -624,101 +92,8 @@ * 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 - */ - /** - * Our TrustedTypePolicy for HTML which is declared using the html template - * tag function. - * - * That HTML is a developer-authored constant, and is parsed with innerHTML - * before any untrusted expressions have been mixed in. Therefor it is - * considered safe by construction. - */ - const policy = window.trustedTypes && - trustedTypes.createPolicy('lit-html', { createHTML: (s) => s }); - const commentMarker = ` ${marker} `; - /** - * The return type of `html`, which holds a Template and the values from - * interpolated expressions. - */ - class TemplateResult { - constructor(strings, values, type, processor) { - this.strings = strings; - this.values = values; - this.type = type; - this.processor = processor; - } - /** - * Returns a string of HTML used to create a `