PageSourceSearch

https://webboard.app/build/p-61a129f2.entry.js

js webboard.app collected 2026-10-03 19:59:56 UTC 48,023 bytes, 171 lines download raw bytes

vendor: 4,912 bytes, lines 1-41
1import{r as t,h as i,a as e}from"./p-a13a36bb.js";import{a as s,t as n,p as o}from"./p-ac634c7f.js";import"./p-be0dc5c8.js";import"./p-f2660943.js";import"./p-9cc49b65.js";
2/**
3 * @license
4 * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
5 * This code may only be used under the BSD style license found at
6 * http://polymer.github.io/LICENSE.txt
7 * The complete set of authors may be found at
8 * http://polymer.github.io/AUTHORS.txt
9 * The complete set of contributors may be found at
10 * http://polymer.github.io/CONTRIBUTORS.txt
11 * Code distributed by Google as part of the polymer project is also
12 * subject to an additional IP rights grant found at
13 * http://polymer.github.io/PATENTS.txt
14 */const a="undefined"!=typeof window&&null!=window.customElements&&void 0!==window.customElements.polyfillWrapFlushCallback,r=(t,i,e=null)=>{for(;i!==e;){const e=i.nextSibling;t.removeChild(i),i=e}},h=`{{lit-${String(Math.random()).slice(2)}}}`,l=`\x3c!--${h}--\x3e`,d=new RegExp(`${h}|${l}`);class c{constructor(t,i){this.parts=[],this.element=i;const e=[],s=[],n=document.createTreeWalker(i.content,133,null,!1);let o=0,a=-1,r=0;const{strings:l,values:{length:c}}=t;for(;r<c;){const t=n.nextNode();if(null!==t){if(a++,1===t.nodeType){if(t.hasAttributes()){const i=t.attributes,{length:e}=i;let s=0;for(let t=0;t<e;t++)p(i[t].name,"$lit$")&&s++;for(;s-- >0;){const i=f.exec(l[r])[2],e=i.toLowerCase()+"$lit$",s=t.getAttribute(e);t.removeAttribute(e);const n=s.split(d);this.parts.push({type:"attribute",index:a,name:i,strings:n}),r+=n.length-1}}"TEMPLATE"===t.tagName&&(s.push(t),n.currentNode=t.content)}else if(3===t.nodeType){const i=t.data;if(i.indexOf(h)>=0){const s=t.parentNode,n=i.split(d),o=n.length-1;for(let i=0;i<o;i++){let e,o=n[i];if(""===o)e=m();else{const t=f.exec(o);null!==t&&p(t[2],"$lit$")&&(o=o.slice(0,t.index)+t[1]+t[2].slice(0,-"$lit$".length)+t[3]),e=document.createTextNode(o)}s.insertBefore(e,t),this.parts.push({type:"node",index:++a})}""===n[o]?(s.insertBefore(m(),t),e.push(t)):t.data=n[o],r+=o}}else if(8===t.nodeType)if(t.data===h){const i=t.parentNode;null!==t.previousSibling&&a!==o||(a++,i.insertBefore(m(),t)),o=a,this.parts.push({type:"node",index:a}),null===t.nextSibling?t.data="":(e.push(t),a--),r++}else{let i=-1;for(;-1!==(i=t.data.indexOf(h,i+1));)this.parts.push({type:"node",index:-1}),r++}}else n.currentNode=s.pop()}for(const t of e)t.parentNode.removeChild(t)}}const p=(t,i)=>{const e=t.length-i.length;return e>=0&&t.slice(e)===i},u=t=>-1!==t.index,m=()=>document.createComment(""),f=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;function g(t,i){const{element:{content:e},parts:s}=t,n=document.createTreeWalker(e,133,null,!1);let o=v(s),a=s[o],r=-1,h=0;const l=[];let d=null;for(;n.nextNode();){r++;const t=n.currentNode;for(t.previousSibling===d&&(d=null),i.has(t)&&(l.push(t),null===d&&(d=t)),null!==d&&h++;void 0!==a&&a.index===r;)a.index=null!==d?-1:a.index-h,o=v(s,o),a=s[o]}l.forEach((t=>t.parentNode.removeChild(t)))}const w=t=>{let i=11===t.nodeType?0:1;const e=document.createTreeWalker(t,133,null,!1);for(;e.nextNode();)i++;return i},v=(t,i=-1)=>{for(let e=i+1;e<t.length;e++)if(u(t[e]))return e;return-1},x=new WeakMap,b=t=>"function"==typeof t&&x.has(t),y={},k={};
15/**
16 * @license
17 * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
18 * This code may only be used under the BSD style license found at
19 * http://polymer.github.io/LICENSE.txt
20 * The complete set of authors may be found at
21 * http://polymer.github.io/AUTHORS.txt
22 * The complete set of contributors may be found at
23 * http://polymer.github.io/CONTRIBUTORS.txt
24 * Code distributed by Google as part of the polymer project is also
25 * subject to an additional IP rights grant found at
26 * http://polymer.github.io/PATENTS.txt
27 */
28/**
29 * @license
30 * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
31 * This code may only be used under the BSD style license found at
32 * http://polymer.github.io/LICENSE.txt
33 * The complete set of authors may be found at
34 * http://polymer.github.io/AUTHORS.txt
35 * The complete set of contributors may be found at
36 * http://polymer.github.io/CONTRIBUTORS.txt
37 * Code distributed by Google as part of the polymer project is also
38 * subject to an additional IP rights grant found at
39 * http://polymer.github.io/PATENTS.txt
40 */
41class C{constructor(t,i,e){this.__parts=[],this.template=t,this.processor=i,this.options=e}update(t){let i=0;for(const e of this.__parts)void 0!==e&&e.setValue(t[i]),i++;for(const t of this.__parts)void 0!==t&&t.commit()}_clone(){const t=a?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),i=[],e=this.template.parts,s=document.createTreeWalker(t,133,null,!1);let n,o=0,r=0,h=s.nextNode();for(;o<e.length;)if(n=e[o],u(n)){for(;r<n.index;
vendor: 8,228 bytes, lines 41-94
41)r++,"TEMPLATE"===h.nodeName&&(i.push(h),s.currentNode=h.content),null===(h=s.nextNode())&&(s.currentNode=i.pop(),h=s.nextNode());if("node"===n.type){const t=this.processor.handleTextExpression(this.options);t.insertAfterNode(h.previousSibling),this.__parts.push(t)}else this.__parts.push(...this.processor.handleAttributeExpressions(h,n.name,n.strings,this.options));o++}else this.__parts.push(void 0),o++;return a&&(document.adoptNode(t),customElements.upgrade(t)),t
42/**
43 * @license
44 * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
45 * This code may only be used under the BSD style license found at
46 * http://polymer.github.io/LICENSE.txt
47 * The complete set of authors may be found at
48 * http://polymer.github.io/AUTHORS.txt
49 * The complete set of contributors may be found at
50 * http://polymer.github.io/CONTRIBUTORS.txt
51 * Code distributed by Google as part of the polymer project is also
52 * subject to an additional IP rights grant found at
53 * http://polymer.github.io/PATENTS.txt
54 */}}const S=` ${h} `;class ${constructor(t,i,e,s){this.strings=t,this.values=i,this.type=e,this.processor=s}getHTML(){const t=this.strings.length-1;let i="",e=!1;for(let s=0;s<t;s++){const t=this.strings[s],n=t.lastIndexOf("\x3c!--");e=(n>-1||e)&&-1===t.indexOf("--\x3e",n+1);const o=f.exec(t);i+=null===o?t+(e?S:l):t.substr(0,o.index)+o[1]+o[2]+"$lit$"+o[3]+h}return i+=this.strings[t],i}getTemplateElement(){const t=document.createElement("template");return t.innerHTML=this.getHTML(),t
55/**
56 * @license
57 * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
58 * This code may only be used under the BSD style license found at
59 * http://polymer.github.io/LICENSE.txt
60 * The complete set of authors may be found at
61 * http://polymer.github.io/AUTHORS.txt
62 * The complete set of contributors may be found at
63 * http://polymer.github.io/CONTRIBUTORS.txt
64 * Code distributed by Google as part of the polymer project is also
65 * subject to an additional IP rights grant found at
66 * http://polymer.github.io/PATENTS.txt
67 */}}const B=t=>null===t||!("object"==typeof t||"function"==typeof t),j=t=>Array.isArray(t)||!(!t||!t[Symbol.iterator]);class _{constructor(t,i,e){this.dirty=!0,this.element=t,this.name=i,this.strings=e,this.parts=[];for(let t=0;t<e.length-1;t++)this.parts[t]=this._createPart()}_createPart(){return new z(this)}_getValue(){const t=this.strings,i=t.length-1;let e="";for(let s=0;s<i;s++){e+=t[s];const i=this.parts[s];if(void 0!==i){const t=i.value;if(B(t)||!j(t))e+="string"==typeof t?t:String(t);else for(const i of t)e+="string"==typeof i?i:String(i)}}return e+=t[i],e}commit(){this.dirty&&(this.dirty=!1,this.element.setAttribute(this.name,this._getValue()))}}class z{constructor(t){this.value=void 0,this.committer=t}setValue(t){t===y||B(t)&&t===this.value||(this.value=t,b(t)||(this.committer.dirty=!0))}commit(){for(;b(this.value);){const t=this.value;this.value=y,t(this)}this.value!==y&&this.committer.commit()}}class M{constructor(t){this.value=void 0,this.__pendingValue=void 0,this.options=t}appendInto(t){this.startNode=t.appendChild(m()),this.endNode=t.appendChild(m())}insertAfterNode(t){this.startNode=t,this.endNode=t.nextSibling}appendIntoPart(t){t.__insert(this.startNode=m()),t.__insert(this.endNode=m())}insertAfterPart(t){t.__insert(this.startNode=m()),this.endNode=t.endNode,t.endNode=this.startNode}setValue(t){this.__pendingValue=t}commit(){if(null===this.startNode.parentNode)return;for(;b(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=y,t(this)}const t=this.__pendingValue;t!==y&&(B(t)?t!==this.value&&this.__commitText(t):t instanceof $?this.__commitTemplateResult(t):t instanceof Node?this.__commitNode(t):j(t)?this.__commitIterable(t):t===k?(this.value=k,this.clear()):this.__commitText(t))}__insert(t){this.endNode.parentNode.insertBefore(t,this.endNode)}__commitNode(t){this.value!==t&&(this.clear(),this.__insert(t),this.value=t)}__commitText(t){const i=this.startNode.nextSibling,e="string"==typeof(t=null==t?"":t)?t:String(t);i===this.endNode.previousSibling&&3===i.nodeType?i.data=e:this.__commitNode(document.createTextNode(e)),this.value=t}__commitTemplateResult(t){const i=this.options.templateFactory(t);if(this.value instanceof C&&this.value.template===i)this.value.update(t.values);else{const e=new C(i,t.processor,this.options),s=e._clone();e.update(t.values),this.__commitNode(s),this.value=e}}__commitIterable(t){Array.isArray(this.value)||(this.value=[],this.clear());const i=this.value;let e,s=0;for(const n of t)e=i[s],void 0===e&&(e=new M(this.options),i.push(e),0===s?e.appendIntoPart(this):e.insertAfterPart(i[s-1])),e.setValue(n),e.commit(),s++;s<i.length&&(i.length=s,this.clear(e&&e.endNode))}clear(t=this.startNode){r(this.startNode.parentNode,t.nextSibling,this.endNode)}}class P{constructor(t,i,e){if(this.value=void 0,this.__pendingValue=void 0,2!==e.length||""!==e[0]||""!==e[1])throw new Error("Boolean attributes can only contain a single expression");this.element=t,this.name=i,this.strings=e}setValue(t){this.__pendingValue=t}commit(){for(;b(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=y,t(this)}if(this.__pendingValue===y)return;const t=!!this.__pendingValue;this.value!==t&&(t?this.element.setAttribute(this.name,""):this.element.removeAttribute(this.name),this.value=t),this.__pendingValue=y}}class A extends _{constructor(t,i,e){super(t,i,e),this.single=2===e.length&&""===e[0]&&""===e[1]}_createPart(){return new E(this)}_getValue(){return this.single?this.parts[0].value:super._getValue()}commit(){this.dirty&&(this.dirty=!1,this.element[this.name]=this._getValue())}}class E extends z{}let I=!1;(()=>{try{const t={get capture(){return I=!0,!1}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){}})();class T{constructor(t,i,e){this.value=void 0,this.__pendingValue=void 0,this.element=t,this.eventName=i,this.eventContext=e,this.__boundHandleEvent=t=>this.handleEvent(t)}setValue(t){this.__pendingValue=t}commit(){for(;b(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=y,t(this)}if(this.__pendingValue===y)return;const t=this.__pendingValue,i=this.value,e=null==t||null!=i&&(t.capture!==i.capture||t.once!==i.once||t.passive!==i.passive),s=null!=t&&(null==i||e);e&&this.element.removeEventListener(this.eventName,this.__boundHandleEvent,this.__options),s&&(this.__options=D(t),this.element.addEventListener(this.eventName,this.__boundHandleEvent,this.__options)),this.value=t,this.__pendingValue=y}handleEvent(t){"function"==typeof this.value?this.value.call(this.eventContext||this.element,t):this.value.handleEvent(t)}}const D=t=>t&&(I?{capture:t.capture,passive:t.passive,once:t.once}:t.capture
68/**
69 * @license
70 * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
71 * This code may only be used under the BSD style license found at
72 * http://polymer.github.io/LICENSE.txt
73 * The complete set of authors may be found at
74 * http://polymer.github.io/AUTHORS.txt
75 * The complete set of contributors may be found at
76 * http://polymer.github.io/CONTRIBUTORS.txt
77 * Code distributed by Google as part of the polymer project is also
78 * subject to an additional IP rights grant found at
79 * http://polymer.github.io/PATENTS.txt
80 */);function L(t){let i=O.get(t.type);void 0===i&&(i={stringsArray:new WeakMap,keyString:new Map},O.set(t.type,i));let e=i.stringsArray.get(t.strings);if(void 0!==e)return e;const s=t.strings.join(h);return e=i.keyString.get(s),void 0===e&&(e=new c(t,t.getTemplateElement()),i.keyString.set(s,e)),i.stringsArray.set(t.strings,e),e}const O=new Map,F=new WeakMap,N=new
81/**
82 * @license
83 * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
84 * This code may only be used under the BSD style license found at
85 * http://polymer.github.io/LICENSE.txt
86 * The complete set of authors may be found at
87 * http://polymer.github.io/AUTHORS.txt
88 * The complete set of contributors may be found at
89 * http://polymer.github.io/CONTRIBUTORS.txt
90 * Code distributed by Google as part of the polymer project is also
91 * subject to an additional IP rights grant found at
92 * http://polymer.github.io/PATENTS.txt
93 */
94class{handleAttributeExpressions(t,i,e,s){const n=i[0];
vendor: 5,342 bytes, lines 94-134
94return"."===n?new A(t,i.slice(1),e).parts:"@"===n?[new T(t,i.slice(1),s.eventContext)]:"?"===n?[new P(t,i.slice(1),e)]:new _(t,i,e).parts}handleTextExpression(t){return new M(t)}};
95/**
96 * @license
97 * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
98 * This code may only be used under the BSD style license found at
99 * http://polymer.github.io/LICENSE.txt
100 * The complete set of authors may be found at
101 * http://polymer.github.io/AUTHORS.txt
102 * The complete set of contributors may be found at
103 * http://polymer.github.io/CONTRIBUTORS.txt
104 * Code distributed by Google as part of the polymer project is also
105 * subject to an additional IP rights grant found at
106 * http://polymer.github.io/PATENTS.txt
107 */
108/**
109 * @license
110 * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
111 * This code may only be used under the BSD style license found at
112 * http://polymer.github.io/LICENSE.txt
113 * The complete set of authors may be found at
114 * http://polymer.github.io/AUTHORS.txt
115 * The complete set of contributors may be found at
116 * http://polymer.github.io/CONTRIBUTORS.txt
117 * Code distributed by Google as part of the polymer project is also
118 * subject to an additional IP rights grant found at
119 * http://polymer.github.io/PATENTS.txt
120 */
121"undefined"!=typeof window&&(window.litHtmlVersions||(window.litHtmlVersions=[])).push("1.2.1");const U=(t,...i)=>new $(t,i,"html",N)
122/**
123 * @license
124 * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
125 * This code may only be used under the BSD style license found at
126 * http://polymer.github.io/LICENSE.txt
127 * The complete set of authors may be found at
128 * http://polymer.github.io/AUTHORS.txt
129 * The complete set of contributors may be found at
130 * http://polymer.github.io/CONTRIBUTORS.txt
131 * Code distributed by Google as part of the polymer project is also
132 * subject to an additional IP rights grant found at
133 * http://polymer.github.io/PATENTS.txt
134 */,R=(t,i)=>`${t}--${i}`;let V=!0;void 0===window.ShadyCSS?V=!1:void 0===window.ShadyCSS.prepareTemplateDom&&(console.warn("Incompatible ShadyCSS version detected. Please update to at least @webcomponents/[email protected] and @webcomponents/[email protected]."),V=!1);const W=t=>i=>{const e=R(i.type,t);let s=O.get(e);void 0===s&&(s={stringsArray:new WeakMap,keyString:new Map},O.set(e,s));let n=s.stringsArray.get(i.strings);if(void 0!==n)return n;const o=i.strings.join(h);if(n=s.keyString.get(o),void 0===n){const e=i.getTemplateElement();V&&window.ShadyCSS.prepareTemplateDom(e,t),n=new c(i,e),s.keyString.set(o,n)}return s.stringsArray.set(i.strings,n),n},q=["html","svg"],Y=new Set;window.JSCompiler_renameProperty=t=>t;const H={toAttribute(t,i){switch(i){case Boolean:return t?"":null;case Object:case Array:return null==t?t:JSON.stringify(t)}return t},fromAttribute(t,i){switch(i){case Boolean:return null!==t;case Number:return null===t?null:Number(t);case Object:case Array:return JSON.parse(t)}return t}},J=(t,i)=>i!==t&&(i==i||t==t),G={attribute:!0,type:String,converter:H,reflect:!1,hasChanged:J};class K extends HTMLElement{constructor(){super(),this._updateState=0,this._instanceProperties=void 0,this._updatePromise=new Promise((t=>this._enableUpdatingResolver=t)),this._changedProperties=new Map,this._reflectingProperties=void 0,this.initialize()}static get observedAttributes(){this.finalize();const t=[];return this._classProperties.forEach(((i,e)=>{const s=this._attributeNameForProperty(e,i);void 0!==s&&(this._attributeToPropertyMap.set(s,e),t.push(s))})),t}static _ensureClassProperties(){if(!this.hasOwnProperty(JSCompiler_renameProperty("_classProperties",this))){this._classProperties=new Map;const t=Object.getPrototypeOf(this)._classProperties;void 0!==t&&t.forEach(((t,i)=>this._classProperties.set(i,t)))}}static createProperty(t,i=G){if(this._ensureClassProperties(),this._classProperties.set(t,i),i.noAccessor||this.prototype.hasOwnProperty(t))return;const e="symbol"==typeof t?Symbol():"__"+t,s=this.getPropertyDescriptor(t,e,i);void 0!==s&&Object.defineProperty(this.prototype,t,s)}static getPropertyDescriptor(t,i,e){return{get(){return this[i]},set(e){const s=this[t];this[i]=e,this._requestUpdate(t,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this._classProperties&&this._classProperties.get(t)||G}static finalize(){const t=Object.getPrototypeOf(this);if(t.hasOwnProperty("finalized")||t.finalize(),this.finalized=!0,this._ensureClassProperties(),this._attributeToPropertyMap=new Map,this.hasOwnProperty(JSCompiler_renameProperty("properties",this))){const t=this.properties,i=[...Object.getOwnPropertyNames(t),..."function"==typeof Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t):[]];for(const e of i)this.createProperty(e,t[e])}}static _attributeNameForProperty(t,i){const e=i.attribute;return!1===e?void 0:"string"==typeof e?e:"string"==typeof t?t.toLowerCase():void 0}static _valueHasChanged(t,i,e=J){return e(t,i)}static _propertyValueFromAttribute(t,i){const e=i.converter||H,s="function"==typeof e?e:e.fromAttribute;return s?s(t,i.type):t}static _propertyValueToAttribute(t,i){if(void 0===i.reflect)return;const e=i.converter;return(e&&e.toAttribute||H.toAttribute)(t,i.type)}initialize(){this._saveInstanceProperties(),this._requestUpdate()}_saveInstanceProperties(){this.constructor._classProperties.forEac
vendor: 7,992 bytes, lines 134-171
134h(((t,i)=>{if(this.hasOwnProperty(i)){const t=this[i];delete this[i],this._instanceProperties||(this._instanceProperties=new Map),this._instanceProperties.set(i,t)}}))}_applyInstanceProperties(){this._instanceProperties.forEach(((t,i)=>this[i]=t)),this._instanceProperties=void 0}connectedCallback(){this.enableUpdating()}enableUpdating(){void 0!==this._enableUpdatingResolver&&(this._enableUpdatingResolver(),this._enableUpdatingResolver=void 0)}disconnectedCallback(){}attributeChangedCallback(t,i,e){i!==e&&this._attributeToProperty(t,e)}_propertyToAttribute(t,i,e=G){const s=this.constructor,n=s._attributeNameForProperty(t,e);if(void 0!==n){const t=s._propertyValueToAttribute(i,e);if(void 0===t)return;this._updateState=8|this._updateState,null==t?this.removeAttribute(n):this.setAttribute(n,t),this._updateState=-9&this._updateState}}_attributeToProperty(t,i){if(8&this._updateState)return;const e=this.constructor,s=e._attributeToPropertyMap.get(t);if(void 0!==s){const t=e.getPropertyOptions(s);this._updateState=16|this._updateState,this[s]=e._propertyValueFromAttribute(i,t),this._updateState=-17&this._updateState}}_requestUpdate(t,i){let e=!0;if(void 0!==t){const s=this.constructor,n=s.getPropertyOptions(t);s._valueHasChanged(this[t],i,n.hasChanged)?(this._changedProperties.has(t)||this._changedProperties.set(t,i),!0!==n.reflect||16&this._updateState||(void 0===this._reflectingProperties&&(this._reflectingProperties=new Map),this._reflectingProperties.set(t,n))):e=!1}!this._hasRequestedUpdate&&e&&(this._updatePromise=this._enqueueUpdate())}requestUpdate(t,i){return this._requestUpdate(t,i),this.updateComplete}async _enqueueUpdate(){this._updateState=4|this._updateState;try{await this._updatePromise}catch(t){}const t=this.performUpdate();return null!=t&&await t,!this._hasRequestedUpdate}get _hasRequestedUpdate(){return 4&this._updateState}get hasUpdated(){return 1&this._updateState}performUpdate(){this._instanceProperties&&this._applyInstanceProperties();let t=!1;const i=this._changedProperties;try{t=this.shouldUpdate(i),t?this.update(i):this._markUpdated()}catch(i){throw t=!1,this._markUpdated(),i}t&&(1&this._updateState||(this._updateState=1|this._updateState,this.firstUpdated(i)),this.updated(i))}_markUpdated(){this._changedProperties=new Map,this._updateState=-5&this._updateState}get updateComplete(){return this._getUpdateComplete()}_getUpdateComplete(){return this._updatePromise}shouldUpdate(t){return!0}update(t){void 0!==this._reflectingProperties&&this._reflectingProperties.size>0&&(this._reflectingProperties.forEach(((t,i)=>this._propertyToAttribute(i,this[i],t))),this._reflectingProperties=void 0),this._markUpdated()}updated(t){}firstUpdated(t){}}K.finalized=!0;
135/**
136 * @license
137 * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
138 * This code may only be used under the BSD style license found at
139 * http://polymer.github.io/LICENSE.txt
140 * The complete set of authors may be found at
141 * http://polymer.github.io/AUTHORS.txt
142 * The complete set of contributors may be found at
143 * http://polymer.github.io/CONTRIBUTORS.txt
144 * Code distributed by Google as part of the polymer project is also
145 * subject to an additional IP rights grant found at
146 * http://polymer.github.io/PATENTS.txt
147 */
148const Z=(t,i)=>"method"===i.kind&&i.descriptor&&!("value"in i.descriptor)?Object.assign(Object.assign({},i),{finisher(e){e.createProperty(i.key,t)}}):{kind:"field",key:Symbol(),placement:"own",descriptor:{},initializer(){"function"==typeof i.initializer&&(this[i.key]=i.initializer.call(this))},finisher(e){e.createProperty(i.key,t)}};function Q(t){return(i,e)=>void 0!==e?((t,i,e)=>{i.constructor.createProperty(e,t)})(t,i,e):Z(t,i)
149/**
150@license
151Copyright (c) 2019 The Polymer Project Authors. All rights reserved.
152This code may only be used under the BSD style license found at
153http://polymer.github.io/LICENSE.txt The complete set of authors may be found at
154http://polymer.github.io/AUTHORS.txt The complete set of contributors may be
155found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as
156part of the polymer project is also subject to an additional IP rights grant
157found at http://polymer.github.io/PATENTS.txt
158*/}const X="adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,tt=Symbol();class it{constructor(t,i){if(i!==tt)throw new Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t}get styleSheet(){return void 0===this._styleSheet&&(X?(this._styleSheet=new CSSStyleSheet,this._styleSheet.replaceSync(this.cssText)):this._styleSheet=null),this._styleSheet}toString(){return this.cssText}}const et=(t,...i)=>{const e=i.reduce(((i,e,s)=>i+(t=>{if(t instanceof it)return t.cssText;if("number"==typeof t)return t;throw new Error(`Value passed to 'css' function must be a 'css' function result: ${t}. Use 'unsafeCSS' to pass non-literal values, but\n            take care to ensure page security.`)})(e)+t[s+1]),t[0]);return new it(e,tt)};
159/**
160 * @license
161 * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
162 * This code may only be used under the BSD style license found at
163 * http://polymer.github.io/LICENSE.txt
164 * The complete set of authors may be found at
165 * http://polymer.github.io/AUTHORS.txt
166 * The complete set of contributors may be found at
167 * http://polymer.github.io/CONTRIBUTORS.txt
168 * Code distributed by Google as part of the polymer project is also
169 * subject to an additional IP rights grant found at
170 * http://polymer.github.io/PATENTS.txt
171 */(window.litElementVersions||(window.litElementVersions=[])).push("2.3.1");const st={};class nt extends K{static getStyles(){return this.styles}static _getUniqueStyles(){if(this.hasOwnProperty(JSCompiler_renameProperty("_styles",this)))return;const t=this.getStyles();if(void 0===t)this._styles=[];else if(Array.isArray(t)){const i=(t,e)=>t.reduceRight(((t,e)=>Array.isArray(e)?i(e,t):(t.add(e),t)),e),e=i(t,new Set),s=[];e.forEach((t=>s.unshift(t))),this._styles=s}else this._styles=[t]}initialize(){super.initialize(),this.constructor._getUniqueStyles(),this.renderRoot=this.createRenderRoot(),window.ShadowRoot&&this.renderRoot instanceof window.ShadowRoot&&this.adoptStyles()}createRenderRoot(){return this.attachShadow({mode:"open"})}adoptStyles(){const t=this.constructor._styles;0!==t.length&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow?X?this.renderRoot.adoptedStyleSheets=t.map((t=>t.styleSheet)):this._needsShimAdoptedStyleSheets=!0:window.ShadyCSS.ScopingShim.prepareAdoptedCssText(t.map((t=>t.cssText)),this.localName))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&void 0!==window.ShadyCSS&&window.ShadyCSS.styleElement(this)}update(t){const i=this.render();super.update(t),i!==st&&this.constructor.render(i,this.renderRoot,{scopeName:this.localName,eventContext:this}),this._needsShimAdoptedStyleSheets&&(this._needsShimAdoptedStyleSheets=!1,this.constructor._styles.forEach((t=>{const i=document.createElement("style");i.textContent=t.cssText,this.renderRoot.appendChild(i)})))}render(){return st}}nt.finalized=!0,nt.render=(t,i,e)=>{if(!e||"object"!=typeof e||!e.scopeName)throw new Error("The `scopeName` option is required.");const s=e.scopeName,n=F.has(i),o=V&&11===i.nodeType&&!!i.host,a=o&&!Y.has(s),h=a?document.createDocumentFragment():i;if(((t,i,e)=>{let s=F.get(i);void 0===s&&(r(i,i.firstChild),F.set(i,s=new M(Object.assign({templateFactory:L},e))),s.appendInto(i)),s.setValue(t),s.commit()})(t,h,Object.assign({templateFactory:W(s)},e)),a){const t=F.get(h);F.delete(h),((t,i,e)=>{Y.add(t);const s=e?e.element:document.createElement("template"),n=i.querySelectorAll("style"),{length:o}=n;if(0===o)return void window.ShadyCSS.prepareTemplateStyles(s,t);const a=document.createElement("style");for(let t=0;t<o;t++){const i=n[t];i.parentNode.removeChild(i),a.textContent+=i.textContent}(t=>{q.forEach((i=>{const e=O.get(R(i,t));void 0!==e&&e.keyString.forEach((t=>{const{element:{content:i}}=t,e=new Set;
171Array.from(i.querySelectorAll("style")).forEach((t=>{e.add(t)})),g(t,e)}))}))})(t);const r=s.content;e?function(t,i,e=null){const{element:{content:s},parts:n}=t;if(null==e)return void s.appendChild(i);const o=document.createTreeWalker(s,133,null,!1);let a=v(n),r=0,h=-1;for(;o.nextNode();)for(h++,o.currentNode===e&&(r=w(i),e.parentNode.insertBefore(i,e));-1!==a&&n[a].index===h;){if(r>0){for(;-1!==a;)n[a].index+=r,a=v(n,a);return}a=v(n,a)}}(e,a,r.firstChild):r.insertBefore(a,r.firstChild),window.ShadyCSS.prepareTemplateStyles(s,t);const h=r.querySelector("style");if(window.ShadyCSS.nativeShadow&&null!==h)i.insertBefore(h.cloneNode(!0),i.firstChild);else if(e){r.insertBefore(a,r.firstChild);const t=new Set;t.add(a),g(e,t)}})(s,h,t.value instanceof C?t.value.template:void 0),r(i,i.firstChild),i.appendChild(h),F.set(i,t)}!n&&o&&window.ShadyCSS.styleElement(i.host)};var ot=function(t,i,e,s){var n,o=arguments.length,a=o<3?i:null===s?s=Object.getOwnPropertyDescriptor(i,e):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,i,e,s);else for(var r=t.length-1;r>=0;r--)(n=t[r])&&(a=(o<3?n(a):o>3?n(i,e,a):n(i,e))||a);return o>3&&a&&Object.defineProperty(i,e,a),a};let at=class extends nt{constructor(){super(),this.manifestpath="manifest.json",this.openmodal=!1,this.hasprompt=!1,this.relatedApps=[],this.explainer="This app can be installed on your PC or mobile device.  This will allow this web app to look and behave like any other installed app.  You will find it in your app lists and be able to pin it to your home screen, start menus or task bars.  This installed web app will also be able to safely interact with other apps and your operating system. ",this.featuresheader="Key Features",this.descriptionheader="Description",this.installbuttontext="Install",this.cancelbuttontext="Cancel",this.iosinstallinfotext="Tap the share button and then 'Add to Homescreen'",this.isSupportingBrowser=window.hasOwnProperty("BeforeInstallPromptEvent"),this.isIOS=navigator.userAgent.includes("iPhone")||navigator.userAgent.includes("iPad")||navigator.userAgent.includes("Macintosh")&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2,this.installed=!1,window.addEventListener("beforeinstallprompt",(t=>this.handleInstallPromptEvent(t))),document.addEventListener("keyup",(t=>{"Escape"===t.key&&this.cancel()}))}static get styles(){return et`:host{--install-focus-color:#919c9c;--install-button-color:#1FC2C8;--modal-z-index:9999;--background-z-index:9998;--modal-background-color:white}button{outline:0}#installModalWrapper{height:100vh;width:100vw;overflow:auto;position:fixed;bottom:0;top:0;left:0;right:0;z-index:var(--modal-z-index);display:flex;justify-content:center;align-items:center}#descriptionWrapper{margin-bottom:3em}#installModal{position:absolute;background:var(--modal-background-color);font-family:sans-serif;box-shadow:0 25px 26px rgba(32,36,50,.25),0 5px 9px rgba(51,58,83,.53);border-radius:10px;display:flex;flex-direction:column;padding:0;animation-name:opened;animation-duration:150ms;z-index:var(--modal-z-index);max-width:56em}@keyframes opened{from{transform:scale(.8,.8);opacity:.4}to{transform:scale(1,1);opacity:1}}@keyframes mobile{from{opacity:.6}to{opacity:1}}@keyframes fadein{from{opacity:.2}to{opacity:1}}#background{position:fixed;top:0;bottom:0;left:0;right:0;background:#e3e3e3b0;backdrop-filter:blur(5px);z-index:var(--background-z-index);animation-name:fadein;animation-duration:250ms}#headerContainer{display:flex;justify-content:space-between;margin:40px;margin-bottom:32px}#headerContainer h1{font-size:34px;color:#3c3c3c;margin-top:20px;margin-bottom:7px}#headerContainer img{height:122px;width:122px;background:#d3d3d3;border-radius:10px;padding:12px;border-radius:24px;margin-right:24px}#buttonsContainer{display:flex;justify-content:flex-end;position:relative;height:100px;background:#dedede75;width:100%;right:0;border-radius:0 0 12px 12px}#installButton,#installCancelButton,#openButton{text-align:center;align-content:center;align-self:center;vertical-align:middle;justify-self:flex-end;line-height:200%;flex:0 0 auto;display:inline-block;background:#0078d4;color:#fff;cursor:pointer;border:solid 1px transparent;outline:0}#openButton{background:var(--install-button-color)}#installButton,#installCancelButton{min-width:130px;margin-right:30px;background:var(--install-button-color);border-radius:20px;font-weight:600;font-size:14px;line-height:21px;padding-top:10px;padding-bottom:9px;padding-left:20px;padding-right:20px;outline:0;color:#fff}#closeButton{background:0 0;border:none;color:#000;padding-left:12px;padding-right:12px;padding-top:4px;padding-bottom:4px;border-radius:20px;font-weight:600;outline:0;cursor:pointer;align-self:self-end}#closeButton:focus,#installButton:focus,#installCancelButton:focus{box-shadow:0 0 0 3px var(--install-focus-color)}#contentContainer{margin-left:40px;margin-right:40px;flex:1}#contentContainer h3{font-size:22px;color:#3c3c3c;margin-bottom:12px}#contentContainer p{font-size:14px;color:#3c3c3c}#featuresScreenDiv{display:flex;justify-content:space-around;align-items:center;margin-right:20px}#featuresScreenDiv h3{font-style:normal;font-weight:600;font-size:22px;line-height:225%;margin-top:0}#keyFeatures{overflow:hidden;padding-right:2em}#keyFeatures ul{padding-inline-start:22px;margin-block-start:12px}#featuresScreenDiv #keyFeatures li{font-style:normal;font-weight:600;font-size:16px;line-height:29px;color:rgba(51,51,51,.72)}#screenshotsContainer{max-height:220px;display:flex;max-width:30em}#screenshotsContainer button{border:none;width:4em;transition:background-color .2s}#screenshotsContainer button:focus,#screenshotsContainer button:hover{background-color:#bbb}#screenshotsContainer button svg{width:28px;fill:#6b6969}#screenshots{display:flex;scroll-snap-type:x mandatory;flex-wrap:wrap;flex-direction:column;overflow-x:scroll;width:22em;max-height:220px;-webkit-overflow-scrolling:touch}#screenshots div{display:flex;align-items:center;justify-content:center;scroll-snap-align:start;height:14em;width:100%;background:#efefef}#screenshots img{height:100%;object-fit:contain}#screenshots::-webkit-scrollbar{display:none}#tagsDiv{margin-top:1em;margin-bottom:1em}#desc{width:100%;max-width:40em;font-size:14px;color:#7e7e7e;text-overflow:ellipsis;overflow:hidden}#logoContainer{display:flex}#tagsDiv span{background:grey;color:#fff;padding-left:12px;padding-right:12px;padding-bottom:4px;font-weight:700;border-radius:24px;margin-right:12px;padding-top:1px}#iosText{color:var(--install-button-color);text-align:center;font-weight:700;position:fixed;bottom:0;left:0;right:0;backdrop-filter:blur(10px);background:rgba(239,239,239,.17);margin:0;padding:2em}#manifest-description{white-space:pre-wrap}@media(max-height:780px){#buttonsContainer{height:70px;background:0 0}}@media(max-width:1220px){#installModal{margin:0;border-radius:0;min-height:100%;width:100%;animation-name:mobile;animation-duration:250ms}#screenshots{justify-content:center}}@media (max-width:962px){#headerContainer h1{margin-top:0;margin-bottom:0}#logoContainer{align-items:center}#desc{display:none}#headerContainer{margin-bottom:24px}#headerContainer img{height:42px;width:42px}}@media (max-width:800px){#background{display:none}#installModal{overflow:scroll;box-shadow:none;max-width:100%;height:100%}#screenshotsContainer{width:100%}#screenshots img{height:180px}#buttonsContainer{display:flex;justify-content:center;bottom:0;margin-bottom:0;border-radius:0;padding-top:1em;padding-bottom:1em}#buttonsContainer #installButton{margin-right:0}#featuresScreenDiv{flex-direction:column;align-items:flex-start;margin-right:0}#headerContainer{margin:20px}#desc{display:none}#contentContainer{margin-left:20px;margin-right:20px;margin-bottom:5em}#headerContainer img{height:60px;width:60px;margin-right:12px}#buttonsContainer{position:fixed;bottom:0;background:#efefef2b;backdrop-filter:blur(10px)}}@media(max-width:400px){#headerContainer h1{font-size:26px}#headerContainer img{height:40px;width:40px}#featuresScreenDiv h3{font-size:18px;margin-bottom:0}#keyFeatures ul{margin-top:0}}@media all and (display-mode:standalone){button{display:none}}`}async firstUpdated(){if(this.manifestpath)try{await this.getManifestData()}catch(t){console.error("Error getting manifest, check that you have a valid web manifest")}"getInstalledRelatedApps"in navigator&&(this.relatedApps=await navigator.getInstalledRelatedApps())}handleInstallPromptEvent(t){this.deferredprompt=t,this.hasprompt=!0,t.preventDefault()}checkManifest(t){t.icons&&t.icons[0]?t.name?t.description||console.error("Your web manifest must have a description listed"):console.error("Your web manifest must have a name listed"):console.error("Your web manifest must have atleast one icon listed")}async getManifestData(){try{const t=await fetch(this.manifestpath),i=await t.json();if(this.manifestdata=i,this.manifestdata)return this.checkManifest(this.manifestdata),i}catch(t){return null}}scrollToLeft(){const t=this.shadowRoot.querySelector("#screenshots");t.scrollBy({left:-t.clientWidth,top:0,behavior:"smooth"})}scrollToRight(){const t=this.shadowRoot.querySelector("#screenshots");t.scrollBy({left:t.clientWidth,top:0,behavior:"smooth"})}openPrompt(){this.openmodal=!0;let t=new CustomEvent("show");this.dispatchEvent(t)}closePrompt(){this.openmodal=!1;let t=new CustomEvent("hide");this.dispatchEvent(t)}shouldShowInstall(){return this.isSupportingBrowser&&this.relatedApps.length<1&&(this.hasprompt||this.isIOS)}async install(){if(this.deferredprompt){this.deferredprompt.prompt();let t=new CustomEvent("show");if(this.dispatchEvent(t),"accepted"===(await this.deferredprompt.userChoice).outcome){await this.cancel(),this.installed=!0;let t=new CustomEvent("hide");return this.dispatchEvent(t),!0}{await this.cancel(),this.installed=!0;let t=new CustomEvent("hide");return this.dispatchEvent(t),!1}}}getInstalledStatus(){return navigator.standalone?navigator.standalone:!!matchMedia("(display-mode: standalone)").matches}cancel(){return new Promise((t=>{this.openmodal=!1,this.hasAttribute("openmodal")&&this.removeAttribute("openmodal");let i=new CustomEvent("hide");this.dispatchEvent(i),t()}))}render(){return U`${"standalone"in navigator&&!1===navigator.standalone||!0!==this.usecustom&&this.shouldShowInstall()&&!1===this.installed?U`<button part="openButton" id="openButton" @click="${()=>this.openPrompt()}"><slot>${this.installbuttontext}</slot></button>`:null} ${!0===this.openmodal?U`<div id="installModalWrapper">${this.openmodal?U`<div id="background" @click="${()=>this.cancel()}"></div>`:null}<div id="installModal" part="installModal"><div id="headerContainer"><div id="logoContainer"><img src="${this.iconpath?this.iconpath:this.manifestdata.icons[0].src}" alt="App Logo"><div id="installTitle"><h1>${this.manifestdata.short_name||this.manifestdata.name}</h1><p id="desc">${this.explainer}</p></div></div><button id="closeButton" @click="${()=>this.cancel()}"><svg width="23" height="22" viewBox="0 0 23 22" fill="none" xmlns="http://www.w3.org/2000/svg"><path opacity="0.33" fill-rule="evenodd" clip-rule="evenodd" d="M1.11932 0.357981C1.59693 -0.119327 2.37129 -0.119327 2.8489 0.357981L11.7681 9.27152L20.6873 0.357981C21.165 -0.119327 21.9393 -0.119327 22.4169 0.357981C22.8945 0.835288 22.8945 1.60916 22.4169 2.08646L13.4977 11L22.4169 19.9135C22.8945 20.3908 22.8945 21.1647 22.4169 21.642C21.9393 22.1193 21.165 22.1193 20.6873 21.642L11.7681 12.7285L2.8489 21.642C2.37129 22.1193 1.59693 22.1193 1.11932 21.642C0.641705 21.1647 0.641705 20.3908 1.11932 19.9135L10.0385 11L1.11932 2.08646C0.
171641705 1.60916 0.641705 0.835288 1.11932 0.357981Z" fill="#60656D"/></svg></button></div><div id="contentContainer"><div id="featuresScreenDiv">${this.manifestdata.features?U`<div id="keyFeatures"><h3>${this.featuresheader}</h3><ul>${this.manifestdata.features?this.manifestdata.features.map((t=>U`<li>${t}</li>`)):null}</ul></div>`:null} ${this.manifestdata.screenshots?U`<div id="screenshotsContainer"><button @click="${()=>this.scrollToLeft()}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M401.4 224h-214l83-79.4c11.9-12.5 11.9-32.7 0-45.2s-31.2-12.5-43.2 0L89 233.4c-6 5.8-9 13.7-9 22.4v.4c0 8.7 3 16.6 9 22.4l138.1 134c12 12.5 31.3 12.5 43.2 0 11.9-12.5 11.9-32.7 0-45.2l-83-79.4h214c16.9 0 30.6-14.3 30.6-32 .1-18-13.6-32-30.5-32z"/></svg></button><section id="screenshots">${this.manifestdata.screenshots.map((t=>U`<div><img alt="App Screenshot" src="${t.src}"></div>`))}</section><button @click="${()=>this.scrollToRight()}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M284.9 412.6l138.1-134c6-5.8 9-13.7 9-22.4v-.4c0-8.7-3-16.6-9-22.4l-138.1-134c-12-12.5-31.3-12.5-43.2 0-11.9 12.5-11.9 32.7 0 45.2l83 79.4h-214c-17 0-30.7 14.3-30.7 32 0 18 13.7 32 30.6 32h214l-83 79.4c-11.9 12.5-11.9 32.7 0 45.2 12 12.5 31.3 12.5 43.3 0z"/></svg></button></div>`:null}</div><div id="descriptionWrapper"><h3>${this.descriptionheader}</h3><p id="manifest-description">${this.manifestdata.description}</p></div></div>${this.isIOS?U`<p id="iosText">${this.iosinstallinfotext}</p>`:U`<div id="buttonsContainer">${this.deferredprompt?U`<button id="installButton" @click="${()=>this.install()}">${this.installbuttontext} ${this.manifestdata.short_name}</button>`:U`<button @click="${()=>this.cancel()}" id="installCancelButton">${this.cancelbuttontext}</button>`}</div>`}</div></div>`:null}`}};ot([Q({type:String})],at.prototype,"manifestpath",void 0),ot([Q({type:String})],at.prototype,"iconpath",void 0),ot([Q({type:Object})],at.prototype,"manifestdata",void 0),ot([Q({type:Boolean})],at.prototype,"openmodal",void 0),ot([Q({type:Boolean})],at.prototype,"showopen",void 0),ot([Q({type:Boolean})],at.prototype,"isSupportingBrowser",void 0),ot([Q({type:Boolean})],at.prototype,"isIOS",void 0),ot([Q({type:Boolean})],at.prototype,"installed",void 0),ot([Q({type:Boolean})],at.prototype,"hasprompt",void 0),ot([Q({type:Boolean})],at.prototype,"usecustom",void 0),ot([Q({type:Array})],at.prototype,"relatedApps",void 0),ot([Q({type:String})],at.prototype,"explainer",void 0),ot([Q({type:String})],at.prototype,"featuresheader",void 0),ot([Q({type:String})],at.prototype,"descriptionheader",void 0),ot([Q({type:String})],at.prototype,"installbuttontext",void 0),ot([Q({type:String})],at.prototype,"cancelbuttontext",void 0),ot([Q({type:String})],at.prototype,"iosinstallinfotext",void 0),ot([Q()],at.prototype,"deferredprompt",void 0),at=ot([t=>"function"==typeof t?((t,i)=>(window.customElements.define("pwa-install",i),i))(0,t):((t,i)=>{const{kind:e,elements:s}=i;return{kind:e,elements:s,finisher(t){window.customElements.define("pwa-install",t)}}})(0,t)],at);const rt=class{constructor(i){t(this,i),this.color="black",this.drawingMode="pen",this.savedImage=null,this.grid=!1,this.dragMode=!1,this.currentFileName=null,this.canInstall=!1,this.spanned=!1,this.mgtLoaded=!1}async componentDidLoad(){window.requestIdleCallback((()=>{this.setupWakeLock()})),window.getWindowSegments&&(this.handleSegments(),window.onresize=()=>{console.log("resize"),this.handleSegments()})}handleSegments(){const t=window.getWindowSegments();this.spanned=2===t.length}handleInstall(){this.canInstall=!0}async setupWakeLock(){"wakeLock"in navigator&&"request"in navigator.wakeLock&&(this.wakeLockController=await navigator.wakeLock.request("screen"))}changeColor(t){console.log("changeColor"),this.color=t.detail}async clear(){const t=this.el.querySelector("app-canvas"),i=await s.create({header:"Delete this Canvas?",message:"Are you sure you want to delete the canvas? This will ERASE your current work.",buttons:[{text:"Cancel",cssClass:"secondary"},{text:"Yes",handler:async()=>{this.currentFileName=null,await t.clearCanvas()}}]});await i.present()}async save(){const t=this.el.querySelector("app-canvas");if(this.currentFileHandle){const i=await n.create({message:"saving..."});await i.present(),console.log("this.currentFileHandle",this.currentFileHandle),await t.saveCanvas(this.currentFileName,this.currentFileHandle),await i.dismiss();const e=await n.create({message:`${this.currentFileName} saved`,duration:1800});await e.present()}else{const i=await n.create({message:"saving..."});await i.present(),this.currentFileHandle=await t.saveCanvas("",this.currentFileHandle),console.log(this.currentFileHandle),this.currentFileHandle&&this.currentFileHandle.name&&(this.currentFileName=this.currentFileHandle.name),await i.dismiss();const e=await n.create({message:`${this.currentFileName} saved`,duration:1800});await e.present()}}erase(){console.log("erase"),this.drawingMode="erase"}pen(){console.log("pen"),this.drawingMode="pen"}async allImages(){const t=await window.showOpenFilePicker({mimeTypes:["image/*"],extensions:["png","jpg","jpeg","webp"],description:"Image files"});this.currentFileHandle=t[0];const i=await this.currentFileHandle.getFile(),e=URL.createObjectURL(i),s=this.el.querySelector("app-canvas");console.log(i,t),await s.addImageToCanvas(e)}async doGrid(){if(console.log("here"),!0===this.grid){this.grid=!1;const t=this.el.querySelector("app-canvas");await t.clearGrid()}else{console.log("hello world"),this.grid=!0;const t=this.el.querySelector("app-canvas");await t.drawGrid()}}async doImage(t){console.log(t)}async openSettings(t){console.log(t);const i=await o.create({component:"app-settings",event:t,cssClass:"settingsPopover",showBackdrop:!1!==navigator.userAgent.includes("iPad")||!window.matchMedia("(min-width: 1450px)").matches});await i.present()}async openLoginPop(t){const i=await o.create({component:"login-pop",event:t,showBackdrop:!window.matchMedia("(min-width: 1450px)").matches});await i.present()}doDrag(){this.dragMode=!0!==this.dragMode}openInstall(){const t=this.el.querySelector("pwa-install");t.hasAttribute("openmodal")?t.removeAttribute("openmodal"):t.setAttribute("openmodal","")}doShare(){this.el.querySelector("app-canvas").shareCanvas()}handleLive(){this.el.querySelector("app-canvas").liveConnect()}spanCanvas(){!0===this.spanned?(this.spanned=!1,this.el.querySelector("app-canvas").resizeCanvas()):(this.el.querySelector("app-canvas").resizeCanvas(window.innerWidth/2,window.innerHeight),this.spanned=!0)}async handleInkToShape(t){console.log("home inkshape",t.detail),await this.el.querySelector("app-canvas").inkToShape()}disconnectedCallback(){this.wakeLockController&&this.wakeLockController.release()}render(){return[i("div",{class:"app-home"},i("pwa-install",{usecustom:!0}),this.canInstall&&window.matchMedia("(min-width: 1200px)").matches&&!1===window.matchMedia("(display-mode: standalone)").matches?i("ion-button",{id:"pwaInstallButton",shape:"round",size:"small",onClick:()=>this.openInstall()},i("ion-icon",{slot:"start",name:"download"}),"Install"):null,this.canInstall&&!1===window.matchMedia("(min-width: 1200px)").matches?i("ion-button",{onClick:()=>this.openInstall(),id:"mobileInstallButton",fill:"clear",size:"small"},i("ion-icon",{name:"download"})):null,this.currentFileName?i("div",{id:"fileNameDiv"},i("span",null,this.currentFileName)):null,i("app-canvas",{savedDrawing:this.savedImage,mode:this.drawingMode,color:this.color}),i("app-controls",{onDoInkToShape:t=>this.handleInkToShape(t),onLive:()=>this.handleLive(),onDoShare:()=>this.doShare(),onDragMode:()=>this.doDrag(),onDoGrid:()=>this.doGrid(),onAllImages:()=>this.allImages(),onSaveCanvas:()=>this.save(),onPenMode:()=>this.pen(),onEraserMode:()=>this.erase(),onClearCanvas:()=>this.clear(),onColorSelected:t=>this.changeColor(t)}),i("div",{id:"settingsBlock"},i("ion-button",{shape:"round",size:"small",id:"settingsButton",color:"primary",onClick:t=>this.openSettings(t),fill:"clear"},i("ion-icon",{color:"primary",name:"settings-outline"})),i("div",null)))]}get el(){return e(this)}};rt.style="#spanFab{display:none}#pwaInstallButton{position:fixed;z-index:-1;top:18px;right:6em}pwa-install{--install-button-color:var(--ion-color-primary) !important}pwa-auth{position:absolute;right:5em;top:14px}pwa-auth::part(signInButton){background:var(--ion-color-primary);color:white;padding:10px;text-transform:uppercase;border-radius:22px;padding-left:2em;padding-right:2em}#signInText{color:var(--ion-color-primary);margin-right:2em;font-weight:bold}#mobileInstallButton{position:fixed;bottom:4px;right:8px;background:#d3d3d3a6;border-radius:50%;height:40px;width:40px;z-index:-1}#settingsButton{font-size:18px}.settingsPopover .popover-content{border-radius:14px !important}#settingsBlock{position:fixed;top:12px;right:16px;display:flex;align-items:center;justify-content:space-around;background:white;border-radius:24px;z-index:-1}.login-button{border-radius:24px}#fileNameDiv{z-index:9999;position:fixed;width:100%;pointer-events:none;display:flex;justify-content:center;align-items:center}app-canvas{position:fixed;top:0;bottom:0;left:0;right:0;z-index:-2}@media (max-width: 500px){#fileNameDiv{display:none}#settingsButton{display:none}pwa-auth{display:none}}#fileNameDiv span{background:#1976d25e;color:white;font-size:18px;padding-left:2em;padding-right:2em;padding-top:6px;padding-bottom:6px;border-radius:22px;margin-top:10px;backdrop-filter:blur(10px);animation-name:slidedown;animation-duration:300ms}@keyframes slidedown{from{opacity:0.6;transform:translateY(-60px)}to{opacity:1;transform:translateY(0)}}@media (min-width: 1200px){.imagesModal{--width:56em !important}}@media (horizontal-viewport-segments: 2){#spanFab{display:initial}#fileNameDiv{width:50%}}@media (screen-spanning: single-fold-vertical){#spanFab{display:initial}#fileNameDiv{width:50%}}";export{rt as app_home}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.