From e3abef18f71b17928dfd8808d6323ef25c85de4c Mon Sep 17 00:00:00 2001 From: userquin Date: Wed, 18 Dec 2024 21:46:27 +0100 Subject: [PATCH 1/2] fix!: subpackage exports types --- .gitignore | 3 +- dist/pwa-install.bundle.js | 2 +- dist/pwa-install.bundle.js.map | 2 +- dist/pwa-install.es.js | 2 +- dist/pwa-install.es.js.map | 2 +- dist/react-legacy/pwa-install.react-legacy.js | 2 +- .../pwa-install.react-legacy.js.map | 2 +- dist/types/index.d.ts | 2 +- .../pwa-install.react-legacy.d.ts | 2 +- dist/umd/pwa-install.umd.js | 2 +- dist/umd/pwa-install.umd.js.map | 2 +- docs/pwa-install.bundle.js | 2 +- docs/service-worker.js | 2 +- package.json | 40 ++++++++++--------- scripts/postbuild.mjs | 20 ++++++++++ 15 files changed, 56 insertions(+), 31 deletions(-) create mode 100644 scripts/postbuild.mjs diff --git a/.gitignore b/.gitignore index da59e70..56d9c6b 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ node_modules/ package-lock.json *.tsbuildinfo .npm -.eslintcache \ No newline at end of file +.eslintcache +.idea/ diff --git a/dist/pwa-install.bundle.js b/dist/pwa-install.bundle.js index d88b6d5..5536991 100644 --- a/dist/pwa-install.bundle.js +++ b/dist/pwa-install.bundle.js @@ -1,2 +1,2 @@ -var PWAInstallComponent;(()=>{"use strict";var e={d:(t,a)=>{for(var i in a)e.o(a,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:a[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{PWAInstallElement:()=>oa});var a={};e.r(a),e.d(a,{templates:()=>ct});var i={};e.r(i),e.d(i,{templates:()=>pt});var o={};e.r(o),e.d(o,{templates:()=>ht});var s={};e.r(s),e.d(s,{templates:()=>gt});var l={};e.r(l),e.d(l,{templates:()=>bt});var n={};e.r(n),e.d(n,{templates:()=>ut});var r={};e.r(r),e.d(r,{templates:()=>ft});var d={};e.r(d),e.d(d,{templates:()=>mt});var c={};e.r(c),e.d(c,{templates:()=>vt});var p={};e.r(p),e.d(p,{templates:()=>wt});var h={};e.r(h),e.d(h,{templates:()=>yt});var g={};e.r(g),e.d(g,{templates:()=>xt});var b={};e.r(b),e.d(b,{templates:()=>kt});var u={};e.r(u),e.d(u,{templates:()=>_t});var f={};e.r(f),e.d(f,{templates:()=>$t});var m={};e.r(m),e.d(m,{templates:()=>At});var v={};e.r(v),e.d(v,{templates:()=>St});var w={};e.r(w),e.d(w,{templates:()=>Et});var y={};e.r(y),e.d(y,{templates:()=>Dt});var x={};e.r(x),e.d(x,{templates:()=>Pt});var k={};e.r(k),e.d(k,{templates:()=>jt});const _=globalThis,$=_.ShadowRoot&&(void 0===_.ShadyCSS||_.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,A=Symbol(),S=new WeakMap;class E{constructor(e,t,a){if(this._$cssResult$=!0,a!==A)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o;const t=this.t;if($&&void 0===e){const a=void 0!==t&&1===t.length;a&&(e=S.get(t)),void 0===e&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),a&&S.set(t,e))}return e}toString(){return this.cssText}}const D=(e,...t)=>{const a=1===e.length?e[0]:t.reduce(((t,a,i)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if("number"==typeof e)return e;throw Error("Value passed to 'css' function must be a 'css' function result: "+e+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(a)+e[i+1]),e[0]);return new E(a,e,A)},P=(e,t)=>{if($)e.adoptedStyleSheets=t.map((e=>e instanceof CSSStyleSheet?e:e.styleSheet));else for(const a of t){const t=document.createElement("style"),i=_.litNonce;void 0!==i&&t.setAttribute("nonce",i),t.textContent=a.cssText,e.appendChild(t)}},j=$?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t="";for(const a of e.cssRules)t+=a.cssText;return(e=>new E("string"==typeof e?e:e+"",void 0,A))(t)})(e):e,{is:C,defineProperty:z,getOwnPropertyDescriptor:T,getOwnPropertyNames:R,getOwnPropertySymbols:I,getPrototypeOf:M}=Object,L=globalThis,U=L.trustedTypes,H=U?U.emptyScript:"",O=L.reactiveElementPolyfillSupport,B=(e,t)=>e,N={toAttribute(e,t){switch(t){case Boolean:e=e?H:null;break;case Object:case Array:e=null==e?e:JSON.stringify(e)}return e},fromAttribute(e,t){let a=e;switch(t){case Boolean:a=null!==e;break;case Number:a=null===e?null:Number(e);break;case Object:case Array:try{a=JSON.parse(e)}catch(e){a=null}}return a}},q=(e,t)=>!C(e,t),W={attribute:!0,type:String,converter:N,reflect:!1,hasChanged:q};Symbol.metadata??=Symbol("metadata"),L.litPropertyMetadata??=new WeakMap;class V extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=W){if(t.state&&(t.attribute=!1),this._$Ei(),this.elementProperties.set(e,t),!t.noAccessor){const a=Symbol(),i=this.getPropertyDescriptor(e,a,t);void 0!==i&&z(this.prototype,e,i)}}static getPropertyDescriptor(e,t,a){const{get:i,set:o}=T(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get(){return i?.call(this)},set(t){const s=i?.call(this);o.call(this,t),this.requestUpdate(e,s,a)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??W}static _$Ei(){if(this.hasOwnProperty(B("elementProperties")))return;const e=M(this);e.finalize(),void 0!==e.l&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(B("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(B("properties"))){const e=this.properties,t=[...R(e),...I(e)];for(const a of t)this.createProperty(a,e[a])}const e=this[Symbol.metadata];if(null!==e){const t=litPropertyMetadata.get(e);if(void 0!==t)for(const[e,a]of t)this.elementProperties.set(e,a)}this._$Eh=new Map;for(const[e,t]of this.elementProperties){const a=this._$Eu(e,t);void 0!==a&&this._$Eh.set(a,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const a=new Set(e.flat(1/0).reverse());for(const e of a)t.unshift(j(e))}else void 0!==e&&t.push(j(e));return t}static _$Eu(e,t){const a=t.attribute;return!1===a?void 0:"string"==typeof a?a:"string"==typeof e?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((e=>e(this)))}addController(e){(this._$EO??=new Set).add(e),void 0!==this.renderRoot&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){const e=new Map,t=this.constructor.elementProperties;for(const a of t.keys())this.hasOwnProperty(a)&&(e.set(a,this[a]),delete this[a]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return P(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((e=>e.hostConnected?.()))}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach((e=>e.hostDisconnected?.()))}attributeChangedCallback(e,t,a){this._$AK(e,a)}_$EC(e,t){const a=this.constructor.elementProperties.get(e),i=this.constructor._$Eu(e,a);if(void 0!==i&&!0===a.reflect){const o=(void 0!==a.converter?.toAttribute?a.converter:N).toAttribute(t,a.type);this._$Em=e,null==o?this.removeAttribute(i):this.setAttribute(i,o),this._$Em=null}}_$AK(e,t){const a=this.constructor,i=a._$Eh.get(e);if(void 0!==i&&this._$Em!==i){const e=a.getPropertyOptions(i),o="function"==typeof e.converter?{fromAttribute:e.converter}:void 0!==e.converter?.fromAttribute?e.converter:N;this._$Em=i,this[i]=o.fromAttribute(t,e.type),this._$Em=null}}requestUpdate(e,t,a){if(void 0!==e){if(a??=this.constructor.getPropertyOptions(e),!(a.hasChanged??q)(this[e],t))return;this.P(e,t,a)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(e,t,a){this._$AL.has(e)||this._$AL.set(e,t),!0===a.reflect&&this._$Em!==e&&(this._$Ej??=new Set).add(e)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}const e=this.scheduleUpdate();return null!=e&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}const e=this.constructor.elementProperties;if(e.size>0)for(const[t,a]of e)!0!==a.wrapped||this._$AL.has(t)||void 0===this[t]||this.P(t,this[t],a)}let e=!1;const t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach((e=>e.hostUpdate?.())),this.update(t)):this._$EU()}catch(t){throw e=!1,this._$EU(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach((e=>e.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Ej&&=this._$Ej.forEach((e=>this._$EC(e,this[e]))),this._$EU()}updated(e){}firstUpdated(e){}}V.elementStyles=[],V.shadowRootOptions={mode:"open"},V[B("elementProperties")]=new Map,V[B("finalized")]=new Map,O?.({ReactiveElement:V}),(L.reactiveElementVersions??=[]).push("2.0.4");const F=globalThis,Z=F.trustedTypes,Y=Z?Z.createPolicy("lit-html",{createHTML:e=>e}):void 0,G="$lit$",K=`lit$${Math.random().toFixed(9).slice(2)}$`,J="?"+K,Q=`<${J}>`,X=document,ee=()=>X.createComment(""),te=e=>null===e||"object"!=typeof e&&"function"!=typeof e,ae=Array.isArray,ie=e=>ae(e)||"function"==typeof e?.[Symbol.iterator],oe="[ \t\n\f\r]",se=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,le=/-->/g,ne=/>/g,re=RegExp(`>|${oe}(?:([^\\s"'>=/]+)(${oe}*=${oe}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),de=/'/g,ce=/"/g,pe=/^(?:script|style|textarea|title)$/i,he=e=>(t,...a)=>({_$litType$:e,strings:t,values:a}),ge=he(1),be=(he(2),he(3),Symbol.for("lit-noChange")),ue=Symbol.for("lit-nothing"),fe=new WeakMap,me=X.createTreeWalker(X,129);function ve(e,t){if(!ae(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==Y?Y.createHTML(t):t}const we=(e,t)=>{const a=e.length-1,i=[];let o,s=2===t?"":3===t?"":"",l=se;for(let t=0;t"===r[0]?(l=o??se,d=-1):void 0===r[1]?d=-2:(d=l.lastIndex-r[2].length,n=r[1],l=void 0===r[3]?re:'"'===r[3]?ce:de):l===ce||l===de?l=re:l===le||l===ne?l=se:(l=re,o=void 0);const p=l===re&&e[t+1].startsWith("/>")?" ":"";s+=l===se?a+Q:d>=0?(i.push(n),a.slice(0,d)+G+a.slice(d)+K+p):a+K+(-2===d?t:p)}return[ve(e,s+(e[a]||"")+(2===t?"":3===t?"":"")),i]};class ye{constructor({strings:e,_$litType$:t},a){let i;this.parts=[];let o=0,s=0;const l=e.length-1,n=this.parts,[r,d]=we(e,t);if(this.el=ye.createElement(r,a),me.currentNode=this.el.content,2===t||3===t){const e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;null!==(i=me.nextNode())&&n.length0){i.textContent=Z?Z.emptyScript:"";for(let a=0;a2||""!==a[0]||""!==a[1]?(this._$AH=Array(a.length-1).fill(new String),this.strings=a):this._$AH=ue}_$AI(e,t=this,a,i){const o=this.strings;let s=!1;if(void 0===o)e=xe(this,e,t,0),s=!te(e)||e!==this._$AH&&e!==be,s&&(this._$AH=e);else{const i=e;let l,n;for(e=o[0],l=0;l{const i=a?.renderBefore??t;let o=i._$litPart$;if(void 0===o){const e=a?.renderBefore??null;i._$litPart$=o=new _e(t.insertBefore(ee(),e),e,void 0,a??{})}return o._$AI(e),o})(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this.o?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this.o?.setConnected(!1)}render(){return be}}je._$litElement$=!0,je.finalized=!0,globalThis.litElementHydrateSupport?.({LitElement:je});const Ce=globalThis.litElementPolyfillSupport;Ce?.({LitElement:je});(globalThis.litElementVersions??=[]).push("4.1.0");const ze=(e,t,a)=>{let i=e[0];for(let o=1;o{return"string"!=typeof(t=e)&&"strTag"in t?ze(e.strings,e.values):e;var t};let Re=Te,Ie=!1;const Me="lit-localize-status";class Le{constructor(e){this.__litLocalizeEventHandler=e=>{"ready"===e.detail.status&&this.host.requestUpdate()},this.host=e}hostConnected(){window.addEventListener(Me,this.__litLocalizeEventHandler)}hostDisconnected(){window.removeEventListener(Me,this.__litLocalizeEventHandler)}}const Ue=e=>e.addController(new Le(e));class He{constructor(){this.settled=!1,this.promise=new Promise(((e,t)=>{this._resolve=e,this._reject=t}))}resolve(e){this.settled=!0,this._resolve(e)}reject(e){this.settled=!0,this._reject(e)}}const Oe=[];for(let e=0;e<256;e++)Oe[e]=(e>>4&15).toString(16)+(15&e).toString(16);const Be="",Ne="h",qe="s";function We(e,t){return(t?Ne:qe)+function(e){let t=0,a=8997,i=0,o=33826,s=0,l=40164,n=0,r=52210;for(let d=0;d>>16,a=65535&t,s+=i>>>16,o=65535&i,r=n+(s>>>16)&65535,l=65535&s;return Oe[r>>8]+Oe[255&r]+Oe[l>>8]+Oe[255&l]+Oe[o>>8]+Oe[255&o]+Oe[a>>8]+Oe[255&a]}("string"==typeof e?e:e.join(Be))}const Ve=new WeakMap,Fe=new Map;function Ze(e,t,a){if(e){const i=a?.id??function(e){const t="string"==typeof e?e:e.strings;let a=Fe.get(t);void 0===a&&(a=We(t,"string"!=typeof e&&!("strTag"in e)),Fe.set(t,a));return a}(t),o=e[i];if(o){if("string"==typeof o)return o;if("strTag"in o)return ze(o.strings,t.values,o.values);{let e=Ve.get(o);return void 0===e&&(e=o.values,Ve.set(o,e)),{...o,values:e.map((e=>t.values[e]))}}}}return Te(t)}function Ye(e){window.dispatchEvent(new CustomEvent(Me,{detail:e}))}let Ge,Ke,Je,Qe,Xe,et="",tt=new He;tt.resolve();let at=0;const it=()=>et,ot=e=>{if(e===(Ge??et))return tt.promise;if(!Je||!Qe)throw Error("Internal error");if(!Je.has(e))throw Error("Invalid locale code");at++;const t=at;Ge=e,tt.settled&&(tt=new He),Ye({status:"loading",loadingLocale:e});return(e===Ke?Promise.resolve({templates:void 0}):Qe(e)).then((a=>{at===t&&(et=e,Ge=void 0,Xe=a.templates,Ye({status:"ready",readyLocale:e}),tt.resolve())}),(a=>{at===t&&(Ye({status:"error",errorLocale:e,errorMessage:a.toString()}),tt.reject(a))})),tt.promise},st=e=>(t,a)=>{void 0!==a?a.addInitializer((()=>{customElements.define(e,t)})):customElements.define(e,t)},lt={attribute:!0,type:String,converter:N,reflect:!1,hasChanged:q},nt=(e=lt,t,a)=>{const{kind:i,metadata:o}=a;let s=globalThis.litPropertyMetadata.get(o);if(void 0===s&&globalThis.litPropertyMetadata.set(o,s=new Map),s.set(a.name,e),"accessor"===i){const{name:i}=a;return{set(a){const o=t.get.call(this);t.set.call(this,a),this.requestUpdate(i,o,e)},init(t){return void 0!==t&&this.P(i,void 0,e),t}}}if("setter"===i){const{name:i}=a;return function(a){const o=this[i];t.call(this,a),this.requestUpdate(i,o,e)}}throw Error("Unsupported decorator location: "+i)};function rt(e){return(t,a)=>"object"==typeof a?nt(e,t,a):((e,t,a)=>{const i=t.hasOwnProperty(a);return t.constructor.createProperty(a,i?{...e,wrapped:!0}:e),i?Object.getOwnPropertyDescriptor(t,a):void 0})(e,t,a)}const dt=["cs","da","de","el","es","fr","it","ja","km","ko","nl","no","pl","pt","ru","sr","sv","tr","uk","zh-CN","zh-HK"],ct={s182ab2d6c997515f:"Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.",s1b9047d53d9f9d22:'2) Нажать "Поделиться"',s37a9e8aec5713460:"Подробнее",s5c6aad7a7e4a1437:'3) Нажать "На экран «Домой»"',s6196153c4b0c1ea0:"Установить",s922329d6f6213590:"Добавить в Dock",sa5ef80b4bb9b39f8:"Свернуть",sa7551383d1897fcc:'2) Нажмите "Добавить в Dock"',sba52286c21552a4e:"Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.",sc79fd7641eb9a975:"Спрятать Инструкцию",scdaf4bbff76674c8:"На экран «Домой»",sdfe23506a3b0cdc8:"1) Открыть в Safari браузере",se740f75b95a51807:"Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.",sfea652f6580ff086:"Этот веб-сайт имеет функционал приложения."},pt={s182ab2d6c997515f:"Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.",s1b9047d53d9f9d22:"2) Gezinme çubuğunda Paylaş'a basın",s37a9e8aec5713460:"Daha Fazla",s5c6aad7a7e4a1437:"3) Ana Ekrana Ekle'ye basın",s6196153c4b0c1ea0:"Yükle",s922329d6f6213590:"Dock’a Ekle",sa5ef80b4bb9b39f8:"Küçült",sa7551383d1897fcc:"2) Dock’a ekleye basın",sba52286c21552a4e:"Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.",sc79fd7641eb9a975:"Talimatları gizle",scdaf4bbff76674c8:"Ana Ekrana Ekle",sdfe23506a3b0cdc8:"1) Safari tarayıcısında açın",se740f75b95a51807:"Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.",sfea652f6580ff086:"Bu site uygulama işlevselliğine sahiptir."},ht={s182ab2d6c997515f:"Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",s1b9047d53d9f9d22:"2) Drücken Sie auf Teilen in der Navigationsleiste",s37a9e8aec5713460:"Mehr",s5c6aad7a7e4a1437:"3) Drücken Sie Hinzufügen zum Startbildschirm",s6196153c4b0c1ea0:"Installieren",s922329d6f6213590:"Zum Dock hinzufügen",sa5ef80b4bb9b39f8:"Weniger",sa7551383d1897fcc:"2) Drücken Sie auf Zum Dock hinzufügen",sba52286c21552a4e:"Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.",sc79fd7641eb9a975:"Anleitung ausblenden",scdaf4bbff76674c8:"Hinzufügen zum Startbildschirm",sdfe23506a3b0cdc8:"1) In Safari-Browser öffnen",se740f75b95a51807:"Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",sfea652f6580ff086:"Diese Website verfügt über App-Funktionalität."},gt={s182ab2d6c997515f:"Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.",s1b9047d53d9f9d22:"2) Presionar Compartir en la barra de direcciones",s37a9e8aec5713460:"Más",s5c6aad7a7e4a1437:"3) Presionar Añadir a pantalla de inicio",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Añadir al Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Presionar Añadir al Dock",sba52286c21552a4e:"Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.",sc79fd7641eb9a975:"Esconder instrucciones",scdaf4bbff76674c8:"Añadir a pantalla de inicio",sdfe23506a3b0cdc8:"1) Abrir en el navegador web Safari",se740f75b95a51807:"Añádelo a tu Dock para una experiencia amplia y acceso fácil.",sfea652f6580ff086:"Este sitio tiene funcionalidad de aplicación."},bt={s182ab2d6c997515f:"Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.",s1b9047d53d9f9d22:"2) Druk op delen in de navigatiebalk",s37a9e8aec5713460:"Meer",s5c6aad7a7e4a1437:"3) Druk op Toevoegen aan het startscherm",s6196153c4b0c1ea0:"Installeren",s922329d6f6213590:"Toevoegen aan Dock",sa5ef80b4bb9b39f8:"Minder",sa7551383d1897fcc:"2) Druk op Toevoegen aan Dock",sba52286c21552a4e:"Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.",sc79fd7641eb9a975:"Instructie verbergen",scdaf4bbff76674c8:"Toevoegen aan het startscherm",sdfe23506a3b0cdc8:"1) Open in Safari-browser",se740f75b95a51807:"Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.",sfea652f6580ff086:"Deze site heeft app-functionaliteit."},ut={s182ab2d6c997515f:"Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",s1b9047d53d9f9d22:"2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης",s37a9e8aec5713460:"Περισσότερα",s5c6aad7a7e4a1437:"3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας",s6196153c4b0c1ea0:"Εγκατάσταση",s922329d6f6213590:"Προσθήκη στην Πρόσβαση",sa5ef80b4bb9b39f8:"Λιγότερα",sa7551383d1897fcc:"2) Πατήστε Προσθήκη στην Πρόσβαση",sba52286c21552a4e:"Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sc79fd7641eb9a975:"Απόκρυψη Οδηγιών",scdaf4bbff76674c8:"Προσθήκη στην Οθόνη Αφετηρίας",sdfe23506a3b0cdc8:"1) Ανοίξτε τον περιηγητή Safari",se740f75b95a51807:"Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sfea652f6580ff086:"Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής."},ft={s182ab2d6c997515f:"Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.",s1b9047d53d9f9d22:"2) Appuyez sur Partager dans la barre de navigation",s37a9e8aec5713460:"Plus",s5c6aad7a7e4a1437:"3) Appuyez sur Ajouter à l'écran d'accueil",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Ajouter au Dock",sa5ef80b4bb9b39f8:"Moins",sa7551383d1897fcc:"2) Appuyez sur Ajouter au Dock",sba52286c21552a4e:"Installez-le sur votre appareil pour une expérience complète et un accès facile.",sc79fd7641eb9a975:"Masquer les instructions",scdaf4bbff76674c8:"Ajouter à l'écran d'accueil",sdfe23506a3b0cdc8:"1) Ouvrir dans le navigateur Safari",se740f75b95a51807:"Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.",sfea652f6580ff086:"Ce site possède des fonctionnalités d'application."},mt={s182ab2d6c997515f:"Додајте га на Home Screen за широке могућности и лак приступ.",s1b9047d53d9f9d22:"2) Притисните Share у навигационој траци",s37a9e8aec5713460:"Више",s5c6aad7a7e4a1437:"3) Притисните Add to Home Screen",s6196153c4b0c1ea0:"Инсталирај",sa5ef80b4bb9b39f8:"Мање",sa7551383d1897fcc:"3) Притисните Add to Dock",sba52286c21552a4e:"Инсталирајте га на вашем уређају за широке могућности и лак приступ.",sc79fd7641eb9a975:"Сакриј упутство",sdfe23506a3b0cdc8:"1) Отворите у Safari прегледачу",se740f75b95a51807:"Додајте га у вашу Dock за широке могућности и лак приступ.",sfea652f6580ff086:"Овај сајт има функционалност апликације.",s922329d6f6213590:"Add to Dock",scdaf4bbff76674c8:"Add to Home Screen"},vt={s182ab2d6c997515f:"Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.",s1b9047d53d9f9d22:'2) Wybierz "Udostępnij"',s37a9e8aec5713460:"Więcej",s5c6aad7a7e4a1437:'3) Wybierz "Dodaj do Ekranu Głównego"',s6196153c4b0c1ea0:"Zainstaluj",s922329d6f6213590:"Dodaj do Docka",sa5ef80b4bb9b39f8:"Mniej",sa7551383d1897fcc:'2) Wybierz "Dodaj do Docka"',sba52286c21552a4e:"Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.",sc79fd7641eb9a975:"Ukryj instrukcję",scdaf4bbff76674c8:"Dodaj do Ekranu Głównego",sdfe23506a3b0cdc8:"1) Otwórz przeglądarkę Safari",se740f75b95a51807:"Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.",sfea652f6580ff086:"Ta strona posiada funkcje aplikacji."},wt={s182ab2d6c997515f:"Додайте на Домашній екран для зручного доступу та ширших можливостей.",s1b9047d53d9f9d22:"2) Натиснути «Поділитися»",s37a9e8aec5713460:"Детальніше",s5c6aad7a7e4a1437:"3) Натиснути «На Початковий екран»",s6196153c4b0c1ea0:"Встановити",s922329d6f6213590:"Додати на Dock",sa5ef80b4bb9b39f8:"Згорнути",sa7551383d1897fcc:"2) Натиснути «Додати на Dock»",sba52286c21552a4e:"Встановіть на ваш пристрій для зручного доступу та ширших можливостей.",sc79fd7641eb9a975:"Сховати Інструкцію",scdaf4bbff76674c8:"На Початковий экран",sdfe23506a3b0cdc8:"1) Відкрити в Safari браузері",se740f75b95a51807:"Додайте на панель Dock для зручного доступу та ширших можливостей.",sfea652f6580ff086:"Цей сайт має функції додатку."},yt={s182ab2d6c997515f:"將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。",s1b9047d53d9f9d22:"2) 點擊列表上的分享按鈕",s37a9e8aec5713460:"詳細資訊",s5c6aad7a7e4a1437:"3) 點擊加入主畫面",s6196153c4b0c1ea0:"安裝",s922329d6f6213590:"添加到Dock欄",sa5ef80b4bb9b39f8:"簡短資訊",sa7551383d1897fcc:"2) 點選添加到Dock欄",sba52286c21552a4e:"在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。",sc79fd7641eb9a975:"隱藏安裝流程",scdaf4bbff76674c8:"將App加入主畫面",sdfe23506a3b0cdc8:"1) 在Safari上瀏覽此網頁",se740f75b95a51807:"將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。",sfea652f6580ff086:"此網站具有應用程式功能。"},xt={s182ab2d6c997515f:"将其添加到主屏幕,以享受更丰富的体验并便于访问。",s1b9047d53d9f9d22:"2) 点击导航栏中的“分享”按钮",s37a9e8aec5713460:"更多",s5c6aad7a7e4a1437:"3) 点击“添加到主屏幕”",s6196153c4b0c1ea0:"安装",s922329d6f6213590:"添加到程序坞",sa5ef80b4bb9b39f8:"收起",sa7551383d1897fcc:"2) 点击“添加到程序坞”",sba52286c21552a4e:"在您的设备上安装,以享受更丰富的体验并便于访问。",sc79fd7641eb9a975:"隐藏安装步骤",scdaf4bbff76674c8:"添加到主屏幕",sdfe23506a3b0cdc8:"1) 在 Safari 浏览器中打开此页面",se740f75b95a51807:"将其添加到您的程序坞,以享受更全面的体验并便于访问。",sfea652f6580ff086:"此网站具备 App 功能特性。"},kt={s182ab2d6c997515f:"Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.",s1b9047d53d9f9d22:"2) Premi Condividi nella barra di navigazione",s37a9e8aec5713460:"Più",s5c6aad7a7e4a1437:"3) Premi Aggiungi alla schermata principale",s6196153c4b0c1ea0:"Installa",s922329d6f6213590:"Aggiungi al Dock",sa5ef80b4bb9b39f8:"Meno",sa7551383d1897fcc:"2) Premi Aggiungi al Dock",sba52286c21552a4e:"Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.",sc79fd7641eb9a975:"Nascondi istruzioni",scdaf4bbff76674c8:"Aggiungi alla schermata principale",sdfe23506a3b0cdc8:"1) Apri nel browser Safari",se740f75b95a51807:"Aggiungilo al Dock per un'esperienza più completa e un accesso facile.",sfea652f6580ff086:"Questo sito ha funzionalità di app."},_t={s182ab2d6c997515f:"Přidejte jej na plochu pro rozšířené využití a snadný přístup.",s1b9047d53d9f9d22:"2) Stiskněte tlačítko Sdílet na navigačním panelu",s37a9e8aec5713460:"Vice",s5c6aad7a7e4a1437:"3) Stiskněte tlačítko Přidat na plochu",s6196153c4b0c1ea0:"Nainstalovat",s922329d6f6213590:"Přidat do Docku",sa5ef80b4bb9b39f8:"Méně",sa7551383d1897fcc:"2) Stiskněte Přidat do Docku",sba52286c21552a4e:"Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.",sc79fd7641eb9a975:"Skrýt instrukce",scdaf4bbff76674c8:"Přidat na plochu",sdfe23506a3b0cdc8:"1) Otevřete v prohlížeči Safari",se740f75b95a51807:"Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.",sfea652f6580ff086:"Tento web má funkce aplikace."},$t={s182ab2d6c997515f:"Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.",s1b9047d53d9f9d22:"2) Trykk på Del-knappen i navigasjonslinjen",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Velg Legg til på Hjem-skjerm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Legg til i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Velg Legg til i Dock",sba52286c21552a4e:"Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.",sc79fd7641eb9a975:"Skjul instruksjoner",scdaf4bbff76674c8:"Legg til på Hjem-skjerm",sdfe23506a3b0cdc8:"1) Åpne i Safari",se740f75b95a51807:"Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.",sfea652f6580ff086:"Denne siden har app-funksjonalitet."},At={s182ab2d6c997515f:"Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.",s1b9047d53d9f9d22:"2) Pressione Compartilhar na barra de endereço",s37a9e8aec5713460:"Mais",s5c6aad7a7e4a1437:"3) Pressione Adicionar à Tela de Início",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Adicionar ao Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Pressione Adicionar ao Dock",sba52286c21552a4e:"Instale no dispositivo para uma melhor experiência e mais fácil acesso.",sc79fd7641eb9a975:"Ocultar Instruções",scdaf4bbff76674c8:"Adicionar à Tela de Início",sdfe23506a3b0cdc8:"1) Abra no navegador Safari",se740f75b95a51807:"Adicione ao Dock para uma melhor experiência e mais fácil acesso.",sfea652f6580ff086:"Este site possui funcionalidade de aplicativo."},St={s182ab2d6c997515f:"ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。",s1b9047d53d9f9d22:"2) ナビゲーションバーで共有を押す",s37a9e8aec5713460:"展開",s5c6aad7a7e4a1437:"3) 「ホーム画面に追加」を押す",s6196153c4b0c1ea0:"インストール",s922329d6f6213590:"Dockに追加",sa5ef80b4bb9b39f8:"折りたたむ",sa7551383d1897fcc:"2) 「Dockに追加」を押す",sba52286c21552a4e:"デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。",sc79fd7641eb9a975:"説明を非表示",scdaf4bbff76674c8:"ホーム画面に追加",sdfe23506a3b0cdc8:"1) Safariで開く",se740f75b95a51807:"ドックに追加して、幅広い体験と簡単なアクセスを実現してください。",sfea652f6580ff086:"このサイトはアプリ機能があります。"},Et={s182ab2d6c997515f:"Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.",s1b9047d53d9f9d22:"2) Tryck på Dela-knappen i verktygsfältet",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Välj Lägg till på hemskärmen",s6196153c4b0c1ea0:"Installera",s922329d6f6213590:"Lägg till i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Välj Lägg till i Dock",sba52286c21552a4e:"Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.",sc79fd7641eb9a975:"Göm instruktioner",scdaf4bbff76674c8:"Lägg till på hemskärmen",sdfe23506a3b0cdc8:"1) Öppna i Safari",se740f75b95a51807:"Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.",sfea652f6580ff086:"Denna webbsajt har app-funktionalitet."},Dt={s182ab2d6c997515f:"더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.",s1b9047d53d9f9d22:"2) 내비게이션 바에서 공유 버튼 누르기",s37a9e8aec5713460:"더보기",s5c6aad7a7e4a1437:"3) 홈 화면에 추가 버튼 누르기",s6196153c4b0c1ea0:"설치",s922329d6f6213590:"Dock에 추가",sa5ef80b4bb9b39f8:"닫기",sa7551383d1897fcc:"2) Dock에 추가 버튼 누르기",sba52286c21552a4e:"더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.",sc79fd7641eb9a975:"안내 숨기기",scdaf4bbff76674c8:"홈 화면에 추가",sdfe23506a3b0cdc8:"1) Safari 브라우저에서 열기",se740f75b95a51807:"더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.",sfea652f6580ff086:"이 사이트는 앱 기능을 가지고 있습니다."},Pt={s182ab2d6c997515f:"បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",s1b9047d53d9f9d22:"2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ",s37a9e8aec5713460:"បង្ហាញបន្ថែម",s5c6aad7a7e4a1437:"3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",s6196153c4b0c1ea0:"តំឡើង",s922329d6f6213590:"បន្ថែមទៅកាន់ Dock",sa5ef80b4bb9b39f8:"បង្ហាញតិច",sa7551383d1897fcc:"2) ចុចលើ បន្ថែមទៅកាន់ Dock",sba52286c21552a4e:"តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sc79fd7641eb9a975:"បិទការណែនាំ",scdaf4bbff76674c8:"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",sdfe23506a3b0cdc8:"1) បើកនៅក្នុងកម្មវិធី Safari",se740f75b95a51807:"បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sfea652f6580ff086:"គេហទំព័រនេះមានមុខងារជាកម្មវិធី។"},jt={s182ab2d6c997515f:"Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.",s1b9047d53d9f9d22:"2) Tryk på Del-knappen i navigationslinjen",s37a9e8aec5713460:"Mere",s5c6aad7a7e4a1437:"3) Vælg Tilføj til hjemmeskærm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Tilføj til Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Vælg Tilføj til Dock",sba52286c21552a4e:"Installer den på din enhed for en bedre oplevelse og nem adgang.",sc79fd7641eb9a975:"Skjul instruktion",scdaf4bbff76674c8:"Tilføj til hjemmeskærm",sdfe23506a3b0cdc8:"1) Åbn i Safari-browseren",se740f75b95a51807:"Tilføj den til din Dock for en bedre oplevelse og nem adgang.",sfea652f6580ff086:"Denne side har app-funktionalitet."},Ct=new Map([["ru",a],["tr",i],["de",o],["es",s],["nl",l],["el",n],["fr",r],["sr",d],["pl",c],["uk",p],["zh-HK",h],["zh-CN",g],["it",b],["cs",u],["no",f],["pt",m],["ja",v],["sv",w],["ko",y],["km",x],["da",k]]),{getLocale:zt,setLocale:Tt}=(Rt={sourceLocale:"en",targetLocales:dt,loadLocale:async e=>Ct.get(e)},function(e){if(Ie)throw Error("lit-localize can only be configured once");Re=e,Ie=!0}(((e,t)=>Ze(Xe,e,t))),et=Ke=Rt.sourceLocale,Je=new Set(Rt.targetLocales),Je.add(Rt.sourceLocale),Qe=Rt.loadLocale,{getLocale:it,setLocale:ot});var Rt;class It{constructor(){this.icons=[{src:""}],this.screenshots=void 0,this.short_name="PWA",this.name="Progressive web application",this.description="Progressive web application"}}const Mt=D`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`,Lt=(e,t,a)=>{const i=new CustomEvent(t,{detail:{message:a}});e.dispatchEvent(i)};class Ut{static isAppleMobile(){return!(!(["iPhone","iPad","iPod"].includes(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2)||!("serviceWorker"in navigator))}static isAppleDesktop(){const e=navigator.userAgent.toLowerCase();if(navigator.maxTouchPoints||!e.match(/macintosh/))return!1;const t=/version\/(\d{2})\./.exec(e);if(!(t&&t[1]&&parseInt(t[1])>=17))return!1;const a=!!document.createElement("audio").canPlayType('audio/wav; codecs="1"'),i=!!new OffscreenCanvas(1,1).getContext("webgl");return a&&i}static deviceFormFactor(){return window.matchMedia("(orientation: portrait)").matches?"narrow":"wide"}static isStandalone(){return!!(window.matchMedia("(display-mode: standalone)").matches||"standalone"in navigator&&!0===navigator.standalone)}static async getInstalledRelatedApps(){if("getInstalledRelatedApps"in navigator)try{return await navigator.getInstalledRelatedApps().then((e=>e))}catch(e){}return[]}static async isRelatedAppsInstalled(){return!!(await this.getInstalledRelatedApps()).length}static setStorageFlag(e,t,a=!1){try{a?localStorage.setItem(e,t.toString()):sessionStorage.setItem(e,t.toString())}catch(e){}}static getStorageFlag(e){try{return"true"===sessionStorage.getItem(e)||"true"===localStorage.getItem(e)}catch(e){return!1}}static eventInstalledSuccess(e){Lt(e,"pwa-install-success-event","App install success (Chromium/Android only)")}static eventInstalledFail(e){Lt(e,"pwa-install-fail-event","App install failed (Chromium/Android only)")}static eventUserChoiceResult(e,t){Lt(e,"pwa-user-choice-result-event",t)}static eventInstallAvailable(e){Lt(e,"pwa-install-available-event","App install available")}static eventInstallHowTo(e){Lt(e,"pwa-install-how-to-event","App install instruction showed")}static eventGallery(e){Lt(e,"pwa-install-gallery-event","App install gallery showed")}static normalizeManifestAssetUrls(e,t){const a=new URL(t,document.location.href);[...e.icons||[],...e.screenshots||[]].forEach((e=>{e.src=new URL(e.src,a).href}))}}const Ht=(e,t,a,i)=>ge`${e?ge``:""}`;var Ot=function(e,t,a,i){var o,s=arguments.length,l=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,a):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,a,i);else for(var n=e.length-1;n>=0;n--)(o=e[n])&&(l=(s<3?o(l):s>3?o(t,a,l):o(t,a))||l);return s>3&&l&&Object.defineProperty(t,a,l),l},Bt=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Nt=class extends je{constructor(){super(...arguments),this.screenshots=[],this.theme="default",this.getScrollElements=()=>{const e=this.shadowRoot?.querySelector("#paginated_gallery");if(!e)return;const t=e.querySelector(".gallery_scroller");if(!t)return;const a=Array.from(t.querySelectorAll("img"));return 0!==a.length?{scroller:t,items:a}:void 0},this.findCurrentItem=(e,t)=>{const a=e.scrollLeft;return t.find((e=>e.offsetWidth+e.offsetLeft>=a+e.offsetWidth/2.5))||null},this.scrollToPage=e=>{const t=this.getScrollElements();if(!t)return;const{scroller:a,items:i}=t,o=this.findCurrentItem(a,i);if(!o)return;const s=i.indexOf(o)+("next"===e?1:-1);s>=0&&s{this.scrollToPage("next")},this.scrollToPrevPage=()=>{this.scrollToPage("prev")},this._init=()=>{}}static get styles(){return Mt}firstUpdated(){const e=this.getScrollElements();e&&setTimeout((()=>{e.scroller.scrollTo({top:0,left:0})}),300)}connectedCallback(){super.connectedCallback(),this._init()}render(){return ge`${Ht(this.screenshots,this.theme,this.scrollToNextPage,this.scrollToPrevPage)}`}};Ot([rt({type:Array}),Bt("design:type",Array)],Nt.prototype,"screenshots",void 0),Ot([rt(),Bt("design:type",String)],Nt.prototype,"theme",void 0),Nt=Ot([st("pwa-gallery")],Nt);const qt=Nt,Wt=(e,t,a,i)=>ge`
icon
${location.hostname}
${t?ge`
${t}
`:""}`;var Vt=function(e,t,a,i){var o,s=arguments.length,l=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,a):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,a,i);else for(var n=e.length-1;n>=0;n--)(o=e[n])&&(l=(s<3?o(l):s>3?o(t,a,l):o(t,a))||l);return s>3&&l&&Object.defineProperty(t,a,l),l},Ft=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Zt=class extends je{constructor(){super(...arguments),this.props={name:"",description:"",icon:""},this.install={handleEvent:()=>{}},this.hideDialog=()=>{},this.disableClose=!1,this._callInstall=()=>{this.install.handleEvent()},this._callHide=()=>{this.hideDialog(),this.setupAppearence()},this.bindedElement=null,this._saveBodyStyle=document.body.style.overscrollBehaviorY,this.dragMobileSheet=(e,t,a)=>{if(!e||!t||!a)return null;let i=0;const o=t.clientHeight+a.clientHeight,s=e=>e.clientY||(e.changedTouches&&e.changedTouches.length?e.changedTouches[0].clientY:0),l=e=>{window.addEventListener("mouseup",n),window.addEventListener("mousemove",r),window.addEventListener("touchend",n),window.addEventListener("touchmove",r),i=s(e)-t.getBoundingClientRect().top,document.body.style.overscrollBehaviorY="none"},n=t=>{if(document.body.style.overscrollBehaviorY=this._saveBodyStyle,!this.disableClose&&s(t)>=window.innerHeight-25)d(t,window.innerHeight+50,!0);else if(window.innerHeight-s(t)>e.clientHeight/2.5){d(t,window.innerHeight-e.clientHeight);try{Ut.eventGallery(this.getRootNode().host)}catch(t){}}else d(t,window.innerHeight-o-35)},r=t=>{const a=s(t);this.disableClose&&window.innerHeight-a<70||a<=window.innerHeight-e.clientHeight+i||(e.style.setProperty("transition","none"),e.style.setProperty("--translateY",`translateY(${a-i}px)`))},d=(a,i,d)=>{window.removeEventListener("mouseup",n),window.removeEventListener("mousemove",r),window.removeEventListener("touchend",n),window.removeEventListener("touchmove",r),window.innerWidth>=768||(!i&&s(a)>=window.innerHeight-o?e.style.setProperty("--translateY",`translateY(calc(100vh - ${o}px))`):e.style.setProperty("--translateY",`translateY(${(i||s(a))+35}px)`),e.style.setProperty("transition","transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s"),d&&(t.removeEventListener("mousedown",l),t.removeEventListener("touchstart",l),setTimeout(this._callHide,250)))};return t.addEventListener("mousedown",l),t.addEventListener("touchstart",l,{passive:!0}),d(new MouseEvent("mouseup"),window.innerHeight-o-35),{touchElement:t,listener:l}},this.setupAppearence=()=>{this.bindedElement&&(this.bindedElement.touchElement.removeEventListener("mousedown",this.bindedElement.listener),this.bindedElement.touchElement.removeEventListener("touchstart",this.bindedElement.listener)),this.bindedElement=this.dragMobileSheet(this.parentElement?.parentElement,this.parentElement?.getElementsByClassName("touch-header")[0],this.parentElement?.getElementsByClassName("body-header")[0])},this._init=()=>{this.setupAppearence(),window.addEventListener("resize",this.setupAppearence)}}firstUpdated(){this._init()}createRenderRoot(){return this}connectedCallback(){super.connectedCallback()}render(){return ge`${Wt(this.props.name,this.props.description,this.props.icon,this._callInstall)}`}};Vt([rt({type:Object}),Ft("design:type",Object)],Zt.prototype,"props",void 0),Vt([rt({type:Object}),Ft("design:type",Object)],Zt.prototype,"install",void 0),Vt([rt(),Ft("design:type",Object)],Zt.prototype,"hideDialog",void 0),Vt([rt(),Ft("design:type",Object)],Zt.prototype,"disableClose",void 0),Zt=Vt([st("pwa-bottom-sheet")],Zt);const Yt=Zt,Gt=D`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,"Segoe UI",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:"";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,"Segoe UI",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:"";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`,Kt=D`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,"Segoe UI";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:"icon description" "welcome welcome" "how-to how-to" "gallery gallery" "button button";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"icon" "description" "welcome" "how-to" "gallery" "button";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`,Jt=1;class Qt{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,a){this.t=e,this._$AM=t,this.i=a}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}}const Xt=(e=>(...t)=>({_$litDirective$:e,values:t}))(class extends Qt{constructor(e){if(super(e),e.type!==Jt||"class"!==e.name||e.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(e){return" "+Object.keys(e).filter((t=>e[t])).join(" ")+" "}update(e,[t]){if(void 0===this.st){this.st=new Set,void 0!==e.strings&&(this.nt=new Set(e.strings.join(" ").split(/\s/).filter((e=>""!==e))));for(const e in t)t[e]&&!this.nt?.has(e)&&this.st.add(e);return this.render(t)}const a=e.element.classList;for(const e of this.st)e in t||(a.remove(e),this.st.delete(e));for(const e in t){const i=!!t[e];i===this.st.has(e)||this.nt?.has(e)||(i?(a.add(e),this.st.add(e)):(a.remove(e),this.st.delete(e)))}return be}}),ea=(e,t,a,i,o,s,l,n,r,d,c,p,h)=>{const g=()=>({available:r,gallery:h}),b=!o&&n.screenshots&&n.screenshots.length;return ge`
icon
${s?"":ge``}
${location.hostname}
${t?ge`
${t}
`:""} ${i?"":ge`
${a||`${Re("This site has app functionality.")} ${Re("Install it on your device for extensive experience and easy access.")}`}
`} ${b?ge``:""}
${b?ge``:""}
${b?ge``:""}
`},ta=(e,t,a,i,o,s,l,n,r,d,c,p,h,g,b)=>{const u=!o&&n.screenshots&&n.screenshots.length;return ge``};var aa=function(e,t,a,i){var o,s=arguments.length,l=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,a):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,a,i);else for(var n=e.length-1;n>=0;n--)(o=e[n])&&(l=(s<3?o(l):s>3?o(t,a,l):o(t,a))||l);return s>3&&l&&Object.defineProperty(t,a,l),l},ia=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let oa=class extends je{constructor(){super(...arguments),this.manifestUrl="/manifest.json",this.icon="",this.name="",this.description="",this.installDescription="",this.disableDescription=!1,this.disableScreenshots=!1,this.disableScreenshotsApple=!1,this.disableScreenshotsChrome=!1,this.manualApple=!1,this.manualChrome=!1,this.disableChrome=!1,this.disableClose=!1,this.useLocalStorage=!1,this.externalPromptEvent=null,this.platforms=[],this.userChoiceResult="",this.isDialogHidden=Ut.getStorageFlag("pwa-hide-install"),this.isInstallAvailable=!1,this.isAppleMobilePlatform=!1,this.isAppleDesktopPlatform=!1,this.isUnderStandaloneMode=!1,this.isRelatedAppsInstalled=!1,this._manifest=new It,this._howToRequested=!1,this._galleryRequested=!1,this._install={handleEvent:()=>{window.defferedPromptEvent&&(this.hideDialog(),window.defferedPromptEvent.prompt(),window.defferedPromptEvent.userChoice.then((e=>{this.userChoiceResult=e.outcome,Ut.eventUserChoiceResult(this,this.userChoiceResult)})).catch((e=>{Ut.eventInstalledFail(this)})),window.defferedPromptEvent=null)},passive:!0},this.install=()=>{this.isAppleMobilePlatform||this.isAppleDesktopPlatform?(this._howToRequested=!0,this.requestUpdate()):this._install.handleEvent()},this._hideDialog={handleEvent:()=>{this.isDialogHidden=!0,Ut.setStorageFlag("pwa-hide-install",!0,this.useLocalStorage),this.requestUpdate()},passive:!0},this._hideDialogUser=()=>{Ut.eventUserChoiceResult(this,"dismissed"),this.userChoiceResult="dismissed",this.hideDialog()},this.hideDialog=()=>{this._hideDialog.handleEvent()},this.showDialog=(e=!1)=>{this.isDialogHidden=!1,e&&(this.isInstallAvailable=!0),Ut.setStorageFlag("pwa-hide-install",!1,this.useLocalStorage),this.requestUpdate()},this.getInstalledRelatedApps=async()=>await Ut.getInstalledRelatedApps(),this._howToForApple={handleEvent:()=>{this._howToRequested=!this._howToRequested,this._howToRequested&&this._galleryRequested&&(this._galleryRequested=!1),this.requestUpdate(),this._howToRequested&&Ut.eventInstallHowTo(this)},passive:!0},this._toggleGallery={handleEvent:()=>{this._galleryRequested=!this._galleryRequested,this._howToRequested&&this._galleryRequested&&(this._howToRequested=!1),this._galleryRequested&&Ut.eventGallery(this),this.requestUpdate()},passive:!0},this._init=async()=>{if(window.defferedPromptEvent=null,this._checkInstalled(),!this.disableChrome){const e=e=>{window.defferedPromptEvent=e,e.preventDefault(),this.platforms=e.platforms,this.isRelatedAppsInstalled||this.isUnderStandaloneMode?this.isInstallAvailable=!1:(this.isInstallAvailable=!0,Ut.eventInstallAvailable(this)),"accepted"===this.userChoiceResult&&(this.isDialogHidden=!0,Ut.eventInstalledSuccess(this)),this.requestUpdate()};null!=this.externalPromptEvent?setTimeout((()=>e(this.externalPromptEvent)),300):window.addEventListener("beforeinstallprompt",e)}window.addEventListener("appinstalled",(e=>{window.defferedPromptEvent=null,this.isInstallAvailable=!1,this.requestUpdate(),Ut.eventInstalledSuccess(this)}));try{const e=await fetch(this.manifestUrl),t=await e.json();if(!e.ok||!t||!Object.keys(t))throw Error("Manifest not found");Ut.normalizeManifestAssetUrls(t,this.manifestUrl),this.icon=this.icon||t.icons?.length?t.icons[0].src:"",this.name=this.name||t.short_name||t.name||"",this.description=this.description||t.description||"",this._manifest=t}catch(e){this.icon=this.icon||this._manifest.icons?.[0].src||"",this.name=this.name||this._manifest.short_name||"",this.description=this.description||this._manifest.description||""}},this._requestUpdate=()=>{this.requestUpdate()}}static get styles(){return[Gt,Kt]}async _checkInstalled(){this.isUnderStandaloneMode=Ut.isStandalone(),this.isRelatedAppsInstalled=await Ut.isRelatedAppsInstalled(),this.isAppleMobilePlatform=Ut.isAppleMobile(),this.isAppleDesktopPlatform=Ut.isAppleDesktop(),this.isAppleMobilePlatform||this.isAppleDesktopPlatform?this.isUnderStandaloneMode||(this.manualApple&&this.hideDialog(),setTimeout((()=>{this.isInstallAvailable=!0,this.requestUpdate(),Ut.eventInstallAvailable(this)}),1e3)):this.manualChrome&&this.hideDialog()}connectedCallback(){(e=>{"nb"===e.slice(0,2)&&(e="no");switch(e){case"zh":case"zh-TW":e="zh-CN"}try{Ct.get(e)?Tt(e):Tt(e.slice(0,2))}catch{}})(navigator.language),this._init(),qt.finalized,Yt.finalized,super.connectedCallback()}willUpdate(e){this.externalPromptEvent&&e.has("externalPromptEvent")&&"object"==typeof this.externalPromptEvent&&this._init()}render(){return this.isAppleMobilePlatform||this.isAppleDesktopPlatform?ge`${ta(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsApple,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._howToForApple,this.isAppleDesktopPlatform,this._howToRequested,this._toggleGallery,this._galleryRequested)}`:ge`${ea(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsChrome,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._install,this._toggleGallery,this._galleryRequested)}`}};aa([rt({attribute:"manifest-url"}),ia("design:type",Object)],oa.prototype,"manifestUrl",void 0),aa([rt(),ia("design:type",Object)],oa.prototype,"icon",void 0),aa([rt(),ia("design:type",Object)],oa.prototype,"name",void 0),aa([rt(),ia("design:type",Object)],oa.prototype,"description",void 0),aa([rt({attribute:"install-description"}),ia("design:type",Object)],oa.prototype,"installDescription",void 0),aa([rt({attribute:"disable-install-description",type:Boolean}),ia("design:type",Object)],oa.prototype,"disableDescription",void 0),aa([rt({attribute:"disable-screenshots",type:Boolean}),ia("design:type",Object)],oa.prototype,"disableScreenshots",void 0),aa([rt({attribute:"disable-screenshots-apple",type:Boolean}),ia("design:type",Object)],oa.prototype,"disableScreenshotsApple",void 0),aa([rt({attribute:"disable-screenshots-chrome",type:Boolean}),ia("design:type",Object)],oa.prototype,"disableScreenshotsChrome",void 0),aa([rt({attribute:"manual-apple",type:Boolean}),ia("design:type",Object)],oa.prototype,"manualApple",void 0),aa([rt({attribute:"manual-chrome",type:Boolean}),ia("design:type",Object)],oa.prototype,"manualChrome",void 0),aa([rt({attribute:"disable-chrome",type:Boolean}),ia("design:type",Object)],oa.prototype,"disableChrome",void 0),aa([rt({attribute:"disable-close",type:Boolean}),ia("design:type",Object)],oa.prototype,"disableClose",void 0),aa([rt({attribute:"use-local-storage",type:Boolean}),ia("design:type",Object)],oa.prototype,"useLocalStorage",void 0),aa([function(e){return rt({...e,state:!0,attribute:!1})}(),ia("design:type",Object)],oa.prototype,"externalPromptEvent",void 0),oa=aa([(e,t)=>(e.addInitializer(Ue),e),st("pwa-install")],oa),PWAInstallComponent=t})(); +var PWAInstallComponent;(()=>{"use strict";var e={d:(t,a)=>{for(var i in a)e.o(a,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:a[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{PWAInstallElement:()=>ta});var a={};e.r(a),e.d(a,{templates:()=>nt});var i={};e.r(i),e.d(i,{templates:()=>rt});var o={};e.r(o),e.d(o,{templates:()=>dt});var s={};e.r(s),e.d(s,{templates:()=>ct});var l={};e.r(l),e.d(l,{templates:()=>pt});var n={};e.r(n),e.d(n,{templates:()=>ht});var r={};e.r(r),e.d(r,{templates:()=>gt});var d={};e.r(d),e.d(d,{templates:()=>bt});var c={};e.r(c),e.d(c,{templates:()=>ut});var p={};e.r(p),e.d(p,{templates:()=>ft});var h={};e.r(h),e.d(h,{templates:()=>mt});var g={};e.r(g),e.d(g,{templates:()=>vt});var b={};e.r(b),e.d(b,{templates:()=>wt});var u={};e.r(u),e.d(u,{templates:()=>yt});var f={};e.r(f),e.d(f,{templates:()=>xt});var m={};e.r(m),e.d(m,{templates:()=>kt});var v={};e.r(v),e.d(v,{templates:()=>_t});var w={};e.r(w),e.d(w,{templates:()=>$t});var y={};e.r(y),e.d(y,{templates:()=>At});var x={};e.r(x),e.d(x,{templates:()=>St});var k={};e.r(k),e.d(k,{templates:()=>Et});const _=globalThis,$=_.ShadowRoot&&(void 0===_.ShadyCSS||_.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,A=Symbol(),S=new WeakMap;class E{constructor(e,t,a){if(this._$cssResult$=!0,a!==A)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o;const t=this.t;if($&&void 0===e){const a=void 0!==t&&1===t.length;a&&(e=S.get(t)),void 0===e&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),a&&S.set(t,e))}return e}toString(){return this.cssText}}const D=(e,...t)=>{const a=1===e.length?e[0]:t.reduce(((t,a,i)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if("number"==typeof e)return e;throw Error("Value passed to 'css' function must be a 'css' function result: "+e+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(a)+e[i+1]),e[0]);return new E(a,e,A)},P=(e,t)=>{if($)e.adoptedStyleSheets=t.map((e=>e instanceof CSSStyleSheet?e:e.styleSheet));else for(const a of t){const t=document.createElement("style"),i=_.litNonce;void 0!==i&&t.setAttribute("nonce",i),t.textContent=a.cssText,e.appendChild(t)}},j=$?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t="";for(const a of e.cssRules)t+=a.cssText;return(e=>new E("string"==typeof e?e:e+"",void 0,A))(t)})(e):e,{is:C,defineProperty:z,getOwnPropertyDescriptor:T,getOwnPropertyNames:R,getOwnPropertySymbols:I,getPrototypeOf:M}=Object,L=globalThis,U=L.trustedTypes,H=U?U.emptyScript:"",O=L.reactiveElementPolyfillSupport,B=(e,t)=>e,N={toAttribute(e,t){switch(t){case Boolean:e=e?H:null;break;case Object:case Array:e=null==e?e:JSON.stringify(e)}return e},fromAttribute(e,t){let a=e;switch(t){case Boolean:a=null!==e;break;case Number:a=null===e?null:Number(e);break;case Object:case Array:try{a=JSON.parse(e)}catch(e){a=null}}return a}},q=(e,t)=>!C(e,t),W={attribute:!0,type:String,converter:N,reflect:!1,hasChanged:q};Symbol.metadata??=Symbol("metadata"),L.litPropertyMetadata??=new WeakMap;class V extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=W){if(t.state&&(t.attribute=!1),this._$Ei(),this.elementProperties.set(e,t),!t.noAccessor){const a=Symbol(),i=this.getPropertyDescriptor(e,a,t);void 0!==i&&z(this.prototype,e,i)}}static getPropertyDescriptor(e,t,a){const{get:i,set:o}=T(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get(){return i?.call(this)},set(t){const s=i?.call(this);o.call(this,t),this.requestUpdate(e,s,a)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??W}static _$Ei(){if(this.hasOwnProperty(B("elementProperties")))return;const e=M(this);e.finalize(),void 0!==e.l&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(B("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(B("properties"))){const e=this.properties,t=[...R(e),...I(e)];for(const a of t)this.createProperty(a,e[a])}const e=this[Symbol.metadata];if(null!==e){const t=litPropertyMetadata.get(e);if(void 0!==t)for(const[e,a]of t)this.elementProperties.set(e,a)}this._$Eh=new Map;for(const[e,t]of this.elementProperties){const a=this._$Eu(e,t);void 0!==a&&this._$Eh.set(a,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const a=new Set(e.flat(1/0).reverse());for(const e of a)t.unshift(j(e))}else void 0!==e&&t.push(j(e));return t}static _$Eu(e,t){const a=t.attribute;return!1===a?void 0:"string"==typeof a?a:"string"==typeof e?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((e=>e(this)))}addController(e){(this._$EO??=new Set).add(e),void 0!==this.renderRoot&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){const e=new Map,t=this.constructor.elementProperties;for(const a of t.keys())this.hasOwnProperty(a)&&(e.set(a,this[a]),delete this[a]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return P(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((e=>e.hostConnected?.()))}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach((e=>e.hostDisconnected?.()))}attributeChangedCallback(e,t,a){this._$AK(e,a)}_$EC(e,t){const a=this.constructor.elementProperties.get(e),i=this.constructor._$Eu(e,a);if(void 0!==i&&!0===a.reflect){const o=(void 0!==a.converter?.toAttribute?a.converter:N).toAttribute(t,a.type);this._$Em=e,null==o?this.removeAttribute(i):this.setAttribute(i,o),this._$Em=null}}_$AK(e,t){const a=this.constructor,i=a._$Eh.get(e);if(void 0!==i&&this._$Em!==i){const e=a.getPropertyOptions(i),o="function"==typeof e.converter?{fromAttribute:e.converter}:void 0!==e.converter?.fromAttribute?e.converter:N;this._$Em=i,this[i]=o.fromAttribute(t,e.type),this._$Em=null}}requestUpdate(e,t,a){if(void 0!==e){if(a??=this.constructor.getPropertyOptions(e),!(a.hasChanged??q)(this[e],t))return;this.P(e,t,a)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(e,t,a){this._$AL.has(e)||this._$AL.set(e,t),!0===a.reflect&&this._$Em!==e&&(this._$Ej??=new Set).add(e)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}const e=this.scheduleUpdate();return null!=e&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}const e=this.constructor.elementProperties;if(e.size>0)for(const[t,a]of e)!0!==a.wrapped||this._$AL.has(t)||void 0===this[t]||this.P(t,this[t],a)}let e=!1;const t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach((e=>e.hostUpdate?.())),this.update(t)):this._$EU()}catch(t){throw e=!1,this._$EU(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach((e=>e.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Ej&&=this._$Ej.forEach((e=>this._$EC(e,this[e]))),this._$EU()}updated(e){}firstUpdated(e){}}V.elementStyles=[],V.shadowRootOptions={mode:"open"},V[B("elementProperties")]=new Map,V[B("finalized")]=new Map,O?.({ReactiveElement:V}),(L.reactiveElementVersions??=[]).push("2.0.4");const F=globalThis,Z=F.trustedTypes,Y=Z?Z.createPolicy("lit-html",{createHTML:e=>e}):void 0,G="$lit$",K=`lit$${Math.random().toFixed(9).slice(2)}$`,J="?"+K,Q=`<${J}>`,X=document,ee=()=>X.createComment(""),te=e=>null===e||"object"!=typeof e&&"function"!=typeof e,ae=Array.isArray,ie=e=>ae(e)||"function"==typeof e?.[Symbol.iterator],oe="[ \t\n\f\r]",se=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,le=/-->/g,ne=/>/g,re=RegExp(`>|${oe}(?:([^\\s"'>=/]+)(${oe}*=${oe}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),de=/'/g,ce=/"/g,pe=/^(?:script|style|textarea|title)$/i,he=e=>(t,...a)=>({_$litType$:e,strings:t,values:a}),ge=he(1),be=(he(2),he(3),Symbol.for("lit-noChange")),ue=Symbol.for("lit-nothing"),fe=new WeakMap,me=X.createTreeWalker(X,129);function ve(e,t){if(!ae(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==Y?Y.createHTML(t):t}const we=(e,t)=>{const a=e.length-1,i=[];let o,s=2===t?"":3===t?"":"",l=se;for(let t=0;t"===r[0]?(l=o??se,d=-1):void 0===r[1]?d=-2:(d=l.lastIndex-r[2].length,n=r[1],l=void 0===r[3]?re:'"'===r[3]?ce:de):l===ce||l===de?l=re:l===le||l===ne?l=se:(l=re,o=void 0);const p=l===re&&e[t+1].startsWith("/>")?" ":"";s+=l===se?a+Q:d>=0?(i.push(n),a.slice(0,d)+G+a.slice(d)+K+p):a+K+(-2===d?t:p)}return[ve(e,s+(e[a]||"")+(2===t?"":3===t?"":"")),i]};class ye{constructor({strings:e,_$litType$:t},a){let i;this.parts=[];let o=0,s=0;const l=e.length-1,n=this.parts,[r,d]=we(e,t);if(this.el=ye.createElement(r,a),me.currentNode=this.el.content,2===t||3===t){const e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;null!==(i=me.nextNode())&&n.length0){i.textContent=Z?Z.emptyScript:"";for(let a=0;a2||""!==a[0]||""!==a[1]?(this._$AH=Array(a.length-1).fill(new String),this.strings=a):this._$AH=ue}_$AI(e,t=this,a,i){const o=this.strings;let s=!1;if(void 0===o)e=xe(this,e,t,0),s=!te(e)||e!==this._$AH&&e!==be,s&&(this._$AH=e);else{const i=e;let l,n;for(e=o[0],l=0;l{const i=a?.renderBefore??t;let o=i._$litPart$;if(void 0===o){const e=a?.renderBefore??null;i._$litPart$=o=new _e(t.insertBefore(ee(),e),e,void 0,a??{})}return o._$AI(e),o})(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return be}}je._$litElement$=!0,je.finalized=!0,globalThis.litElementHydrateSupport?.({LitElement:je});const Ce=globalThis.litElementPolyfillSupport;Ce?.({LitElement:je});(globalThis.litElementVersions??=[]).push("4.1.1");const ze=(e,t,a)=>{let i=e[0];for(let o=1;o{return"string"!=typeof(t=e)&&"strTag"in t?ze(e.strings,e.values):e;var t};let Re=Te,Ie=!1;const Me="lit-localize-status";class Le{constructor(e){this.__litLocalizeEventHandler=e=>{"ready"===e.detail.status&&this.host.requestUpdate()},this.host=e}hostConnected(){window.addEventListener(Me,this.__litLocalizeEventHandler)}hostDisconnected(){window.removeEventListener(Me,this.__litLocalizeEventHandler)}}const Ue=e=>e.addController(new Le(e));class He{constructor(){this.settled=!1,this.promise=new Promise(((e,t)=>{this._resolve=e,this._reject=t}))}resolve(e){this.settled=!0,this._resolve(e)}reject(e){this.settled=!0,this._reject(e)}}const Oe=[];for(let e=0;e<256;e++)Oe[e]=(e>>4&15).toString(16)+(15&e).toString(16);function Be(e,t){return(t?"h":"s")+function(e){let t=0,a=8997,i=0,o=33826,s=0,l=40164,n=0,r=52210;for(let d=0;d>>16,a=65535&t,s+=i>>>16,o=65535&i,r=n+(s>>>16)&65535,l=65535&s;return Oe[r>>8]+Oe[255&r]+Oe[l>>8]+Oe[255&l]+Oe[o>>8]+Oe[255&o]+Oe[a>>8]+Oe[255&a]}("string"==typeof e?e:e.join(""))}const Ne=new WeakMap,qe=new Map;function We(e,t,a){if(e){const i=a?.id??function(e){const t="string"==typeof e?e:e.strings;let a=qe.get(t);void 0===a&&(a=Be(t,"string"!=typeof e&&!("strTag"in e)),qe.set(t,a));return a}(t),o=e[i];if(o){if("string"==typeof o)return o;if("strTag"in o)return ze(o.strings,t.values,o.values);{let e=Ne.get(o);return void 0===e&&(e=o.values,Ne.set(o,e)),{...o,values:e.map((e=>t.values[e]))}}}}return Te(t)}function Ve(e){window.dispatchEvent(new CustomEvent(Me,{detail:e}))}let Fe,Ze,Ye,Ge,Ke,Je="",Qe=new He;Qe.resolve();let Xe=0;const et=()=>Je,tt=e=>{if(e===(Fe??Je))return Qe.promise;if(!Ye||!Ge)throw Error("Internal error");if(!Ye.has(e))throw Error("Invalid locale code");Xe++;const t=Xe;Fe=e,Qe.settled&&(Qe=new He),Ve({status:"loading",loadingLocale:e});return(e===Ze?Promise.resolve({templates:void 0}):Ge(e)).then((a=>{Xe===t&&(Je=e,Fe=void 0,Ke=a.templates,Ve({status:"ready",readyLocale:e}),Qe.resolve())}),(a=>{Xe===t&&(Ve({status:"error",errorLocale:e,errorMessage:a.toString()}),Qe.reject(a))})),Qe.promise},at=e=>(t,a)=>{void 0!==a?a.addInitializer((()=>{customElements.define(e,t)})):customElements.define(e,t)},it={attribute:!0,type:String,converter:N,reflect:!1,hasChanged:q},ot=(e=it,t,a)=>{const{kind:i,metadata:o}=a;let s=globalThis.litPropertyMetadata.get(o);if(void 0===s&&globalThis.litPropertyMetadata.set(o,s=new Map),s.set(a.name,e),"accessor"===i){const{name:i}=a;return{set(a){const o=t.get.call(this);t.set.call(this,a),this.requestUpdate(i,o,e)},init(t){return void 0!==t&&this.P(i,void 0,e),t}}}if("setter"===i){const{name:i}=a;return function(a){const o=this[i];t.call(this,a),this.requestUpdate(i,o,e)}}throw Error("Unsupported decorator location: "+i)};function st(e){return(t,a)=>"object"==typeof a?ot(e,t,a):((e,t,a)=>{const i=t.hasOwnProperty(a);return t.constructor.createProperty(a,i?{...e,wrapped:!0}:e),i?Object.getOwnPropertyDescriptor(t,a):void 0})(e,t,a)}const lt=["cs","da","de","el","es","fr","it","ja","km","ko","nl","no","pl","pt","ru","sr","sv","tr","uk","zh-CN","zh-HK"],nt={s182ab2d6c997515f:"Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.",s1b9047d53d9f9d22:'2) Нажать "Поделиться"',s37a9e8aec5713460:"Подробнее",s5c6aad7a7e4a1437:'3) Нажать "На экран «Домой»"',s6196153c4b0c1ea0:"Установить",s922329d6f6213590:"Добавить в Dock",sa5ef80b4bb9b39f8:"Свернуть",sa7551383d1897fcc:'2) Нажмите "Добавить в Dock"',sba52286c21552a4e:"Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.",sc79fd7641eb9a975:"Спрятать Инструкцию",scdaf4bbff76674c8:"На экран «Домой»",sdfe23506a3b0cdc8:"1) Открыть в Safari браузере",se740f75b95a51807:"Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.",sfea652f6580ff086:"Этот веб-сайт имеет функционал приложения."},rt={s182ab2d6c997515f:"Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.",s1b9047d53d9f9d22:"2) Gezinme çubuğunda Paylaş'a basın",s37a9e8aec5713460:"Daha Fazla",s5c6aad7a7e4a1437:"3) Ana Ekrana Ekle'ye basın",s6196153c4b0c1ea0:"Yükle",s922329d6f6213590:"Dock’a Ekle",sa5ef80b4bb9b39f8:"Küçült",sa7551383d1897fcc:"2) Dock’a ekleye basın",sba52286c21552a4e:"Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.",sc79fd7641eb9a975:"Talimatları gizle",scdaf4bbff76674c8:"Ana Ekrana Ekle",sdfe23506a3b0cdc8:"1) Safari tarayıcısında açın",se740f75b95a51807:"Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.",sfea652f6580ff086:"Bu site uygulama işlevselliğine sahiptir."},dt={s182ab2d6c997515f:"Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",s1b9047d53d9f9d22:"2) Drücken Sie auf Teilen in der Navigationsleiste",s37a9e8aec5713460:"Mehr",s5c6aad7a7e4a1437:"3) Drücken Sie Hinzufügen zum Startbildschirm",s6196153c4b0c1ea0:"Installieren",s922329d6f6213590:"Zum Dock hinzufügen",sa5ef80b4bb9b39f8:"Weniger",sa7551383d1897fcc:"2) Drücken Sie auf Zum Dock hinzufügen",sba52286c21552a4e:"Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.",sc79fd7641eb9a975:"Anleitung ausblenden",scdaf4bbff76674c8:"Hinzufügen zum Startbildschirm",sdfe23506a3b0cdc8:"1) In Safari-Browser öffnen",se740f75b95a51807:"Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",sfea652f6580ff086:"Diese Website verfügt über App-Funktionalität."},ct={s182ab2d6c997515f:"Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.",s1b9047d53d9f9d22:"2) Presionar Compartir en la barra de direcciones",s37a9e8aec5713460:"Más",s5c6aad7a7e4a1437:"3) Presionar Añadir a pantalla de inicio",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Añadir al Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Presionar Añadir al Dock",sba52286c21552a4e:"Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.",sc79fd7641eb9a975:"Esconder instrucciones",scdaf4bbff76674c8:"Añadir a pantalla de inicio",sdfe23506a3b0cdc8:"1) Abrir en el navegador web Safari",se740f75b95a51807:"Añádelo a tu Dock para una experiencia amplia y acceso fácil.",sfea652f6580ff086:"Este sitio tiene funcionalidad de aplicación."},pt={s182ab2d6c997515f:"Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.",s1b9047d53d9f9d22:"2) Druk op delen in de navigatiebalk",s37a9e8aec5713460:"Meer",s5c6aad7a7e4a1437:"3) Druk op Toevoegen aan het startscherm",s6196153c4b0c1ea0:"Installeren",s922329d6f6213590:"Toevoegen aan Dock",sa5ef80b4bb9b39f8:"Minder",sa7551383d1897fcc:"2) Druk op Toevoegen aan Dock",sba52286c21552a4e:"Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.",sc79fd7641eb9a975:"Instructie verbergen",scdaf4bbff76674c8:"Toevoegen aan het startscherm",sdfe23506a3b0cdc8:"1) Open in Safari-browser",se740f75b95a51807:"Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.",sfea652f6580ff086:"Deze site heeft app-functionaliteit."},ht={s182ab2d6c997515f:"Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",s1b9047d53d9f9d22:"2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης",s37a9e8aec5713460:"Περισσότερα",s5c6aad7a7e4a1437:"3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας",s6196153c4b0c1ea0:"Εγκατάσταση",s922329d6f6213590:"Προσθήκη στην Πρόσβαση",sa5ef80b4bb9b39f8:"Λιγότερα",sa7551383d1897fcc:"2) Πατήστε Προσθήκη στην Πρόσβαση",sba52286c21552a4e:"Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sc79fd7641eb9a975:"Απόκρυψη Οδηγιών",scdaf4bbff76674c8:"Προσθήκη στην Οθόνη Αφετηρίας",sdfe23506a3b0cdc8:"1) Ανοίξτε τον περιηγητή Safari",se740f75b95a51807:"Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sfea652f6580ff086:"Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής."},gt={s182ab2d6c997515f:"Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.",s1b9047d53d9f9d22:"2) Appuyez sur Partager dans la barre de navigation",s37a9e8aec5713460:"Plus",s5c6aad7a7e4a1437:"3) Appuyez sur Ajouter à l'écran d'accueil",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Ajouter au Dock",sa5ef80b4bb9b39f8:"Moins",sa7551383d1897fcc:"2) Appuyez sur Ajouter au Dock",sba52286c21552a4e:"Installez-le sur votre appareil pour une expérience complète et un accès facile.",sc79fd7641eb9a975:"Masquer les instructions",scdaf4bbff76674c8:"Ajouter à l'écran d'accueil",sdfe23506a3b0cdc8:"1) Ouvrir dans le navigateur Safari",se740f75b95a51807:"Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.",sfea652f6580ff086:"Ce site possède des fonctionnalités d'application."},bt={s182ab2d6c997515f:"Додајте га на Home Screen за широке могућности и лак приступ.",s1b9047d53d9f9d22:"2) Притисните Share у навигационој траци",s37a9e8aec5713460:"Више",s5c6aad7a7e4a1437:"3) Притисните Add to Home Screen",s6196153c4b0c1ea0:"Инсталирај",sa5ef80b4bb9b39f8:"Мање",sa7551383d1897fcc:"3) Притисните Add to Dock",sba52286c21552a4e:"Инсталирајте га на вашем уређају за широке могућности и лак приступ.",sc79fd7641eb9a975:"Сакриј упутство",sdfe23506a3b0cdc8:"1) Отворите у Safari прегледачу",se740f75b95a51807:"Додајте га у вашу Dock за широке могућности и лак приступ.",sfea652f6580ff086:"Овај сајт има функционалност апликације.",s922329d6f6213590:"Add to Dock",scdaf4bbff76674c8:"Add to Home Screen"},ut={s182ab2d6c997515f:"Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.",s1b9047d53d9f9d22:'2) Wybierz "Udostępnij"',s37a9e8aec5713460:"Więcej",s5c6aad7a7e4a1437:'3) Wybierz "Dodaj do Ekranu Głównego"',s6196153c4b0c1ea0:"Zainstaluj",s922329d6f6213590:"Dodaj do Docka",sa5ef80b4bb9b39f8:"Mniej",sa7551383d1897fcc:'2) Wybierz "Dodaj do Docka"',sba52286c21552a4e:"Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.",sc79fd7641eb9a975:"Ukryj instrukcję",scdaf4bbff76674c8:"Dodaj do Ekranu Głównego",sdfe23506a3b0cdc8:"1) Otwórz przeglądarkę Safari",se740f75b95a51807:"Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.",sfea652f6580ff086:"Ta strona posiada funkcje aplikacji."},ft={s182ab2d6c997515f:"Додайте на Домашній екран для зручного доступу та ширших можливостей.",s1b9047d53d9f9d22:"2) Натиснути «Поділитися»",s37a9e8aec5713460:"Детальніше",s5c6aad7a7e4a1437:"3) Натиснути «На Початковий екран»",s6196153c4b0c1ea0:"Встановити",s922329d6f6213590:"Додати на Dock",sa5ef80b4bb9b39f8:"Згорнути",sa7551383d1897fcc:"2) Натиснути «Додати на Dock»",sba52286c21552a4e:"Встановіть на ваш пристрій для зручного доступу та ширших можливостей.",sc79fd7641eb9a975:"Сховати Інструкцію",scdaf4bbff76674c8:"На Початковий экран",sdfe23506a3b0cdc8:"1) Відкрити в Safari браузері",se740f75b95a51807:"Додайте на панель Dock для зручного доступу та ширших можливостей.",sfea652f6580ff086:"Цей сайт має функції додатку."},mt={s182ab2d6c997515f:"將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。",s1b9047d53d9f9d22:"2) 點擊列表上的分享按鈕",s37a9e8aec5713460:"詳細資訊",s5c6aad7a7e4a1437:"3) 點擊加入主畫面",s6196153c4b0c1ea0:"安裝",s922329d6f6213590:"添加到Dock欄",sa5ef80b4bb9b39f8:"簡短資訊",sa7551383d1897fcc:"2) 點選添加到Dock欄",sba52286c21552a4e:"在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。",sc79fd7641eb9a975:"隱藏安裝流程",scdaf4bbff76674c8:"將App加入主畫面",sdfe23506a3b0cdc8:"1) 在Safari上瀏覽此網頁",se740f75b95a51807:"將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。",sfea652f6580ff086:"此網站具有應用程式功能。"},vt={s182ab2d6c997515f:"将其添加到主屏幕,以享受更丰富的体验并便于访问。",s1b9047d53d9f9d22:"2) 点击导航栏中的“分享”按钮",s37a9e8aec5713460:"更多",s5c6aad7a7e4a1437:"3) 点击“添加到主屏幕”",s6196153c4b0c1ea0:"安装",s922329d6f6213590:"添加到程序坞",sa5ef80b4bb9b39f8:"收起",sa7551383d1897fcc:"2) 点击“添加到程序坞”",sba52286c21552a4e:"在您的设备上安装,以享受更丰富的体验并便于访问。",sc79fd7641eb9a975:"隐藏安装步骤",scdaf4bbff76674c8:"添加到主屏幕",sdfe23506a3b0cdc8:"1) 在 Safari 浏览器中打开此页面",se740f75b95a51807:"将其添加到您的程序坞,以享受更全面的体验并便于访问。",sfea652f6580ff086:"此网站具备 App 功能特性。"},wt={s182ab2d6c997515f:"Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.",s1b9047d53d9f9d22:"2) Premi Condividi nella barra di navigazione",s37a9e8aec5713460:"Più",s5c6aad7a7e4a1437:"3) Premi Aggiungi alla schermata principale",s6196153c4b0c1ea0:"Installa",s922329d6f6213590:"Aggiungi al Dock",sa5ef80b4bb9b39f8:"Meno",sa7551383d1897fcc:"2) Premi Aggiungi al Dock",sba52286c21552a4e:"Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.",sc79fd7641eb9a975:"Nascondi istruzioni",scdaf4bbff76674c8:"Aggiungi alla schermata principale",sdfe23506a3b0cdc8:"1) Apri nel browser Safari",se740f75b95a51807:"Aggiungilo al Dock per un'esperienza più completa e un accesso facile.",sfea652f6580ff086:"Questo sito ha funzionalità di app."},yt={s182ab2d6c997515f:"Přidejte jej na plochu pro rozšířené využití a snadný přístup.",s1b9047d53d9f9d22:"2) Stiskněte tlačítko Sdílet na navigačním panelu",s37a9e8aec5713460:"Vice",s5c6aad7a7e4a1437:"3) Stiskněte tlačítko Přidat na plochu",s6196153c4b0c1ea0:"Nainstalovat",s922329d6f6213590:"Přidat do Docku",sa5ef80b4bb9b39f8:"Méně",sa7551383d1897fcc:"2) Stiskněte Přidat do Docku",sba52286c21552a4e:"Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.",sc79fd7641eb9a975:"Skrýt instrukce",scdaf4bbff76674c8:"Přidat na plochu",sdfe23506a3b0cdc8:"1) Otevřete v prohlížeči Safari",se740f75b95a51807:"Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.",sfea652f6580ff086:"Tento web má funkce aplikace."},xt={s182ab2d6c997515f:"Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.",s1b9047d53d9f9d22:"2) Trykk på Del-knappen i navigasjonslinjen",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Velg Legg til på Hjem-skjerm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Legg til i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Velg Legg til i Dock",sba52286c21552a4e:"Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.",sc79fd7641eb9a975:"Skjul instruksjoner",scdaf4bbff76674c8:"Legg til på Hjem-skjerm",sdfe23506a3b0cdc8:"1) Åpne i Safari",se740f75b95a51807:"Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.",sfea652f6580ff086:"Denne siden har app-funksjonalitet."},kt={s182ab2d6c997515f:"Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.",s1b9047d53d9f9d22:"2) Pressione Compartilhar na barra de endereço",s37a9e8aec5713460:"Mais",s5c6aad7a7e4a1437:"3) Pressione Adicionar à Tela de Início",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Adicionar ao Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Pressione Adicionar ao Dock",sba52286c21552a4e:"Instale no dispositivo para uma melhor experiência e mais fácil acesso.",sc79fd7641eb9a975:"Ocultar Instruções",scdaf4bbff76674c8:"Adicionar à Tela de Início",sdfe23506a3b0cdc8:"1) Abra no navegador Safari",se740f75b95a51807:"Adicione ao Dock para uma melhor experiência e mais fácil acesso.",sfea652f6580ff086:"Este site possui funcionalidade de aplicativo."},_t={s182ab2d6c997515f:"ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。",s1b9047d53d9f9d22:"2) ナビゲーションバーで共有を押す",s37a9e8aec5713460:"展開",s5c6aad7a7e4a1437:"3) 「ホーム画面に追加」を押す",s6196153c4b0c1ea0:"インストール",s922329d6f6213590:"Dockに追加",sa5ef80b4bb9b39f8:"折りたたむ",sa7551383d1897fcc:"2) 「Dockに追加」を押す",sba52286c21552a4e:"デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。",sc79fd7641eb9a975:"説明を非表示",scdaf4bbff76674c8:"ホーム画面に追加",sdfe23506a3b0cdc8:"1) Safariで開く",se740f75b95a51807:"ドックに追加して、幅広い体験と簡単なアクセスを実現してください。",sfea652f6580ff086:"このサイトはアプリ機能があります。"},$t={s182ab2d6c997515f:"Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.",s1b9047d53d9f9d22:"2) Tryck på Dela-knappen i verktygsfältet",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Välj Lägg till på hemskärmen",s6196153c4b0c1ea0:"Installera",s922329d6f6213590:"Lägg till i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Välj Lägg till i Dock",sba52286c21552a4e:"Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.",sc79fd7641eb9a975:"Göm instruktioner",scdaf4bbff76674c8:"Lägg till på hemskärmen",sdfe23506a3b0cdc8:"1) Öppna i Safari",se740f75b95a51807:"Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.",sfea652f6580ff086:"Denna webbsajt har app-funktionalitet."},At={s182ab2d6c997515f:"더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.",s1b9047d53d9f9d22:"2) 내비게이션 바에서 공유 버튼 누르기",s37a9e8aec5713460:"더보기",s5c6aad7a7e4a1437:"3) 홈 화면에 추가 버튼 누르기",s6196153c4b0c1ea0:"설치",s922329d6f6213590:"Dock에 추가",sa5ef80b4bb9b39f8:"닫기",sa7551383d1897fcc:"2) Dock에 추가 버튼 누르기",sba52286c21552a4e:"더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.",sc79fd7641eb9a975:"안내 숨기기",scdaf4bbff76674c8:"홈 화면에 추가",sdfe23506a3b0cdc8:"1) Safari 브라우저에서 열기",se740f75b95a51807:"더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.",sfea652f6580ff086:"이 사이트는 앱 기능을 가지고 있습니다."},St={s182ab2d6c997515f:"បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",s1b9047d53d9f9d22:"2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ",s37a9e8aec5713460:"បង្ហាញបន្ថែម",s5c6aad7a7e4a1437:"3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",s6196153c4b0c1ea0:"តំឡើង",s922329d6f6213590:"បន្ថែមទៅកាន់ Dock",sa5ef80b4bb9b39f8:"បង្ហាញតិច",sa7551383d1897fcc:"2) ចុចលើ បន្ថែមទៅកាន់ Dock",sba52286c21552a4e:"តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sc79fd7641eb9a975:"បិទការណែនាំ",scdaf4bbff76674c8:"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",sdfe23506a3b0cdc8:"1) បើកនៅក្នុងកម្មវិធី Safari",se740f75b95a51807:"បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sfea652f6580ff086:"គេហទំព័រនេះមានមុខងារជាកម្មវិធី។"},Et={s182ab2d6c997515f:"Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.",s1b9047d53d9f9d22:"2) Tryk på Del-knappen i navigationslinjen",s37a9e8aec5713460:"Mere",s5c6aad7a7e4a1437:"3) Vælg Tilføj til hjemmeskærm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Tilføj til Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Vælg Tilføj til Dock",sba52286c21552a4e:"Installer den på din enhed for en bedre oplevelse og nem adgang.",sc79fd7641eb9a975:"Skjul instruktion",scdaf4bbff76674c8:"Tilføj til hjemmeskærm",sdfe23506a3b0cdc8:"1) Åbn i Safari-browseren",se740f75b95a51807:"Tilføj den til din Dock for en bedre oplevelse og nem adgang.",sfea652f6580ff086:"Denne side har app-funktionalitet."},Dt=new Map([["ru",a],["tr",i],["de",o],["es",s],["nl",l],["el",n],["fr",r],["sr",d],["pl",c],["uk",p],["zh-HK",h],["zh-CN",g],["it",b],["cs",u],["no",f],["pt",m],["ja",v],["sv",w],["ko",y],["km",x],["da",k]]),{getLocale:Pt,setLocale:jt}=(Ct={sourceLocale:"en",targetLocales:lt,loadLocale:async e=>Dt.get(e)},function(e){if(Ie)throw Error("lit-localize can only be configured once");Re=e,Ie=!0}(((e,t)=>We(Ke,e,t))),Je=Ze=Ct.sourceLocale,Ye=new Set(Ct.targetLocales),Ye.add(Ct.sourceLocale),Ge=Ct.loadLocale,{getLocale:et,setLocale:tt});var Ct;class zt{constructor(){this.icons=[{src:""}],this.screenshots=void 0,this.short_name="PWA",this.name="Progressive web application",this.description="Progressive web application"}}const Tt=D`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`,Rt=(e,t,a)=>{const i=new CustomEvent(t,{detail:{message:a}});e.dispatchEvent(i)};class It{static isAppleMobile(){return!(!(["iPhone","iPad","iPod"].includes(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2)||!("serviceWorker"in navigator))}static isAppleDesktop(){const e=navigator.userAgent.toLowerCase();if(navigator.maxTouchPoints||!e.match(/macintosh/))return!1;const t=/version\/(\d{2})\./.exec(e);if(!(t&&t[1]&&parseInt(t[1])>=17))return!1;const a=!!document.createElement("audio").canPlayType('audio/wav; codecs="1"'),i=!!new OffscreenCanvas(1,1).getContext("webgl");return a&&i}static deviceFormFactor(){return window.matchMedia("(orientation: portrait)").matches?"narrow":"wide"}static isStandalone(){return!!(window.matchMedia("(display-mode: standalone)").matches||"standalone"in navigator&&!0===navigator.standalone)}static async getInstalledRelatedApps(){if("getInstalledRelatedApps"in navigator)try{return await navigator.getInstalledRelatedApps().then((e=>e))}catch(e){}return[]}static async isRelatedAppsInstalled(){return!!(await this.getInstalledRelatedApps()).length}static setStorageFlag(e,t,a=!1){try{a?localStorage.setItem(e,t.toString()):sessionStorage.setItem(e,t.toString())}catch(e){}}static getStorageFlag(e){try{return"true"===sessionStorage.getItem(e)||"true"===localStorage.getItem(e)}catch(e){return!1}}static eventInstalledSuccess(e){Rt(e,"pwa-install-success-event","App install success (Chromium/Android only)")}static eventInstalledFail(e){Rt(e,"pwa-install-fail-event","App install failed (Chromium/Android only)")}static eventUserChoiceResult(e,t){Rt(e,"pwa-user-choice-result-event",t)}static eventInstallAvailable(e){Rt(e,"pwa-install-available-event","App install available")}static eventInstallHowTo(e){Rt(e,"pwa-install-how-to-event","App install instruction showed")}static eventGallery(e){Rt(e,"pwa-install-gallery-event","App install gallery showed")}static normalizeManifestAssetUrls(e,t){const a=new URL(t,document.location.href);[...e.icons||[],...e.screenshots||[]].forEach((e=>{e.src=new URL(e.src,a).href}))}}const Mt=(e,t,a,i)=>ge`${e?ge``:""}`;var Lt=function(e,t,a,i){var o,s=arguments.length,l=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,a):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,a,i);else for(var n=e.length-1;n>=0;n--)(o=e[n])&&(l=(s<3?o(l):s>3?o(t,a,l):o(t,a))||l);return s>3&&l&&Object.defineProperty(t,a,l),l},Ut=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Ht=class extends je{constructor(){super(...arguments),this.screenshots=[],this.theme="default",this.getScrollElements=()=>{const e=this.shadowRoot?.querySelector("#paginated_gallery");if(!e)return;const t=e.querySelector(".gallery_scroller");if(!t)return;const a=Array.from(t.querySelectorAll("img"));return 0!==a.length?{scroller:t,items:a}:void 0},this.findCurrentItem=(e,t)=>{const a=e.scrollLeft;return t.find((e=>e.offsetWidth+e.offsetLeft>=a+e.offsetWidth/2.5))||null},this.scrollToPage=e=>{const t=this.getScrollElements();if(!t)return;const{scroller:a,items:i}=t,o=this.findCurrentItem(a,i);if(!o)return;const s=i.indexOf(o)+("next"===e?1:-1);s>=0&&s{this.scrollToPage("next")},this.scrollToPrevPage=()=>{this.scrollToPage("prev")},this._init=()=>{}}static get styles(){return Tt}firstUpdated(){const e=this.getScrollElements();e&&setTimeout((()=>{e.scroller.scrollTo({top:0,left:0})}),300)}connectedCallback(){super.connectedCallback(),this._init()}render(){return ge`${Mt(this.screenshots,this.theme,this.scrollToNextPage,this.scrollToPrevPage)}`}};Lt([st({type:Array}),Ut("design:type",Array)],Ht.prototype,"screenshots",void 0),Lt([st(),Ut("design:type",String)],Ht.prototype,"theme",void 0),Ht=Lt([at("pwa-gallery")],Ht);const Ot=Ht,Bt=(e,t,a,i)=>ge`
icon
${location.hostname}
${t?ge`
${t}
`:""}`;var Nt=function(e,t,a,i){var o,s=arguments.length,l=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,a):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,a,i);else for(var n=e.length-1;n>=0;n--)(o=e[n])&&(l=(s<3?o(l):s>3?o(t,a,l):o(t,a))||l);return s>3&&l&&Object.defineProperty(t,a,l),l},qt=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Wt=class extends je{constructor(){super(...arguments),this.props={name:"",description:"",icon:""},this.install={handleEvent:()=>{}},this.hideDialog=()=>{},this.disableClose=!1,this._callInstall=()=>{this.install.handleEvent()},this._callHide=()=>{this.hideDialog(),this.setupAppearence()},this.bindedElement=null,this._saveBodyStyle=document.body.style.overscrollBehaviorY,this.dragMobileSheet=(e,t,a)=>{if(!e||!t||!a)return null;let i=0;const o=t.clientHeight+a.clientHeight,s=e=>e.clientY||(e.changedTouches&&e.changedTouches.length?e.changedTouches[0].clientY:0),l=e=>{window.addEventListener("mouseup",n),window.addEventListener("mousemove",r),window.addEventListener("touchend",n),window.addEventListener("touchmove",r),i=s(e)-t.getBoundingClientRect().top,document.body.style.overscrollBehaviorY="none"},n=t=>{if(document.body.style.overscrollBehaviorY=this._saveBodyStyle,!this.disableClose&&s(t)>=window.innerHeight-25)d(t,window.innerHeight+50,!0);else if(window.innerHeight-s(t)>e.clientHeight/2.5){d(t,window.innerHeight-e.clientHeight);try{It.eventGallery(this.getRootNode().host)}catch(t){}}else d(t,window.innerHeight-o-35)},r=t=>{const a=s(t);this.disableClose&&window.innerHeight-a<70||a<=window.innerHeight-e.clientHeight+i||(e.style.setProperty("transition","none"),e.style.setProperty("--translateY",`translateY(${a-i}px)`))},d=(a,i,d)=>{window.removeEventListener("mouseup",n),window.removeEventListener("mousemove",r),window.removeEventListener("touchend",n),window.removeEventListener("touchmove",r),window.innerWidth>=768||(!i&&s(a)>=window.innerHeight-o?e.style.setProperty("--translateY",`translateY(calc(100vh - ${o}px))`):e.style.setProperty("--translateY",`translateY(${(i||s(a))+35}px)`),e.style.setProperty("transition","transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s"),d&&(t.removeEventListener("mousedown",l),t.removeEventListener("touchstart",l),setTimeout(this._callHide,250)))};return t.addEventListener("mousedown",l),t.addEventListener("touchstart",l,{passive:!0}),d(new MouseEvent("mouseup"),window.innerHeight-o-35),{touchElement:t,listener:l}},this.setupAppearence=()=>{this.bindedElement&&(this.bindedElement.touchElement.removeEventListener("mousedown",this.bindedElement.listener),this.bindedElement.touchElement.removeEventListener("touchstart",this.bindedElement.listener)),this.bindedElement=this.dragMobileSheet(this.parentElement?.parentElement,this.parentElement?.getElementsByClassName("touch-header")[0],this.parentElement?.getElementsByClassName("body-header")[0])},this._init=()=>{this.setupAppearence(),window.addEventListener("resize",this.setupAppearence)}}firstUpdated(){this._init()}createRenderRoot(){return this}connectedCallback(){super.connectedCallback()}render(){return ge`${Bt(this.props.name,this.props.description,this.props.icon,this._callInstall)}`}};Nt([st({type:Object}),qt("design:type",Object)],Wt.prototype,"props",void 0),Nt([st({type:Object}),qt("design:type",Object)],Wt.prototype,"install",void 0),Nt([st(),qt("design:type",Object)],Wt.prototype,"hideDialog",void 0),Nt([st(),qt("design:type",Object)],Wt.prototype,"disableClose",void 0),Wt=Nt([at("pwa-bottom-sheet")],Wt);const Vt=Wt,Ft=D`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,"Segoe UI",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:"";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,"Segoe UI",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:"";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`,Zt=D`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,"Segoe UI";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:"icon description" "welcome welcome" "how-to how-to" "gallery gallery" "button button";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"icon" "description" "welcome" "how-to" "gallery" "button";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`,Yt=1;class Gt{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,a){this._$Ct=e,this._$AM=t,this._$Ci=a}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}}const Kt=(e=>(...t)=>({_$litDirective$:e,values:t}))(class extends Gt{constructor(e){if(super(e),e.type!==Yt||"class"!==e.name||e.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(e){return" "+Object.keys(e).filter((t=>e[t])).join(" ")+" "}update(e,[t]){if(void 0===this.st){this.st=new Set,void 0!==e.strings&&(this.nt=new Set(e.strings.join(" ").split(/\s/).filter((e=>""!==e))));for(const e in t)t[e]&&!this.nt?.has(e)&&this.st.add(e);return this.render(t)}const a=e.element.classList;for(const e of this.st)e in t||(a.remove(e),this.st.delete(e));for(const e in t){const i=!!t[e];i===this.st.has(e)||this.nt?.has(e)||(i?(a.add(e),this.st.add(e)):(a.remove(e),this.st.delete(e)))}return be}}),Jt=(e,t,a,i,o,s,l,n,r,d,c,p,h)=>{const g=()=>({available:r,gallery:h}),b=!o&&n.screenshots&&n.screenshots.length;return ge`
icon
${s?"":ge``}
${location.hostname}
${t?ge`
${t}
`:""} ${i?"":ge`
${a||`${Re("This site has app functionality.")} ${Re("Install it on your device for extensive experience and easy access.")}`}
`} ${b?ge``:""}
${b?ge``:""}
${b?ge``:""}
`},Qt=(e,t,a,i,o,s,l,n,r,d,c,p,h,g,b)=>{const u=!o&&n.screenshots&&n.screenshots.length;return ge``};var Xt=function(e,t,a,i){var o,s=arguments.length,l=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,a):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,a,i);else for(var n=e.length-1;n>=0;n--)(o=e[n])&&(l=(s<3?o(l):s>3?o(t,a,l):o(t,a))||l);return s>3&&l&&Object.defineProperty(t,a,l),l},ea=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let ta=class extends je{constructor(){super(...arguments),this.manifestUrl="/manifest.json",this.icon="",this.name="",this.description="",this.installDescription="",this.disableDescription=!1,this.disableScreenshots=!1,this.disableScreenshotsApple=!1,this.disableScreenshotsChrome=!1,this.manualApple=!1,this.manualChrome=!1,this.disableChrome=!1,this.disableClose=!1,this.useLocalStorage=!1,this.externalPromptEvent=null,this.platforms=[],this.userChoiceResult="",this.isDialogHidden=It.getStorageFlag("pwa-hide-install"),this.isInstallAvailable=!1,this.isAppleMobilePlatform=!1,this.isAppleDesktopPlatform=!1,this.isUnderStandaloneMode=!1,this.isRelatedAppsInstalled=!1,this._manifest=new zt,this._howToRequested=!1,this._galleryRequested=!1,this._install={handleEvent:()=>{window.defferedPromptEvent&&(this.hideDialog(),window.defferedPromptEvent.prompt(),window.defferedPromptEvent.userChoice.then((e=>{this.userChoiceResult=e.outcome,It.eventUserChoiceResult(this,this.userChoiceResult)})).catch((e=>{It.eventInstalledFail(this)})),window.defferedPromptEvent=null)},passive:!0},this.install=()=>{this.isAppleMobilePlatform||this.isAppleDesktopPlatform?(this._howToRequested=!0,this.requestUpdate()):this._install.handleEvent()},this._hideDialog={handleEvent:()=>{this.isDialogHidden=!0,It.setStorageFlag("pwa-hide-install",!0,this.useLocalStorage),this.requestUpdate()},passive:!0},this._hideDialogUser=()=>{It.eventUserChoiceResult(this,"dismissed"),this.userChoiceResult="dismissed",this.hideDialog()},this.hideDialog=()=>{this._hideDialog.handleEvent()},this.showDialog=(e=!1)=>{this.isDialogHidden=!1,e&&(this.isInstallAvailable=!0),It.setStorageFlag("pwa-hide-install",!1,this.useLocalStorage),this.requestUpdate()},this.getInstalledRelatedApps=async()=>await It.getInstalledRelatedApps(),this._howToForApple={handleEvent:()=>{this._howToRequested=!this._howToRequested,this._howToRequested&&this._galleryRequested&&(this._galleryRequested=!1),this.requestUpdate(),this._howToRequested&&It.eventInstallHowTo(this)},passive:!0},this._toggleGallery={handleEvent:()=>{this._galleryRequested=!this._galleryRequested,this._howToRequested&&this._galleryRequested&&(this._howToRequested=!1),this._galleryRequested&&It.eventGallery(this),this.requestUpdate()},passive:!0},this._init=async()=>{if(window.defferedPromptEvent=null,this._checkInstalled(),!this.disableChrome){const e=e=>{window.defferedPromptEvent=e,e.preventDefault(),this.platforms=e.platforms,this.isRelatedAppsInstalled||this.isUnderStandaloneMode?this.isInstallAvailable=!1:(this.isInstallAvailable=!0,It.eventInstallAvailable(this)),"accepted"===this.userChoiceResult&&(this.isDialogHidden=!0,It.eventInstalledSuccess(this)),this.requestUpdate()};null!=this.externalPromptEvent?setTimeout((()=>e(this.externalPromptEvent)),300):window.addEventListener("beforeinstallprompt",e)}window.addEventListener("appinstalled",(e=>{window.defferedPromptEvent=null,this.isInstallAvailable=!1,this.requestUpdate(),It.eventInstalledSuccess(this)}));try{const e=await fetch(this.manifestUrl),t=await e.json();if(!e.ok||!t||!Object.keys(t))throw Error("Manifest not found");It.normalizeManifestAssetUrls(t,this.manifestUrl),this.icon=this.icon||t.icons?.length?t.icons[0].src:"",this.name=this.name||t.short_name||t.name||"",this.description=this.description||t.description||"",this._manifest=t}catch(e){this.icon=this.icon||this._manifest.icons?.[0].src||"",this.name=this.name||this._manifest.short_name||"",this.description=this.description||this._manifest.description||""}},this._requestUpdate=()=>{this.requestUpdate()}}static get styles(){return[Ft,Zt]}async _checkInstalled(){this.isUnderStandaloneMode=It.isStandalone(),this.isRelatedAppsInstalled=await It.isRelatedAppsInstalled(),this.isAppleMobilePlatform=It.isAppleMobile(),this.isAppleDesktopPlatform=It.isAppleDesktop(),this.isAppleMobilePlatform||this.isAppleDesktopPlatform?this.isUnderStandaloneMode||(this.manualApple&&this.hideDialog(),setTimeout((()=>{this.isInstallAvailable=!0,this.requestUpdate(),It.eventInstallAvailable(this)}),1e3)):this.manualChrome&&this.hideDialog()}connectedCallback(){(e=>{"nb"===e.slice(0,2)&&(e="no");switch(e){case"zh":case"zh-TW":e="zh-CN"}try{Dt.get(e)?jt(e):jt(e.slice(0,2))}catch{}})(navigator.language),this._init(),Ot.finalized,Vt.finalized,super.connectedCallback()}willUpdate(e){this.externalPromptEvent&&e.has("externalPromptEvent")&&"object"==typeof this.externalPromptEvent&&this._init()}render(){return this.isAppleMobilePlatform||this.isAppleDesktopPlatform?ge`${Qt(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsApple,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._howToForApple,this.isAppleDesktopPlatform,this._howToRequested,this._toggleGallery,this._galleryRequested)}`:ge`${Jt(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsChrome,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._install,this._toggleGallery,this._galleryRequested)}`}};Xt([st({attribute:"manifest-url"}),ea("design:type",Object)],ta.prototype,"manifestUrl",void 0),Xt([st(),ea("design:type",Object)],ta.prototype,"icon",void 0),Xt([st(),ea("design:type",Object)],ta.prototype,"name",void 0),Xt([st(),ea("design:type",Object)],ta.prototype,"description",void 0),Xt([st({attribute:"install-description"}),ea("design:type",Object)],ta.prototype,"installDescription",void 0),Xt([st({attribute:"disable-install-description",type:Boolean}),ea("design:type",Object)],ta.prototype,"disableDescription",void 0),Xt([st({attribute:"disable-screenshots",type:Boolean}),ea("design:type",Object)],ta.prototype,"disableScreenshots",void 0),Xt([st({attribute:"disable-screenshots-apple",type:Boolean}),ea("design:type",Object)],ta.prototype,"disableScreenshotsApple",void 0),Xt([st({attribute:"disable-screenshots-chrome",type:Boolean}),ea("design:type",Object)],ta.prototype,"disableScreenshotsChrome",void 0),Xt([st({attribute:"manual-apple",type:Boolean}),ea("design:type",Object)],ta.prototype,"manualApple",void 0),Xt([st({attribute:"manual-chrome",type:Boolean}),ea("design:type",Object)],ta.prototype,"manualChrome",void 0),Xt([st({attribute:"disable-chrome",type:Boolean}),ea("design:type",Object)],ta.prototype,"disableChrome",void 0),Xt([st({attribute:"disable-close",type:Boolean}),ea("design:type",Object)],ta.prototype,"disableClose",void 0),Xt([st({attribute:"use-local-storage",type:Boolean}),ea("design:type",Object)],ta.prototype,"useLocalStorage",void 0),Xt([function(e){return st({...e,state:!0,attribute:!1})}(),ea("design:type",Object)],ta.prototype,"externalPromptEvent",void 0),ta=Xt([(e,t)=>(e.addInitializer(Ue),e),at("pwa-install")],ta),PWAInstallComponent=t})(); //# sourceMappingURL=pwa-install.bundle.js.map \ No newline at end of file diff --git a/dist/pwa-install.bundle.js.map b/dist/pwa-install.bundle.js.map index 4b112b7..d8b4632 100644 --- a/dist/pwa-install.bundle.js.map +++ b/dist/pwa-install.bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"pwa-install.bundle.js","mappings":"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","sources":["webpack://PWAInstallComponent/webpack/bootstrap","webpack://PWAInstallComponent/webpack/runtime/define property getters","webpack://PWAInstallComponent/webpack/runtime/hasOwnProperty shorthand","webpack://PWAInstallComponent/webpack/runtime/make namespace object","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/css-tag.js","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/reactive-element.js","webpack://PWAInstallComponent/./node_modules/lit-html/lit-html.js","webpack://PWAInstallComponent/./node_modules/lit-element/lit-element.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/str-tag.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/default-msg.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/init/install.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/locale-status-event.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/localized-controller.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/deferred.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/fnv1a64.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/id-generation.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/runtime-msg.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/init/runtime.js","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/decorators/custom-element.js","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/decorators/property.js","webpack://PWAInstallComponent/./src/localization/locale-codes.ts","webpack://PWAInstallComponent/./src/localization/locales/ru.ts","webpack://PWAInstallComponent/./src/localization/locales/tr.ts","webpack://PWAInstallComponent/./src/localization/locales/de.ts","webpack://PWAInstallComponent/./src/localization/locales/es.ts","webpack://PWAInstallComponent/./src/localization/locales/nl.ts","webpack://PWAInstallComponent/./src/localization/locales/el.ts","webpack://PWAInstallComponent/./src/localization/locales/fr.ts","webpack://PWAInstallComponent/./src/localization/locales/sr.ts","webpack://PWAInstallComponent/./src/localization/locales/pl.ts","webpack://PWAInstallComponent/./src/localization/locales/uk.ts","webpack://PWAInstallComponent/./src/localization/locales/zh-HK.ts","webpack://PWAInstallComponent/./src/localization/locales/zh-CN.ts","webpack://PWAInstallComponent/./src/localization/locales/it.ts","webpack://PWAInstallComponent/./src/localization/locales/cs.ts","webpack://PWAInstallComponent/./src/localization/locales/no.ts","webpack://PWAInstallComponent/./src/localization/locales/pt.ts","webpack://PWAInstallComponent/./src/localization/locales/ja.ts","webpack://PWAInstallComponent/./src/localization/locales/sv.ts","webpack://PWAInstallComponent/./src/localization/locales/ko.ts","webpack://PWAInstallComponent/./src/localization/locales/km.ts","webpack://PWAInstallComponent/./src/localization/locales/da.ts","webpack://PWAInstallComponent/./src/localization/index.ts","webpack://PWAInstallComponent/./src/types/types.ts","webpack://PWAInstallComponent/./src/gallery/styles-gallery.scss","webpack://PWAInstallComponent/./src/utils.ts","webpack://PWAInstallComponent/./src/gallery/template-gallery.ts","webpack://PWAInstallComponent/./src/gallery/index.ts","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/template-bottom-sheet.ts","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/index.ts","webpack://PWAInstallComponent/./src/templates/chrome/styles.scss","webpack://PWAInstallComponent/./src/templates/apple/styles-apple.scss","webpack://PWAInstallComponent/./node_modules/lit-html/directive.js","webpack://PWAInstallComponent/./node_modules/lit-html/directives/class-map.js","webpack://PWAInstallComponent/./src/templates/chrome/template.ts","webpack://PWAInstallComponent/./src/templates/apple/template-apple.ts","webpack://PWAInstallComponent/./src/index.ts","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/decorators/state.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/localized-decorator.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst n=globalThis,c=n.trustedTypes,h=c?c.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,f=\"$lit$\",v=`lit$${Math.random().toFixed(9).slice(2)}$`,m=\"?\"+v,_=`<${m}>`,w=document,lt=()=>w.createComment(\"\"),st=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,g=Array.isArray,$=t=>g(t)||\"function\"==typeof t?.[Symbol.iterator],x=\"[ \\t\\n\\f\\r]\",T=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,E=/-->/g,k=/>/g,O=RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),S=/'/g,j=/\"/g,M=/^(?:script|style|textarea|title)$/i,P=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),ke=P(1),Oe=P(2),Se=P(3),R=Symbol.for(\"lit-noChange\"),D=Symbol.for(\"lit-nothing\"),V=new WeakMap,I=w.createTreeWalker(w,129);function N(t,i){if(!g(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==h?h.createHTML(i):i}const U=(t,i)=>{const s=t.length-1,e=[];let h,o=2===i?\"\":3===i?\"\":\"\",n=T;for(let i=0;i\"===l[0]?(n=h??T,c=-1):void 0===l[1]?c=-2:(c=n.lastIndex-l[2].length,r=l[1],n=void 0===l[3]?O:'\"'===l[3]?j:S):n===j||n===S?n=O:n===E||n===k?n=T:(n=O,h=void 0);const u=n===O&&t[i+1].startsWith(\"/>\")?\" \":\"\";o+=n===T?s+_:c>=0?(e.push(r),s.slice(0,c)+f+s.slice(c)+v+u):s+v+(-2===c?i:u)}return[N(t,o+(t[s]||\"\")+(2===i?\"\":3===i?\"\":\"\")),e]};class B{constructor({strings:t,_$litType$:i},s){let e;this.parts=[];let h=0,o=0;const n=t.length-1,r=this.parts,[l,a]=U(t,i);if(this.el=B.createElement(l,s),I.currentNode=this.el.content,2===i||3===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(e=I.nextNode())&&r.length0){e.textContent=c?c.emptyScript:\"\";for(let s=0;s2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=D}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=z(this,t,i,0),o=!st(t)||t!==this._$AH&&t!==R,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new et(i.insertBefore(lt(),t),t,void 0,s??{})}return h._$AI(t),h};export{si as _$LH,ke as html,Se as mathml,R as noChange,D as nothing,Q as render,Oe as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as e}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as n,noChange as l}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class h extends e{constructor(){super(...arguments),this.renderOptions={host:this},this.o=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this.o=n(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this.o?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this.o?.setConnected(!1)}render(){return l}}h._$litElement$=!0,h[\"finalized\"]=!0,globalThis.litElementHydrateSupport?.({LitElement:h});const f=globalThis.litElementPolyfillSupport;f?.({LitElement:h});const x={_$AK:(t,e,s)=>{t._$AK(e,s)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push(\"4.1.0\");export{h as LitElement,x as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Tag that allows expressions to be used in localized non-HTML template\n * strings.\n *\n * Example: msg(str`Hello ${this.user}!`);\n *\n * The Lit html tag can also be used for this purpose, but HTML will need to be\n * escaped, and there is a small overhead for HTML parsing.\n *\n * Untagged template strings with expressions aren't supported by lit-localize\n * because they don't allow for values to be captured at runtime.\n */\nconst _str = (strings, ...values) => ({\n strTag: true,\n strings,\n values,\n});\nexport const str = _str;\nexport const isStrTagged = (val) => typeof val !== 'string' && 'strTag' in val;\n/**\n * Render the result of a `str` tagged template to a string. Note we don't need\n * to do this for Lit templates, since Lit itself handles rendering.\n */\nexport const joinStringsAndValues = (strings, values, valueOrder) => {\n let concat = strings[0];\n for (let i = 1; i < strings.length; i++) {\n concat += values[valueOrder ? valueOrder[i - 1] : i - 1];\n concat += strings[i];\n }\n return concat;\n};\n//# sourceMappingURL=str-tag.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { isStrTagged, joinStringsAndValues } from './str-tag.js';\n/**\n * Default identity msg implementation. Simply returns the input template with\n * no awareness of translations. If the template is str-tagged, returns it in\n * string form.\n */\nexport const defaultMsg = ((template) => isStrTagged(template)\n ? joinStringsAndValues(template.strings, template.values)\n : template);\n//# sourceMappingURL=default-msg.js.map","import { defaultMsg } from '../internal/default-msg.js';\n/**\n * Make a string or lit-html template localizable.\n *\n * @param template A string, a lit-html template, or a function that returns\n * either a string or lit-html template.\n * @param options Optional configuration object with the following properties:\n * - id: Optional project-wide unique identifier for this template. If\n * omitted, an id will be automatically generated from the template strings.\n * - desc: Optional description\n */\nexport let msg = defaultMsg;\nlet installed = false;\n/**\n * Internal only. Do not use this function.\n *\n * Installs an implementation of the msg function to replace the default\n * identity function. Throws if called more than once.\n *\n * @internal\n */\nexport function _installMsgImplementation(impl) {\n if (installed) {\n throw new Error('lit-localize can only be configured once');\n }\n msg = impl;\n installed = true;\n}\n//# sourceMappingURL=install.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Name of the event dispatched to `window` whenever a locale change starts,\n * finishes successfully, or fails. Only relevant to runtime mode.\n *\n * The `detail` of this event is an object with a `status` string that can be:\n * \"loading\", \"ready\", or \"error\", along with the relevant locale code, and\n * error message if applicable.\n *\n * You can listen for this event to know when your application should be\n * re-rendered following a locale change. See also the Localized mixin, which\n * automatically re-renders LitElement classes using this event.\n */\nexport const LOCALE_STATUS_EVENT = 'lit-localize-status';\n//# sourceMappingURL=locale-status-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { LOCALE_STATUS_EVENT } from './locale-status-event.js';\nclass LocalizeController {\n constructor(host) {\n this.__litLocalizeEventHandler = (event) => {\n if (event.detail.status === 'ready') {\n this.host.requestUpdate();\n }\n };\n this.host = host;\n }\n hostConnected() {\n window.addEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n hostDisconnected() {\n window.removeEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n}\n/**\n * Re-render the given LitElement whenever a new active locale has loaded.\n *\n * See also {@link localized} for the same functionality as a decorator.\n *\n * When using lit-localize in transform mode, calls to this function are\n * replaced with undefined.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {msg, updateWhenLocaleChanges} from '@lit/localize';\n *\n * class MyElement extends LitElement {\n * constructor() {\n * super();\n * updateWhenLocaleChanges(this);\n * }\n *\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nconst _updateWhenLocaleChanges = (host) => host.addController(new LocalizeController(host));\nexport const updateWhenLocaleChanges = _updateWhenLocaleChanges;\n//# sourceMappingURL=localized-controller.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport class Deferred {\n constructor() {\n this.settled = false;\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n resolve(value) {\n this.settled = true;\n this._resolve(value);\n }\n reject(error) {\n this.settled = true;\n this._reject(error);\n }\n}\n//# sourceMappingURL=deferred.js.map","/**\n * @license\n * Copyright 2014 Travis Webb\n * SPDX-License-Identifier: MIT\n */\n// This module is derived from the file:\n// https://github.com/tjwebb/fnv-plus/blob/1e2ce68a07cb7dd4c3c85364f3d8d96c95919474/index.js#L309\n//\n// Changes:\n// - Only the _hash64_1a_fast function is included.\n// - Removed loop unrolling.\n// - Converted to TypeScript ES module.\n// - var -> let/const\n//\n// TODO(aomarks) Upstream improvements to https://github.com/tjwebb/fnv-plus/.\nconst hl = [];\nfor (let i = 0; i < 256; i++) {\n hl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n}\n/**\n * Perform a FNV-1A 64-bit hash of the given string (as UTF-16 code units), and\n * return a hexadecimal digest (left zero padded to 16 characters).\n *\n * @see {@link http://tools.ietf.org/html/draft-eastlake-fnv-06}\n */\nexport function fnv1a64(str) {\n let t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n for (let i = 0; i < str.length; i++) {\n v0 ^= str.charCodeAt(i);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = (t3 + (t2 >>> 16)) & 65535;\n v2 = t2 & 65535;\n }\n return (hl[v3 >> 8] +\n hl[v3 & 255] +\n hl[v2 >> 8] +\n hl[v2 & 255] +\n hl[v1 >> 8] +\n hl[v1 & 255] +\n hl[v0 >> 8] +\n hl[v0 & 255]);\n}\n//# sourceMappingURL=fnv1a64.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { fnv1a64 } from './fnv1a64.js';\n/**\n * Delimiter used between each template string component before hashing. Used to\n * prevent e.g. \"foobar\" and \"foo${baz}bar\" from sharing a hash.\n *\n * This is the \"record separator\" ASCII character.\n */\nexport const HASH_DELIMITER = '\\x1e';\n/**\n * Id prefix on html-tagged templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst HTML_PREFIX = 'h';\n/**\n * Id prefix on plain string templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst STRING_PREFIX = 's';\n/**\n * Generate a unique ID for a lit-localize message.\n *\n * Example:\n * Template: html`Hello ${who}!`\n * Params: [\"Hello \", \"!\"], true\n * Output: h82ccc38d4d46eaa9\n *\n * The ID is constructed as:\n *\n * [0] Kind of template: [h]tml or [s]tring.\n * [1,16] 64-bit FNV-1a hash hex digest of the template strings, as UTF-16\n * code points, delineated by an ASCII \"record separator\" character.\n *\n * We choose FNV-1a because:\n *\n * 1. It's pretty fast (e.g. much faster than SHA-1).\n * 2. It's pretty small (0.25 KiB minified + brotli).\n * 3. We don't require cryptographic security, and 64 bits should give\n * sufficient collision resistance for any one application. Worst\n * case, we will always detect collisions during analysis.\n * 4. We can't use Web Crypto API (e.g. SHA-1), because it's asynchronous.\n * 5. It's a well known non-cryptographic hash with implementations in many\n * languages.\n * 6. There was an existing JavaScript implementation that doesn't require\n * BigInt, for IE11 compatibility.\n */\nexport function generateMsgId(strings, isHtmlTagged) {\n return ((isHtmlTagged ? HTML_PREFIX : STRING_PREFIX) +\n fnv1a64(typeof strings === 'string' ? strings : strings.join(HASH_DELIMITER)));\n}\n//# sourceMappingURL=id-generation.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { defaultMsg } from './default-msg.js';\nimport { joinStringsAndValues } from './str-tag.js';\nimport { generateMsgId } from './id-generation.js';\nconst expressionOrders = new WeakMap();\nconst hashCache = new Map();\nexport function runtimeMsg(templates, template, options) {\n if (templates) {\n const id = options?.id ?? generateId(template);\n const localized = templates[id];\n if (localized) {\n if (typeof localized === 'string') {\n // E.g. \"Hello World!\"\n return localized;\n }\n else if ('strTag' in localized) {\n // E.g. str`Hello ${name}!`\n //\n // Localized templates have ${number} in place of real template\n // expressions. They can't have real template values, because the\n // variable scope would be wrong. The number tells us the index of the\n // source value to substitute in its place, because expressions can be\n // moved to a different position during translation.\n return joinStringsAndValues(localized.strings, \n // Cast `template` because its type wasn't automatically narrowed (but\n // we know it must be the same type as `localized`).\n template.values, localized.values);\n }\n else {\n // E.g. html`Hello ${name}!`\n //\n // We have to keep our own mapping of expression ordering because we do\n // an in-place update of `values`, and otherwise we'd lose ordering for\n // subsequent renders.\n let order = expressionOrders.get(localized);\n if (order === undefined) {\n order = localized.values;\n expressionOrders.set(localized, order);\n }\n return {\n ...localized,\n values: order.map((i) => template.values[i]),\n };\n }\n }\n }\n return defaultMsg(template);\n}\nfunction generateId(template) {\n const strings = typeof template === 'string' ? template : template.strings;\n let id = hashCache.get(strings);\n if (id === undefined) {\n id = generateMsgId(strings, typeof template !== 'string' && !('strTag' in template));\n hashCache.set(strings, id);\n }\n return id;\n}\n//# sourceMappingURL=runtime-msg.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { Deferred } from '../internal/deferred.js';\nimport { LOCALE_STATUS_EVENT } from '../internal/locale-status-event.js';\nimport { runtimeMsg } from '../internal/runtime-msg.js';\nimport { _installMsgImplementation } from './install.js';\n/**\n * Dispatch a \"lit-localize-status\" event to `window` with the given detail.\n */\nfunction dispatchStatusEvent(detail) {\n window.dispatchEvent(new CustomEvent(LOCALE_STATUS_EVENT, { detail }));\n}\nlet activeLocale = '';\nlet loadingLocale;\nlet sourceLocale;\nlet validLocales;\nlet loadLocale;\nlet templates;\nlet loading = new Deferred();\n// The loading promise must be initially resolved, because that's what we should\n// return if the user immediately calls setLocale(sourceLocale).\nloading.resolve();\nlet requestId = 0;\n/**\n * Set configuration parameters for lit-localize when in runtime mode. Returns\n * an object with functions:\n *\n * - `getLocale`: Return the active locale code.\n * - `setLocale`: Set the active locale code.\n *\n * Throws if called more than once.\n */\nexport const configureLocalization = (config) => {\n _installMsgImplementation(((template, options) => runtimeMsg(templates, template, options)));\n activeLocale = sourceLocale = config.sourceLocale;\n validLocales = new Set(config.targetLocales);\n validLocales.add(config.sourceLocale);\n loadLocale = config.loadLocale;\n return { getLocale, setLocale };\n};\n/**\n * Return the active locale code.\n */\nconst getLocale = () => {\n return activeLocale;\n};\n/**\n * Set the active locale code, and begin loading templates for that locale using\n * the `loadLocale` function that was passed to `configureLocalization`. Returns\n * a promise that resolves when the next locale is ready to be rendered.\n *\n * Note that if a second call to `setLocale` is made while the first requested\n * locale is still loading, then the second call takes precedence, and the\n * promise returned from the first call will resolve when second locale is\n * ready. If you need to know whether a particular locale was loaded, check\n * `getLocale` after the promise resolves.\n *\n * Throws if the given locale is not contained by the configured `sourceLocale`\n * or `targetLocales`.\n */\nconst setLocale = (newLocale) => {\n if (newLocale === (loadingLocale ?? activeLocale)) {\n return loading.promise;\n }\n if (!validLocales || !loadLocale) {\n throw new Error('Internal error');\n }\n if (!validLocales.has(newLocale)) {\n throw new Error('Invalid locale code');\n }\n requestId++;\n const thisRequestId = requestId;\n loadingLocale = newLocale;\n if (loading.settled) {\n loading = new Deferred();\n }\n dispatchStatusEvent({ status: 'loading', loadingLocale: newLocale });\n const localePromise = newLocale === sourceLocale\n ? // We could switch to the source locale synchronously, but we prefer to\n // queue it on a microtask so that switching locales is consistently\n // asynchronous.\n Promise.resolve({ templates: undefined })\n : loadLocale(newLocale);\n localePromise.then((mod) => {\n if (requestId === thisRequestId) {\n activeLocale = newLocale;\n loadingLocale = undefined;\n templates = mod.templates;\n dispatchStatusEvent({ status: 'ready', readyLocale: newLocale });\n loading.resolve();\n }\n // Else another locale was requested in the meantime. Don't resolve or\n // reject, because the newer load call is going to use the same promise.\n // Note the user can call getLocale() after the promise resolves if they\n // need to check if the locale is still the one they expected to load.\n }, (err) => {\n if (requestId === thisRequestId) {\n dispatchStatusEvent({\n status: 'error',\n errorLocale: newLocale,\n errorMessage: err.toString(),\n });\n loading.reject(err);\n }\n });\n return loading.promise;\n};\n//# sourceMappingURL=runtime.js.map","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.P(o,void 0,t),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","// Do not modify this file by hand!\n// Re-generate this file by running lit-localize.\n\n/**\n * The locale code that templates in this source code are written in.\n */\nexport const sourceLocale = `en`;\n\n/**\n * The other locale codes that this application is localized into. Sorted\n * lexicographically.\n */\nexport const targetLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `es`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n\n/**\n * All valid project locale codes. Sorted lexicographically.\n */\nexport const allLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `en`,\n `es`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.`,\n's1b9047d53d9f9d22': `2) Нажать \"Поделиться\"`,\n's37a9e8aec5713460': `Подробнее`,\n's5c6aad7a7e4a1437': `3) Нажать \"На экран «Домой»\"`,\n's6196153c4b0c1ea0': `Установить`,\n's922329d6f6213590': `Добавить в Dock`,\n'sa5ef80b4bb9b39f8': `Свернуть`,\n'sa7551383d1897fcc': `2) Нажмите \"Добавить в Dock\"`,\n'sba52286c21552a4e': `Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.`,\n'sc79fd7641eb9a975': `Спрятать Инструкцию`,\n'scdaf4bbff76674c8': `На экран «Домой»`,\n'sdfe23506a3b0cdc8': `1) Открыть в Safari браузере`,\n'se740f75b95a51807': `Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.`,\n'sfea652f6580ff086': `Этот веб-сайт имеет функционал приложения.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.`,\n's1b9047d53d9f9d22': `2) Gezinme çubuğunda Paylaş'a basın`,\n's37a9e8aec5713460': `Daha Fazla`,\n's5c6aad7a7e4a1437': `3) Ana Ekrana Ekle'ye basın`,\n's6196153c4b0c1ea0': `Yükle`,\n's922329d6f6213590': `Dock’a Ekle`,\n'sa5ef80b4bb9b39f8': `Küçült`,\n'sa7551383d1897fcc': `2) Dock’a ekleye basın`,\n'sba52286c21552a4e': `Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.`,\n'sc79fd7641eb9a975': `Talimatları gizle`,\n'scdaf4bbff76674c8': `Ana Ekrana Ekle`,\n'sdfe23506a3b0cdc8': `1) Safari tarayıcısında açın`,\n'se740f75b95a51807': `Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.`,\n'sfea652f6580ff086': `Bu site uygulama işlevselliğine sahiptir.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n's1b9047d53d9f9d22': `2) Drücken Sie auf Teilen in der Navigationsleiste`,\n's37a9e8aec5713460': `Mehr`,\n's5c6aad7a7e4a1437': `3) Drücken Sie Hinzufügen zum Startbildschirm`,\n's6196153c4b0c1ea0': `Installieren`,\n's922329d6f6213590': `Zum Dock hinzufügen`,\n'sa5ef80b4bb9b39f8': `Weniger`,\n'sa7551383d1897fcc': `2) Drücken Sie auf Zum Dock hinzufügen`,\n'sba52286c21552a4e': `Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.`,\n'sc79fd7641eb9a975': `Anleitung ausblenden`,\n'scdaf4bbff76674c8': `Hinzufügen zum Startbildschirm`,\n'sdfe23506a3b0cdc8': `1) In Safari-Browser öffnen`,\n'se740f75b95a51807': `Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n'sfea652f6580ff086': `Diese Website verfügt über App-Funktionalität.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.`,\n's1b9047d53d9f9d22': `2) Presionar Compartir en la barra de direcciones`,\n's37a9e8aec5713460': `Más`,\n's5c6aad7a7e4a1437': `3) Presionar Añadir a pantalla de inicio`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Añadir al Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Presionar Añadir al Dock`,\n'sba52286c21552a4e': `Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.`,\n'sc79fd7641eb9a975': `Esconder instrucciones`,\n'scdaf4bbff76674c8': `Añadir a pantalla de inicio`,\n'sdfe23506a3b0cdc8': `1) Abrir en el navegador web Safari`,\n'se740f75b95a51807': `Añádelo a tu Dock para una experiencia amplia y acceso fácil.`,\n'sfea652f6580ff086': `Este sitio tiene funcionalidad de aplicación.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.`,\n's1b9047d53d9f9d22': `2) Druk op delen in de navigatiebalk`,\n's37a9e8aec5713460': `Meer`,\n's5c6aad7a7e4a1437': `3) Druk op Toevoegen aan het startscherm`,\n's6196153c4b0c1ea0': `Installeren`,\n's922329d6f6213590': `Toevoegen aan Dock`,\n'sa5ef80b4bb9b39f8': `Minder`,\n'sa7551383d1897fcc': `2) Druk op Toevoegen aan Dock`,\n'sba52286c21552a4e': `Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.`,\n'sc79fd7641eb9a975': `Instructie verbergen`,\n'scdaf4bbff76674c8': `Toevoegen aan het startscherm`,\n'sdfe23506a3b0cdc8': `1) Open in Safari-browser`,\n'se740f75b95a51807': `Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.`,\n'sfea652f6580ff086': `Deze site heeft app-functionaliteit.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n's1b9047d53d9f9d22': `2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης`,\n's37a9e8aec5713460': `Περισσότερα`,\n's5c6aad7a7e4a1437': `3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας`,\n's6196153c4b0c1ea0': `Εγκατάσταση`,\n's922329d6f6213590': `Προσθήκη στην Πρόσβαση`,\n'sa5ef80b4bb9b39f8': `Λιγότερα`,\n'sa7551383d1897fcc': `2) Πατήστε Προσθήκη στην Πρόσβαση`,\n'sba52286c21552a4e': `Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sc79fd7641eb9a975': `Απόκρυψη Οδηγιών`,\n'scdaf4bbff76674c8': `Προσθήκη στην Οθόνη Αφετηρίας`,\n'sdfe23506a3b0cdc8': `1) Ανοίξτε τον περιηγητή Safari`,\n'se740f75b95a51807': `Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sfea652f6580ff086': `Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.`,\n's1b9047d53d9f9d22': `2) Appuyez sur Partager dans la barre de navigation`,\n's37a9e8aec5713460': `Plus`,\n's5c6aad7a7e4a1437': `3) Appuyez sur Ajouter à l'écran d'accueil`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Ajouter au Dock`,\n'sa5ef80b4bb9b39f8': `Moins`,\n'sa7551383d1897fcc': `2) Appuyez sur Ajouter au Dock`,\n'sba52286c21552a4e': `Installez-le sur votre appareil pour une expérience complète et un accès facile.`,\n'sc79fd7641eb9a975': `Masquer les instructions`,\n'scdaf4bbff76674c8': `Ajouter à l'écran d'accueil`,\n'sdfe23506a3b0cdc8': `1) Ouvrir dans le navigateur Safari`,\n'se740f75b95a51807': `Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.`,\n'sfea652f6580ff086': `Ce site possède des fonctionnalités d'application.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Додајте га на Home Screen за широке могућности и лак приступ.`,\n's1b9047d53d9f9d22': `2) Притисните Share у навигационој траци`,\n's37a9e8aec5713460': `Више`,\n's5c6aad7a7e4a1437': `3) Притисните Add to Home Screen`,\n's6196153c4b0c1ea0': `Инсталирај`,\n'sa5ef80b4bb9b39f8': `Мање`,\n'sa7551383d1897fcc': `3) Притисните Add to Dock`,\n'sba52286c21552a4e': `Инсталирајте га на вашем уређају за широке могућности и лак приступ.`,\n'sc79fd7641eb9a975': `Сакриј упутство`,\n'sdfe23506a3b0cdc8': `1) Отворите у Safari прегледачу`,\n'se740f75b95a51807': `Додајте га у вашу Dock за широке могућности и лак приступ.`,\n'sfea652f6580ff086': `Овај сајт има функционалност апликације.`,\n's922329d6f6213590': `Add to Dock`,\n'scdaf4bbff76674c8': `Add to Home Screen`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n's1b9047d53d9f9d22': `2) Wybierz \"Udostępnij\"`,\n's37a9e8aec5713460': `Więcej`,\n's5c6aad7a7e4a1437': `3) Wybierz \"Dodaj do Ekranu Głównego\"`,\n's6196153c4b0c1ea0': `Zainstaluj`,\n's922329d6f6213590': `Dodaj do Docka`,\n'sa5ef80b4bb9b39f8': `Mniej`,\n'sa7551383d1897fcc': `2) Wybierz \"Dodaj do Docka\"`,\n'sba52286c21552a4e': `Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sc79fd7641eb9a975': `Ukryj instrukcję`,\n'scdaf4bbff76674c8': `Dodaj do Ekranu Głównego`,\n'sdfe23506a3b0cdc8': `1) Otwórz przeglądarkę Safari`,\n'se740f75b95a51807': `Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sfea652f6580ff086': `Ta strona posiada funkcje aplikacji.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Додайте на Домашній екран для зручного доступу та ширших можливостей.`,\n's1b9047d53d9f9d22': `2) Натиснути «Поділитися»`,\n's37a9e8aec5713460': `Детальніше`,\n's5c6aad7a7e4a1437': `3) Натиснути «На Початковий екран»`,\n's6196153c4b0c1ea0': `Встановити`,\n's922329d6f6213590': `Додати на Dock`,\n'sa5ef80b4bb9b39f8': `Згорнути`,\n'sa7551383d1897fcc': `2) Натиснути «Додати на Dock»`,\n'sba52286c21552a4e': `Встановіть на ваш пристрій для зручного доступу та ширших можливостей.`,\n'sc79fd7641eb9a975': `Сховати Інструкцію`,\n'scdaf4bbff76674c8': `На Початковий экран`,\n'sdfe23506a3b0cdc8': `1) Відкрити в Safari браузері`,\n'se740f75b95a51807': `Додайте на панель Dock для зручного доступу та ширших можливостей.`,\n'sfea652f6580ff086': `Цей сайт має функції додатку.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。`,\n's1b9047d53d9f9d22': `2) 點擊列表上的分享按鈕`,\n's37a9e8aec5713460': `詳細資訊`,\n's5c6aad7a7e4a1437': `3) 點擊加入主畫面`,\n's6196153c4b0c1ea0': `安裝`,\n's922329d6f6213590': `添加到Dock欄`,\n'sa5ef80b4bb9b39f8': `簡短資訊`,\n'sa7551383d1897fcc': `2) 點選添加到Dock欄`,\n'sba52286c21552a4e': `在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。`,\n'sc79fd7641eb9a975': `隱藏安裝流程`,\n'scdaf4bbff76674c8': `將App加入主畫面`,\n'sdfe23506a3b0cdc8': `1) 在Safari上瀏覽此網頁`,\n'se740f75b95a51807': `將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。`,\n'sfea652f6580ff086': `此網站具有應用程式功能。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `将其添加到主屏幕,以享受更丰富的体验并便于访问。`,\n's1b9047d53d9f9d22': `2) 点击导航栏中的“分享”按钮`,\n's37a9e8aec5713460': `更多`,\n's5c6aad7a7e4a1437': `3) 点击“添加到主屏幕”`,\n's6196153c4b0c1ea0': `安装`,\n's922329d6f6213590': `添加到程序坞`,\n'sa5ef80b4bb9b39f8': `收起`,\n'sa7551383d1897fcc': `2) 点击“添加到程序坞”`,\n'sba52286c21552a4e': `在您的设备上安装,以享受更丰富的体验并便于访问。`,\n'sc79fd7641eb9a975': `隐藏安装步骤`,\n'scdaf4bbff76674c8': `添加到主屏幕`,\n'sdfe23506a3b0cdc8': `1) 在 Safari 浏览器中打开此页面`,\n'se740f75b95a51807': `将其添加到您的程序坞,以享受更全面的体验并便于访问。`,\n'sfea652f6580ff086': `此网站具备 App 功能特性。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.`,\n's1b9047d53d9f9d22': `2) Premi Condividi nella barra di navigazione`,\n's37a9e8aec5713460': `Più`,\n's5c6aad7a7e4a1437': `3) Premi Aggiungi alla schermata principale`,\n's6196153c4b0c1ea0': `Installa`,\n's922329d6f6213590': `Aggiungi al Dock`,\n'sa5ef80b4bb9b39f8': `Meno`,\n'sa7551383d1897fcc': `2) Premi Aggiungi al Dock`,\n'sba52286c21552a4e': `Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.`,\n'sc79fd7641eb9a975': `Nascondi istruzioni`,\n'scdaf4bbff76674c8': `Aggiungi alla schermata principale`,\n'sdfe23506a3b0cdc8': `1) Apri nel browser Safari`,\n'se740f75b95a51807': `Aggiungilo al Dock per un'esperienza più completa e un accesso facile.`,\n'sfea652f6580ff086': `Questo sito ha funzionalità di app.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Přidejte jej na plochu pro rozšířené využití a snadný přístup.`,\n's1b9047d53d9f9d22': `2) Stiskněte tlačítko Sdílet na navigačním panelu`,\n's37a9e8aec5713460': `Vice`,\n's5c6aad7a7e4a1437': `3) Stiskněte tlačítko Přidat na plochu`,\n's6196153c4b0c1ea0': `Nainstalovat`,\n's922329d6f6213590': `Přidat do Docku`,\n'sa5ef80b4bb9b39f8': `Méně`,\n'sa7551383d1897fcc': `2) Stiskněte Přidat do Docku`,\n'sba52286c21552a4e': `Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.`,\n'sc79fd7641eb9a975': `Skrýt instrukce`,\n'scdaf4bbff76674c8': `Přidat na plochu`,\n'sdfe23506a3b0cdc8': `1) Otevřete v prohlížeči Safari`,\n'se740f75b95a51807': `Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.`,\n'sfea652f6580ff086': `Tento web má funkce aplikace.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.`,\n's1b9047d53d9f9d22': `2) Trykk på Del-knappen i navigasjonslinjen`,\n's37a9e8aec5713460': `Mer`,\n's5c6aad7a7e4a1437': `3) Velg Legg til på Hjem-skjerm`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Legg til i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Velg Legg til i Dock`,\n'sba52286c21552a4e': `Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sc79fd7641eb9a975': `Skjul instruksjoner`,\n'scdaf4bbff76674c8': `Legg til på Hjem-skjerm`,\n'sdfe23506a3b0cdc8': `1) Åpne i Safari`,\n'se740f75b95a51807': `Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sfea652f6580ff086': `Denne siden har app-funksjonalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.`,\n's1b9047d53d9f9d22': `2) Pressione Compartilhar na barra de endereço`,\n's37a9e8aec5713460': `Mais`,\n's5c6aad7a7e4a1437': `3) Pressione Adicionar à Tela de Início`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Adicionar ao Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Pressione Adicionar ao Dock`,\n'sba52286c21552a4e': `Instale no dispositivo para uma melhor experiência e mais fácil acesso.`,\n'sc79fd7641eb9a975': `Ocultar Instruções`,\n'scdaf4bbff76674c8': `Adicionar à Tela de Início`,\n'sdfe23506a3b0cdc8': `1) Abra no navegador Safari`,\n'se740f75b95a51807': `Adicione ao Dock para uma melhor experiência e mais fácil acesso.`,\n'sfea652f6580ff086': `Este site possui funcionalidade de aplicativo.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。`,\n's1b9047d53d9f9d22': `2) ナビゲーションバーで共有を押す`,\n's37a9e8aec5713460': `展開`,\n's5c6aad7a7e4a1437': `3) 「ホーム画面に追加」を押す`,\n's6196153c4b0c1ea0': `インストール`,\n's922329d6f6213590': `Dockに追加`,\n'sa5ef80b4bb9b39f8': `折りたたむ`,\n'sa7551383d1897fcc': `2) 「Dockに追加」を押す`,\n'sba52286c21552a4e': `デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。`,\n'sc79fd7641eb9a975': `説明を非表示`,\n'scdaf4bbff76674c8': `ホーム画面に追加`,\n'sdfe23506a3b0cdc8': `1) Safariで開く`,\n'se740f75b95a51807': `ドックに追加して、幅広い体験と簡単なアクセスを実現してください。`,\n'sfea652f6580ff086': `このサイトはアプリ機能があります。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.`,\n's1b9047d53d9f9d22': `2) Tryck på Dela-knappen i verktygsfältet`,\n's37a9e8aec5713460': `Mer`,\n's5c6aad7a7e4a1437': `3) Välj Lägg till på hemskärmen`,\n's6196153c4b0c1ea0': `Installera`,\n's922329d6f6213590': `Lägg till i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Välj Lägg till i Dock`,\n'sba52286c21552a4e': `Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sc79fd7641eb9a975': `Göm instruktioner`,\n'scdaf4bbff76674c8': `Lägg till på hemskärmen`,\n'sdfe23506a3b0cdc8': `1) Öppna i Safari`,\n'se740f75b95a51807': `Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sfea652f6580ff086': `Denna webbsajt har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.`,\n's1b9047d53d9f9d22': `2) 내비게이션 바에서 공유 버튼 누르기`,\n's37a9e8aec5713460': `더보기`,\n's5c6aad7a7e4a1437': `3) 홈 화면에 추가 버튼 누르기`,\n's6196153c4b0c1ea0': `설치`,\n's922329d6f6213590': `Dock에 추가`,\n'sa5ef80b4bb9b39f8': `닫기`,\n'sa7551383d1897fcc': `2) Dock에 추가 버튼 누르기`,\n'sba52286c21552a4e': `더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.`,\n'sc79fd7641eb9a975': `안내 숨기기`,\n'scdaf4bbff76674c8': `홈 화면에 추가`,\n'sdfe23506a3b0cdc8': `1) Safari 브라우저에서 열기`,\n'se740f75b95a51807': `더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.`,\n'sfea652f6580ff086': `이 사이트는 앱 기능을 가지고 있습니다.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n's1b9047d53d9f9d22': `2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ`,\n's37a9e8aec5713460': `បង្ហាញបន្ថែម`,\n's5c6aad7a7e4a1437': `3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n's6196153c4b0c1ea0': `តំឡើង`,\n's922329d6f6213590': `បន្ថែមទៅកាន់ Dock`,\n'sa5ef80b4bb9b39f8': `បង្ហាញតិច`,\n'sa7551383d1897fcc': `2) ចុចលើ បន្ថែមទៅកាន់ Dock`,\n'sba52286c21552a4e': `តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sc79fd7641eb9a975': `បិទការណែនាំ`,\n'scdaf4bbff76674c8': `បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n'sdfe23506a3b0cdc8': `1) បើកនៅក្នុងកម្មវិធី Safari`,\n'se740f75b95a51807': `បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sfea652f6580ff086': `គេហទំព័រនេះមានមុខងារជាកម្មវិធី។`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.`,\n's1b9047d53d9f9d22': `2) Tryk på Del-knappen i navigationslinjen`,\n's37a9e8aec5713460': `Mere`,\n's5c6aad7a7e4a1437': `3) Vælg Tilføj til hjemmeskærm`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Tilføj til Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Vælg Tilføj til Dock`,\n'sba52286c21552a4e': `Installer den på din enhed for en bedre oplevelse og nem adgang.`,\n'sc79fd7641eb9a975': `Skjul instruktion`,\n'scdaf4bbff76674c8': `Tilføj til hjemmeskærm`,\n'sdfe23506a3b0cdc8': `1) Åbn i Safari-browseren`,\n'se740f75b95a51807': `Tilføj den til din Dock for en bedre oplevelse og nem adgang.`,\n'sfea652f6580ff086': `Denne side har app-funktionalitet.`,\n };\n ","import { configureLocalization } from '@lit/localize';\r\nimport {\r\n sourceLocale,\r\n targetLocales,\r\n} from './locale-codes';\r\n\r\nimport * as ru from './locales/ru';\r\nimport * as tr from './locales/tr';\r\nimport * as de from \"./locales/de\";\r\nimport * as es from \"./locales/es\";\r\nimport * as nl from \"./locales/nl\";\r\nimport * as el from \"./locales/el\";\r\nimport * as fr from \"./locales/fr\";\r\nimport * as sr from \"./locales/sr\";\r\nimport * as pl from \"./locales/pl\";\r\nimport * as uk from \"./locales/uk\";\r\nimport * as zhHK from \"./locales/zh-HK\";\r\nimport * as zhCN from \"./locales/zh-CN\";\r\nimport * as it from \"./locales/it\";\r\nimport * as cs from \"./locales/cs\";\r\nimport * as no from \"./locales/no\";\r\nimport * as pt from \"./locales/pt\";\r\nimport * as ja from \"./locales/ja\";\r\nimport * as sv from \"./locales/sv\";\r\nimport * as ko from \"./locales/ko\";\r\nimport * as km from \"./locales/km\";\r\nimport * as da from \"./locales/da\";\r\n\r\nconst localizedTemplates = new Map([\r\n ['ru', ru],\r\n ['tr', tr],\r\n ['de', de],\r\n ['es', es],\r\n ['nl', nl],\r\n ['el', el],\r\n ['fr', fr],\r\n ['sr', sr],\r\n ['pl', pl],\r\n ['uk', uk],\r\n ['zh-HK', zhHK],\r\n ['zh-CN', zhCN],\r\n ['it', it],\r\n ['cs', cs],\r\n ['no', no], // + nb\r\n ['pt', pt],\r\n ['ja', ja],\r\n ['sv', sv],\r\n ['ko', ko],\r\n ['km', km],\r\n ['da', da],\r\n])\r\n\r\nexport const { getLocale, setLocale } = configureLocalization({\r\n sourceLocale,\r\n targetLocales,\r\n // @ts-ignore\r\n loadLocale: async (lang: string) => localizedTemplates.get(lang)\r\n});\r\n\r\nexport const changeLocale = (lang: string) => {\r\n // Norwegian Bokmål is same as Norwegian\r\n switch (lang.slice(0, 2)) {\r\n case 'nb':\r\n lang = 'no';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // Fallback to simplified Chinese\r\n switch (lang) {\r\n case 'zh':\r\n case 'zh-TW':\r\n lang = 'zh-CN';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n try {\r\n if (localizedTemplates.get(lang))\r\n setLocale(lang);\r\n else\r\n setLocale(lang.slice(0, 2));\r\n }\r\n catch {\r\n console.warn(`pwa-install: translation error - unsupported locale: ${lang}`);\r\n }\r\n};\r\n","import { ImageResource } from 'web-app-manifest';\r\n\r\nexport interface IRelatedApp {\r\n id: string,\r\n platform: string,\r\n url: string\r\n}\r\n\r\nexport interface IWindow extends Window {\r\n defferedPromptEvent: BeforeInstallPromptEvent | null;\r\n}\r\n\r\ntype Booleanish = 'true' | 'false';\r\n\r\nexport interface PWAInstallAttributes {\r\n ['manual-apple']?: Booleanish;\r\n ['manual-chrome']?: Booleanish;\r\n ['disable-chrome']?: Booleanish;\r\n ['install-description']?: string;\r\n ['disable-install-description']?: Booleanish;\r\n ['manifest-url']?: string;\r\n name?: string;\r\n description?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ManifestScreenshot extends ImageResource {\r\n label?: string;\r\n platform?: string;\r\n form_factor?: \"wide\" | \"narrow\";\r\n}\r\n\r\nexport class Manifest {\r\n constructor() {\r\n this.icons = [{ src: '' }];\r\n this.screenshots = undefined;\r\n this.short_name = 'PWA';\r\n this.name = 'Progressive web application';\r\n this.description = 'Progressive web application';\r\n }\r\n short_name: string;\r\n icons: ImageResource[];\r\n screenshots?: ManifestScreenshot[];\r\n name: string;\r\n description: string;\r\n}\r\n","import {css} from 'lit'; export default css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`;\n ","import { WebAppManifest } from 'web-app-manifest';\r\nimport { IRelatedApp } from './types/types';\r\n\r\nconst _eventDispatcher = (_element: Element, name: string, message: string) => {\r\n const event = new CustomEvent(name, {\r\n detail: {\r\n message\r\n }\r\n });\r\n _element.dispatchEvent(event);\r\n}\r\nexport default class Utils {\r\n static isAppleMobile(): boolean {\r\n\t\tif (\r\n (\r\n ['iPhone', 'iPad', 'iPod'].includes(navigator.platform) ||\r\n (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2)\r\n )\r\n && ('serviceWorker' in navigator)\r\n )\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static isAppleDesktop(): boolean {\r\n // check if it's a mac\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n if (navigator.maxTouchPoints || !userAgent.match(/macintosh/))\r\n return false;\r\n // check safari version >= 17\r\n const version = /version\\/(\\d{2})\\./.exec(userAgent)\r\n if (!version || !version[1] || !(parseInt(version[1]) >= 17))\r\n return false;\r\n // hacky way to detect Sonoma\r\n const audioCheck = document.createElement('audio').canPlayType('audio/wav; codecs=\"1\"') ? true : false;\r\n const webGLCheck = new OffscreenCanvas(1, 1).getContext('webgl') ? true : false;\r\n\r\n return audioCheck && webGLCheck;\r\n }\r\n\r\n static deviceFormFactor(): 'narrow' | 'wide' {\r\n return window.matchMedia('(orientation: portrait)').matches? 'narrow' : 'wide';\r\n }\r\n \r\n static isStandalone() {\r\n\t\tif (window.matchMedia('(display-mode: standalone)').matches || ('standalone' in navigator && (navigator as any).standalone === true))\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static async getInstalledRelatedApps(): Promise {\r\n if ('getInstalledRelatedApps' in navigator)\r\n try{\r\n return await (navigator as any).getInstalledRelatedApps().then((relatedApps: IRelatedApp[]) => {\r\n return relatedApps;\r\n });\r\n } catch (e) {}\r\n \r\n return [];\r\n }\r\n \r\n static async isRelatedAppsInstalled(): Promise {\r\n const _relatedApps = await this.getInstalledRelatedApps();\r\n return _relatedApps.length? true : false;\r\n }\r\n\r\n static setStorageFlag(name: string, value:boolean, persistent: boolean = false) {\r\n try {\r\n if (persistent)\r\n localStorage.setItem(name, value.toString());\r\n else\r\n sessionStorage.setItem(name, value.toString());\r\n } catch (e) {}\r\n }\r\n static getStorageFlag(name: string): boolean {\r\n try {\r\n return sessionStorage.getItem(name) === 'true' || localStorage.getItem(name) === 'true';\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n static eventInstalledSuccess(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-success-event', 'App install success (Chromium/Android only)');\r\n }\r\n static eventInstalledFail(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-fail-event', 'App install failed (Chromium/Android only)');\r\n }\r\n static eventUserChoiceResult(_element: Element, message: string) {\r\n _eventDispatcher(_element, 'pwa-user-choice-result-event', message);\r\n }\r\n static eventInstallAvailable(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-available-event', 'App install available');\r\n }\r\n static eventInstallHowTo(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-how-to-event', 'App install instruction showed');\r\n }\r\n static eventGallery(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-gallery-event', 'App install gallery showed');\r\n }\r\n\r\n static normalizeManifestAssetUrls(manifest: WebAppManifest, manifestUrl: string) {\r\n const normalizedManifestUrl = new URL(manifestUrl, document.location.href);\r\n [...manifest.icons || [], ...manifest.screenshots || []].forEach(asset => {\r\n asset.src = new URL(asset.src, normalizedManifestUrl).href;\r\n })\r\n }\r\n}","import { html } from 'lit';\r\nimport Utils from '../utils';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nconst template = (screenshots: ManifestScreenshot[], theme: string, scrollToNextPage: any, scrollToPrevPage: any) => {\r\n\r\n return html`\r\n ${screenshots? html`\r\n
\r\n
\r\n
\r\n ${screenshots.filter(screenshot => !screenshot.form_factor || screenshot.form_factor === Utils.deviceFormFactor()).map(screenshot => html`${screenshot.label || \"\"}`)}\r\n
\r\n
\r\n \r\n ${theme != 'default'?\r\n html``\r\n :\r\n html``\r\n }\r\n \r\n \r\n ${theme != 'default'?\r\n html`\r\n \r\n `\r\n :\r\n html`\r\n \r\n \r\n \r\n `\r\n }\r\n \r\n
`\r\n : ''}`;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nimport styles from './styles-gallery.scss';\r\nimport template from './template-gallery';\r\n\r\n@customElement('pwa-gallery')\r\nexport default class PWAGalleryElement extends LitElement {\r\n\t@property({ type: Array }) screenshots: ManifestScreenshot[] = [];\r\n\t@property() theme: 'default' | 'apple_desktop' | 'apple_mobile' = 'default';\r\n\r\n\tstatic get styles() {\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tprivate getScrollElements = () => {\r\n\t\tconst gallery = this.shadowRoot?.querySelector('#paginated_gallery') as HTMLElement | null;\r\n\t\tif (!gallery) return;\r\n\t\t\r\n\t\tconst galleryScroller = gallery.querySelector('.gallery_scroller') as HTMLElement | null;\r\n\t\tif (!galleryScroller) return;\r\n\t\r\n\t\tconst galleryItems = Array.from(galleryScroller.querySelectorAll('img')) as HTMLElement[];\r\n\t\tif (galleryItems.length === 0) return;\r\n\t\r\n\t\treturn {\r\n\t\t\tscroller: galleryScroller,\r\n\t\t\titems: galleryItems\r\n\t\t};\r\n\t};\r\n\t\r\n\tprivate findCurrentItem = (scroller: HTMLElement, items: HTMLElement[]): HTMLElement | null => {\r\n\t\tconst scrollLeft = scroller.scrollLeft;\r\n\t \t// Find the item closest to the center of the viewport.\r\n\t\treturn items.find((item) => (item.offsetWidth + item.offsetLeft) >= scrollLeft + (item.offsetWidth / 2.5)) || null;\r\n\t};\r\n\t\r\n\tprivate scrollToPage = (direction: 'next' | 'prev') => {\r\n\t\tconst scrollData = this.getScrollElements();\r\n\t\tif (!scrollData) return;\r\n\t\r\n\t\tconst { scroller, items } = scrollData;\r\n\t\tconst currentItem = this.findCurrentItem(scroller, items);\r\n\t\tif (!currentItem) return;\r\n\t\r\n\t\tconst currentIndex = items.indexOf(currentItem);\r\n\t\tconst offset = direction === 'next' ? 1 : -1;\r\n\t\tconst targetIndex = currentIndex + offset;\r\n\t\t\r\n\t\tif (targetIndex >= 0 && targetIndex < items.length) {\r\n\t\t\titems[targetIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\r\n\t\t}\r\n\t};\r\n\t\r\n\tpublic scrollToNextPage = () => {\r\n\t\tthis.scrollToPage('next');\r\n\t};\r\n\t\r\n\tpublic scrollToPrevPage = () => {\r\n\t\tthis.scrollToPage('prev');\r\n\t};\r\n\r\n\r\n\tprivate _init = () => {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tconst _tools = this.getScrollElements();\r\n\t\tif (_tools)\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\t_tools.scroller.scrollTo({\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t300\r\n\t\t\t)\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\tthis._init();\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(\r\n this.screenshots,\r\n\t\t\tthis.theme,\r\n\t\t\tthis.scrollToNextPage,\r\n\t\t\tthis.scrollToPrevPage\r\n )}`;\r\n\t}\r\n}\r\n","import { html } from 'lit';\nimport { msg } from '@lit/localize';\n\nconst template = (name: string, description: string, icon: string, install: any) => {\n return html`\n
\n
\n
\n \"icon\"\n
\n
\n
\n \n
\n
${location.hostname}
\n
\n \n
\n ${description ? html `
${description}
`: ''}\n `;\n};\nexport default template;\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\n\r\n// import TouchDragListener from \"./touch-listener\";\r\n\r\ntype IProps = {\r\n name: string,\r\n description: string,\r\n icon: string\r\n}\r\n\r\nimport template from './template-bottom-sheet';\r\nimport Utils from '../../../utils';\r\n\r\n@customElement('pwa-bottom-sheet')\r\nexport default class PWABottomSheetElement extends LitElement {\r\n\t@property({type: Object}) props: IProps = {\r\n name: '',\r\n description: '',\r\n icon: ''\r\n };\r\n @property({type: Object}) install = {handleEvent: () => {}};\r\n\t@property() hideDialog = () => {};\r\n\t@property() disableClose = false;\r\n\r\n\tprivate _callInstall = () => {\r\n\t\tthis.install.handleEvent();\r\n\t}\r\n\r\n\tprivate _callHide = () => {\r\n\t\tthis.hideDialog();\r\n\t\tthis.setupAppearence();\r\n\t}\r\n\r\n\tprivate bindedElement: {\r\n\t\ttouchElement: HTMLElement,\r\n\t\tlistener: any }| null = null;\r\n\tprivate readonly _saveBodyStyle = document.body.style.overscrollBehaviorY;\r\n\tprivate dragMobileSheet = (element: HTMLElement | null | undefined, touchTargetElement: HTMLElement | undefined, infoElement: HTMLElement | undefined) => {\r\n\t\tif (!element || !touchTargetElement || !infoElement)\r\n\t\t\treturn null;\r\n\r\n\t\tlet dragOffset = 0;\r\n\t\tconst bounceOffset = 35;\r\n\t\tconst bottomSize = touchTargetElement.clientHeight + infoElement.clientHeight;\r\n\r\n\t\tconst getYCoord = (e: MouseEvent | TouchEvent): number => {\r\n\t\t\treturn (e as MouseEvent).clientY || ((e as TouchEvent).changedTouches && (e as TouchEvent).changedTouches.length? (e as TouchEvent).changedTouches[0].clientY : 0);\r\n\t\t}\r\n\r\n\t\tconst dragMouseDown = (e: MouseEvent | TouchEvent) => {\r\n\t\t\twindow.addEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.addEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.addEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.addEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tdragOffset = getYCoord(e) - touchTargetElement.getBoundingClientRect().top;\r\n\r\n\t\t\tdocument.body.style.overscrollBehaviorY = 'none';\r\n\t\t}\r\n\t\tconst dragMouseUp = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tdocument.body.style.overscrollBehaviorY = this._saveBodyStyle;\r\n\r\n\t\t\tif (!this.disableClose && getYCoord(e) >= window.innerHeight - 25) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight + 50, true);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (window.innerHeight - getYCoord(e) > element.clientHeight / 2.5) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - element.clientHeight);\r\n\t\t\t\t\r\n\t\t\t\ttry {\r\n\t\t\t\t\tUtils.eventGallery((this.getRootNode() as ShadowRoot).host);\r\n\t\t\t\t} catch (e) {}\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - bottomSize - bounceOffset);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dragMouseMove = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tconst currentY = getYCoord(e);\r\n\r\n\t\t\tif (this.disableClose && window.innerHeight - currentY < 70) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (currentY <= (window.innerHeight - element.clientHeight + dragOffset)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`none`\r\n\t\t\t)\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"--translateY\",\r\n\t\t\t\t`translateY(${currentY - dragOffset}px)`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst closeDragElement = (e: MouseEvent | TouchEvent, toPoint?: number, hideDialog?: boolean) => {\r\n\t\t\twindow.removeEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.removeEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.removeEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.removeEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tif (window.innerWidth >= 768)\r\n\t\t\t\treturn\r\n\r\n\t\t\tif (!toPoint && getYCoord(e) >= window.innerHeight - bottomSize)\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(calc(100vh - ${bottomSize}px))`\r\n\t\t\t\t);\r\n\t\t\telse\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(${(toPoint || getYCoord(e)) + bounceOffset}px)`\r\n\t\t\t\t);\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s`\r\n\t\t\t);\r\n\r\n\t\t\tif (hideDialog){\r\n\t\t\t\ttouchTargetElement.removeEventListener('mousedown', dragMouseDown);\r\n\t\t\t\ttouchTargetElement.removeEventListener('touchstart', dragMouseDown);\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\tthis._callHide,\r\n\t\t\t\t\t250\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ttouchTargetElement.addEventListener('mousedown', dragMouseDown);\r\n\t\ttouchTargetElement.addEventListener('touchstart', dragMouseDown, {passive: true});\r\n\r\n\t\tcloseDragElement(new MouseEvent('mouseup'), window.innerHeight - bottomSize - bounceOffset);\r\n\r\n\t\treturn {\r\n\t\t\ttouchElement: touchTargetElement,\r\n\t\t\tlistener: dragMouseDown\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupAppearence = () => {\r\n\t\tif (this.bindedElement) {\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('mousedown', this.bindedElement.listener);\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('touchstart', this.bindedElement.listener);\r\n\t\t}\r\n\r\n\t\tthis.bindedElement = this.dragMobileSheet(\r\n\t\t\tthis.parentElement?.parentElement,\r\n\t\t\tthis.parentElement?.getElementsByClassName('touch-header')[0] as HTMLElement,\r\n\t\t\tthis.parentElement?.getElementsByClassName('body-header')[0] as HTMLElement);\r\n\t}\r\n\tprivate _init = () => {\r\n\t\tthis.setupAppearence();\r\n\r\n\t\twindow.addEventListener('resize', this.setupAppearence);\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tthis._init();\r\n return;\r\n\t}\r\n\r\n createRenderRoot() {\r\n return this;\r\n }\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(this.props.name, this.props.description, this.props.icon, this._callInstall)}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,\"Segoe UI\",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:\"\";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,\"Segoe UI\",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:\"\";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`;\n ","import {css} from 'lit'; export default css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,\"Segoe UI\";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon description\" \"welcome welcome\" \"how-to how-to\" \"gallery gallery\" \"button button\";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon\" \"description\" \"welcome\" \"how-to\" \"gallery\" \"button\";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;\n ","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this.t=t,this._$AM=e,this.i=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{noChange as R}from\"../lit-html.js\";import{directive as e,Directive as i,PartType as t}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const Rt=e(class extends i{constructor(s){if(super(s),s.type!==t.ATTRIBUTE||\"class\"!==s.name||s.strings?.length>2)throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\")}render(t){return\" \"+Object.keys(t).filter((s=>t[s])).join(\" \")+\" \"}update(t,[s]){if(void 0===this.st){this.st=new Set,void 0!==t.strings&&(this.nt=new Set(t.strings.join(\" \").split(/\\s/).filter((t=>\"\"!==t))));for(const t in s)s[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(s)}const i=t.element.classList;for(const t of this.st)t in s||(i.remove(t),this.st.delete(t));for(const t in s){const r=!!s[t];r===this.st.has(t)||this.nt?.has(t)||(r?(i.add(t),this.st.add(t)):(i.remove(t),this.st.delete(t)))}return R}});export{Rt as classMap};\n//# sourceMappingURL=class-map.js.map\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, install: any, toggleGallery: any, galleryRequested: boolean) => {\r\n const installDialogClasses = () => { return {available: installAvailable, gallery: galleryRequested }};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n ${!disableClose? html`` : ''}\r\n
\r\n
${location.hostname}
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n ${!disableDescription? \r\n html`
${installDescription? installDescription: `${msg('This site has app functionality.')} ${msg('Install it on your device for extensive experience and easy access.')}`}
` \r\n : ''}\r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n ${screenshotsAvailable? html``:''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n
\r\n
`;\r\n};\r\nexport default template;\r\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, howToForApple: any, isDesktop: boolean, howToRequested: boolean, toggleGallery: any, galleryRequested: boolean) => {\r\n const installDialogClassesApple = () => { return {available: installAvailable, 'how-to': howToRequested, gallery: galleryRequested, desktop: isDesktop}};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, PropertyValues, html } from 'lit';\r\nimport { localized } from '@lit/localize';\r\nimport { property, state, customElement } from 'lit/decorators.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { changeLocale } from './localization';\r\n\r\nimport { IRelatedApp, Manifest, IWindow, PWAInstallAttributes } from './types/types';\r\n\r\nimport PWAGalleryElement from './gallery';\r\nimport PWABottomSheetElement from './templates/chrome/bottom-sheet';\r\n\r\nimport Utils from './utils';\r\n\r\ndeclare const window: IWindow;\r\n\r\nimport styles from './templates/chrome/styles.scss';\r\nimport stylesApple from './templates/apple/styles-apple.scss';\r\n\r\nimport template from './templates/chrome/template';\r\nimport templateApple from './templates/apple/template-apple';\r\n\r\n/**\r\n * @event {CustomEvent} pwa-install-success-event - App install success (Chromium/Android only)\r\n * @event {CustomEvent} pwa-install-fail-event - App install failed (Chromium/Android only)\r\n * @event {CustomEvent} pwa-user-choice-result-event - dismissed, accepted\r\n * @event {CustomEvent} pwa-install-available-event - App install available\r\n * @event {CustomEvent} pwa-install-how-to-event - App install instruction showed\r\n * @event {CustomEvent} pwa-install-gallery-event - App install gallery showed\r\n */\r\n@localized()\r\n@customElement('pwa-install')\r\nexport class PWAInstallElement extends LitElement {\r\n\t@property({attribute: 'manifest-url'}) manifestUrl = '/manifest.json';\r\n\t@property() icon = '';\r\n\t@property() name = '';\r\n\t@property() description = '';\r\n\t@property({attribute: 'install-description'}) installDescription = '';\r\n\t@property({attribute: 'disable-install-description', type: Boolean}) disableDescription = false;\r\n\t@property({attribute: 'disable-screenshots', type: Boolean}) disableScreenshots = false;\r\n\t@property({attribute: 'disable-screenshots-apple', type: Boolean}) disableScreenshotsApple = false;\r\n\t@property({attribute: 'disable-screenshots-chrome', type: Boolean}) disableScreenshotsChrome = false;\r\n\t@property({attribute: 'manual-apple', type: Boolean}) manualApple = false;\r\n\t@property({attribute: 'manual-chrome', type: Boolean}) manualChrome = false;\r\n\t@property({attribute: 'disable-chrome', type: Boolean}) disableChrome = false;\r\n\t@property({attribute: 'disable-close', type: Boolean}) disableClose = false;\r\n\t@property({attribute: 'use-local-storage', type: Boolean}) useLocalStorage = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn [ styles, stylesApple ];\r\n\t}\r\n\r\n\t@state() externalPromptEvent: BeforeInstallPromptEvent | null = null;\r\n\r\n\tpublic platforms: BeforeInstallPromptEvent['platforms'] = [];\r\n\tpublic userChoiceResult = '';\r\n\r\n\tpublic isDialogHidden: boolean = Utils.getStorageFlag('pwa-hide-install');\r\n\tpublic isInstallAvailable = false;\r\n\tpublic isAppleMobilePlatform = false;\r\n\tpublic isAppleDesktopPlatform = false;\r\n\tpublic isUnderStandaloneMode = false;\r\n\tpublic isRelatedAppsInstalled = false;\r\n\r\n\t/** @internal */\r\n\tprivate _manifest: WebAppManifest = new Manifest();\r\n\t/** @internal */\r\n\tprivate _howToRequested = false;\r\n\t/** @internal */\r\n\tprivate _galleryRequested = false;\r\n\t/** @internal */\r\n\tprivate _install = {\r\n\t\thandleEvent: () => {\r\n\t\t\tif (window.defferedPromptEvent) {\r\n\t\t\t\tthis.hideDialog();\r\n\t\t\t\twindow.defferedPromptEvent.prompt();\r\n\t\t\t\twindow.defferedPromptEvent.userChoice\r\n\t\t\t\t\t.then((choiceResult: PromptResponseObject) => {\r\n\t\t\t\t\t\tthis.userChoiceResult = choiceResult.outcome;\r\n\t\t\t\t\t\tUtils.eventUserChoiceResult(this, this.userChoiceResult);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tUtils.eventInstalledFail(this);\r\n\t\t\t\t\t});\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\tpublic install = () => {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis._howToRequested = true;\r\n\t\t\tthis.requestUpdate();\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._install.handleEvent();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialog = {\r\n\t\thandleEvent: () => {\r\n\t\t\tthis.isDialogHidden = true;\r\n\t\t\tUtils.setStorageFlag('pwa-hide-install', true, this.useLocalStorage);\r\n\t\t\tthis.requestUpdate();\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialogUser = () => {\r\n\t\tUtils.eventUserChoiceResult(this, 'dismissed');\r\n\t\tthis.userChoiceResult = 'dismissed';\r\n\t\tthis.hideDialog();\r\n\t}\r\n\tpublic hideDialog = () => {\r\n\t\tthis._hideDialog.handleEvent();\r\n\t}\r\n\tpublic showDialog = (forced = false) => {\r\n\t\tthis.isDialogHidden = false;\r\n\t\tif (forced)\r\n\t\t\tthis.isInstallAvailable = true;\r\n\t\tUtils.setStorageFlag('pwa-hide-install', false, this.useLocalStorage);\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tpublic getInstalledRelatedApps = async (): Promise => {\r\n\t\treturn await Utils.getInstalledRelatedApps();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _howToForApple = {\r\n handleEvent: () => {\r\n\t\t\tthis._howToRequested = !this._howToRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._galleryRequested = false;\r\n\t\t\tthis.requestUpdate();\r\n\r\n\t\t\tif (this._howToRequested) {\r\n\t\t\t\tUtils.eventInstallHowTo(this);\r\n\t\t\t}\t\t\t\t\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate _toggleGallery = {\r\n handleEvent: () => {\r\n\t\t\tthis._galleryRequested = !this._galleryRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._howToRequested = false;\r\n\r\n\t\t\tthis._galleryRequested && Utils.eventGallery(this);\r\n\r\n\t\t\tthis.requestUpdate();\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate async _checkInstalled() {\r\n\t\tthis.isUnderStandaloneMode = Utils.isStandalone();\r\n\t\tthis.isRelatedAppsInstalled = await Utils.isRelatedAppsInstalled();\r\n\t\tthis.isAppleMobilePlatform = Utils.isAppleMobile();\r\n\t\tthis.isAppleDesktopPlatform = Utils.isAppleDesktop();\r\n\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tif (!this.isUnderStandaloneMode) {\r\n\t\t\t\tthis.manualApple && this.hideDialog();\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t1000\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.manualChrome && this.hideDialog();\r\n\t\t}\r\n\t}\r\n\t/** @internal */\r\n\tprivate _init = async () => {\r\n\t\twindow.defferedPromptEvent = null;\r\n\r\n\t\tthis._checkInstalled();\r\n\r\n\t\tif (!this.disableChrome) {\r\n\t\t\tconst _promptHandler = (e: BeforeInstallPromptEvent) => {\r\n\t\t\t\twindow.defferedPromptEvent = e;\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.platforms = e.platforms;\r\n\r\n\t\t\t\tif (this.isRelatedAppsInstalled || this.isUnderStandaloneMode) {\r\n\t\t\t\t\tthis.isInstallAvailable = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userChoiceResult === 'accepted'){\r\n\t\t\t\t\tthis.isDialogHidden = true;\r\n\t\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t\tif (this.externalPromptEvent != null)\r\n\t\t\t\tsetTimeout(() => _promptHandler(this.externalPromptEvent!), 300);\r\n\t\t\telse\r\n\t\t\t\twindow.addEventListener('beforeinstallprompt', _promptHandler);\r\n\t\t}\r\n\r\n\t\twindow.addEventListener('appinstalled', (e) => {\r\n\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\tthis.isInstallAvailable = false;\r\n\r\n\t\t\tthis.requestUpdate();\r\n\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t});\r\n\r\n\r\n\t\ttry{\r\n\t\t\tconst _response = await fetch(this.manifestUrl);\r\n\t\t\tconst _json = await _response.json() as WebAppManifest;\r\n\t\t\tif (!_response.ok || !_json || !Object.keys(_json))\r\n\t\t\t\tthrow new Error('Manifest not found');\r\n\t\t\tUtils.normalizeManifestAssetUrls(_json, this.manifestUrl);\r\n\t\t\t\r\n\t\t\tthis.icon = this.icon || _json.icons?.length ? _json.icons![0].src : '';\r\n\t\t\tthis.name = this.name || _json['short_name'] || _json.name || '';\r\n\t\t\tthis.description = this.description || _json.description || '';\r\n\t\t\tthis._manifest = _json;\r\n\t\t}\r\n\t\tcatch(e) {\r\n\t\t\tthis.icon = this.icon || this._manifest.icons?.[0].src || '';\r\n\t\t\tthis.name = this.name || this._manifest['short_name'] || '';\r\n\t\t\tthis.description = this.description || this._manifest.description || '';\r\n\t\t}\r\n\t};\r\n\t/** @internal */\r\n\tprivate _requestUpdate = () => {\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tchangeLocale(navigator.language);\r\n\t\tthis._init();\r\n\t\tPWAGalleryElement.finalized;\r\n\t\tPWABottomSheetElement.finalized;\r\n\t\tsuper.connectedCallback();\r\n\t}\r\n\twillUpdate(changedProperties: PropertyValues) {\r\n\t\tif (this.externalPromptEvent && changedProperties.has('externalPromptEvent') && typeof this.externalPromptEvent == 'object') {\r\n\t\t this._init();\r\n\t\t}\r\n\t}\r\n\r\n\t// firstUpdated() {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\trender() {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform)\r\n\t\t\treturn html`${templateApple(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsApple,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._howToForApple,\r\n\t\t\t\tthis.isAppleDesktopPlatform,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested\r\n\t\t\t)}`;\r\n\t\telse\r\n\t\t\treturn html`${template(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsChrome,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._install,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested\r\n\t\t\t)}`;\r\n\t}\r\n}\r\n\r\nexport { PWAInstallAttributes };\r\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { updateWhenLocaleChanges } from './localized-controller.js';\n/**\n * Class decorator to enable re-rendering the given LitElement whenever a new\n * active locale has loaded.\n *\n * See also {@link updateWhenLocaleChanges} for the same functionality without\n * the use of decorators.\n *\n * When using lit-localize in transform mode, applications of this decorator are\n * removed.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {customElement} from 'lit/decorators.js';\n * import {msg, localized} from '@lit/localize';\n *\n * @localized()\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nexport const localized = () => (clazz, _context) => {\n clazz.addInitializer(updateWhenLocaleChanges);\n return clazz;\n};\n//# sourceMappingURL=localized-decorator.js.map"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","t","globalThis","e","ShadowRoot","ShadyCSS","nativeShadow","Document","CSSStyleSheet","s","WeakMap","n","constructor","this","_$cssResult$","Error","cssText","styleSheet","length","replaceSync","set","toString","i","reduce","S","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","c","cssRules","r","is","getOwnPropertyDescriptor","getOwnPropertyNames","h","getOwnPropertySymbols","getPrototypeOf","a","trustedTypes","l","emptyScript","p","reactiveElementPolyfillSupport","d","u","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","f","y","attribute","type","String","converter","reflect","hasChanged","metadata","litPropertyMetadata","b","HTMLElement","addInitializer","_$Ei","push","observedAttributes","finalize","_$Eh","keys","createProperty","state","elementProperties","noAccessor","getPropertyDescriptor","requestUpdate","configurable","getPropertyOptions","Map","finalized","properties","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$EC","removeAttribute","P","_$ET","has","_$Ej","reject","scheduleUpdate","performUpdate","wrapped","shouldUpdate","willUpdate","hostUpdate","update","_$EU","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","ReactiveElement","reactiveElementVersions","createPolicy","createHTML","v","Math","random","toFixed","slice","m","_","w","lt","createComment","st","g","$","iterator","x","T","E","k","O","RegExp","j","M","_$litType$","strings","values","ke","R","for","D","V","I","createTreeWalker","N","U","lastIndex","exec","test","startsWith","B","parts","el","currentNode","content","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","getAttribute","split","index","name","ctor","Y","Z","q","G","tagName","append","data","indexOf","innerHTML","z","_$litDirective$","_$AO","_$AT","_$AS","F","_$AV","_$AN","_$AD","_$AM","parentNode","_$AU","creationScope","importNode","et","nextSibling","K","_$AI","_$AH","_$AA","_$AB","options","startNode","endNode","_$AR","insertBefore","createTextNode","_$AC","_$AP","remove","setConnected","element","fill","arguments","toggleAttribute","capture","once","passive","removeEventListener","addEventListener","handleEvent","host","Re","litHtmlPolyfillSupport","litHtmlVersions","renderOptions","renderBefore","render","_$litPart$","_$litElement$","litElementHydrateSupport","LitElement","litElementPolyfillSupport","litElementVersions","joinStringsAndValues","valueOrder","concat","defaultMsg","template","isStrTagged","val","msg","installed","LOCALE_STATUS_EVENT","LocalizeController","__litLocalizeEventHandler","event","detail","status","window","updateWhenLocaleChanges","Deferred","settled","promise","resolve","_resolve","_reject","error","hl","HASH_DELIMITER","HTML_PREFIX","STRING_PREFIX","generateMsgId","isHtmlTagged","str","t0","v0","t1","v1","t2","v2","t3","v3","charCodeAt","fnv1a64","join","expressionOrders","hashCache","runtimeMsg","templates","id","undefined","generateId","localized","order","dispatchStatusEvent","dispatchEvent","CustomEvent","loadingLocale","sourceLocale","validLocales","loadLocale","activeLocale","loading","requestId","getLocale","setLocale","newLocale","thisRequestId","then","mod","readyLocale","err","errorLocale","errorMessage","customElements","define","kind","init","targetLocales","localizedTemplates","config","async","lang","impl","_installMsgImplementation","Manifest","icons","src","screenshots","short_name","description","_eventDispatcher","_element","message","Utils","isAppleMobile","includes","navigator","platform","userAgent","match","maxTouchPoints","isAppleDesktop","version","parseInt","audioCheck","canPlayType","webGLCheck","OffscreenCanvas","getContext","deviceFormFactor","matchMedia","matches","isStandalone","standalone","getInstalledRelatedApps","relatedApps","isRelatedAppsInstalled","setStorageFlag","persistent","localStorage","setItem","sessionStorage","getStorageFlag","getItem","eventInstalledSuccess","eventInstalledFail","eventUserChoiceResult","eventInstallAvailable","eventInstallHowTo","eventGallery","normalizeManifestAssetUrls","manifest","manifestUrl","normalizedManifestUrl","URL","location","href","asset","theme","scrollToNextPage","scrollToPrevPage","PWAGalleryElement","getScrollElements","gallery","querySelector","galleryScroller","galleryItems","from","querySelectorAll","scroller","items","findCurrentItem","scrollLeft","find","item","offsetWidth","offsetLeft","scrollToPage","direction","scrollData","currentItem","targetIndex","scrollIntoView","behavior","block","inline","_init","_tools","setTimeout","scrollTo","top","left","icon","install","PWABottomSheetElement","props","hideDialog","disableClose","_callInstall","_callHide","setupAppearence","bindedElement","_saveBodyStyle","body","style","overscrollBehaviorY","dragMobileSheet","touchTargetElement","infoElement","dragOffset","bottomSize","clientHeight","getYCoord","clientY","changedTouches","dragMouseDown","dragMouseUp","dragMouseMove","getBoundingClientRect","innerHeight","closeDragElement","getRootNode","currentY","setProperty","toPoint","innerWidth","MouseEvent","touchElement","listener","parentElement","getElementsByClassName","Rt","filter","nt","classList","installDescription","disableDescription","disableScreenshots","installAvailable","toggleGallery","galleryRequested","installDialogClasses","available","screenshotsAvailable","howToForApple","isDesktop","howToRequested","desktop","PWAInstallElement","disableScreenshotsApple","disableScreenshotsChrome","manualApple","manualChrome","disableChrome","useLocalStorage","externalPromptEvent","platforms","userChoiceResult","isDialogHidden","isInstallAvailable","isAppleMobilePlatform","isAppleDesktopPlatform","isUnderStandaloneMode","_manifest","_howToRequested","_galleryRequested","_install","defferedPromptEvent","prompt","userChoice","choiceResult","outcome","catch","_hideDialog","_hideDialogUser","showDialog","forced","_howToForApple","_toggleGallery","_checkInstalled","_promptHandler","preventDefault","_response","fetch","_json","json","ok","_requestUpdate","changeLocale","language","changedProperties","clazz","_context"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"pwa-install.bundle.js","mappings":"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","sources":["webpack://PWAInstallComponent/webpack/bootstrap","webpack://PWAInstallComponent/webpack/runtime/define property getters","webpack://PWAInstallComponent/webpack/runtime/hasOwnProperty shorthand","webpack://PWAInstallComponent/webpack/runtime/make namespace object","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/css-tag.js","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/reactive-element.js","webpack://PWAInstallComponent/./node_modules/lit-html/lit-html.js","webpack://PWAInstallComponent/./node_modules/lit-element/lit-element.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/str-tag.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/default-msg.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/init/install.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/locale-status-event.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/localized-controller.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/deferred.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/fnv1a64.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/id-generation.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/runtime-msg.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/init/runtime.js","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/decorators/custom-element.js","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/decorators/property.js","webpack://PWAInstallComponent/./src/localization/locale-codes.ts","webpack://PWAInstallComponent/./src/localization/locales/ru.ts","webpack://PWAInstallComponent/./src/localization/locales/tr.ts","webpack://PWAInstallComponent/./src/localization/locales/de.ts","webpack://PWAInstallComponent/./src/localization/locales/es.ts","webpack://PWAInstallComponent/./src/localization/locales/nl.ts","webpack://PWAInstallComponent/./src/localization/locales/el.ts","webpack://PWAInstallComponent/./src/localization/locales/fr.ts","webpack://PWAInstallComponent/./src/localization/locales/sr.ts","webpack://PWAInstallComponent/./src/localization/locales/pl.ts","webpack://PWAInstallComponent/./src/localization/locales/uk.ts","webpack://PWAInstallComponent/./src/localization/locales/zh-HK.ts","webpack://PWAInstallComponent/./src/localization/locales/zh-CN.ts","webpack://PWAInstallComponent/./src/localization/locales/it.ts","webpack://PWAInstallComponent/./src/localization/locales/cs.ts","webpack://PWAInstallComponent/./src/localization/locales/no.ts","webpack://PWAInstallComponent/./src/localization/locales/pt.ts","webpack://PWAInstallComponent/./src/localization/locales/ja.ts","webpack://PWAInstallComponent/./src/localization/locales/sv.ts","webpack://PWAInstallComponent/./src/localization/locales/ko.ts","webpack://PWAInstallComponent/./src/localization/locales/km.ts","webpack://PWAInstallComponent/./src/localization/locales/da.ts","webpack://PWAInstallComponent/./src/localization/index.ts","webpack://PWAInstallComponent/./src/types/types.ts","webpack://PWAInstallComponent/./src/gallery/styles-gallery.scss","webpack://PWAInstallComponent/./src/utils.ts","webpack://PWAInstallComponent/./src/gallery/template-gallery.ts","webpack://PWAInstallComponent/./src/gallery/index.ts","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/template-bottom-sheet.ts","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/index.ts","webpack://PWAInstallComponent/./src/templates/chrome/styles.scss","webpack://PWAInstallComponent/./src/templates/apple/styles-apple.scss","webpack://PWAInstallComponent/./node_modules/lit-html/directive.js","webpack://PWAInstallComponent/./node_modules/lit-html/directives/class-map.js","webpack://PWAInstallComponent/./src/templates/chrome/template.ts","webpack://PWAInstallComponent/./src/templates/apple/template-apple.ts","webpack://PWAInstallComponent/./src/index.ts","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/decorators/state.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/localized-decorator.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"\":3===i?\"\":\"\",c=f;for(let i=0;i\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"\")+(2===i?\"\":3===i?\"\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as s}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class r extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const s=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(s,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return s}}r._$litElement$=!0,r[\"finalized\"]=!0,globalThis.litElementHydrateSupport?.({LitElement:r});const i=globalThis.litElementPolyfillSupport;i?.({LitElement:r});const o={_$AK:(t,e,s)=>{t._$AK(e,s)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push(\"4.1.1\");export{r as LitElement,o as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Tag that allows expressions to be used in localized non-HTML template\n * strings.\n *\n * Example: msg(str`Hello ${this.user}!`);\n *\n * The Lit html tag can also be used for this purpose, but HTML will need to be\n * escaped, and there is a small overhead for HTML parsing.\n *\n * Untagged template strings with expressions aren't supported by lit-localize\n * because they don't allow for values to be captured at runtime.\n */\nconst _str = (strings, ...values) => ({\n strTag: true,\n strings,\n values,\n});\nexport const str = _str;\nexport const isStrTagged = (val) => typeof val !== 'string' && 'strTag' in val;\n/**\n * Render the result of a `str` tagged template to a string. Note we don't need\n * to do this for Lit templates, since Lit itself handles rendering.\n */\nexport const joinStringsAndValues = (strings, values, valueOrder) => {\n let concat = strings[0];\n for (let i = 1; i < strings.length; i++) {\n concat += values[valueOrder ? valueOrder[i - 1] : i - 1];\n concat += strings[i];\n }\n return concat;\n};\n//# sourceMappingURL=str-tag.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { isStrTagged, joinStringsAndValues } from './str-tag.js';\n/**\n * Default identity msg implementation. Simply returns the input template with\n * no awareness of translations. If the template is str-tagged, returns it in\n * string form.\n */\nexport const defaultMsg = ((template) => isStrTagged(template)\n ? joinStringsAndValues(template.strings, template.values)\n : template);\n//# sourceMappingURL=default-msg.js.map","import { defaultMsg } from '../internal/default-msg.js';\n/**\n * Make a string or lit-html template localizable.\n *\n * @param template A string, a lit-html template, or a function that returns\n * either a string or lit-html template.\n * @param options Optional configuration object with the following properties:\n * - id: Optional project-wide unique identifier for this template. If\n * omitted, an id will be automatically generated from the template strings.\n * - desc: Optional description\n */\nexport let msg = defaultMsg;\nlet installed = false;\n/**\n * Internal only. Do not use this function.\n *\n * Installs an implementation of the msg function to replace the default\n * identity function. Throws if called more than once.\n *\n * @internal\n */\nexport function _installMsgImplementation(impl) {\n if (installed) {\n throw new Error('lit-localize can only be configured once');\n }\n msg = impl;\n installed = true;\n}\n//# sourceMappingURL=install.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Name of the event dispatched to `window` whenever a locale change starts,\n * finishes successfully, or fails. Only relevant to runtime mode.\n *\n * The `detail` of this event is an object with a `status` string that can be:\n * \"loading\", \"ready\", or \"error\", along with the relevant locale code, and\n * error message if applicable.\n *\n * You can listen for this event to know when your application should be\n * re-rendered following a locale change. See also the Localized mixin, which\n * automatically re-renders LitElement classes using this event.\n */\nexport const LOCALE_STATUS_EVENT = 'lit-localize-status';\n//# sourceMappingURL=locale-status-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { LOCALE_STATUS_EVENT } from './locale-status-event.js';\nclass LocalizeController {\n constructor(host) {\n this.__litLocalizeEventHandler = (event) => {\n if (event.detail.status === 'ready') {\n this.host.requestUpdate();\n }\n };\n this.host = host;\n }\n hostConnected() {\n window.addEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n hostDisconnected() {\n window.removeEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n}\n/**\n * Re-render the given LitElement whenever a new active locale has loaded.\n *\n * See also {@link localized} for the same functionality as a decorator.\n *\n * When using lit-localize in transform mode, calls to this function are\n * replaced with undefined.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {msg, updateWhenLocaleChanges} from '@lit/localize';\n *\n * class MyElement extends LitElement {\n * constructor() {\n * super();\n * updateWhenLocaleChanges(this);\n * }\n *\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nconst _updateWhenLocaleChanges = (host) => host.addController(new LocalizeController(host));\nexport const updateWhenLocaleChanges = _updateWhenLocaleChanges;\n//# sourceMappingURL=localized-controller.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport class Deferred {\n constructor() {\n this.settled = false;\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n resolve(value) {\n this.settled = true;\n this._resolve(value);\n }\n reject(error) {\n this.settled = true;\n this._reject(error);\n }\n}\n//# sourceMappingURL=deferred.js.map","/**\n * @license\n * Copyright 2014 Travis Webb\n * SPDX-License-Identifier: MIT\n */\n// This module is derived from the file:\n// https://github.com/tjwebb/fnv-plus/blob/1e2ce68a07cb7dd4c3c85364f3d8d96c95919474/index.js#L309\n//\n// Changes:\n// - Only the _hash64_1a_fast function is included.\n// - Removed loop unrolling.\n// - Converted to TypeScript ES module.\n// - var -> let/const\n//\n// TODO(aomarks) Upstream improvements to https://github.com/tjwebb/fnv-plus/.\nconst hl = [];\nfor (let i = 0; i < 256; i++) {\n hl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n}\n/**\n * Perform a FNV-1A 64-bit hash of the given string (as UTF-16 code units), and\n * return a hexadecimal digest (left zero padded to 16 characters).\n *\n * @see {@link http://tools.ietf.org/html/draft-eastlake-fnv-06}\n */\nexport function fnv1a64(str) {\n let t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n for (let i = 0; i < str.length; i++) {\n v0 ^= str.charCodeAt(i);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = (t3 + (t2 >>> 16)) & 65535;\n v2 = t2 & 65535;\n }\n return (hl[v3 >> 8] +\n hl[v3 & 255] +\n hl[v2 >> 8] +\n hl[v2 & 255] +\n hl[v1 >> 8] +\n hl[v1 & 255] +\n hl[v0 >> 8] +\n hl[v0 & 255]);\n}\n//# sourceMappingURL=fnv1a64.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { fnv1a64 } from './fnv1a64.js';\n/**\n * Delimiter used between each template string component before hashing. Used to\n * prevent e.g. \"foobar\" and \"foo${baz}bar\" from sharing a hash.\n *\n * This is the \"record separator\" ASCII character.\n */\nexport const HASH_DELIMITER = '\\x1e';\n/**\n * Id prefix on html-tagged templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst HTML_PREFIX = 'h';\n/**\n * Id prefix on plain string templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst STRING_PREFIX = 's';\n/**\n * Generate a unique ID for a lit-localize message.\n *\n * Example:\n * Template: html`Hello ${who}!`\n * Params: [\"Hello \", \"!\"], true\n * Output: h82ccc38d4d46eaa9\n *\n * The ID is constructed as:\n *\n * [0] Kind of template: [h]tml or [s]tring.\n * [1,16] 64-bit FNV-1a hash hex digest of the template strings, as UTF-16\n * code points, delineated by an ASCII \"record separator\" character.\n *\n * We choose FNV-1a because:\n *\n * 1. It's pretty fast (e.g. much faster than SHA-1).\n * 2. It's pretty small (0.25 KiB minified + brotli).\n * 3. We don't require cryptographic security, and 64 bits should give\n * sufficient collision resistance for any one application. Worst\n * case, we will always detect collisions during analysis.\n * 4. We can't use Web Crypto API (e.g. SHA-1), because it's asynchronous.\n * 5. It's a well known non-cryptographic hash with implementations in many\n * languages.\n * 6. There was an existing JavaScript implementation that doesn't require\n * BigInt, for IE11 compatibility.\n */\nexport function generateMsgId(strings, isHtmlTagged) {\n return ((isHtmlTagged ? HTML_PREFIX : STRING_PREFIX) +\n fnv1a64(typeof strings === 'string' ? strings : strings.join(HASH_DELIMITER)));\n}\n//# sourceMappingURL=id-generation.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { defaultMsg } from './default-msg.js';\nimport { joinStringsAndValues } from './str-tag.js';\nimport { generateMsgId } from './id-generation.js';\nconst expressionOrders = new WeakMap();\nconst hashCache = new Map();\nexport function runtimeMsg(templates, template, options) {\n if (templates) {\n const id = options?.id ?? generateId(template);\n const localized = templates[id];\n if (localized) {\n if (typeof localized === 'string') {\n // E.g. \"Hello World!\"\n return localized;\n }\n else if ('strTag' in localized) {\n // E.g. str`Hello ${name}!`\n //\n // Localized templates have ${number} in place of real template\n // expressions. They can't have real template values, because the\n // variable scope would be wrong. The number tells us the index of the\n // source value to substitute in its place, because expressions can be\n // moved to a different position during translation.\n return joinStringsAndValues(localized.strings, \n // Cast `template` because its type wasn't automatically narrowed (but\n // we know it must be the same type as `localized`).\n template.values, localized.values);\n }\n else {\n // E.g. html`Hello ${name}!`\n //\n // We have to keep our own mapping of expression ordering because we do\n // an in-place update of `values`, and otherwise we'd lose ordering for\n // subsequent renders.\n let order = expressionOrders.get(localized);\n if (order === undefined) {\n order = localized.values;\n expressionOrders.set(localized, order);\n }\n return {\n ...localized,\n values: order.map((i) => template.values[i]),\n };\n }\n }\n }\n return defaultMsg(template);\n}\nfunction generateId(template) {\n const strings = typeof template === 'string' ? template : template.strings;\n let id = hashCache.get(strings);\n if (id === undefined) {\n id = generateMsgId(strings, typeof template !== 'string' && !('strTag' in template));\n hashCache.set(strings, id);\n }\n return id;\n}\n//# sourceMappingURL=runtime-msg.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { Deferred } from '../internal/deferred.js';\nimport { LOCALE_STATUS_EVENT } from '../internal/locale-status-event.js';\nimport { runtimeMsg } from '../internal/runtime-msg.js';\nimport { _installMsgImplementation } from './install.js';\n/**\n * Dispatch a \"lit-localize-status\" event to `window` with the given detail.\n */\nfunction dispatchStatusEvent(detail) {\n window.dispatchEvent(new CustomEvent(LOCALE_STATUS_EVENT, { detail }));\n}\nlet activeLocale = '';\nlet loadingLocale;\nlet sourceLocale;\nlet validLocales;\nlet loadLocale;\nlet templates;\nlet loading = new Deferred();\n// The loading promise must be initially resolved, because that's what we should\n// return if the user immediately calls setLocale(sourceLocale).\nloading.resolve();\nlet requestId = 0;\n/**\n * Set configuration parameters for lit-localize when in runtime mode. Returns\n * an object with functions:\n *\n * - `getLocale`: Return the active locale code.\n * - `setLocale`: Set the active locale code.\n *\n * Throws if called more than once.\n */\nexport const configureLocalization = (config) => {\n _installMsgImplementation(((template, options) => runtimeMsg(templates, template, options)));\n activeLocale = sourceLocale = config.sourceLocale;\n validLocales = new Set(config.targetLocales);\n validLocales.add(config.sourceLocale);\n loadLocale = config.loadLocale;\n return { getLocale, setLocale };\n};\n/**\n * Return the active locale code.\n */\nconst getLocale = () => {\n return activeLocale;\n};\n/**\n * Set the active locale code, and begin loading templates for that locale using\n * the `loadLocale` function that was passed to `configureLocalization`. Returns\n * a promise that resolves when the next locale is ready to be rendered.\n *\n * Note that if a second call to `setLocale` is made while the first requested\n * locale is still loading, then the second call takes precedence, and the\n * promise returned from the first call will resolve when second locale is\n * ready. If you need to know whether a particular locale was loaded, check\n * `getLocale` after the promise resolves.\n *\n * Throws if the given locale is not contained by the configured `sourceLocale`\n * or `targetLocales`.\n */\nconst setLocale = (newLocale) => {\n if (newLocale === (loadingLocale ?? activeLocale)) {\n return loading.promise;\n }\n if (!validLocales || !loadLocale) {\n throw new Error('Internal error');\n }\n if (!validLocales.has(newLocale)) {\n throw new Error('Invalid locale code');\n }\n requestId++;\n const thisRequestId = requestId;\n loadingLocale = newLocale;\n if (loading.settled) {\n loading = new Deferred();\n }\n dispatchStatusEvent({ status: 'loading', loadingLocale: newLocale });\n const localePromise = newLocale === sourceLocale\n ? // We could switch to the source locale synchronously, but we prefer to\n // queue it on a microtask so that switching locales is consistently\n // asynchronous.\n Promise.resolve({ templates: undefined })\n : loadLocale(newLocale);\n localePromise.then((mod) => {\n if (requestId === thisRequestId) {\n activeLocale = newLocale;\n loadingLocale = undefined;\n templates = mod.templates;\n dispatchStatusEvent({ status: 'ready', readyLocale: newLocale });\n loading.resolve();\n }\n // Else another locale was requested in the meantime. Don't resolve or\n // reject, because the newer load call is going to use the same promise.\n // Note the user can call getLocale() after the promise resolves if they\n // need to check if the locale is still the one they expected to load.\n }, (err) => {\n if (requestId === thisRequestId) {\n dispatchStatusEvent({\n status: 'error',\n errorLocale: newLocale,\n errorMessage: err.toString(),\n });\n loading.reject(err);\n }\n });\n return loading.promise;\n};\n//# sourceMappingURL=runtime.js.map","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.P(o,void 0,t),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","// Do not modify this file by hand!\n// Re-generate this file by running lit-localize.\n\n/**\n * The locale code that templates in this source code are written in.\n */\nexport const sourceLocale = `en`;\n\n/**\n * The other locale codes that this application is localized into. Sorted\n * lexicographically.\n */\nexport const targetLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `es`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n\n/**\n * All valid project locale codes. Sorted lexicographically.\n */\nexport const allLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `en`,\n `es`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.`,\n's1b9047d53d9f9d22': `2) Нажать \"Поделиться\"`,\n's37a9e8aec5713460': `Подробнее`,\n's5c6aad7a7e4a1437': `3) Нажать \"На экран «Домой»\"`,\n's6196153c4b0c1ea0': `Установить`,\n's922329d6f6213590': `Добавить в Dock`,\n'sa5ef80b4bb9b39f8': `Свернуть`,\n'sa7551383d1897fcc': `2) Нажмите \"Добавить в Dock\"`,\n'sba52286c21552a4e': `Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.`,\n'sc79fd7641eb9a975': `Спрятать Инструкцию`,\n'scdaf4bbff76674c8': `На экран «Домой»`,\n'sdfe23506a3b0cdc8': `1) Открыть в Safari браузере`,\n'se740f75b95a51807': `Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.`,\n'sfea652f6580ff086': `Этот веб-сайт имеет функционал приложения.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.`,\n's1b9047d53d9f9d22': `2) Gezinme çubuğunda Paylaş'a basın`,\n's37a9e8aec5713460': `Daha Fazla`,\n's5c6aad7a7e4a1437': `3) Ana Ekrana Ekle'ye basın`,\n's6196153c4b0c1ea0': `Yükle`,\n's922329d6f6213590': `Dock’a Ekle`,\n'sa5ef80b4bb9b39f8': `Küçült`,\n'sa7551383d1897fcc': `2) Dock’a ekleye basın`,\n'sba52286c21552a4e': `Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.`,\n'sc79fd7641eb9a975': `Talimatları gizle`,\n'scdaf4bbff76674c8': `Ana Ekrana Ekle`,\n'sdfe23506a3b0cdc8': `1) Safari tarayıcısında açın`,\n'se740f75b95a51807': `Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.`,\n'sfea652f6580ff086': `Bu site uygulama işlevselliğine sahiptir.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n's1b9047d53d9f9d22': `2) Drücken Sie auf Teilen in der Navigationsleiste`,\n's37a9e8aec5713460': `Mehr`,\n's5c6aad7a7e4a1437': `3) Drücken Sie Hinzufügen zum Startbildschirm`,\n's6196153c4b0c1ea0': `Installieren`,\n's922329d6f6213590': `Zum Dock hinzufügen`,\n'sa5ef80b4bb9b39f8': `Weniger`,\n'sa7551383d1897fcc': `2) Drücken Sie auf Zum Dock hinzufügen`,\n'sba52286c21552a4e': `Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.`,\n'sc79fd7641eb9a975': `Anleitung ausblenden`,\n'scdaf4bbff76674c8': `Hinzufügen zum Startbildschirm`,\n'sdfe23506a3b0cdc8': `1) In Safari-Browser öffnen`,\n'se740f75b95a51807': `Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n'sfea652f6580ff086': `Diese Website verfügt über App-Funktionalität.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.`,\n's1b9047d53d9f9d22': `2) Presionar Compartir en la barra de direcciones`,\n's37a9e8aec5713460': `Más`,\n's5c6aad7a7e4a1437': `3) Presionar Añadir a pantalla de inicio`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Añadir al Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Presionar Añadir al Dock`,\n'sba52286c21552a4e': `Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.`,\n'sc79fd7641eb9a975': `Esconder instrucciones`,\n'scdaf4bbff76674c8': `Añadir a pantalla de inicio`,\n'sdfe23506a3b0cdc8': `1) Abrir en el navegador web Safari`,\n'se740f75b95a51807': `Añádelo a tu Dock para una experiencia amplia y acceso fácil.`,\n'sfea652f6580ff086': `Este sitio tiene funcionalidad de aplicación.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.`,\n's1b9047d53d9f9d22': `2) Druk op delen in de navigatiebalk`,\n's37a9e8aec5713460': `Meer`,\n's5c6aad7a7e4a1437': `3) Druk op Toevoegen aan het startscherm`,\n's6196153c4b0c1ea0': `Installeren`,\n's922329d6f6213590': `Toevoegen aan Dock`,\n'sa5ef80b4bb9b39f8': `Minder`,\n'sa7551383d1897fcc': `2) Druk op Toevoegen aan Dock`,\n'sba52286c21552a4e': `Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.`,\n'sc79fd7641eb9a975': `Instructie verbergen`,\n'scdaf4bbff76674c8': `Toevoegen aan het startscherm`,\n'sdfe23506a3b0cdc8': `1) Open in Safari-browser`,\n'se740f75b95a51807': `Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.`,\n'sfea652f6580ff086': `Deze site heeft app-functionaliteit.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n's1b9047d53d9f9d22': `2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης`,\n's37a9e8aec5713460': `Περισσότερα`,\n's5c6aad7a7e4a1437': `3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας`,\n's6196153c4b0c1ea0': `Εγκατάσταση`,\n's922329d6f6213590': `Προσθήκη στην Πρόσβαση`,\n'sa5ef80b4bb9b39f8': `Λιγότερα`,\n'sa7551383d1897fcc': `2) Πατήστε Προσθήκη στην Πρόσβαση`,\n'sba52286c21552a4e': `Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sc79fd7641eb9a975': `Απόκρυψη Οδηγιών`,\n'scdaf4bbff76674c8': `Προσθήκη στην Οθόνη Αφετηρίας`,\n'sdfe23506a3b0cdc8': `1) Ανοίξτε τον περιηγητή Safari`,\n'se740f75b95a51807': `Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sfea652f6580ff086': `Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.`,\n's1b9047d53d9f9d22': `2) Appuyez sur Partager dans la barre de navigation`,\n's37a9e8aec5713460': `Plus`,\n's5c6aad7a7e4a1437': `3) Appuyez sur Ajouter à l'écran d'accueil`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Ajouter au Dock`,\n'sa5ef80b4bb9b39f8': `Moins`,\n'sa7551383d1897fcc': `2) Appuyez sur Ajouter au Dock`,\n'sba52286c21552a4e': `Installez-le sur votre appareil pour une expérience complète et un accès facile.`,\n'sc79fd7641eb9a975': `Masquer les instructions`,\n'scdaf4bbff76674c8': `Ajouter à l'écran d'accueil`,\n'sdfe23506a3b0cdc8': `1) Ouvrir dans le navigateur Safari`,\n'se740f75b95a51807': `Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.`,\n'sfea652f6580ff086': `Ce site possède des fonctionnalités d'application.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Додајте га на Home Screen за широке могућности и лак приступ.`,\n's1b9047d53d9f9d22': `2) Притисните Share у навигационој траци`,\n's37a9e8aec5713460': `Више`,\n's5c6aad7a7e4a1437': `3) Притисните Add to Home Screen`,\n's6196153c4b0c1ea0': `Инсталирај`,\n'sa5ef80b4bb9b39f8': `Мање`,\n'sa7551383d1897fcc': `3) Притисните Add to Dock`,\n'sba52286c21552a4e': `Инсталирајте га на вашем уређају за широке могућности и лак приступ.`,\n'sc79fd7641eb9a975': `Сакриј упутство`,\n'sdfe23506a3b0cdc8': `1) Отворите у Safari прегледачу`,\n'se740f75b95a51807': `Додајте га у вашу Dock за широке могућности и лак приступ.`,\n'sfea652f6580ff086': `Овај сајт има функционалност апликације.`,\n's922329d6f6213590': `Add to Dock`,\n'scdaf4bbff76674c8': `Add to Home Screen`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n's1b9047d53d9f9d22': `2) Wybierz \"Udostępnij\"`,\n's37a9e8aec5713460': `Więcej`,\n's5c6aad7a7e4a1437': `3) Wybierz \"Dodaj do Ekranu Głównego\"`,\n's6196153c4b0c1ea0': `Zainstaluj`,\n's922329d6f6213590': `Dodaj do Docka`,\n'sa5ef80b4bb9b39f8': `Mniej`,\n'sa7551383d1897fcc': `2) Wybierz \"Dodaj do Docka\"`,\n'sba52286c21552a4e': `Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sc79fd7641eb9a975': `Ukryj instrukcję`,\n'scdaf4bbff76674c8': `Dodaj do Ekranu Głównego`,\n'sdfe23506a3b0cdc8': `1) Otwórz przeglądarkę Safari`,\n'se740f75b95a51807': `Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sfea652f6580ff086': `Ta strona posiada funkcje aplikacji.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Додайте на Домашній екран для зручного доступу та ширших можливостей.`,\n's1b9047d53d9f9d22': `2) Натиснути «Поділитися»`,\n's37a9e8aec5713460': `Детальніше`,\n's5c6aad7a7e4a1437': `3) Натиснути «На Початковий екран»`,\n's6196153c4b0c1ea0': `Встановити`,\n's922329d6f6213590': `Додати на Dock`,\n'sa5ef80b4bb9b39f8': `Згорнути`,\n'sa7551383d1897fcc': `2) Натиснути «Додати на Dock»`,\n'sba52286c21552a4e': `Встановіть на ваш пристрій для зручного доступу та ширших можливостей.`,\n'sc79fd7641eb9a975': `Сховати Інструкцію`,\n'scdaf4bbff76674c8': `На Початковий экран`,\n'sdfe23506a3b0cdc8': `1) Відкрити в Safari браузері`,\n'se740f75b95a51807': `Додайте на панель Dock для зручного доступу та ширших можливостей.`,\n'sfea652f6580ff086': `Цей сайт має функції додатку.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。`,\n's1b9047d53d9f9d22': `2) 點擊列表上的分享按鈕`,\n's37a9e8aec5713460': `詳細資訊`,\n's5c6aad7a7e4a1437': `3) 點擊加入主畫面`,\n's6196153c4b0c1ea0': `安裝`,\n's922329d6f6213590': `添加到Dock欄`,\n'sa5ef80b4bb9b39f8': `簡短資訊`,\n'sa7551383d1897fcc': `2) 點選添加到Dock欄`,\n'sba52286c21552a4e': `在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。`,\n'sc79fd7641eb9a975': `隱藏安裝流程`,\n'scdaf4bbff76674c8': `將App加入主畫面`,\n'sdfe23506a3b0cdc8': `1) 在Safari上瀏覽此網頁`,\n'se740f75b95a51807': `將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。`,\n'sfea652f6580ff086': `此網站具有應用程式功能。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `将其添加到主屏幕,以享受更丰富的体验并便于访问。`,\n's1b9047d53d9f9d22': `2) 点击导航栏中的“分享”按钮`,\n's37a9e8aec5713460': `更多`,\n's5c6aad7a7e4a1437': `3) 点击“添加到主屏幕”`,\n's6196153c4b0c1ea0': `安装`,\n's922329d6f6213590': `添加到程序坞`,\n'sa5ef80b4bb9b39f8': `收起`,\n'sa7551383d1897fcc': `2) 点击“添加到程序坞”`,\n'sba52286c21552a4e': `在您的设备上安装,以享受更丰富的体验并便于访问。`,\n'sc79fd7641eb9a975': `隐藏安装步骤`,\n'scdaf4bbff76674c8': `添加到主屏幕`,\n'sdfe23506a3b0cdc8': `1) 在 Safari 浏览器中打开此页面`,\n'se740f75b95a51807': `将其添加到您的程序坞,以享受更全面的体验并便于访问。`,\n'sfea652f6580ff086': `此网站具备 App 功能特性。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.`,\n's1b9047d53d9f9d22': `2) Premi Condividi nella barra di navigazione`,\n's37a9e8aec5713460': `Più`,\n's5c6aad7a7e4a1437': `3) Premi Aggiungi alla schermata principale`,\n's6196153c4b0c1ea0': `Installa`,\n's922329d6f6213590': `Aggiungi al Dock`,\n'sa5ef80b4bb9b39f8': `Meno`,\n'sa7551383d1897fcc': `2) Premi Aggiungi al Dock`,\n'sba52286c21552a4e': `Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.`,\n'sc79fd7641eb9a975': `Nascondi istruzioni`,\n'scdaf4bbff76674c8': `Aggiungi alla schermata principale`,\n'sdfe23506a3b0cdc8': `1) Apri nel browser Safari`,\n'se740f75b95a51807': `Aggiungilo al Dock per un'esperienza più completa e un accesso facile.`,\n'sfea652f6580ff086': `Questo sito ha funzionalità di app.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Přidejte jej na plochu pro rozšířené využití a snadný přístup.`,\n's1b9047d53d9f9d22': `2) Stiskněte tlačítko Sdílet na navigačním panelu`,\n's37a9e8aec5713460': `Vice`,\n's5c6aad7a7e4a1437': `3) Stiskněte tlačítko Přidat na plochu`,\n's6196153c4b0c1ea0': `Nainstalovat`,\n's922329d6f6213590': `Přidat do Docku`,\n'sa5ef80b4bb9b39f8': `Méně`,\n'sa7551383d1897fcc': `2) Stiskněte Přidat do Docku`,\n'sba52286c21552a4e': `Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.`,\n'sc79fd7641eb9a975': `Skrýt instrukce`,\n'scdaf4bbff76674c8': `Přidat na plochu`,\n'sdfe23506a3b0cdc8': `1) Otevřete v prohlížeči Safari`,\n'se740f75b95a51807': `Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.`,\n'sfea652f6580ff086': `Tento web má funkce aplikace.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.`,\n's1b9047d53d9f9d22': `2) Trykk på Del-knappen i navigasjonslinjen`,\n's37a9e8aec5713460': `Mer`,\n's5c6aad7a7e4a1437': `3) Velg Legg til på Hjem-skjerm`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Legg til i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Velg Legg til i Dock`,\n'sba52286c21552a4e': `Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sc79fd7641eb9a975': `Skjul instruksjoner`,\n'scdaf4bbff76674c8': `Legg til på Hjem-skjerm`,\n'sdfe23506a3b0cdc8': `1) Åpne i Safari`,\n'se740f75b95a51807': `Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sfea652f6580ff086': `Denne siden har app-funksjonalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.`,\n's1b9047d53d9f9d22': `2) Pressione Compartilhar na barra de endereço`,\n's37a9e8aec5713460': `Mais`,\n's5c6aad7a7e4a1437': `3) Pressione Adicionar à Tela de Início`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Adicionar ao Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Pressione Adicionar ao Dock`,\n'sba52286c21552a4e': `Instale no dispositivo para uma melhor experiência e mais fácil acesso.`,\n'sc79fd7641eb9a975': `Ocultar Instruções`,\n'scdaf4bbff76674c8': `Adicionar à Tela de Início`,\n'sdfe23506a3b0cdc8': `1) Abra no navegador Safari`,\n'se740f75b95a51807': `Adicione ao Dock para uma melhor experiência e mais fácil acesso.`,\n'sfea652f6580ff086': `Este site possui funcionalidade de aplicativo.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。`,\n's1b9047d53d9f9d22': `2) ナビゲーションバーで共有を押す`,\n's37a9e8aec5713460': `展開`,\n's5c6aad7a7e4a1437': `3) 「ホーム画面に追加」を押す`,\n's6196153c4b0c1ea0': `インストール`,\n's922329d6f6213590': `Dockに追加`,\n'sa5ef80b4bb9b39f8': `折りたたむ`,\n'sa7551383d1897fcc': `2) 「Dockに追加」を押す`,\n'sba52286c21552a4e': `デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。`,\n'sc79fd7641eb9a975': `説明を非表示`,\n'scdaf4bbff76674c8': `ホーム画面に追加`,\n'sdfe23506a3b0cdc8': `1) Safariで開く`,\n'se740f75b95a51807': `ドックに追加して、幅広い体験と簡単なアクセスを実現してください。`,\n'sfea652f6580ff086': `このサイトはアプリ機能があります。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.`,\n's1b9047d53d9f9d22': `2) Tryck på Dela-knappen i verktygsfältet`,\n's37a9e8aec5713460': `Mer`,\n's5c6aad7a7e4a1437': `3) Välj Lägg till på hemskärmen`,\n's6196153c4b0c1ea0': `Installera`,\n's922329d6f6213590': `Lägg till i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Välj Lägg till i Dock`,\n'sba52286c21552a4e': `Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sc79fd7641eb9a975': `Göm instruktioner`,\n'scdaf4bbff76674c8': `Lägg till på hemskärmen`,\n'sdfe23506a3b0cdc8': `1) Öppna i Safari`,\n'se740f75b95a51807': `Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sfea652f6580ff086': `Denna webbsajt har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.`,\n's1b9047d53d9f9d22': `2) 내비게이션 바에서 공유 버튼 누르기`,\n's37a9e8aec5713460': `더보기`,\n's5c6aad7a7e4a1437': `3) 홈 화면에 추가 버튼 누르기`,\n's6196153c4b0c1ea0': `설치`,\n's922329d6f6213590': `Dock에 추가`,\n'sa5ef80b4bb9b39f8': `닫기`,\n'sa7551383d1897fcc': `2) Dock에 추가 버튼 누르기`,\n'sba52286c21552a4e': `더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.`,\n'sc79fd7641eb9a975': `안내 숨기기`,\n'scdaf4bbff76674c8': `홈 화면에 추가`,\n'sdfe23506a3b0cdc8': `1) Safari 브라우저에서 열기`,\n'se740f75b95a51807': `더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.`,\n'sfea652f6580ff086': `이 사이트는 앱 기능을 가지고 있습니다.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n's1b9047d53d9f9d22': `2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ`,\n's37a9e8aec5713460': `បង្ហាញបន្ថែម`,\n's5c6aad7a7e4a1437': `3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n's6196153c4b0c1ea0': `តំឡើង`,\n's922329d6f6213590': `បន្ថែមទៅកាន់ Dock`,\n'sa5ef80b4bb9b39f8': `បង្ហាញតិច`,\n'sa7551383d1897fcc': `2) ចុចលើ បន្ថែមទៅកាន់ Dock`,\n'sba52286c21552a4e': `តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sc79fd7641eb9a975': `បិទការណែនាំ`,\n'scdaf4bbff76674c8': `បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n'sdfe23506a3b0cdc8': `1) បើកនៅក្នុងកម្មវិធី Safari`,\n'se740f75b95a51807': `បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sfea652f6580ff086': `គេហទំព័រនេះមានមុខងារជាកម្មវិធី។`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.`,\n's1b9047d53d9f9d22': `2) Tryk på Del-knappen i navigationslinjen`,\n's37a9e8aec5713460': `Mere`,\n's5c6aad7a7e4a1437': `3) Vælg Tilføj til hjemmeskærm`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Tilføj til Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Vælg Tilføj til Dock`,\n'sba52286c21552a4e': `Installer den på din enhed for en bedre oplevelse og nem adgang.`,\n'sc79fd7641eb9a975': `Skjul instruktion`,\n'scdaf4bbff76674c8': `Tilføj til hjemmeskærm`,\n'sdfe23506a3b0cdc8': `1) Åbn i Safari-browseren`,\n'se740f75b95a51807': `Tilføj den til din Dock for en bedre oplevelse og nem adgang.`,\n'sfea652f6580ff086': `Denne side har app-funktionalitet.`,\n };\n ","import { configureLocalization } from '@lit/localize';\r\nimport {\r\n sourceLocale,\r\n targetLocales,\r\n} from './locale-codes';\r\n\r\nimport * as ru from './locales/ru';\r\nimport * as tr from './locales/tr';\r\nimport * as de from \"./locales/de\";\r\nimport * as es from \"./locales/es\";\r\nimport * as nl from \"./locales/nl\";\r\nimport * as el from \"./locales/el\";\r\nimport * as fr from \"./locales/fr\";\r\nimport * as sr from \"./locales/sr\";\r\nimport * as pl from \"./locales/pl\";\r\nimport * as uk from \"./locales/uk\";\r\nimport * as zhHK from \"./locales/zh-HK\";\r\nimport * as zhCN from \"./locales/zh-CN\";\r\nimport * as it from \"./locales/it\";\r\nimport * as cs from \"./locales/cs\";\r\nimport * as no from \"./locales/no\";\r\nimport * as pt from \"./locales/pt\";\r\nimport * as ja from \"./locales/ja\";\r\nimport * as sv from \"./locales/sv\";\r\nimport * as ko from \"./locales/ko\";\r\nimport * as km from \"./locales/km\";\r\nimport * as da from \"./locales/da\";\r\n\r\nconst localizedTemplates = new Map([\r\n ['ru', ru],\r\n ['tr', tr],\r\n ['de', de],\r\n ['es', es],\r\n ['nl', nl],\r\n ['el', el],\r\n ['fr', fr],\r\n ['sr', sr],\r\n ['pl', pl],\r\n ['uk', uk],\r\n ['zh-HK', zhHK],\r\n ['zh-CN', zhCN],\r\n ['it', it],\r\n ['cs', cs],\r\n ['no', no], // + nb\r\n ['pt', pt],\r\n ['ja', ja],\r\n ['sv', sv],\r\n ['ko', ko],\r\n ['km', km],\r\n ['da', da],\r\n])\r\n\r\nexport const { getLocale, setLocale } = configureLocalization({\r\n sourceLocale,\r\n targetLocales,\r\n // @ts-ignore\r\n loadLocale: async (lang: string) => localizedTemplates.get(lang)\r\n});\r\n\r\nexport const changeLocale = (lang: string) => {\r\n // Norwegian Bokmål is same as Norwegian\r\n switch (lang.slice(0, 2)) {\r\n case 'nb':\r\n lang = 'no';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // Fallback to simplified Chinese\r\n switch (lang) {\r\n case 'zh':\r\n case 'zh-TW':\r\n lang = 'zh-CN';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n try {\r\n if (localizedTemplates.get(lang))\r\n setLocale(lang);\r\n else\r\n setLocale(lang.slice(0, 2));\r\n }\r\n catch {\r\n console.warn(`pwa-install: translation error - unsupported locale: ${lang}`);\r\n }\r\n};\r\n","import { ImageResource } from 'web-app-manifest';\r\n\r\nexport interface IRelatedApp {\r\n id: string,\r\n platform: string,\r\n url: string\r\n}\r\n\r\nexport interface IWindow extends Window {\r\n defferedPromptEvent: BeforeInstallPromptEvent | null;\r\n}\r\n\r\ntype Booleanish = 'true' | 'false';\r\n\r\nexport interface PWAInstallAttributes {\r\n ['manual-apple']?: Booleanish;\r\n ['manual-chrome']?: Booleanish;\r\n ['disable-chrome']?: Booleanish;\r\n ['install-description']?: string;\r\n ['disable-install-description']?: Booleanish;\r\n ['manifest-url']?: string;\r\n name?: string;\r\n description?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ManifestScreenshot extends ImageResource {\r\n label?: string;\r\n platform?: string;\r\n form_factor?: \"wide\" | \"narrow\";\r\n}\r\n\r\nexport class Manifest {\r\n constructor() {\r\n this.icons = [{ src: '' }];\r\n this.screenshots = undefined;\r\n this.short_name = 'PWA';\r\n this.name = 'Progressive web application';\r\n this.description = 'Progressive web application';\r\n }\r\n short_name: string;\r\n icons: ImageResource[];\r\n screenshots?: ManifestScreenshot[];\r\n name: string;\r\n description: string;\r\n}\r\n","import {css} from 'lit'; export default css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`;\n ","import { WebAppManifest } from 'web-app-manifest';\r\nimport { IRelatedApp } from './types/types';\r\n\r\nconst _eventDispatcher = (_element: Element, name: string, message: string) => {\r\n const event = new CustomEvent(name, {\r\n detail: {\r\n message\r\n }\r\n });\r\n _element.dispatchEvent(event);\r\n}\r\nexport default class Utils {\r\n static isAppleMobile(): boolean {\r\n\t\tif (\r\n (\r\n ['iPhone', 'iPad', 'iPod'].includes(navigator.platform) ||\r\n (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2)\r\n )\r\n && ('serviceWorker' in navigator)\r\n )\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static isAppleDesktop(): boolean {\r\n // check if it's a mac\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n if (navigator.maxTouchPoints || !userAgent.match(/macintosh/))\r\n return false;\r\n // check safari version >= 17\r\n const version = /version\\/(\\d{2})\\./.exec(userAgent)\r\n if (!version || !version[1] || !(parseInt(version[1]) >= 17))\r\n return false;\r\n // hacky way to detect Sonoma\r\n const audioCheck = document.createElement('audio').canPlayType('audio/wav; codecs=\"1\"') ? true : false;\r\n const webGLCheck = new OffscreenCanvas(1, 1).getContext('webgl') ? true : false;\r\n\r\n return audioCheck && webGLCheck;\r\n }\r\n\r\n static deviceFormFactor(): 'narrow' | 'wide' {\r\n return window.matchMedia('(orientation: portrait)').matches? 'narrow' : 'wide';\r\n }\r\n \r\n static isStandalone() {\r\n\t\tif (window.matchMedia('(display-mode: standalone)').matches || ('standalone' in navigator && (navigator as any).standalone === true))\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static async getInstalledRelatedApps(): Promise {\r\n if ('getInstalledRelatedApps' in navigator)\r\n try{\r\n return await (navigator as any).getInstalledRelatedApps().then((relatedApps: IRelatedApp[]) => {\r\n return relatedApps;\r\n });\r\n } catch (e) {}\r\n \r\n return [];\r\n }\r\n \r\n static async isRelatedAppsInstalled(): Promise {\r\n const _relatedApps = await this.getInstalledRelatedApps();\r\n return _relatedApps.length? true : false;\r\n }\r\n\r\n static setStorageFlag(name: string, value:boolean, persistent: boolean = false) {\r\n try {\r\n if (persistent)\r\n localStorage.setItem(name, value.toString());\r\n else\r\n sessionStorage.setItem(name, value.toString());\r\n } catch (e) {}\r\n }\r\n static getStorageFlag(name: string): boolean {\r\n try {\r\n return sessionStorage.getItem(name) === 'true' || localStorage.getItem(name) === 'true';\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n static eventInstalledSuccess(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-success-event', 'App install success (Chromium/Android only)');\r\n }\r\n static eventInstalledFail(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-fail-event', 'App install failed (Chromium/Android only)');\r\n }\r\n static eventUserChoiceResult(_element: Element, message: string) {\r\n _eventDispatcher(_element, 'pwa-user-choice-result-event', message);\r\n }\r\n static eventInstallAvailable(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-available-event', 'App install available');\r\n }\r\n static eventInstallHowTo(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-how-to-event', 'App install instruction showed');\r\n }\r\n static eventGallery(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-gallery-event', 'App install gallery showed');\r\n }\r\n\r\n static normalizeManifestAssetUrls(manifest: WebAppManifest, manifestUrl: string) {\r\n const normalizedManifestUrl = new URL(manifestUrl, document.location.href);\r\n [...manifest.icons || [], ...manifest.screenshots || []].forEach(asset => {\r\n asset.src = new URL(asset.src, normalizedManifestUrl).href;\r\n })\r\n }\r\n}","import { html } from 'lit';\r\nimport Utils from '../utils';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nconst template = (screenshots: ManifestScreenshot[], theme: string, scrollToNextPage: any, scrollToPrevPage: any) => {\r\n\r\n return html`\r\n ${screenshots? html`\r\n
\r\n
\r\n
\r\n ${screenshots.filter(screenshot => !screenshot.form_factor || screenshot.form_factor === Utils.deviceFormFactor()).map(screenshot => html`${screenshot.label || \"\"}`)}\r\n
\r\n
\r\n \r\n ${theme != 'default'?\r\n html``\r\n :\r\n html``\r\n }\r\n \r\n \r\n ${theme != 'default'?\r\n html`\r\n \r\n `\r\n :\r\n html`\r\n \r\n \r\n \r\n `\r\n }\r\n \r\n
`\r\n : ''}`;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nimport styles from './styles-gallery.scss';\r\nimport template from './template-gallery';\r\n\r\n@customElement('pwa-gallery')\r\nexport default class PWAGalleryElement extends LitElement {\r\n\t@property({ type: Array }) screenshots: ManifestScreenshot[] = [];\r\n\t@property() theme: 'default' | 'apple_desktop' | 'apple_mobile' = 'default';\r\n\r\n\tstatic get styles() {\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tprivate getScrollElements = () => {\r\n\t\tconst gallery = this.shadowRoot?.querySelector('#paginated_gallery') as HTMLElement | null;\r\n\t\tif (!gallery) return;\r\n\t\t\r\n\t\tconst galleryScroller = gallery.querySelector('.gallery_scroller') as HTMLElement | null;\r\n\t\tif (!galleryScroller) return;\r\n\t\r\n\t\tconst galleryItems = Array.from(galleryScroller.querySelectorAll('img')) as HTMLElement[];\r\n\t\tif (galleryItems.length === 0) return;\r\n\t\r\n\t\treturn {\r\n\t\t\tscroller: galleryScroller,\r\n\t\t\titems: galleryItems\r\n\t\t};\r\n\t};\r\n\t\r\n\tprivate findCurrentItem = (scroller: HTMLElement, items: HTMLElement[]): HTMLElement | null => {\r\n\t\tconst scrollLeft = scroller.scrollLeft;\r\n\t \t// Find the item closest to the center of the viewport.\r\n\t\treturn items.find((item) => (item.offsetWidth + item.offsetLeft) >= scrollLeft + (item.offsetWidth / 2.5)) || null;\r\n\t};\r\n\t\r\n\tprivate scrollToPage = (direction: 'next' | 'prev') => {\r\n\t\tconst scrollData = this.getScrollElements();\r\n\t\tif (!scrollData) return;\r\n\t\r\n\t\tconst { scroller, items } = scrollData;\r\n\t\tconst currentItem = this.findCurrentItem(scroller, items);\r\n\t\tif (!currentItem) return;\r\n\t\r\n\t\tconst currentIndex = items.indexOf(currentItem);\r\n\t\tconst offset = direction === 'next' ? 1 : -1;\r\n\t\tconst targetIndex = currentIndex + offset;\r\n\t\t\r\n\t\tif (targetIndex >= 0 && targetIndex < items.length) {\r\n\t\t\titems[targetIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\r\n\t\t}\r\n\t};\r\n\t\r\n\tpublic scrollToNextPage = () => {\r\n\t\tthis.scrollToPage('next');\r\n\t};\r\n\t\r\n\tpublic scrollToPrevPage = () => {\r\n\t\tthis.scrollToPage('prev');\r\n\t};\r\n\r\n\r\n\tprivate _init = () => {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tconst _tools = this.getScrollElements();\r\n\t\tif (_tools)\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\t_tools.scroller.scrollTo({\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t300\r\n\t\t\t)\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\tthis._init();\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(\r\n this.screenshots,\r\n\t\t\tthis.theme,\r\n\t\t\tthis.scrollToNextPage,\r\n\t\t\tthis.scrollToPrevPage\r\n )}`;\r\n\t}\r\n}\r\n","import { html } from 'lit';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, icon: string, install: any) => {\r\n return html`\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${location.hostname}
\r\n
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\n\r\n// import TouchDragListener from \"./touch-listener\";\r\n\r\ntype IProps = {\r\n name: string,\r\n description: string,\r\n icon: string\r\n}\r\n\r\nimport template from './template-bottom-sheet';\r\nimport Utils from '../../../utils';\r\n\r\n@customElement('pwa-bottom-sheet')\r\nexport default class PWABottomSheetElement extends LitElement {\r\n\t@property({type: Object}) props: IProps = {\r\n name: '',\r\n description: '',\r\n icon: ''\r\n };\r\n @property({type: Object}) install = {handleEvent: () => {}};\r\n\t@property() hideDialog = () => {};\r\n\t@property() disableClose = false;\r\n\r\n\tprivate _callInstall = () => {\r\n\t\tthis.install.handleEvent();\r\n\t}\r\n\r\n\tprivate _callHide = () => {\r\n\t\tthis.hideDialog();\r\n\t\tthis.setupAppearence();\r\n\t}\r\n\r\n\tprivate bindedElement: {\r\n\t\ttouchElement: HTMLElement,\r\n\t\tlistener: any }| null = null;\r\n\tprivate readonly _saveBodyStyle = document.body.style.overscrollBehaviorY;\r\n\tprivate dragMobileSheet = (element: HTMLElement | null | undefined, touchTargetElement: HTMLElement | undefined, infoElement: HTMLElement | undefined) => {\r\n\t\tif (!element || !touchTargetElement || !infoElement)\r\n\t\t\treturn null;\r\n\r\n\t\tlet dragOffset = 0;\r\n\t\tconst bounceOffset = 35;\r\n\t\tconst bottomSize = touchTargetElement.clientHeight + infoElement.clientHeight;\r\n\r\n\t\tconst getYCoord = (e: MouseEvent | TouchEvent): number => {\r\n\t\t\treturn (e as MouseEvent).clientY || ((e as TouchEvent).changedTouches && (e as TouchEvent).changedTouches.length? (e as TouchEvent).changedTouches[0].clientY : 0);\r\n\t\t}\r\n\r\n\t\tconst dragMouseDown = (e: MouseEvent | TouchEvent) => {\r\n\t\t\twindow.addEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.addEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.addEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.addEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tdragOffset = getYCoord(e) - touchTargetElement.getBoundingClientRect().top;\r\n\r\n\t\t\tdocument.body.style.overscrollBehaviorY = 'none';\r\n\t\t}\r\n\t\tconst dragMouseUp = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tdocument.body.style.overscrollBehaviorY = this._saveBodyStyle;\r\n\r\n\t\t\tif (!this.disableClose && getYCoord(e) >= window.innerHeight - 25) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight + 50, true);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (window.innerHeight - getYCoord(e) > element.clientHeight / 2.5) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - element.clientHeight);\r\n\t\t\t\t\r\n\t\t\t\ttry {\r\n\t\t\t\t\tUtils.eventGallery((this.getRootNode() as ShadowRoot).host);\r\n\t\t\t\t} catch (e) {}\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - bottomSize - bounceOffset);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dragMouseMove = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tconst currentY = getYCoord(e);\r\n\r\n\t\t\tif (this.disableClose && window.innerHeight - currentY < 70) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (currentY <= (window.innerHeight - element.clientHeight + dragOffset)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`none`\r\n\t\t\t)\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"--translateY\",\r\n\t\t\t\t`translateY(${currentY - dragOffset}px)`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst closeDragElement = (e: MouseEvent | TouchEvent, toPoint?: number, hideDialog?: boolean) => {\r\n\t\t\twindow.removeEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.removeEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.removeEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.removeEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tif (window.innerWidth >= 768)\r\n\t\t\t\treturn\r\n\r\n\t\t\tif (!toPoint && getYCoord(e) >= window.innerHeight - bottomSize)\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(calc(100vh - ${bottomSize}px))`\r\n\t\t\t\t);\r\n\t\t\telse\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(${(toPoint || getYCoord(e)) + bounceOffset}px)`\r\n\t\t\t\t);\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s`\r\n\t\t\t);\r\n\r\n\t\t\tif (hideDialog){\r\n\t\t\t\ttouchTargetElement.removeEventListener('mousedown', dragMouseDown);\r\n\t\t\t\ttouchTargetElement.removeEventListener('touchstart', dragMouseDown);\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\tthis._callHide,\r\n\t\t\t\t\t250\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ttouchTargetElement.addEventListener('mousedown', dragMouseDown);\r\n\t\ttouchTargetElement.addEventListener('touchstart', dragMouseDown, {passive: true});\r\n\r\n\t\tcloseDragElement(new MouseEvent('mouseup'), window.innerHeight - bottomSize - bounceOffset);\r\n\r\n\t\treturn {\r\n\t\t\ttouchElement: touchTargetElement,\r\n\t\t\tlistener: dragMouseDown\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupAppearence = () => {\r\n\t\tif (this.bindedElement) {\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('mousedown', this.bindedElement.listener);\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('touchstart', this.bindedElement.listener);\r\n\t\t}\r\n\r\n\t\tthis.bindedElement = this.dragMobileSheet(\r\n\t\t\tthis.parentElement?.parentElement,\r\n\t\t\tthis.parentElement?.getElementsByClassName('touch-header')[0] as HTMLElement,\r\n\t\t\tthis.parentElement?.getElementsByClassName('body-header')[0] as HTMLElement);\r\n\t}\r\n\tprivate _init = () => {\r\n\t\tthis.setupAppearence();\r\n\r\n\t\twindow.addEventListener('resize', this.setupAppearence);\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tthis._init();\r\n return;\r\n\t}\r\n\r\n createRenderRoot() {\r\n return this;\r\n }\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(this.props.name, this.props.description, this.props.icon, this._callInstall)}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,\"Segoe UI\",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:\"\";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,\"Segoe UI\",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:\"\";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`;\n ","import {css} from 'lit'; export default css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,\"Segoe UI\";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon description\" \"welcome welcome\" \"how-to how-to\" \"gallery gallery\" \"button button\";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon\" \"description\" \"welcome\" \"how-to\" \"gallery\" \"button\";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;\n ","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{noChange as t}from\"../lit-html.js\";import{directive as s,Directive as i,PartType as r}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=s(class extends i{constructor(t){if(super(t),t.type!==r.ATTRIBUTE||\"class\"!==t.name||t.strings?.length>2)throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\")}render(t){return\" \"+Object.keys(t).filter((s=>t[s])).join(\" \")+\" \"}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(\" \").split(/\\s/).filter((t=>\"\"!==t))));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)))}return t}});export{e as classMap};\n//# sourceMappingURL=class-map.js.map\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, install: any, toggleGallery: any, galleryRequested: boolean) => {\r\n const installDialogClasses = () => { return {available: installAvailable, gallery: galleryRequested }};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n ${!disableClose? html`` : ''}\r\n
\r\n
${location.hostname}
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n ${!disableDescription? \r\n html`
${installDescription? installDescription: `${msg('This site has app functionality.')} ${msg('Install it on your device for extensive experience and easy access.')}`}
` \r\n : ''}\r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n ${screenshotsAvailable? html``:''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n
\r\n
`;\r\n};\r\nexport default template;\r\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, howToForApple: any, isDesktop: boolean, howToRequested: boolean, toggleGallery: any, galleryRequested: boolean) => {\r\n const installDialogClassesApple = () => { return {available: installAvailable, 'how-to': howToRequested, gallery: galleryRequested, desktop: isDesktop}};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, PropertyValues, html } from 'lit';\r\nimport { localized } from '@lit/localize';\r\nimport { property, state, customElement } from 'lit/decorators.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { changeLocale } from './localization';\r\n\r\nimport { IRelatedApp, Manifest, IWindow, PWAInstallAttributes } from './types/types';\r\n\r\nimport PWAGalleryElement from './gallery';\r\nimport PWABottomSheetElement from './templates/chrome/bottom-sheet';\r\n\r\nimport Utils from './utils';\r\n\r\ndeclare const window: IWindow;\r\n\r\nimport styles from './templates/chrome/styles.scss';\r\nimport stylesApple from './templates/apple/styles-apple.scss';\r\n\r\nimport template from './templates/chrome/template';\r\nimport templateApple from './templates/apple/template-apple';\r\n\r\n/**\r\n * @event {CustomEvent} pwa-install-success-event - App install success (Chromium/Android only)\r\n * @event {CustomEvent} pwa-install-fail-event - App install failed (Chromium/Android only)\r\n * @event {CustomEvent} pwa-user-choice-result-event - dismissed, accepted\r\n * @event {CustomEvent} pwa-install-available-event - App install available\r\n * @event {CustomEvent} pwa-install-how-to-event - App install instruction showed\r\n * @event {CustomEvent} pwa-install-gallery-event - App install gallery showed\r\n */\r\n@localized()\r\n@customElement('pwa-install')\r\nexport class PWAInstallElement extends LitElement {\r\n\t@property({attribute: 'manifest-url'}) manifestUrl = '/manifest.json';\r\n\t@property() icon = '';\r\n\t@property() name = '';\r\n\t@property() description = '';\r\n\t@property({attribute: 'install-description'}) installDescription = '';\r\n\t@property({attribute: 'disable-install-description', type: Boolean}) disableDescription = false;\r\n\t@property({attribute: 'disable-screenshots', type: Boolean}) disableScreenshots = false;\r\n\t@property({attribute: 'disable-screenshots-apple', type: Boolean}) disableScreenshotsApple = false;\r\n\t@property({attribute: 'disable-screenshots-chrome', type: Boolean}) disableScreenshotsChrome = false;\r\n\t@property({attribute: 'manual-apple', type: Boolean}) manualApple = false;\r\n\t@property({attribute: 'manual-chrome', type: Boolean}) manualChrome = false;\r\n\t@property({attribute: 'disable-chrome', type: Boolean}) disableChrome = false;\r\n\t@property({attribute: 'disable-close', type: Boolean}) disableClose = false;\r\n\t@property({attribute: 'use-local-storage', type: Boolean}) useLocalStorage = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn [ styles, stylesApple ];\r\n\t}\r\n\r\n\t@state() externalPromptEvent: BeforeInstallPromptEvent | null = null;\r\n\r\n\tpublic platforms: BeforeInstallPromptEvent['platforms'] = [];\r\n\tpublic userChoiceResult = '';\r\n\r\n\tpublic isDialogHidden: boolean = Utils.getStorageFlag('pwa-hide-install');\r\n\tpublic isInstallAvailable = false;\r\n\tpublic isAppleMobilePlatform = false;\r\n\tpublic isAppleDesktopPlatform = false;\r\n\tpublic isUnderStandaloneMode = false;\r\n\tpublic isRelatedAppsInstalled = false;\r\n\r\n\t/** @internal */\r\n\tprivate _manifest: WebAppManifest = new Manifest();\r\n\t/** @internal */\r\n\tprivate _howToRequested = false;\r\n\t/** @internal */\r\n\tprivate _galleryRequested = false;\r\n\t/** @internal */\r\n\tprivate _install = {\r\n\t\thandleEvent: () => {\r\n\t\t\tif (window.defferedPromptEvent) {\r\n\t\t\t\tthis.hideDialog();\r\n\t\t\t\twindow.defferedPromptEvent.prompt();\r\n\t\t\t\twindow.defferedPromptEvent.userChoice\r\n\t\t\t\t\t.then((choiceResult: PromptResponseObject) => {\r\n\t\t\t\t\t\tthis.userChoiceResult = choiceResult.outcome;\r\n\t\t\t\t\t\tUtils.eventUserChoiceResult(this, this.userChoiceResult);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tUtils.eventInstalledFail(this);\r\n\t\t\t\t\t});\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\tpublic install = () => {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis._howToRequested = true;\r\n\t\t\tthis.requestUpdate();\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._install.handleEvent();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialog = {\r\n\t\thandleEvent: () => {\r\n\t\t\tthis.isDialogHidden = true;\r\n\t\t\tUtils.setStorageFlag('pwa-hide-install', true, this.useLocalStorage);\r\n\t\t\tthis.requestUpdate();\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialogUser = () => {\r\n\t\tUtils.eventUserChoiceResult(this, 'dismissed');\r\n\t\tthis.userChoiceResult = 'dismissed';\r\n\t\tthis.hideDialog();\r\n\t}\r\n\tpublic hideDialog = () => {\r\n\t\tthis._hideDialog.handleEvent();\r\n\t}\r\n\tpublic showDialog = (forced = false) => {\r\n\t\tthis.isDialogHidden = false;\r\n\t\tif (forced)\r\n\t\t\tthis.isInstallAvailable = true;\r\n\t\tUtils.setStorageFlag('pwa-hide-install', false, this.useLocalStorage);\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tpublic getInstalledRelatedApps = async (): Promise => {\r\n\t\treturn await Utils.getInstalledRelatedApps();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _howToForApple = {\r\n handleEvent: () => {\r\n\t\t\tthis._howToRequested = !this._howToRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._galleryRequested = false;\r\n\t\t\tthis.requestUpdate();\r\n\r\n\t\t\tif (this._howToRequested) {\r\n\t\t\t\tUtils.eventInstallHowTo(this);\r\n\t\t\t}\t\t\t\t\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate _toggleGallery = {\r\n handleEvent: () => {\r\n\t\t\tthis._galleryRequested = !this._galleryRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._howToRequested = false;\r\n\r\n\t\t\tthis._galleryRequested && Utils.eventGallery(this);\r\n\r\n\t\t\tthis.requestUpdate();\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate async _checkInstalled() {\r\n\t\tthis.isUnderStandaloneMode = Utils.isStandalone();\r\n\t\tthis.isRelatedAppsInstalled = await Utils.isRelatedAppsInstalled();\r\n\t\tthis.isAppleMobilePlatform = Utils.isAppleMobile();\r\n\t\tthis.isAppleDesktopPlatform = Utils.isAppleDesktop();\r\n\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tif (!this.isUnderStandaloneMode) {\r\n\t\t\t\tthis.manualApple && this.hideDialog();\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t1000\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.manualChrome && this.hideDialog();\r\n\t\t}\r\n\t}\r\n\t/** @internal */\r\n\tprivate _init = async () => {\r\n\t\twindow.defferedPromptEvent = null;\r\n\r\n\t\tthis._checkInstalled();\r\n\r\n\t\tif (!this.disableChrome) {\r\n\t\t\tconst _promptHandler = (e: BeforeInstallPromptEvent) => {\r\n\t\t\t\twindow.defferedPromptEvent = e;\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.platforms = e.platforms;\r\n\r\n\t\t\t\tif (this.isRelatedAppsInstalled || this.isUnderStandaloneMode) {\r\n\t\t\t\t\tthis.isInstallAvailable = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userChoiceResult === 'accepted'){\r\n\t\t\t\t\tthis.isDialogHidden = true;\r\n\t\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t\tif (this.externalPromptEvent != null)\r\n\t\t\t\tsetTimeout(() => _promptHandler(this.externalPromptEvent!), 300);\r\n\t\t\telse\r\n\t\t\t\twindow.addEventListener('beforeinstallprompt', _promptHandler);\r\n\t\t}\r\n\r\n\t\twindow.addEventListener('appinstalled', (e) => {\r\n\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\tthis.isInstallAvailable = false;\r\n\r\n\t\t\tthis.requestUpdate();\r\n\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t});\r\n\r\n\r\n\t\ttry{\r\n\t\t\tconst _response = await fetch(this.manifestUrl);\r\n\t\t\tconst _json = await _response.json() as WebAppManifest;\r\n\t\t\tif (!_response.ok || !_json || !Object.keys(_json))\r\n\t\t\t\tthrow new Error('Manifest not found');\r\n\t\t\tUtils.normalizeManifestAssetUrls(_json, this.manifestUrl);\r\n\t\t\t\r\n\t\t\tthis.icon = this.icon || _json.icons?.length ? _json.icons![0].src : '';\r\n\t\t\tthis.name = this.name || _json['short_name'] || _json.name || '';\r\n\t\t\tthis.description = this.description || _json.description || '';\r\n\t\t\tthis._manifest = _json;\r\n\t\t}\r\n\t\tcatch(e) {\r\n\t\t\tthis.icon = this.icon || this._manifest.icons?.[0].src || '';\r\n\t\t\tthis.name = this.name || this._manifest['short_name'] || '';\r\n\t\t\tthis.description = this.description || this._manifest.description || '';\r\n\t\t}\r\n\t};\r\n\t/** @internal */\r\n\tprivate _requestUpdate = () => {\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tchangeLocale(navigator.language);\r\n\t\tthis._init();\r\n\t\tPWAGalleryElement.finalized;\r\n\t\tPWABottomSheetElement.finalized;\r\n\t\tsuper.connectedCallback();\r\n\t}\r\n\twillUpdate(changedProperties: PropertyValues) {\r\n\t\tif (this.externalPromptEvent && changedProperties.has('externalPromptEvent') && typeof this.externalPromptEvent == 'object') {\r\n\t\t this._init();\r\n\t\t}\r\n\t}\r\n\r\n\t// firstUpdated() {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\trender() {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform)\r\n\t\t\treturn html`${templateApple(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsApple,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._howToForApple,\r\n\t\t\t\tthis.isAppleDesktopPlatform,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested\r\n\t\t\t)}`;\r\n\t\telse\r\n\t\t\treturn html`${template(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsChrome,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._install,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested\r\n\t\t\t)}`;\r\n\t}\r\n}\r\n\r\nexport { PWAInstallAttributes };\r\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { updateWhenLocaleChanges } from './localized-controller.js';\n/**\n * Class decorator to enable re-rendering the given LitElement whenever a new\n * active locale has loaded.\n *\n * See also {@link updateWhenLocaleChanges} for the same functionality without\n * the use of decorators.\n *\n * When using lit-localize in transform mode, applications of this decorator are\n * removed.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {customElement} from 'lit/decorators.js';\n * import {msg, localized} from '@lit/localize';\n *\n * @localized()\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nexport const localized = () => (clazz, _context) => {\n clazz.addInitializer(updateWhenLocaleChanges);\n return clazz;\n};\n//# sourceMappingURL=localized-decorator.js.map"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","t","globalThis","e","ShadowRoot","ShadyCSS","nativeShadow","Document","CSSStyleSheet","s","WeakMap","n","constructor","this","_$cssResult$","Error","cssText","styleSheet","length","replaceSync","set","toString","i","reduce","S","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","c","cssRules","r","is","getOwnPropertyDescriptor","getOwnPropertyNames","h","getOwnPropertySymbols","getPrototypeOf","a","trustedTypes","l","emptyScript","p","reactiveElementPolyfillSupport","d","u","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","f","y","attribute","type","String","converter","reflect","hasChanged","metadata","litPropertyMetadata","b","HTMLElement","addInitializer","_$Ei","push","observedAttributes","finalize","_$Eh","keys","createProperty","state","elementProperties","noAccessor","getPropertyDescriptor","requestUpdate","configurable","getPropertyOptions","Map","finalized","properties","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$EC","removeAttribute","P","_$ET","has","_$Ej","reject","scheduleUpdate","performUpdate","wrapped","shouldUpdate","willUpdate","hostUpdate","update","_$EU","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","ReactiveElement","reactiveElementVersions","createPolicy","createHTML","Math","random","toFixed","slice","createComment","iterator","v","_","m","RegExp","g","$","_$litType$","strings","values","x","T","for","E","A","C","createTreeWalker","V","lastIndex","exec","test","startsWith","N","parts","el","currentNode","content","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","getAttribute","split","index","name","ctor","H","I","L","k","tagName","append","data","indexOf","innerHTML","_$Co","_$Cl","_$litDirective$","_$AO","_$AT","_$AS","M","_$AV","_$AN","_$AD","_$AM","parentNode","_$AU","creationScope","importNode","R","nextSibling","z","_$AI","_$Cv","_$AH","_$AA","_$AB","options","startNode","endNode","_$AR","O","insertBefore","createTextNode","_$AC","_$AP","remove","setConnected","element","fill","j","arguments","toggleAttribute","capture","once","passive","removeEventListener","addEventListener","handleEvent","host","litHtmlPolyfillSupport","litHtmlVersions","renderOptions","_$Do","renderBefore","render","_$litPart$","_$litElement$","litElementHydrateSupport","LitElement","litElementPolyfillSupport","litElementVersions","joinStringsAndValues","valueOrder","concat","defaultMsg","template","isStrTagged","val","msg","installed","LOCALE_STATUS_EVENT","LocalizeController","__litLocalizeEventHandler","event","detail","status","window","updateWhenLocaleChanges","Deferred","settled","promise","resolve","_resolve","_reject","error","hl","generateMsgId","isHtmlTagged","str","t0","v0","t1","v1","t2","v2","t3","v3","charCodeAt","fnv1a64","join","expressionOrders","hashCache","runtimeMsg","templates","id","undefined","generateId","localized","order","dispatchStatusEvent","dispatchEvent","CustomEvent","loadingLocale","sourceLocale","validLocales","loadLocale","activeLocale","loading","requestId","getLocale","setLocale","newLocale","thisRequestId","then","mod","readyLocale","err","errorLocale","errorMessage","customElements","define","kind","init","targetLocales","localizedTemplates","config","async","lang","impl","_installMsgImplementation","Manifest","icons","src","screenshots","short_name","description","_eventDispatcher","_element","message","Utils","isAppleMobile","includes","navigator","platform","userAgent","match","maxTouchPoints","isAppleDesktop","version","parseInt","audioCheck","canPlayType","webGLCheck","OffscreenCanvas","getContext","deviceFormFactor","matchMedia","matches","isStandalone","standalone","getInstalledRelatedApps","relatedApps","isRelatedAppsInstalled","setStorageFlag","persistent","localStorage","setItem","sessionStorage","getStorageFlag","getItem","eventInstalledSuccess","eventInstalledFail","eventUserChoiceResult","eventInstallAvailable","eventInstallHowTo","eventGallery","normalizeManifestAssetUrls","manifest","manifestUrl","normalizedManifestUrl","URL","location","href","asset","theme","scrollToNextPage","scrollToPrevPage","PWAGalleryElement","getScrollElements","gallery","querySelector","galleryScroller","galleryItems","from","querySelectorAll","scroller","items","findCurrentItem","scrollLeft","find","item","offsetWidth","offsetLeft","scrollToPage","direction","scrollData","currentItem","targetIndex","scrollIntoView","behavior","block","inline","_init","_tools","setTimeout","scrollTo","top","left","icon","install","PWABottomSheetElement","props","hideDialog","disableClose","_callInstall","_callHide","setupAppearence","bindedElement","_saveBodyStyle","body","style","overscrollBehaviorY","dragMobileSheet","touchTargetElement","infoElement","dragOffset","bottomSize","clientHeight","getYCoord","clientY","changedTouches","dragMouseDown","dragMouseUp","dragMouseMove","getBoundingClientRect","innerHeight","closeDragElement","getRootNode","currentY","setProperty","toPoint","innerWidth","MouseEvent","touchElement","listener","parentElement","getElementsByClassName","_$Ct","_$Ci","filter","st","nt","classList","installDescription","disableDescription","disableScreenshots","installAvailable","toggleGallery","galleryRequested","installDialogClasses","available","screenshotsAvailable","howToForApple","isDesktop","howToRequested","desktop","PWAInstallElement","disableScreenshotsApple","disableScreenshotsChrome","manualApple","manualChrome","disableChrome","useLocalStorage","externalPromptEvent","platforms","userChoiceResult","isDialogHidden","isInstallAvailable","isAppleMobilePlatform","isAppleDesktopPlatform","isUnderStandaloneMode","_manifest","_howToRequested","_galleryRequested","_install","defferedPromptEvent","prompt","userChoice","choiceResult","outcome","catch","_hideDialog","_hideDialogUser","showDialog","forced","_howToForApple","_toggleGallery","_checkInstalled","_promptHandler","preventDefault","_response","fetch","_json","json","ok","_requestUpdate","changeLocale","language","changedProperties","clazz","_context"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/pwa-install.es.js b/dist/pwa-install.es.js index 3a8ac9f..2758640 100644 --- a/dist/pwa-install.es.js +++ b/dist/pwa-install.es.js @@ -1,2 +1,2 @@ -import*as e from"lit";import*as t from"lit/decorators.js";import*as a from"lit/directives/class-map.js";var l={d:(e,t)=>{for(var a in t)l.o(t,a)&&!l.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},i={};l.d(i,{w:()=>We});var o={};l.r(o),l.d(o,{templates:()=>ae});var s={};l.r(s),l.d(s,{templates:()=>le});var n={};l.r(n),l.d(n,{templates:()=>ie});var r={};l.r(r),l.d(r,{templates:()=>oe});var d={};l.r(d),l.d(d,{templates:()=>se});var c={};l.r(c),l.d(c,{templates:()=>ne});var p={};l.r(p),l.d(p,{templates:()=>re});var b={};l.r(b),l.d(b,{templates:()=>de});var g={};l.r(g),l.d(g,{templates:()=>ce});var h={};l.r(h),l.d(h,{templates:()=>pe});var m={};l.r(m),l.d(m,{templates:()=>be});var f={};l.r(f),l.d(f,{templates:()=>ge});var u={};l.r(u),l.d(u,{templates:()=>he});var w={};l.r(w),l.d(w,{templates:()=>me});var v={};l.r(v),l.d(v,{templates:()=>fe});var y={};l.r(y),l.d(y,{templates:()=>ue});var x={};l.r(x),l.d(x,{templates:()=>we});var k={};l.r(k),l.d(k,{templates:()=>ve});var D={};l.r(D),l.d(D,{templates:()=>ye});var A={};l.r(A),l.d(A,{templates:()=>xe});var j={};l.r(j),l.d(j,{templates:()=>ke});const S=(e=>{var t={};return l.d(t,e),t})({LitElement:()=>e.LitElement,css:()=>e.css,html:()=>e.html}),E=(e,t,a)=>{let l=e[0];for(let i=1;i{return"string"!=typeof(t=e)&&"strTag"in t?E(e.strings,e.values):e;var t};let z=_,P=!1;const I="lit-localize-status";class L{constructor(e){this.__litLocalizeEventHandler=e=>{"ready"===e.detail.status&&this.host.requestUpdate()},this.host=e}hostConnected(){window.addEventListener(I,this.__litLocalizeEventHandler)}hostDisconnected(){window.removeEventListener(I,this.__litLocalizeEventHandler)}}const $=e=>e.addController(new L(e));class C{constructor(){this.settled=!1,this.promise=new Promise(((e,t)=>{this._resolve=e,this._reject=t}))}resolve(e){this.settled=!0,this._resolve(e)}reject(e){this.settled=!0,this._reject(e)}}const R=[];for(let e=0;e<256;e++)R[e]=(e>>4&15).toString(16)+(15&e).toString(16);const M="",T="h",H="s";function O(e,t){return(t?T:H)+function(e){let t=0,a=8997,l=0,i=33826,o=0,s=40164,n=0,r=52210;for(let d=0;d>>16,a=65535&t,o+=l>>>16,i=65535&l,r=n+(o>>>16)&65535,s=65535&o;return R[r>>8]+R[255&r]+R[s>>8]+R[255&s]+R[i>>8]+R[255&i]+R[a>>8]+R[255&a]}("string"==typeof e?e:e.join(M))}const B=new WeakMap,U=new Map;function q(e,t,a){if(e){const l=a?.id??function(e){const t="string"==typeof e?e:e.strings;let a=U.get(t);void 0===a&&(a=O(t,"string"!=typeof e&&!("strTag"in e)),U.set(t,a));return a}(t),i=e[l];if(i){if("string"==typeof i)return i;if("strTag"in i)return E(i.strings,t.values,i.values);{let e=B.get(i);return void 0===e&&(e=i.values,B.set(i,e)),{...i,values:e.map((e=>t.values[e]))}}}}return _(t)}function F(e){window.dispatchEvent(new CustomEvent(I,{detail:e}))}let Y,Z,V,N,W,G="",K=new C;K.resolve();let Q=0;const J=()=>G,X=e=>{if(e===(Y??G))return K.promise;if(!V||!N)throw Error("Internal error");if(!V.has(e))throw Error("Invalid locale code");Q++;const t=Q;Y=e,K.settled&&(K=new C),F({status:"loading",loadingLocale:e});return(e===Z?Promise.resolve({templates:void 0}):N(e)).then((a=>{Q===t&&(G=e,Y=void 0,W=a.templates,F({status:"ready",readyLocale:e}),K.resolve())}),(a=>{Q===t&&(F({status:"error",errorLocale:e,errorMessage:a.toString()}),K.reject(a))})),K.promise};const ee=(e=>{var t={};return l.d(t,e),t})({customElement:()=>t.customElement,property:()=>t.property,state:()=>t.state}),te=["cs","da","de","el","es","fr","it","ja","km","ko","nl","no","pl","pt","ru","sr","sv","tr","uk","zh-CN","zh-HK"],ae={s182ab2d6c997515f:"Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.",s1b9047d53d9f9d22:'2) Нажать "Поделиться"',s37a9e8aec5713460:"Подробнее",s5c6aad7a7e4a1437:'3) Нажать "На экран «Домой»"',s6196153c4b0c1ea0:"Установить",s922329d6f6213590:"Добавить в Dock",sa5ef80b4bb9b39f8:"Свернуть",sa7551383d1897fcc:'2) Нажмите "Добавить в Dock"',sba52286c21552a4e:"Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.",sc79fd7641eb9a975:"Спрятать Инструкцию",scdaf4bbff76674c8:"На экран «Домой»",sdfe23506a3b0cdc8:"1) Открыть в Safari браузере",se740f75b95a51807:"Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.",sfea652f6580ff086:"Этот веб-сайт имеет функционал приложения."},le={s182ab2d6c997515f:"Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.",s1b9047d53d9f9d22:"2) Gezinme çubuğunda Paylaş'a basın",s37a9e8aec5713460:"Daha Fazla",s5c6aad7a7e4a1437:"3) Ana Ekrana Ekle'ye basın",s6196153c4b0c1ea0:"Yükle",s922329d6f6213590:"Dock’a Ekle",sa5ef80b4bb9b39f8:"Küçült",sa7551383d1897fcc:"2) Dock’a ekleye basın",sba52286c21552a4e:"Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.",sc79fd7641eb9a975:"Talimatları gizle",scdaf4bbff76674c8:"Ana Ekrana Ekle",sdfe23506a3b0cdc8:"1) Safari tarayıcısında açın",se740f75b95a51807:"Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.",sfea652f6580ff086:"Bu site uygulama işlevselliğine sahiptir."},ie={s182ab2d6c997515f:"Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",s1b9047d53d9f9d22:"2) Drücken Sie auf Teilen in der Navigationsleiste",s37a9e8aec5713460:"Mehr",s5c6aad7a7e4a1437:"3) Drücken Sie Hinzufügen zum Startbildschirm",s6196153c4b0c1ea0:"Installieren",s922329d6f6213590:"Zum Dock hinzufügen",sa5ef80b4bb9b39f8:"Weniger",sa7551383d1897fcc:"2) Drücken Sie auf Zum Dock hinzufügen",sba52286c21552a4e:"Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.",sc79fd7641eb9a975:"Anleitung ausblenden",scdaf4bbff76674c8:"Hinzufügen zum Startbildschirm",sdfe23506a3b0cdc8:"1) In Safari-Browser öffnen",se740f75b95a51807:"Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",sfea652f6580ff086:"Diese Website verfügt über App-Funktionalität."},oe={s182ab2d6c997515f:"Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.",s1b9047d53d9f9d22:"2) Presionar Compartir en la barra de direcciones",s37a9e8aec5713460:"Más",s5c6aad7a7e4a1437:"3) Presionar Añadir a pantalla de inicio",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Añadir al Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Presionar Añadir al Dock",sba52286c21552a4e:"Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.",sc79fd7641eb9a975:"Esconder instrucciones",scdaf4bbff76674c8:"Añadir a pantalla de inicio",sdfe23506a3b0cdc8:"1) Abrir en el navegador web Safari",se740f75b95a51807:"Añádelo a tu Dock para una experiencia amplia y acceso fácil.",sfea652f6580ff086:"Este sitio tiene funcionalidad de aplicación."},se={s182ab2d6c997515f:"Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.",s1b9047d53d9f9d22:"2) Druk op delen in de navigatiebalk",s37a9e8aec5713460:"Meer",s5c6aad7a7e4a1437:"3) Druk op Toevoegen aan het startscherm",s6196153c4b0c1ea0:"Installeren",s922329d6f6213590:"Toevoegen aan Dock",sa5ef80b4bb9b39f8:"Minder",sa7551383d1897fcc:"2) Druk op Toevoegen aan Dock",sba52286c21552a4e:"Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.",sc79fd7641eb9a975:"Instructie verbergen",scdaf4bbff76674c8:"Toevoegen aan het startscherm",sdfe23506a3b0cdc8:"1) Open in Safari-browser",se740f75b95a51807:"Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.",sfea652f6580ff086:"Deze site heeft app-functionaliteit."},ne={s182ab2d6c997515f:"Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",s1b9047d53d9f9d22:"2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης",s37a9e8aec5713460:"Περισσότερα",s5c6aad7a7e4a1437:"3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας",s6196153c4b0c1ea0:"Εγκατάσταση",s922329d6f6213590:"Προσθήκη στην Πρόσβαση",sa5ef80b4bb9b39f8:"Λιγότερα",sa7551383d1897fcc:"2) Πατήστε Προσθήκη στην Πρόσβαση",sba52286c21552a4e:"Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sc79fd7641eb9a975:"Απόκρυψη Οδηγιών",scdaf4bbff76674c8:"Προσθήκη στην Οθόνη Αφετηρίας",sdfe23506a3b0cdc8:"1) Ανοίξτε τον περιηγητή Safari",se740f75b95a51807:"Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sfea652f6580ff086:"Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής."},re={s182ab2d6c997515f:"Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.",s1b9047d53d9f9d22:"2) Appuyez sur Partager dans la barre de navigation",s37a9e8aec5713460:"Plus",s5c6aad7a7e4a1437:"3) Appuyez sur Ajouter à l'écran d'accueil",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Ajouter au Dock",sa5ef80b4bb9b39f8:"Moins",sa7551383d1897fcc:"2) Appuyez sur Ajouter au Dock",sba52286c21552a4e:"Installez-le sur votre appareil pour une expérience complète et un accès facile.",sc79fd7641eb9a975:"Masquer les instructions",scdaf4bbff76674c8:"Ajouter à l'écran d'accueil",sdfe23506a3b0cdc8:"1) Ouvrir dans le navigateur Safari",se740f75b95a51807:"Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.",sfea652f6580ff086:"Ce site possède des fonctionnalités d'application."},de={s182ab2d6c997515f:"Додајте га на Home Screen за широке могућности и лак приступ.",s1b9047d53d9f9d22:"2) Притисните Share у навигационој траци",s37a9e8aec5713460:"Више",s5c6aad7a7e4a1437:"3) Притисните Add to Home Screen",s6196153c4b0c1ea0:"Инсталирај",sa5ef80b4bb9b39f8:"Мање",sa7551383d1897fcc:"3) Притисните Add to Dock",sba52286c21552a4e:"Инсталирајте га на вашем уређају за широке могућности и лак приступ.",sc79fd7641eb9a975:"Сакриј упутство",sdfe23506a3b0cdc8:"1) Отворите у Safari прегледачу",se740f75b95a51807:"Додајте га у вашу Dock за широке могућности и лак приступ.",sfea652f6580ff086:"Овај сајт има функционалност апликације.",s922329d6f6213590:"Add to Dock",scdaf4bbff76674c8:"Add to Home Screen"},ce={s182ab2d6c997515f:"Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.",s1b9047d53d9f9d22:'2) Wybierz "Udostępnij"',s37a9e8aec5713460:"Więcej",s5c6aad7a7e4a1437:'3) Wybierz "Dodaj do Ekranu Głównego"',s6196153c4b0c1ea0:"Zainstaluj",s922329d6f6213590:"Dodaj do Docka",sa5ef80b4bb9b39f8:"Mniej",sa7551383d1897fcc:'2) Wybierz "Dodaj do Docka"',sba52286c21552a4e:"Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.",sc79fd7641eb9a975:"Ukryj instrukcję",scdaf4bbff76674c8:"Dodaj do Ekranu Głównego",sdfe23506a3b0cdc8:"1) Otwórz przeglądarkę Safari",se740f75b95a51807:"Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.",sfea652f6580ff086:"Ta strona posiada funkcje aplikacji."},pe={s182ab2d6c997515f:"Додайте на Домашній екран для зручного доступу та ширших можливостей.",s1b9047d53d9f9d22:"2) Натиснути «Поділитися»",s37a9e8aec5713460:"Детальніше",s5c6aad7a7e4a1437:"3) Натиснути «На Початковий екран»",s6196153c4b0c1ea0:"Встановити",s922329d6f6213590:"Додати на Dock",sa5ef80b4bb9b39f8:"Згорнути",sa7551383d1897fcc:"2) Натиснути «Додати на Dock»",sba52286c21552a4e:"Встановіть на ваш пристрій для зручного доступу та ширших можливостей.",sc79fd7641eb9a975:"Сховати Інструкцію",scdaf4bbff76674c8:"На Початковий экран",sdfe23506a3b0cdc8:"1) Відкрити в Safari браузері",se740f75b95a51807:"Додайте на панель Dock для зручного доступу та ширших можливостей.",sfea652f6580ff086:"Цей сайт має функції додатку."},be={s182ab2d6c997515f:"將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。",s1b9047d53d9f9d22:"2) 點擊列表上的分享按鈕",s37a9e8aec5713460:"詳細資訊",s5c6aad7a7e4a1437:"3) 點擊加入主畫面",s6196153c4b0c1ea0:"安裝",s922329d6f6213590:"添加到Dock欄",sa5ef80b4bb9b39f8:"簡短資訊",sa7551383d1897fcc:"2) 點選添加到Dock欄",sba52286c21552a4e:"在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。",sc79fd7641eb9a975:"隱藏安裝流程",scdaf4bbff76674c8:"將App加入主畫面",sdfe23506a3b0cdc8:"1) 在Safari上瀏覽此網頁",se740f75b95a51807:"將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。",sfea652f6580ff086:"此網站具有應用程式功能。"},ge={s182ab2d6c997515f:"将其添加到主屏幕,以享受更丰富的体验并便于访问。",s1b9047d53d9f9d22:"2) 点击导航栏中的“分享”按钮",s37a9e8aec5713460:"更多",s5c6aad7a7e4a1437:"3) 点击“添加到主屏幕”",s6196153c4b0c1ea0:"安装",s922329d6f6213590:"添加到程序坞",sa5ef80b4bb9b39f8:"收起",sa7551383d1897fcc:"2) 点击“添加到程序坞”",sba52286c21552a4e:"在您的设备上安装,以享受更丰富的体验并便于访问。",sc79fd7641eb9a975:"隐藏安装步骤",scdaf4bbff76674c8:"添加到主屏幕",sdfe23506a3b0cdc8:"1) 在 Safari 浏览器中打开此页面",se740f75b95a51807:"将其添加到您的程序坞,以享受更全面的体验并便于访问。",sfea652f6580ff086:"此网站具备 App 功能特性。"},he={s182ab2d6c997515f:"Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.",s1b9047d53d9f9d22:"2) Premi Condividi nella barra di navigazione",s37a9e8aec5713460:"Più",s5c6aad7a7e4a1437:"3) Premi Aggiungi alla schermata principale",s6196153c4b0c1ea0:"Installa",s922329d6f6213590:"Aggiungi al Dock",sa5ef80b4bb9b39f8:"Meno",sa7551383d1897fcc:"2) Premi Aggiungi al Dock",sba52286c21552a4e:"Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.",sc79fd7641eb9a975:"Nascondi istruzioni",scdaf4bbff76674c8:"Aggiungi alla schermata principale",sdfe23506a3b0cdc8:"1) Apri nel browser Safari",se740f75b95a51807:"Aggiungilo al Dock per un'esperienza più completa e un accesso facile.",sfea652f6580ff086:"Questo sito ha funzionalità di app."},me={s182ab2d6c997515f:"Přidejte jej na plochu pro rozšířené využití a snadný přístup.",s1b9047d53d9f9d22:"2) Stiskněte tlačítko Sdílet na navigačním panelu",s37a9e8aec5713460:"Vice",s5c6aad7a7e4a1437:"3) Stiskněte tlačítko Přidat na plochu",s6196153c4b0c1ea0:"Nainstalovat",s922329d6f6213590:"Přidat do Docku",sa5ef80b4bb9b39f8:"Méně",sa7551383d1897fcc:"2) Stiskněte Přidat do Docku",sba52286c21552a4e:"Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.",sc79fd7641eb9a975:"Skrýt instrukce",scdaf4bbff76674c8:"Přidat na plochu",sdfe23506a3b0cdc8:"1) Otevřete v prohlížeči Safari",se740f75b95a51807:"Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.",sfea652f6580ff086:"Tento web má funkce aplikace."},fe={s182ab2d6c997515f:"Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.",s1b9047d53d9f9d22:"2) Trykk på Del-knappen i navigasjonslinjen",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Velg Legg til på Hjem-skjerm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Legg til i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Velg Legg til i Dock",sba52286c21552a4e:"Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.",sc79fd7641eb9a975:"Skjul instruksjoner",scdaf4bbff76674c8:"Legg til på Hjem-skjerm",sdfe23506a3b0cdc8:"1) Åpne i Safari",se740f75b95a51807:"Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.",sfea652f6580ff086:"Denne siden har app-funksjonalitet."},ue={s182ab2d6c997515f:"Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.",s1b9047d53d9f9d22:"2) Pressione Compartilhar na barra de endereço",s37a9e8aec5713460:"Mais",s5c6aad7a7e4a1437:"3) Pressione Adicionar à Tela de Início",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Adicionar ao Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Pressione Adicionar ao Dock",sba52286c21552a4e:"Instale no dispositivo para uma melhor experiência e mais fácil acesso.",sc79fd7641eb9a975:"Ocultar Instruções",scdaf4bbff76674c8:"Adicionar à Tela de Início",sdfe23506a3b0cdc8:"1) Abra no navegador Safari",se740f75b95a51807:"Adicione ao Dock para uma melhor experiência e mais fácil acesso.",sfea652f6580ff086:"Este site possui funcionalidade de aplicativo."},we={s182ab2d6c997515f:"ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。",s1b9047d53d9f9d22:"2) ナビゲーションバーで共有を押す",s37a9e8aec5713460:"展開",s5c6aad7a7e4a1437:"3) 「ホーム画面に追加」を押す",s6196153c4b0c1ea0:"インストール",s922329d6f6213590:"Dockに追加",sa5ef80b4bb9b39f8:"折りたたむ",sa7551383d1897fcc:"2) 「Dockに追加」を押す",sba52286c21552a4e:"デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。",sc79fd7641eb9a975:"説明を非表示",scdaf4bbff76674c8:"ホーム画面に追加",sdfe23506a3b0cdc8:"1) Safariで開く",se740f75b95a51807:"ドックに追加して、幅広い体験と簡単なアクセスを実現してください。",sfea652f6580ff086:"このサイトはアプリ機能があります。"},ve={s182ab2d6c997515f:"Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.",s1b9047d53d9f9d22:"2) Tryck på Dela-knappen i verktygsfältet",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Välj Lägg till på hemskärmen",s6196153c4b0c1ea0:"Installera",s922329d6f6213590:"Lägg till i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Välj Lägg till i Dock",sba52286c21552a4e:"Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.",sc79fd7641eb9a975:"Göm instruktioner",scdaf4bbff76674c8:"Lägg till på hemskärmen",sdfe23506a3b0cdc8:"1) Öppna i Safari",se740f75b95a51807:"Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.",sfea652f6580ff086:"Denna webbsajt har app-funktionalitet."},ye={s182ab2d6c997515f:"더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.",s1b9047d53d9f9d22:"2) 내비게이션 바에서 공유 버튼 누르기",s37a9e8aec5713460:"더보기",s5c6aad7a7e4a1437:"3) 홈 화면에 추가 버튼 누르기",s6196153c4b0c1ea0:"설치",s922329d6f6213590:"Dock에 추가",sa5ef80b4bb9b39f8:"닫기",sa7551383d1897fcc:"2) Dock에 추가 버튼 누르기",sba52286c21552a4e:"더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.",sc79fd7641eb9a975:"안내 숨기기",scdaf4bbff76674c8:"홈 화면에 추가",sdfe23506a3b0cdc8:"1) Safari 브라우저에서 열기",se740f75b95a51807:"더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.",sfea652f6580ff086:"이 사이트는 앱 기능을 가지고 있습니다."},xe={s182ab2d6c997515f:"បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",s1b9047d53d9f9d22:"2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ",s37a9e8aec5713460:"បង្ហាញបន្ថែម",s5c6aad7a7e4a1437:"3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",s6196153c4b0c1ea0:"តំឡើង",s922329d6f6213590:"បន្ថែមទៅកាន់ Dock",sa5ef80b4bb9b39f8:"បង្ហាញតិច",sa7551383d1897fcc:"2) ចុចលើ បន្ថែមទៅកាន់ Dock",sba52286c21552a4e:"តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sc79fd7641eb9a975:"បិទការណែនាំ",scdaf4bbff76674c8:"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",sdfe23506a3b0cdc8:"1) បើកនៅក្នុងកម្មវិធី Safari",se740f75b95a51807:"បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sfea652f6580ff086:"គេហទំព័រនេះមានមុខងារជាកម្មវិធី។"},ke={s182ab2d6c997515f:"Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.",s1b9047d53d9f9d22:"2) Tryk på Del-knappen i navigationslinjen",s37a9e8aec5713460:"Mere",s5c6aad7a7e4a1437:"3) Vælg Tilføj til hjemmeskærm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Tilføj til Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Vælg Tilføj til Dock",sba52286c21552a4e:"Installer den på din enhed for en bedre oplevelse og nem adgang.",sc79fd7641eb9a975:"Skjul instruktion",scdaf4bbff76674c8:"Tilføj til hjemmeskærm",sdfe23506a3b0cdc8:"1) Åbn i Safari-browseren",se740f75b95a51807:"Tilføj den til din Dock for en bedre oplevelse og nem adgang.",sfea652f6580ff086:"Denne side har app-funktionalitet."},De=new Map([["ru",o],["tr",s],["de",n],["es",r],["nl",d],["el",c],["fr",p],["sr",b],["pl",g],["uk",h],["zh-HK",m],["zh-CN",f],["it",u],["cs",w],["no",v],["pt",y],["ja",x],["sv",k],["ko",D],["km",A],["da",j]]),{getLocale:Ae,setLocale:je}=(Se={sourceLocale:"en",targetLocales:te,loadLocale:async e=>De.get(e)},function(e){if(P)throw Error("lit-localize can only be configured once");z=e,P=!0}(((e,t)=>q(W,e,t))),G=Z=Se.sourceLocale,V=new Set(Se.targetLocales),V.add(Se.sourceLocale),N=Se.loadLocale,{getLocale:J,setLocale:X});var Se;class Ee{constructor(){this.icons=[{src:""}],this.screenshots=void 0,this.short_name="PWA",this.name="Progressive web application",this.description="Progressive web application"}}const _e=S.css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`,ze=(e,t,a)=>{const l=new CustomEvent(t,{detail:{message:a}});e.dispatchEvent(l)};class Pe{static isAppleMobile(){return!(!(["iPhone","iPad","iPod"].includes(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2)||!("serviceWorker"in navigator))}static isAppleDesktop(){const e=navigator.userAgent.toLowerCase();if(navigator.maxTouchPoints||!e.match(/macintosh/))return!1;const t=/version\/(\d{2})\./.exec(e);if(!(t&&t[1]&&parseInt(t[1])>=17))return!1;const a=!!document.createElement("audio").canPlayType('audio/wav; codecs="1"'),l=!!new OffscreenCanvas(1,1).getContext("webgl");return a&&l}static deviceFormFactor(){return window.matchMedia("(orientation: portrait)").matches?"narrow":"wide"}static isStandalone(){return!!(window.matchMedia("(display-mode: standalone)").matches||"standalone"in navigator&&!0===navigator.standalone)}static async getInstalledRelatedApps(){if("getInstalledRelatedApps"in navigator)try{return await navigator.getInstalledRelatedApps().then((e=>e))}catch(e){}return[]}static async isRelatedAppsInstalled(){return!!(await this.getInstalledRelatedApps()).length}static setStorageFlag(e,t,a=!1){try{a?localStorage.setItem(e,t.toString()):sessionStorage.setItem(e,t.toString())}catch(e){}}static getStorageFlag(e){try{return"true"===sessionStorage.getItem(e)||"true"===localStorage.getItem(e)}catch(e){return!1}}static eventInstalledSuccess(e){ze(e,"pwa-install-success-event","App install success (Chromium/Android only)")}static eventInstalledFail(e){ze(e,"pwa-install-fail-event","App install failed (Chromium/Android only)")}static eventUserChoiceResult(e,t){ze(e,"pwa-user-choice-result-event",t)}static eventInstallAvailable(e){ze(e,"pwa-install-available-event","App install available")}static eventInstallHowTo(e){ze(e,"pwa-install-how-to-event","App install instruction showed")}static eventGallery(e){ze(e,"pwa-install-gallery-event","App install gallery showed")}static normalizeManifestAssetUrls(e,t){const a=new URL(t,document.location.href);[...e.icons||[],...e.screenshots||[]].forEach((e=>{e.src=new URL(e.src,a).href}))}}const Ie=(e,t,a,l)=>S.html`${e?S.html``:""}`;var Le=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},$e=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Ce=class extends S.LitElement{constructor(){super(...arguments),this.screenshots=[],this.theme="default",this.getScrollElements=()=>{const e=this.shadowRoot?.querySelector("#paginated_gallery");if(!e)return;const t=e.querySelector(".gallery_scroller");if(!t)return;const a=Array.from(t.querySelectorAll("img"));return 0!==a.length?{scroller:t,items:a}:void 0},this.findCurrentItem=(e,t)=>{const a=e.scrollLeft;return t.find((e=>e.offsetWidth+e.offsetLeft>=a+e.offsetWidth/2.5))||null},this.scrollToPage=e=>{const t=this.getScrollElements();if(!t)return;const{scroller:a,items:l}=t,i=this.findCurrentItem(a,l);if(!i)return;const o=l.indexOf(i)+("next"===e?1:-1);o>=0&&o{this.scrollToPage("next")},this.scrollToPrevPage=()=>{this.scrollToPage("prev")},this._init=()=>{}}static get styles(){return _e}firstUpdated(){const e=this.getScrollElements();e&&setTimeout((()=>{e.scroller.scrollTo({top:0,left:0})}),300)}connectedCallback(){super.connectedCallback(),this._init()}render(){return S.html`${Ie(this.screenshots,this.theme,this.scrollToNextPage,this.scrollToPrevPage)}`}};Le([(0,ee.property)({type:Array}),$e("design:type",Array)],Ce.prototype,"screenshots",void 0),Le([(0,ee.property)(),$e("design:type",String)],Ce.prototype,"theme",void 0),Ce=Le([(0,ee.customElement)("pwa-gallery")],Ce);const Re=Ce,Me=(e,t,a,l)=>S.html`
icon
${location.hostname}
${t?S.html`
${t}
`:""}`;var Te=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},He=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Oe=class extends S.LitElement{constructor(){super(...arguments),this.props={name:"",description:"",icon:""},this.install={handleEvent:()=>{}},this.hideDialog=()=>{},this.disableClose=!1,this._callInstall=()=>{this.install.handleEvent()},this._callHide=()=>{this.hideDialog(),this.setupAppearence()},this.bindedElement=null,this._saveBodyStyle=document.body.style.overscrollBehaviorY,this.dragMobileSheet=(e,t,a)=>{if(!e||!t||!a)return null;let l=0;const i=t.clientHeight+a.clientHeight,o=e=>e.clientY||(e.changedTouches&&e.changedTouches.length?e.changedTouches[0].clientY:0),s=e=>{window.addEventListener("mouseup",n),window.addEventListener("mousemove",r),window.addEventListener("touchend",n),window.addEventListener("touchmove",r),l=o(e)-t.getBoundingClientRect().top,document.body.style.overscrollBehaviorY="none"},n=t=>{if(document.body.style.overscrollBehaviorY=this._saveBodyStyle,!this.disableClose&&o(t)>=window.innerHeight-25)d(t,window.innerHeight+50,!0);else if(window.innerHeight-o(t)>e.clientHeight/2.5){d(t,window.innerHeight-e.clientHeight);try{Pe.eventGallery(this.getRootNode().host)}catch(t){}}else d(t,window.innerHeight-i-35)},r=t=>{const a=o(t);this.disableClose&&window.innerHeight-a<70||a<=window.innerHeight-e.clientHeight+l||(e.style.setProperty("transition","none"),e.style.setProperty("--translateY",`translateY(${a-l}px)`))},d=(a,l,d)=>{window.removeEventListener("mouseup",n),window.removeEventListener("mousemove",r),window.removeEventListener("touchend",n),window.removeEventListener("touchmove",r),window.innerWidth>=768||(!l&&o(a)>=window.innerHeight-i?e.style.setProperty("--translateY",`translateY(calc(100vh - ${i}px))`):e.style.setProperty("--translateY",`translateY(${(l||o(a))+35}px)`),e.style.setProperty("transition","transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s"),d&&(t.removeEventListener("mousedown",s),t.removeEventListener("touchstart",s),setTimeout(this._callHide,250)))};return t.addEventListener("mousedown",s),t.addEventListener("touchstart",s,{passive:!0}),d(new MouseEvent("mouseup"),window.innerHeight-i-35),{touchElement:t,listener:s}},this.setupAppearence=()=>{this.bindedElement&&(this.bindedElement.touchElement.removeEventListener("mousedown",this.bindedElement.listener),this.bindedElement.touchElement.removeEventListener("touchstart",this.bindedElement.listener)),this.bindedElement=this.dragMobileSheet(this.parentElement?.parentElement,this.parentElement?.getElementsByClassName("touch-header")[0],this.parentElement?.getElementsByClassName("body-header")[0])},this._init=()=>{this.setupAppearence(),window.addEventListener("resize",this.setupAppearence)}}firstUpdated(){this._init()}createRenderRoot(){return this}connectedCallback(){super.connectedCallback()}render(){return S.html`${Me(this.props.name,this.props.description,this.props.icon,this._callInstall)}`}};Te([(0,ee.property)({type:Object}),He("design:type",Object)],Oe.prototype,"props",void 0),Te([(0,ee.property)({type:Object}),He("design:type",Object)],Oe.prototype,"install",void 0),Te([(0,ee.property)(),He("design:type",Object)],Oe.prototype,"hideDialog",void 0),Te([(0,ee.property)(),He("design:type",Object)],Oe.prototype,"disableClose",void 0),Oe=Te([(0,ee.customElement)("pwa-bottom-sheet")],Oe);const Be=Oe,Ue=S.css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,"Segoe UI",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:"";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,"Segoe UI",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:"";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`,qe=S.css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,"Segoe UI";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:"icon description" "welcome welcome" "how-to how-to" "gallery gallery" "button button";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"icon" "description" "welcome" "how-to" "gallery" "button";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;const Fe=(e=>{var t={};return l.d(t,e),t})({classMap:()=>a.classMap}),Ye=(e,t,a,l,i,o,s,n,r,d,c,p,b)=>{const g=()=>({available:r,gallery:b}),h=!i&&n.screenshots&&n.screenshots.length;return S.html`
icon
${o?"":S.html``}
${location.hostname}
${t?S.html`
${t}
`:""} ${l?"":S.html`
${a||`${z("This site has app functionality.")} ${z("Install it on your device for extensive experience and easy access.")}`}
`} ${h?S.html``:""}
${h?S.html``:""}
${h?S.html``:""}
`},Ze=(e,t,a,l,i,o,s,n,r,d,c,p,b,g,h)=>{const m=!i&&n.screenshots&&n.screenshots.length;return S.html``};var Ve=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},Ne=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let We=class extends S.LitElement{constructor(){super(...arguments),this.manifestUrl="/manifest.json",this.icon="",this.name="",this.description="",this.installDescription="",this.disableDescription=!1,this.disableScreenshots=!1,this.disableScreenshotsApple=!1,this.disableScreenshotsChrome=!1,this.manualApple=!1,this.manualChrome=!1,this.disableChrome=!1,this.disableClose=!1,this.useLocalStorage=!1,this.externalPromptEvent=null,this.platforms=[],this.userChoiceResult="",this.isDialogHidden=Pe.getStorageFlag("pwa-hide-install"),this.isInstallAvailable=!1,this.isAppleMobilePlatform=!1,this.isAppleDesktopPlatform=!1,this.isUnderStandaloneMode=!1,this.isRelatedAppsInstalled=!1,this._manifest=new Ee,this._howToRequested=!1,this._galleryRequested=!1,this._install={handleEvent:()=>{window.defferedPromptEvent&&(this.hideDialog(),window.defferedPromptEvent.prompt(),window.defferedPromptEvent.userChoice.then((e=>{this.userChoiceResult=e.outcome,Pe.eventUserChoiceResult(this,this.userChoiceResult)})).catch((e=>{Pe.eventInstalledFail(this)})),window.defferedPromptEvent=null)},passive:!0},this.install=()=>{this.isAppleMobilePlatform||this.isAppleDesktopPlatform?(this._howToRequested=!0,this.requestUpdate()):this._install.handleEvent()},this._hideDialog={handleEvent:()=>{this.isDialogHidden=!0,Pe.setStorageFlag("pwa-hide-install",!0,this.useLocalStorage),this.requestUpdate()},passive:!0},this._hideDialogUser=()=>{Pe.eventUserChoiceResult(this,"dismissed"),this.userChoiceResult="dismissed",this.hideDialog()},this.hideDialog=()=>{this._hideDialog.handleEvent()},this.showDialog=(e=!1)=>{this.isDialogHidden=!1,e&&(this.isInstallAvailable=!0),Pe.setStorageFlag("pwa-hide-install",!1,this.useLocalStorage),this.requestUpdate()},this.getInstalledRelatedApps=async()=>await Pe.getInstalledRelatedApps(),this._howToForApple={handleEvent:()=>{this._howToRequested=!this._howToRequested,this._howToRequested&&this._galleryRequested&&(this._galleryRequested=!1),this.requestUpdate(),this._howToRequested&&Pe.eventInstallHowTo(this)},passive:!0},this._toggleGallery={handleEvent:()=>{this._galleryRequested=!this._galleryRequested,this._howToRequested&&this._galleryRequested&&(this._howToRequested=!1),this._galleryRequested&&Pe.eventGallery(this),this.requestUpdate()},passive:!0},this._init=async()=>{if(window.defferedPromptEvent=null,this._checkInstalled(),!this.disableChrome){const e=e=>{window.defferedPromptEvent=e,e.preventDefault(),this.platforms=e.platforms,this.isRelatedAppsInstalled||this.isUnderStandaloneMode?this.isInstallAvailable=!1:(this.isInstallAvailable=!0,Pe.eventInstallAvailable(this)),"accepted"===this.userChoiceResult&&(this.isDialogHidden=!0,Pe.eventInstalledSuccess(this)),this.requestUpdate()};null!=this.externalPromptEvent?setTimeout((()=>e(this.externalPromptEvent)),300):window.addEventListener("beforeinstallprompt",e)}window.addEventListener("appinstalled",(e=>{window.defferedPromptEvent=null,this.isInstallAvailable=!1,this.requestUpdate(),Pe.eventInstalledSuccess(this)}));try{const e=await fetch(this.manifestUrl),t=await e.json();if(!e.ok||!t||!Object.keys(t))throw Error("Manifest not found");Pe.normalizeManifestAssetUrls(t,this.manifestUrl),this.icon=this.icon||t.icons?.length?t.icons[0].src:"",this.name=this.name||t.short_name||t.name||"",this.description=this.description||t.description||"",this._manifest=t}catch(e){this.icon=this.icon||this._manifest.icons?.[0].src||"",this.name=this.name||this._manifest.short_name||"",this.description=this.description||this._manifest.description||""}},this._requestUpdate=()=>{this.requestUpdate()}}static get styles(){return[Ue,qe]}async _checkInstalled(){this.isUnderStandaloneMode=Pe.isStandalone(),this.isRelatedAppsInstalled=await Pe.isRelatedAppsInstalled(),this.isAppleMobilePlatform=Pe.isAppleMobile(),this.isAppleDesktopPlatform=Pe.isAppleDesktop(),this.isAppleMobilePlatform||this.isAppleDesktopPlatform?this.isUnderStandaloneMode||(this.manualApple&&this.hideDialog(),setTimeout((()=>{this.isInstallAvailable=!0,this.requestUpdate(),Pe.eventInstallAvailable(this)}),1e3)):this.manualChrome&&this.hideDialog()}connectedCallback(){(e=>{"nb"===e.slice(0,2)&&(e="no");switch(e){case"zh":case"zh-TW":e="zh-CN"}try{De.get(e)?je(e):je(e.slice(0,2))}catch{}})(navigator.language),this._init(),Re.finalized,Be.finalized,super.connectedCallback()}willUpdate(e){this.externalPromptEvent&&e.has("externalPromptEvent")&&"object"==typeof this.externalPromptEvent&&this._init()}render(){return this.isAppleMobilePlatform||this.isAppleDesktopPlatform?S.html`${Ze(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsApple,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._howToForApple,this.isAppleDesktopPlatform,this._howToRequested,this._toggleGallery,this._galleryRequested)}`:S.html`${Ye(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsChrome,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._install,this._toggleGallery,this._galleryRequested)}`}};Ve([(0,ee.property)({attribute:"manifest-url"}),Ne("design:type",Object)],We.prototype,"manifestUrl",void 0),Ve([(0,ee.property)(),Ne("design:type",Object)],We.prototype,"icon",void 0),Ve([(0,ee.property)(),Ne("design:type",Object)],We.prototype,"name",void 0),Ve([(0,ee.property)(),Ne("design:type",Object)],We.prototype,"description",void 0),Ve([(0,ee.property)({attribute:"install-description"}),Ne("design:type",Object)],We.prototype,"installDescription",void 0),Ve([(0,ee.property)({attribute:"disable-install-description",type:Boolean}),Ne("design:type",Object)],We.prototype,"disableDescription",void 0),Ve([(0,ee.property)({attribute:"disable-screenshots",type:Boolean}),Ne("design:type",Object)],We.prototype,"disableScreenshots",void 0),Ve([(0,ee.property)({attribute:"disable-screenshots-apple",type:Boolean}),Ne("design:type",Object)],We.prototype,"disableScreenshotsApple",void 0),Ve([(0,ee.property)({attribute:"disable-screenshots-chrome",type:Boolean}),Ne("design:type",Object)],We.prototype,"disableScreenshotsChrome",void 0),Ve([(0,ee.property)({attribute:"manual-apple",type:Boolean}),Ne("design:type",Object)],We.prototype,"manualApple",void 0),Ve([(0,ee.property)({attribute:"manual-chrome",type:Boolean}),Ne("design:type",Object)],We.prototype,"manualChrome",void 0),Ve([(0,ee.property)({attribute:"disable-chrome",type:Boolean}),Ne("design:type",Object)],We.prototype,"disableChrome",void 0),Ve([(0,ee.property)({attribute:"disable-close",type:Boolean}),Ne("design:type",Object)],We.prototype,"disableClose",void 0),Ve([(0,ee.property)({attribute:"use-local-storage",type:Boolean}),Ne("design:type",Object)],We.prototype,"useLocalStorage",void 0),Ve([(0,ee.state)(),Ne("design:type",Object)],We.prototype,"externalPromptEvent",void 0),We=Ve([(e,t)=>(e.addInitializer($),e),(0,ee.customElement)("pwa-install")],We);var Ge=i.w;export{Ge as PWAInstallElement}; +import*as e from"lit";import*as t from"lit/decorators.js";import*as a from"lit/directives/class-map.js";var l={d:(e,t)=>{for(var a in t)l.o(t,a)&&!l.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},i={};l.d(i,{w:()=>Ze});var o={};l.r(o),l.d(o,{templates:()=>X});var s={};l.r(s),l.d(s,{templates:()=>ee});var n={};l.r(n),l.d(n,{templates:()=>te});var r={};l.r(r),l.d(r,{templates:()=>ae});var d={};l.r(d),l.d(d,{templates:()=>le});var c={};l.r(c),l.d(c,{templates:()=>ie});var p={};l.r(p),l.d(p,{templates:()=>oe});var b={};l.r(b),l.d(b,{templates:()=>se});var g={};l.r(g),l.d(g,{templates:()=>ne});var h={};l.r(h),l.d(h,{templates:()=>re});var m={};l.r(m),l.d(m,{templates:()=>de});var f={};l.r(f),l.d(f,{templates:()=>ce});var u={};l.r(u),l.d(u,{templates:()=>pe});var w={};l.r(w),l.d(w,{templates:()=>be});var v={};l.r(v),l.d(v,{templates:()=>ge});var y={};l.r(y),l.d(y,{templates:()=>he});var x={};l.r(x),l.d(x,{templates:()=>me});var k={};l.r(k),l.d(k,{templates:()=>fe});var D={};l.r(D),l.d(D,{templates:()=>ue});var A={};l.r(A),l.d(A,{templates:()=>we});var j={};l.r(j),l.d(j,{templates:()=>ve});const S=(e=>{var t={};return l.d(t,e),t})({LitElement:()=>e.LitElement,css:()=>e.css,html:()=>e.html}),E=(e,t,a)=>{let l=e[0];for(let i=1;i{return"string"!=typeof(t=e)&&"strTag"in t?E(e.strings,e.values):e;var t};let z=_,P=!1;const I="lit-localize-status";class L{constructor(e){this.__litLocalizeEventHandler=e=>{"ready"===e.detail.status&&this.host.requestUpdate()},this.host=e}hostConnected(){window.addEventListener(I,this.__litLocalizeEventHandler)}hostDisconnected(){window.removeEventListener(I,this.__litLocalizeEventHandler)}}const $=e=>e.addController(new L(e));class C{constructor(){this.settled=!1,this.promise=new Promise(((e,t)=>{this._resolve=e,this._reject=t}))}resolve(e){this.settled=!0,this._resolve(e)}reject(e){this.settled=!0,this._reject(e)}}const R=[];for(let e=0;e<256;e++)R[e]=(e>>4&15).toString(16)+(15&e).toString(16);function M(e,t){return(t?"h":"s")+function(e){let t=0,a=8997,l=0,i=33826,o=0,s=40164,n=0,r=52210;for(let d=0;d>>16,a=65535&t,o+=l>>>16,i=65535&l,r=n+(o>>>16)&65535,s=65535&o;return R[r>>8]+R[255&r]+R[s>>8]+R[255&s]+R[i>>8]+R[255&i]+R[a>>8]+R[255&a]}("string"==typeof e?e:e.join(""))}const T=new WeakMap,H=new Map;function O(e,t,a){if(e){const l=a?.id??function(e){const t="string"==typeof e?e:e.strings;let a=H.get(t);void 0===a&&(a=M(t,"string"!=typeof e&&!("strTag"in e)),H.set(t,a));return a}(t),i=e[l];if(i){if("string"==typeof i)return i;if("strTag"in i)return E(i.strings,t.values,i.values);{let e=T.get(i);return void 0===e&&(e=i.values,T.set(i,e)),{...i,values:e.map((e=>t.values[e]))}}}}return _(t)}function B(e){window.dispatchEvent(new CustomEvent(I,{detail:e}))}let U,q,F,Y,Z,V="",N=new C;N.resolve();let W=0;const G=()=>V,K=e=>{if(e===(U??V))return N.promise;if(!F||!Y)throw Error("Internal error");if(!F.has(e))throw Error("Invalid locale code");W++;const t=W;U=e,N.settled&&(N=new C),B({status:"loading",loadingLocale:e});return(e===q?Promise.resolve({templates:void 0}):Y(e)).then((a=>{W===t&&(V=e,U=void 0,Z=a.templates,B({status:"ready",readyLocale:e}),N.resolve())}),(a=>{W===t&&(B({status:"error",errorLocale:e,errorMessage:a.toString()}),N.reject(a))})),N.promise};const Q=(e=>{var t={};return l.d(t,e),t})({customElement:()=>t.customElement,property:()=>t.property,state:()=>t.state}),J=["cs","da","de","el","es","fr","it","ja","km","ko","nl","no","pl","pt","ru","sr","sv","tr","uk","zh-CN","zh-HK"],X={s182ab2d6c997515f:"Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.",s1b9047d53d9f9d22:'2) Нажать "Поделиться"',s37a9e8aec5713460:"Подробнее",s5c6aad7a7e4a1437:'3) Нажать "На экран «Домой»"',s6196153c4b0c1ea0:"Установить",s922329d6f6213590:"Добавить в Dock",sa5ef80b4bb9b39f8:"Свернуть",sa7551383d1897fcc:'2) Нажмите "Добавить в Dock"',sba52286c21552a4e:"Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.",sc79fd7641eb9a975:"Спрятать Инструкцию",scdaf4bbff76674c8:"На экран «Домой»",sdfe23506a3b0cdc8:"1) Открыть в Safari браузере",se740f75b95a51807:"Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.",sfea652f6580ff086:"Этот веб-сайт имеет функционал приложения."},ee={s182ab2d6c997515f:"Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.",s1b9047d53d9f9d22:"2) Gezinme çubuğunda Paylaş'a basın",s37a9e8aec5713460:"Daha Fazla",s5c6aad7a7e4a1437:"3) Ana Ekrana Ekle'ye basın",s6196153c4b0c1ea0:"Yükle",s922329d6f6213590:"Dock’a Ekle",sa5ef80b4bb9b39f8:"Küçült",sa7551383d1897fcc:"2) Dock’a ekleye basın",sba52286c21552a4e:"Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.",sc79fd7641eb9a975:"Talimatları gizle",scdaf4bbff76674c8:"Ana Ekrana Ekle",sdfe23506a3b0cdc8:"1) Safari tarayıcısında açın",se740f75b95a51807:"Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.",sfea652f6580ff086:"Bu site uygulama işlevselliğine sahiptir."},te={s182ab2d6c997515f:"Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",s1b9047d53d9f9d22:"2) Drücken Sie auf Teilen in der Navigationsleiste",s37a9e8aec5713460:"Mehr",s5c6aad7a7e4a1437:"3) Drücken Sie Hinzufügen zum Startbildschirm",s6196153c4b0c1ea0:"Installieren",s922329d6f6213590:"Zum Dock hinzufügen",sa5ef80b4bb9b39f8:"Weniger",sa7551383d1897fcc:"2) Drücken Sie auf Zum Dock hinzufügen",sba52286c21552a4e:"Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.",sc79fd7641eb9a975:"Anleitung ausblenden",scdaf4bbff76674c8:"Hinzufügen zum Startbildschirm",sdfe23506a3b0cdc8:"1) In Safari-Browser öffnen",se740f75b95a51807:"Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",sfea652f6580ff086:"Diese Website verfügt über App-Funktionalität."},ae={s182ab2d6c997515f:"Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.",s1b9047d53d9f9d22:"2) Presionar Compartir en la barra de direcciones",s37a9e8aec5713460:"Más",s5c6aad7a7e4a1437:"3) Presionar Añadir a pantalla de inicio",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Añadir al Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Presionar Añadir al Dock",sba52286c21552a4e:"Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.",sc79fd7641eb9a975:"Esconder instrucciones",scdaf4bbff76674c8:"Añadir a pantalla de inicio",sdfe23506a3b0cdc8:"1) Abrir en el navegador web Safari",se740f75b95a51807:"Añádelo a tu Dock para una experiencia amplia y acceso fácil.",sfea652f6580ff086:"Este sitio tiene funcionalidad de aplicación."},le={s182ab2d6c997515f:"Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.",s1b9047d53d9f9d22:"2) Druk op delen in de navigatiebalk",s37a9e8aec5713460:"Meer",s5c6aad7a7e4a1437:"3) Druk op Toevoegen aan het startscherm",s6196153c4b0c1ea0:"Installeren",s922329d6f6213590:"Toevoegen aan Dock",sa5ef80b4bb9b39f8:"Minder",sa7551383d1897fcc:"2) Druk op Toevoegen aan Dock",sba52286c21552a4e:"Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.",sc79fd7641eb9a975:"Instructie verbergen",scdaf4bbff76674c8:"Toevoegen aan het startscherm",sdfe23506a3b0cdc8:"1) Open in Safari-browser",se740f75b95a51807:"Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.",sfea652f6580ff086:"Deze site heeft app-functionaliteit."},ie={s182ab2d6c997515f:"Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",s1b9047d53d9f9d22:"2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης",s37a9e8aec5713460:"Περισσότερα",s5c6aad7a7e4a1437:"3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας",s6196153c4b0c1ea0:"Εγκατάσταση",s922329d6f6213590:"Προσθήκη στην Πρόσβαση",sa5ef80b4bb9b39f8:"Λιγότερα",sa7551383d1897fcc:"2) Πατήστε Προσθήκη στην Πρόσβαση",sba52286c21552a4e:"Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sc79fd7641eb9a975:"Απόκρυψη Οδηγιών",scdaf4bbff76674c8:"Προσθήκη στην Οθόνη Αφετηρίας",sdfe23506a3b0cdc8:"1) Ανοίξτε τον περιηγητή Safari",se740f75b95a51807:"Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sfea652f6580ff086:"Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής."},oe={s182ab2d6c997515f:"Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.",s1b9047d53d9f9d22:"2) Appuyez sur Partager dans la barre de navigation",s37a9e8aec5713460:"Plus",s5c6aad7a7e4a1437:"3) Appuyez sur Ajouter à l'écran d'accueil",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Ajouter au Dock",sa5ef80b4bb9b39f8:"Moins",sa7551383d1897fcc:"2) Appuyez sur Ajouter au Dock",sba52286c21552a4e:"Installez-le sur votre appareil pour une expérience complète et un accès facile.",sc79fd7641eb9a975:"Masquer les instructions",scdaf4bbff76674c8:"Ajouter à l'écran d'accueil",sdfe23506a3b0cdc8:"1) Ouvrir dans le navigateur Safari",se740f75b95a51807:"Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.",sfea652f6580ff086:"Ce site possède des fonctionnalités d'application."},se={s182ab2d6c997515f:"Додајте га на Home Screen за широке могућности и лак приступ.",s1b9047d53d9f9d22:"2) Притисните Share у навигационој траци",s37a9e8aec5713460:"Више",s5c6aad7a7e4a1437:"3) Притисните Add to Home Screen",s6196153c4b0c1ea0:"Инсталирај",sa5ef80b4bb9b39f8:"Мање",sa7551383d1897fcc:"3) Притисните Add to Dock",sba52286c21552a4e:"Инсталирајте га на вашем уређају за широке могућности и лак приступ.",sc79fd7641eb9a975:"Сакриј упутство",sdfe23506a3b0cdc8:"1) Отворите у Safari прегледачу",se740f75b95a51807:"Додајте га у вашу Dock за широке могућности и лак приступ.",sfea652f6580ff086:"Овај сајт има функционалност апликације.",s922329d6f6213590:"Add to Dock",scdaf4bbff76674c8:"Add to Home Screen"},ne={s182ab2d6c997515f:"Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.",s1b9047d53d9f9d22:'2) Wybierz "Udostępnij"',s37a9e8aec5713460:"Więcej",s5c6aad7a7e4a1437:'3) Wybierz "Dodaj do Ekranu Głównego"',s6196153c4b0c1ea0:"Zainstaluj",s922329d6f6213590:"Dodaj do Docka",sa5ef80b4bb9b39f8:"Mniej",sa7551383d1897fcc:'2) Wybierz "Dodaj do Docka"',sba52286c21552a4e:"Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.",sc79fd7641eb9a975:"Ukryj instrukcję",scdaf4bbff76674c8:"Dodaj do Ekranu Głównego",sdfe23506a3b0cdc8:"1) Otwórz przeglądarkę Safari",se740f75b95a51807:"Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.",sfea652f6580ff086:"Ta strona posiada funkcje aplikacji."},re={s182ab2d6c997515f:"Додайте на Домашній екран для зручного доступу та ширших можливостей.",s1b9047d53d9f9d22:"2) Натиснути «Поділитися»",s37a9e8aec5713460:"Детальніше",s5c6aad7a7e4a1437:"3) Натиснути «На Початковий екран»",s6196153c4b0c1ea0:"Встановити",s922329d6f6213590:"Додати на Dock",sa5ef80b4bb9b39f8:"Згорнути",sa7551383d1897fcc:"2) Натиснути «Додати на Dock»",sba52286c21552a4e:"Встановіть на ваш пристрій для зручного доступу та ширших можливостей.",sc79fd7641eb9a975:"Сховати Інструкцію",scdaf4bbff76674c8:"На Початковий экран",sdfe23506a3b0cdc8:"1) Відкрити в Safari браузері",se740f75b95a51807:"Додайте на панель Dock для зручного доступу та ширших можливостей.",sfea652f6580ff086:"Цей сайт має функції додатку."},de={s182ab2d6c997515f:"將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。",s1b9047d53d9f9d22:"2) 點擊列表上的分享按鈕",s37a9e8aec5713460:"詳細資訊",s5c6aad7a7e4a1437:"3) 點擊加入主畫面",s6196153c4b0c1ea0:"安裝",s922329d6f6213590:"添加到Dock欄",sa5ef80b4bb9b39f8:"簡短資訊",sa7551383d1897fcc:"2) 點選添加到Dock欄",sba52286c21552a4e:"在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。",sc79fd7641eb9a975:"隱藏安裝流程",scdaf4bbff76674c8:"將App加入主畫面",sdfe23506a3b0cdc8:"1) 在Safari上瀏覽此網頁",se740f75b95a51807:"將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。",sfea652f6580ff086:"此網站具有應用程式功能。"},ce={s182ab2d6c997515f:"将其添加到主屏幕,以享受更丰富的体验并便于访问。",s1b9047d53d9f9d22:"2) 点击导航栏中的“分享”按钮",s37a9e8aec5713460:"更多",s5c6aad7a7e4a1437:"3) 点击“添加到主屏幕”",s6196153c4b0c1ea0:"安装",s922329d6f6213590:"添加到程序坞",sa5ef80b4bb9b39f8:"收起",sa7551383d1897fcc:"2) 点击“添加到程序坞”",sba52286c21552a4e:"在您的设备上安装,以享受更丰富的体验并便于访问。",sc79fd7641eb9a975:"隐藏安装步骤",scdaf4bbff76674c8:"添加到主屏幕",sdfe23506a3b0cdc8:"1) 在 Safari 浏览器中打开此页面",se740f75b95a51807:"将其添加到您的程序坞,以享受更全面的体验并便于访问。",sfea652f6580ff086:"此网站具备 App 功能特性。"},pe={s182ab2d6c997515f:"Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.",s1b9047d53d9f9d22:"2) Premi Condividi nella barra di navigazione",s37a9e8aec5713460:"Più",s5c6aad7a7e4a1437:"3) Premi Aggiungi alla schermata principale",s6196153c4b0c1ea0:"Installa",s922329d6f6213590:"Aggiungi al Dock",sa5ef80b4bb9b39f8:"Meno",sa7551383d1897fcc:"2) Premi Aggiungi al Dock",sba52286c21552a4e:"Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.",sc79fd7641eb9a975:"Nascondi istruzioni",scdaf4bbff76674c8:"Aggiungi alla schermata principale",sdfe23506a3b0cdc8:"1) Apri nel browser Safari",se740f75b95a51807:"Aggiungilo al Dock per un'esperienza più completa e un accesso facile.",sfea652f6580ff086:"Questo sito ha funzionalità di app."},be={s182ab2d6c997515f:"Přidejte jej na plochu pro rozšířené využití a snadný přístup.",s1b9047d53d9f9d22:"2) Stiskněte tlačítko Sdílet na navigačním panelu",s37a9e8aec5713460:"Vice",s5c6aad7a7e4a1437:"3) Stiskněte tlačítko Přidat na plochu",s6196153c4b0c1ea0:"Nainstalovat",s922329d6f6213590:"Přidat do Docku",sa5ef80b4bb9b39f8:"Méně",sa7551383d1897fcc:"2) Stiskněte Přidat do Docku",sba52286c21552a4e:"Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.",sc79fd7641eb9a975:"Skrýt instrukce",scdaf4bbff76674c8:"Přidat na plochu",sdfe23506a3b0cdc8:"1) Otevřete v prohlížeči Safari",se740f75b95a51807:"Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.",sfea652f6580ff086:"Tento web má funkce aplikace."},ge={s182ab2d6c997515f:"Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.",s1b9047d53d9f9d22:"2) Trykk på Del-knappen i navigasjonslinjen",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Velg Legg til på Hjem-skjerm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Legg til i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Velg Legg til i Dock",sba52286c21552a4e:"Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.",sc79fd7641eb9a975:"Skjul instruksjoner",scdaf4bbff76674c8:"Legg til på Hjem-skjerm",sdfe23506a3b0cdc8:"1) Åpne i Safari",se740f75b95a51807:"Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.",sfea652f6580ff086:"Denne siden har app-funksjonalitet."},he={s182ab2d6c997515f:"Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.",s1b9047d53d9f9d22:"2) Pressione Compartilhar na barra de endereço",s37a9e8aec5713460:"Mais",s5c6aad7a7e4a1437:"3) Pressione Adicionar à Tela de Início",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Adicionar ao Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Pressione Adicionar ao Dock",sba52286c21552a4e:"Instale no dispositivo para uma melhor experiência e mais fácil acesso.",sc79fd7641eb9a975:"Ocultar Instruções",scdaf4bbff76674c8:"Adicionar à Tela de Início",sdfe23506a3b0cdc8:"1) Abra no navegador Safari",se740f75b95a51807:"Adicione ao Dock para uma melhor experiência e mais fácil acesso.",sfea652f6580ff086:"Este site possui funcionalidade de aplicativo."},me={s182ab2d6c997515f:"ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。",s1b9047d53d9f9d22:"2) ナビゲーションバーで共有を押す",s37a9e8aec5713460:"展開",s5c6aad7a7e4a1437:"3) 「ホーム画面に追加」を押す",s6196153c4b0c1ea0:"インストール",s922329d6f6213590:"Dockに追加",sa5ef80b4bb9b39f8:"折りたたむ",sa7551383d1897fcc:"2) 「Dockに追加」を押す",sba52286c21552a4e:"デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。",sc79fd7641eb9a975:"説明を非表示",scdaf4bbff76674c8:"ホーム画面に追加",sdfe23506a3b0cdc8:"1) Safariで開く",se740f75b95a51807:"ドックに追加して、幅広い体験と簡単なアクセスを実現してください。",sfea652f6580ff086:"このサイトはアプリ機能があります。"},fe={s182ab2d6c997515f:"Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.",s1b9047d53d9f9d22:"2) Tryck på Dela-knappen i verktygsfältet",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Välj Lägg till på hemskärmen",s6196153c4b0c1ea0:"Installera",s922329d6f6213590:"Lägg till i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Välj Lägg till i Dock",sba52286c21552a4e:"Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.",sc79fd7641eb9a975:"Göm instruktioner",scdaf4bbff76674c8:"Lägg till på hemskärmen",sdfe23506a3b0cdc8:"1) Öppna i Safari",se740f75b95a51807:"Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.",sfea652f6580ff086:"Denna webbsajt har app-funktionalitet."},ue={s182ab2d6c997515f:"더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.",s1b9047d53d9f9d22:"2) 내비게이션 바에서 공유 버튼 누르기",s37a9e8aec5713460:"더보기",s5c6aad7a7e4a1437:"3) 홈 화면에 추가 버튼 누르기",s6196153c4b0c1ea0:"설치",s922329d6f6213590:"Dock에 추가",sa5ef80b4bb9b39f8:"닫기",sa7551383d1897fcc:"2) Dock에 추가 버튼 누르기",sba52286c21552a4e:"더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.",sc79fd7641eb9a975:"안내 숨기기",scdaf4bbff76674c8:"홈 화면에 추가",sdfe23506a3b0cdc8:"1) Safari 브라우저에서 열기",se740f75b95a51807:"더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.",sfea652f6580ff086:"이 사이트는 앱 기능을 가지고 있습니다."},we={s182ab2d6c997515f:"បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",s1b9047d53d9f9d22:"2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ",s37a9e8aec5713460:"បង្ហាញបន្ថែម",s5c6aad7a7e4a1437:"3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",s6196153c4b0c1ea0:"តំឡើង",s922329d6f6213590:"បន្ថែមទៅកាន់ Dock",sa5ef80b4bb9b39f8:"បង្ហាញតិច",sa7551383d1897fcc:"2) ចុចលើ បន្ថែមទៅកាន់ Dock",sba52286c21552a4e:"តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sc79fd7641eb9a975:"បិទការណែនាំ",scdaf4bbff76674c8:"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",sdfe23506a3b0cdc8:"1) បើកនៅក្នុងកម្មវិធី Safari",se740f75b95a51807:"បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sfea652f6580ff086:"គេហទំព័រនេះមានមុខងារជាកម្មវិធី។"},ve={s182ab2d6c997515f:"Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.",s1b9047d53d9f9d22:"2) Tryk på Del-knappen i navigationslinjen",s37a9e8aec5713460:"Mere",s5c6aad7a7e4a1437:"3) Vælg Tilføj til hjemmeskærm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Tilføj til Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Vælg Tilføj til Dock",sba52286c21552a4e:"Installer den på din enhed for en bedre oplevelse og nem adgang.",sc79fd7641eb9a975:"Skjul instruktion",scdaf4bbff76674c8:"Tilføj til hjemmeskærm",sdfe23506a3b0cdc8:"1) Åbn i Safari-browseren",se740f75b95a51807:"Tilføj den til din Dock for en bedre oplevelse og nem adgang.",sfea652f6580ff086:"Denne side har app-funktionalitet."},ye=new Map([["ru",o],["tr",s],["de",n],["es",r],["nl",d],["el",c],["fr",p],["sr",b],["pl",g],["uk",h],["zh-HK",m],["zh-CN",f],["it",u],["cs",w],["no",v],["pt",y],["ja",x],["sv",k],["ko",D],["km",A],["da",j]]),{getLocale:xe,setLocale:ke}=(De={sourceLocale:"en",targetLocales:J,loadLocale:async e=>ye.get(e)},function(e){if(P)throw Error("lit-localize can only be configured once");z=e,P=!0}(((e,t)=>O(Z,e,t))),V=q=De.sourceLocale,F=new Set(De.targetLocales),F.add(De.sourceLocale),Y=De.loadLocale,{getLocale:G,setLocale:K});var De;class Ae{constructor(){this.icons=[{src:""}],this.screenshots=void 0,this.short_name="PWA",this.name="Progressive web application",this.description="Progressive web application"}}const je=S.css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`,Se=(e,t,a)=>{const l=new CustomEvent(t,{detail:{message:a}});e.dispatchEvent(l)};class Ee{static isAppleMobile(){return!(!(["iPhone","iPad","iPod"].includes(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2)||!("serviceWorker"in navigator))}static isAppleDesktop(){const e=navigator.userAgent.toLowerCase();if(navigator.maxTouchPoints||!e.match(/macintosh/))return!1;const t=/version\/(\d{2})\./.exec(e);if(!(t&&t[1]&&parseInt(t[1])>=17))return!1;const a=!!document.createElement("audio").canPlayType('audio/wav; codecs="1"'),l=!!new OffscreenCanvas(1,1).getContext("webgl");return a&&l}static deviceFormFactor(){return window.matchMedia("(orientation: portrait)").matches?"narrow":"wide"}static isStandalone(){return!!(window.matchMedia("(display-mode: standalone)").matches||"standalone"in navigator&&!0===navigator.standalone)}static async getInstalledRelatedApps(){if("getInstalledRelatedApps"in navigator)try{return await navigator.getInstalledRelatedApps().then((e=>e))}catch(e){}return[]}static async isRelatedAppsInstalled(){return!!(await this.getInstalledRelatedApps()).length}static setStorageFlag(e,t,a=!1){try{a?localStorage.setItem(e,t.toString()):sessionStorage.setItem(e,t.toString())}catch(e){}}static getStorageFlag(e){try{return"true"===sessionStorage.getItem(e)||"true"===localStorage.getItem(e)}catch(e){return!1}}static eventInstalledSuccess(e){Se(e,"pwa-install-success-event","App install success (Chromium/Android only)")}static eventInstalledFail(e){Se(e,"pwa-install-fail-event","App install failed (Chromium/Android only)")}static eventUserChoiceResult(e,t){Se(e,"pwa-user-choice-result-event",t)}static eventInstallAvailable(e){Se(e,"pwa-install-available-event","App install available")}static eventInstallHowTo(e){Se(e,"pwa-install-how-to-event","App install instruction showed")}static eventGallery(e){Se(e,"pwa-install-gallery-event","App install gallery showed")}static normalizeManifestAssetUrls(e,t){const a=new URL(t,document.location.href);[...e.icons||[],...e.screenshots||[]].forEach((e=>{e.src=new URL(e.src,a).href}))}}const _e=(e,t,a,l)=>S.html`${e?S.html``:""}`;var ze=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},Pe=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Ie=class extends S.LitElement{constructor(){super(...arguments),this.screenshots=[],this.theme="default",this.getScrollElements=()=>{const e=this.shadowRoot?.querySelector("#paginated_gallery");if(!e)return;const t=e.querySelector(".gallery_scroller");if(!t)return;const a=Array.from(t.querySelectorAll("img"));return 0!==a.length?{scroller:t,items:a}:void 0},this.findCurrentItem=(e,t)=>{const a=e.scrollLeft;return t.find((e=>e.offsetWidth+e.offsetLeft>=a+e.offsetWidth/2.5))||null},this.scrollToPage=e=>{const t=this.getScrollElements();if(!t)return;const{scroller:a,items:l}=t,i=this.findCurrentItem(a,l);if(!i)return;const o=l.indexOf(i)+("next"===e?1:-1);o>=0&&o{this.scrollToPage("next")},this.scrollToPrevPage=()=>{this.scrollToPage("prev")},this._init=()=>{}}static get styles(){return je}firstUpdated(){const e=this.getScrollElements();e&&setTimeout((()=>{e.scroller.scrollTo({top:0,left:0})}),300)}connectedCallback(){super.connectedCallback(),this._init()}render(){return S.html`${_e(this.screenshots,this.theme,this.scrollToNextPage,this.scrollToPrevPage)}`}};ze([(0,Q.property)({type:Array}),Pe("design:type",Array)],Ie.prototype,"screenshots",void 0),ze([(0,Q.property)(),Pe("design:type",String)],Ie.prototype,"theme",void 0),Ie=ze([(0,Q.customElement)("pwa-gallery")],Ie);const Le=Ie,$e=(e,t,a,l)=>S.html`
icon
${location.hostname}
${t?S.html`
${t}
`:""}`;var Ce=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},Re=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Me=class extends S.LitElement{constructor(){super(...arguments),this.props={name:"",description:"",icon:""},this.install={handleEvent:()=>{}},this.hideDialog=()=>{},this.disableClose=!1,this._callInstall=()=>{this.install.handleEvent()},this._callHide=()=>{this.hideDialog(),this.setupAppearence()},this.bindedElement=null,this._saveBodyStyle=document.body.style.overscrollBehaviorY,this.dragMobileSheet=(e,t,a)=>{if(!e||!t||!a)return null;let l=0;const i=t.clientHeight+a.clientHeight,o=e=>e.clientY||(e.changedTouches&&e.changedTouches.length?e.changedTouches[0].clientY:0),s=e=>{window.addEventListener("mouseup",n),window.addEventListener("mousemove",r),window.addEventListener("touchend",n),window.addEventListener("touchmove",r),l=o(e)-t.getBoundingClientRect().top,document.body.style.overscrollBehaviorY="none"},n=t=>{if(document.body.style.overscrollBehaviorY=this._saveBodyStyle,!this.disableClose&&o(t)>=window.innerHeight-25)d(t,window.innerHeight+50,!0);else if(window.innerHeight-o(t)>e.clientHeight/2.5){d(t,window.innerHeight-e.clientHeight);try{Ee.eventGallery(this.getRootNode().host)}catch(t){}}else d(t,window.innerHeight-i-35)},r=t=>{const a=o(t);this.disableClose&&window.innerHeight-a<70||a<=window.innerHeight-e.clientHeight+l||(e.style.setProperty("transition","none"),e.style.setProperty("--translateY",`translateY(${a-l}px)`))},d=(a,l,d)=>{window.removeEventListener("mouseup",n),window.removeEventListener("mousemove",r),window.removeEventListener("touchend",n),window.removeEventListener("touchmove",r),window.innerWidth>=768||(!l&&o(a)>=window.innerHeight-i?e.style.setProperty("--translateY",`translateY(calc(100vh - ${i}px))`):e.style.setProperty("--translateY",`translateY(${(l||o(a))+35}px)`),e.style.setProperty("transition","transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s"),d&&(t.removeEventListener("mousedown",s),t.removeEventListener("touchstart",s),setTimeout(this._callHide,250)))};return t.addEventListener("mousedown",s),t.addEventListener("touchstart",s,{passive:!0}),d(new MouseEvent("mouseup"),window.innerHeight-i-35),{touchElement:t,listener:s}},this.setupAppearence=()=>{this.bindedElement&&(this.bindedElement.touchElement.removeEventListener("mousedown",this.bindedElement.listener),this.bindedElement.touchElement.removeEventListener("touchstart",this.bindedElement.listener)),this.bindedElement=this.dragMobileSheet(this.parentElement?.parentElement,this.parentElement?.getElementsByClassName("touch-header")[0],this.parentElement?.getElementsByClassName("body-header")[0])},this._init=()=>{this.setupAppearence(),window.addEventListener("resize",this.setupAppearence)}}firstUpdated(){this._init()}createRenderRoot(){return this}connectedCallback(){super.connectedCallback()}render(){return S.html`${$e(this.props.name,this.props.description,this.props.icon,this._callInstall)}`}};Ce([(0,Q.property)({type:Object}),Re("design:type",Object)],Me.prototype,"props",void 0),Ce([(0,Q.property)({type:Object}),Re("design:type",Object)],Me.prototype,"install",void 0),Ce([(0,Q.property)(),Re("design:type",Object)],Me.prototype,"hideDialog",void 0),Ce([(0,Q.property)(),Re("design:type",Object)],Me.prototype,"disableClose",void 0),Me=Ce([(0,Q.customElement)("pwa-bottom-sheet")],Me);const Te=Me,He=S.css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,"Segoe UI",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:"";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,"Segoe UI",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:"";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`,Oe=S.css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,"Segoe UI";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:"icon description" "welcome welcome" "how-to how-to" "gallery gallery" "button button";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"icon" "description" "welcome" "how-to" "gallery" "button";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;const Be=(e=>{var t={};return l.d(t,e),t})({classMap:()=>a.classMap}),Ue=(e,t,a,l,i,o,s,n,r,d,c,p,b)=>{const g=()=>({available:r,gallery:b}),h=!i&&n.screenshots&&n.screenshots.length;return S.html`
icon
${o?"":S.html``}
${location.hostname}
${t?S.html`
${t}
`:""} ${l?"":S.html`
${a||`${z("This site has app functionality.")} ${z("Install it on your device for extensive experience and easy access.")}`}
`} ${h?S.html``:""}
${h?S.html``:""}
${h?S.html``:""}
`},qe=(e,t,a,l,i,o,s,n,r,d,c,p,b,g,h)=>{const m=!i&&n.screenshots&&n.screenshots.length;return S.html``};var Fe=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},Ye=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Ze=class extends S.LitElement{constructor(){super(...arguments),this.manifestUrl="/manifest.json",this.icon="",this.name="",this.description="",this.installDescription="",this.disableDescription=!1,this.disableScreenshots=!1,this.disableScreenshotsApple=!1,this.disableScreenshotsChrome=!1,this.manualApple=!1,this.manualChrome=!1,this.disableChrome=!1,this.disableClose=!1,this.useLocalStorage=!1,this.externalPromptEvent=null,this.platforms=[],this.userChoiceResult="",this.isDialogHidden=Ee.getStorageFlag("pwa-hide-install"),this.isInstallAvailable=!1,this.isAppleMobilePlatform=!1,this.isAppleDesktopPlatform=!1,this.isUnderStandaloneMode=!1,this.isRelatedAppsInstalled=!1,this._manifest=new Ae,this._howToRequested=!1,this._galleryRequested=!1,this._install={handleEvent:()=>{window.defferedPromptEvent&&(this.hideDialog(),window.defferedPromptEvent.prompt(),window.defferedPromptEvent.userChoice.then((e=>{this.userChoiceResult=e.outcome,Ee.eventUserChoiceResult(this,this.userChoiceResult)})).catch((e=>{Ee.eventInstalledFail(this)})),window.defferedPromptEvent=null)},passive:!0},this.install=()=>{this.isAppleMobilePlatform||this.isAppleDesktopPlatform?(this._howToRequested=!0,this.requestUpdate()):this._install.handleEvent()},this._hideDialog={handleEvent:()=>{this.isDialogHidden=!0,Ee.setStorageFlag("pwa-hide-install",!0,this.useLocalStorage),this.requestUpdate()},passive:!0},this._hideDialogUser=()=>{Ee.eventUserChoiceResult(this,"dismissed"),this.userChoiceResult="dismissed",this.hideDialog()},this.hideDialog=()=>{this._hideDialog.handleEvent()},this.showDialog=(e=!1)=>{this.isDialogHidden=!1,e&&(this.isInstallAvailable=!0),Ee.setStorageFlag("pwa-hide-install",!1,this.useLocalStorage),this.requestUpdate()},this.getInstalledRelatedApps=async()=>await Ee.getInstalledRelatedApps(),this._howToForApple={handleEvent:()=>{this._howToRequested=!this._howToRequested,this._howToRequested&&this._galleryRequested&&(this._galleryRequested=!1),this.requestUpdate(),this._howToRequested&&Ee.eventInstallHowTo(this)},passive:!0},this._toggleGallery={handleEvent:()=>{this._galleryRequested=!this._galleryRequested,this._howToRequested&&this._galleryRequested&&(this._howToRequested=!1),this._galleryRequested&&Ee.eventGallery(this),this.requestUpdate()},passive:!0},this._init=async()=>{if(window.defferedPromptEvent=null,this._checkInstalled(),!this.disableChrome){const e=e=>{window.defferedPromptEvent=e,e.preventDefault(),this.platforms=e.platforms,this.isRelatedAppsInstalled||this.isUnderStandaloneMode?this.isInstallAvailable=!1:(this.isInstallAvailable=!0,Ee.eventInstallAvailable(this)),"accepted"===this.userChoiceResult&&(this.isDialogHidden=!0,Ee.eventInstalledSuccess(this)),this.requestUpdate()};null!=this.externalPromptEvent?setTimeout((()=>e(this.externalPromptEvent)),300):window.addEventListener("beforeinstallprompt",e)}window.addEventListener("appinstalled",(e=>{window.defferedPromptEvent=null,this.isInstallAvailable=!1,this.requestUpdate(),Ee.eventInstalledSuccess(this)}));try{const e=await fetch(this.manifestUrl),t=await e.json();if(!e.ok||!t||!Object.keys(t))throw Error("Manifest not found");Ee.normalizeManifestAssetUrls(t,this.manifestUrl),this.icon=this.icon||t.icons?.length?t.icons[0].src:"",this.name=this.name||t.short_name||t.name||"",this.description=this.description||t.description||"",this._manifest=t}catch(e){this.icon=this.icon||this._manifest.icons?.[0].src||"",this.name=this.name||this._manifest.short_name||"",this.description=this.description||this._manifest.description||""}},this._requestUpdate=()=>{this.requestUpdate()}}static get styles(){return[He,Oe]}async _checkInstalled(){this.isUnderStandaloneMode=Ee.isStandalone(),this.isRelatedAppsInstalled=await Ee.isRelatedAppsInstalled(),this.isAppleMobilePlatform=Ee.isAppleMobile(),this.isAppleDesktopPlatform=Ee.isAppleDesktop(),this.isAppleMobilePlatform||this.isAppleDesktopPlatform?this.isUnderStandaloneMode||(this.manualApple&&this.hideDialog(),setTimeout((()=>{this.isInstallAvailable=!0,this.requestUpdate(),Ee.eventInstallAvailable(this)}),1e3)):this.manualChrome&&this.hideDialog()}connectedCallback(){(e=>{"nb"===e.slice(0,2)&&(e="no");switch(e){case"zh":case"zh-TW":e="zh-CN"}try{ye.get(e)?ke(e):ke(e.slice(0,2))}catch{}})(navigator.language),this._init(),Le.finalized,Te.finalized,super.connectedCallback()}willUpdate(e){this.externalPromptEvent&&e.has("externalPromptEvent")&&"object"==typeof this.externalPromptEvent&&this._init()}render(){return this.isAppleMobilePlatform||this.isAppleDesktopPlatform?S.html`${qe(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsApple,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._howToForApple,this.isAppleDesktopPlatform,this._howToRequested,this._toggleGallery,this._galleryRequested)}`:S.html`${Ue(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsChrome,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._install,this._toggleGallery,this._galleryRequested)}`}};Fe([(0,Q.property)({attribute:"manifest-url"}),Ye("design:type",Object)],Ze.prototype,"manifestUrl",void 0),Fe([(0,Q.property)(),Ye("design:type",Object)],Ze.prototype,"icon",void 0),Fe([(0,Q.property)(),Ye("design:type",Object)],Ze.prototype,"name",void 0),Fe([(0,Q.property)(),Ye("design:type",Object)],Ze.prototype,"description",void 0),Fe([(0,Q.property)({attribute:"install-description"}),Ye("design:type",Object)],Ze.prototype,"installDescription",void 0),Fe([(0,Q.property)({attribute:"disable-install-description",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"disableDescription",void 0),Fe([(0,Q.property)({attribute:"disable-screenshots",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"disableScreenshots",void 0),Fe([(0,Q.property)({attribute:"disable-screenshots-apple",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"disableScreenshotsApple",void 0),Fe([(0,Q.property)({attribute:"disable-screenshots-chrome",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"disableScreenshotsChrome",void 0),Fe([(0,Q.property)({attribute:"manual-apple",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"manualApple",void 0),Fe([(0,Q.property)({attribute:"manual-chrome",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"manualChrome",void 0),Fe([(0,Q.property)({attribute:"disable-chrome",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"disableChrome",void 0),Fe([(0,Q.property)({attribute:"disable-close",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"disableClose",void 0),Fe([(0,Q.property)({attribute:"use-local-storage",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"useLocalStorage",void 0),Fe([(0,Q.state)(),Ye("design:type",Object)],Ze.prototype,"externalPromptEvent",void 0),Ze=Fe([(e,t)=>(e.addInitializer($),e),(0,Q.customElement)("pwa-install")],Ze);var Ve=i.w;export{Ve as PWAInstallElement}; //# sourceMappingURL=pwa-install.es.js.map \ No newline at end of file diff --git a/dist/pwa-install.es.js.map b/dist/pwa-install.es.js.map index 5955410..3064e2c 100644 --- a/dist/pwa-install.es.js.map +++ b/dist/pwa-install.es.js.map @@ -1 +1 @@ -{"version":3,"file":"pwa-install.es.js","mappings":"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","sources":["webpack://@khmyznikov/pwa-install/webpack/bootstrap","webpack://@khmyznikov/pwa-install/webpack/runtime/define property getters","webpack://@khmyznikov/pwa-install/webpack/runtime/hasOwnProperty shorthand","webpack://@khmyznikov/pwa-install/webpack/runtime/make namespace object","webpack://@khmyznikov/pwa-install/external module \"lit\"","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/str-tag.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/default-msg.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/init/install.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/locale-status-event.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/localized-controller.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/deferred.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/fnv1a64.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/id-generation.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/runtime-msg.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/init/runtime.js","webpack://@khmyznikov/pwa-install/external module \"lit/decorators.js\"","webpack://@khmyznikov/pwa-install/./src/localization/locale-codes.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ru.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/tr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/de.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/es.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/nl.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/el.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/fr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/sr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/pl.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/uk.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/zh-HK.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/zh-CN.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/it.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/cs.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/no.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/pt.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ja.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/sv.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ko.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/km.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/da.ts","webpack://@khmyznikov/pwa-install/./src/localization/index.ts","webpack://@khmyznikov/pwa-install/./src/types/types.ts","webpack://@khmyznikov/pwa-install/./src/gallery/styles-gallery.scss","webpack://@khmyznikov/pwa-install/./src/utils.ts","webpack://@khmyznikov/pwa-install/./src/gallery/template-gallery.ts","webpack://@khmyznikov/pwa-install/./src/gallery/index.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/template-bottom-sheet.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/index.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/styles.scss","webpack://@khmyznikov/pwa-install/./src/templates/apple/styles-apple.scss","webpack://@khmyznikov/pwa-install/external module \"lit/directives/class-map.js\"","webpack://@khmyznikov/pwa-install/./src/templates/chrome/template.ts","webpack://@khmyznikov/pwa-install/./src/templates/apple/template-apple.ts","webpack://@khmyznikov/pwa-install/./src/index.ts","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/localized-decorator.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"LitElement\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.LitElement), [\"css\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.css), [\"html\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.html) });","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Tag that allows expressions to be used in localized non-HTML template\n * strings.\n *\n * Example: msg(str`Hello ${this.user}!`);\n *\n * The Lit html tag can also be used for this purpose, but HTML will need to be\n * escaped, and there is a small overhead for HTML parsing.\n *\n * Untagged template strings with expressions aren't supported by lit-localize\n * because they don't allow for values to be captured at runtime.\n */\nconst _str = (strings, ...values) => ({\n strTag: true,\n strings,\n values,\n});\nexport const str = _str;\nexport const isStrTagged = (val) => typeof val !== 'string' && 'strTag' in val;\n/**\n * Render the result of a `str` tagged template to a string. Note we don't need\n * to do this for Lit templates, since Lit itself handles rendering.\n */\nexport const joinStringsAndValues = (strings, values, valueOrder) => {\n let concat = strings[0];\n for (let i = 1; i < strings.length; i++) {\n concat += values[valueOrder ? valueOrder[i - 1] : i - 1];\n concat += strings[i];\n }\n return concat;\n};\n//# sourceMappingURL=str-tag.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { isStrTagged, joinStringsAndValues } from './str-tag.js';\n/**\n * Default identity msg implementation. Simply returns the input template with\n * no awareness of translations. If the template is str-tagged, returns it in\n * string form.\n */\nexport const defaultMsg = ((template) => isStrTagged(template)\n ? joinStringsAndValues(template.strings, template.values)\n : template);\n//# sourceMappingURL=default-msg.js.map","import { defaultMsg } from '../internal/default-msg.js';\n/**\n * Make a string or lit-html template localizable.\n *\n * @param template A string, a lit-html template, or a function that returns\n * either a string or lit-html template.\n * @param options Optional configuration object with the following properties:\n * - id: Optional project-wide unique identifier for this template. If\n * omitted, an id will be automatically generated from the template strings.\n * - desc: Optional description\n */\nexport let msg = defaultMsg;\nlet installed = false;\n/**\n * Internal only. Do not use this function.\n *\n * Installs an implementation of the msg function to replace the default\n * identity function. Throws if called more than once.\n *\n * @internal\n */\nexport function _installMsgImplementation(impl) {\n if (installed) {\n throw new Error('lit-localize can only be configured once');\n }\n msg = impl;\n installed = true;\n}\n//# sourceMappingURL=install.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Name of the event dispatched to `window` whenever a locale change starts,\n * finishes successfully, or fails. Only relevant to runtime mode.\n *\n * The `detail` of this event is an object with a `status` string that can be:\n * \"loading\", \"ready\", or \"error\", along with the relevant locale code, and\n * error message if applicable.\n *\n * You can listen for this event to know when your application should be\n * re-rendered following a locale change. See also the Localized mixin, which\n * automatically re-renders LitElement classes using this event.\n */\nexport const LOCALE_STATUS_EVENT = 'lit-localize-status';\n//# sourceMappingURL=locale-status-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { LOCALE_STATUS_EVENT } from './locale-status-event.js';\nclass LocalizeController {\n constructor(host) {\n this.__litLocalizeEventHandler = (event) => {\n if (event.detail.status === 'ready') {\n this.host.requestUpdate();\n }\n };\n this.host = host;\n }\n hostConnected() {\n window.addEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n hostDisconnected() {\n window.removeEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n}\n/**\n * Re-render the given LitElement whenever a new active locale has loaded.\n *\n * See also {@link localized} for the same functionality as a decorator.\n *\n * When using lit-localize in transform mode, calls to this function are\n * replaced with undefined.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {msg, updateWhenLocaleChanges} from '@lit/localize';\n *\n * class MyElement extends LitElement {\n * constructor() {\n * super();\n * updateWhenLocaleChanges(this);\n * }\n *\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nconst _updateWhenLocaleChanges = (host) => host.addController(new LocalizeController(host));\nexport const updateWhenLocaleChanges = _updateWhenLocaleChanges;\n//# sourceMappingURL=localized-controller.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport class Deferred {\n constructor() {\n this.settled = false;\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n resolve(value) {\n this.settled = true;\n this._resolve(value);\n }\n reject(error) {\n this.settled = true;\n this._reject(error);\n }\n}\n//# sourceMappingURL=deferred.js.map","/**\n * @license\n * Copyright 2014 Travis Webb\n * SPDX-License-Identifier: MIT\n */\n// This module is derived from the file:\n// https://github.com/tjwebb/fnv-plus/blob/1e2ce68a07cb7dd4c3c85364f3d8d96c95919474/index.js#L309\n//\n// Changes:\n// - Only the _hash64_1a_fast function is included.\n// - Removed loop unrolling.\n// - Converted to TypeScript ES module.\n// - var -> let/const\n//\n// TODO(aomarks) Upstream improvements to https://github.com/tjwebb/fnv-plus/.\nconst hl = [];\nfor (let i = 0; i < 256; i++) {\n hl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n}\n/**\n * Perform a FNV-1A 64-bit hash of the given string (as UTF-16 code units), and\n * return a hexadecimal digest (left zero padded to 16 characters).\n *\n * @see {@link http://tools.ietf.org/html/draft-eastlake-fnv-06}\n */\nexport function fnv1a64(str) {\n let t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n for (let i = 0; i < str.length; i++) {\n v0 ^= str.charCodeAt(i);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = (t3 + (t2 >>> 16)) & 65535;\n v2 = t2 & 65535;\n }\n return (hl[v3 >> 8] +\n hl[v3 & 255] +\n hl[v2 >> 8] +\n hl[v2 & 255] +\n hl[v1 >> 8] +\n hl[v1 & 255] +\n hl[v0 >> 8] +\n hl[v0 & 255]);\n}\n//# sourceMappingURL=fnv1a64.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { fnv1a64 } from './fnv1a64.js';\n/**\n * Delimiter used between each template string component before hashing. Used to\n * prevent e.g. \"foobar\" and \"foo${baz}bar\" from sharing a hash.\n *\n * This is the \"record separator\" ASCII character.\n */\nexport const HASH_DELIMITER = '\\x1e';\n/**\n * Id prefix on html-tagged templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst HTML_PREFIX = 'h';\n/**\n * Id prefix on plain string templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst STRING_PREFIX = 's';\n/**\n * Generate a unique ID for a lit-localize message.\n *\n * Example:\n * Template: html`Hello ${who}!`\n * Params: [\"Hello \", \"!\"], true\n * Output: h82ccc38d4d46eaa9\n *\n * The ID is constructed as:\n *\n * [0] Kind of template: [h]tml or [s]tring.\n * [1,16] 64-bit FNV-1a hash hex digest of the template strings, as UTF-16\n * code points, delineated by an ASCII \"record separator\" character.\n *\n * We choose FNV-1a because:\n *\n * 1. It's pretty fast (e.g. much faster than SHA-1).\n * 2. It's pretty small (0.25 KiB minified + brotli).\n * 3. We don't require cryptographic security, and 64 bits should give\n * sufficient collision resistance for any one application. Worst\n * case, we will always detect collisions during analysis.\n * 4. We can't use Web Crypto API (e.g. SHA-1), because it's asynchronous.\n * 5. It's a well known non-cryptographic hash with implementations in many\n * languages.\n * 6. There was an existing JavaScript implementation that doesn't require\n * BigInt, for IE11 compatibility.\n */\nexport function generateMsgId(strings, isHtmlTagged) {\n return ((isHtmlTagged ? HTML_PREFIX : STRING_PREFIX) +\n fnv1a64(typeof strings === 'string' ? strings : strings.join(HASH_DELIMITER)));\n}\n//# sourceMappingURL=id-generation.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { defaultMsg } from './default-msg.js';\nimport { joinStringsAndValues } from './str-tag.js';\nimport { generateMsgId } from './id-generation.js';\nconst expressionOrders = new WeakMap();\nconst hashCache = new Map();\nexport function runtimeMsg(templates, template, options) {\n if (templates) {\n const id = options?.id ?? generateId(template);\n const localized = templates[id];\n if (localized) {\n if (typeof localized === 'string') {\n // E.g. \"Hello World!\"\n return localized;\n }\n else if ('strTag' in localized) {\n // E.g. str`Hello ${name}!`\n //\n // Localized templates have ${number} in place of real template\n // expressions. They can't have real template values, because the\n // variable scope would be wrong. The number tells us the index of the\n // source value to substitute in its place, because expressions can be\n // moved to a different position during translation.\n return joinStringsAndValues(localized.strings, \n // Cast `template` because its type wasn't automatically narrowed (but\n // we know it must be the same type as `localized`).\n template.values, localized.values);\n }\n else {\n // E.g. html`Hello ${name}!`\n //\n // We have to keep our own mapping of expression ordering because we do\n // an in-place update of `values`, and otherwise we'd lose ordering for\n // subsequent renders.\n let order = expressionOrders.get(localized);\n if (order === undefined) {\n order = localized.values;\n expressionOrders.set(localized, order);\n }\n return {\n ...localized,\n values: order.map((i) => template.values[i]),\n };\n }\n }\n }\n return defaultMsg(template);\n}\nfunction generateId(template) {\n const strings = typeof template === 'string' ? template : template.strings;\n let id = hashCache.get(strings);\n if (id === undefined) {\n id = generateMsgId(strings, typeof template !== 'string' && !('strTag' in template));\n hashCache.set(strings, id);\n }\n return id;\n}\n//# sourceMappingURL=runtime-msg.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { Deferred } from '../internal/deferred.js';\nimport { LOCALE_STATUS_EVENT } from '../internal/locale-status-event.js';\nimport { runtimeMsg } from '../internal/runtime-msg.js';\nimport { _installMsgImplementation } from './install.js';\n/**\n * Dispatch a \"lit-localize-status\" event to `window` with the given detail.\n */\nfunction dispatchStatusEvent(detail) {\n window.dispatchEvent(new CustomEvent(LOCALE_STATUS_EVENT, { detail }));\n}\nlet activeLocale = '';\nlet loadingLocale;\nlet sourceLocale;\nlet validLocales;\nlet loadLocale;\nlet templates;\nlet loading = new Deferred();\n// The loading promise must be initially resolved, because that's what we should\n// return if the user immediately calls setLocale(sourceLocale).\nloading.resolve();\nlet requestId = 0;\n/**\n * Set configuration parameters for lit-localize when in runtime mode. Returns\n * an object with functions:\n *\n * - `getLocale`: Return the active locale code.\n * - `setLocale`: Set the active locale code.\n *\n * Throws if called more than once.\n */\nexport const configureLocalization = (config) => {\n _installMsgImplementation(((template, options) => runtimeMsg(templates, template, options)));\n activeLocale = sourceLocale = config.sourceLocale;\n validLocales = new Set(config.targetLocales);\n validLocales.add(config.sourceLocale);\n loadLocale = config.loadLocale;\n return { getLocale, setLocale };\n};\n/**\n * Return the active locale code.\n */\nconst getLocale = () => {\n return activeLocale;\n};\n/**\n * Set the active locale code, and begin loading templates for that locale using\n * the `loadLocale` function that was passed to `configureLocalization`. Returns\n * a promise that resolves when the next locale is ready to be rendered.\n *\n * Note that if a second call to `setLocale` is made while the first requested\n * locale is still loading, then the second call takes precedence, and the\n * promise returned from the first call will resolve when second locale is\n * ready. If you need to know whether a particular locale was loaded, check\n * `getLocale` after the promise resolves.\n *\n * Throws if the given locale is not contained by the configured `sourceLocale`\n * or `targetLocales`.\n */\nconst setLocale = (newLocale) => {\n if (newLocale === (loadingLocale ?? activeLocale)) {\n return loading.promise;\n }\n if (!validLocales || !loadLocale) {\n throw new Error('Internal error');\n }\n if (!validLocales.has(newLocale)) {\n throw new Error('Invalid locale code');\n }\n requestId++;\n const thisRequestId = requestId;\n loadingLocale = newLocale;\n if (loading.settled) {\n loading = new Deferred();\n }\n dispatchStatusEvent({ status: 'loading', loadingLocale: newLocale });\n const localePromise = newLocale === sourceLocale\n ? // We could switch to the source locale synchronously, but we prefer to\n // queue it on a microtask so that switching locales is consistently\n // asynchronous.\n Promise.resolve({ templates: undefined })\n : loadLocale(newLocale);\n localePromise.then((mod) => {\n if (requestId === thisRequestId) {\n activeLocale = newLocale;\n loadingLocale = undefined;\n templates = mod.templates;\n dispatchStatusEvent({ status: 'ready', readyLocale: newLocale });\n loading.resolve();\n }\n // Else another locale was requested in the meantime. Don't resolve or\n // reject, because the newer load call is going to use the same promise.\n // Note the user can call getLocale() after the promise resolves if they\n // need to check if the locale is still the one they expected to load.\n }, (err) => {\n if (requestId === thisRequestId) {\n dispatchStatusEvent({\n status: 'error',\n errorLocale: newLocale,\n errorMessage: err.toString(),\n });\n loading.reject(err);\n }\n });\n return loading.promise;\n};\n//# sourceMappingURL=runtime.js.map","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"customElement\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.customElement), [\"property\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.property), [\"state\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.state) });","// Do not modify this file by hand!\n// Re-generate this file by running lit-localize.\n\n/**\n * The locale code that templates in this source code are written in.\n */\nexport const sourceLocale = `en`;\n\n/**\n * The other locale codes that this application is localized into. Sorted\n * lexicographically.\n */\nexport const targetLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `es`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n\n/**\n * All valid project locale codes. Sorted lexicographically.\n */\nexport const allLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `en`,\n `es`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.`,\n's1b9047d53d9f9d22': `2) Нажать \"Поделиться\"`,\n's37a9e8aec5713460': `Подробнее`,\n's5c6aad7a7e4a1437': `3) Нажать \"На экран «Домой»\"`,\n's6196153c4b0c1ea0': `Установить`,\n's922329d6f6213590': `Добавить в Dock`,\n'sa5ef80b4bb9b39f8': `Свернуть`,\n'sa7551383d1897fcc': `2) Нажмите \"Добавить в Dock\"`,\n'sba52286c21552a4e': `Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.`,\n'sc79fd7641eb9a975': `Спрятать Инструкцию`,\n'scdaf4bbff76674c8': `На экран «Домой»`,\n'sdfe23506a3b0cdc8': `1) Открыть в Safari браузере`,\n'se740f75b95a51807': `Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.`,\n'sfea652f6580ff086': `Этот веб-сайт имеет функционал приложения.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.`,\n's1b9047d53d9f9d22': `2) Gezinme çubuğunda Paylaş'a basın`,\n's37a9e8aec5713460': `Daha Fazla`,\n's5c6aad7a7e4a1437': `3) Ana Ekrana Ekle'ye basın`,\n's6196153c4b0c1ea0': `Yükle`,\n's922329d6f6213590': `Dock’a Ekle`,\n'sa5ef80b4bb9b39f8': `Küçült`,\n'sa7551383d1897fcc': `2) Dock’a ekleye basın`,\n'sba52286c21552a4e': `Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.`,\n'sc79fd7641eb9a975': `Talimatları gizle`,\n'scdaf4bbff76674c8': `Ana Ekrana Ekle`,\n'sdfe23506a3b0cdc8': `1) Safari tarayıcısında açın`,\n'se740f75b95a51807': `Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.`,\n'sfea652f6580ff086': `Bu site uygulama işlevselliğine sahiptir.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n's1b9047d53d9f9d22': `2) Drücken Sie auf Teilen in der Navigationsleiste`,\n's37a9e8aec5713460': `Mehr`,\n's5c6aad7a7e4a1437': `3) Drücken Sie Hinzufügen zum Startbildschirm`,\n's6196153c4b0c1ea0': `Installieren`,\n's922329d6f6213590': `Zum Dock hinzufügen`,\n'sa5ef80b4bb9b39f8': `Weniger`,\n'sa7551383d1897fcc': `2) Drücken Sie auf Zum Dock hinzufügen`,\n'sba52286c21552a4e': `Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.`,\n'sc79fd7641eb9a975': `Anleitung ausblenden`,\n'scdaf4bbff76674c8': `Hinzufügen zum Startbildschirm`,\n'sdfe23506a3b0cdc8': `1) In Safari-Browser öffnen`,\n'se740f75b95a51807': `Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n'sfea652f6580ff086': `Diese Website verfügt über App-Funktionalität.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.`,\n's1b9047d53d9f9d22': `2) Presionar Compartir en la barra de direcciones`,\n's37a9e8aec5713460': `Más`,\n's5c6aad7a7e4a1437': `3) Presionar Añadir a pantalla de inicio`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Añadir al Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Presionar Añadir al Dock`,\n'sba52286c21552a4e': `Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.`,\n'sc79fd7641eb9a975': `Esconder instrucciones`,\n'scdaf4bbff76674c8': `Añadir a pantalla de inicio`,\n'sdfe23506a3b0cdc8': `1) Abrir en el navegador web Safari`,\n'se740f75b95a51807': `Añádelo a tu Dock para una experiencia amplia y acceso fácil.`,\n'sfea652f6580ff086': `Este sitio tiene funcionalidad de aplicación.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.`,\n's1b9047d53d9f9d22': `2) Druk op delen in de navigatiebalk`,\n's37a9e8aec5713460': `Meer`,\n's5c6aad7a7e4a1437': `3) Druk op Toevoegen aan het startscherm`,\n's6196153c4b0c1ea0': `Installeren`,\n's922329d6f6213590': `Toevoegen aan Dock`,\n'sa5ef80b4bb9b39f8': `Minder`,\n'sa7551383d1897fcc': `2) Druk op Toevoegen aan Dock`,\n'sba52286c21552a4e': `Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.`,\n'sc79fd7641eb9a975': `Instructie verbergen`,\n'scdaf4bbff76674c8': `Toevoegen aan het startscherm`,\n'sdfe23506a3b0cdc8': `1) Open in Safari-browser`,\n'se740f75b95a51807': `Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.`,\n'sfea652f6580ff086': `Deze site heeft app-functionaliteit.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n's1b9047d53d9f9d22': `2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης`,\n's37a9e8aec5713460': `Περισσότερα`,\n's5c6aad7a7e4a1437': `3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας`,\n's6196153c4b0c1ea0': `Εγκατάσταση`,\n's922329d6f6213590': `Προσθήκη στην Πρόσβαση`,\n'sa5ef80b4bb9b39f8': `Λιγότερα`,\n'sa7551383d1897fcc': `2) Πατήστε Προσθήκη στην Πρόσβαση`,\n'sba52286c21552a4e': `Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sc79fd7641eb9a975': `Απόκρυψη Οδηγιών`,\n'scdaf4bbff76674c8': `Προσθήκη στην Οθόνη Αφετηρίας`,\n'sdfe23506a3b0cdc8': `1) Ανοίξτε τον περιηγητή Safari`,\n'se740f75b95a51807': `Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sfea652f6580ff086': `Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.`,\n's1b9047d53d9f9d22': `2) Appuyez sur Partager dans la barre de navigation`,\n's37a9e8aec5713460': `Plus`,\n's5c6aad7a7e4a1437': `3) Appuyez sur Ajouter à l'écran d'accueil`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Ajouter au Dock`,\n'sa5ef80b4bb9b39f8': `Moins`,\n'sa7551383d1897fcc': `2) Appuyez sur Ajouter au Dock`,\n'sba52286c21552a4e': `Installez-le sur votre appareil pour une expérience complète et un accès facile.`,\n'sc79fd7641eb9a975': `Masquer les instructions`,\n'scdaf4bbff76674c8': `Ajouter à l'écran d'accueil`,\n'sdfe23506a3b0cdc8': `1) Ouvrir dans le navigateur Safari`,\n'se740f75b95a51807': `Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.`,\n'sfea652f6580ff086': `Ce site possède des fonctionnalités d'application.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Додајте га на Home Screen за широке могућности и лак приступ.`,\n's1b9047d53d9f9d22': `2) Притисните Share у навигационој траци`,\n's37a9e8aec5713460': `Више`,\n's5c6aad7a7e4a1437': `3) Притисните Add to Home Screen`,\n's6196153c4b0c1ea0': `Инсталирај`,\n'sa5ef80b4bb9b39f8': `Мање`,\n'sa7551383d1897fcc': `3) Притисните Add to Dock`,\n'sba52286c21552a4e': `Инсталирајте га на вашем уређају за широке могућности и лак приступ.`,\n'sc79fd7641eb9a975': `Сакриј упутство`,\n'sdfe23506a3b0cdc8': `1) Отворите у Safari прегледачу`,\n'se740f75b95a51807': `Додајте га у вашу Dock за широке могућности и лак приступ.`,\n'sfea652f6580ff086': `Овај сајт има функционалност апликације.`,\n's922329d6f6213590': `Add to Dock`,\n'scdaf4bbff76674c8': `Add to Home Screen`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n's1b9047d53d9f9d22': `2) Wybierz \"Udostępnij\"`,\n's37a9e8aec5713460': `Więcej`,\n's5c6aad7a7e4a1437': `3) Wybierz \"Dodaj do Ekranu Głównego\"`,\n's6196153c4b0c1ea0': `Zainstaluj`,\n's922329d6f6213590': `Dodaj do Docka`,\n'sa5ef80b4bb9b39f8': `Mniej`,\n'sa7551383d1897fcc': `2) Wybierz \"Dodaj do Docka\"`,\n'sba52286c21552a4e': `Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sc79fd7641eb9a975': `Ukryj instrukcję`,\n'scdaf4bbff76674c8': `Dodaj do Ekranu Głównego`,\n'sdfe23506a3b0cdc8': `1) Otwórz przeglądarkę Safari`,\n'se740f75b95a51807': `Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sfea652f6580ff086': `Ta strona posiada funkcje aplikacji.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Додайте на Домашній екран для зручного доступу та ширших можливостей.`,\n's1b9047d53d9f9d22': `2) Натиснути «Поділитися»`,\n's37a9e8aec5713460': `Детальніше`,\n's5c6aad7a7e4a1437': `3) Натиснути «На Початковий екран»`,\n's6196153c4b0c1ea0': `Встановити`,\n's922329d6f6213590': `Додати на Dock`,\n'sa5ef80b4bb9b39f8': `Згорнути`,\n'sa7551383d1897fcc': `2) Натиснути «Додати на Dock»`,\n'sba52286c21552a4e': `Встановіть на ваш пристрій для зручного доступу та ширших можливостей.`,\n'sc79fd7641eb9a975': `Сховати Інструкцію`,\n'scdaf4bbff76674c8': `На Початковий экран`,\n'sdfe23506a3b0cdc8': `1) Відкрити в Safari браузері`,\n'se740f75b95a51807': `Додайте на панель Dock для зручного доступу та ширших можливостей.`,\n'sfea652f6580ff086': `Цей сайт має функції додатку.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。`,\n's1b9047d53d9f9d22': `2) 點擊列表上的分享按鈕`,\n's37a9e8aec5713460': `詳細資訊`,\n's5c6aad7a7e4a1437': `3) 點擊加入主畫面`,\n's6196153c4b0c1ea0': `安裝`,\n's922329d6f6213590': `添加到Dock欄`,\n'sa5ef80b4bb9b39f8': `簡短資訊`,\n'sa7551383d1897fcc': `2) 點選添加到Dock欄`,\n'sba52286c21552a4e': `在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。`,\n'sc79fd7641eb9a975': `隱藏安裝流程`,\n'scdaf4bbff76674c8': `將App加入主畫面`,\n'sdfe23506a3b0cdc8': `1) 在Safari上瀏覽此網頁`,\n'se740f75b95a51807': `將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。`,\n'sfea652f6580ff086': `此網站具有應用程式功能。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `将其添加到主屏幕,以享受更丰富的体验并便于访问。`,\n's1b9047d53d9f9d22': `2) 点击导航栏中的“分享”按钮`,\n's37a9e8aec5713460': `更多`,\n's5c6aad7a7e4a1437': `3) 点击“添加到主屏幕”`,\n's6196153c4b0c1ea0': `安装`,\n's922329d6f6213590': `添加到程序坞`,\n'sa5ef80b4bb9b39f8': `收起`,\n'sa7551383d1897fcc': `2) 点击“添加到程序坞”`,\n'sba52286c21552a4e': `在您的设备上安装,以享受更丰富的体验并便于访问。`,\n'sc79fd7641eb9a975': `隐藏安装步骤`,\n'scdaf4bbff76674c8': `添加到主屏幕`,\n'sdfe23506a3b0cdc8': `1) 在 Safari 浏览器中打开此页面`,\n'se740f75b95a51807': `将其添加到您的程序坞,以享受更全面的体验并便于访问。`,\n'sfea652f6580ff086': `此网站具备 App 功能特性。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.`,\n's1b9047d53d9f9d22': `2) Premi Condividi nella barra di navigazione`,\n's37a9e8aec5713460': `Più`,\n's5c6aad7a7e4a1437': `3) Premi Aggiungi alla schermata principale`,\n's6196153c4b0c1ea0': `Installa`,\n's922329d6f6213590': `Aggiungi al Dock`,\n'sa5ef80b4bb9b39f8': `Meno`,\n'sa7551383d1897fcc': `2) Premi Aggiungi al Dock`,\n'sba52286c21552a4e': `Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.`,\n'sc79fd7641eb9a975': `Nascondi istruzioni`,\n'scdaf4bbff76674c8': `Aggiungi alla schermata principale`,\n'sdfe23506a3b0cdc8': `1) Apri nel browser Safari`,\n'se740f75b95a51807': `Aggiungilo al Dock per un'esperienza più completa e un accesso facile.`,\n'sfea652f6580ff086': `Questo sito ha funzionalità di app.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Přidejte jej na plochu pro rozšířené využití a snadný přístup.`,\n's1b9047d53d9f9d22': `2) Stiskněte tlačítko Sdílet na navigačním panelu`,\n's37a9e8aec5713460': `Vice`,\n's5c6aad7a7e4a1437': `3) Stiskněte tlačítko Přidat na plochu`,\n's6196153c4b0c1ea0': `Nainstalovat`,\n's922329d6f6213590': `Přidat do Docku`,\n'sa5ef80b4bb9b39f8': `Méně`,\n'sa7551383d1897fcc': `2) Stiskněte Přidat do Docku`,\n'sba52286c21552a4e': `Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.`,\n'sc79fd7641eb9a975': `Skrýt instrukce`,\n'scdaf4bbff76674c8': `Přidat na plochu`,\n'sdfe23506a3b0cdc8': `1) Otevřete v prohlížeči Safari`,\n'se740f75b95a51807': `Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.`,\n'sfea652f6580ff086': `Tento web má funkce aplikace.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.`,\n's1b9047d53d9f9d22': `2) Trykk på Del-knappen i navigasjonslinjen`,\n's37a9e8aec5713460': `Mer`,\n's5c6aad7a7e4a1437': `3) Velg Legg til på Hjem-skjerm`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Legg til i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Velg Legg til i Dock`,\n'sba52286c21552a4e': `Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sc79fd7641eb9a975': `Skjul instruksjoner`,\n'scdaf4bbff76674c8': `Legg til på Hjem-skjerm`,\n'sdfe23506a3b0cdc8': `1) Åpne i Safari`,\n'se740f75b95a51807': `Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sfea652f6580ff086': `Denne siden har app-funksjonalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.`,\n's1b9047d53d9f9d22': `2) Pressione Compartilhar na barra de endereço`,\n's37a9e8aec5713460': `Mais`,\n's5c6aad7a7e4a1437': `3) Pressione Adicionar à Tela de Início`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Adicionar ao Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Pressione Adicionar ao Dock`,\n'sba52286c21552a4e': `Instale no dispositivo para uma melhor experiência e mais fácil acesso.`,\n'sc79fd7641eb9a975': `Ocultar Instruções`,\n'scdaf4bbff76674c8': `Adicionar à Tela de Início`,\n'sdfe23506a3b0cdc8': `1) Abra no navegador Safari`,\n'se740f75b95a51807': `Adicione ao Dock para uma melhor experiência e mais fácil acesso.`,\n'sfea652f6580ff086': `Este site possui funcionalidade de aplicativo.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。`,\n's1b9047d53d9f9d22': `2) ナビゲーションバーで共有を押す`,\n's37a9e8aec5713460': `展開`,\n's5c6aad7a7e4a1437': `3) 「ホーム画面に追加」を押す`,\n's6196153c4b0c1ea0': `インストール`,\n's922329d6f6213590': `Dockに追加`,\n'sa5ef80b4bb9b39f8': `折りたたむ`,\n'sa7551383d1897fcc': `2) 「Dockに追加」を押す`,\n'sba52286c21552a4e': `デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。`,\n'sc79fd7641eb9a975': `説明を非表示`,\n'scdaf4bbff76674c8': `ホーム画面に追加`,\n'sdfe23506a3b0cdc8': `1) Safariで開く`,\n'se740f75b95a51807': `ドックに追加して、幅広い体験と簡単なアクセスを実現してください。`,\n'sfea652f6580ff086': `このサイトはアプリ機能があります。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.`,\n's1b9047d53d9f9d22': `2) Tryck på Dela-knappen i verktygsfältet`,\n's37a9e8aec5713460': `Mer`,\n's5c6aad7a7e4a1437': `3) Välj Lägg till på hemskärmen`,\n's6196153c4b0c1ea0': `Installera`,\n's922329d6f6213590': `Lägg till i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Välj Lägg till i Dock`,\n'sba52286c21552a4e': `Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sc79fd7641eb9a975': `Göm instruktioner`,\n'scdaf4bbff76674c8': `Lägg till på hemskärmen`,\n'sdfe23506a3b0cdc8': `1) Öppna i Safari`,\n'se740f75b95a51807': `Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sfea652f6580ff086': `Denna webbsajt har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.`,\n's1b9047d53d9f9d22': `2) 내비게이션 바에서 공유 버튼 누르기`,\n's37a9e8aec5713460': `더보기`,\n's5c6aad7a7e4a1437': `3) 홈 화면에 추가 버튼 누르기`,\n's6196153c4b0c1ea0': `설치`,\n's922329d6f6213590': `Dock에 추가`,\n'sa5ef80b4bb9b39f8': `닫기`,\n'sa7551383d1897fcc': `2) Dock에 추가 버튼 누르기`,\n'sba52286c21552a4e': `더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.`,\n'sc79fd7641eb9a975': `안내 숨기기`,\n'scdaf4bbff76674c8': `홈 화면에 추가`,\n'sdfe23506a3b0cdc8': `1) Safari 브라우저에서 열기`,\n'se740f75b95a51807': `더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.`,\n'sfea652f6580ff086': `이 사이트는 앱 기능을 가지고 있습니다.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n's1b9047d53d9f9d22': `2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ`,\n's37a9e8aec5713460': `បង្ហាញបន្ថែម`,\n's5c6aad7a7e4a1437': `3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n's6196153c4b0c1ea0': `តំឡើង`,\n's922329d6f6213590': `បន្ថែមទៅកាន់ Dock`,\n'sa5ef80b4bb9b39f8': `បង្ហាញតិច`,\n'sa7551383d1897fcc': `2) ចុចលើ បន្ថែមទៅកាន់ Dock`,\n'sba52286c21552a4e': `តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sc79fd7641eb9a975': `បិទការណែនាំ`,\n'scdaf4bbff76674c8': `បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n'sdfe23506a3b0cdc8': `1) បើកនៅក្នុងកម្មវិធី Safari`,\n'se740f75b95a51807': `បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sfea652f6580ff086': `គេហទំព័រនេះមានមុខងារជាកម្មវិធី។`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.`,\n's1b9047d53d9f9d22': `2) Tryk på Del-knappen i navigationslinjen`,\n's37a9e8aec5713460': `Mere`,\n's5c6aad7a7e4a1437': `3) Vælg Tilføj til hjemmeskærm`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Tilføj til Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Vælg Tilføj til Dock`,\n'sba52286c21552a4e': `Installer den på din enhed for en bedre oplevelse og nem adgang.`,\n'sc79fd7641eb9a975': `Skjul instruktion`,\n'scdaf4bbff76674c8': `Tilføj til hjemmeskærm`,\n'sdfe23506a3b0cdc8': `1) Åbn i Safari-browseren`,\n'se740f75b95a51807': `Tilføj den til din Dock for en bedre oplevelse og nem adgang.`,\n'sfea652f6580ff086': `Denne side har app-funktionalitet.`,\n };\n ","import { configureLocalization } from '@lit/localize';\r\nimport {\r\n sourceLocale,\r\n targetLocales,\r\n} from './locale-codes';\r\n\r\nimport * as ru from './locales/ru';\r\nimport * as tr from './locales/tr';\r\nimport * as de from \"./locales/de\";\r\nimport * as es from \"./locales/es\";\r\nimport * as nl from \"./locales/nl\";\r\nimport * as el from \"./locales/el\";\r\nimport * as fr from \"./locales/fr\";\r\nimport * as sr from \"./locales/sr\";\r\nimport * as pl from \"./locales/pl\";\r\nimport * as uk from \"./locales/uk\";\r\nimport * as zhHK from \"./locales/zh-HK\";\r\nimport * as zhCN from \"./locales/zh-CN\";\r\nimport * as it from \"./locales/it\";\r\nimport * as cs from \"./locales/cs\";\r\nimport * as no from \"./locales/no\";\r\nimport * as pt from \"./locales/pt\";\r\nimport * as ja from \"./locales/ja\";\r\nimport * as sv from \"./locales/sv\";\r\nimport * as ko from \"./locales/ko\";\r\nimport * as km from \"./locales/km\";\r\nimport * as da from \"./locales/da\";\r\n\r\nconst localizedTemplates = new Map([\r\n ['ru', ru],\r\n ['tr', tr],\r\n ['de', de],\r\n ['es', es],\r\n ['nl', nl],\r\n ['el', el],\r\n ['fr', fr],\r\n ['sr', sr],\r\n ['pl', pl],\r\n ['uk', uk],\r\n ['zh-HK', zhHK],\r\n ['zh-CN', zhCN],\r\n ['it', it],\r\n ['cs', cs],\r\n ['no', no], // + nb\r\n ['pt', pt],\r\n ['ja', ja],\r\n ['sv', sv],\r\n ['ko', ko],\r\n ['km', km],\r\n ['da', da],\r\n])\r\n\r\nexport const { getLocale, setLocale } = configureLocalization({\r\n sourceLocale,\r\n targetLocales,\r\n // @ts-ignore\r\n loadLocale: async (lang: string) => localizedTemplates.get(lang)\r\n});\r\n\r\nexport const changeLocale = (lang: string) => {\r\n // Norwegian Bokmål is same as Norwegian\r\n switch (lang.slice(0, 2)) {\r\n case 'nb':\r\n lang = 'no';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // Fallback to simplified Chinese\r\n switch (lang) {\r\n case 'zh':\r\n case 'zh-TW':\r\n lang = 'zh-CN';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n try {\r\n if (localizedTemplates.get(lang))\r\n setLocale(lang);\r\n else\r\n setLocale(lang.slice(0, 2));\r\n }\r\n catch {\r\n console.warn(`pwa-install: translation error - unsupported locale: ${lang}`);\r\n }\r\n};\r\n","import { ImageResource } from 'web-app-manifest';\r\n\r\nexport interface IRelatedApp {\r\n id: string,\r\n platform: string,\r\n url: string\r\n}\r\n\r\nexport interface IWindow extends Window {\r\n defferedPromptEvent: BeforeInstallPromptEvent | null;\r\n}\r\n\r\ntype Booleanish = 'true' | 'false';\r\n\r\nexport interface PWAInstallAttributes {\r\n ['manual-apple']?: Booleanish;\r\n ['manual-chrome']?: Booleanish;\r\n ['disable-chrome']?: Booleanish;\r\n ['install-description']?: string;\r\n ['disable-install-description']?: Booleanish;\r\n ['manifest-url']?: string;\r\n name?: string;\r\n description?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ManifestScreenshot extends ImageResource {\r\n label?: string;\r\n platform?: string;\r\n form_factor?: \"wide\" | \"narrow\";\r\n}\r\n\r\nexport class Manifest {\r\n constructor() {\r\n this.icons = [{ src: '' }];\r\n this.screenshots = undefined;\r\n this.short_name = 'PWA';\r\n this.name = 'Progressive web application';\r\n this.description = 'Progressive web application';\r\n }\r\n short_name: string;\r\n icons: ImageResource[];\r\n screenshots?: ManifestScreenshot[];\r\n name: string;\r\n description: string;\r\n}\r\n","import {css} from 'lit'; export default css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`;\n ","import { WebAppManifest } from 'web-app-manifest';\r\nimport { IRelatedApp } from './types/types';\r\n\r\nconst _eventDispatcher = (_element: Element, name: string, message: string) => {\r\n const event = new CustomEvent(name, {\r\n detail: {\r\n message\r\n }\r\n });\r\n _element.dispatchEvent(event);\r\n}\r\nexport default class Utils {\r\n static isAppleMobile(): boolean {\r\n\t\tif (\r\n (\r\n ['iPhone', 'iPad', 'iPod'].includes(navigator.platform) ||\r\n (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2)\r\n )\r\n && ('serviceWorker' in navigator)\r\n )\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static isAppleDesktop(): boolean {\r\n // check if it's a mac\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n if (navigator.maxTouchPoints || !userAgent.match(/macintosh/))\r\n return false;\r\n // check safari version >= 17\r\n const version = /version\\/(\\d{2})\\./.exec(userAgent)\r\n if (!version || !version[1] || !(parseInt(version[1]) >= 17))\r\n return false;\r\n // hacky way to detect Sonoma\r\n const audioCheck = document.createElement('audio').canPlayType('audio/wav; codecs=\"1\"') ? true : false;\r\n const webGLCheck = new OffscreenCanvas(1, 1).getContext('webgl') ? true : false;\r\n\r\n return audioCheck && webGLCheck;\r\n }\r\n\r\n static deviceFormFactor(): 'narrow' | 'wide' {\r\n return window.matchMedia('(orientation: portrait)').matches? 'narrow' : 'wide';\r\n }\r\n \r\n static isStandalone() {\r\n\t\tif (window.matchMedia('(display-mode: standalone)').matches || ('standalone' in navigator && (navigator as any).standalone === true))\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static async getInstalledRelatedApps(): Promise {\r\n if ('getInstalledRelatedApps' in navigator)\r\n try{\r\n return await (navigator as any).getInstalledRelatedApps().then((relatedApps: IRelatedApp[]) => {\r\n return relatedApps;\r\n });\r\n } catch (e) {}\r\n \r\n return [];\r\n }\r\n \r\n static async isRelatedAppsInstalled(): Promise {\r\n const _relatedApps = await this.getInstalledRelatedApps();\r\n return _relatedApps.length? true : false;\r\n }\r\n\r\n static setStorageFlag(name: string, value:boolean, persistent: boolean = false) {\r\n try {\r\n if (persistent)\r\n localStorage.setItem(name, value.toString());\r\n else\r\n sessionStorage.setItem(name, value.toString());\r\n } catch (e) {}\r\n }\r\n static getStorageFlag(name: string): boolean {\r\n try {\r\n return sessionStorage.getItem(name) === 'true' || localStorage.getItem(name) === 'true';\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n static eventInstalledSuccess(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-success-event', 'App install success (Chromium/Android only)');\r\n }\r\n static eventInstalledFail(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-fail-event', 'App install failed (Chromium/Android only)');\r\n }\r\n static eventUserChoiceResult(_element: Element, message: string) {\r\n _eventDispatcher(_element, 'pwa-user-choice-result-event', message);\r\n }\r\n static eventInstallAvailable(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-available-event', 'App install available');\r\n }\r\n static eventInstallHowTo(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-how-to-event', 'App install instruction showed');\r\n }\r\n static eventGallery(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-gallery-event', 'App install gallery showed');\r\n }\r\n\r\n static normalizeManifestAssetUrls(manifest: WebAppManifest, manifestUrl: string) {\r\n const normalizedManifestUrl = new URL(manifestUrl, document.location.href);\r\n [...manifest.icons || [], ...manifest.screenshots || []].forEach(asset => {\r\n asset.src = new URL(asset.src, normalizedManifestUrl).href;\r\n })\r\n }\r\n}","import { html } from 'lit';\r\nimport Utils from '../utils';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nconst template = (screenshots: ManifestScreenshot[], theme: string, scrollToNextPage: any, scrollToPrevPage: any) => {\r\n\r\n return html`\r\n ${screenshots? html`\r\n
\r\n
\r\n
\r\n ${screenshots.filter(screenshot => !screenshot.form_factor || screenshot.form_factor === Utils.deviceFormFactor()).map(screenshot => html`${screenshot.label || \"\"}`)}\r\n
\r\n
\r\n \r\n ${theme != 'default'?\r\n html``\r\n :\r\n html``\r\n }\r\n \r\n \r\n ${theme != 'default'?\r\n html`\r\n \r\n `\r\n :\r\n html`\r\n \r\n \r\n \r\n `\r\n }\r\n \r\n
`\r\n : ''}`;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nimport styles from './styles-gallery.scss';\r\nimport template from './template-gallery';\r\n\r\n@customElement('pwa-gallery')\r\nexport default class PWAGalleryElement extends LitElement {\r\n\t@property({ type: Array }) screenshots: ManifestScreenshot[] = [];\r\n\t@property() theme: 'default' | 'apple_desktop' | 'apple_mobile' = 'default';\r\n\r\n\tstatic get styles() {\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tprivate getScrollElements = () => {\r\n\t\tconst gallery = this.shadowRoot?.querySelector('#paginated_gallery') as HTMLElement | null;\r\n\t\tif (!gallery) return;\r\n\t\t\r\n\t\tconst galleryScroller = gallery.querySelector('.gallery_scroller') as HTMLElement | null;\r\n\t\tif (!galleryScroller) return;\r\n\t\r\n\t\tconst galleryItems = Array.from(galleryScroller.querySelectorAll('img')) as HTMLElement[];\r\n\t\tif (galleryItems.length === 0) return;\r\n\t\r\n\t\treturn {\r\n\t\t\tscroller: galleryScroller,\r\n\t\t\titems: galleryItems\r\n\t\t};\r\n\t};\r\n\t\r\n\tprivate findCurrentItem = (scroller: HTMLElement, items: HTMLElement[]): HTMLElement | null => {\r\n\t\tconst scrollLeft = scroller.scrollLeft;\r\n\t \t// Find the item closest to the center of the viewport.\r\n\t\treturn items.find((item) => (item.offsetWidth + item.offsetLeft) >= scrollLeft + (item.offsetWidth / 2.5)) || null;\r\n\t};\r\n\t\r\n\tprivate scrollToPage = (direction: 'next' | 'prev') => {\r\n\t\tconst scrollData = this.getScrollElements();\r\n\t\tif (!scrollData) return;\r\n\t\r\n\t\tconst { scroller, items } = scrollData;\r\n\t\tconst currentItem = this.findCurrentItem(scroller, items);\r\n\t\tif (!currentItem) return;\r\n\t\r\n\t\tconst currentIndex = items.indexOf(currentItem);\r\n\t\tconst offset = direction === 'next' ? 1 : -1;\r\n\t\tconst targetIndex = currentIndex + offset;\r\n\t\t\r\n\t\tif (targetIndex >= 0 && targetIndex < items.length) {\r\n\t\t\titems[targetIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\r\n\t\t}\r\n\t};\r\n\t\r\n\tpublic scrollToNextPage = () => {\r\n\t\tthis.scrollToPage('next');\r\n\t};\r\n\t\r\n\tpublic scrollToPrevPage = () => {\r\n\t\tthis.scrollToPage('prev');\r\n\t};\r\n\r\n\r\n\tprivate _init = () => {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tconst _tools = this.getScrollElements();\r\n\t\tif (_tools)\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\t_tools.scroller.scrollTo({\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t300\r\n\t\t\t)\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\tthis._init();\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(\r\n this.screenshots,\r\n\t\t\tthis.theme,\r\n\t\t\tthis.scrollToNextPage,\r\n\t\t\tthis.scrollToPrevPage\r\n )}`;\r\n\t}\r\n}\r\n","import { html } from 'lit';\nimport { msg } from '@lit/localize';\n\nconst template = (name: string, description: string, icon: string, install: any) => {\n return html`\n
\n
\n
\n \"icon\"\n
\n
\n
\n \n
\n
${location.hostname}
\n
\n \n
\n ${description ? html `
${description}
`: ''}\n `;\n};\nexport default template;\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\n\r\n// import TouchDragListener from \"./touch-listener\";\r\n\r\ntype IProps = {\r\n name: string,\r\n description: string,\r\n icon: string\r\n}\r\n\r\nimport template from './template-bottom-sheet';\r\nimport Utils from '../../../utils';\r\n\r\n@customElement('pwa-bottom-sheet')\r\nexport default class PWABottomSheetElement extends LitElement {\r\n\t@property({type: Object}) props: IProps = {\r\n name: '',\r\n description: '',\r\n icon: ''\r\n };\r\n @property({type: Object}) install = {handleEvent: () => {}};\r\n\t@property() hideDialog = () => {};\r\n\t@property() disableClose = false;\r\n\r\n\tprivate _callInstall = () => {\r\n\t\tthis.install.handleEvent();\r\n\t}\r\n\r\n\tprivate _callHide = () => {\r\n\t\tthis.hideDialog();\r\n\t\tthis.setupAppearence();\r\n\t}\r\n\r\n\tprivate bindedElement: {\r\n\t\ttouchElement: HTMLElement,\r\n\t\tlistener: any }| null = null;\r\n\tprivate readonly _saveBodyStyle = document.body.style.overscrollBehaviorY;\r\n\tprivate dragMobileSheet = (element: HTMLElement | null | undefined, touchTargetElement: HTMLElement | undefined, infoElement: HTMLElement | undefined) => {\r\n\t\tif (!element || !touchTargetElement || !infoElement)\r\n\t\t\treturn null;\r\n\r\n\t\tlet dragOffset = 0;\r\n\t\tconst bounceOffset = 35;\r\n\t\tconst bottomSize = touchTargetElement.clientHeight + infoElement.clientHeight;\r\n\r\n\t\tconst getYCoord = (e: MouseEvent | TouchEvent): number => {\r\n\t\t\treturn (e as MouseEvent).clientY || ((e as TouchEvent).changedTouches && (e as TouchEvent).changedTouches.length? (e as TouchEvent).changedTouches[0].clientY : 0);\r\n\t\t}\r\n\r\n\t\tconst dragMouseDown = (e: MouseEvent | TouchEvent) => {\r\n\t\t\twindow.addEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.addEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.addEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.addEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tdragOffset = getYCoord(e) - touchTargetElement.getBoundingClientRect().top;\r\n\r\n\t\t\tdocument.body.style.overscrollBehaviorY = 'none';\r\n\t\t}\r\n\t\tconst dragMouseUp = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tdocument.body.style.overscrollBehaviorY = this._saveBodyStyle;\r\n\r\n\t\t\tif (!this.disableClose && getYCoord(e) >= window.innerHeight - 25) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight + 50, true);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (window.innerHeight - getYCoord(e) > element.clientHeight / 2.5) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - element.clientHeight);\r\n\t\t\t\t\r\n\t\t\t\ttry {\r\n\t\t\t\t\tUtils.eventGallery((this.getRootNode() as ShadowRoot).host);\r\n\t\t\t\t} catch (e) {}\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - bottomSize - bounceOffset);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dragMouseMove = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tconst currentY = getYCoord(e);\r\n\r\n\t\t\tif (this.disableClose && window.innerHeight - currentY < 70) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (currentY <= (window.innerHeight - element.clientHeight + dragOffset)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`none`\r\n\t\t\t)\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"--translateY\",\r\n\t\t\t\t`translateY(${currentY - dragOffset}px)`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst closeDragElement = (e: MouseEvent | TouchEvent, toPoint?: number, hideDialog?: boolean) => {\r\n\t\t\twindow.removeEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.removeEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.removeEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.removeEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tif (window.innerWidth >= 768)\r\n\t\t\t\treturn\r\n\r\n\t\t\tif (!toPoint && getYCoord(e) >= window.innerHeight - bottomSize)\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(calc(100vh - ${bottomSize}px))`\r\n\t\t\t\t);\r\n\t\t\telse\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(${(toPoint || getYCoord(e)) + bounceOffset}px)`\r\n\t\t\t\t);\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s`\r\n\t\t\t);\r\n\r\n\t\t\tif (hideDialog){\r\n\t\t\t\ttouchTargetElement.removeEventListener('mousedown', dragMouseDown);\r\n\t\t\t\ttouchTargetElement.removeEventListener('touchstart', dragMouseDown);\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\tthis._callHide,\r\n\t\t\t\t\t250\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ttouchTargetElement.addEventListener('mousedown', dragMouseDown);\r\n\t\ttouchTargetElement.addEventListener('touchstart', dragMouseDown, {passive: true});\r\n\r\n\t\tcloseDragElement(new MouseEvent('mouseup'), window.innerHeight - bottomSize - bounceOffset);\r\n\r\n\t\treturn {\r\n\t\t\ttouchElement: touchTargetElement,\r\n\t\t\tlistener: dragMouseDown\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupAppearence = () => {\r\n\t\tif (this.bindedElement) {\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('mousedown', this.bindedElement.listener);\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('touchstart', this.bindedElement.listener);\r\n\t\t}\r\n\r\n\t\tthis.bindedElement = this.dragMobileSheet(\r\n\t\t\tthis.parentElement?.parentElement,\r\n\t\t\tthis.parentElement?.getElementsByClassName('touch-header')[0] as HTMLElement,\r\n\t\t\tthis.parentElement?.getElementsByClassName('body-header')[0] as HTMLElement);\r\n\t}\r\n\tprivate _init = () => {\r\n\t\tthis.setupAppearence();\r\n\r\n\t\twindow.addEventListener('resize', this.setupAppearence);\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tthis._init();\r\n return;\r\n\t}\r\n\r\n createRenderRoot() {\r\n return this;\r\n }\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(this.props.name, this.props.description, this.props.icon, this._callInstall)}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,\"Segoe UI\",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:\"\";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,\"Segoe UI\",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:\"\";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`;\n ","import {css} from 'lit'; export default css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,\"Segoe UI\";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon description\" \"welcome welcome\" \"how-to how-to\" \"gallery gallery\" \"button button\";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon\" \"description\" \"welcome\" \"how-to\" \"gallery\" \"button\";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;\n ","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"classMap\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_directives_class_map_js_2f88e643__.classMap) });","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, install: any, toggleGallery: any, galleryRequested: boolean) => {\r\n const installDialogClasses = () => { return {available: installAvailable, gallery: galleryRequested }};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n ${!disableClose? html`` : ''}\r\n
\r\n
${location.hostname}
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n ${!disableDescription? \r\n html`
${installDescription? installDescription: `${msg('This site has app functionality.')} ${msg('Install it on your device for extensive experience and easy access.')}`}
` \r\n : ''}\r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n ${screenshotsAvailable? html``:''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n
\r\n
`;\r\n};\r\nexport default template;\r\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, howToForApple: any, isDesktop: boolean, howToRequested: boolean, toggleGallery: any, galleryRequested: boolean) => {\r\n const installDialogClassesApple = () => { return {available: installAvailable, 'how-to': howToRequested, gallery: galleryRequested, desktop: isDesktop}};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, PropertyValues, html } from 'lit';\r\nimport { localized } from '@lit/localize';\r\nimport { property, state, customElement } from 'lit/decorators.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { changeLocale } from './localization';\r\n\r\nimport { IRelatedApp, Manifest, IWindow, PWAInstallAttributes } from './types/types';\r\n\r\nimport PWAGalleryElement from './gallery';\r\nimport PWABottomSheetElement from './templates/chrome/bottom-sheet';\r\n\r\nimport Utils from './utils';\r\n\r\ndeclare const window: IWindow;\r\n\r\nimport styles from './templates/chrome/styles.scss';\r\nimport stylesApple from './templates/apple/styles-apple.scss';\r\n\r\nimport template from './templates/chrome/template';\r\nimport templateApple from './templates/apple/template-apple';\r\n\r\n/**\r\n * @event {CustomEvent} pwa-install-success-event - App install success (Chromium/Android only)\r\n * @event {CustomEvent} pwa-install-fail-event - App install failed (Chromium/Android only)\r\n * @event {CustomEvent} pwa-user-choice-result-event - dismissed, accepted\r\n * @event {CustomEvent} pwa-install-available-event - App install available\r\n * @event {CustomEvent} pwa-install-how-to-event - App install instruction showed\r\n * @event {CustomEvent} pwa-install-gallery-event - App install gallery showed\r\n */\r\n@localized()\r\n@customElement('pwa-install')\r\nexport class PWAInstallElement extends LitElement {\r\n\t@property({attribute: 'manifest-url'}) manifestUrl = '/manifest.json';\r\n\t@property() icon = '';\r\n\t@property() name = '';\r\n\t@property() description = '';\r\n\t@property({attribute: 'install-description'}) installDescription = '';\r\n\t@property({attribute: 'disable-install-description', type: Boolean}) disableDescription = false;\r\n\t@property({attribute: 'disable-screenshots', type: Boolean}) disableScreenshots = false;\r\n\t@property({attribute: 'disable-screenshots-apple', type: Boolean}) disableScreenshotsApple = false;\r\n\t@property({attribute: 'disable-screenshots-chrome', type: Boolean}) disableScreenshotsChrome = false;\r\n\t@property({attribute: 'manual-apple', type: Boolean}) manualApple = false;\r\n\t@property({attribute: 'manual-chrome', type: Boolean}) manualChrome = false;\r\n\t@property({attribute: 'disable-chrome', type: Boolean}) disableChrome = false;\r\n\t@property({attribute: 'disable-close', type: Boolean}) disableClose = false;\r\n\t@property({attribute: 'use-local-storage', type: Boolean}) useLocalStorage = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn [ styles, stylesApple ];\r\n\t}\r\n\r\n\t@state() externalPromptEvent: BeforeInstallPromptEvent | null = null;\r\n\r\n\tpublic platforms: BeforeInstallPromptEvent['platforms'] = [];\r\n\tpublic userChoiceResult = '';\r\n\r\n\tpublic isDialogHidden: boolean = Utils.getStorageFlag('pwa-hide-install');\r\n\tpublic isInstallAvailable = false;\r\n\tpublic isAppleMobilePlatform = false;\r\n\tpublic isAppleDesktopPlatform = false;\r\n\tpublic isUnderStandaloneMode = false;\r\n\tpublic isRelatedAppsInstalled = false;\r\n\r\n\t/** @internal */\r\n\tprivate _manifest: WebAppManifest = new Manifest();\r\n\t/** @internal */\r\n\tprivate _howToRequested = false;\r\n\t/** @internal */\r\n\tprivate _galleryRequested = false;\r\n\t/** @internal */\r\n\tprivate _install = {\r\n\t\thandleEvent: () => {\r\n\t\t\tif (window.defferedPromptEvent) {\r\n\t\t\t\tthis.hideDialog();\r\n\t\t\t\twindow.defferedPromptEvent.prompt();\r\n\t\t\t\twindow.defferedPromptEvent.userChoice\r\n\t\t\t\t\t.then((choiceResult: PromptResponseObject) => {\r\n\t\t\t\t\t\tthis.userChoiceResult = choiceResult.outcome;\r\n\t\t\t\t\t\tUtils.eventUserChoiceResult(this, this.userChoiceResult);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tUtils.eventInstalledFail(this);\r\n\t\t\t\t\t});\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\tpublic install = () => {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis._howToRequested = true;\r\n\t\t\tthis.requestUpdate();\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._install.handleEvent();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialog = {\r\n\t\thandleEvent: () => {\r\n\t\t\tthis.isDialogHidden = true;\r\n\t\t\tUtils.setStorageFlag('pwa-hide-install', true, this.useLocalStorage);\r\n\t\t\tthis.requestUpdate();\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialogUser = () => {\r\n\t\tUtils.eventUserChoiceResult(this, 'dismissed');\r\n\t\tthis.userChoiceResult = 'dismissed';\r\n\t\tthis.hideDialog();\r\n\t}\r\n\tpublic hideDialog = () => {\r\n\t\tthis._hideDialog.handleEvent();\r\n\t}\r\n\tpublic showDialog = (forced = false) => {\r\n\t\tthis.isDialogHidden = false;\r\n\t\tif (forced)\r\n\t\t\tthis.isInstallAvailable = true;\r\n\t\tUtils.setStorageFlag('pwa-hide-install', false, this.useLocalStorage);\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tpublic getInstalledRelatedApps = async (): Promise => {\r\n\t\treturn await Utils.getInstalledRelatedApps();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _howToForApple = {\r\n handleEvent: () => {\r\n\t\t\tthis._howToRequested = !this._howToRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._galleryRequested = false;\r\n\t\t\tthis.requestUpdate();\r\n\r\n\t\t\tif (this._howToRequested) {\r\n\t\t\t\tUtils.eventInstallHowTo(this);\r\n\t\t\t}\t\t\t\t\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate _toggleGallery = {\r\n handleEvent: () => {\r\n\t\t\tthis._galleryRequested = !this._galleryRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._howToRequested = false;\r\n\r\n\t\t\tthis._galleryRequested && Utils.eventGallery(this);\r\n\r\n\t\t\tthis.requestUpdate();\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate async _checkInstalled() {\r\n\t\tthis.isUnderStandaloneMode = Utils.isStandalone();\r\n\t\tthis.isRelatedAppsInstalled = await Utils.isRelatedAppsInstalled();\r\n\t\tthis.isAppleMobilePlatform = Utils.isAppleMobile();\r\n\t\tthis.isAppleDesktopPlatform = Utils.isAppleDesktop();\r\n\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tif (!this.isUnderStandaloneMode) {\r\n\t\t\t\tthis.manualApple && this.hideDialog();\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t1000\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.manualChrome && this.hideDialog();\r\n\t\t}\r\n\t}\r\n\t/** @internal */\r\n\tprivate _init = async () => {\r\n\t\twindow.defferedPromptEvent = null;\r\n\r\n\t\tthis._checkInstalled();\r\n\r\n\t\tif (!this.disableChrome) {\r\n\t\t\tconst _promptHandler = (e: BeforeInstallPromptEvent) => {\r\n\t\t\t\twindow.defferedPromptEvent = e;\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.platforms = e.platforms;\r\n\r\n\t\t\t\tif (this.isRelatedAppsInstalled || this.isUnderStandaloneMode) {\r\n\t\t\t\t\tthis.isInstallAvailable = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userChoiceResult === 'accepted'){\r\n\t\t\t\t\tthis.isDialogHidden = true;\r\n\t\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t\tif (this.externalPromptEvent != null)\r\n\t\t\t\tsetTimeout(() => _promptHandler(this.externalPromptEvent!), 300);\r\n\t\t\telse\r\n\t\t\t\twindow.addEventListener('beforeinstallprompt', _promptHandler);\r\n\t\t}\r\n\r\n\t\twindow.addEventListener('appinstalled', (e) => {\r\n\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\tthis.isInstallAvailable = false;\r\n\r\n\t\t\tthis.requestUpdate();\r\n\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t});\r\n\r\n\r\n\t\ttry{\r\n\t\t\tconst _response = await fetch(this.manifestUrl);\r\n\t\t\tconst _json = await _response.json() as WebAppManifest;\r\n\t\t\tif (!_response.ok || !_json || !Object.keys(_json))\r\n\t\t\t\tthrow new Error('Manifest not found');\r\n\t\t\tUtils.normalizeManifestAssetUrls(_json, this.manifestUrl);\r\n\t\t\t\r\n\t\t\tthis.icon = this.icon || _json.icons?.length ? _json.icons![0].src : '';\r\n\t\t\tthis.name = this.name || _json['short_name'] || _json.name || '';\r\n\t\t\tthis.description = this.description || _json.description || '';\r\n\t\t\tthis._manifest = _json;\r\n\t\t}\r\n\t\tcatch(e) {\r\n\t\t\tthis.icon = this.icon || this._manifest.icons?.[0].src || '';\r\n\t\t\tthis.name = this.name || this._manifest['short_name'] || '';\r\n\t\t\tthis.description = this.description || this._manifest.description || '';\r\n\t\t}\r\n\t};\r\n\t/** @internal */\r\n\tprivate _requestUpdate = () => {\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tchangeLocale(navigator.language);\r\n\t\tthis._init();\r\n\t\tPWAGalleryElement.finalized;\r\n\t\tPWABottomSheetElement.finalized;\r\n\t\tsuper.connectedCallback();\r\n\t}\r\n\twillUpdate(changedProperties: PropertyValues) {\r\n\t\tif (this.externalPromptEvent && changedProperties.has('externalPromptEvent') && typeof this.externalPromptEvent == 'object') {\r\n\t\t this._init();\r\n\t\t}\r\n\t}\r\n\r\n\t// firstUpdated() {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\trender() {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform)\r\n\t\t\treturn html`${templateApple(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsApple,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._howToForApple,\r\n\t\t\t\tthis.isAppleDesktopPlatform,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested\r\n\t\t\t)}`;\r\n\t\telse\r\n\t\t\treturn html`${template(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsChrome,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._install,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested\r\n\t\t\t)}`;\r\n\t}\r\n}\r\n\r\nexport { PWAInstallAttributes };\r\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { updateWhenLocaleChanges } from './localized-controller.js';\n/**\n * Class decorator to enable re-rendering the given LitElement whenever a new\n * active locale has loaded.\n *\n * See also {@link updateWhenLocaleChanges} for the same functionality without\n * the use of decorators.\n *\n * When using lit-localize in transform mode, applications of this decorator are\n * removed.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {customElement} from 'lit/decorators.js';\n * import {msg, localized} from '@lit/localize';\n *\n * @localized()\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nexport const localized = () => (clazz, _context) => {\n clazz.addInitializer(updateWhenLocaleChanges);\n return clazz;\n};\n//# sourceMappingURL=localized-decorator.js.map"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","y","x","d","__WEBPACK_EXTERNAL_MODULE_lit__","joinStringsAndValues","strings","values","valueOrder","concat","i","length","defaultMsg","template","isStrTagged","val","msg","installed","LOCALE_STATUS_EVENT","LocalizeController","constructor","host","this","__litLocalizeEventHandler","event","detail","status","requestUpdate","hostConnected","window","addEventListener","hostDisconnected","removeEventListener","updateWhenLocaleChanges","addController","Deferred","settled","promise","Promise","resolve","reject","_resolve","_reject","error","hl","toString","HASH_DELIMITER","HTML_PREFIX","STRING_PREFIX","generateMsgId","isHtmlTagged","str","t0","v0","t1","v1","t2","v2","t3","v3","charCodeAt","fnv1a64","join","expressionOrders","WeakMap","hashCache","Map","runtimeMsg","templates","options","id","undefined","set","generateId","localized","order","map","dispatchStatusEvent","dispatchEvent","CustomEvent","loadingLocale","sourceLocale","validLocales","loadLocale","activeLocale","loading","requestId","getLocale","setLocale","newLocale","Error","has","thisRequestId","then","mod","readyLocale","err","errorLocale","errorMessage","__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__","targetLocales","localizedTemplates","config","async","lang","impl","_installMsgImplementation","Set","add","Manifest","icons","src","screenshots","short_name","name","description","css","_eventDispatcher","_element","message","Utils","isAppleMobile","includes","navigator","platform","userAgent","match","maxTouchPoints","isAppleDesktop","toLowerCase","version","exec","parseInt","audioCheck","document","createElement","canPlayType","webGLCheck","OffscreenCanvas","getContext","deviceFormFactor","matchMedia","matches","isStandalone","standalone","getInstalledRelatedApps","relatedApps","e","isRelatedAppsInstalled","setStorageFlag","persistent","localStorage","setItem","sessionStorage","getStorageFlag","getItem","eventInstalledSuccess","eventInstalledFail","eventUserChoiceResult","eventInstallAvailable","eventInstallHowTo","eventGallery","normalizeManifestAssetUrls","manifest","manifestUrl","normalizedManifestUrl","URL","location","href","forEach","asset","theme","scrollToNextPage","scrollToPrevPage","html","PWAGalleryElement","LitElement","getScrollElements","gallery","shadowRoot","querySelector","galleryScroller","galleryItems","Array","from","querySelectorAll","scroller","items","findCurrentItem","scrollLeft","find","item","offsetWidth","offsetLeft","scrollToPage","direction","scrollData","currentItem","targetIndex","indexOf","scrollIntoView","behavior","block","inline","_init","styles","firstUpdated","_tools","setTimeout","scrollTo","top","left","connectedCallback","super","render","property","type","customElement","icon","install","PWABottomSheetElement","props","handleEvent","hideDialog","disableClose","_callInstall","_callHide","setupAppearence","bindedElement","_saveBodyStyle","body","style","overscrollBehaviorY","dragMobileSheet","element","touchTargetElement","infoElement","dragOffset","bottomSize","clientHeight","getYCoord","clientY","changedTouches","dragMouseDown","dragMouseUp","dragMouseMove","getBoundingClientRect","innerHeight","closeDragElement","getRootNode","currentY","setProperty","toPoint","innerWidth","passive","MouseEvent","touchElement","listener","parentElement","getElementsByClassName","createRenderRoot","__WEBPACK_EXTERNAL_MODULE_lit_directives_class_map_js_2f88e643__","installDescription","disableDescription","disableScreenshots","installAvailable","toggleGallery","galleryRequested","installDialogClasses","available","screenshotsAvailable","howToForApple","isDesktop","howToRequested","desktop","PWAInstallElement","disableScreenshotsApple","disableScreenshotsChrome","manualApple","manualChrome","disableChrome","useLocalStorage","externalPromptEvent","platforms","userChoiceResult","isDialogHidden","isInstallAvailable","isAppleMobilePlatform","isAppleDesktopPlatform","isUnderStandaloneMode","_manifest","_howToRequested","_galleryRequested","_install","defferedPromptEvent","prompt","userChoice","choiceResult","outcome","catch","_hideDialog","_hideDialogUser","showDialog","forced","_howToForApple","_toggleGallery","_checkInstalled","_promptHandler","preventDefault","_response","fetch","_json","json","ok","keys","_requestUpdate","slice","changeLocale","language","finalized","willUpdate","changedProperties","attribute","Boolean","state","clazz","_context","addInitializer"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"pwa-install.es.js","mappings":"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","sources":["webpack://@khmyznikov/pwa-install/webpack/bootstrap","webpack://@khmyznikov/pwa-install/webpack/runtime/define property getters","webpack://@khmyznikov/pwa-install/webpack/runtime/hasOwnProperty shorthand","webpack://@khmyznikov/pwa-install/webpack/runtime/make namespace object","webpack://@khmyznikov/pwa-install/external module \"lit\"","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/str-tag.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/default-msg.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/init/install.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/locale-status-event.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/localized-controller.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/deferred.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/fnv1a64.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/id-generation.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/runtime-msg.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/init/runtime.js","webpack://@khmyznikov/pwa-install/external module \"lit/decorators.js\"","webpack://@khmyznikov/pwa-install/./src/localization/locale-codes.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ru.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/tr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/de.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/es.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/nl.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/el.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/fr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/sr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/pl.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/uk.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/zh-HK.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/zh-CN.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/it.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/cs.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/no.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/pt.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ja.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/sv.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ko.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/km.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/da.ts","webpack://@khmyznikov/pwa-install/./src/localization/index.ts","webpack://@khmyznikov/pwa-install/./src/types/types.ts","webpack://@khmyznikov/pwa-install/./src/gallery/styles-gallery.scss","webpack://@khmyznikov/pwa-install/./src/utils.ts","webpack://@khmyznikov/pwa-install/./src/gallery/template-gallery.ts","webpack://@khmyznikov/pwa-install/./src/gallery/index.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/template-bottom-sheet.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/index.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/styles.scss","webpack://@khmyznikov/pwa-install/./src/templates/apple/styles-apple.scss","webpack://@khmyznikov/pwa-install/external module \"lit/directives/class-map.js\"","webpack://@khmyznikov/pwa-install/./src/templates/chrome/template.ts","webpack://@khmyznikov/pwa-install/./src/templates/apple/template-apple.ts","webpack://@khmyznikov/pwa-install/./src/index.ts","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/localized-decorator.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"LitElement\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.LitElement), [\"css\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.css), [\"html\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.html) });","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Tag that allows expressions to be used in localized non-HTML template\n * strings.\n *\n * Example: msg(str`Hello ${this.user}!`);\n *\n * The Lit html tag can also be used for this purpose, but HTML will need to be\n * escaped, and there is a small overhead for HTML parsing.\n *\n * Untagged template strings with expressions aren't supported by lit-localize\n * because they don't allow for values to be captured at runtime.\n */\nconst _str = (strings, ...values) => ({\n strTag: true,\n strings,\n values,\n});\nexport const str = _str;\nexport const isStrTagged = (val) => typeof val !== 'string' && 'strTag' in val;\n/**\n * Render the result of a `str` tagged template to a string. Note we don't need\n * to do this for Lit templates, since Lit itself handles rendering.\n */\nexport const joinStringsAndValues = (strings, values, valueOrder) => {\n let concat = strings[0];\n for (let i = 1; i < strings.length; i++) {\n concat += values[valueOrder ? valueOrder[i - 1] : i - 1];\n concat += strings[i];\n }\n return concat;\n};\n//# sourceMappingURL=str-tag.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { isStrTagged, joinStringsAndValues } from './str-tag.js';\n/**\n * Default identity msg implementation. Simply returns the input template with\n * no awareness of translations. If the template is str-tagged, returns it in\n * string form.\n */\nexport const defaultMsg = ((template) => isStrTagged(template)\n ? joinStringsAndValues(template.strings, template.values)\n : template);\n//# sourceMappingURL=default-msg.js.map","import { defaultMsg } from '../internal/default-msg.js';\n/**\n * Make a string or lit-html template localizable.\n *\n * @param template A string, a lit-html template, or a function that returns\n * either a string or lit-html template.\n * @param options Optional configuration object with the following properties:\n * - id: Optional project-wide unique identifier for this template. If\n * omitted, an id will be automatically generated from the template strings.\n * - desc: Optional description\n */\nexport let msg = defaultMsg;\nlet installed = false;\n/**\n * Internal only. Do not use this function.\n *\n * Installs an implementation of the msg function to replace the default\n * identity function. Throws if called more than once.\n *\n * @internal\n */\nexport function _installMsgImplementation(impl) {\n if (installed) {\n throw new Error('lit-localize can only be configured once');\n }\n msg = impl;\n installed = true;\n}\n//# sourceMappingURL=install.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Name of the event dispatched to `window` whenever a locale change starts,\n * finishes successfully, or fails. Only relevant to runtime mode.\n *\n * The `detail` of this event is an object with a `status` string that can be:\n * \"loading\", \"ready\", or \"error\", along with the relevant locale code, and\n * error message if applicable.\n *\n * You can listen for this event to know when your application should be\n * re-rendered following a locale change. See also the Localized mixin, which\n * automatically re-renders LitElement classes using this event.\n */\nexport const LOCALE_STATUS_EVENT = 'lit-localize-status';\n//# sourceMappingURL=locale-status-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { LOCALE_STATUS_EVENT } from './locale-status-event.js';\nclass LocalizeController {\n constructor(host) {\n this.__litLocalizeEventHandler = (event) => {\n if (event.detail.status === 'ready') {\n this.host.requestUpdate();\n }\n };\n this.host = host;\n }\n hostConnected() {\n window.addEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n hostDisconnected() {\n window.removeEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n}\n/**\n * Re-render the given LitElement whenever a new active locale has loaded.\n *\n * See also {@link localized} for the same functionality as a decorator.\n *\n * When using lit-localize in transform mode, calls to this function are\n * replaced with undefined.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {msg, updateWhenLocaleChanges} from '@lit/localize';\n *\n * class MyElement extends LitElement {\n * constructor() {\n * super();\n * updateWhenLocaleChanges(this);\n * }\n *\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nconst _updateWhenLocaleChanges = (host) => host.addController(new LocalizeController(host));\nexport const updateWhenLocaleChanges = _updateWhenLocaleChanges;\n//# sourceMappingURL=localized-controller.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport class Deferred {\n constructor() {\n this.settled = false;\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n resolve(value) {\n this.settled = true;\n this._resolve(value);\n }\n reject(error) {\n this.settled = true;\n this._reject(error);\n }\n}\n//# sourceMappingURL=deferred.js.map","/**\n * @license\n * Copyright 2014 Travis Webb\n * SPDX-License-Identifier: MIT\n */\n// This module is derived from the file:\n// https://github.com/tjwebb/fnv-plus/blob/1e2ce68a07cb7dd4c3c85364f3d8d96c95919474/index.js#L309\n//\n// Changes:\n// - Only the _hash64_1a_fast function is included.\n// - Removed loop unrolling.\n// - Converted to TypeScript ES module.\n// - var -> let/const\n//\n// TODO(aomarks) Upstream improvements to https://github.com/tjwebb/fnv-plus/.\nconst hl = [];\nfor (let i = 0; i < 256; i++) {\n hl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n}\n/**\n * Perform a FNV-1A 64-bit hash of the given string (as UTF-16 code units), and\n * return a hexadecimal digest (left zero padded to 16 characters).\n *\n * @see {@link http://tools.ietf.org/html/draft-eastlake-fnv-06}\n */\nexport function fnv1a64(str) {\n let t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n for (let i = 0; i < str.length; i++) {\n v0 ^= str.charCodeAt(i);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = (t3 + (t2 >>> 16)) & 65535;\n v2 = t2 & 65535;\n }\n return (hl[v3 >> 8] +\n hl[v3 & 255] +\n hl[v2 >> 8] +\n hl[v2 & 255] +\n hl[v1 >> 8] +\n hl[v1 & 255] +\n hl[v0 >> 8] +\n hl[v0 & 255]);\n}\n//# sourceMappingURL=fnv1a64.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { fnv1a64 } from './fnv1a64.js';\n/**\n * Delimiter used between each template string component before hashing. Used to\n * prevent e.g. \"foobar\" and \"foo${baz}bar\" from sharing a hash.\n *\n * This is the \"record separator\" ASCII character.\n */\nexport const HASH_DELIMITER = '\\x1e';\n/**\n * Id prefix on html-tagged templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst HTML_PREFIX = 'h';\n/**\n * Id prefix on plain string templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst STRING_PREFIX = 's';\n/**\n * Generate a unique ID for a lit-localize message.\n *\n * Example:\n * Template: html`Hello ${who}!`\n * Params: [\"Hello \", \"!\"], true\n * Output: h82ccc38d4d46eaa9\n *\n * The ID is constructed as:\n *\n * [0] Kind of template: [h]tml or [s]tring.\n * [1,16] 64-bit FNV-1a hash hex digest of the template strings, as UTF-16\n * code points, delineated by an ASCII \"record separator\" character.\n *\n * We choose FNV-1a because:\n *\n * 1. It's pretty fast (e.g. much faster than SHA-1).\n * 2. It's pretty small (0.25 KiB minified + brotli).\n * 3. We don't require cryptographic security, and 64 bits should give\n * sufficient collision resistance for any one application. Worst\n * case, we will always detect collisions during analysis.\n * 4. We can't use Web Crypto API (e.g. SHA-1), because it's asynchronous.\n * 5. It's a well known non-cryptographic hash with implementations in many\n * languages.\n * 6. There was an existing JavaScript implementation that doesn't require\n * BigInt, for IE11 compatibility.\n */\nexport function generateMsgId(strings, isHtmlTagged) {\n return ((isHtmlTagged ? HTML_PREFIX : STRING_PREFIX) +\n fnv1a64(typeof strings === 'string' ? strings : strings.join(HASH_DELIMITER)));\n}\n//# sourceMappingURL=id-generation.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { defaultMsg } from './default-msg.js';\nimport { joinStringsAndValues } from './str-tag.js';\nimport { generateMsgId } from './id-generation.js';\nconst expressionOrders = new WeakMap();\nconst hashCache = new Map();\nexport function runtimeMsg(templates, template, options) {\n if (templates) {\n const id = options?.id ?? generateId(template);\n const localized = templates[id];\n if (localized) {\n if (typeof localized === 'string') {\n // E.g. \"Hello World!\"\n return localized;\n }\n else if ('strTag' in localized) {\n // E.g. str`Hello ${name}!`\n //\n // Localized templates have ${number} in place of real template\n // expressions. They can't have real template values, because the\n // variable scope would be wrong. The number tells us the index of the\n // source value to substitute in its place, because expressions can be\n // moved to a different position during translation.\n return joinStringsAndValues(localized.strings, \n // Cast `template` because its type wasn't automatically narrowed (but\n // we know it must be the same type as `localized`).\n template.values, localized.values);\n }\n else {\n // E.g. html`Hello ${name}!`\n //\n // We have to keep our own mapping of expression ordering because we do\n // an in-place update of `values`, and otherwise we'd lose ordering for\n // subsequent renders.\n let order = expressionOrders.get(localized);\n if (order === undefined) {\n order = localized.values;\n expressionOrders.set(localized, order);\n }\n return {\n ...localized,\n values: order.map((i) => template.values[i]),\n };\n }\n }\n }\n return defaultMsg(template);\n}\nfunction generateId(template) {\n const strings = typeof template === 'string' ? template : template.strings;\n let id = hashCache.get(strings);\n if (id === undefined) {\n id = generateMsgId(strings, typeof template !== 'string' && !('strTag' in template));\n hashCache.set(strings, id);\n }\n return id;\n}\n//# sourceMappingURL=runtime-msg.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { Deferred } from '../internal/deferred.js';\nimport { LOCALE_STATUS_EVENT } from '../internal/locale-status-event.js';\nimport { runtimeMsg } from '../internal/runtime-msg.js';\nimport { _installMsgImplementation } from './install.js';\n/**\n * Dispatch a \"lit-localize-status\" event to `window` with the given detail.\n */\nfunction dispatchStatusEvent(detail) {\n window.dispatchEvent(new CustomEvent(LOCALE_STATUS_EVENT, { detail }));\n}\nlet activeLocale = '';\nlet loadingLocale;\nlet sourceLocale;\nlet validLocales;\nlet loadLocale;\nlet templates;\nlet loading = new Deferred();\n// The loading promise must be initially resolved, because that's what we should\n// return if the user immediately calls setLocale(sourceLocale).\nloading.resolve();\nlet requestId = 0;\n/**\n * Set configuration parameters for lit-localize when in runtime mode. Returns\n * an object with functions:\n *\n * - `getLocale`: Return the active locale code.\n * - `setLocale`: Set the active locale code.\n *\n * Throws if called more than once.\n */\nexport const configureLocalization = (config) => {\n _installMsgImplementation(((template, options) => runtimeMsg(templates, template, options)));\n activeLocale = sourceLocale = config.sourceLocale;\n validLocales = new Set(config.targetLocales);\n validLocales.add(config.sourceLocale);\n loadLocale = config.loadLocale;\n return { getLocale, setLocale };\n};\n/**\n * Return the active locale code.\n */\nconst getLocale = () => {\n return activeLocale;\n};\n/**\n * Set the active locale code, and begin loading templates for that locale using\n * the `loadLocale` function that was passed to `configureLocalization`. Returns\n * a promise that resolves when the next locale is ready to be rendered.\n *\n * Note that if a second call to `setLocale` is made while the first requested\n * locale is still loading, then the second call takes precedence, and the\n * promise returned from the first call will resolve when second locale is\n * ready. If you need to know whether a particular locale was loaded, check\n * `getLocale` after the promise resolves.\n *\n * Throws if the given locale is not contained by the configured `sourceLocale`\n * or `targetLocales`.\n */\nconst setLocale = (newLocale) => {\n if (newLocale === (loadingLocale ?? activeLocale)) {\n return loading.promise;\n }\n if (!validLocales || !loadLocale) {\n throw new Error('Internal error');\n }\n if (!validLocales.has(newLocale)) {\n throw new Error('Invalid locale code');\n }\n requestId++;\n const thisRequestId = requestId;\n loadingLocale = newLocale;\n if (loading.settled) {\n loading = new Deferred();\n }\n dispatchStatusEvent({ status: 'loading', loadingLocale: newLocale });\n const localePromise = newLocale === sourceLocale\n ? // We could switch to the source locale synchronously, but we prefer to\n // queue it on a microtask so that switching locales is consistently\n // asynchronous.\n Promise.resolve({ templates: undefined })\n : loadLocale(newLocale);\n localePromise.then((mod) => {\n if (requestId === thisRequestId) {\n activeLocale = newLocale;\n loadingLocale = undefined;\n templates = mod.templates;\n dispatchStatusEvent({ status: 'ready', readyLocale: newLocale });\n loading.resolve();\n }\n // Else another locale was requested in the meantime. Don't resolve or\n // reject, because the newer load call is going to use the same promise.\n // Note the user can call getLocale() after the promise resolves if they\n // need to check if the locale is still the one they expected to load.\n }, (err) => {\n if (requestId === thisRequestId) {\n dispatchStatusEvent({\n status: 'error',\n errorLocale: newLocale,\n errorMessage: err.toString(),\n });\n loading.reject(err);\n }\n });\n return loading.promise;\n};\n//# sourceMappingURL=runtime.js.map","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"customElement\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.customElement), [\"property\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.property), [\"state\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.state) });","// Do not modify this file by hand!\n// Re-generate this file by running lit-localize.\n\n/**\n * The locale code that templates in this source code are written in.\n */\nexport const sourceLocale = `en`;\n\n/**\n * The other locale codes that this application is localized into. Sorted\n * lexicographically.\n */\nexport const targetLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `es`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n\n/**\n * All valid project locale codes. Sorted lexicographically.\n */\nexport const allLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `en`,\n `es`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.`,\n's1b9047d53d9f9d22': `2) Нажать \"Поделиться\"`,\n's37a9e8aec5713460': `Подробнее`,\n's5c6aad7a7e4a1437': `3) Нажать \"На экран «Домой»\"`,\n's6196153c4b0c1ea0': `Установить`,\n's922329d6f6213590': `Добавить в Dock`,\n'sa5ef80b4bb9b39f8': `Свернуть`,\n'sa7551383d1897fcc': `2) Нажмите \"Добавить в Dock\"`,\n'sba52286c21552a4e': `Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.`,\n'sc79fd7641eb9a975': `Спрятать Инструкцию`,\n'scdaf4bbff76674c8': `На экран «Домой»`,\n'sdfe23506a3b0cdc8': `1) Открыть в Safari браузере`,\n'se740f75b95a51807': `Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.`,\n'sfea652f6580ff086': `Этот веб-сайт имеет функционал приложения.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.`,\n's1b9047d53d9f9d22': `2) Gezinme çubuğunda Paylaş'a basın`,\n's37a9e8aec5713460': `Daha Fazla`,\n's5c6aad7a7e4a1437': `3) Ana Ekrana Ekle'ye basın`,\n's6196153c4b0c1ea0': `Yükle`,\n's922329d6f6213590': `Dock’a Ekle`,\n'sa5ef80b4bb9b39f8': `Küçült`,\n'sa7551383d1897fcc': `2) Dock’a ekleye basın`,\n'sba52286c21552a4e': `Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.`,\n'sc79fd7641eb9a975': `Talimatları gizle`,\n'scdaf4bbff76674c8': `Ana Ekrana Ekle`,\n'sdfe23506a3b0cdc8': `1) Safari tarayıcısında açın`,\n'se740f75b95a51807': `Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.`,\n'sfea652f6580ff086': `Bu site uygulama işlevselliğine sahiptir.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n's1b9047d53d9f9d22': `2) Drücken Sie auf Teilen in der Navigationsleiste`,\n's37a9e8aec5713460': `Mehr`,\n's5c6aad7a7e4a1437': `3) Drücken Sie Hinzufügen zum Startbildschirm`,\n's6196153c4b0c1ea0': `Installieren`,\n's922329d6f6213590': `Zum Dock hinzufügen`,\n'sa5ef80b4bb9b39f8': `Weniger`,\n'sa7551383d1897fcc': `2) Drücken Sie auf Zum Dock hinzufügen`,\n'sba52286c21552a4e': `Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.`,\n'sc79fd7641eb9a975': `Anleitung ausblenden`,\n'scdaf4bbff76674c8': `Hinzufügen zum Startbildschirm`,\n'sdfe23506a3b0cdc8': `1) In Safari-Browser öffnen`,\n'se740f75b95a51807': `Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n'sfea652f6580ff086': `Diese Website verfügt über App-Funktionalität.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.`,\n's1b9047d53d9f9d22': `2) Presionar Compartir en la barra de direcciones`,\n's37a9e8aec5713460': `Más`,\n's5c6aad7a7e4a1437': `3) Presionar Añadir a pantalla de inicio`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Añadir al Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Presionar Añadir al Dock`,\n'sba52286c21552a4e': `Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.`,\n'sc79fd7641eb9a975': `Esconder instrucciones`,\n'scdaf4bbff76674c8': `Añadir a pantalla de inicio`,\n'sdfe23506a3b0cdc8': `1) Abrir en el navegador web Safari`,\n'se740f75b95a51807': `Añádelo a tu Dock para una experiencia amplia y acceso fácil.`,\n'sfea652f6580ff086': `Este sitio tiene funcionalidad de aplicación.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.`,\n's1b9047d53d9f9d22': `2) Druk op delen in de navigatiebalk`,\n's37a9e8aec5713460': `Meer`,\n's5c6aad7a7e4a1437': `3) Druk op Toevoegen aan het startscherm`,\n's6196153c4b0c1ea0': `Installeren`,\n's922329d6f6213590': `Toevoegen aan Dock`,\n'sa5ef80b4bb9b39f8': `Minder`,\n'sa7551383d1897fcc': `2) Druk op Toevoegen aan Dock`,\n'sba52286c21552a4e': `Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.`,\n'sc79fd7641eb9a975': `Instructie verbergen`,\n'scdaf4bbff76674c8': `Toevoegen aan het startscherm`,\n'sdfe23506a3b0cdc8': `1) Open in Safari-browser`,\n'se740f75b95a51807': `Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.`,\n'sfea652f6580ff086': `Deze site heeft app-functionaliteit.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n's1b9047d53d9f9d22': `2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης`,\n's37a9e8aec5713460': `Περισσότερα`,\n's5c6aad7a7e4a1437': `3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας`,\n's6196153c4b0c1ea0': `Εγκατάσταση`,\n's922329d6f6213590': `Προσθήκη στην Πρόσβαση`,\n'sa5ef80b4bb9b39f8': `Λιγότερα`,\n'sa7551383d1897fcc': `2) Πατήστε Προσθήκη στην Πρόσβαση`,\n'sba52286c21552a4e': `Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sc79fd7641eb9a975': `Απόκρυψη Οδηγιών`,\n'scdaf4bbff76674c8': `Προσθήκη στην Οθόνη Αφετηρίας`,\n'sdfe23506a3b0cdc8': `1) Ανοίξτε τον περιηγητή Safari`,\n'se740f75b95a51807': `Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sfea652f6580ff086': `Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.`,\n's1b9047d53d9f9d22': `2) Appuyez sur Partager dans la barre de navigation`,\n's37a9e8aec5713460': `Plus`,\n's5c6aad7a7e4a1437': `3) Appuyez sur Ajouter à l'écran d'accueil`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Ajouter au Dock`,\n'sa5ef80b4bb9b39f8': `Moins`,\n'sa7551383d1897fcc': `2) Appuyez sur Ajouter au Dock`,\n'sba52286c21552a4e': `Installez-le sur votre appareil pour une expérience complète et un accès facile.`,\n'sc79fd7641eb9a975': `Masquer les instructions`,\n'scdaf4bbff76674c8': `Ajouter à l'écran d'accueil`,\n'sdfe23506a3b0cdc8': `1) Ouvrir dans le navigateur Safari`,\n'se740f75b95a51807': `Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.`,\n'sfea652f6580ff086': `Ce site possède des fonctionnalités d'application.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Додајте га на Home Screen за широке могућности и лак приступ.`,\n's1b9047d53d9f9d22': `2) Притисните Share у навигационој траци`,\n's37a9e8aec5713460': `Више`,\n's5c6aad7a7e4a1437': `3) Притисните Add to Home Screen`,\n's6196153c4b0c1ea0': `Инсталирај`,\n'sa5ef80b4bb9b39f8': `Мање`,\n'sa7551383d1897fcc': `3) Притисните Add to Dock`,\n'sba52286c21552a4e': `Инсталирајте га на вашем уређају за широке могућности и лак приступ.`,\n'sc79fd7641eb9a975': `Сакриј упутство`,\n'sdfe23506a3b0cdc8': `1) Отворите у Safari прегледачу`,\n'se740f75b95a51807': `Додајте га у вашу Dock за широке могућности и лак приступ.`,\n'sfea652f6580ff086': `Овај сајт има функционалност апликације.`,\n's922329d6f6213590': `Add to Dock`,\n'scdaf4bbff76674c8': `Add to Home Screen`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n's1b9047d53d9f9d22': `2) Wybierz \"Udostępnij\"`,\n's37a9e8aec5713460': `Więcej`,\n's5c6aad7a7e4a1437': `3) Wybierz \"Dodaj do Ekranu Głównego\"`,\n's6196153c4b0c1ea0': `Zainstaluj`,\n's922329d6f6213590': `Dodaj do Docka`,\n'sa5ef80b4bb9b39f8': `Mniej`,\n'sa7551383d1897fcc': `2) Wybierz \"Dodaj do Docka\"`,\n'sba52286c21552a4e': `Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sc79fd7641eb9a975': `Ukryj instrukcję`,\n'scdaf4bbff76674c8': `Dodaj do Ekranu Głównego`,\n'sdfe23506a3b0cdc8': `1) Otwórz przeglądarkę Safari`,\n'se740f75b95a51807': `Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sfea652f6580ff086': `Ta strona posiada funkcje aplikacji.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Додайте на Домашній екран для зручного доступу та ширших можливостей.`,\n's1b9047d53d9f9d22': `2) Натиснути «Поділитися»`,\n's37a9e8aec5713460': `Детальніше`,\n's5c6aad7a7e4a1437': `3) Натиснути «На Початковий екран»`,\n's6196153c4b0c1ea0': `Встановити`,\n's922329d6f6213590': `Додати на Dock`,\n'sa5ef80b4bb9b39f8': `Згорнути`,\n'sa7551383d1897fcc': `2) Натиснути «Додати на Dock»`,\n'sba52286c21552a4e': `Встановіть на ваш пристрій для зручного доступу та ширших можливостей.`,\n'sc79fd7641eb9a975': `Сховати Інструкцію`,\n'scdaf4bbff76674c8': `На Початковий экран`,\n'sdfe23506a3b0cdc8': `1) Відкрити в Safari браузері`,\n'se740f75b95a51807': `Додайте на панель Dock для зручного доступу та ширших можливостей.`,\n'sfea652f6580ff086': `Цей сайт має функції додатку.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。`,\n's1b9047d53d9f9d22': `2) 點擊列表上的分享按鈕`,\n's37a9e8aec5713460': `詳細資訊`,\n's5c6aad7a7e4a1437': `3) 點擊加入主畫面`,\n's6196153c4b0c1ea0': `安裝`,\n's922329d6f6213590': `添加到Dock欄`,\n'sa5ef80b4bb9b39f8': `簡短資訊`,\n'sa7551383d1897fcc': `2) 點選添加到Dock欄`,\n'sba52286c21552a4e': `在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。`,\n'sc79fd7641eb9a975': `隱藏安裝流程`,\n'scdaf4bbff76674c8': `將App加入主畫面`,\n'sdfe23506a3b0cdc8': `1) 在Safari上瀏覽此網頁`,\n'se740f75b95a51807': `將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。`,\n'sfea652f6580ff086': `此網站具有應用程式功能。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `将其添加到主屏幕,以享受更丰富的体验并便于访问。`,\n's1b9047d53d9f9d22': `2) 点击导航栏中的“分享”按钮`,\n's37a9e8aec5713460': `更多`,\n's5c6aad7a7e4a1437': `3) 点击“添加到主屏幕”`,\n's6196153c4b0c1ea0': `安装`,\n's922329d6f6213590': `添加到程序坞`,\n'sa5ef80b4bb9b39f8': `收起`,\n'sa7551383d1897fcc': `2) 点击“添加到程序坞”`,\n'sba52286c21552a4e': `在您的设备上安装,以享受更丰富的体验并便于访问。`,\n'sc79fd7641eb9a975': `隐藏安装步骤`,\n'scdaf4bbff76674c8': `添加到主屏幕`,\n'sdfe23506a3b0cdc8': `1) 在 Safari 浏览器中打开此页面`,\n'se740f75b95a51807': `将其添加到您的程序坞,以享受更全面的体验并便于访问。`,\n'sfea652f6580ff086': `此网站具备 App 功能特性。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.`,\n's1b9047d53d9f9d22': `2) Premi Condividi nella barra di navigazione`,\n's37a9e8aec5713460': `Più`,\n's5c6aad7a7e4a1437': `3) Premi Aggiungi alla schermata principale`,\n's6196153c4b0c1ea0': `Installa`,\n's922329d6f6213590': `Aggiungi al Dock`,\n'sa5ef80b4bb9b39f8': `Meno`,\n'sa7551383d1897fcc': `2) Premi Aggiungi al Dock`,\n'sba52286c21552a4e': `Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.`,\n'sc79fd7641eb9a975': `Nascondi istruzioni`,\n'scdaf4bbff76674c8': `Aggiungi alla schermata principale`,\n'sdfe23506a3b0cdc8': `1) Apri nel browser Safari`,\n'se740f75b95a51807': `Aggiungilo al Dock per un'esperienza più completa e un accesso facile.`,\n'sfea652f6580ff086': `Questo sito ha funzionalità di app.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Přidejte jej na plochu pro rozšířené využití a snadný přístup.`,\n's1b9047d53d9f9d22': `2) Stiskněte tlačítko Sdílet na navigačním panelu`,\n's37a9e8aec5713460': `Vice`,\n's5c6aad7a7e4a1437': `3) Stiskněte tlačítko Přidat na plochu`,\n's6196153c4b0c1ea0': `Nainstalovat`,\n's922329d6f6213590': `Přidat do Docku`,\n'sa5ef80b4bb9b39f8': `Méně`,\n'sa7551383d1897fcc': `2) Stiskněte Přidat do Docku`,\n'sba52286c21552a4e': `Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.`,\n'sc79fd7641eb9a975': `Skrýt instrukce`,\n'scdaf4bbff76674c8': `Přidat na plochu`,\n'sdfe23506a3b0cdc8': `1) Otevřete v prohlížeči Safari`,\n'se740f75b95a51807': `Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.`,\n'sfea652f6580ff086': `Tento web má funkce aplikace.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.`,\n's1b9047d53d9f9d22': `2) Trykk på Del-knappen i navigasjonslinjen`,\n's37a9e8aec5713460': `Mer`,\n's5c6aad7a7e4a1437': `3) Velg Legg til på Hjem-skjerm`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Legg til i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Velg Legg til i Dock`,\n'sba52286c21552a4e': `Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sc79fd7641eb9a975': `Skjul instruksjoner`,\n'scdaf4bbff76674c8': `Legg til på Hjem-skjerm`,\n'sdfe23506a3b0cdc8': `1) Åpne i Safari`,\n'se740f75b95a51807': `Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sfea652f6580ff086': `Denne siden har app-funksjonalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.`,\n's1b9047d53d9f9d22': `2) Pressione Compartilhar na barra de endereço`,\n's37a9e8aec5713460': `Mais`,\n's5c6aad7a7e4a1437': `3) Pressione Adicionar à Tela de Início`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Adicionar ao Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Pressione Adicionar ao Dock`,\n'sba52286c21552a4e': `Instale no dispositivo para uma melhor experiência e mais fácil acesso.`,\n'sc79fd7641eb9a975': `Ocultar Instruções`,\n'scdaf4bbff76674c8': `Adicionar à Tela de Início`,\n'sdfe23506a3b0cdc8': `1) Abra no navegador Safari`,\n'se740f75b95a51807': `Adicione ao Dock para uma melhor experiência e mais fácil acesso.`,\n'sfea652f6580ff086': `Este site possui funcionalidade de aplicativo.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。`,\n's1b9047d53d9f9d22': `2) ナビゲーションバーで共有を押す`,\n's37a9e8aec5713460': `展開`,\n's5c6aad7a7e4a1437': `3) 「ホーム画面に追加」を押す`,\n's6196153c4b0c1ea0': `インストール`,\n's922329d6f6213590': `Dockに追加`,\n'sa5ef80b4bb9b39f8': `折りたたむ`,\n'sa7551383d1897fcc': `2) 「Dockに追加」を押す`,\n'sba52286c21552a4e': `デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。`,\n'sc79fd7641eb9a975': `説明を非表示`,\n'scdaf4bbff76674c8': `ホーム画面に追加`,\n'sdfe23506a3b0cdc8': `1) Safariで開く`,\n'se740f75b95a51807': `ドックに追加して、幅広い体験と簡単なアクセスを実現してください。`,\n'sfea652f6580ff086': `このサイトはアプリ機能があります。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.`,\n's1b9047d53d9f9d22': `2) Tryck på Dela-knappen i verktygsfältet`,\n's37a9e8aec5713460': `Mer`,\n's5c6aad7a7e4a1437': `3) Välj Lägg till på hemskärmen`,\n's6196153c4b0c1ea0': `Installera`,\n's922329d6f6213590': `Lägg till i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Välj Lägg till i Dock`,\n'sba52286c21552a4e': `Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sc79fd7641eb9a975': `Göm instruktioner`,\n'scdaf4bbff76674c8': `Lägg till på hemskärmen`,\n'sdfe23506a3b0cdc8': `1) Öppna i Safari`,\n'se740f75b95a51807': `Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sfea652f6580ff086': `Denna webbsajt har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.`,\n's1b9047d53d9f9d22': `2) 내비게이션 바에서 공유 버튼 누르기`,\n's37a9e8aec5713460': `더보기`,\n's5c6aad7a7e4a1437': `3) 홈 화면에 추가 버튼 누르기`,\n's6196153c4b0c1ea0': `설치`,\n's922329d6f6213590': `Dock에 추가`,\n'sa5ef80b4bb9b39f8': `닫기`,\n'sa7551383d1897fcc': `2) Dock에 추가 버튼 누르기`,\n'sba52286c21552a4e': `더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.`,\n'sc79fd7641eb9a975': `안내 숨기기`,\n'scdaf4bbff76674c8': `홈 화면에 추가`,\n'sdfe23506a3b0cdc8': `1) Safari 브라우저에서 열기`,\n'se740f75b95a51807': `더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.`,\n'sfea652f6580ff086': `이 사이트는 앱 기능을 가지고 있습니다.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n's1b9047d53d9f9d22': `2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ`,\n's37a9e8aec5713460': `បង្ហាញបន្ថែម`,\n's5c6aad7a7e4a1437': `3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n's6196153c4b0c1ea0': `តំឡើង`,\n's922329d6f6213590': `បន្ថែមទៅកាន់ Dock`,\n'sa5ef80b4bb9b39f8': `បង្ហាញតិច`,\n'sa7551383d1897fcc': `2) ចុចលើ បន្ថែមទៅកាន់ Dock`,\n'sba52286c21552a4e': `តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sc79fd7641eb9a975': `បិទការណែនាំ`,\n'scdaf4bbff76674c8': `បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n'sdfe23506a3b0cdc8': `1) បើកនៅក្នុងកម្មវិធី Safari`,\n'se740f75b95a51807': `បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sfea652f6580ff086': `គេហទំព័រនេះមានមុខងារជាកម្មវិធី។`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.`,\n's1b9047d53d9f9d22': `2) Tryk på Del-knappen i navigationslinjen`,\n's37a9e8aec5713460': `Mere`,\n's5c6aad7a7e4a1437': `3) Vælg Tilføj til hjemmeskærm`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Tilføj til Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Vælg Tilføj til Dock`,\n'sba52286c21552a4e': `Installer den på din enhed for en bedre oplevelse og nem adgang.`,\n'sc79fd7641eb9a975': `Skjul instruktion`,\n'scdaf4bbff76674c8': `Tilføj til hjemmeskærm`,\n'sdfe23506a3b0cdc8': `1) Åbn i Safari-browseren`,\n'se740f75b95a51807': `Tilføj den til din Dock for en bedre oplevelse og nem adgang.`,\n'sfea652f6580ff086': `Denne side har app-funktionalitet.`,\n };\n ","import { configureLocalization } from '@lit/localize';\r\nimport {\r\n sourceLocale,\r\n targetLocales,\r\n} from './locale-codes';\r\n\r\nimport * as ru from './locales/ru';\r\nimport * as tr from './locales/tr';\r\nimport * as de from \"./locales/de\";\r\nimport * as es from \"./locales/es\";\r\nimport * as nl from \"./locales/nl\";\r\nimport * as el from \"./locales/el\";\r\nimport * as fr from \"./locales/fr\";\r\nimport * as sr from \"./locales/sr\";\r\nimport * as pl from \"./locales/pl\";\r\nimport * as uk from \"./locales/uk\";\r\nimport * as zhHK from \"./locales/zh-HK\";\r\nimport * as zhCN from \"./locales/zh-CN\";\r\nimport * as it from \"./locales/it\";\r\nimport * as cs from \"./locales/cs\";\r\nimport * as no from \"./locales/no\";\r\nimport * as pt from \"./locales/pt\";\r\nimport * as ja from \"./locales/ja\";\r\nimport * as sv from \"./locales/sv\";\r\nimport * as ko from \"./locales/ko\";\r\nimport * as km from \"./locales/km\";\r\nimport * as da from \"./locales/da\";\r\n\r\nconst localizedTemplates = new Map([\r\n ['ru', ru],\r\n ['tr', tr],\r\n ['de', de],\r\n ['es', es],\r\n ['nl', nl],\r\n ['el', el],\r\n ['fr', fr],\r\n ['sr', sr],\r\n ['pl', pl],\r\n ['uk', uk],\r\n ['zh-HK', zhHK],\r\n ['zh-CN', zhCN],\r\n ['it', it],\r\n ['cs', cs],\r\n ['no', no], // + nb\r\n ['pt', pt],\r\n ['ja', ja],\r\n ['sv', sv],\r\n ['ko', ko],\r\n ['km', km],\r\n ['da', da],\r\n])\r\n\r\nexport const { getLocale, setLocale } = configureLocalization({\r\n sourceLocale,\r\n targetLocales,\r\n // @ts-ignore\r\n loadLocale: async (lang: string) => localizedTemplates.get(lang)\r\n});\r\n\r\nexport const changeLocale = (lang: string) => {\r\n // Norwegian Bokmål is same as Norwegian\r\n switch (lang.slice(0, 2)) {\r\n case 'nb':\r\n lang = 'no';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // Fallback to simplified Chinese\r\n switch (lang) {\r\n case 'zh':\r\n case 'zh-TW':\r\n lang = 'zh-CN';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n try {\r\n if (localizedTemplates.get(lang))\r\n setLocale(lang);\r\n else\r\n setLocale(lang.slice(0, 2));\r\n }\r\n catch {\r\n console.warn(`pwa-install: translation error - unsupported locale: ${lang}`);\r\n }\r\n};\r\n","import { ImageResource } from 'web-app-manifest';\r\n\r\nexport interface IRelatedApp {\r\n id: string,\r\n platform: string,\r\n url: string\r\n}\r\n\r\nexport interface IWindow extends Window {\r\n defferedPromptEvent: BeforeInstallPromptEvent | null;\r\n}\r\n\r\ntype Booleanish = 'true' | 'false';\r\n\r\nexport interface PWAInstallAttributes {\r\n ['manual-apple']?: Booleanish;\r\n ['manual-chrome']?: Booleanish;\r\n ['disable-chrome']?: Booleanish;\r\n ['install-description']?: string;\r\n ['disable-install-description']?: Booleanish;\r\n ['manifest-url']?: string;\r\n name?: string;\r\n description?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ManifestScreenshot extends ImageResource {\r\n label?: string;\r\n platform?: string;\r\n form_factor?: \"wide\" | \"narrow\";\r\n}\r\n\r\nexport class Manifest {\r\n constructor() {\r\n this.icons = [{ src: '' }];\r\n this.screenshots = undefined;\r\n this.short_name = 'PWA';\r\n this.name = 'Progressive web application';\r\n this.description = 'Progressive web application';\r\n }\r\n short_name: string;\r\n icons: ImageResource[];\r\n screenshots?: ManifestScreenshot[];\r\n name: string;\r\n description: string;\r\n}\r\n","import {css} from 'lit'; export default css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`;\n ","import { WebAppManifest } from 'web-app-manifest';\r\nimport { IRelatedApp } from './types/types';\r\n\r\nconst _eventDispatcher = (_element: Element, name: string, message: string) => {\r\n const event = new CustomEvent(name, {\r\n detail: {\r\n message\r\n }\r\n });\r\n _element.dispatchEvent(event);\r\n}\r\nexport default class Utils {\r\n static isAppleMobile(): boolean {\r\n\t\tif (\r\n (\r\n ['iPhone', 'iPad', 'iPod'].includes(navigator.platform) ||\r\n (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2)\r\n )\r\n && ('serviceWorker' in navigator)\r\n )\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static isAppleDesktop(): boolean {\r\n // check if it's a mac\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n if (navigator.maxTouchPoints || !userAgent.match(/macintosh/))\r\n return false;\r\n // check safari version >= 17\r\n const version = /version\\/(\\d{2})\\./.exec(userAgent)\r\n if (!version || !version[1] || !(parseInt(version[1]) >= 17))\r\n return false;\r\n // hacky way to detect Sonoma\r\n const audioCheck = document.createElement('audio').canPlayType('audio/wav; codecs=\"1\"') ? true : false;\r\n const webGLCheck = new OffscreenCanvas(1, 1).getContext('webgl') ? true : false;\r\n\r\n return audioCheck && webGLCheck;\r\n }\r\n\r\n static deviceFormFactor(): 'narrow' | 'wide' {\r\n return window.matchMedia('(orientation: portrait)').matches? 'narrow' : 'wide';\r\n }\r\n \r\n static isStandalone() {\r\n\t\tif (window.matchMedia('(display-mode: standalone)').matches || ('standalone' in navigator && (navigator as any).standalone === true))\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static async getInstalledRelatedApps(): Promise {\r\n if ('getInstalledRelatedApps' in navigator)\r\n try{\r\n return await (navigator as any).getInstalledRelatedApps().then((relatedApps: IRelatedApp[]) => {\r\n return relatedApps;\r\n });\r\n } catch (e) {}\r\n \r\n return [];\r\n }\r\n \r\n static async isRelatedAppsInstalled(): Promise {\r\n const _relatedApps = await this.getInstalledRelatedApps();\r\n return _relatedApps.length? true : false;\r\n }\r\n\r\n static setStorageFlag(name: string, value:boolean, persistent: boolean = false) {\r\n try {\r\n if (persistent)\r\n localStorage.setItem(name, value.toString());\r\n else\r\n sessionStorage.setItem(name, value.toString());\r\n } catch (e) {}\r\n }\r\n static getStorageFlag(name: string): boolean {\r\n try {\r\n return sessionStorage.getItem(name) === 'true' || localStorage.getItem(name) === 'true';\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n static eventInstalledSuccess(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-success-event', 'App install success (Chromium/Android only)');\r\n }\r\n static eventInstalledFail(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-fail-event', 'App install failed (Chromium/Android only)');\r\n }\r\n static eventUserChoiceResult(_element: Element, message: string) {\r\n _eventDispatcher(_element, 'pwa-user-choice-result-event', message);\r\n }\r\n static eventInstallAvailable(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-available-event', 'App install available');\r\n }\r\n static eventInstallHowTo(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-how-to-event', 'App install instruction showed');\r\n }\r\n static eventGallery(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-gallery-event', 'App install gallery showed');\r\n }\r\n\r\n static normalizeManifestAssetUrls(manifest: WebAppManifest, manifestUrl: string) {\r\n const normalizedManifestUrl = new URL(manifestUrl, document.location.href);\r\n [...manifest.icons || [], ...manifest.screenshots || []].forEach(asset => {\r\n asset.src = new URL(asset.src, normalizedManifestUrl).href;\r\n })\r\n }\r\n}","import { html } from 'lit';\r\nimport Utils from '../utils';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nconst template = (screenshots: ManifestScreenshot[], theme: string, scrollToNextPage: any, scrollToPrevPage: any) => {\r\n\r\n return html`\r\n ${screenshots? html`\r\n
\r\n
\r\n
\r\n ${screenshots.filter(screenshot => !screenshot.form_factor || screenshot.form_factor === Utils.deviceFormFactor()).map(screenshot => html`${screenshot.label || \"\"}`)}\r\n
\r\n
\r\n \r\n ${theme != 'default'?\r\n html``\r\n :\r\n html``\r\n }\r\n \r\n \r\n ${theme != 'default'?\r\n html`\r\n \r\n `\r\n :\r\n html`\r\n \r\n \r\n \r\n `\r\n }\r\n \r\n
`\r\n : ''}`;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nimport styles from './styles-gallery.scss';\r\nimport template from './template-gallery';\r\n\r\n@customElement('pwa-gallery')\r\nexport default class PWAGalleryElement extends LitElement {\r\n\t@property({ type: Array }) screenshots: ManifestScreenshot[] = [];\r\n\t@property() theme: 'default' | 'apple_desktop' | 'apple_mobile' = 'default';\r\n\r\n\tstatic get styles() {\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tprivate getScrollElements = () => {\r\n\t\tconst gallery = this.shadowRoot?.querySelector('#paginated_gallery') as HTMLElement | null;\r\n\t\tif (!gallery) return;\r\n\t\t\r\n\t\tconst galleryScroller = gallery.querySelector('.gallery_scroller') as HTMLElement | null;\r\n\t\tif (!galleryScroller) return;\r\n\t\r\n\t\tconst galleryItems = Array.from(galleryScroller.querySelectorAll('img')) as HTMLElement[];\r\n\t\tif (galleryItems.length === 0) return;\r\n\t\r\n\t\treturn {\r\n\t\t\tscroller: galleryScroller,\r\n\t\t\titems: galleryItems\r\n\t\t};\r\n\t};\r\n\t\r\n\tprivate findCurrentItem = (scroller: HTMLElement, items: HTMLElement[]): HTMLElement | null => {\r\n\t\tconst scrollLeft = scroller.scrollLeft;\r\n\t \t// Find the item closest to the center of the viewport.\r\n\t\treturn items.find((item) => (item.offsetWidth + item.offsetLeft) >= scrollLeft + (item.offsetWidth / 2.5)) || null;\r\n\t};\r\n\t\r\n\tprivate scrollToPage = (direction: 'next' | 'prev') => {\r\n\t\tconst scrollData = this.getScrollElements();\r\n\t\tif (!scrollData) return;\r\n\t\r\n\t\tconst { scroller, items } = scrollData;\r\n\t\tconst currentItem = this.findCurrentItem(scroller, items);\r\n\t\tif (!currentItem) return;\r\n\t\r\n\t\tconst currentIndex = items.indexOf(currentItem);\r\n\t\tconst offset = direction === 'next' ? 1 : -1;\r\n\t\tconst targetIndex = currentIndex + offset;\r\n\t\t\r\n\t\tif (targetIndex >= 0 && targetIndex < items.length) {\r\n\t\t\titems[targetIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\r\n\t\t}\r\n\t};\r\n\t\r\n\tpublic scrollToNextPage = () => {\r\n\t\tthis.scrollToPage('next');\r\n\t};\r\n\t\r\n\tpublic scrollToPrevPage = () => {\r\n\t\tthis.scrollToPage('prev');\r\n\t};\r\n\r\n\r\n\tprivate _init = () => {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tconst _tools = this.getScrollElements();\r\n\t\tif (_tools)\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\t_tools.scroller.scrollTo({\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t300\r\n\t\t\t)\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\tthis._init();\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(\r\n this.screenshots,\r\n\t\t\tthis.theme,\r\n\t\t\tthis.scrollToNextPage,\r\n\t\t\tthis.scrollToPrevPage\r\n )}`;\r\n\t}\r\n}\r\n","import { html } from 'lit';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, icon: string, install: any) => {\r\n return html`\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${location.hostname}
\r\n
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\n\r\n// import TouchDragListener from \"./touch-listener\";\r\n\r\ntype IProps = {\r\n name: string,\r\n description: string,\r\n icon: string\r\n}\r\n\r\nimport template from './template-bottom-sheet';\r\nimport Utils from '../../../utils';\r\n\r\n@customElement('pwa-bottom-sheet')\r\nexport default class PWABottomSheetElement extends LitElement {\r\n\t@property({type: Object}) props: IProps = {\r\n name: '',\r\n description: '',\r\n icon: ''\r\n };\r\n @property({type: Object}) install = {handleEvent: () => {}};\r\n\t@property() hideDialog = () => {};\r\n\t@property() disableClose = false;\r\n\r\n\tprivate _callInstall = () => {\r\n\t\tthis.install.handleEvent();\r\n\t}\r\n\r\n\tprivate _callHide = () => {\r\n\t\tthis.hideDialog();\r\n\t\tthis.setupAppearence();\r\n\t}\r\n\r\n\tprivate bindedElement: {\r\n\t\ttouchElement: HTMLElement,\r\n\t\tlistener: any }| null = null;\r\n\tprivate readonly _saveBodyStyle = document.body.style.overscrollBehaviorY;\r\n\tprivate dragMobileSheet = (element: HTMLElement | null | undefined, touchTargetElement: HTMLElement | undefined, infoElement: HTMLElement | undefined) => {\r\n\t\tif (!element || !touchTargetElement || !infoElement)\r\n\t\t\treturn null;\r\n\r\n\t\tlet dragOffset = 0;\r\n\t\tconst bounceOffset = 35;\r\n\t\tconst bottomSize = touchTargetElement.clientHeight + infoElement.clientHeight;\r\n\r\n\t\tconst getYCoord = (e: MouseEvent | TouchEvent): number => {\r\n\t\t\treturn (e as MouseEvent).clientY || ((e as TouchEvent).changedTouches && (e as TouchEvent).changedTouches.length? (e as TouchEvent).changedTouches[0].clientY : 0);\r\n\t\t}\r\n\r\n\t\tconst dragMouseDown = (e: MouseEvent | TouchEvent) => {\r\n\t\t\twindow.addEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.addEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.addEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.addEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tdragOffset = getYCoord(e) - touchTargetElement.getBoundingClientRect().top;\r\n\r\n\t\t\tdocument.body.style.overscrollBehaviorY = 'none';\r\n\t\t}\r\n\t\tconst dragMouseUp = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tdocument.body.style.overscrollBehaviorY = this._saveBodyStyle;\r\n\r\n\t\t\tif (!this.disableClose && getYCoord(e) >= window.innerHeight - 25) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight + 50, true);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (window.innerHeight - getYCoord(e) > element.clientHeight / 2.5) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - element.clientHeight);\r\n\t\t\t\t\r\n\t\t\t\ttry {\r\n\t\t\t\t\tUtils.eventGallery((this.getRootNode() as ShadowRoot).host);\r\n\t\t\t\t} catch (e) {}\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - bottomSize - bounceOffset);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dragMouseMove = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tconst currentY = getYCoord(e);\r\n\r\n\t\t\tif (this.disableClose && window.innerHeight - currentY < 70) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (currentY <= (window.innerHeight - element.clientHeight + dragOffset)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`none`\r\n\t\t\t)\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"--translateY\",\r\n\t\t\t\t`translateY(${currentY - dragOffset}px)`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst closeDragElement = (e: MouseEvent | TouchEvent, toPoint?: number, hideDialog?: boolean) => {\r\n\t\t\twindow.removeEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.removeEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.removeEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.removeEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tif (window.innerWidth >= 768)\r\n\t\t\t\treturn\r\n\r\n\t\t\tif (!toPoint && getYCoord(e) >= window.innerHeight - bottomSize)\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(calc(100vh - ${bottomSize}px))`\r\n\t\t\t\t);\r\n\t\t\telse\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(${(toPoint || getYCoord(e)) + bounceOffset}px)`\r\n\t\t\t\t);\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s`\r\n\t\t\t);\r\n\r\n\t\t\tif (hideDialog){\r\n\t\t\t\ttouchTargetElement.removeEventListener('mousedown', dragMouseDown);\r\n\t\t\t\ttouchTargetElement.removeEventListener('touchstart', dragMouseDown);\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\tthis._callHide,\r\n\t\t\t\t\t250\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ttouchTargetElement.addEventListener('mousedown', dragMouseDown);\r\n\t\ttouchTargetElement.addEventListener('touchstart', dragMouseDown, {passive: true});\r\n\r\n\t\tcloseDragElement(new MouseEvent('mouseup'), window.innerHeight - bottomSize - bounceOffset);\r\n\r\n\t\treturn {\r\n\t\t\ttouchElement: touchTargetElement,\r\n\t\t\tlistener: dragMouseDown\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupAppearence = () => {\r\n\t\tif (this.bindedElement) {\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('mousedown', this.bindedElement.listener);\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('touchstart', this.bindedElement.listener);\r\n\t\t}\r\n\r\n\t\tthis.bindedElement = this.dragMobileSheet(\r\n\t\t\tthis.parentElement?.parentElement,\r\n\t\t\tthis.parentElement?.getElementsByClassName('touch-header')[0] as HTMLElement,\r\n\t\t\tthis.parentElement?.getElementsByClassName('body-header')[0] as HTMLElement);\r\n\t}\r\n\tprivate _init = () => {\r\n\t\tthis.setupAppearence();\r\n\r\n\t\twindow.addEventListener('resize', this.setupAppearence);\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tthis._init();\r\n return;\r\n\t}\r\n\r\n createRenderRoot() {\r\n return this;\r\n }\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(this.props.name, this.props.description, this.props.icon, this._callInstall)}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,\"Segoe UI\",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:\"\";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,\"Segoe UI\",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:\"\";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`;\n ","import {css} from 'lit'; export default css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,\"Segoe UI\";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon description\" \"welcome welcome\" \"how-to how-to\" \"gallery gallery\" \"button button\";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon\" \"description\" \"welcome\" \"how-to\" \"gallery\" \"button\";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;\n ","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"classMap\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_directives_class_map_js_2f88e643__.classMap) });","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, install: any, toggleGallery: any, galleryRequested: boolean) => {\r\n const installDialogClasses = () => { return {available: installAvailable, gallery: galleryRequested }};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n ${!disableClose? html`` : ''}\r\n
\r\n
${location.hostname}
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n ${!disableDescription? \r\n html`
${installDescription? installDescription: `${msg('This site has app functionality.')} ${msg('Install it on your device for extensive experience and easy access.')}`}
` \r\n : ''}\r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n ${screenshotsAvailable? html``:''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n
\r\n
`;\r\n};\r\nexport default template;\r\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, howToForApple: any, isDesktop: boolean, howToRequested: boolean, toggleGallery: any, galleryRequested: boolean) => {\r\n const installDialogClassesApple = () => { return {available: installAvailable, 'how-to': howToRequested, gallery: galleryRequested, desktop: isDesktop}};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, PropertyValues, html } from 'lit';\r\nimport { localized } from '@lit/localize';\r\nimport { property, state, customElement } from 'lit/decorators.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { changeLocale } from './localization';\r\n\r\nimport { IRelatedApp, Manifest, IWindow, PWAInstallAttributes } from './types/types';\r\n\r\nimport PWAGalleryElement from './gallery';\r\nimport PWABottomSheetElement from './templates/chrome/bottom-sheet';\r\n\r\nimport Utils from './utils';\r\n\r\ndeclare const window: IWindow;\r\n\r\nimport styles from './templates/chrome/styles.scss';\r\nimport stylesApple from './templates/apple/styles-apple.scss';\r\n\r\nimport template from './templates/chrome/template';\r\nimport templateApple from './templates/apple/template-apple';\r\n\r\n/**\r\n * @event {CustomEvent} pwa-install-success-event - App install success (Chromium/Android only)\r\n * @event {CustomEvent} pwa-install-fail-event - App install failed (Chromium/Android only)\r\n * @event {CustomEvent} pwa-user-choice-result-event - dismissed, accepted\r\n * @event {CustomEvent} pwa-install-available-event - App install available\r\n * @event {CustomEvent} pwa-install-how-to-event - App install instruction showed\r\n * @event {CustomEvent} pwa-install-gallery-event - App install gallery showed\r\n */\r\n@localized()\r\n@customElement('pwa-install')\r\nexport class PWAInstallElement extends LitElement {\r\n\t@property({attribute: 'manifest-url'}) manifestUrl = '/manifest.json';\r\n\t@property() icon = '';\r\n\t@property() name = '';\r\n\t@property() description = '';\r\n\t@property({attribute: 'install-description'}) installDescription = '';\r\n\t@property({attribute: 'disable-install-description', type: Boolean}) disableDescription = false;\r\n\t@property({attribute: 'disable-screenshots', type: Boolean}) disableScreenshots = false;\r\n\t@property({attribute: 'disable-screenshots-apple', type: Boolean}) disableScreenshotsApple = false;\r\n\t@property({attribute: 'disable-screenshots-chrome', type: Boolean}) disableScreenshotsChrome = false;\r\n\t@property({attribute: 'manual-apple', type: Boolean}) manualApple = false;\r\n\t@property({attribute: 'manual-chrome', type: Boolean}) manualChrome = false;\r\n\t@property({attribute: 'disable-chrome', type: Boolean}) disableChrome = false;\r\n\t@property({attribute: 'disable-close', type: Boolean}) disableClose = false;\r\n\t@property({attribute: 'use-local-storage', type: Boolean}) useLocalStorage = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn [ styles, stylesApple ];\r\n\t}\r\n\r\n\t@state() externalPromptEvent: BeforeInstallPromptEvent | null = null;\r\n\r\n\tpublic platforms: BeforeInstallPromptEvent['platforms'] = [];\r\n\tpublic userChoiceResult = '';\r\n\r\n\tpublic isDialogHidden: boolean = Utils.getStorageFlag('pwa-hide-install');\r\n\tpublic isInstallAvailable = false;\r\n\tpublic isAppleMobilePlatform = false;\r\n\tpublic isAppleDesktopPlatform = false;\r\n\tpublic isUnderStandaloneMode = false;\r\n\tpublic isRelatedAppsInstalled = false;\r\n\r\n\t/** @internal */\r\n\tprivate _manifest: WebAppManifest = new Manifest();\r\n\t/** @internal */\r\n\tprivate _howToRequested = false;\r\n\t/** @internal */\r\n\tprivate _galleryRequested = false;\r\n\t/** @internal */\r\n\tprivate _install = {\r\n\t\thandleEvent: () => {\r\n\t\t\tif (window.defferedPromptEvent) {\r\n\t\t\t\tthis.hideDialog();\r\n\t\t\t\twindow.defferedPromptEvent.prompt();\r\n\t\t\t\twindow.defferedPromptEvent.userChoice\r\n\t\t\t\t\t.then((choiceResult: PromptResponseObject) => {\r\n\t\t\t\t\t\tthis.userChoiceResult = choiceResult.outcome;\r\n\t\t\t\t\t\tUtils.eventUserChoiceResult(this, this.userChoiceResult);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tUtils.eventInstalledFail(this);\r\n\t\t\t\t\t});\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\tpublic install = () => {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis._howToRequested = true;\r\n\t\t\tthis.requestUpdate();\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._install.handleEvent();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialog = {\r\n\t\thandleEvent: () => {\r\n\t\t\tthis.isDialogHidden = true;\r\n\t\t\tUtils.setStorageFlag('pwa-hide-install', true, this.useLocalStorage);\r\n\t\t\tthis.requestUpdate();\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialogUser = () => {\r\n\t\tUtils.eventUserChoiceResult(this, 'dismissed');\r\n\t\tthis.userChoiceResult = 'dismissed';\r\n\t\tthis.hideDialog();\r\n\t}\r\n\tpublic hideDialog = () => {\r\n\t\tthis._hideDialog.handleEvent();\r\n\t}\r\n\tpublic showDialog = (forced = false) => {\r\n\t\tthis.isDialogHidden = false;\r\n\t\tif (forced)\r\n\t\t\tthis.isInstallAvailable = true;\r\n\t\tUtils.setStorageFlag('pwa-hide-install', false, this.useLocalStorage);\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tpublic getInstalledRelatedApps = async (): Promise => {\r\n\t\treturn await Utils.getInstalledRelatedApps();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _howToForApple = {\r\n handleEvent: () => {\r\n\t\t\tthis._howToRequested = !this._howToRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._galleryRequested = false;\r\n\t\t\tthis.requestUpdate();\r\n\r\n\t\t\tif (this._howToRequested) {\r\n\t\t\t\tUtils.eventInstallHowTo(this);\r\n\t\t\t}\t\t\t\t\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate _toggleGallery = {\r\n handleEvent: () => {\r\n\t\t\tthis._galleryRequested = !this._galleryRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._howToRequested = false;\r\n\r\n\t\t\tthis._galleryRequested && Utils.eventGallery(this);\r\n\r\n\t\t\tthis.requestUpdate();\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate async _checkInstalled() {\r\n\t\tthis.isUnderStandaloneMode = Utils.isStandalone();\r\n\t\tthis.isRelatedAppsInstalled = await Utils.isRelatedAppsInstalled();\r\n\t\tthis.isAppleMobilePlatform = Utils.isAppleMobile();\r\n\t\tthis.isAppleDesktopPlatform = Utils.isAppleDesktop();\r\n\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tif (!this.isUnderStandaloneMode) {\r\n\t\t\t\tthis.manualApple && this.hideDialog();\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t1000\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.manualChrome && this.hideDialog();\r\n\t\t}\r\n\t}\r\n\t/** @internal */\r\n\tprivate _init = async () => {\r\n\t\twindow.defferedPromptEvent = null;\r\n\r\n\t\tthis._checkInstalled();\r\n\r\n\t\tif (!this.disableChrome) {\r\n\t\t\tconst _promptHandler = (e: BeforeInstallPromptEvent) => {\r\n\t\t\t\twindow.defferedPromptEvent = e;\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.platforms = e.platforms;\r\n\r\n\t\t\t\tif (this.isRelatedAppsInstalled || this.isUnderStandaloneMode) {\r\n\t\t\t\t\tthis.isInstallAvailable = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userChoiceResult === 'accepted'){\r\n\t\t\t\t\tthis.isDialogHidden = true;\r\n\t\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t\tif (this.externalPromptEvent != null)\r\n\t\t\t\tsetTimeout(() => _promptHandler(this.externalPromptEvent!), 300);\r\n\t\t\telse\r\n\t\t\t\twindow.addEventListener('beforeinstallprompt', _promptHandler);\r\n\t\t}\r\n\r\n\t\twindow.addEventListener('appinstalled', (e) => {\r\n\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\tthis.isInstallAvailable = false;\r\n\r\n\t\t\tthis.requestUpdate();\r\n\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t});\r\n\r\n\r\n\t\ttry{\r\n\t\t\tconst _response = await fetch(this.manifestUrl);\r\n\t\t\tconst _json = await _response.json() as WebAppManifest;\r\n\t\t\tif (!_response.ok || !_json || !Object.keys(_json))\r\n\t\t\t\tthrow new Error('Manifest not found');\r\n\t\t\tUtils.normalizeManifestAssetUrls(_json, this.manifestUrl);\r\n\t\t\t\r\n\t\t\tthis.icon = this.icon || _json.icons?.length ? _json.icons![0].src : '';\r\n\t\t\tthis.name = this.name || _json['short_name'] || _json.name || '';\r\n\t\t\tthis.description = this.description || _json.description || '';\r\n\t\t\tthis._manifest = _json;\r\n\t\t}\r\n\t\tcatch(e) {\r\n\t\t\tthis.icon = this.icon || this._manifest.icons?.[0].src || '';\r\n\t\t\tthis.name = this.name || this._manifest['short_name'] || '';\r\n\t\t\tthis.description = this.description || this._manifest.description || '';\r\n\t\t}\r\n\t};\r\n\t/** @internal */\r\n\tprivate _requestUpdate = () => {\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tchangeLocale(navigator.language);\r\n\t\tthis._init();\r\n\t\tPWAGalleryElement.finalized;\r\n\t\tPWABottomSheetElement.finalized;\r\n\t\tsuper.connectedCallback();\r\n\t}\r\n\twillUpdate(changedProperties: PropertyValues) {\r\n\t\tif (this.externalPromptEvent && changedProperties.has('externalPromptEvent') && typeof this.externalPromptEvent == 'object') {\r\n\t\t this._init();\r\n\t\t}\r\n\t}\r\n\r\n\t// firstUpdated() {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\trender() {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform)\r\n\t\t\treturn html`${templateApple(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsApple,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._howToForApple,\r\n\t\t\t\tthis.isAppleDesktopPlatform,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested\r\n\t\t\t)}`;\r\n\t\telse\r\n\t\t\treturn html`${template(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsChrome,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._install,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested\r\n\t\t\t)}`;\r\n\t}\r\n}\r\n\r\nexport { PWAInstallAttributes };\r\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { updateWhenLocaleChanges } from './localized-controller.js';\n/**\n * Class decorator to enable re-rendering the given LitElement whenever a new\n * active locale has loaded.\n *\n * See also {@link updateWhenLocaleChanges} for the same functionality without\n * the use of decorators.\n *\n * When using lit-localize in transform mode, applications of this decorator are\n * removed.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {customElement} from 'lit/decorators.js';\n * import {msg, localized} from '@lit/localize';\n *\n * @localized()\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nexport const localized = () => (clazz, _context) => {\n clazz.addInitializer(updateWhenLocaleChanges);\n return clazz;\n};\n//# sourceMappingURL=localized-decorator.js.map"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","y","x","d","__WEBPACK_EXTERNAL_MODULE_lit__","joinStringsAndValues","strings","values","valueOrder","concat","i","length","defaultMsg","template","isStrTagged","val","msg","installed","LOCALE_STATUS_EVENT","LocalizeController","constructor","host","this","__litLocalizeEventHandler","event","detail","status","requestUpdate","hostConnected","window","addEventListener","hostDisconnected","removeEventListener","updateWhenLocaleChanges","addController","Deferred","settled","promise","Promise","resolve","reject","_resolve","_reject","error","hl","toString","generateMsgId","isHtmlTagged","str","t0","v0","t1","v1","t2","v2","t3","v3","charCodeAt","fnv1a64","join","expressionOrders","WeakMap","hashCache","Map","runtimeMsg","templates","options","id","undefined","set","generateId","localized","order","map","dispatchStatusEvent","dispatchEvent","CustomEvent","loadingLocale","sourceLocale","validLocales","loadLocale","activeLocale","loading","requestId","getLocale","setLocale","newLocale","Error","has","thisRequestId","then","mod","readyLocale","err","errorLocale","errorMessage","__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__","targetLocales","localizedTemplates","config","async","lang","impl","_installMsgImplementation","Set","add","Manifest","icons","src","screenshots","short_name","name","description","css","_eventDispatcher","_element","message","Utils","isAppleMobile","includes","navigator","platform","userAgent","match","maxTouchPoints","isAppleDesktop","toLowerCase","version","exec","parseInt","audioCheck","document","createElement","canPlayType","webGLCheck","OffscreenCanvas","getContext","deviceFormFactor","matchMedia","matches","isStandalone","standalone","getInstalledRelatedApps","relatedApps","e","isRelatedAppsInstalled","setStorageFlag","persistent","localStorage","setItem","sessionStorage","getStorageFlag","getItem","eventInstalledSuccess","eventInstalledFail","eventUserChoiceResult","eventInstallAvailable","eventInstallHowTo","eventGallery","normalizeManifestAssetUrls","manifest","manifestUrl","normalizedManifestUrl","URL","location","href","forEach","asset","theme","scrollToNextPage","scrollToPrevPage","html","PWAGalleryElement","LitElement","getScrollElements","gallery","shadowRoot","querySelector","galleryScroller","galleryItems","Array","from","querySelectorAll","scroller","items","findCurrentItem","scrollLeft","find","item","offsetWidth","offsetLeft","scrollToPage","direction","scrollData","currentItem","targetIndex","indexOf","scrollIntoView","behavior","block","inline","_init","styles","firstUpdated","_tools","setTimeout","scrollTo","top","left","connectedCallback","super","render","property","type","customElement","icon","install","PWABottomSheetElement","props","handleEvent","hideDialog","disableClose","_callInstall","_callHide","setupAppearence","bindedElement","_saveBodyStyle","body","style","overscrollBehaviorY","dragMobileSheet","element","touchTargetElement","infoElement","dragOffset","bottomSize","clientHeight","getYCoord","clientY","changedTouches","dragMouseDown","dragMouseUp","dragMouseMove","getBoundingClientRect","innerHeight","closeDragElement","getRootNode","currentY","setProperty","toPoint","innerWidth","passive","MouseEvent","touchElement","listener","parentElement","getElementsByClassName","createRenderRoot","__WEBPACK_EXTERNAL_MODULE_lit_directives_class_map_js_2f88e643__","installDescription","disableDescription","disableScreenshots","installAvailable","toggleGallery","galleryRequested","installDialogClasses","available","screenshotsAvailable","howToForApple","isDesktop","howToRequested","desktop","PWAInstallElement","disableScreenshotsApple","disableScreenshotsChrome","manualApple","manualChrome","disableChrome","useLocalStorage","externalPromptEvent","platforms","userChoiceResult","isDialogHidden","isInstallAvailable","isAppleMobilePlatform","isAppleDesktopPlatform","isUnderStandaloneMode","_manifest","_howToRequested","_galleryRequested","_install","defferedPromptEvent","prompt","userChoice","choiceResult","outcome","catch","_hideDialog","_hideDialogUser","showDialog","forced","_howToForApple","_toggleGallery","_checkInstalled","_promptHandler","preventDefault","_response","fetch","_json","json","ok","keys","_requestUpdate","slice","changeLocale","language","finalized","willUpdate","changedProperties","attribute","Boolean","state","clazz","_context","addInitializer"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/react-legacy/pwa-install.react-legacy.js b/dist/react-legacy/pwa-install.react-legacy.js index df305e8..eea15a2 100644 --- a/dist/react-legacy/pwa-install.react-legacy.js +++ b/dist/react-legacy/pwa-install.react-legacy.js @@ -1,2 +1,2 @@ -import*as e from"lit";import*as t from"lit/decorators.js";import*as a from"lit/directives/class-map.js";import*as l from"react";var i={d:(e,t)=>{for(var a in t)i.o(t,a)&&!i.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},o={};i.d(o,{A:()=>tt});var s={};i.r(s),i.d(s,{templates:()=>le});var n={};i.r(n),i.d(n,{templates:()=>ie});var r={};i.r(r),i.d(r,{templates:()=>oe});var d={};i.r(d),i.d(d,{templates:()=>se});var c={};i.r(c),i.d(c,{templates:()=>ne});var p={};i.r(p),i.d(p,{templates:()=>re});var b={};i.r(b),i.d(b,{templates:()=>de});var g={};i.r(g),i.d(g,{templates:()=>ce});var h={};i.r(h),i.d(h,{templates:()=>pe});var m={};i.r(m),i.d(m,{templates:()=>be});var f={};i.r(f),i.d(f,{templates:()=>ge});var u={};i.r(u),i.d(u,{templates:()=>he});var v={};i.r(v),i.d(v,{templates:()=>me});var w={};i.r(w),i.d(w,{templates:()=>fe});var y={};i.r(y),i.d(y,{templates:()=>ue});var x={};i.r(x),i.d(x,{templates:()=>ve});var k={};i.r(k),i.d(k,{templates:()=>we});var D={};i.r(D),i.d(D,{templates:()=>ye});var A={};i.r(A),i.d(A,{templates:()=>xe});var E={};i.r(E),i.d(E,{templates:()=>ke});var j={};i.r(j),i.d(j,{templates:()=>De});const S=(e=>{var t={};return i.d(t,e),t})({LitElement:()=>e.LitElement,css:()=>e.css,html:()=>e.html}),_=(e,t,a)=>{let l=e[0];for(let i=1;i{return"string"!=typeof(t=e)&&"strTag"in t?_(e.strings,e.values):e;var t};let P=z,L=!1;const I="lit-localize-status";class C{constructor(e){this.__litLocalizeEventHandler=e=>{"ready"===e.detail.status&&this.host.requestUpdate()},this.host=e}hostConnected(){window.addEventListener(I,this.__litLocalizeEventHandler)}hostDisconnected(){window.removeEventListener(I,this.__litLocalizeEventHandler)}}const $=e=>e.addController(new C(e));class M{constructor(){this.settled=!1,this.promise=new Promise(((e,t)=>{this._resolve=e,this._reject=t}))}resolve(e){this.settled=!0,this._resolve(e)}reject(e){this.settled=!0,this._reject(e)}}const R=[];for(let e=0;e<256;e++)R[e]=(e>>4&15).toString(16)+(15&e).toString(16);const T="",H="h",O="s";function U(e,t){return(t?H:O)+function(e){let t=0,a=8997,l=0,i=33826,o=0,s=40164,n=0,r=52210;for(let d=0;d>>16,a=65535&t,o+=l>>>16,i=65535&l,r=n+(o>>>16)&65535,s=65535&o;return R[r>>8]+R[255&r]+R[s>>8]+R[255&s]+R[i>>8]+R[255&i]+R[a>>8]+R[255&a]}("string"==typeof e?e:e.join(T))}const B=new WeakMap,q=new Map;function F(e,t,a){if(e){const l=a?.id??function(e){const t="string"==typeof e?e:e.strings;let a=q.get(t);void 0===a&&(a=U(t,"string"!=typeof e&&!("strTag"in e)),q.set(t,a));return a}(t),i=e[l];if(i){if("string"==typeof i)return i;if("strTag"in i)return _(i.strings,t.values,i.values);{let e=B.get(i);return void 0===e&&(e=i.values,B.set(i,e)),{...i,values:e.map((e=>t.values[e]))}}}}return z(t)}function N(e){window.dispatchEvent(new CustomEvent(I,{detail:e}))}let Y,Z,V,W,G,K="",Q=new M;Q.resolve();let J=0;const X=()=>K,ee=e=>{if(e===(Y??K))return Q.promise;if(!V||!W)throw Error("Internal error");if(!V.has(e))throw Error("Invalid locale code");J++;const t=J;Y=e,Q.settled&&(Q=new M),N({status:"loading",loadingLocale:e});return(e===Z?Promise.resolve({templates:void 0}):W(e)).then((a=>{J===t&&(K=e,Y=void 0,G=a.templates,N({status:"ready",readyLocale:e}),Q.resolve())}),(a=>{J===t&&(N({status:"error",errorLocale:e,errorMessage:a.toString()}),Q.reject(a))})),Q.promise};const te=(e=>{var t={};return i.d(t,e),t})({customElement:()=>t.customElement,property:()=>t.property,state:()=>t.state}),ae=["cs","da","de","el","es","fr","it","ja","km","ko","nl","no","pl","pt","ru","sr","sv","tr","uk","zh-CN","zh-HK"],le={s182ab2d6c997515f:"Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.",s1b9047d53d9f9d22:'2) Нажать "Поделиться"',s37a9e8aec5713460:"Подробнее",s5c6aad7a7e4a1437:'3) Нажать "На экран «Домой»"',s6196153c4b0c1ea0:"Установить",s922329d6f6213590:"Добавить в Dock",sa5ef80b4bb9b39f8:"Свернуть",sa7551383d1897fcc:'2) Нажмите "Добавить в Dock"',sba52286c21552a4e:"Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.",sc79fd7641eb9a975:"Спрятать Инструкцию",scdaf4bbff76674c8:"На экран «Домой»",sdfe23506a3b0cdc8:"1) Открыть в Safari браузере",se740f75b95a51807:"Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.",sfea652f6580ff086:"Этот веб-сайт имеет функционал приложения."},ie={s182ab2d6c997515f:"Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.",s1b9047d53d9f9d22:"2) Gezinme çubuğunda Paylaş'a basın",s37a9e8aec5713460:"Daha Fazla",s5c6aad7a7e4a1437:"3) Ana Ekrana Ekle'ye basın",s6196153c4b0c1ea0:"Yükle",s922329d6f6213590:"Dock’a Ekle",sa5ef80b4bb9b39f8:"Küçült",sa7551383d1897fcc:"2) Dock’a ekleye basın",sba52286c21552a4e:"Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.",sc79fd7641eb9a975:"Talimatları gizle",scdaf4bbff76674c8:"Ana Ekrana Ekle",sdfe23506a3b0cdc8:"1) Safari tarayıcısında açın",se740f75b95a51807:"Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.",sfea652f6580ff086:"Bu site uygulama işlevselliğine sahiptir."},oe={s182ab2d6c997515f:"Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",s1b9047d53d9f9d22:"2) Drücken Sie auf Teilen in der Navigationsleiste",s37a9e8aec5713460:"Mehr",s5c6aad7a7e4a1437:"3) Drücken Sie Hinzufügen zum Startbildschirm",s6196153c4b0c1ea0:"Installieren",s922329d6f6213590:"Zum Dock hinzufügen",sa5ef80b4bb9b39f8:"Weniger",sa7551383d1897fcc:"2) Drücken Sie auf Zum Dock hinzufügen",sba52286c21552a4e:"Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.",sc79fd7641eb9a975:"Anleitung ausblenden",scdaf4bbff76674c8:"Hinzufügen zum Startbildschirm",sdfe23506a3b0cdc8:"1) In Safari-Browser öffnen",se740f75b95a51807:"Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",sfea652f6580ff086:"Diese Website verfügt über App-Funktionalität."},se={s182ab2d6c997515f:"Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.",s1b9047d53d9f9d22:"2) Presionar Compartir en la barra de direcciones",s37a9e8aec5713460:"Más",s5c6aad7a7e4a1437:"3) Presionar Añadir a pantalla de inicio",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Añadir al Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Presionar Añadir al Dock",sba52286c21552a4e:"Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.",sc79fd7641eb9a975:"Esconder instrucciones",scdaf4bbff76674c8:"Añadir a pantalla de inicio",sdfe23506a3b0cdc8:"1) Abrir en el navegador web Safari",se740f75b95a51807:"Añádelo a tu Dock para una experiencia amplia y acceso fácil.",sfea652f6580ff086:"Este sitio tiene funcionalidad de aplicación."},ne={s182ab2d6c997515f:"Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.",s1b9047d53d9f9d22:"2) Druk op delen in de navigatiebalk",s37a9e8aec5713460:"Meer",s5c6aad7a7e4a1437:"3) Druk op Toevoegen aan het startscherm",s6196153c4b0c1ea0:"Installeren",s922329d6f6213590:"Toevoegen aan Dock",sa5ef80b4bb9b39f8:"Minder",sa7551383d1897fcc:"2) Druk op Toevoegen aan Dock",sba52286c21552a4e:"Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.",sc79fd7641eb9a975:"Instructie verbergen",scdaf4bbff76674c8:"Toevoegen aan het startscherm",sdfe23506a3b0cdc8:"1) Open in Safari-browser",se740f75b95a51807:"Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.",sfea652f6580ff086:"Deze site heeft app-functionaliteit."},re={s182ab2d6c997515f:"Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",s1b9047d53d9f9d22:"2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης",s37a9e8aec5713460:"Περισσότερα",s5c6aad7a7e4a1437:"3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας",s6196153c4b0c1ea0:"Εγκατάσταση",s922329d6f6213590:"Προσθήκη στην Πρόσβαση",sa5ef80b4bb9b39f8:"Λιγότερα",sa7551383d1897fcc:"2) Πατήστε Προσθήκη στην Πρόσβαση",sba52286c21552a4e:"Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sc79fd7641eb9a975:"Απόκρυψη Οδηγιών",scdaf4bbff76674c8:"Προσθήκη στην Οθόνη Αφετηρίας",sdfe23506a3b0cdc8:"1) Ανοίξτε τον περιηγητή Safari",se740f75b95a51807:"Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sfea652f6580ff086:"Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής."},de={s182ab2d6c997515f:"Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.",s1b9047d53d9f9d22:"2) Appuyez sur Partager dans la barre de navigation",s37a9e8aec5713460:"Plus",s5c6aad7a7e4a1437:"3) Appuyez sur Ajouter à l'écran d'accueil",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Ajouter au Dock",sa5ef80b4bb9b39f8:"Moins",sa7551383d1897fcc:"2) Appuyez sur Ajouter au Dock",sba52286c21552a4e:"Installez-le sur votre appareil pour une expérience complète et un accès facile.",sc79fd7641eb9a975:"Masquer les instructions",scdaf4bbff76674c8:"Ajouter à l'écran d'accueil",sdfe23506a3b0cdc8:"1) Ouvrir dans le navigateur Safari",se740f75b95a51807:"Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.",sfea652f6580ff086:"Ce site possède des fonctionnalités d'application."},ce={s182ab2d6c997515f:"Додајте га на Home Screen за широке могућности и лак приступ.",s1b9047d53d9f9d22:"2) Притисните Share у навигационој траци",s37a9e8aec5713460:"Више",s5c6aad7a7e4a1437:"3) Притисните Add to Home Screen",s6196153c4b0c1ea0:"Инсталирај",sa5ef80b4bb9b39f8:"Мање",sa7551383d1897fcc:"3) Притисните Add to Dock",sba52286c21552a4e:"Инсталирајте га на вашем уређају за широке могућности и лак приступ.",sc79fd7641eb9a975:"Сакриј упутство",sdfe23506a3b0cdc8:"1) Отворите у Safari прегледачу",se740f75b95a51807:"Додајте га у вашу Dock за широке могућности и лак приступ.",sfea652f6580ff086:"Овај сајт има функционалност апликације.",s922329d6f6213590:"Add to Dock",scdaf4bbff76674c8:"Add to Home Screen"},pe={s182ab2d6c997515f:"Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.",s1b9047d53d9f9d22:'2) Wybierz "Udostępnij"',s37a9e8aec5713460:"Więcej",s5c6aad7a7e4a1437:'3) Wybierz "Dodaj do Ekranu Głównego"',s6196153c4b0c1ea0:"Zainstaluj",s922329d6f6213590:"Dodaj do Docka",sa5ef80b4bb9b39f8:"Mniej",sa7551383d1897fcc:'2) Wybierz "Dodaj do Docka"',sba52286c21552a4e:"Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.",sc79fd7641eb9a975:"Ukryj instrukcję",scdaf4bbff76674c8:"Dodaj do Ekranu Głównego",sdfe23506a3b0cdc8:"1) Otwórz przeglądarkę Safari",se740f75b95a51807:"Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.",sfea652f6580ff086:"Ta strona posiada funkcje aplikacji."},be={s182ab2d6c997515f:"Додайте на Домашній екран для зручного доступу та ширших можливостей.",s1b9047d53d9f9d22:"2) Натиснути «Поділитися»",s37a9e8aec5713460:"Детальніше",s5c6aad7a7e4a1437:"3) Натиснути «На Початковий екран»",s6196153c4b0c1ea0:"Встановити",s922329d6f6213590:"Додати на Dock",sa5ef80b4bb9b39f8:"Згорнути",sa7551383d1897fcc:"2) Натиснути «Додати на Dock»",sba52286c21552a4e:"Встановіть на ваш пристрій для зручного доступу та ширших можливостей.",sc79fd7641eb9a975:"Сховати Інструкцію",scdaf4bbff76674c8:"На Початковий экран",sdfe23506a3b0cdc8:"1) Відкрити в Safari браузері",se740f75b95a51807:"Додайте на панель Dock для зручного доступу та ширших можливостей.",sfea652f6580ff086:"Цей сайт має функції додатку."},ge={s182ab2d6c997515f:"將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。",s1b9047d53d9f9d22:"2) 點擊列表上的分享按鈕",s37a9e8aec5713460:"詳細資訊",s5c6aad7a7e4a1437:"3) 點擊加入主畫面",s6196153c4b0c1ea0:"安裝",s922329d6f6213590:"添加到Dock欄",sa5ef80b4bb9b39f8:"簡短資訊",sa7551383d1897fcc:"2) 點選添加到Dock欄",sba52286c21552a4e:"在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。",sc79fd7641eb9a975:"隱藏安裝流程",scdaf4bbff76674c8:"將App加入主畫面",sdfe23506a3b0cdc8:"1) 在Safari上瀏覽此網頁",se740f75b95a51807:"將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。",sfea652f6580ff086:"此網站具有應用程式功能。"},he={s182ab2d6c997515f:"将其添加到主屏幕,以享受更丰富的体验并便于访问。",s1b9047d53d9f9d22:"2) 点击导航栏中的“分享”按钮",s37a9e8aec5713460:"更多",s5c6aad7a7e4a1437:"3) 点击“添加到主屏幕”",s6196153c4b0c1ea0:"安装",s922329d6f6213590:"添加到程序坞",sa5ef80b4bb9b39f8:"收起",sa7551383d1897fcc:"2) 点击“添加到程序坞”",sba52286c21552a4e:"在您的设备上安装,以享受更丰富的体验并便于访问。",sc79fd7641eb9a975:"隐藏安装步骤",scdaf4bbff76674c8:"添加到主屏幕",sdfe23506a3b0cdc8:"1) 在 Safari 浏览器中打开此页面",se740f75b95a51807:"将其添加到您的程序坞,以享受更全面的体验并便于访问。",sfea652f6580ff086:"此网站具备 App 功能特性。"},me={s182ab2d6c997515f:"Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.",s1b9047d53d9f9d22:"2) Premi Condividi nella barra di navigazione",s37a9e8aec5713460:"Più",s5c6aad7a7e4a1437:"3) Premi Aggiungi alla schermata principale",s6196153c4b0c1ea0:"Installa",s922329d6f6213590:"Aggiungi al Dock",sa5ef80b4bb9b39f8:"Meno",sa7551383d1897fcc:"2) Premi Aggiungi al Dock",sba52286c21552a4e:"Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.",sc79fd7641eb9a975:"Nascondi istruzioni",scdaf4bbff76674c8:"Aggiungi alla schermata principale",sdfe23506a3b0cdc8:"1) Apri nel browser Safari",se740f75b95a51807:"Aggiungilo al Dock per un'esperienza più completa e un accesso facile.",sfea652f6580ff086:"Questo sito ha funzionalità di app."},fe={s182ab2d6c997515f:"Přidejte jej na plochu pro rozšířené využití a snadný přístup.",s1b9047d53d9f9d22:"2) Stiskněte tlačítko Sdílet na navigačním panelu",s37a9e8aec5713460:"Vice",s5c6aad7a7e4a1437:"3) Stiskněte tlačítko Přidat na plochu",s6196153c4b0c1ea0:"Nainstalovat",s922329d6f6213590:"Přidat do Docku",sa5ef80b4bb9b39f8:"Méně",sa7551383d1897fcc:"2) Stiskněte Přidat do Docku",sba52286c21552a4e:"Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.",sc79fd7641eb9a975:"Skrýt instrukce",scdaf4bbff76674c8:"Přidat na plochu",sdfe23506a3b0cdc8:"1) Otevřete v prohlížeči Safari",se740f75b95a51807:"Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.",sfea652f6580ff086:"Tento web má funkce aplikace."},ue={s182ab2d6c997515f:"Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.",s1b9047d53d9f9d22:"2) Trykk på Del-knappen i navigasjonslinjen",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Velg Legg til på Hjem-skjerm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Legg til i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Velg Legg til i Dock",sba52286c21552a4e:"Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.",sc79fd7641eb9a975:"Skjul instruksjoner",scdaf4bbff76674c8:"Legg til på Hjem-skjerm",sdfe23506a3b0cdc8:"1) Åpne i Safari",se740f75b95a51807:"Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.",sfea652f6580ff086:"Denne siden har app-funksjonalitet."},ve={s182ab2d6c997515f:"Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.",s1b9047d53d9f9d22:"2) Pressione Compartilhar na barra de endereço",s37a9e8aec5713460:"Mais",s5c6aad7a7e4a1437:"3) Pressione Adicionar à Tela de Início",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Adicionar ao Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Pressione Adicionar ao Dock",sba52286c21552a4e:"Instale no dispositivo para uma melhor experiência e mais fácil acesso.",sc79fd7641eb9a975:"Ocultar Instruções",scdaf4bbff76674c8:"Adicionar à Tela de Início",sdfe23506a3b0cdc8:"1) Abra no navegador Safari",se740f75b95a51807:"Adicione ao Dock para uma melhor experiência e mais fácil acesso.",sfea652f6580ff086:"Este site possui funcionalidade de aplicativo."},we={s182ab2d6c997515f:"ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。",s1b9047d53d9f9d22:"2) ナビゲーションバーで共有を押す",s37a9e8aec5713460:"展開",s5c6aad7a7e4a1437:"3) 「ホーム画面に追加」を押す",s6196153c4b0c1ea0:"インストール",s922329d6f6213590:"Dockに追加",sa5ef80b4bb9b39f8:"折りたたむ",sa7551383d1897fcc:"2) 「Dockに追加」を押す",sba52286c21552a4e:"デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。",sc79fd7641eb9a975:"説明を非表示",scdaf4bbff76674c8:"ホーム画面に追加",sdfe23506a3b0cdc8:"1) Safariで開く",se740f75b95a51807:"ドックに追加して、幅広い体験と簡単なアクセスを実現してください。",sfea652f6580ff086:"このサイトはアプリ機能があります。"},ye={s182ab2d6c997515f:"Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.",s1b9047d53d9f9d22:"2) Tryck på Dela-knappen i verktygsfältet",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Välj Lägg till på hemskärmen",s6196153c4b0c1ea0:"Installera",s922329d6f6213590:"Lägg till i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Välj Lägg till i Dock",sba52286c21552a4e:"Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.",sc79fd7641eb9a975:"Göm instruktioner",scdaf4bbff76674c8:"Lägg till på hemskärmen",sdfe23506a3b0cdc8:"1) Öppna i Safari",se740f75b95a51807:"Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.",sfea652f6580ff086:"Denna webbsajt har app-funktionalitet."},xe={s182ab2d6c997515f:"더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.",s1b9047d53d9f9d22:"2) 내비게이션 바에서 공유 버튼 누르기",s37a9e8aec5713460:"더보기",s5c6aad7a7e4a1437:"3) 홈 화면에 추가 버튼 누르기",s6196153c4b0c1ea0:"설치",s922329d6f6213590:"Dock에 추가",sa5ef80b4bb9b39f8:"닫기",sa7551383d1897fcc:"2) Dock에 추가 버튼 누르기",sba52286c21552a4e:"더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.",sc79fd7641eb9a975:"안내 숨기기",scdaf4bbff76674c8:"홈 화면에 추가",sdfe23506a3b0cdc8:"1) Safari 브라우저에서 열기",se740f75b95a51807:"더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.",sfea652f6580ff086:"이 사이트는 앱 기능을 가지고 있습니다."},ke={s182ab2d6c997515f:"បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",s1b9047d53d9f9d22:"2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ",s37a9e8aec5713460:"បង្ហាញបន្ថែម",s5c6aad7a7e4a1437:"3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",s6196153c4b0c1ea0:"តំឡើង",s922329d6f6213590:"បន្ថែមទៅកាន់ Dock",sa5ef80b4bb9b39f8:"បង្ហាញតិច",sa7551383d1897fcc:"2) ចុចលើ បន្ថែមទៅកាន់ Dock",sba52286c21552a4e:"តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sc79fd7641eb9a975:"បិទការណែនាំ",scdaf4bbff76674c8:"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",sdfe23506a3b0cdc8:"1) បើកនៅក្នុងកម្មវិធី Safari",se740f75b95a51807:"បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sfea652f6580ff086:"គេហទំព័រនេះមានមុខងារជាកម្មវិធី។"},De={s182ab2d6c997515f:"Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.",s1b9047d53d9f9d22:"2) Tryk på Del-knappen i navigationslinjen",s37a9e8aec5713460:"Mere",s5c6aad7a7e4a1437:"3) Vælg Tilføj til hjemmeskærm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Tilføj til Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Vælg Tilføj til Dock",sba52286c21552a4e:"Installer den på din enhed for en bedre oplevelse og nem adgang.",sc79fd7641eb9a975:"Skjul instruktion",scdaf4bbff76674c8:"Tilføj til hjemmeskærm",sdfe23506a3b0cdc8:"1) Åbn i Safari-browseren",se740f75b95a51807:"Tilføj den til din Dock for en bedre oplevelse og nem adgang.",sfea652f6580ff086:"Denne side har app-funktionalitet."},Ae=new Map([["ru",s],["tr",n],["de",r],["es",d],["nl",c],["el",p],["fr",b],["sr",g],["pl",h],["uk",m],["zh-HK",f],["zh-CN",u],["it",v],["cs",w],["no",y],["pt",x],["ja",k],["sv",D],["ko",A],["km",E],["da",j]]),{getLocale:Ee,setLocale:je}=(Se={sourceLocale:"en",targetLocales:ae,loadLocale:async e=>Ae.get(e)},function(e){if(L)throw Error("lit-localize can only be configured once");P=e,L=!0}(((e,t)=>F(G,e,t))),K=Z=Se.sourceLocale,V=new Set(Se.targetLocales),V.add(Se.sourceLocale),W=Se.loadLocale,{getLocale:X,setLocale:ee});var Se;class _e{constructor(){this.icons=[{src:""}],this.screenshots=void 0,this.short_name="PWA",this.name="Progressive web application",this.description="Progressive web application"}}const ze=S.css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`,Pe=(e,t,a)=>{const l=new CustomEvent(t,{detail:{message:a}});e.dispatchEvent(l)};class Le{static isAppleMobile(){return!(!(["iPhone","iPad","iPod"].includes(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2)||!("serviceWorker"in navigator))}static isAppleDesktop(){const e=navigator.userAgent.toLowerCase();if(navigator.maxTouchPoints||!e.match(/macintosh/))return!1;const t=/version\/(\d{2})\./.exec(e);if(!(t&&t[1]&&parseInt(t[1])>=17))return!1;const a=!!document.createElement("audio").canPlayType('audio/wav; codecs="1"'),l=!!new OffscreenCanvas(1,1).getContext("webgl");return a&&l}static deviceFormFactor(){return window.matchMedia("(orientation: portrait)").matches?"narrow":"wide"}static isStandalone(){return!!(window.matchMedia("(display-mode: standalone)").matches||"standalone"in navigator&&!0===navigator.standalone)}static async getInstalledRelatedApps(){if("getInstalledRelatedApps"in navigator)try{return await navigator.getInstalledRelatedApps().then((e=>e))}catch(e){}return[]}static async isRelatedAppsInstalled(){return!!(await this.getInstalledRelatedApps()).length}static setStorageFlag(e,t,a=!1){try{a?localStorage.setItem(e,t.toString()):sessionStorage.setItem(e,t.toString())}catch(e){}}static getStorageFlag(e){try{return"true"===sessionStorage.getItem(e)||"true"===localStorage.getItem(e)}catch(e){return!1}}static eventInstalledSuccess(e){Pe(e,"pwa-install-success-event","App install success (Chromium/Android only)")}static eventInstalledFail(e){Pe(e,"pwa-install-fail-event","App install failed (Chromium/Android only)")}static eventUserChoiceResult(e,t){Pe(e,"pwa-user-choice-result-event",t)}static eventInstallAvailable(e){Pe(e,"pwa-install-available-event","App install available")}static eventInstallHowTo(e){Pe(e,"pwa-install-how-to-event","App install instruction showed")}static eventGallery(e){Pe(e,"pwa-install-gallery-event","App install gallery showed")}static normalizeManifestAssetUrls(e,t){const a=new URL(t,document.location.href);[...e.icons||[],...e.screenshots||[]].forEach((e=>{e.src=new URL(e.src,a).href}))}}const Ie=(e,t,a,l)=>S.html`${e?S.html``:""}`;var Ce=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},$e=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Me=class extends S.LitElement{constructor(){super(...arguments),this.screenshots=[],this.theme="default",this.getScrollElements=()=>{const e=this.shadowRoot?.querySelector("#paginated_gallery");if(!e)return;const t=e.querySelector(".gallery_scroller");if(!t)return;const a=Array.from(t.querySelectorAll("img"));return 0!==a.length?{scroller:t,items:a}:void 0},this.findCurrentItem=(e,t)=>{const a=e.scrollLeft;return t.find((e=>e.offsetWidth+e.offsetLeft>=a+e.offsetWidth/2.5))||null},this.scrollToPage=e=>{const t=this.getScrollElements();if(!t)return;const{scroller:a,items:l}=t,i=this.findCurrentItem(a,l);if(!i)return;const o=l.indexOf(i)+("next"===e?1:-1);o>=0&&o{this.scrollToPage("next")},this.scrollToPrevPage=()=>{this.scrollToPage("prev")},this._init=()=>{}}static get styles(){return ze}firstUpdated(){const e=this.getScrollElements();e&&setTimeout((()=>{e.scroller.scrollTo({top:0,left:0})}),300)}connectedCallback(){super.connectedCallback(),this._init()}render(){return S.html`${Ie(this.screenshots,this.theme,this.scrollToNextPage,this.scrollToPrevPage)}`}};Ce([(0,te.property)({type:Array}),$e("design:type",Array)],Me.prototype,"screenshots",void 0),Ce([(0,te.property)(),$e("design:type",String)],Me.prototype,"theme",void 0),Me=Ce([(0,te.customElement)("pwa-gallery")],Me);const Re=Me,Te=(e,t,a,l)=>S.html`
icon
${location.hostname}
${t?S.html`
${t}
`:""}`;var He=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},Oe=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Ue=class extends S.LitElement{constructor(){super(...arguments),this.props={name:"",description:"",icon:""},this.install={handleEvent:()=>{}},this.hideDialog=()=>{},this.disableClose=!1,this._callInstall=()=>{this.install.handleEvent()},this._callHide=()=>{this.hideDialog(),this.setupAppearence()},this.bindedElement=null,this._saveBodyStyle=document.body.style.overscrollBehaviorY,this.dragMobileSheet=(e,t,a)=>{if(!e||!t||!a)return null;let l=0;const i=t.clientHeight+a.clientHeight,o=e=>e.clientY||(e.changedTouches&&e.changedTouches.length?e.changedTouches[0].clientY:0),s=e=>{window.addEventListener("mouseup",n),window.addEventListener("mousemove",r),window.addEventListener("touchend",n),window.addEventListener("touchmove",r),l=o(e)-t.getBoundingClientRect().top,document.body.style.overscrollBehaviorY="none"},n=t=>{if(document.body.style.overscrollBehaviorY=this._saveBodyStyle,!this.disableClose&&o(t)>=window.innerHeight-25)d(t,window.innerHeight+50,!0);else if(window.innerHeight-o(t)>e.clientHeight/2.5){d(t,window.innerHeight-e.clientHeight);try{Le.eventGallery(this.getRootNode().host)}catch(t){}}else d(t,window.innerHeight-i-35)},r=t=>{const a=o(t);this.disableClose&&window.innerHeight-a<70||a<=window.innerHeight-e.clientHeight+l||(e.style.setProperty("transition","none"),e.style.setProperty("--translateY",`translateY(${a-l}px)`))},d=(a,l,d)=>{window.removeEventListener("mouseup",n),window.removeEventListener("mousemove",r),window.removeEventListener("touchend",n),window.removeEventListener("touchmove",r),window.innerWidth>=768||(!l&&o(a)>=window.innerHeight-i?e.style.setProperty("--translateY",`translateY(calc(100vh - ${i}px))`):e.style.setProperty("--translateY",`translateY(${(l||o(a))+35}px)`),e.style.setProperty("transition","transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s"),d&&(t.removeEventListener("mousedown",s),t.removeEventListener("touchstart",s),setTimeout(this._callHide,250)))};return t.addEventListener("mousedown",s),t.addEventListener("touchstart",s,{passive:!0}),d(new MouseEvent("mouseup"),window.innerHeight-i-35),{touchElement:t,listener:s}},this.setupAppearence=()=>{this.bindedElement&&(this.bindedElement.touchElement.removeEventListener("mousedown",this.bindedElement.listener),this.bindedElement.touchElement.removeEventListener("touchstart",this.bindedElement.listener)),this.bindedElement=this.dragMobileSheet(this.parentElement?.parentElement,this.parentElement?.getElementsByClassName("touch-header")[0],this.parentElement?.getElementsByClassName("body-header")[0])},this._init=()=>{this.setupAppearence(),window.addEventListener("resize",this.setupAppearence)}}firstUpdated(){this._init()}createRenderRoot(){return this}connectedCallback(){super.connectedCallback()}render(){return S.html`${Te(this.props.name,this.props.description,this.props.icon,this._callInstall)}`}};He([(0,te.property)({type:Object}),Oe("design:type",Object)],Ue.prototype,"props",void 0),He([(0,te.property)({type:Object}),Oe("design:type",Object)],Ue.prototype,"install",void 0),He([(0,te.property)(),Oe("design:type",Object)],Ue.prototype,"hideDialog",void 0),He([(0,te.property)(),Oe("design:type",Object)],Ue.prototype,"disableClose",void 0),Ue=He([(0,te.customElement)("pwa-bottom-sheet")],Ue);const Be=Ue,qe=S.css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,"Segoe UI",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:"";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,"Segoe UI",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:"";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`,Fe=S.css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,"Segoe UI";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:"icon description" "welcome welcome" "how-to how-to" "gallery gallery" "button button";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"icon" "description" "welcome" "how-to" "gallery" "button";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;const Ne=(e=>{var t={};return i.d(t,e),t})({classMap:()=>a.classMap}),Ye=(e,t,a,l,i,o,s,n,r,d,c,p,b)=>{const g=()=>({available:r,gallery:b}),h=!i&&n.screenshots&&n.screenshots.length;return S.html`
icon
${o?"":S.html``}
${location.hostname}
${t?S.html`
${t}
`:""} ${l?"":S.html`
${a||`${P("This site has app functionality.")} ${P("Install it on your device for extensive experience and easy access.")}`}
`} ${h?S.html``:""}
${h?S.html``:""}
${h?S.html``:""}
`},Ze=(e,t,a,l,i,o,s,n,r,d,c,p,b,g,h)=>{const m=!i&&n.screenshots&&n.screenshots.length;return S.html``};var Ve=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},We=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Ge=class extends S.LitElement{constructor(){super(...arguments),this.manifestUrl="/manifest.json",this.icon="",this.name="",this.description="",this.installDescription="",this.disableDescription=!1,this.disableScreenshots=!1,this.disableScreenshotsApple=!1,this.disableScreenshotsChrome=!1,this.manualApple=!1,this.manualChrome=!1,this.disableChrome=!1,this.disableClose=!1,this.useLocalStorage=!1,this.externalPromptEvent=null,this.platforms=[],this.userChoiceResult="",this.isDialogHidden=Le.getStorageFlag("pwa-hide-install"),this.isInstallAvailable=!1,this.isAppleMobilePlatform=!1,this.isAppleDesktopPlatform=!1,this.isUnderStandaloneMode=!1,this.isRelatedAppsInstalled=!1,this._manifest=new _e,this._howToRequested=!1,this._galleryRequested=!1,this._install={handleEvent:()=>{window.defferedPromptEvent&&(this.hideDialog(),window.defferedPromptEvent.prompt(),window.defferedPromptEvent.userChoice.then((e=>{this.userChoiceResult=e.outcome,Le.eventUserChoiceResult(this,this.userChoiceResult)})).catch((e=>{Le.eventInstalledFail(this)})),window.defferedPromptEvent=null)},passive:!0},this.install=()=>{this.isAppleMobilePlatform||this.isAppleDesktopPlatform?(this._howToRequested=!0,this.requestUpdate()):this._install.handleEvent()},this._hideDialog={handleEvent:()=>{this.isDialogHidden=!0,Le.setStorageFlag("pwa-hide-install",!0,this.useLocalStorage),this.requestUpdate()},passive:!0},this._hideDialogUser=()=>{Le.eventUserChoiceResult(this,"dismissed"),this.userChoiceResult="dismissed",this.hideDialog()},this.hideDialog=()=>{this._hideDialog.handleEvent()},this.showDialog=(e=!1)=>{this.isDialogHidden=!1,e&&(this.isInstallAvailable=!0),Le.setStorageFlag("pwa-hide-install",!1,this.useLocalStorage),this.requestUpdate()},this.getInstalledRelatedApps=async()=>await Le.getInstalledRelatedApps(),this._howToForApple={handleEvent:()=>{this._howToRequested=!this._howToRequested,this._howToRequested&&this._galleryRequested&&(this._galleryRequested=!1),this.requestUpdate(),this._howToRequested&&Le.eventInstallHowTo(this)},passive:!0},this._toggleGallery={handleEvent:()=>{this._galleryRequested=!this._galleryRequested,this._howToRequested&&this._galleryRequested&&(this._howToRequested=!1),this._galleryRequested&&Le.eventGallery(this),this.requestUpdate()},passive:!0},this._init=async()=>{if(window.defferedPromptEvent=null,this._checkInstalled(),!this.disableChrome){const e=e=>{window.defferedPromptEvent=e,e.preventDefault(),this.platforms=e.platforms,this.isRelatedAppsInstalled||this.isUnderStandaloneMode?this.isInstallAvailable=!1:(this.isInstallAvailable=!0,Le.eventInstallAvailable(this)),"accepted"===this.userChoiceResult&&(this.isDialogHidden=!0,Le.eventInstalledSuccess(this)),this.requestUpdate()};null!=this.externalPromptEvent?setTimeout((()=>e(this.externalPromptEvent)),300):window.addEventListener("beforeinstallprompt",e)}window.addEventListener("appinstalled",(e=>{window.defferedPromptEvent=null,this.isInstallAvailable=!1,this.requestUpdate(),Le.eventInstalledSuccess(this)}));try{const e=await fetch(this.manifestUrl),t=await e.json();if(!e.ok||!t||!Object.keys(t))throw Error("Manifest not found");Le.normalizeManifestAssetUrls(t,this.manifestUrl),this.icon=this.icon||t.icons?.length?t.icons[0].src:"",this.name=this.name||t.short_name||t.name||"",this.description=this.description||t.description||"",this._manifest=t}catch(e){this.icon=this.icon||this._manifest.icons?.[0].src||"",this.name=this.name||this._manifest.short_name||"",this.description=this.description||this._manifest.description||""}},this._requestUpdate=()=>{this.requestUpdate()}}static get styles(){return[qe,Fe]}async _checkInstalled(){this.isUnderStandaloneMode=Le.isStandalone(),this.isRelatedAppsInstalled=await Le.isRelatedAppsInstalled(),this.isAppleMobilePlatform=Le.isAppleMobile(),this.isAppleDesktopPlatform=Le.isAppleDesktop(),this.isAppleMobilePlatform||this.isAppleDesktopPlatform?this.isUnderStandaloneMode||(this.manualApple&&this.hideDialog(),setTimeout((()=>{this.isInstallAvailable=!0,this.requestUpdate(),Le.eventInstallAvailable(this)}),1e3)):this.manualChrome&&this.hideDialog()}connectedCallback(){(e=>{"nb"===e.slice(0,2)&&(e="no");switch(e){case"zh":case"zh-TW":e="zh-CN"}try{Ae.get(e)?je(e):je(e.slice(0,2))}catch{}})(navigator.language),this._init(),Re.finalized,Be.finalized,super.connectedCallback()}willUpdate(e){this.externalPromptEvent&&e.has("externalPromptEvent")&&"object"==typeof this.externalPromptEvent&&this._init()}render(){return this.isAppleMobilePlatform||this.isAppleDesktopPlatform?S.html`${Ze(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsApple,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._howToForApple,this.isAppleDesktopPlatform,this._howToRequested,this._toggleGallery,this._galleryRequested)}`:S.html`${Ye(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsChrome,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._install,this._toggleGallery,this._galleryRequested)}`}};Ve([(0,te.property)({attribute:"manifest-url"}),We("design:type",Object)],Ge.prototype,"manifestUrl",void 0),Ve([(0,te.property)(),We("design:type",Object)],Ge.prototype,"icon",void 0),Ve([(0,te.property)(),We("design:type",Object)],Ge.prototype,"name",void 0),Ve([(0,te.property)(),We("design:type",Object)],Ge.prototype,"description",void 0),Ve([(0,te.property)({attribute:"install-description"}),We("design:type",Object)],Ge.prototype,"installDescription",void 0),Ve([(0,te.property)({attribute:"disable-install-description",type:Boolean}),We("design:type",Object)],Ge.prototype,"disableDescription",void 0),Ve([(0,te.property)({attribute:"disable-screenshots",type:Boolean}),We("design:type",Object)],Ge.prototype,"disableScreenshots",void 0),Ve([(0,te.property)({attribute:"disable-screenshots-apple",type:Boolean}),We("design:type",Object)],Ge.prototype,"disableScreenshotsApple",void 0),Ve([(0,te.property)({attribute:"disable-screenshots-chrome",type:Boolean}),We("design:type",Object)],Ge.prototype,"disableScreenshotsChrome",void 0),Ve([(0,te.property)({attribute:"manual-apple",type:Boolean}),We("design:type",Object)],Ge.prototype,"manualApple",void 0),Ve([(0,te.property)({attribute:"manual-chrome",type:Boolean}),We("design:type",Object)],Ge.prototype,"manualChrome",void 0),Ve([(0,te.property)({attribute:"disable-chrome",type:Boolean}),We("design:type",Object)],Ge.prototype,"disableChrome",void 0),Ve([(0,te.property)({attribute:"disable-close",type:Boolean}),We("design:type",Object)],Ge.prototype,"disableClose",void 0),Ve([(0,te.property)({attribute:"use-local-storage",type:Boolean}),We("design:type",Object)],Ge.prototype,"useLocalStorage",void 0),Ve([(0,te.state)(),We("design:type",Object)],Ge.prototype,"externalPromptEvent",void 0),Ge=Ve([(e,t)=>(e.addInitializer($),e),(0,te.customElement)("pwa-install")],Ge);const Ke=new Set(["children","localName","ref","style","className"]),Qe=new WeakMap,Je=(e,t,a,l,i)=>{const o=i?.[t];void 0===o?(e[t]=a,null==a&&t in HTMLElement.prototype&&e.removeAttribute(t)):a!==l&&((e,t,a)=>{let l=Qe.get(e);void 0===l&&Qe.set(e,l=new Map);let i=l.get(t);void 0!==a?void 0===i?(l.set(t,i={handleEvent:a}),e.addEventListener(t,i)):i.handleEvent=a:void 0!==i&&(l.delete(t),e.removeEventListener(t,i))})(e,o,a)};const Xe=(e=>{var t={};return i.d(t,e),t})({default:()=>l.default}),et=(({react:e,tagName:t,elementClass:a,events:l,displayName:i})=>{const o=new Set(Object.keys(l??{})),s=e.forwardRef(((i,s)=>{const n=e.useRef(new Map),r=e.useRef(null),d={},c={};for(const[e,t]of Object.entries(i))Ke.has(e)?d["className"===e?"class":e]=t:o.has(e)||e in a.prototype?c[e]=t:d[e]=t;return e.useLayoutEffect((()=>{if(null===r.current)return;const e=new Map;for(const t in c)Je(r.current,t,i[t],n.current.get(t),l),n.current.delete(t),e.set(t,i[t]);for(const[e,t]of n.current)Je(r.current,e,void 0,t,l);n.current=e})),e.useLayoutEffect((()=>{r.current?.removeAttribute("defer-hydration")}),[]),d.suppressHydrationWarning=!0,e.createElement(t,{...d,ref:e.useCallback((e=>{r.current=e,"function"==typeof s?s(e):null!==s&&(s.current=e)}),[s])})}));return s.displayName=i??a.name,s})({react:Xe.default,tagName:"pwa-install",elementClass:Ge,events:{onPwaInstallSuccessEvent:"pwa-install-success-event",onPwaInstallFailEvent:"pwa-install-fail-event",onPwaUserChoiceResultEvent:"pwa-user-choice-result-event",onPwaInstallAvailableEvent:"pwa-install-available-event",onPwaInstallHowToEvent:"pwa-install-how-to-event",onPwaInstallGalleryEvent:"pwa-install-gallery-event"}}),tt=et;var at=o.A;export{at as default}; +import*as e from"lit";import*as t from"lit/decorators.js";import*as a from"lit/directives/class-map.js";import*as l from"react";var i={d:(e,t)=>{for(var a in t)i.o(t,a)&&!i.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},o={};i.d(o,{A:()=>Je});var s={};i.r(s),i.d(s,{templates:()=>ee});var n={};i.r(n),i.d(n,{templates:()=>te});var r={};i.r(r),i.d(r,{templates:()=>ae});var d={};i.r(d),i.d(d,{templates:()=>le});var c={};i.r(c),i.d(c,{templates:()=>ie});var p={};i.r(p),i.d(p,{templates:()=>oe});var b={};i.r(b),i.d(b,{templates:()=>se});var g={};i.r(g),i.d(g,{templates:()=>ne});var h={};i.r(h),i.d(h,{templates:()=>re});var m={};i.r(m),i.d(m,{templates:()=>de});var f={};i.r(f),i.d(f,{templates:()=>ce});var u={};i.r(u),i.d(u,{templates:()=>pe});var v={};i.r(v),i.d(v,{templates:()=>be});var w={};i.r(w),i.d(w,{templates:()=>ge});var y={};i.r(y),i.d(y,{templates:()=>he});var x={};i.r(x),i.d(x,{templates:()=>me});var k={};i.r(k),i.d(k,{templates:()=>fe});var D={};i.r(D),i.d(D,{templates:()=>ue});var A={};i.r(A),i.d(A,{templates:()=>ve});var E={};i.r(E),i.d(E,{templates:()=>we});var j={};i.r(j),i.d(j,{templates:()=>ye});const S=(e=>{var t={};return i.d(t,e),t})({LitElement:()=>e.LitElement,css:()=>e.css,html:()=>e.html}),_=(e,t,a)=>{let l=e[0];for(let i=1;i{return"string"!=typeof(t=e)&&"strTag"in t?_(e.strings,e.values):e;var t};let P=z,L=!1;const I="lit-localize-status";class C{constructor(e){this.__litLocalizeEventHandler=e=>{"ready"===e.detail.status&&this.host.requestUpdate()},this.host=e}hostConnected(){window.addEventListener(I,this.__litLocalizeEventHandler)}hostDisconnected(){window.removeEventListener(I,this.__litLocalizeEventHandler)}}const $=e=>e.addController(new C(e));class M{constructor(){this.settled=!1,this.promise=new Promise(((e,t)=>{this._resolve=e,this._reject=t}))}resolve(e){this.settled=!0,this._resolve(e)}reject(e){this.settled=!0,this._reject(e)}}const R=[];for(let e=0;e<256;e++)R[e]=(e>>4&15).toString(16)+(15&e).toString(16);function T(e,t){return(t?"h":"s")+function(e){let t=0,a=8997,l=0,i=33826,o=0,s=40164,n=0,r=52210;for(let d=0;d>>16,a=65535&t,o+=l>>>16,i=65535&l,r=n+(o>>>16)&65535,s=65535&o;return R[r>>8]+R[255&r]+R[s>>8]+R[255&s]+R[i>>8]+R[255&i]+R[a>>8]+R[255&a]}("string"==typeof e?e:e.join(""))}const H=new WeakMap,O=new Map;function U(e,t,a){if(e){const l=a?.id??function(e){const t="string"==typeof e?e:e.strings;let a=O.get(t);void 0===a&&(a=T(t,"string"!=typeof e&&!("strTag"in e)),O.set(t,a));return a}(t),i=e[l];if(i){if("string"==typeof i)return i;if("strTag"in i)return _(i.strings,t.values,i.values);{let e=H.get(i);return void 0===e&&(e=i.values,H.set(i,e)),{...i,values:e.map((e=>t.values[e]))}}}}return z(t)}function B(e){window.dispatchEvent(new CustomEvent(I,{detail:e}))}let q,F,N,Y,Z,V="",W=new M;W.resolve();let G=0;const K=()=>V,Q=e=>{if(e===(q??V))return W.promise;if(!N||!Y)throw Error("Internal error");if(!N.has(e))throw Error("Invalid locale code");G++;const t=G;q=e,W.settled&&(W=new M),B({status:"loading",loadingLocale:e});return(e===F?Promise.resolve({templates:void 0}):Y(e)).then((a=>{G===t&&(V=e,q=void 0,Z=a.templates,B({status:"ready",readyLocale:e}),W.resolve())}),(a=>{G===t&&(B({status:"error",errorLocale:e,errorMessage:a.toString()}),W.reject(a))})),W.promise};const J=(e=>{var t={};return i.d(t,e),t})({customElement:()=>t.customElement,property:()=>t.property,state:()=>t.state}),X=["cs","da","de","el","es","fr","it","ja","km","ko","nl","no","pl","pt","ru","sr","sv","tr","uk","zh-CN","zh-HK"],ee={s182ab2d6c997515f:"Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.",s1b9047d53d9f9d22:'2) Нажать "Поделиться"',s37a9e8aec5713460:"Подробнее",s5c6aad7a7e4a1437:'3) Нажать "На экран «Домой»"',s6196153c4b0c1ea0:"Установить",s922329d6f6213590:"Добавить в Dock",sa5ef80b4bb9b39f8:"Свернуть",sa7551383d1897fcc:'2) Нажмите "Добавить в Dock"',sba52286c21552a4e:"Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.",sc79fd7641eb9a975:"Спрятать Инструкцию",scdaf4bbff76674c8:"На экран «Домой»",sdfe23506a3b0cdc8:"1) Открыть в Safari браузере",se740f75b95a51807:"Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.",sfea652f6580ff086:"Этот веб-сайт имеет функционал приложения."},te={s182ab2d6c997515f:"Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.",s1b9047d53d9f9d22:"2) Gezinme çubuğunda Paylaş'a basın",s37a9e8aec5713460:"Daha Fazla",s5c6aad7a7e4a1437:"3) Ana Ekrana Ekle'ye basın",s6196153c4b0c1ea0:"Yükle",s922329d6f6213590:"Dock’a Ekle",sa5ef80b4bb9b39f8:"Küçült",sa7551383d1897fcc:"2) Dock’a ekleye basın",sba52286c21552a4e:"Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.",sc79fd7641eb9a975:"Talimatları gizle",scdaf4bbff76674c8:"Ana Ekrana Ekle",sdfe23506a3b0cdc8:"1) Safari tarayıcısında açın",se740f75b95a51807:"Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.",sfea652f6580ff086:"Bu site uygulama işlevselliğine sahiptir."},ae={s182ab2d6c997515f:"Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",s1b9047d53d9f9d22:"2) Drücken Sie auf Teilen in der Navigationsleiste",s37a9e8aec5713460:"Mehr",s5c6aad7a7e4a1437:"3) Drücken Sie Hinzufügen zum Startbildschirm",s6196153c4b0c1ea0:"Installieren",s922329d6f6213590:"Zum Dock hinzufügen",sa5ef80b4bb9b39f8:"Weniger",sa7551383d1897fcc:"2) Drücken Sie auf Zum Dock hinzufügen",sba52286c21552a4e:"Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.",sc79fd7641eb9a975:"Anleitung ausblenden",scdaf4bbff76674c8:"Hinzufügen zum Startbildschirm",sdfe23506a3b0cdc8:"1) In Safari-Browser öffnen",se740f75b95a51807:"Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",sfea652f6580ff086:"Diese Website verfügt über App-Funktionalität."},le={s182ab2d6c997515f:"Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.",s1b9047d53d9f9d22:"2) Presionar Compartir en la barra de direcciones",s37a9e8aec5713460:"Más",s5c6aad7a7e4a1437:"3) Presionar Añadir a pantalla de inicio",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Añadir al Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Presionar Añadir al Dock",sba52286c21552a4e:"Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.",sc79fd7641eb9a975:"Esconder instrucciones",scdaf4bbff76674c8:"Añadir a pantalla de inicio",sdfe23506a3b0cdc8:"1) Abrir en el navegador web Safari",se740f75b95a51807:"Añádelo a tu Dock para una experiencia amplia y acceso fácil.",sfea652f6580ff086:"Este sitio tiene funcionalidad de aplicación."},ie={s182ab2d6c997515f:"Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.",s1b9047d53d9f9d22:"2) Druk op delen in de navigatiebalk",s37a9e8aec5713460:"Meer",s5c6aad7a7e4a1437:"3) Druk op Toevoegen aan het startscherm",s6196153c4b0c1ea0:"Installeren",s922329d6f6213590:"Toevoegen aan Dock",sa5ef80b4bb9b39f8:"Minder",sa7551383d1897fcc:"2) Druk op Toevoegen aan Dock",sba52286c21552a4e:"Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.",sc79fd7641eb9a975:"Instructie verbergen",scdaf4bbff76674c8:"Toevoegen aan het startscherm",sdfe23506a3b0cdc8:"1) Open in Safari-browser",se740f75b95a51807:"Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.",sfea652f6580ff086:"Deze site heeft app-functionaliteit."},oe={s182ab2d6c997515f:"Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",s1b9047d53d9f9d22:"2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης",s37a9e8aec5713460:"Περισσότερα",s5c6aad7a7e4a1437:"3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας",s6196153c4b0c1ea0:"Εγκατάσταση",s922329d6f6213590:"Προσθήκη στην Πρόσβαση",sa5ef80b4bb9b39f8:"Λιγότερα",sa7551383d1897fcc:"2) Πατήστε Προσθήκη στην Πρόσβαση",sba52286c21552a4e:"Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sc79fd7641eb9a975:"Απόκρυψη Οδηγιών",scdaf4bbff76674c8:"Προσθήκη στην Οθόνη Αφετηρίας",sdfe23506a3b0cdc8:"1) Ανοίξτε τον περιηγητή Safari",se740f75b95a51807:"Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sfea652f6580ff086:"Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής."},se={s182ab2d6c997515f:"Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.",s1b9047d53d9f9d22:"2) Appuyez sur Partager dans la barre de navigation",s37a9e8aec5713460:"Plus",s5c6aad7a7e4a1437:"3) Appuyez sur Ajouter à l'écran d'accueil",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Ajouter au Dock",sa5ef80b4bb9b39f8:"Moins",sa7551383d1897fcc:"2) Appuyez sur Ajouter au Dock",sba52286c21552a4e:"Installez-le sur votre appareil pour une expérience complète et un accès facile.",sc79fd7641eb9a975:"Masquer les instructions",scdaf4bbff76674c8:"Ajouter à l'écran d'accueil",sdfe23506a3b0cdc8:"1) Ouvrir dans le navigateur Safari",se740f75b95a51807:"Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.",sfea652f6580ff086:"Ce site possède des fonctionnalités d'application."},ne={s182ab2d6c997515f:"Додајте га на Home Screen за широке могућности и лак приступ.",s1b9047d53d9f9d22:"2) Притисните Share у навигационој траци",s37a9e8aec5713460:"Више",s5c6aad7a7e4a1437:"3) Притисните Add to Home Screen",s6196153c4b0c1ea0:"Инсталирај",sa5ef80b4bb9b39f8:"Мање",sa7551383d1897fcc:"3) Притисните Add to Dock",sba52286c21552a4e:"Инсталирајте га на вашем уређају за широке могућности и лак приступ.",sc79fd7641eb9a975:"Сакриј упутство",sdfe23506a3b0cdc8:"1) Отворите у Safari прегледачу",se740f75b95a51807:"Додајте га у вашу Dock за широке могућности и лак приступ.",sfea652f6580ff086:"Овај сајт има функционалност апликације.",s922329d6f6213590:"Add to Dock",scdaf4bbff76674c8:"Add to Home Screen"},re={s182ab2d6c997515f:"Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.",s1b9047d53d9f9d22:'2) Wybierz "Udostępnij"',s37a9e8aec5713460:"Więcej",s5c6aad7a7e4a1437:'3) Wybierz "Dodaj do Ekranu Głównego"',s6196153c4b0c1ea0:"Zainstaluj",s922329d6f6213590:"Dodaj do Docka",sa5ef80b4bb9b39f8:"Mniej",sa7551383d1897fcc:'2) Wybierz "Dodaj do Docka"',sba52286c21552a4e:"Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.",sc79fd7641eb9a975:"Ukryj instrukcję",scdaf4bbff76674c8:"Dodaj do Ekranu Głównego",sdfe23506a3b0cdc8:"1) Otwórz przeglądarkę Safari",se740f75b95a51807:"Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.",sfea652f6580ff086:"Ta strona posiada funkcje aplikacji."},de={s182ab2d6c997515f:"Додайте на Домашній екран для зручного доступу та ширших можливостей.",s1b9047d53d9f9d22:"2) Натиснути «Поділитися»",s37a9e8aec5713460:"Детальніше",s5c6aad7a7e4a1437:"3) Натиснути «На Початковий екран»",s6196153c4b0c1ea0:"Встановити",s922329d6f6213590:"Додати на Dock",sa5ef80b4bb9b39f8:"Згорнути",sa7551383d1897fcc:"2) Натиснути «Додати на Dock»",sba52286c21552a4e:"Встановіть на ваш пристрій для зручного доступу та ширших можливостей.",sc79fd7641eb9a975:"Сховати Інструкцію",scdaf4bbff76674c8:"На Початковий экран",sdfe23506a3b0cdc8:"1) Відкрити в Safari браузері",se740f75b95a51807:"Додайте на панель Dock для зручного доступу та ширших можливостей.",sfea652f6580ff086:"Цей сайт має функції додатку."},ce={s182ab2d6c997515f:"將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。",s1b9047d53d9f9d22:"2) 點擊列表上的分享按鈕",s37a9e8aec5713460:"詳細資訊",s5c6aad7a7e4a1437:"3) 點擊加入主畫面",s6196153c4b0c1ea0:"安裝",s922329d6f6213590:"添加到Dock欄",sa5ef80b4bb9b39f8:"簡短資訊",sa7551383d1897fcc:"2) 點選添加到Dock欄",sba52286c21552a4e:"在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。",sc79fd7641eb9a975:"隱藏安裝流程",scdaf4bbff76674c8:"將App加入主畫面",sdfe23506a3b0cdc8:"1) 在Safari上瀏覽此網頁",se740f75b95a51807:"將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。",sfea652f6580ff086:"此網站具有應用程式功能。"},pe={s182ab2d6c997515f:"将其添加到主屏幕,以享受更丰富的体验并便于访问。",s1b9047d53d9f9d22:"2) 点击导航栏中的“分享”按钮",s37a9e8aec5713460:"更多",s5c6aad7a7e4a1437:"3) 点击“添加到主屏幕”",s6196153c4b0c1ea0:"安装",s922329d6f6213590:"添加到程序坞",sa5ef80b4bb9b39f8:"收起",sa7551383d1897fcc:"2) 点击“添加到程序坞”",sba52286c21552a4e:"在您的设备上安装,以享受更丰富的体验并便于访问。",sc79fd7641eb9a975:"隐藏安装步骤",scdaf4bbff76674c8:"添加到主屏幕",sdfe23506a3b0cdc8:"1) 在 Safari 浏览器中打开此页面",se740f75b95a51807:"将其添加到您的程序坞,以享受更全面的体验并便于访问。",sfea652f6580ff086:"此网站具备 App 功能特性。"},be={s182ab2d6c997515f:"Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.",s1b9047d53d9f9d22:"2) Premi Condividi nella barra di navigazione",s37a9e8aec5713460:"Più",s5c6aad7a7e4a1437:"3) Premi Aggiungi alla schermata principale",s6196153c4b0c1ea0:"Installa",s922329d6f6213590:"Aggiungi al Dock",sa5ef80b4bb9b39f8:"Meno",sa7551383d1897fcc:"2) Premi Aggiungi al Dock",sba52286c21552a4e:"Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.",sc79fd7641eb9a975:"Nascondi istruzioni",scdaf4bbff76674c8:"Aggiungi alla schermata principale",sdfe23506a3b0cdc8:"1) Apri nel browser Safari",se740f75b95a51807:"Aggiungilo al Dock per un'esperienza più completa e un accesso facile.",sfea652f6580ff086:"Questo sito ha funzionalità di app."},ge={s182ab2d6c997515f:"Přidejte jej na plochu pro rozšířené využití a snadný přístup.",s1b9047d53d9f9d22:"2) Stiskněte tlačítko Sdílet na navigačním panelu",s37a9e8aec5713460:"Vice",s5c6aad7a7e4a1437:"3) Stiskněte tlačítko Přidat na plochu",s6196153c4b0c1ea0:"Nainstalovat",s922329d6f6213590:"Přidat do Docku",sa5ef80b4bb9b39f8:"Méně",sa7551383d1897fcc:"2) Stiskněte Přidat do Docku",sba52286c21552a4e:"Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.",sc79fd7641eb9a975:"Skrýt instrukce",scdaf4bbff76674c8:"Přidat na plochu",sdfe23506a3b0cdc8:"1) Otevřete v prohlížeči Safari",se740f75b95a51807:"Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.",sfea652f6580ff086:"Tento web má funkce aplikace."},he={s182ab2d6c997515f:"Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.",s1b9047d53d9f9d22:"2) Trykk på Del-knappen i navigasjonslinjen",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Velg Legg til på Hjem-skjerm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Legg til i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Velg Legg til i Dock",sba52286c21552a4e:"Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.",sc79fd7641eb9a975:"Skjul instruksjoner",scdaf4bbff76674c8:"Legg til på Hjem-skjerm",sdfe23506a3b0cdc8:"1) Åpne i Safari",se740f75b95a51807:"Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.",sfea652f6580ff086:"Denne siden har app-funksjonalitet."},me={s182ab2d6c997515f:"Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.",s1b9047d53d9f9d22:"2) Pressione Compartilhar na barra de endereço",s37a9e8aec5713460:"Mais",s5c6aad7a7e4a1437:"3) Pressione Adicionar à Tela de Início",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Adicionar ao Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Pressione Adicionar ao Dock",sba52286c21552a4e:"Instale no dispositivo para uma melhor experiência e mais fácil acesso.",sc79fd7641eb9a975:"Ocultar Instruções",scdaf4bbff76674c8:"Adicionar à Tela de Início",sdfe23506a3b0cdc8:"1) Abra no navegador Safari",se740f75b95a51807:"Adicione ao Dock para uma melhor experiência e mais fácil acesso.",sfea652f6580ff086:"Este site possui funcionalidade de aplicativo."},fe={s182ab2d6c997515f:"ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。",s1b9047d53d9f9d22:"2) ナビゲーションバーで共有を押す",s37a9e8aec5713460:"展開",s5c6aad7a7e4a1437:"3) 「ホーム画面に追加」を押す",s6196153c4b0c1ea0:"インストール",s922329d6f6213590:"Dockに追加",sa5ef80b4bb9b39f8:"折りたたむ",sa7551383d1897fcc:"2) 「Dockに追加」を押す",sba52286c21552a4e:"デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。",sc79fd7641eb9a975:"説明を非表示",scdaf4bbff76674c8:"ホーム画面に追加",sdfe23506a3b0cdc8:"1) Safariで開く",se740f75b95a51807:"ドックに追加して、幅広い体験と簡単なアクセスを実現してください。",sfea652f6580ff086:"このサイトはアプリ機能があります。"},ue={s182ab2d6c997515f:"Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.",s1b9047d53d9f9d22:"2) Tryck på Dela-knappen i verktygsfältet",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Välj Lägg till på hemskärmen",s6196153c4b0c1ea0:"Installera",s922329d6f6213590:"Lägg till i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Välj Lägg till i Dock",sba52286c21552a4e:"Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.",sc79fd7641eb9a975:"Göm instruktioner",scdaf4bbff76674c8:"Lägg till på hemskärmen",sdfe23506a3b0cdc8:"1) Öppna i Safari",se740f75b95a51807:"Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.",sfea652f6580ff086:"Denna webbsajt har app-funktionalitet."},ve={s182ab2d6c997515f:"더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.",s1b9047d53d9f9d22:"2) 내비게이션 바에서 공유 버튼 누르기",s37a9e8aec5713460:"더보기",s5c6aad7a7e4a1437:"3) 홈 화면에 추가 버튼 누르기",s6196153c4b0c1ea0:"설치",s922329d6f6213590:"Dock에 추가",sa5ef80b4bb9b39f8:"닫기",sa7551383d1897fcc:"2) Dock에 추가 버튼 누르기",sba52286c21552a4e:"더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.",sc79fd7641eb9a975:"안내 숨기기",scdaf4bbff76674c8:"홈 화면에 추가",sdfe23506a3b0cdc8:"1) Safari 브라우저에서 열기",se740f75b95a51807:"더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.",sfea652f6580ff086:"이 사이트는 앱 기능을 가지고 있습니다."},we={s182ab2d6c997515f:"បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",s1b9047d53d9f9d22:"2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ",s37a9e8aec5713460:"បង្ហាញបន្ថែម",s5c6aad7a7e4a1437:"3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",s6196153c4b0c1ea0:"តំឡើង",s922329d6f6213590:"បន្ថែមទៅកាន់ Dock",sa5ef80b4bb9b39f8:"បង្ហាញតិច",sa7551383d1897fcc:"2) ចុចលើ បន្ថែមទៅកាន់ Dock",sba52286c21552a4e:"តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sc79fd7641eb9a975:"បិទការណែនាំ",scdaf4bbff76674c8:"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",sdfe23506a3b0cdc8:"1) បើកនៅក្នុងកម្មវិធី Safari",se740f75b95a51807:"បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sfea652f6580ff086:"គេហទំព័រនេះមានមុខងារជាកម្មវិធី។"},ye={s182ab2d6c997515f:"Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.",s1b9047d53d9f9d22:"2) Tryk på Del-knappen i navigationslinjen",s37a9e8aec5713460:"Mere",s5c6aad7a7e4a1437:"3) Vælg Tilføj til hjemmeskærm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Tilføj til Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Vælg Tilføj til Dock",sba52286c21552a4e:"Installer den på din enhed for en bedre oplevelse og nem adgang.",sc79fd7641eb9a975:"Skjul instruktion",scdaf4bbff76674c8:"Tilføj til hjemmeskærm",sdfe23506a3b0cdc8:"1) Åbn i Safari-browseren",se740f75b95a51807:"Tilføj den til din Dock for en bedre oplevelse og nem adgang.",sfea652f6580ff086:"Denne side har app-funktionalitet."},xe=new Map([["ru",s],["tr",n],["de",r],["es",d],["nl",c],["el",p],["fr",b],["sr",g],["pl",h],["uk",m],["zh-HK",f],["zh-CN",u],["it",v],["cs",w],["no",y],["pt",x],["ja",k],["sv",D],["ko",A],["km",E],["da",j]]),{getLocale:ke,setLocale:De}=(Ae={sourceLocale:"en",targetLocales:X,loadLocale:async e=>xe.get(e)},function(e){if(L)throw Error("lit-localize can only be configured once");P=e,L=!0}(((e,t)=>U(Z,e,t))),V=F=Ae.sourceLocale,N=new Set(Ae.targetLocales),N.add(Ae.sourceLocale),Y=Ae.loadLocale,{getLocale:K,setLocale:Q});var Ae;class Ee{constructor(){this.icons=[{src:""}],this.screenshots=void 0,this.short_name="PWA",this.name="Progressive web application",this.description="Progressive web application"}}const je=S.css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`,Se=(e,t,a)=>{const l=new CustomEvent(t,{detail:{message:a}});e.dispatchEvent(l)};class _e{static isAppleMobile(){return!(!(["iPhone","iPad","iPod"].includes(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2)||!("serviceWorker"in navigator))}static isAppleDesktop(){const e=navigator.userAgent.toLowerCase();if(navigator.maxTouchPoints||!e.match(/macintosh/))return!1;const t=/version\/(\d{2})\./.exec(e);if(!(t&&t[1]&&parseInt(t[1])>=17))return!1;const a=!!document.createElement("audio").canPlayType('audio/wav; codecs="1"'),l=!!new OffscreenCanvas(1,1).getContext("webgl");return a&&l}static deviceFormFactor(){return window.matchMedia("(orientation: portrait)").matches?"narrow":"wide"}static isStandalone(){return!!(window.matchMedia("(display-mode: standalone)").matches||"standalone"in navigator&&!0===navigator.standalone)}static async getInstalledRelatedApps(){if("getInstalledRelatedApps"in navigator)try{return await navigator.getInstalledRelatedApps().then((e=>e))}catch(e){}return[]}static async isRelatedAppsInstalled(){return!!(await this.getInstalledRelatedApps()).length}static setStorageFlag(e,t,a=!1){try{a?localStorage.setItem(e,t.toString()):sessionStorage.setItem(e,t.toString())}catch(e){}}static getStorageFlag(e){try{return"true"===sessionStorage.getItem(e)||"true"===localStorage.getItem(e)}catch(e){return!1}}static eventInstalledSuccess(e){Se(e,"pwa-install-success-event","App install success (Chromium/Android only)")}static eventInstalledFail(e){Se(e,"pwa-install-fail-event","App install failed (Chromium/Android only)")}static eventUserChoiceResult(e,t){Se(e,"pwa-user-choice-result-event",t)}static eventInstallAvailable(e){Se(e,"pwa-install-available-event","App install available")}static eventInstallHowTo(e){Se(e,"pwa-install-how-to-event","App install instruction showed")}static eventGallery(e){Se(e,"pwa-install-gallery-event","App install gallery showed")}static normalizeManifestAssetUrls(e,t){const a=new URL(t,document.location.href);[...e.icons||[],...e.screenshots||[]].forEach((e=>{e.src=new URL(e.src,a).href}))}}const ze=(e,t,a,l)=>S.html`${e?S.html``:""}`;var Pe=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},Le=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Ie=class extends S.LitElement{constructor(){super(...arguments),this.screenshots=[],this.theme="default",this.getScrollElements=()=>{const e=this.shadowRoot?.querySelector("#paginated_gallery");if(!e)return;const t=e.querySelector(".gallery_scroller");if(!t)return;const a=Array.from(t.querySelectorAll("img"));return 0!==a.length?{scroller:t,items:a}:void 0},this.findCurrentItem=(e,t)=>{const a=e.scrollLeft;return t.find((e=>e.offsetWidth+e.offsetLeft>=a+e.offsetWidth/2.5))||null},this.scrollToPage=e=>{const t=this.getScrollElements();if(!t)return;const{scroller:a,items:l}=t,i=this.findCurrentItem(a,l);if(!i)return;const o=l.indexOf(i)+("next"===e?1:-1);o>=0&&o{this.scrollToPage("next")},this.scrollToPrevPage=()=>{this.scrollToPage("prev")},this._init=()=>{}}static get styles(){return je}firstUpdated(){const e=this.getScrollElements();e&&setTimeout((()=>{e.scroller.scrollTo({top:0,left:0})}),300)}connectedCallback(){super.connectedCallback(),this._init()}render(){return S.html`${ze(this.screenshots,this.theme,this.scrollToNextPage,this.scrollToPrevPage)}`}};Pe([(0,J.property)({type:Array}),Le("design:type",Array)],Ie.prototype,"screenshots",void 0),Pe([(0,J.property)(),Le("design:type",String)],Ie.prototype,"theme",void 0),Ie=Pe([(0,J.customElement)("pwa-gallery")],Ie);const Ce=Ie,$e=(e,t,a,l)=>S.html`
icon
${location.hostname}
${t?S.html`
${t}
`:""}`;var Me=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},Re=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Te=class extends S.LitElement{constructor(){super(...arguments),this.props={name:"",description:"",icon:""},this.install={handleEvent:()=>{}},this.hideDialog=()=>{},this.disableClose=!1,this._callInstall=()=>{this.install.handleEvent()},this._callHide=()=>{this.hideDialog(),this.setupAppearence()},this.bindedElement=null,this._saveBodyStyle=document.body.style.overscrollBehaviorY,this.dragMobileSheet=(e,t,a)=>{if(!e||!t||!a)return null;let l=0;const i=t.clientHeight+a.clientHeight,o=e=>e.clientY||(e.changedTouches&&e.changedTouches.length?e.changedTouches[0].clientY:0),s=e=>{window.addEventListener("mouseup",n),window.addEventListener("mousemove",r),window.addEventListener("touchend",n),window.addEventListener("touchmove",r),l=o(e)-t.getBoundingClientRect().top,document.body.style.overscrollBehaviorY="none"},n=t=>{if(document.body.style.overscrollBehaviorY=this._saveBodyStyle,!this.disableClose&&o(t)>=window.innerHeight-25)d(t,window.innerHeight+50,!0);else if(window.innerHeight-o(t)>e.clientHeight/2.5){d(t,window.innerHeight-e.clientHeight);try{_e.eventGallery(this.getRootNode().host)}catch(t){}}else d(t,window.innerHeight-i-35)},r=t=>{const a=o(t);this.disableClose&&window.innerHeight-a<70||a<=window.innerHeight-e.clientHeight+l||(e.style.setProperty("transition","none"),e.style.setProperty("--translateY",`translateY(${a-l}px)`))},d=(a,l,d)=>{window.removeEventListener("mouseup",n),window.removeEventListener("mousemove",r),window.removeEventListener("touchend",n),window.removeEventListener("touchmove",r),window.innerWidth>=768||(!l&&o(a)>=window.innerHeight-i?e.style.setProperty("--translateY",`translateY(calc(100vh - ${i}px))`):e.style.setProperty("--translateY",`translateY(${(l||o(a))+35}px)`),e.style.setProperty("transition","transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s"),d&&(t.removeEventListener("mousedown",s),t.removeEventListener("touchstart",s),setTimeout(this._callHide,250)))};return t.addEventListener("mousedown",s),t.addEventListener("touchstart",s,{passive:!0}),d(new MouseEvent("mouseup"),window.innerHeight-i-35),{touchElement:t,listener:s}},this.setupAppearence=()=>{this.bindedElement&&(this.bindedElement.touchElement.removeEventListener("mousedown",this.bindedElement.listener),this.bindedElement.touchElement.removeEventListener("touchstart",this.bindedElement.listener)),this.bindedElement=this.dragMobileSheet(this.parentElement?.parentElement,this.parentElement?.getElementsByClassName("touch-header")[0],this.parentElement?.getElementsByClassName("body-header")[0])},this._init=()=>{this.setupAppearence(),window.addEventListener("resize",this.setupAppearence)}}firstUpdated(){this._init()}createRenderRoot(){return this}connectedCallback(){super.connectedCallback()}render(){return S.html`${$e(this.props.name,this.props.description,this.props.icon,this._callInstall)}`}};Me([(0,J.property)({type:Object}),Re("design:type",Object)],Te.prototype,"props",void 0),Me([(0,J.property)({type:Object}),Re("design:type",Object)],Te.prototype,"install",void 0),Me([(0,J.property)(),Re("design:type",Object)],Te.prototype,"hideDialog",void 0),Me([(0,J.property)(),Re("design:type",Object)],Te.prototype,"disableClose",void 0),Te=Me([(0,J.customElement)("pwa-bottom-sheet")],Te);const He=Te,Oe=S.css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,"Segoe UI",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:"";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,"Segoe UI",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:"";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`,Ue=S.css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,"Segoe UI";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:"icon description" "welcome welcome" "how-to how-to" "gallery gallery" "button button";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"icon" "description" "welcome" "how-to" "gallery" "button";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;const Be=(e=>{var t={};return i.d(t,e),t})({classMap:()=>a.classMap}),qe=(e,t,a,l,i,o,s,n,r,d,c,p,b)=>{const g=()=>({available:r,gallery:b}),h=!i&&n.screenshots&&n.screenshots.length;return S.html`
icon
${o?"":S.html``}
${location.hostname}
${t?S.html`
${t}
`:""} ${l?"":S.html`
${a||`${P("This site has app functionality.")} ${P("Install it on your device for extensive experience and easy access.")}`}
`} ${h?S.html``:""}
${h?S.html``:""}
${h?S.html``:""}
`},Fe=(e,t,a,l,i,o,s,n,r,d,c,p,b,g,h)=>{const m=!i&&n.screenshots&&n.screenshots.length;return S.html``};var Ne=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},Ye=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Ze=class extends S.LitElement{constructor(){super(...arguments),this.manifestUrl="/manifest.json",this.icon="",this.name="",this.description="",this.installDescription="",this.disableDescription=!1,this.disableScreenshots=!1,this.disableScreenshotsApple=!1,this.disableScreenshotsChrome=!1,this.manualApple=!1,this.manualChrome=!1,this.disableChrome=!1,this.disableClose=!1,this.useLocalStorage=!1,this.externalPromptEvent=null,this.platforms=[],this.userChoiceResult="",this.isDialogHidden=_e.getStorageFlag("pwa-hide-install"),this.isInstallAvailable=!1,this.isAppleMobilePlatform=!1,this.isAppleDesktopPlatform=!1,this.isUnderStandaloneMode=!1,this.isRelatedAppsInstalled=!1,this._manifest=new Ee,this._howToRequested=!1,this._galleryRequested=!1,this._install={handleEvent:()=>{window.defferedPromptEvent&&(this.hideDialog(),window.defferedPromptEvent.prompt(),window.defferedPromptEvent.userChoice.then((e=>{this.userChoiceResult=e.outcome,_e.eventUserChoiceResult(this,this.userChoiceResult)})).catch((e=>{_e.eventInstalledFail(this)})),window.defferedPromptEvent=null)},passive:!0},this.install=()=>{this.isAppleMobilePlatform||this.isAppleDesktopPlatform?(this._howToRequested=!0,this.requestUpdate()):this._install.handleEvent()},this._hideDialog={handleEvent:()=>{this.isDialogHidden=!0,_e.setStorageFlag("pwa-hide-install",!0,this.useLocalStorage),this.requestUpdate()},passive:!0},this._hideDialogUser=()=>{_e.eventUserChoiceResult(this,"dismissed"),this.userChoiceResult="dismissed",this.hideDialog()},this.hideDialog=()=>{this._hideDialog.handleEvent()},this.showDialog=(e=!1)=>{this.isDialogHidden=!1,e&&(this.isInstallAvailable=!0),_e.setStorageFlag("pwa-hide-install",!1,this.useLocalStorage),this.requestUpdate()},this.getInstalledRelatedApps=async()=>await _e.getInstalledRelatedApps(),this._howToForApple={handleEvent:()=>{this._howToRequested=!this._howToRequested,this._howToRequested&&this._galleryRequested&&(this._galleryRequested=!1),this.requestUpdate(),this._howToRequested&&_e.eventInstallHowTo(this)},passive:!0},this._toggleGallery={handleEvent:()=>{this._galleryRequested=!this._galleryRequested,this._howToRequested&&this._galleryRequested&&(this._howToRequested=!1),this._galleryRequested&&_e.eventGallery(this),this.requestUpdate()},passive:!0},this._init=async()=>{if(window.defferedPromptEvent=null,this._checkInstalled(),!this.disableChrome){const e=e=>{window.defferedPromptEvent=e,e.preventDefault(),this.platforms=e.platforms,this.isRelatedAppsInstalled||this.isUnderStandaloneMode?this.isInstallAvailable=!1:(this.isInstallAvailable=!0,_e.eventInstallAvailable(this)),"accepted"===this.userChoiceResult&&(this.isDialogHidden=!0,_e.eventInstalledSuccess(this)),this.requestUpdate()};null!=this.externalPromptEvent?setTimeout((()=>e(this.externalPromptEvent)),300):window.addEventListener("beforeinstallprompt",e)}window.addEventListener("appinstalled",(e=>{window.defferedPromptEvent=null,this.isInstallAvailable=!1,this.requestUpdate(),_e.eventInstalledSuccess(this)}));try{const e=await fetch(this.manifestUrl),t=await e.json();if(!e.ok||!t||!Object.keys(t))throw Error("Manifest not found");_e.normalizeManifestAssetUrls(t,this.manifestUrl),this.icon=this.icon||t.icons?.length?t.icons[0].src:"",this.name=this.name||t.short_name||t.name||"",this.description=this.description||t.description||"",this._manifest=t}catch(e){this.icon=this.icon||this._manifest.icons?.[0].src||"",this.name=this.name||this._manifest.short_name||"",this.description=this.description||this._manifest.description||""}},this._requestUpdate=()=>{this.requestUpdate()}}static get styles(){return[Oe,Ue]}async _checkInstalled(){this.isUnderStandaloneMode=_e.isStandalone(),this.isRelatedAppsInstalled=await _e.isRelatedAppsInstalled(),this.isAppleMobilePlatform=_e.isAppleMobile(),this.isAppleDesktopPlatform=_e.isAppleDesktop(),this.isAppleMobilePlatform||this.isAppleDesktopPlatform?this.isUnderStandaloneMode||(this.manualApple&&this.hideDialog(),setTimeout((()=>{this.isInstallAvailable=!0,this.requestUpdate(),_e.eventInstallAvailable(this)}),1e3)):this.manualChrome&&this.hideDialog()}connectedCallback(){(e=>{"nb"===e.slice(0,2)&&(e="no");switch(e){case"zh":case"zh-TW":e="zh-CN"}try{xe.get(e)?De(e):De(e.slice(0,2))}catch{}})(navigator.language),this._init(),Ce.finalized,He.finalized,super.connectedCallback()}willUpdate(e){this.externalPromptEvent&&e.has("externalPromptEvent")&&"object"==typeof this.externalPromptEvent&&this._init()}render(){return this.isAppleMobilePlatform||this.isAppleDesktopPlatform?S.html`${Fe(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsApple,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._howToForApple,this.isAppleDesktopPlatform,this._howToRequested,this._toggleGallery,this._galleryRequested)}`:S.html`${qe(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsChrome,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._install,this._toggleGallery,this._galleryRequested)}`}};Ne([(0,J.property)({attribute:"manifest-url"}),Ye("design:type",Object)],Ze.prototype,"manifestUrl",void 0),Ne([(0,J.property)(),Ye("design:type",Object)],Ze.prototype,"icon",void 0),Ne([(0,J.property)(),Ye("design:type",Object)],Ze.prototype,"name",void 0),Ne([(0,J.property)(),Ye("design:type",Object)],Ze.prototype,"description",void 0),Ne([(0,J.property)({attribute:"install-description"}),Ye("design:type",Object)],Ze.prototype,"installDescription",void 0),Ne([(0,J.property)({attribute:"disable-install-description",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"disableDescription",void 0),Ne([(0,J.property)({attribute:"disable-screenshots",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"disableScreenshots",void 0),Ne([(0,J.property)({attribute:"disable-screenshots-apple",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"disableScreenshotsApple",void 0),Ne([(0,J.property)({attribute:"disable-screenshots-chrome",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"disableScreenshotsChrome",void 0),Ne([(0,J.property)({attribute:"manual-apple",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"manualApple",void 0),Ne([(0,J.property)({attribute:"manual-chrome",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"manualChrome",void 0),Ne([(0,J.property)({attribute:"disable-chrome",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"disableChrome",void 0),Ne([(0,J.property)({attribute:"disable-close",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"disableClose",void 0),Ne([(0,J.property)({attribute:"use-local-storage",type:Boolean}),Ye("design:type",Object)],Ze.prototype,"useLocalStorage",void 0),Ne([(0,J.state)(),Ye("design:type",Object)],Ze.prototype,"externalPromptEvent",void 0),Ze=Ne([(e,t)=>(e.addInitializer($),e),(0,J.customElement)("pwa-install")],Ze);const Ve=new Set(["children","localName","ref","style","className"]),We=new WeakMap,Ge=(e,t,a,l,i)=>{const o=i?.[t];void 0===o?(e[t]=a,null==a&&t in HTMLElement.prototype&&e.removeAttribute(t)):a!==l&&((e,t,a)=>{let l=We.get(e);void 0===l&&We.set(e,l=new Map);let i=l.get(t);void 0!==a?void 0===i?(l.set(t,i={handleEvent:a}),e.addEventListener(t,i)):i.handleEvent=a:void 0!==i&&(l.delete(t),e.removeEventListener(t,i))})(e,o,a)};const Ke=(e=>{var t={};return i.d(t,e),t})({default:()=>l.default}),Qe=(({react:e,tagName:t,elementClass:a,events:l,displayName:i})=>{const o=new Set(Object.keys(l??{})),s=e.forwardRef(((i,s)=>{const n=e.useRef(new Map),r=e.useRef(null),d={},c={};for(const[e,t]of Object.entries(i))Ve.has(e)?d["className"===e?"class":e]=t:o.has(e)||e in a.prototype?c[e]=t:d[e]=t;return e.useLayoutEffect((()=>{if(null===r.current)return;const e=new Map;for(const t in c)Ge(r.current,t,i[t],n.current.get(t),l),n.current.delete(t),e.set(t,i[t]);for(const[e,t]of n.current)Ge(r.current,e,void 0,t,l);n.current=e})),e.useLayoutEffect((()=>{r.current?.removeAttribute("defer-hydration")}),[]),d.suppressHydrationWarning=!0,e.createElement(t,{...d,ref:e.useCallback((e=>{r.current=e,"function"==typeof s?s(e):null!==s&&(s.current=e)}),[s])})}));return s.displayName=i??a.name,s})({react:Ke.default,tagName:"pwa-install",elementClass:Ze,events:{onPwaInstallSuccessEvent:"pwa-install-success-event",onPwaInstallFailEvent:"pwa-install-fail-event",onPwaUserChoiceResultEvent:"pwa-user-choice-result-event",onPwaInstallAvailableEvent:"pwa-install-available-event",onPwaInstallHowToEvent:"pwa-install-how-to-event",onPwaInstallGalleryEvent:"pwa-install-gallery-event"}}),Je=Qe;var Xe=o.A;export{Xe as default}; //# sourceMappingURL=pwa-install.react-legacy.js.map \ No newline at end of file diff --git a/dist/react-legacy/pwa-install.react-legacy.js.map b/dist/react-legacy/pwa-install.react-legacy.js.map index ee47321..482d53e 100644 --- a/dist/react-legacy/pwa-install.react-legacy.js.map +++ b/dist/react-legacy/pwa-install.react-legacy.js.map @@ -1 +1 @@ -{"version":3,"file":"pwa-install.react-legacy.js","mappings":"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","sources":["webpack://@khmyznikov/pwa-install/webpack/bootstrap","webpack://@khmyznikov/pwa-install/webpack/runtime/define property getters","webpack://@khmyznikov/pwa-install/webpack/runtime/hasOwnProperty shorthand","webpack://@khmyznikov/pwa-install/webpack/runtime/make namespace object","webpack://@khmyznikov/pwa-install/external module \"lit\"","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/str-tag.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/default-msg.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/init/install.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/locale-status-event.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/localized-controller.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/deferred.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/fnv1a64.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/id-generation.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/runtime-msg.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/init/runtime.js","webpack://@khmyznikov/pwa-install/external module \"lit/decorators.js\"","webpack://@khmyznikov/pwa-install/./src/localization/locale-codes.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ru.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/tr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/de.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/es.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/nl.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/el.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/fr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/sr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/pl.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/uk.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/zh-HK.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/zh-CN.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/it.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/cs.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/no.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/pt.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ja.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/sv.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ko.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/km.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/da.ts","webpack://@khmyznikov/pwa-install/./src/localization/index.ts","webpack://@khmyznikov/pwa-install/./src/types/types.ts","webpack://@khmyznikov/pwa-install/./src/gallery/styles-gallery.scss","webpack://@khmyznikov/pwa-install/./src/utils.ts","webpack://@khmyznikov/pwa-install/./src/gallery/template-gallery.ts","webpack://@khmyznikov/pwa-install/./src/gallery/index.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/template-bottom-sheet.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/index.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/styles.scss","webpack://@khmyznikov/pwa-install/./src/templates/apple/styles-apple.scss","webpack://@khmyznikov/pwa-install/external module \"lit/directives/class-map.js\"","webpack://@khmyznikov/pwa-install/./src/templates/chrome/template.ts","webpack://@khmyznikov/pwa-install/./src/templates/apple/template-apple.ts","webpack://@khmyznikov/pwa-install/./src/index.ts","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/localized-decorator.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/react/create-component.js","webpack://@khmyznikov/pwa-install/external module \"react\"","webpack://@khmyznikov/pwa-install/./src/react-legacy/pwa-install.react-legacy.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"LitElement\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.LitElement), [\"css\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.css), [\"html\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.html) });","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Tag that allows expressions to be used in localized non-HTML template\n * strings.\n *\n * Example: msg(str`Hello ${this.user}!`);\n *\n * The Lit html tag can also be used for this purpose, but HTML will need to be\n * escaped, and there is a small overhead for HTML parsing.\n *\n * Untagged template strings with expressions aren't supported by lit-localize\n * because they don't allow for values to be captured at runtime.\n */\nconst _str = (strings, ...values) => ({\n strTag: true,\n strings,\n values,\n});\nexport const str = _str;\nexport const isStrTagged = (val) => typeof val !== 'string' && 'strTag' in val;\n/**\n * Render the result of a `str` tagged template to a string. Note we don't need\n * to do this for Lit templates, since Lit itself handles rendering.\n */\nexport const joinStringsAndValues = (strings, values, valueOrder) => {\n let concat = strings[0];\n for (let i = 1; i < strings.length; i++) {\n concat += values[valueOrder ? valueOrder[i - 1] : i - 1];\n concat += strings[i];\n }\n return concat;\n};\n//# sourceMappingURL=str-tag.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { isStrTagged, joinStringsAndValues } from './str-tag.js';\n/**\n * Default identity msg implementation. Simply returns the input template with\n * no awareness of translations. If the template is str-tagged, returns it in\n * string form.\n */\nexport const defaultMsg = ((template) => isStrTagged(template)\n ? joinStringsAndValues(template.strings, template.values)\n : template);\n//# sourceMappingURL=default-msg.js.map","import { defaultMsg } from '../internal/default-msg.js';\n/**\n * Make a string or lit-html template localizable.\n *\n * @param template A string, a lit-html template, or a function that returns\n * either a string or lit-html template.\n * @param options Optional configuration object with the following properties:\n * - id: Optional project-wide unique identifier for this template. If\n * omitted, an id will be automatically generated from the template strings.\n * - desc: Optional description\n */\nexport let msg = defaultMsg;\nlet installed = false;\n/**\n * Internal only. Do not use this function.\n *\n * Installs an implementation of the msg function to replace the default\n * identity function. Throws if called more than once.\n *\n * @internal\n */\nexport function _installMsgImplementation(impl) {\n if (installed) {\n throw new Error('lit-localize can only be configured once');\n }\n msg = impl;\n installed = true;\n}\n//# sourceMappingURL=install.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Name of the event dispatched to `window` whenever a locale change starts,\n * finishes successfully, or fails. Only relevant to runtime mode.\n *\n * The `detail` of this event is an object with a `status` string that can be:\n * \"loading\", \"ready\", or \"error\", along with the relevant locale code, and\n * error message if applicable.\n *\n * You can listen for this event to know when your application should be\n * re-rendered following a locale change. See also the Localized mixin, which\n * automatically re-renders LitElement classes using this event.\n */\nexport const LOCALE_STATUS_EVENT = 'lit-localize-status';\n//# sourceMappingURL=locale-status-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { LOCALE_STATUS_EVENT } from './locale-status-event.js';\nclass LocalizeController {\n constructor(host) {\n this.__litLocalizeEventHandler = (event) => {\n if (event.detail.status === 'ready') {\n this.host.requestUpdate();\n }\n };\n this.host = host;\n }\n hostConnected() {\n window.addEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n hostDisconnected() {\n window.removeEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n}\n/**\n * Re-render the given LitElement whenever a new active locale has loaded.\n *\n * See also {@link localized} for the same functionality as a decorator.\n *\n * When using lit-localize in transform mode, calls to this function are\n * replaced with undefined.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {msg, updateWhenLocaleChanges} from '@lit/localize';\n *\n * class MyElement extends LitElement {\n * constructor() {\n * super();\n * updateWhenLocaleChanges(this);\n * }\n *\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nconst _updateWhenLocaleChanges = (host) => host.addController(new LocalizeController(host));\nexport const updateWhenLocaleChanges = _updateWhenLocaleChanges;\n//# sourceMappingURL=localized-controller.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport class Deferred {\n constructor() {\n this.settled = false;\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n resolve(value) {\n this.settled = true;\n this._resolve(value);\n }\n reject(error) {\n this.settled = true;\n this._reject(error);\n }\n}\n//# sourceMappingURL=deferred.js.map","/**\n * @license\n * Copyright 2014 Travis Webb\n * SPDX-License-Identifier: MIT\n */\n// This module is derived from the file:\n// https://github.com/tjwebb/fnv-plus/blob/1e2ce68a07cb7dd4c3c85364f3d8d96c95919474/index.js#L309\n//\n// Changes:\n// - Only the _hash64_1a_fast function is included.\n// - Removed loop unrolling.\n// - Converted to TypeScript ES module.\n// - var -> let/const\n//\n// TODO(aomarks) Upstream improvements to https://github.com/tjwebb/fnv-plus/.\nconst hl = [];\nfor (let i = 0; i < 256; i++) {\n hl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n}\n/**\n * Perform a FNV-1A 64-bit hash of the given string (as UTF-16 code units), and\n * return a hexadecimal digest (left zero padded to 16 characters).\n *\n * @see {@link http://tools.ietf.org/html/draft-eastlake-fnv-06}\n */\nexport function fnv1a64(str) {\n let t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n for (let i = 0; i < str.length; i++) {\n v0 ^= str.charCodeAt(i);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = (t3 + (t2 >>> 16)) & 65535;\n v2 = t2 & 65535;\n }\n return (hl[v3 >> 8] +\n hl[v3 & 255] +\n hl[v2 >> 8] +\n hl[v2 & 255] +\n hl[v1 >> 8] +\n hl[v1 & 255] +\n hl[v0 >> 8] +\n hl[v0 & 255]);\n}\n//# sourceMappingURL=fnv1a64.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { fnv1a64 } from './fnv1a64.js';\n/**\n * Delimiter used between each template string component before hashing. Used to\n * prevent e.g. \"foobar\" and \"foo${baz}bar\" from sharing a hash.\n *\n * This is the \"record separator\" ASCII character.\n */\nexport const HASH_DELIMITER = '\\x1e';\n/**\n * Id prefix on html-tagged templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst HTML_PREFIX = 'h';\n/**\n * Id prefix on plain string templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst STRING_PREFIX = 's';\n/**\n * Generate a unique ID for a lit-localize message.\n *\n * Example:\n * Template: html`Hello ${who}!`\n * Params: [\"Hello \", \"!\"], true\n * Output: h82ccc38d4d46eaa9\n *\n * The ID is constructed as:\n *\n * [0] Kind of template: [h]tml or [s]tring.\n * [1,16] 64-bit FNV-1a hash hex digest of the template strings, as UTF-16\n * code points, delineated by an ASCII \"record separator\" character.\n *\n * We choose FNV-1a because:\n *\n * 1. It's pretty fast (e.g. much faster than SHA-1).\n * 2. It's pretty small (0.25 KiB minified + brotli).\n * 3. We don't require cryptographic security, and 64 bits should give\n * sufficient collision resistance for any one application. Worst\n * case, we will always detect collisions during analysis.\n * 4. We can't use Web Crypto API (e.g. SHA-1), because it's asynchronous.\n * 5. It's a well known non-cryptographic hash with implementations in many\n * languages.\n * 6. There was an existing JavaScript implementation that doesn't require\n * BigInt, for IE11 compatibility.\n */\nexport function generateMsgId(strings, isHtmlTagged) {\n return ((isHtmlTagged ? HTML_PREFIX : STRING_PREFIX) +\n fnv1a64(typeof strings === 'string' ? strings : strings.join(HASH_DELIMITER)));\n}\n//# sourceMappingURL=id-generation.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { defaultMsg } from './default-msg.js';\nimport { joinStringsAndValues } from './str-tag.js';\nimport { generateMsgId } from './id-generation.js';\nconst expressionOrders = new WeakMap();\nconst hashCache = new Map();\nexport function runtimeMsg(templates, template, options) {\n if (templates) {\n const id = options?.id ?? generateId(template);\n const localized = templates[id];\n if (localized) {\n if (typeof localized === 'string') {\n // E.g. \"Hello World!\"\n return localized;\n }\n else if ('strTag' in localized) {\n // E.g. str`Hello ${name}!`\n //\n // Localized templates have ${number} in place of real template\n // expressions. They can't have real template values, because the\n // variable scope would be wrong. The number tells us the index of the\n // source value to substitute in its place, because expressions can be\n // moved to a different position during translation.\n return joinStringsAndValues(localized.strings, \n // Cast `template` because its type wasn't automatically narrowed (but\n // we know it must be the same type as `localized`).\n template.values, localized.values);\n }\n else {\n // E.g. html`Hello ${name}!`\n //\n // We have to keep our own mapping of expression ordering because we do\n // an in-place update of `values`, and otherwise we'd lose ordering for\n // subsequent renders.\n let order = expressionOrders.get(localized);\n if (order === undefined) {\n order = localized.values;\n expressionOrders.set(localized, order);\n }\n return {\n ...localized,\n values: order.map((i) => template.values[i]),\n };\n }\n }\n }\n return defaultMsg(template);\n}\nfunction generateId(template) {\n const strings = typeof template === 'string' ? template : template.strings;\n let id = hashCache.get(strings);\n if (id === undefined) {\n id = generateMsgId(strings, typeof template !== 'string' && !('strTag' in template));\n hashCache.set(strings, id);\n }\n return id;\n}\n//# sourceMappingURL=runtime-msg.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { Deferred } from '../internal/deferred.js';\nimport { LOCALE_STATUS_EVENT } from '../internal/locale-status-event.js';\nimport { runtimeMsg } from '../internal/runtime-msg.js';\nimport { _installMsgImplementation } from './install.js';\n/**\n * Dispatch a \"lit-localize-status\" event to `window` with the given detail.\n */\nfunction dispatchStatusEvent(detail) {\n window.dispatchEvent(new CustomEvent(LOCALE_STATUS_EVENT, { detail }));\n}\nlet activeLocale = '';\nlet loadingLocale;\nlet sourceLocale;\nlet validLocales;\nlet loadLocale;\nlet templates;\nlet loading = new Deferred();\n// The loading promise must be initially resolved, because that's what we should\n// return if the user immediately calls setLocale(sourceLocale).\nloading.resolve();\nlet requestId = 0;\n/**\n * Set configuration parameters for lit-localize when in runtime mode. Returns\n * an object with functions:\n *\n * - `getLocale`: Return the active locale code.\n * - `setLocale`: Set the active locale code.\n *\n * Throws if called more than once.\n */\nexport const configureLocalization = (config) => {\n _installMsgImplementation(((template, options) => runtimeMsg(templates, template, options)));\n activeLocale = sourceLocale = config.sourceLocale;\n validLocales = new Set(config.targetLocales);\n validLocales.add(config.sourceLocale);\n loadLocale = config.loadLocale;\n return { getLocale, setLocale };\n};\n/**\n * Return the active locale code.\n */\nconst getLocale = () => {\n return activeLocale;\n};\n/**\n * Set the active locale code, and begin loading templates for that locale using\n * the `loadLocale` function that was passed to `configureLocalization`. Returns\n * a promise that resolves when the next locale is ready to be rendered.\n *\n * Note that if a second call to `setLocale` is made while the first requested\n * locale is still loading, then the second call takes precedence, and the\n * promise returned from the first call will resolve when second locale is\n * ready. If you need to know whether a particular locale was loaded, check\n * `getLocale` after the promise resolves.\n *\n * Throws if the given locale is not contained by the configured `sourceLocale`\n * or `targetLocales`.\n */\nconst setLocale = (newLocale) => {\n if (newLocale === (loadingLocale ?? activeLocale)) {\n return loading.promise;\n }\n if (!validLocales || !loadLocale) {\n throw new Error('Internal error');\n }\n if (!validLocales.has(newLocale)) {\n throw new Error('Invalid locale code');\n }\n requestId++;\n const thisRequestId = requestId;\n loadingLocale = newLocale;\n if (loading.settled) {\n loading = new Deferred();\n }\n dispatchStatusEvent({ status: 'loading', loadingLocale: newLocale });\n const localePromise = newLocale === sourceLocale\n ? // We could switch to the source locale synchronously, but we prefer to\n // queue it on a microtask so that switching locales is consistently\n // asynchronous.\n Promise.resolve({ templates: undefined })\n : loadLocale(newLocale);\n localePromise.then((mod) => {\n if (requestId === thisRequestId) {\n activeLocale = newLocale;\n loadingLocale = undefined;\n templates = mod.templates;\n dispatchStatusEvent({ status: 'ready', readyLocale: newLocale });\n loading.resolve();\n }\n // Else another locale was requested in the meantime. Don't resolve or\n // reject, because the newer load call is going to use the same promise.\n // Note the user can call getLocale() after the promise resolves if they\n // need to check if the locale is still the one they expected to load.\n }, (err) => {\n if (requestId === thisRequestId) {\n dispatchStatusEvent({\n status: 'error',\n errorLocale: newLocale,\n errorMessage: err.toString(),\n });\n loading.reject(err);\n }\n });\n return loading.promise;\n};\n//# sourceMappingURL=runtime.js.map","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"customElement\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.customElement), [\"property\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.property), [\"state\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.state) });","// Do not modify this file by hand!\n// Re-generate this file by running lit-localize.\n\n/**\n * The locale code that templates in this source code are written in.\n */\nexport const sourceLocale = `en`;\n\n/**\n * The other locale codes that this application is localized into. Sorted\n * lexicographically.\n */\nexport const targetLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `es`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n\n/**\n * All valid project locale codes. Sorted lexicographically.\n */\nexport const allLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `en`,\n `es`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.`,\n's1b9047d53d9f9d22': `2) Нажать \"Поделиться\"`,\n's37a9e8aec5713460': `Подробнее`,\n's5c6aad7a7e4a1437': `3) Нажать \"На экран «Домой»\"`,\n's6196153c4b0c1ea0': `Установить`,\n's922329d6f6213590': `Добавить в Dock`,\n'sa5ef80b4bb9b39f8': `Свернуть`,\n'sa7551383d1897fcc': `2) Нажмите \"Добавить в Dock\"`,\n'sba52286c21552a4e': `Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.`,\n'sc79fd7641eb9a975': `Спрятать Инструкцию`,\n'scdaf4bbff76674c8': `На экран «Домой»`,\n'sdfe23506a3b0cdc8': `1) Открыть в Safari браузере`,\n'se740f75b95a51807': `Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.`,\n'sfea652f6580ff086': `Этот веб-сайт имеет функционал приложения.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.`,\n's1b9047d53d9f9d22': `2) Gezinme çubuğunda Paylaş'a basın`,\n's37a9e8aec5713460': `Daha Fazla`,\n's5c6aad7a7e4a1437': `3) Ana Ekrana Ekle'ye basın`,\n's6196153c4b0c1ea0': `Yükle`,\n's922329d6f6213590': `Dock’a Ekle`,\n'sa5ef80b4bb9b39f8': `Küçült`,\n'sa7551383d1897fcc': `2) Dock’a ekleye basın`,\n'sba52286c21552a4e': `Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.`,\n'sc79fd7641eb9a975': `Talimatları gizle`,\n'scdaf4bbff76674c8': `Ana Ekrana Ekle`,\n'sdfe23506a3b0cdc8': `1) Safari tarayıcısında açın`,\n'se740f75b95a51807': `Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.`,\n'sfea652f6580ff086': `Bu site uygulama işlevselliğine sahiptir.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n's1b9047d53d9f9d22': `2) Drücken Sie auf Teilen in der Navigationsleiste`,\n's37a9e8aec5713460': `Mehr`,\n's5c6aad7a7e4a1437': `3) Drücken Sie Hinzufügen zum Startbildschirm`,\n's6196153c4b0c1ea0': `Installieren`,\n's922329d6f6213590': `Zum Dock hinzufügen`,\n'sa5ef80b4bb9b39f8': `Weniger`,\n'sa7551383d1897fcc': `2) Drücken Sie auf Zum Dock hinzufügen`,\n'sba52286c21552a4e': `Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.`,\n'sc79fd7641eb9a975': `Anleitung ausblenden`,\n'scdaf4bbff76674c8': `Hinzufügen zum Startbildschirm`,\n'sdfe23506a3b0cdc8': `1) In Safari-Browser öffnen`,\n'se740f75b95a51807': `Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n'sfea652f6580ff086': `Diese Website verfügt über App-Funktionalität.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.`,\n's1b9047d53d9f9d22': `2) Presionar Compartir en la barra de direcciones`,\n's37a9e8aec5713460': `Más`,\n's5c6aad7a7e4a1437': `3) Presionar Añadir a pantalla de inicio`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Añadir al Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Presionar Añadir al Dock`,\n'sba52286c21552a4e': `Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.`,\n'sc79fd7641eb9a975': `Esconder instrucciones`,\n'scdaf4bbff76674c8': `Añadir a pantalla de inicio`,\n'sdfe23506a3b0cdc8': `1) Abrir en el navegador web Safari`,\n'se740f75b95a51807': `Añádelo a tu Dock para una experiencia amplia y acceso fácil.`,\n'sfea652f6580ff086': `Este sitio tiene funcionalidad de aplicación.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.`,\n's1b9047d53d9f9d22': `2) Druk op delen in de navigatiebalk`,\n's37a9e8aec5713460': `Meer`,\n's5c6aad7a7e4a1437': `3) Druk op Toevoegen aan het startscherm`,\n's6196153c4b0c1ea0': `Installeren`,\n's922329d6f6213590': `Toevoegen aan Dock`,\n'sa5ef80b4bb9b39f8': `Minder`,\n'sa7551383d1897fcc': `2) Druk op Toevoegen aan Dock`,\n'sba52286c21552a4e': `Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.`,\n'sc79fd7641eb9a975': `Instructie verbergen`,\n'scdaf4bbff76674c8': `Toevoegen aan het startscherm`,\n'sdfe23506a3b0cdc8': `1) Open in Safari-browser`,\n'se740f75b95a51807': `Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.`,\n'sfea652f6580ff086': `Deze site heeft app-functionaliteit.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n's1b9047d53d9f9d22': `2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης`,\n's37a9e8aec5713460': `Περισσότερα`,\n's5c6aad7a7e4a1437': `3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας`,\n's6196153c4b0c1ea0': `Εγκατάσταση`,\n's922329d6f6213590': `Προσθήκη στην Πρόσβαση`,\n'sa5ef80b4bb9b39f8': `Λιγότερα`,\n'sa7551383d1897fcc': `2) Πατήστε Προσθήκη στην Πρόσβαση`,\n'sba52286c21552a4e': `Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sc79fd7641eb9a975': `Απόκρυψη Οδηγιών`,\n'scdaf4bbff76674c8': `Προσθήκη στην Οθόνη Αφετηρίας`,\n'sdfe23506a3b0cdc8': `1) Ανοίξτε τον περιηγητή Safari`,\n'se740f75b95a51807': `Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sfea652f6580ff086': `Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.`,\n's1b9047d53d9f9d22': `2) Appuyez sur Partager dans la barre de navigation`,\n's37a9e8aec5713460': `Plus`,\n's5c6aad7a7e4a1437': `3) Appuyez sur Ajouter à l'écran d'accueil`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Ajouter au Dock`,\n'sa5ef80b4bb9b39f8': `Moins`,\n'sa7551383d1897fcc': `2) Appuyez sur Ajouter au Dock`,\n'sba52286c21552a4e': `Installez-le sur votre appareil pour une expérience complète et un accès facile.`,\n'sc79fd7641eb9a975': `Masquer les instructions`,\n'scdaf4bbff76674c8': `Ajouter à l'écran d'accueil`,\n'sdfe23506a3b0cdc8': `1) Ouvrir dans le navigateur Safari`,\n'se740f75b95a51807': `Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.`,\n'sfea652f6580ff086': `Ce site possède des fonctionnalités d'application.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Додајте га на Home Screen за широке могућности и лак приступ.`,\n's1b9047d53d9f9d22': `2) Притисните Share у навигационој траци`,\n's37a9e8aec5713460': `Више`,\n's5c6aad7a7e4a1437': `3) Притисните Add to Home Screen`,\n's6196153c4b0c1ea0': `Инсталирај`,\n'sa5ef80b4bb9b39f8': `Мање`,\n'sa7551383d1897fcc': `3) Притисните Add to Dock`,\n'sba52286c21552a4e': `Инсталирајте га на вашем уређају за широке могућности и лак приступ.`,\n'sc79fd7641eb9a975': `Сакриј упутство`,\n'sdfe23506a3b0cdc8': `1) Отворите у Safari прегледачу`,\n'se740f75b95a51807': `Додајте га у вашу Dock за широке могућности и лак приступ.`,\n'sfea652f6580ff086': `Овај сајт има функционалност апликације.`,\n's922329d6f6213590': `Add to Dock`,\n'scdaf4bbff76674c8': `Add to Home Screen`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n's1b9047d53d9f9d22': `2) Wybierz \"Udostępnij\"`,\n's37a9e8aec5713460': `Więcej`,\n's5c6aad7a7e4a1437': `3) Wybierz \"Dodaj do Ekranu Głównego\"`,\n's6196153c4b0c1ea0': `Zainstaluj`,\n's922329d6f6213590': `Dodaj do Docka`,\n'sa5ef80b4bb9b39f8': `Mniej`,\n'sa7551383d1897fcc': `2) Wybierz \"Dodaj do Docka\"`,\n'sba52286c21552a4e': `Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sc79fd7641eb9a975': `Ukryj instrukcję`,\n'scdaf4bbff76674c8': `Dodaj do Ekranu Głównego`,\n'sdfe23506a3b0cdc8': `1) Otwórz przeglądarkę Safari`,\n'se740f75b95a51807': `Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sfea652f6580ff086': `Ta strona posiada funkcje aplikacji.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Додайте на Домашній екран для зручного доступу та ширших можливостей.`,\n's1b9047d53d9f9d22': `2) Натиснути «Поділитися»`,\n's37a9e8aec5713460': `Детальніше`,\n's5c6aad7a7e4a1437': `3) Натиснути «На Початковий екран»`,\n's6196153c4b0c1ea0': `Встановити`,\n's922329d6f6213590': `Додати на Dock`,\n'sa5ef80b4bb9b39f8': `Згорнути`,\n'sa7551383d1897fcc': `2) Натиснути «Додати на Dock»`,\n'sba52286c21552a4e': `Встановіть на ваш пристрій для зручного доступу та ширших можливостей.`,\n'sc79fd7641eb9a975': `Сховати Інструкцію`,\n'scdaf4bbff76674c8': `На Початковий экран`,\n'sdfe23506a3b0cdc8': `1) Відкрити в Safari браузері`,\n'se740f75b95a51807': `Додайте на панель Dock для зручного доступу та ширших можливостей.`,\n'sfea652f6580ff086': `Цей сайт має функції додатку.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。`,\n's1b9047d53d9f9d22': `2) 點擊列表上的分享按鈕`,\n's37a9e8aec5713460': `詳細資訊`,\n's5c6aad7a7e4a1437': `3) 點擊加入主畫面`,\n's6196153c4b0c1ea0': `安裝`,\n's922329d6f6213590': `添加到Dock欄`,\n'sa5ef80b4bb9b39f8': `簡短資訊`,\n'sa7551383d1897fcc': `2) 點選添加到Dock欄`,\n'sba52286c21552a4e': `在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。`,\n'sc79fd7641eb9a975': `隱藏安裝流程`,\n'scdaf4bbff76674c8': `將App加入主畫面`,\n'sdfe23506a3b0cdc8': `1) 在Safari上瀏覽此網頁`,\n'se740f75b95a51807': `將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。`,\n'sfea652f6580ff086': `此網站具有應用程式功能。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `将其添加到主屏幕,以享受更丰富的体验并便于访问。`,\n's1b9047d53d9f9d22': `2) 点击导航栏中的“分享”按钮`,\n's37a9e8aec5713460': `更多`,\n's5c6aad7a7e4a1437': `3) 点击“添加到主屏幕”`,\n's6196153c4b0c1ea0': `安装`,\n's922329d6f6213590': `添加到程序坞`,\n'sa5ef80b4bb9b39f8': `收起`,\n'sa7551383d1897fcc': `2) 点击“添加到程序坞”`,\n'sba52286c21552a4e': `在您的设备上安装,以享受更丰富的体验并便于访问。`,\n'sc79fd7641eb9a975': `隐藏安装步骤`,\n'scdaf4bbff76674c8': `添加到主屏幕`,\n'sdfe23506a3b0cdc8': `1) 在 Safari 浏览器中打开此页面`,\n'se740f75b95a51807': `将其添加到您的程序坞,以享受更全面的体验并便于访问。`,\n'sfea652f6580ff086': `此网站具备 App 功能特性。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.`,\n's1b9047d53d9f9d22': `2) Premi Condividi nella barra di navigazione`,\n's37a9e8aec5713460': `Più`,\n's5c6aad7a7e4a1437': `3) Premi Aggiungi alla schermata principale`,\n's6196153c4b0c1ea0': `Installa`,\n's922329d6f6213590': `Aggiungi al Dock`,\n'sa5ef80b4bb9b39f8': `Meno`,\n'sa7551383d1897fcc': `2) Premi Aggiungi al Dock`,\n'sba52286c21552a4e': `Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.`,\n'sc79fd7641eb9a975': `Nascondi istruzioni`,\n'scdaf4bbff76674c8': `Aggiungi alla schermata principale`,\n'sdfe23506a3b0cdc8': `1) Apri nel browser Safari`,\n'se740f75b95a51807': `Aggiungilo al Dock per un'esperienza più completa e un accesso facile.`,\n'sfea652f6580ff086': `Questo sito ha funzionalità di app.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Přidejte jej na plochu pro rozšířené využití a snadný přístup.`,\n's1b9047d53d9f9d22': `2) Stiskněte tlačítko Sdílet na navigačním panelu`,\n's37a9e8aec5713460': `Vice`,\n's5c6aad7a7e4a1437': `3) Stiskněte tlačítko Přidat na plochu`,\n's6196153c4b0c1ea0': `Nainstalovat`,\n's922329d6f6213590': `Přidat do Docku`,\n'sa5ef80b4bb9b39f8': `Méně`,\n'sa7551383d1897fcc': `2) Stiskněte Přidat do Docku`,\n'sba52286c21552a4e': `Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.`,\n'sc79fd7641eb9a975': `Skrýt instrukce`,\n'scdaf4bbff76674c8': `Přidat na plochu`,\n'sdfe23506a3b0cdc8': `1) Otevřete v prohlížeči Safari`,\n'se740f75b95a51807': `Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.`,\n'sfea652f6580ff086': `Tento web má funkce aplikace.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.`,\n's1b9047d53d9f9d22': `2) Trykk på Del-knappen i navigasjonslinjen`,\n's37a9e8aec5713460': `Mer`,\n's5c6aad7a7e4a1437': `3) Velg Legg til på Hjem-skjerm`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Legg til i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Velg Legg til i Dock`,\n'sba52286c21552a4e': `Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sc79fd7641eb9a975': `Skjul instruksjoner`,\n'scdaf4bbff76674c8': `Legg til på Hjem-skjerm`,\n'sdfe23506a3b0cdc8': `1) Åpne i Safari`,\n'se740f75b95a51807': `Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sfea652f6580ff086': `Denne siden har app-funksjonalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.`,\n's1b9047d53d9f9d22': `2) Pressione Compartilhar na barra de endereço`,\n's37a9e8aec5713460': `Mais`,\n's5c6aad7a7e4a1437': `3) Pressione Adicionar à Tela de Início`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Adicionar ao Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Pressione Adicionar ao Dock`,\n'sba52286c21552a4e': `Instale no dispositivo para uma melhor experiência e mais fácil acesso.`,\n'sc79fd7641eb9a975': `Ocultar Instruções`,\n'scdaf4bbff76674c8': `Adicionar à Tela de Início`,\n'sdfe23506a3b0cdc8': `1) Abra no navegador Safari`,\n'se740f75b95a51807': `Adicione ao Dock para uma melhor experiência e mais fácil acesso.`,\n'sfea652f6580ff086': `Este site possui funcionalidade de aplicativo.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。`,\n's1b9047d53d9f9d22': `2) ナビゲーションバーで共有を押す`,\n's37a9e8aec5713460': `展開`,\n's5c6aad7a7e4a1437': `3) 「ホーム画面に追加」を押す`,\n's6196153c4b0c1ea0': `インストール`,\n's922329d6f6213590': `Dockに追加`,\n'sa5ef80b4bb9b39f8': `折りたたむ`,\n'sa7551383d1897fcc': `2) 「Dockに追加」を押す`,\n'sba52286c21552a4e': `デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。`,\n'sc79fd7641eb9a975': `説明を非表示`,\n'scdaf4bbff76674c8': `ホーム画面に追加`,\n'sdfe23506a3b0cdc8': `1) Safariで開く`,\n'se740f75b95a51807': `ドックに追加して、幅広い体験と簡単なアクセスを実現してください。`,\n'sfea652f6580ff086': `このサイトはアプリ機能があります。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.`,\n's1b9047d53d9f9d22': `2) Tryck på Dela-knappen i verktygsfältet`,\n's37a9e8aec5713460': `Mer`,\n's5c6aad7a7e4a1437': `3) Välj Lägg till på hemskärmen`,\n's6196153c4b0c1ea0': `Installera`,\n's922329d6f6213590': `Lägg till i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Välj Lägg till i Dock`,\n'sba52286c21552a4e': `Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sc79fd7641eb9a975': `Göm instruktioner`,\n'scdaf4bbff76674c8': `Lägg till på hemskärmen`,\n'sdfe23506a3b0cdc8': `1) Öppna i Safari`,\n'se740f75b95a51807': `Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sfea652f6580ff086': `Denna webbsajt har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.`,\n's1b9047d53d9f9d22': `2) 내비게이션 바에서 공유 버튼 누르기`,\n's37a9e8aec5713460': `더보기`,\n's5c6aad7a7e4a1437': `3) 홈 화면에 추가 버튼 누르기`,\n's6196153c4b0c1ea0': `설치`,\n's922329d6f6213590': `Dock에 추가`,\n'sa5ef80b4bb9b39f8': `닫기`,\n'sa7551383d1897fcc': `2) Dock에 추가 버튼 누르기`,\n'sba52286c21552a4e': `더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.`,\n'sc79fd7641eb9a975': `안내 숨기기`,\n'scdaf4bbff76674c8': `홈 화면에 추가`,\n'sdfe23506a3b0cdc8': `1) Safari 브라우저에서 열기`,\n'se740f75b95a51807': `더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.`,\n'sfea652f6580ff086': `이 사이트는 앱 기능을 가지고 있습니다.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n's1b9047d53d9f9d22': `2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ`,\n's37a9e8aec5713460': `បង្ហាញបន្ថែម`,\n's5c6aad7a7e4a1437': `3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n's6196153c4b0c1ea0': `តំឡើង`,\n's922329d6f6213590': `បន្ថែមទៅកាន់ Dock`,\n'sa5ef80b4bb9b39f8': `បង្ហាញតិច`,\n'sa7551383d1897fcc': `2) ចុចលើ បន្ថែមទៅកាន់ Dock`,\n'sba52286c21552a4e': `តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sc79fd7641eb9a975': `បិទការណែនាំ`,\n'scdaf4bbff76674c8': `បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n'sdfe23506a3b0cdc8': `1) បើកនៅក្នុងកម្មវិធី Safari`,\n'se740f75b95a51807': `បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sfea652f6580ff086': `គេហទំព័រនេះមានមុខងារជាកម្មវិធី។`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.`,\n's1b9047d53d9f9d22': `2) Tryk på Del-knappen i navigationslinjen`,\n's37a9e8aec5713460': `Mere`,\n's5c6aad7a7e4a1437': `3) Vælg Tilføj til hjemmeskærm`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Tilføj til Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Vælg Tilføj til Dock`,\n'sba52286c21552a4e': `Installer den på din enhed for en bedre oplevelse og nem adgang.`,\n'sc79fd7641eb9a975': `Skjul instruktion`,\n'scdaf4bbff76674c8': `Tilføj til hjemmeskærm`,\n'sdfe23506a3b0cdc8': `1) Åbn i Safari-browseren`,\n'se740f75b95a51807': `Tilføj den til din Dock for en bedre oplevelse og nem adgang.`,\n'sfea652f6580ff086': `Denne side har app-funktionalitet.`,\n };\n ","import { configureLocalization } from '@lit/localize';\r\nimport {\r\n sourceLocale,\r\n targetLocales,\r\n} from './locale-codes';\r\n\r\nimport * as ru from './locales/ru';\r\nimport * as tr from './locales/tr';\r\nimport * as de from \"./locales/de\";\r\nimport * as es from \"./locales/es\";\r\nimport * as nl from \"./locales/nl\";\r\nimport * as el from \"./locales/el\";\r\nimport * as fr from \"./locales/fr\";\r\nimport * as sr from \"./locales/sr\";\r\nimport * as pl from \"./locales/pl\";\r\nimport * as uk from \"./locales/uk\";\r\nimport * as zhHK from \"./locales/zh-HK\";\r\nimport * as zhCN from \"./locales/zh-CN\";\r\nimport * as it from \"./locales/it\";\r\nimport * as cs from \"./locales/cs\";\r\nimport * as no from \"./locales/no\";\r\nimport * as pt from \"./locales/pt\";\r\nimport * as ja from \"./locales/ja\";\r\nimport * as sv from \"./locales/sv\";\r\nimport * as ko from \"./locales/ko\";\r\nimport * as km from \"./locales/km\";\r\nimport * as da from \"./locales/da\";\r\n\r\nconst localizedTemplates = new Map([\r\n ['ru', ru],\r\n ['tr', tr],\r\n ['de', de],\r\n ['es', es],\r\n ['nl', nl],\r\n ['el', el],\r\n ['fr', fr],\r\n ['sr', sr],\r\n ['pl', pl],\r\n ['uk', uk],\r\n ['zh-HK', zhHK],\r\n ['zh-CN', zhCN],\r\n ['it', it],\r\n ['cs', cs],\r\n ['no', no], // + nb\r\n ['pt', pt],\r\n ['ja', ja],\r\n ['sv', sv],\r\n ['ko', ko],\r\n ['km', km],\r\n ['da', da],\r\n])\r\n\r\nexport const { getLocale, setLocale } = configureLocalization({\r\n sourceLocale,\r\n targetLocales,\r\n // @ts-ignore\r\n loadLocale: async (lang: string) => localizedTemplates.get(lang)\r\n});\r\n\r\nexport const changeLocale = (lang: string) => {\r\n // Norwegian Bokmål is same as Norwegian\r\n switch (lang.slice(0, 2)) {\r\n case 'nb':\r\n lang = 'no';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // Fallback to simplified Chinese\r\n switch (lang) {\r\n case 'zh':\r\n case 'zh-TW':\r\n lang = 'zh-CN';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n try {\r\n if (localizedTemplates.get(lang))\r\n setLocale(lang);\r\n else\r\n setLocale(lang.slice(0, 2));\r\n }\r\n catch {\r\n console.warn(`pwa-install: translation error - unsupported locale: ${lang}`);\r\n }\r\n};\r\n","import { ImageResource } from 'web-app-manifest';\r\n\r\nexport interface IRelatedApp {\r\n id: string,\r\n platform: string,\r\n url: string\r\n}\r\n\r\nexport interface IWindow extends Window {\r\n defferedPromptEvent: BeforeInstallPromptEvent | null;\r\n}\r\n\r\ntype Booleanish = 'true' | 'false';\r\n\r\nexport interface PWAInstallAttributes {\r\n ['manual-apple']?: Booleanish;\r\n ['manual-chrome']?: Booleanish;\r\n ['disable-chrome']?: Booleanish;\r\n ['install-description']?: string;\r\n ['disable-install-description']?: Booleanish;\r\n ['manifest-url']?: string;\r\n name?: string;\r\n description?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ManifestScreenshot extends ImageResource {\r\n label?: string;\r\n platform?: string;\r\n form_factor?: \"wide\" | \"narrow\";\r\n}\r\n\r\nexport class Manifest {\r\n constructor() {\r\n this.icons = [{ src: '' }];\r\n this.screenshots = undefined;\r\n this.short_name = 'PWA';\r\n this.name = 'Progressive web application';\r\n this.description = 'Progressive web application';\r\n }\r\n short_name: string;\r\n icons: ImageResource[];\r\n screenshots?: ManifestScreenshot[];\r\n name: string;\r\n description: string;\r\n}\r\n","import {css} from 'lit'; export default css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`;\n ","import { WebAppManifest } from 'web-app-manifest';\r\nimport { IRelatedApp } from './types/types';\r\n\r\nconst _eventDispatcher = (_element: Element, name: string, message: string) => {\r\n const event = new CustomEvent(name, {\r\n detail: {\r\n message\r\n }\r\n });\r\n _element.dispatchEvent(event);\r\n}\r\nexport default class Utils {\r\n static isAppleMobile(): boolean {\r\n\t\tif (\r\n (\r\n ['iPhone', 'iPad', 'iPod'].includes(navigator.platform) ||\r\n (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2)\r\n )\r\n && ('serviceWorker' in navigator)\r\n )\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static isAppleDesktop(): boolean {\r\n // check if it's a mac\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n if (navigator.maxTouchPoints || !userAgent.match(/macintosh/))\r\n return false;\r\n // check safari version >= 17\r\n const version = /version\\/(\\d{2})\\./.exec(userAgent)\r\n if (!version || !version[1] || !(parseInt(version[1]) >= 17))\r\n return false;\r\n // hacky way to detect Sonoma\r\n const audioCheck = document.createElement('audio').canPlayType('audio/wav; codecs=\"1\"') ? true : false;\r\n const webGLCheck = new OffscreenCanvas(1, 1).getContext('webgl') ? true : false;\r\n\r\n return audioCheck && webGLCheck;\r\n }\r\n\r\n static deviceFormFactor(): 'narrow' | 'wide' {\r\n return window.matchMedia('(orientation: portrait)').matches? 'narrow' : 'wide';\r\n }\r\n \r\n static isStandalone() {\r\n\t\tif (window.matchMedia('(display-mode: standalone)').matches || ('standalone' in navigator && (navigator as any).standalone === true))\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static async getInstalledRelatedApps(): Promise {\r\n if ('getInstalledRelatedApps' in navigator)\r\n try{\r\n return await (navigator as any).getInstalledRelatedApps().then((relatedApps: IRelatedApp[]) => {\r\n return relatedApps;\r\n });\r\n } catch (e) {}\r\n \r\n return [];\r\n }\r\n \r\n static async isRelatedAppsInstalled(): Promise {\r\n const _relatedApps = await this.getInstalledRelatedApps();\r\n return _relatedApps.length? true : false;\r\n }\r\n\r\n static setStorageFlag(name: string, value:boolean, persistent: boolean = false) {\r\n try {\r\n if (persistent)\r\n localStorage.setItem(name, value.toString());\r\n else\r\n sessionStorage.setItem(name, value.toString());\r\n } catch (e) {}\r\n }\r\n static getStorageFlag(name: string): boolean {\r\n try {\r\n return sessionStorage.getItem(name) === 'true' || localStorage.getItem(name) === 'true';\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n static eventInstalledSuccess(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-success-event', 'App install success (Chromium/Android only)');\r\n }\r\n static eventInstalledFail(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-fail-event', 'App install failed (Chromium/Android only)');\r\n }\r\n static eventUserChoiceResult(_element: Element, message: string) {\r\n _eventDispatcher(_element, 'pwa-user-choice-result-event', message);\r\n }\r\n static eventInstallAvailable(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-available-event', 'App install available');\r\n }\r\n static eventInstallHowTo(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-how-to-event', 'App install instruction showed');\r\n }\r\n static eventGallery(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-gallery-event', 'App install gallery showed');\r\n }\r\n\r\n static normalizeManifestAssetUrls(manifest: WebAppManifest, manifestUrl: string) {\r\n const normalizedManifestUrl = new URL(manifestUrl, document.location.href);\r\n [...manifest.icons || [], ...manifest.screenshots || []].forEach(asset => {\r\n asset.src = new URL(asset.src, normalizedManifestUrl).href;\r\n })\r\n }\r\n}","import { html } from 'lit';\r\nimport Utils from '../utils';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nconst template = (screenshots: ManifestScreenshot[], theme: string, scrollToNextPage: any, scrollToPrevPage: any) => {\r\n\r\n return html`\r\n ${screenshots? html`\r\n
\r\n
\r\n
\r\n ${screenshots.filter(screenshot => !screenshot.form_factor || screenshot.form_factor === Utils.deviceFormFactor()).map(screenshot => html`${screenshot.label || \"\"}`)}\r\n
\r\n
\r\n \r\n ${theme != 'default'?\r\n html``\r\n :\r\n html``\r\n }\r\n \r\n \r\n ${theme != 'default'?\r\n html`\r\n \r\n `\r\n :\r\n html`\r\n \r\n \r\n \r\n `\r\n }\r\n \r\n
`\r\n : ''}`;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nimport styles from './styles-gallery.scss';\r\nimport template from './template-gallery';\r\n\r\n@customElement('pwa-gallery')\r\nexport default class PWAGalleryElement extends LitElement {\r\n\t@property({ type: Array }) screenshots: ManifestScreenshot[] = [];\r\n\t@property() theme: 'default' | 'apple_desktop' | 'apple_mobile' = 'default';\r\n\r\n\tstatic get styles() {\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tprivate getScrollElements = () => {\r\n\t\tconst gallery = this.shadowRoot?.querySelector('#paginated_gallery') as HTMLElement | null;\r\n\t\tif (!gallery) return;\r\n\t\t\r\n\t\tconst galleryScroller = gallery.querySelector('.gallery_scroller') as HTMLElement | null;\r\n\t\tif (!galleryScroller) return;\r\n\t\r\n\t\tconst galleryItems = Array.from(galleryScroller.querySelectorAll('img')) as HTMLElement[];\r\n\t\tif (galleryItems.length === 0) return;\r\n\t\r\n\t\treturn {\r\n\t\t\tscroller: galleryScroller,\r\n\t\t\titems: galleryItems\r\n\t\t};\r\n\t};\r\n\t\r\n\tprivate findCurrentItem = (scroller: HTMLElement, items: HTMLElement[]): HTMLElement | null => {\r\n\t\tconst scrollLeft = scroller.scrollLeft;\r\n\t \t// Find the item closest to the center of the viewport.\r\n\t\treturn items.find((item) => (item.offsetWidth + item.offsetLeft) >= scrollLeft + (item.offsetWidth / 2.5)) || null;\r\n\t};\r\n\t\r\n\tprivate scrollToPage = (direction: 'next' | 'prev') => {\r\n\t\tconst scrollData = this.getScrollElements();\r\n\t\tif (!scrollData) return;\r\n\t\r\n\t\tconst { scroller, items } = scrollData;\r\n\t\tconst currentItem = this.findCurrentItem(scroller, items);\r\n\t\tif (!currentItem) return;\r\n\t\r\n\t\tconst currentIndex = items.indexOf(currentItem);\r\n\t\tconst offset = direction === 'next' ? 1 : -1;\r\n\t\tconst targetIndex = currentIndex + offset;\r\n\t\t\r\n\t\tif (targetIndex >= 0 && targetIndex < items.length) {\r\n\t\t\titems[targetIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\r\n\t\t}\r\n\t};\r\n\t\r\n\tpublic scrollToNextPage = () => {\r\n\t\tthis.scrollToPage('next');\r\n\t};\r\n\t\r\n\tpublic scrollToPrevPage = () => {\r\n\t\tthis.scrollToPage('prev');\r\n\t};\r\n\r\n\r\n\tprivate _init = () => {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tconst _tools = this.getScrollElements();\r\n\t\tif (_tools)\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\t_tools.scroller.scrollTo({\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t300\r\n\t\t\t)\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\tthis._init();\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(\r\n this.screenshots,\r\n\t\t\tthis.theme,\r\n\t\t\tthis.scrollToNextPage,\r\n\t\t\tthis.scrollToPrevPage\r\n )}`;\r\n\t}\r\n}\r\n","import { html } from 'lit';\nimport { msg } from '@lit/localize';\n\nconst template = (name: string, description: string, icon: string, install: any) => {\n return html`\n
\n
\n
\n \"icon\"\n
\n
\n
\n \n
\n
${location.hostname}
\n
\n \n
\n ${description ? html `
${description}
`: ''}\n `;\n};\nexport default template;\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\n\r\n// import TouchDragListener from \"./touch-listener\";\r\n\r\ntype IProps = {\r\n name: string,\r\n description: string,\r\n icon: string\r\n}\r\n\r\nimport template from './template-bottom-sheet';\r\nimport Utils from '../../../utils';\r\n\r\n@customElement('pwa-bottom-sheet')\r\nexport default class PWABottomSheetElement extends LitElement {\r\n\t@property({type: Object}) props: IProps = {\r\n name: '',\r\n description: '',\r\n icon: ''\r\n };\r\n @property({type: Object}) install = {handleEvent: () => {}};\r\n\t@property() hideDialog = () => {};\r\n\t@property() disableClose = false;\r\n\r\n\tprivate _callInstall = () => {\r\n\t\tthis.install.handleEvent();\r\n\t}\r\n\r\n\tprivate _callHide = () => {\r\n\t\tthis.hideDialog();\r\n\t\tthis.setupAppearence();\r\n\t}\r\n\r\n\tprivate bindedElement: {\r\n\t\ttouchElement: HTMLElement,\r\n\t\tlistener: any }| null = null;\r\n\tprivate readonly _saveBodyStyle = document.body.style.overscrollBehaviorY;\r\n\tprivate dragMobileSheet = (element: HTMLElement | null | undefined, touchTargetElement: HTMLElement | undefined, infoElement: HTMLElement | undefined) => {\r\n\t\tif (!element || !touchTargetElement || !infoElement)\r\n\t\t\treturn null;\r\n\r\n\t\tlet dragOffset = 0;\r\n\t\tconst bounceOffset = 35;\r\n\t\tconst bottomSize = touchTargetElement.clientHeight + infoElement.clientHeight;\r\n\r\n\t\tconst getYCoord = (e: MouseEvent | TouchEvent): number => {\r\n\t\t\treturn (e as MouseEvent).clientY || ((e as TouchEvent).changedTouches && (e as TouchEvent).changedTouches.length? (e as TouchEvent).changedTouches[0].clientY : 0);\r\n\t\t}\r\n\r\n\t\tconst dragMouseDown = (e: MouseEvent | TouchEvent) => {\r\n\t\t\twindow.addEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.addEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.addEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.addEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tdragOffset = getYCoord(e) - touchTargetElement.getBoundingClientRect().top;\r\n\r\n\t\t\tdocument.body.style.overscrollBehaviorY = 'none';\r\n\t\t}\r\n\t\tconst dragMouseUp = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tdocument.body.style.overscrollBehaviorY = this._saveBodyStyle;\r\n\r\n\t\t\tif (!this.disableClose && getYCoord(e) >= window.innerHeight - 25) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight + 50, true);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (window.innerHeight - getYCoord(e) > element.clientHeight / 2.5) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - element.clientHeight);\r\n\t\t\t\t\r\n\t\t\t\ttry {\r\n\t\t\t\t\tUtils.eventGallery((this.getRootNode() as ShadowRoot).host);\r\n\t\t\t\t} catch (e) {}\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - bottomSize - bounceOffset);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dragMouseMove = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tconst currentY = getYCoord(e);\r\n\r\n\t\t\tif (this.disableClose && window.innerHeight - currentY < 70) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (currentY <= (window.innerHeight - element.clientHeight + dragOffset)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`none`\r\n\t\t\t)\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"--translateY\",\r\n\t\t\t\t`translateY(${currentY - dragOffset}px)`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst closeDragElement = (e: MouseEvent | TouchEvent, toPoint?: number, hideDialog?: boolean) => {\r\n\t\t\twindow.removeEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.removeEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.removeEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.removeEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tif (window.innerWidth >= 768)\r\n\t\t\t\treturn\r\n\r\n\t\t\tif (!toPoint && getYCoord(e) >= window.innerHeight - bottomSize)\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(calc(100vh - ${bottomSize}px))`\r\n\t\t\t\t);\r\n\t\t\telse\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(${(toPoint || getYCoord(e)) + bounceOffset}px)`\r\n\t\t\t\t);\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s`\r\n\t\t\t);\r\n\r\n\t\t\tif (hideDialog){\r\n\t\t\t\ttouchTargetElement.removeEventListener('mousedown', dragMouseDown);\r\n\t\t\t\ttouchTargetElement.removeEventListener('touchstart', dragMouseDown);\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\tthis._callHide,\r\n\t\t\t\t\t250\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ttouchTargetElement.addEventListener('mousedown', dragMouseDown);\r\n\t\ttouchTargetElement.addEventListener('touchstart', dragMouseDown, {passive: true});\r\n\r\n\t\tcloseDragElement(new MouseEvent('mouseup'), window.innerHeight - bottomSize - bounceOffset);\r\n\r\n\t\treturn {\r\n\t\t\ttouchElement: touchTargetElement,\r\n\t\t\tlistener: dragMouseDown\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupAppearence = () => {\r\n\t\tif (this.bindedElement) {\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('mousedown', this.bindedElement.listener);\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('touchstart', this.bindedElement.listener);\r\n\t\t}\r\n\r\n\t\tthis.bindedElement = this.dragMobileSheet(\r\n\t\t\tthis.parentElement?.parentElement,\r\n\t\t\tthis.parentElement?.getElementsByClassName('touch-header')[0] as HTMLElement,\r\n\t\t\tthis.parentElement?.getElementsByClassName('body-header')[0] as HTMLElement);\r\n\t}\r\n\tprivate _init = () => {\r\n\t\tthis.setupAppearence();\r\n\r\n\t\twindow.addEventListener('resize', this.setupAppearence);\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tthis._init();\r\n return;\r\n\t}\r\n\r\n createRenderRoot() {\r\n return this;\r\n }\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(this.props.name, this.props.description, this.props.icon, this._callInstall)}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,\"Segoe UI\",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:\"\";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,\"Segoe UI\",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:\"\";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`;\n ","import {css} from 'lit'; export default css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,\"Segoe UI\";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon description\" \"welcome welcome\" \"how-to how-to\" \"gallery gallery\" \"button button\";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon\" \"description\" \"welcome\" \"how-to\" \"gallery\" \"button\";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;\n ","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"classMap\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_directives_class_map_js_2f88e643__.classMap) });","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, install: any, toggleGallery: any, galleryRequested: boolean) => {\r\n const installDialogClasses = () => { return {available: installAvailable, gallery: galleryRequested }};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n ${!disableClose? html`` : ''}\r\n
\r\n
${location.hostname}
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n ${!disableDescription? \r\n html`
${installDescription? installDescription: `${msg('This site has app functionality.')} ${msg('Install it on your device for extensive experience and easy access.')}`}
` \r\n : ''}\r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n ${screenshotsAvailable? html``:''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n
\r\n
`;\r\n};\r\nexport default template;\r\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, howToForApple: any, isDesktop: boolean, howToRequested: boolean, toggleGallery: any, galleryRequested: boolean) => {\r\n const installDialogClassesApple = () => { return {available: installAvailable, 'how-to': howToRequested, gallery: galleryRequested, desktop: isDesktop}};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, PropertyValues, html } from 'lit';\r\nimport { localized } from '@lit/localize';\r\nimport { property, state, customElement } from 'lit/decorators.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { changeLocale } from './localization';\r\n\r\nimport { IRelatedApp, Manifest, IWindow, PWAInstallAttributes } from './types/types';\r\n\r\nimport PWAGalleryElement from './gallery';\r\nimport PWABottomSheetElement from './templates/chrome/bottom-sheet';\r\n\r\nimport Utils from './utils';\r\n\r\ndeclare const window: IWindow;\r\n\r\nimport styles from './templates/chrome/styles.scss';\r\nimport stylesApple from './templates/apple/styles-apple.scss';\r\n\r\nimport template from './templates/chrome/template';\r\nimport templateApple from './templates/apple/template-apple';\r\n\r\n/**\r\n * @event {CustomEvent} pwa-install-success-event - App install success (Chromium/Android only)\r\n * @event {CustomEvent} pwa-install-fail-event - App install failed (Chromium/Android only)\r\n * @event {CustomEvent} pwa-user-choice-result-event - dismissed, accepted\r\n * @event {CustomEvent} pwa-install-available-event - App install available\r\n * @event {CustomEvent} pwa-install-how-to-event - App install instruction showed\r\n * @event {CustomEvent} pwa-install-gallery-event - App install gallery showed\r\n */\r\n@localized()\r\n@customElement('pwa-install')\r\nexport class PWAInstallElement extends LitElement {\r\n\t@property({attribute: 'manifest-url'}) manifestUrl = '/manifest.json';\r\n\t@property() icon = '';\r\n\t@property() name = '';\r\n\t@property() description = '';\r\n\t@property({attribute: 'install-description'}) installDescription = '';\r\n\t@property({attribute: 'disable-install-description', type: Boolean}) disableDescription = false;\r\n\t@property({attribute: 'disable-screenshots', type: Boolean}) disableScreenshots = false;\r\n\t@property({attribute: 'disable-screenshots-apple', type: Boolean}) disableScreenshotsApple = false;\r\n\t@property({attribute: 'disable-screenshots-chrome', type: Boolean}) disableScreenshotsChrome = false;\r\n\t@property({attribute: 'manual-apple', type: Boolean}) manualApple = false;\r\n\t@property({attribute: 'manual-chrome', type: Boolean}) manualChrome = false;\r\n\t@property({attribute: 'disable-chrome', type: Boolean}) disableChrome = false;\r\n\t@property({attribute: 'disable-close', type: Boolean}) disableClose = false;\r\n\t@property({attribute: 'use-local-storage', type: Boolean}) useLocalStorage = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn [ styles, stylesApple ];\r\n\t}\r\n\r\n\t@state() externalPromptEvent: BeforeInstallPromptEvent | null = null;\r\n\r\n\tpublic platforms: BeforeInstallPromptEvent['platforms'] = [];\r\n\tpublic userChoiceResult = '';\r\n\r\n\tpublic isDialogHidden: boolean = Utils.getStorageFlag('pwa-hide-install');\r\n\tpublic isInstallAvailable = false;\r\n\tpublic isAppleMobilePlatform = false;\r\n\tpublic isAppleDesktopPlatform = false;\r\n\tpublic isUnderStandaloneMode = false;\r\n\tpublic isRelatedAppsInstalled = false;\r\n\r\n\t/** @internal */\r\n\tprivate _manifest: WebAppManifest = new Manifest();\r\n\t/** @internal */\r\n\tprivate _howToRequested = false;\r\n\t/** @internal */\r\n\tprivate _galleryRequested = false;\r\n\t/** @internal */\r\n\tprivate _install = {\r\n\t\thandleEvent: () => {\r\n\t\t\tif (window.defferedPromptEvent) {\r\n\t\t\t\tthis.hideDialog();\r\n\t\t\t\twindow.defferedPromptEvent.prompt();\r\n\t\t\t\twindow.defferedPromptEvent.userChoice\r\n\t\t\t\t\t.then((choiceResult: PromptResponseObject) => {\r\n\t\t\t\t\t\tthis.userChoiceResult = choiceResult.outcome;\r\n\t\t\t\t\t\tUtils.eventUserChoiceResult(this, this.userChoiceResult);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tUtils.eventInstalledFail(this);\r\n\t\t\t\t\t});\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\tpublic install = () => {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis._howToRequested = true;\r\n\t\t\tthis.requestUpdate();\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._install.handleEvent();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialog = {\r\n\t\thandleEvent: () => {\r\n\t\t\tthis.isDialogHidden = true;\r\n\t\t\tUtils.setStorageFlag('pwa-hide-install', true, this.useLocalStorage);\r\n\t\t\tthis.requestUpdate();\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialogUser = () => {\r\n\t\tUtils.eventUserChoiceResult(this, 'dismissed');\r\n\t\tthis.userChoiceResult = 'dismissed';\r\n\t\tthis.hideDialog();\r\n\t}\r\n\tpublic hideDialog = () => {\r\n\t\tthis._hideDialog.handleEvent();\r\n\t}\r\n\tpublic showDialog = (forced = false) => {\r\n\t\tthis.isDialogHidden = false;\r\n\t\tif (forced)\r\n\t\t\tthis.isInstallAvailable = true;\r\n\t\tUtils.setStorageFlag('pwa-hide-install', false, this.useLocalStorage);\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tpublic getInstalledRelatedApps = async (): Promise => {\r\n\t\treturn await Utils.getInstalledRelatedApps();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _howToForApple = {\r\n handleEvent: () => {\r\n\t\t\tthis._howToRequested = !this._howToRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._galleryRequested = false;\r\n\t\t\tthis.requestUpdate();\r\n\r\n\t\t\tif (this._howToRequested) {\r\n\t\t\t\tUtils.eventInstallHowTo(this);\r\n\t\t\t}\t\t\t\t\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate _toggleGallery = {\r\n handleEvent: () => {\r\n\t\t\tthis._galleryRequested = !this._galleryRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._howToRequested = false;\r\n\r\n\t\t\tthis._galleryRequested && Utils.eventGallery(this);\r\n\r\n\t\t\tthis.requestUpdate();\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate async _checkInstalled() {\r\n\t\tthis.isUnderStandaloneMode = Utils.isStandalone();\r\n\t\tthis.isRelatedAppsInstalled = await Utils.isRelatedAppsInstalled();\r\n\t\tthis.isAppleMobilePlatform = Utils.isAppleMobile();\r\n\t\tthis.isAppleDesktopPlatform = Utils.isAppleDesktop();\r\n\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tif (!this.isUnderStandaloneMode) {\r\n\t\t\t\tthis.manualApple && this.hideDialog();\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t1000\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.manualChrome && this.hideDialog();\r\n\t\t}\r\n\t}\r\n\t/** @internal */\r\n\tprivate _init = async () => {\r\n\t\twindow.defferedPromptEvent = null;\r\n\r\n\t\tthis._checkInstalled();\r\n\r\n\t\tif (!this.disableChrome) {\r\n\t\t\tconst _promptHandler = (e: BeforeInstallPromptEvent) => {\r\n\t\t\t\twindow.defferedPromptEvent = e;\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.platforms = e.platforms;\r\n\r\n\t\t\t\tif (this.isRelatedAppsInstalled || this.isUnderStandaloneMode) {\r\n\t\t\t\t\tthis.isInstallAvailable = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userChoiceResult === 'accepted'){\r\n\t\t\t\t\tthis.isDialogHidden = true;\r\n\t\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t\tif (this.externalPromptEvent != null)\r\n\t\t\t\tsetTimeout(() => _promptHandler(this.externalPromptEvent!), 300);\r\n\t\t\telse\r\n\t\t\t\twindow.addEventListener('beforeinstallprompt', _promptHandler);\r\n\t\t}\r\n\r\n\t\twindow.addEventListener('appinstalled', (e) => {\r\n\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\tthis.isInstallAvailable = false;\r\n\r\n\t\t\tthis.requestUpdate();\r\n\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t});\r\n\r\n\r\n\t\ttry{\r\n\t\t\tconst _response = await fetch(this.manifestUrl);\r\n\t\t\tconst _json = await _response.json() as WebAppManifest;\r\n\t\t\tif (!_response.ok || !_json || !Object.keys(_json))\r\n\t\t\t\tthrow new Error('Manifest not found');\r\n\t\t\tUtils.normalizeManifestAssetUrls(_json, this.manifestUrl);\r\n\t\t\t\r\n\t\t\tthis.icon = this.icon || _json.icons?.length ? _json.icons![0].src : '';\r\n\t\t\tthis.name = this.name || _json['short_name'] || _json.name || '';\r\n\t\t\tthis.description = this.description || _json.description || '';\r\n\t\t\tthis._manifest = _json;\r\n\t\t}\r\n\t\tcatch(e) {\r\n\t\t\tthis.icon = this.icon || this._manifest.icons?.[0].src || '';\r\n\t\t\tthis.name = this.name || this._manifest['short_name'] || '';\r\n\t\t\tthis.description = this.description || this._manifest.description || '';\r\n\t\t}\r\n\t};\r\n\t/** @internal */\r\n\tprivate _requestUpdate = () => {\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tchangeLocale(navigator.language);\r\n\t\tthis._init();\r\n\t\tPWAGalleryElement.finalized;\r\n\t\tPWABottomSheetElement.finalized;\r\n\t\tsuper.connectedCallback();\r\n\t}\r\n\twillUpdate(changedProperties: PropertyValues) {\r\n\t\tif (this.externalPromptEvent && changedProperties.has('externalPromptEvent') && typeof this.externalPromptEvent == 'object') {\r\n\t\t this._init();\r\n\t\t}\r\n\t}\r\n\r\n\t// firstUpdated() {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\trender() {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform)\r\n\t\t\treturn html`${templateApple(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsApple,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._howToForApple,\r\n\t\t\t\tthis.isAppleDesktopPlatform,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested\r\n\t\t\t)}`;\r\n\t\telse\r\n\t\t\treturn html`${template(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsChrome,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._install,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested\r\n\t\t\t)}`;\r\n\t}\r\n}\r\n\r\nexport { PWAInstallAttributes };\r\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { updateWhenLocaleChanges } from './localized-controller.js';\n/**\n * Class decorator to enable re-rendering the given LitElement whenever a new\n * active locale has loaded.\n *\n * See also {@link updateWhenLocaleChanges} for the same functionality without\n * the use of decorators.\n *\n * When using lit-localize in transform mode, applications of this decorator are\n * removed.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {customElement} from 'lit/decorators.js';\n * import {msg, localized} from '@lit/localize';\n *\n * @localized()\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nexport const localized = () => (clazz, _context) => {\n clazz.addInitializer(updateWhenLocaleChanges);\n return clazz;\n};\n//# sourceMappingURL=localized-decorator.js.map","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=new Set([\"children\",\"localName\",\"ref\",\"style\",\"className\"]),n=new WeakMap,t=(e,t,o,l,a)=>{const s=a?.[t];void 0===s?(e[t]=o,null==o&&t in HTMLElement.prototype&&e.removeAttribute(t)):o!==l&&((e,t,o)=>{let l=n.get(e);void 0===l&&n.set(e,l=new Map);let a=l.get(t);void 0!==o?void 0===a?(l.set(t,a={handleEvent:o}),e.addEventListener(t,a)):a.handleEvent=o:void 0!==a&&(l.delete(t),e.removeEventListener(t,a))})(e,s,o)},o=({react:n,tagName:o,elementClass:l,events:a,displayName:s})=>{const c=new Set(Object.keys(a??{})),r=n.forwardRef(((s,r)=>{const i=n.useRef(new Map),d=n.useRef(null),f={},u={};for(const[n,t]of Object.entries(s))e.has(n)?f[\"className\"===n?\"class\":n]=t:c.has(n)||n in l.prototype?u[n]=t:f[n]=t;return n.useLayoutEffect((()=>{if(null===d.current)return;const e=new Map;for(const n in u)t(d.current,n,s[n],i.current.get(n),a),i.current.delete(n),e.set(n,s[n]);for(const[e,n]of i.current)t(d.current,e,void 0,n,a);i.current=e})),n.useLayoutEffect((()=>{d.current?.removeAttribute(\"defer-hydration\")}),[]),f.suppressHydrationWarning=!0,n.createElement(o,{...f,ref:n.useCallback((e=>{d.current=e,\"function\"==typeof r?r(e):null!==r&&(r.current=e)}),[r])})}));return r.displayName=s??l.name,r};export{o as createComponent};\n//# sourceMappingURL=create-component.js.map\n","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => (__WEBPACK_EXTERNAL_MODULE_react__[\"default\"]) });","\nimport { PWAInstallElement } from '../index';\nimport { createComponent, ReactWebComponent } from '@lit/react';\nimport react from 'react';\n\nconst PWAInstall = createComponent({\n\treact,\n\ttagName: 'pwa-install',\n\telementClass: PWAInstallElement,\n\tevents: {\n\t onPwaInstallSuccessEvent: 'pwa-install-success-event',\n\t onPwaInstallFailEvent: 'pwa-install-fail-event',\n\t onPwaUserChoiceResultEvent: 'pwa-user-choice-result-event',\n\t onPwaInstallAvailableEvent: 'pwa-install-available-event',\n\t onPwaInstallHowToEvent: 'pwa-install-how-to-event',\n\t onPwaInstallGalleryEvent: 'pwa-install-gallery-event'\n\t}\n});\n\nexport default PWAInstall;"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","y","x","d","__WEBPACK_EXTERNAL_MODULE_lit__","joinStringsAndValues","strings","values","valueOrder","concat","i","length","defaultMsg","template","isStrTagged","val","msg","installed","LOCALE_STATUS_EVENT","LocalizeController","constructor","host","this","__litLocalizeEventHandler","event","detail","status","requestUpdate","hostConnected","window","addEventListener","hostDisconnected","removeEventListener","updateWhenLocaleChanges","addController","Deferred","settled","promise","Promise","resolve","reject","_resolve","_reject","error","hl","toString","HASH_DELIMITER","HTML_PREFIX","STRING_PREFIX","generateMsgId","isHtmlTagged","str","t0","v0","t1","v1","t2","v2","t3","v3","charCodeAt","fnv1a64","join","expressionOrders","WeakMap","hashCache","Map","runtimeMsg","templates","options","id","undefined","set","generateId","localized","order","map","dispatchStatusEvent","dispatchEvent","CustomEvent","loadingLocale","sourceLocale","validLocales","loadLocale","activeLocale","loading","requestId","getLocale","setLocale","newLocale","Error","has","thisRequestId","then","mod","readyLocale","err","errorLocale","errorMessage","__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__","targetLocales","localizedTemplates","config","async","lang","impl","_installMsgImplementation","Set","add","Manifest","icons","src","screenshots","short_name","name","description","css","_eventDispatcher","_element","message","Utils","isAppleMobile","includes","navigator","platform","userAgent","match","maxTouchPoints","isAppleDesktop","toLowerCase","version","exec","parseInt","audioCheck","document","createElement","canPlayType","webGLCheck","OffscreenCanvas","getContext","deviceFormFactor","matchMedia","matches","isStandalone","standalone","getInstalledRelatedApps","relatedApps","e","isRelatedAppsInstalled","setStorageFlag","persistent","localStorage","setItem","sessionStorage","getStorageFlag","getItem","eventInstalledSuccess","eventInstalledFail","eventUserChoiceResult","eventInstallAvailable","eventInstallHowTo","eventGallery","normalizeManifestAssetUrls","manifest","manifestUrl","normalizedManifestUrl","URL","location","href","forEach","asset","theme","scrollToNextPage","scrollToPrevPage","html","PWAGalleryElement","LitElement","getScrollElements","gallery","shadowRoot","querySelector","galleryScroller","galleryItems","Array","from","querySelectorAll","scroller","items","findCurrentItem","scrollLeft","find","item","offsetWidth","offsetLeft","scrollToPage","direction","scrollData","currentItem","targetIndex","indexOf","scrollIntoView","behavior","block","inline","_init","styles","firstUpdated","_tools","setTimeout","scrollTo","top","left","connectedCallback","super","render","property","type","customElement","icon","install","PWABottomSheetElement","props","handleEvent","hideDialog","disableClose","_callInstall","_callHide","setupAppearence","bindedElement","_saveBodyStyle","body","style","overscrollBehaviorY","dragMobileSheet","element","touchTargetElement","infoElement","dragOffset","bottomSize","clientHeight","getYCoord","clientY","changedTouches","dragMouseDown","dragMouseUp","dragMouseMove","getBoundingClientRect","innerHeight","closeDragElement","getRootNode","currentY","setProperty","toPoint","innerWidth","passive","MouseEvent","touchElement","listener","parentElement","getElementsByClassName","createRenderRoot","__WEBPACK_EXTERNAL_MODULE_lit_directives_class_map_js_2f88e643__","installDescription","disableDescription","disableScreenshots","installAvailable","toggleGallery","galleryRequested","installDialogClasses","available","screenshotsAvailable","howToForApple","isDesktop","howToRequested","desktop","PWAInstallElement","disableScreenshotsApple","disableScreenshotsChrome","manualApple","manualChrome","disableChrome","useLocalStorage","externalPromptEvent","platforms","userChoiceResult","isDialogHidden","isInstallAvailable","isAppleMobilePlatform","isAppleDesktopPlatform","isUnderStandaloneMode","_manifest","_howToRequested","_galleryRequested","_install","defferedPromptEvent","prompt","userChoice","choiceResult","outcome","catch","_hideDialog","_hideDialogUser","showDialog","forced","_howToForApple","_toggleGallery","_checkInstalled","_promptHandler","preventDefault","_response","fetch","_json","json","ok","keys","_requestUpdate","slice","changeLocale","language","finalized","willUpdate","changedProperties","attribute","Boolean","state","clazz","_context","addInitializer","n","t","l","a","s","HTMLElement","removeAttribute","delete","__WEBPACK_EXTERNAL_MODULE_react__","PWAInstall","react","tagName","elementClass","events","displayName","c","r","forwardRef","useRef","f","u","entries","useLayoutEffect","current","suppressHydrationWarning","ref","useCallback","onPwaInstallSuccessEvent","onPwaInstallFailEvent","onPwaUserChoiceResultEvent","onPwaInstallAvailableEvent","onPwaInstallHowToEvent","onPwaInstallGalleryEvent"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"pwa-install.react-legacy.js","mappings":"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","sources":["webpack://@khmyznikov/pwa-install/webpack/bootstrap","webpack://@khmyznikov/pwa-install/webpack/runtime/define property getters","webpack://@khmyznikov/pwa-install/webpack/runtime/hasOwnProperty shorthand","webpack://@khmyznikov/pwa-install/webpack/runtime/make namespace object","webpack://@khmyznikov/pwa-install/external module \"lit\"","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/str-tag.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/default-msg.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/init/install.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/locale-status-event.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/localized-controller.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/deferred.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/fnv1a64.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/id-generation.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/runtime-msg.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/init/runtime.js","webpack://@khmyznikov/pwa-install/external module \"lit/decorators.js\"","webpack://@khmyznikov/pwa-install/./src/localization/locale-codes.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ru.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/tr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/de.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/es.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/nl.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/el.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/fr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/sr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/pl.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/uk.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/zh-HK.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/zh-CN.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/it.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/cs.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/no.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/pt.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ja.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/sv.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ko.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/km.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/da.ts","webpack://@khmyznikov/pwa-install/./src/localization/index.ts","webpack://@khmyznikov/pwa-install/./src/types/types.ts","webpack://@khmyznikov/pwa-install/./src/gallery/styles-gallery.scss","webpack://@khmyznikov/pwa-install/./src/utils.ts","webpack://@khmyznikov/pwa-install/./src/gallery/template-gallery.ts","webpack://@khmyznikov/pwa-install/./src/gallery/index.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/template-bottom-sheet.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/index.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/styles.scss","webpack://@khmyznikov/pwa-install/./src/templates/apple/styles-apple.scss","webpack://@khmyznikov/pwa-install/external module \"lit/directives/class-map.js\"","webpack://@khmyznikov/pwa-install/./src/templates/chrome/template.ts","webpack://@khmyznikov/pwa-install/./src/templates/apple/template-apple.ts","webpack://@khmyznikov/pwa-install/./src/index.ts","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/localized-decorator.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/react/create-component.js","webpack://@khmyznikov/pwa-install/external module \"react\"","webpack://@khmyznikov/pwa-install/./src/react-legacy/pwa-install.react-legacy.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"LitElement\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.LitElement), [\"css\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.css), [\"html\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.html) });","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Tag that allows expressions to be used in localized non-HTML template\n * strings.\n *\n * Example: msg(str`Hello ${this.user}!`);\n *\n * The Lit html tag can also be used for this purpose, but HTML will need to be\n * escaped, and there is a small overhead for HTML parsing.\n *\n * Untagged template strings with expressions aren't supported by lit-localize\n * because they don't allow for values to be captured at runtime.\n */\nconst _str = (strings, ...values) => ({\n strTag: true,\n strings,\n values,\n});\nexport const str = _str;\nexport const isStrTagged = (val) => typeof val !== 'string' && 'strTag' in val;\n/**\n * Render the result of a `str` tagged template to a string. Note we don't need\n * to do this for Lit templates, since Lit itself handles rendering.\n */\nexport const joinStringsAndValues = (strings, values, valueOrder) => {\n let concat = strings[0];\n for (let i = 1; i < strings.length; i++) {\n concat += values[valueOrder ? valueOrder[i - 1] : i - 1];\n concat += strings[i];\n }\n return concat;\n};\n//# sourceMappingURL=str-tag.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { isStrTagged, joinStringsAndValues } from './str-tag.js';\n/**\n * Default identity msg implementation. Simply returns the input template with\n * no awareness of translations. If the template is str-tagged, returns it in\n * string form.\n */\nexport const defaultMsg = ((template) => isStrTagged(template)\n ? joinStringsAndValues(template.strings, template.values)\n : template);\n//# sourceMappingURL=default-msg.js.map","import { defaultMsg } from '../internal/default-msg.js';\n/**\n * Make a string or lit-html template localizable.\n *\n * @param template A string, a lit-html template, or a function that returns\n * either a string or lit-html template.\n * @param options Optional configuration object with the following properties:\n * - id: Optional project-wide unique identifier for this template. If\n * omitted, an id will be automatically generated from the template strings.\n * - desc: Optional description\n */\nexport let msg = defaultMsg;\nlet installed = false;\n/**\n * Internal only. Do not use this function.\n *\n * Installs an implementation of the msg function to replace the default\n * identity function. Throws if called more than once.\n *\n * @internal\n */\nexport function _installMsgImplementation(impl) {\n if (installed) {\n throw new Error('lit-localize can only be configured once');\n }\n msg = impl;\n installed = true;\n}\n//# sourceMappingURL=install.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Name of the event dispatched to `window` whenever a locale change starts,\n * finishes successfully, or fails. Only relevant to runtime mode.\n *\n * The `detail` of this event is an object with a `status` string that can be:\n * \"loading\", \"ready\", or \"error\", along with the relevant locale code, and\n * error message if applicable.\n *\n * You can listen for this event to know when your application should be\n * re-rendered following a locale change. See also the Localized mixin, which\n * automatically re-renders LitElement classes using this event.\n */\nexport const LOCALE_STATUS_EVENT = 'lit-localize-status';\n//# sourceMappingURL=locale-status-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { LOCALE_STATUS_EVENT } from './locale-status-event.js';\nclass LocalizeController {\n constructor(host) {\n this.__litLocalizeEventHandler = (event) => {\n if (event.detail.status === 'ready') {\n this.host.requestUpdate();\n }\n };\n this.host = host;\n }\n hostConnected() {\n window.addEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n hostDisconnected() {\n window.removeEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n}\n/**\n * Re-render the given LitElement whenever a new active locale has loaded.\n *\n * See also {@link localized} for the same functionality as a decorator.\n *\n * When using lit-localize in transform mode, calls to this function are\n * replaced with undefined.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {msg, updateWhenLocaleChanges} from '@lit/localize';\n *\n * class MyElement extends LitElement {\n * constructor() {\n * super();\n * updateWhenLocaleChanges(this);\n * }\n *\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nconst _updateWhenLocaleChanges = (host) => host.addController(new LocalizeController(host));\nexport const updateWhenLocaleChanges = _updateWhenLocaleChanges;\n//# sourceMappingURL=localized-controller.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport class Deferred {\n constructor() {\n this.settled = false;\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n resolve(value) {\n this.settled = true;\n this._resolve(value);\n }\n reject(error) {\n this.settled = true;\n this._reject(error);\n }\n}\n//# sourceMappingURL=deferred.js.map","/**\n * @license\n * Copyright 2014 Travis Webb\n * SPDX-License-Identifier: MIT\n */\n// This module is derived from the file:\n// https://github.com/tjwebb/fnv-plus/blob/1e2ce68a07cb7dd4c3c85364f3d8d96c95919474/index.js#L309\n//\n// Changes:\n// - Only the _hash64_1a_fast function is included.\n// - Removed loop unrolling.\n// - Converted to TypeScript ES module.\n// - var -> let/const\n//\n// TODO(aomarks) Upstream improvements to https://github.com/tjwebb/fnv-plus/.\nconst hl = [];\nfor (let i = 0; i < 256; i++) {\n hl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n}\n/**\n * Perform a FNV-1A 64-bit hash of the given string (as UTF-16 code units), and\n * return a hexadecimal digest (left zero padded to 16 characters).\n *\n * @see {@link http://tools.ietf.org/html/draft-eastlake-fnv-06}\n */\nexport function fnv1a64(str) {\n let t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n for (let i = 0; i < str.length; i++) {\n v0 ^= str.charCodeAt(i);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = (t3 + (t2 >>> 16)) & 65535;\n v2 = t2 & 65535;\n }\n return (hl[v3 >> 8] +\n hl[v3 & 255] +\n hl[v2 >> 8] +\n hl[v2 & 255] +\n hl[v1 >> 8] +\n hl[v1 & 255] +\n hl[v0 >> 8] +\n hl[v0 & 255]);\n}\n//# sourceMappingURL=fnv1a64.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { fnv1a64 } from './fnv1a64.js';\n/**\n * Delimiter used between each template string component before hashing. Used to\n * prevent e.g. \"foobar\" and \"foo${baz}bar\" from sharing a hash.\n *\n * This is the \"record separator\" ASCII character.\n */\nexport const HASH_DELIMITER = '\\x1e';\n/**\n * Id prefix on html-tagged templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst HTML_PREFIX = 'h';\n/**\n * Id prefix on plain string templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst STRING_PREFIX = 's';\n/**\n * Generate a unique ID for a lit-localize message.\n *\n * Example:\n * Template: html`Hello ${who}!`\n * Params: [\"Hello \", \"!\"], true\n * Output: h82ccc38d4d46eaa9\n *\n * The ID is constructed as:\n *\n * [0] Kind of template: [h]tml or [s]tring.\n * [1,16] 64-bit FNV-1a hash hex digest of the template strings, as UTF-16\n * code points, delineated by an ASCII \"record separator\" character.\n *\n * We choose FNV-1a because:\n *\n * 1. It's pretty fast (e.g. much faster than SHA-1).\n * 2. It's pretty small (0.25 KiB minified + brotli).\n * 3. We don't require cryptographic security, and 64 bits should give\n * sufficient collision resistance for any one application. Worst\n * case, we will always detect collisions during analysis.\n * 4. We can't use Web Crypto API (e.g. SHA-1), because it's asynchronous.\n * 5. It's a well known non-cryptographic hash with implementations in many\n * languages.\n * 6. There was an existing JavaScript implementation that doesn't require\n * BigInt, for IE11 compatibility.\n */\nexport function generateMsgId(strings, isHtmlTagged) {\n return ((isHtmlTagged ? HTML_PREFIX : STRING_PREFIX) +\n fnv1a64(typeof strings === 'string' ? strings : strings.join(HASH_DELIMITER)));\n}\n//# sourceMappingURL=id-generation.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { defaultMsg } from './default-msg.js';\nimport { joinStringsAndValues } from './str-tag.js';\nimport { generateMsgId } from './id-generation.js';\nconst expressionOrders = new WeakMap();\nconst hashCache = new Map();\nexport function runtimeMsg(templates, template, options) {\n if (templates) {\n const id = options?.id ?? generateId(template);\n const localized = templates[id];\n if (localized) {\n if (typeof localized === 'string') {\n // E.g. \"Hello World!\"\n return localized;\n }\n else if ('strTag' in localized) {\n // E.g. str`Hello ${name}!`\n //\n // Localized templates have ${number} in place of real template\n // expressions. They can't have real template values, because the\n // variable scope would be wrong. The number tells us the index of the\n // source value to substitute in its place, because expressions can be\n // moved to a different position during translation.\n return joinStringsAndValues(localized.strings, \n // Cast `template` because its type wasn't automatically narrowed (but\n // we know it must be the same type as `localized`).\n template.values, localized.values);\n }\n else {\n // E.g. html`Hello ${name}!`\n //\n // We have to keep our own mapping of expression ordering because we do\n // an in-place update of `values`, and otherwise we'd lose ordering for\n // subsequent renders.\n let order = expressionOrders.get(localized);\n if (order === undefined) {\n order = localized.values;\n expressionOrders.set(localized, order);\n }\n return {\n ...localized,\n values: order.map((i) => template.values[i]),\n };\n }\n }\n }\n return defaultMsg(template);\n}\nfunction generateId(template) {\n const strings = typeof template === 'string' ? template : template.strings;\n let id = hashCache.get(strings);\n if (id === undefined) {\n id = generateMsgId(strings, typeof template !== 'string' && !('strTag' in template));\n hashCache.set(strings, id);\n }\n return id;\n}\n//# sourceMappingURL=runtime-msg.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { Deferred } from '../internal/deferred.js';\nimport { LOCALE_STATUS_EVENT } from '../internal/locale-status-event.js';\nimport { runtimeMsg } from '../internal/runtime-msg.js';\nimport { _installMsgImplementation } from './install.js';\n/**\n * Dispatch a \"lit-localize-status\" event to `window` with the given detail.\n */\nfunction dispatchStatusEvent(detail) {\n window.dispatchEvent(new CustomEvent(LOCALE_STATUS_EVENT, { detail }));\n}\nlet activeLocale = '';\nlet loadingLocale;\nlet sourceLocale;\nlet validLocales;\nlet loadLocale;\nlet templates;\nlet loading = new Deferred();\n// The loading promise must be initially resolved, because that's what we should\n// return if the user immediately calls setLocale(sourceLocale).\nloading.resolve();\nlet requestId = 0;\n/**\n * Set configuration parameters for lit-localize when in runtime mode. Returns\n * an object with functions:\n *\n * - `getLocale`: Return the active locale code.\n * - `setLocale`: Set the active locale code.\n *\n * Throws if called more than once.\n */\nexport const configureLocalization = (config) => {\n _installMsgImplementation(((template, options) => runtimeMsg(templates, template, options)));\n activeLocale = sourceLocale = config.sourceLocale;\n validLocales = new Set(config.targetLocales);\n validLocales.add(config.sourceLocale);\n loadLocale = config.loadLocale;\n return { getLocale, setLocale };\n};\n/**\n * Return the active locale code.\n */\nconst getLocale = () => {\n return activeLocale;\n};\n/**\n * Set the active locale code, and begin loading templates for that locale using\n * the `loadLocale` function that was passed to `configureLocalization`. Returns\n * a promise that resolves when the next locale is ready to be rendered.\n *\n * Note that if a second call to `setLocale` is made while the first requested\n * locale is still loading, then the second call takes precedence, and the\n * promise returned from the first call will resolve when second locale is\n * ready. If you need to know whether a particular locale was loaded, check\n * `getLocale` after the promise resolves.\n *\n * Throws if the given locale is not contained by the configured `sourceLocale`\n * or `targetLocales`.\n */\nconst setLocale = (newLocale) => {\n if (newLocale === (loadingLocale ?? activeLocale)) {\n return loading.promise;\n }\n if (!validLocales || !loadLocale) {\n throw new Error('Internal error');\n }\n if (!validLocales.has(newLocale)) {\n throw new Error('Invalid locale code');\n }\n requestId++;\n const thisRequestId = requestId;\n loadingLocale = newLocale;\n if (loading.settled) {\n loading = new Deferred();\n }\n dispatchStatusEvent({ status: 'loading', loadingLocale: newLocale });\n const localePromise = newLocale === sourceLocale\n ? // We could switch to the source locale synchronously, but we prefer to\n // queue it on a microtask so that switching locales is consistently\n // asynchronous.\n Promise.resolve({ templates: undefined })\n : loadLocale(newLocale);\n localePromise.then((mod) => {\n if (requestId === thisRequestId) {\n activeLocale = newLocale;\n loadingLocale = undefined;\n templates = mod.templates;\n dispatchStatusEvent({ status: 'ready', readyLocale: newLocale });\n loading.resolve();\n }\n // Else another locale was requested in the meantime. Don't resolve or\n // reject, because the newer load call is going to use the same promise.\n // Note the user can call getLocale() after the promise resolves if they\n // need to check if the locale is still the one they expected to load.\n }, (err) => {\n if (requestId === thisRequestId) {\n dispatchStatusEvent({\n status: 'error',\n errorLocale: newLocale,\n errorMessage: err.toString(),\n });\n loading.reject(err);\n }\n });\n return loading.promise;\n};\n//# sourceMappingURL=runtime.js.map","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"customElement\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.customElement), [\"property\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.property), [\"state\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.state) });","// Do not modify this file by hand!\n// Re-generate this file by running lit-localize.\n\n/**\n * The locale code that templates in this source code are written in.\n */\nexport const sourceLocale = `en`;\n\n/**\n * The other locale codes that this application is localized into. Sorted\n * lexicographically.\n */\nexport const targetLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `es`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n\n/**\n * All valid project locale codes. Sorted lexicographically.\n */\nexport const allLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `en`,\n `es`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.`,\n's1b9047d53d9f9d22': `2) Нажать \"Поделиться\"`,\n's37a9e8aec5713460': `Подробнее`,\n's5c6aad7a7e4a1437': `3) Нажать \"На экран «Домой»\"`,\n's6196153c4b0c1ea0': `Установить`,\n's922329d6f6213590': `Добавить в Dock`,\n'sa5ef80b4bb9b39f8': `Свернуть`,\n'sa7551383d1897fcc': `2) Нажмите \"Добавить в Dock\"`,\n'sba52286c21552a4e': `Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.`,\n'sc79fd7641eb9a975': `Спрятать Инструкцию`,\n'scdaf4bbff76674c8': `На экран «Домой»`,\n'sdfe23506a3b0cdc8': `1) Открыть в Safari браузере`,\n'se740f75b95a51807': `Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.`,\n'sfea652f6580ff086': `Этот веб-сайт имеет функционал приложения.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.`,\n's1b9047d53d9f9d22': `2) Gezinme çubuğunda Paylaş'a basın`,\n's37a9e8aec5713460': `Daha Fazla`,\n's5c6aad7a7e4a1437': `3) Ana Ekrana Ekle'ye basın`,\n's6196153c4b0c1ea0': `Yükle`,\n's922329d6f6213590': `Dock’a Ekle`,\n'sa5ef80b4bb9b39f8': `Küçült`,\n'sa7551383d1897fcc': `2) Dock’a ekleye basın`,\n'sba52286c21552a4e': `Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.`,\n'sc79fd7641eb9a975': `Talimatları gizle`,\n'scdaf4bbff76674c8': `Ana Ekrana Ekle`,\n'sdfe23506a3b0cdc8': `1) Safari tarayıcısında açın`,\n'se740f75b95a51807': `Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.`,\n'sfea652f6580ff086': `Bu site uygulama işlevselliğine sahiptir.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n's1b9047d53d9f9d22': `2) Drücken Sie auf Teilen in der Navigationsleiste`,\n's37a9e8aec5713460': `Mehr`,\n's5c6aad7a7e4a1437': `3) Drücken Sie Hinzufügen zum Startbildschirm`,\n's6196153c4b0c1ea0': `Installieren`,\n's922329d6f6213590': `Zum Dock hinzufügen`,\n'sa5ef80b4bb9b39f8': `Weniger`,\n'sa7551383d1897fcc': `2) Drücken Sie auf Zum Dock hinzufügen`,\n'sba52286c21552a4e': `Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.`,\n'sc79fd7641eb9a975': `Anleitung ausblenden`,\n'scdaf4bbff76674c8': `Hinzufügen zum Startbildschirm`,\n'sdfe23506a3b0cdc8': `1) In Safari-Browser öffnen`,\n'se740f75b95a51807': `Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n'sfea652f6580ff086': `Diese Website verfügt über App-Funktionalität.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.`,\n's1b9047d53d9f9d22': `2) Presionar Compartir en la barra de direcciones`,\n's37a9e8aec5713460': `Más`,\n's5c6aad7a7e4a1437': `3) Presionar Añadir a pantalla de inicio`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Añadir al Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Presionar Añadir al Dock`,\n'sba52286c21552a4e': `Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.`,\n'sc79fd7641eb9a975': `Esconder instrucciones`,\n'scdaf4bbff76674c8': `Añadir a pantalla de inicio`,\n'sdfe23506a3b0cdc8': `1) Abrir en el navegador web Safari`,\n'se740f75b95a51807': `Añádelo a tu Dock para una experiencia amplia y acceso fácil.`,\n'sfea652f6580ff086': `Este sitio tiene funcionalidad de aplicación.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.`,\n's1b9047d53d9f9d22': `2) Druk op delen in de navigatiebalk`,\n's37a9e8aec5713460': `Meer`,\n's5c6aad7a7e4a1437': `3) Druk op Toevoegen aan het startscherm`,\n's6196153c4b0c1ea0': `Installeren`,\n's922329d6f6213590': `Toevoegen aan Dock`,\n'sa5ef80b4bb9b39f8': `Minder`,\n'sa7551383d1897fcc': `2) Druk op Toevoegen aan Dock`,\n'sba52286c21552a4e': `Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.`,\n'sc79fd7641eb9a975': `Instructie verbergen`,\n'scdaf4bbff76674c8': `Toevoegen aan het startscherm`,\n'sdfe23506a3b0cdc8': `1) Open in Safari-browser`,\n'se740f75b95a51807': `Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.`,\n'sfea652f6580ff086': `Deze site heeft app-functionaliteit.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n's1b9047d53d9f9d22': `2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης`,\n's37a9e8aec5713460': `Περισσότερα`,\n's5c6aad7a7e4a1437': `3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας`,\n's6196153c4b0c1ea0': `Εγκατάσταση`,\n's922329d6f6213590': `Προσθήκη στην Πρόσβαση`,\n'sa5ef80b4bb9b39f8': `Λιγότερα`,\n'sa7551383d1897fcc': `2) Πατήστε Προσθήκη στην Πρόσβαση`,\n'sba52286c21552a4e': `Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sc79fd7641eb9a975': `Απόκρυψη Οδηγιών`,\n'scdaf4bbff76674c8': `Προσθήκη στην Οθόνη Αφετηρίας`,\n'sdfe23506a3b0cdc8': `1) Ανοίξτε τον περιηγητή Safari`,\n'se740f75b95a51807': `Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sfea652f6580ff086': `Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.`,\n's1b9047d53d9f9d22': `2) Appuyez sur Partager dans la barre de navigation`,\n's37a9e8aec5713460': `Plus`,\n's5c6aad7a7e4a1437': `3) Appuyez sur Ajouter à l'écran d'accueil`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Ajouter au Dock`,\n'sa5ef80b4bb9b39f8': `Moins`,\n'sa7551383d1897fcc': `2) Appuyez sur Ajouter au Dock`,\n'sba52286c21552a4e': `Installez-le sur votre appareil pour une expérience complète et un accès facile.`,\n'sc79fd7641eb9a975': `Masquer les instructions`,\n'scdaf4bbff76674c8': `Ajouter à l'écran d'accueil`,\n'sdfe23506a3b0cdc8': `1) Ouvrir dans le navigateur Safari`,\n'se740f75b95a51807': `Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.`,\n'sfea652f6580ff086': `Ce site possède des fonctionnalités d'application.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Додајте га на Home Screen за широке могућности и лак приступ.`,\n's1b9047d53d9f9d22': `2) Притисните Share у навигационој траци`,\n's37a9e8aec5713460': `Више`,\n's5c6aad7a7e4a1437': `3) Притисните Add to Home Screen`,\n's6196153c4b0c1ea0': `Инсталирај`,\n'sa5ef80b4bb9b39f8': `Мање`,\n'sa7551383d1897fcc': `3) Притисните Add to Dock`,\n'sba52286c21552a4e': `Инсталирајте га на вашем уређају за широке могућности и лак приступ.`,\n'sc79fd7641eb9a975': `Сакриј упутство`,\n'sdfe23506a3b0cdc8': `1) Отворите у Safari прегледачу`,\n'se740f75b95a51807': `Додајте га у вашу Dock за широке могућности и лак приступ.`,\n'sfea652f6580ff086': `Овај сајт има функционалност апликације.`,\n's922329d6f6213590': `Add to Dock`,\n'scdaf4bbff76674c8': `Add to Home Screen`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n's1b9047d53d9f9d22': `2) Wybierz \"Udostępnij\"`,\n's37a9e8aec5713460': `Więcej`,\n's5c6aad7a7e4a1437': `3) Wybierz \"Dodaj do Ekranu Głównego\"`,\n's6196153c4b0c1ea0': `Zainstaluj`,\n's922329d6f6213590': `Dodaj do Docka`,\n'sa5ef80b4bb9b39f8': `Mniej`,\n'sa7551383d1897fcc': `2) Wybierz \"Dodaj do Docka\"`,\n'sba52286c21552a4e': `Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sc79fd7641eb9a975': `Ukryj instrukcję`,\n'scdaf4bbff76674c8': `Dodaj do Ekranu Głównego`,\n'sdfe23506a3b0cdc8': `1) Otwórz przeglądarkę Safari`,\n'se740f75b95a51807': `Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sfea652f6580ff086': `Ta strona posiada funkcje aplikacji.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Додайте на Домашній екран для зручного доступу та ширших можливостей.`,\n's1b9047d53d9f9d22': `2) Натиснути «Поділитися»`,\n's37a9e8aec5713460': `Детальніше`,\n's5c6aad7a7e4a1437': `3) Натиснути «На Початковий екран»`,\n's6196153c4b0c1ea0': `Встановити`,\n's922329d6f6213590': `Додати на Dock`,\n'sa5ef80b4bb9b39f8': `Згорнути`,\n'sa7551383d1897fcc': `2) Натиснути «Додати на Dock»`,\n'sba52286c21552a4e': `Встановіть на ваш пристрій для зручного доступу та ширших можливостей.`,\n'sc79fd7641eb9a975': `Сховати Інструкцію`,\n'scdaf4bbff76674c8': `На Початковий экран`,\n'sdfe23506a3b0cdc8': `1) Відкрити в Safari браузері`,\n'se740f75b95a51807': `Додайте на панель Dock для зручного доступу та ширших можливостей.`,\n'sfea652f6580ff086': `Цей сайт має функції додатку.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。`,\n's1b9047d53d9f9d22': `2) 點擊列表上的分享按鈕`,\n's37a9e8aec5713460': `詳細資訊`,\n's5c6aad7a7e4a1437': `3) 點擊加入主畫面`,\n's6196153c4b0c1ea0': `安裝`,\n's922329d6f6213590': `添加到Dock欄`,\n'sa5ef80b4bb9b39f8': `簡短資訊`,\n'sa7551383d1897fcc': `2) 點選添加到Dock欄`,\n'sba52286c21552a4e': `在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。`,\n'sc79fd7641eb9a975': `隱藏安裝流程`,\n'scdaf4bbff76674c8': `將App加入主畫面`,\n'sdfe23506a3b0cdc8': `1) 在Safari上瀏覽此網頁`,\n'se740f75b95a51807': `將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。`,\n'sfea652f6580ff086': `此網站具有應用程式功能。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `将其添加到主屏幕,以享受更丰富的体验并便于访问。`,\n's1b9047d53d9f9d22': `2) 点击导航栏中的“分享”按钮`,\n's37a9e8aec5713460': `更多`,\n's5c6aad7a7e4a1437': `3) 点击“添加到主屏幕”`,\n's6196153c4b0c1ea0': `安装`,\n's922329d6f6213590': `添加到程序坞`,\n'sa5ef80b4bb9b39f8': `收起`,\n'sa7551383d1897fcc': `2) 点击“添加到程序坞”`,\n'sba52286c21552a4e': `在您的设备上安装,以享受更丰富的体验并便于访问。`,\n'sc79fd7641eb9a975': `隐藏安装步骤`,\n'scdaf4bbff76674c8': `添加到主屏幕`,\n'sdfe23506a3b0cdc8': `1) 在 Safari 浏览器中打开此页面`,\n'se740f75b95a51807': `将其添加到您的程序坞,以享受更全面的体验并便于访问。`,\n'sfea652f6580ff086': `此网站具备 App 功能特性。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.`,\n's1b9047d53d9f9d22': `2) Premi Condividi nella barra di navigazione`,\n's37a9e8aec5713460': `Più`,\n's5c6aad7a7e4a1437': `3) Premi Aggiungi alla schermata principale`,\n's6196153c4b0c1ea0': `Installa`,\n's922329d6f6213590': `Aggiungi al Dock`,\n'sa5ef80b4bb9b39f8': `Meno`,\n'sa7551383d1897fcc': `2) Premi Aggiungi al Dock`,\n'sba52286c21552a4e': `Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.`,\n'sc79fd7641eb9a975': `Nascondi istruzioni`,\n'scdaf4bbff76674c8': `Aggiungi alla schermata principale`,\n'sdfe23506a3b0cdc8': `1) Apri nel browser Safari`,\n'se740f75b95a51807': `Aggiungilo al Dock per un'esperienza più completa e un accesso facile.`,\n'sfea652f6580ff086': `Questo sito ha funzionalità di app.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Přidejte jej na plochu pro rozšířené využití a snadný přístup.`,\n's1b9047d53d9f9d22': `2) Stiskněte tlačítko Sdílet na navigačním panelu`,\n's37a9e8aec5713460': `Vice`,\n's5c6aad7a7e4a1437': `3) Stiskněte tlačítko Přidat na plochu`,\n's6196153c4b0c1ea0': `Nainstalovat`,\n's922329d6f6213590': `Přidat do Docku`,\n'sa5ef80b4bb9b39f8': `Méně`,\n'sa7551383d1897fcc': `2) Stiskněte Přidat do Docku`,\n'sba52286c21552a4e': `Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.`,\n'sc79fd7641eb9a975': `Skrýt instrukce`,\n'scdaf4bbff76674c8': `Přidat na plochu`,\n'sdfe23506a3b0cdc8': `1) Otevřete v prohlížeči Safari`,\n'se740f75b95a51807': `Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.`,\n'sfea652f6580ff086': `Tento web má funkce aplikace.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.`,\n's1b9047d53d9f9d22': `2) Trykk på Del-knappen i navigasjonslinjen`,\n's37a9e8aec5713460': `Mer`,\n's5c6aad7a7e4a1437': `3) Velg Legg til på Hjem-skjerm`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Legg til i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Velg Legg til i Dock`,\n'sba52286c21552a4e': `Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sc79fd7641eb9a975': `Skjul instruksjoner`,\n'scdaf4bbff76674c8': `Legg til på Hjem-skjerm`,\n'sdfe23506a3b0cdc8': `1) Åpne i Safari`,\n'se740f75b95a51807': `Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sfea652f6580ff086': `Denne siden har app-funksjonalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.`,\n's1b9047d53d9f9d22': `2) Pressione Compartilhar na barra de endereço`,\n's37a9e8aec5713460': `Mais`,\n's5c6aad7a7e4a1437': `3) Pressione Adicionar à Tela de Início`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Adicionar ao Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Pressione Adicionar ao Dock`,\n'sba52286c21552a4e': `Instale no dispositivo para uma melhor experiência e mais fácil acesso.`,\n'sc79fd7641eb9a975': `Ocultar Instruções`,\n'scdaf4bbff76674c8': `Adicionar à Tela de Início`,\n'sdfe23506a3b0cdc8': `1) Abra no navegador Safari`,\n'se740f75b95a51807': `Adicione ao Dock para uma melhor experiência e mais fácil acesso.`,\n'sfea652f6580ff086': `Este site possui funcionalidade de aplicativo.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。`,\n's1b9047d53d9f9d22': `2) ナビゲーションバーで共有を押す`,\n's37a9e8aec5713460': `展開`,\n's5c6aad7a7e4a1437': `3) 「ホーム画面に追加」を押す`,\n's6196153c4b0c1ea0': `インストール`,\n's922329d6f6213590': `Dockに追加`,\n'sa5ef80b4bb9b39f8': `折りたたむ`,\n'sa7551383d1897fcc': `2) 「Dockに追加」を押す`,\n'sba52286c21552a4e': `デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。`,\n'sc79fd7641eb9a975': `説明を非表示`,\n'scdaf4bbff76674c8': `ホーム画面に追加`,\n'sdfe23506a3b0cdc8': `1) Safariで開く`,\n'se740f75b95a51807': `ドックに追加して、幅広い体験と簡単なアクセスを実現してください。`,\n'sfea652f6580ff086': `このサイトはアプリ機能があります。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.`,\n's1b9047d53d9f9d22': `2) Tryck på Dela-knappen i verktygsfältet`,\n's37a9e8aec5713460': `Mer`,\n's5c6aad7a7e4a1437': `3) Välj Lägg till på hemskärmen`,\n's6196153c4b0c1ea0': `Installera`,\n's922329d6f6213590': `Lägg till i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Välj Lägg till i Dock`,\n'sba52286c21552a4e': `Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sc79fd7641eb9a975': `Göm instruktioner`,\n'scdaf4bbff76674c8': `Lägg till på hemskärmen`,\n'sdfe23506a3b0cdc8': `1) Öppna i Safari`,\n'se740f75b95a51807': `Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sfea652f6580ff086': `Denna webbsajt har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.`,\n's1b9047d53d9f9d22': `2) 내비게이션 바에서 공유 버튼 누르기`,\n's37a9e8aec5713460': `더보기`,\n's5c6aad7a7e4a1437': `3) 홈 화면에 추가 버튼 누르기`,\n's6196153c4b0c1ea0': `설치`,\n's922329d6f6213590': `Dock에 추가`,\n'sa5ef80b4bb9b39f8': `닫기`,\n'sa7551383d1897fcc': `2) Dock에 추가 버튼 누르기`,\n'sba52286c21552a4e': `더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.`,\n'sc79fd7641eb9a975': `안내 숨기기`,\n'scdaf4bbff76674c8': `홈 화면에 추가`,\n'sdfe23506a3b0cdc8': `1) Safari 브라우저에서 열기`,\n'se740f75b95a51807': `더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.`,\n'sfea652f6580ff086': `이 사이트는 앱 기능을 가지고 있습니다.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n's1b9047d53d9f9d22': `2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ`,\n's37a9e8aec5713460': `បង្ហាញបន្ថែម`,\n's5c6aad7a7e4a1437': `3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n's6196153c4b0c1ea0': `តំឡើង`,\n's922329d6f6213590': `បន្ថែមទៅកាន់ Dock`,\n'sa5ef80b4bb9b39f8': `បង្ហាញតិច`,\n'sa7551383d1897fcc': `2) ចុចលើ បន្ថែមទៅកាន់ Dock`,\n'sba52286c21552a4e': `តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sc79fd7641eb9a975': `បិទការណែនាំ`,\n'scdaf4bbff76674c8': `បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n'sdfe23506a3b0cdc8': `1) បើកនៅក្នុងកម្មវិធី Safari`,\n'se740f75b95a51807': `បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sfea652f6580ff086': `គេហទំព័រនេះមានមុខងារជាកម្មវិធី។`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.`,\n's1b9047d53d9f9d22': `2) Tryk på Del-knappen i navigationslinjen`,\n's37a9e8aec5713460': `Mere`,\n's5c6aad7a7e4a1437': `3) Vælg Tilføj til hjemmeskærm`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Tilføj til Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Vælg Tilføj til Dock`,\n'sba52286c21552a4e': `Installer den på din enhed for en bedre oplevelse og nem adgang.`,\n'sc79fd7641eb9a975': `Skjul instruktion`,\n'scdaf4bbff76674c8': `Tilføj til hjemmeskærm`,\n'sdfe23506a3b0cdc8': `1) Åbn i Safari-browseren`,\n'se740f75b95a51807': `Tilføj den til din Dock for en bedre oplevelse og nem adgang.`,\n'sfea652f6580ff086': `Denne side har app-funktionalitet.`,\n };\n ","import { configureLocalization } from '@lit/localize';\r\nimport {\r\n sourceLocale,\r\n targetLocales,\r\n} from './locale-codes';\r\n\r\nimport * as ru from './locales/ru';\r\nimport * as tr from './locales/tr';\r\nimport * as de from \"./locales/de\";\r\nimport * as es from \"./locales/es\";\r\nimport * as nl from \"./locales/nl\";\r\nimport * as el from \"./locales/el\";\r\nimport * as fr from \"./locales/fr\";\r\nimport * as sr from \"./locales/sr\";\r\nimport * as pl from \"./locales/pl\";\r\nimport * as uk from \"./locales/uk\";\r\nimport * as zhHK from \"./locales/zh-HK\";\r\nimport * as zhCN from \"./locales/zh-CN\";\r\nimport * as it from \"./locales/it\";\r\nimport * as cs from \"./locales/cs\";\r\nimport * as no from \"./locales/no\";\r\nimport * as pt from \"./locales/pt\";\r\nimport * as ja from \"./locales/ja\";\r\nimport * as sv from \"./locales/sv\";\r\nimport * as ko from \"./locales/ko\";\r\nimport * as km from \"./locales/km\";\r\nimport * as da from \"./locales/da\";\r\n\r\nconst localizedTemplates = new Map([\r\n ['ru', ru],\r\n ['tr', tr],\r\n ['de', de],\r\n ['es', es],\r\n ['nl', nl],\r\n ['el', el],\r\n ['fr', fr],\r\n ['sr', sr],\r\n ['pl', pl],\r\n ['uk', uk],\r\n ['zh-HK', zhHK],\r\n ['zh-CN', zhCN],\r\n ['it', it],\r\n ['cs', cs],\r\n ['no', no], // + nb\r\n ['pt', pt],\r\n ['ja', ja],\r\n ['sv', sv],\r\n ['ko', ko],\r\n ['km', km],\r\n ['da', da],\r\n])\r\n\r\nexport const { getLocale, setLocale } = configureLocalization({\r\n sourceLocale,\r\n targetLocales,\r\n // @ts-ignore\r\n loadLocale: async (lang: string) => localizedTemplates.get(lang)\r\n});\r\n\r\nexport const changeLocale = (lang: string) => {\r\n // Norwegian Bokmål is same as Norwegian\r\n switch (lang.slice(0, 2)) {\r\n case 'nb':\r\n lang = 'no';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // Fallback to simplified Chinese\r\n switch (lang) {\r\n case 'zh':\r\n case 'zh-TW':\r\n lang = 'zh-CN';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n try {\r\n if (localizedTemplates.get(lang))\r\n setLocale(lang);\r\n else\r\n setLocale(lang.slice(0, 2));\r\n }\r\n catch {\r\n console.warn(`pwa-install: translation error - unsupported locale: ${lang}`);\r\n }\r\n};\r\n","import { ImageResource } from 'web-app-manifest';\r\n\r\nexport interface IRelatedApp {\r\n id: string,\r\n platform: string,\r\n url: string\r\n}\r\n\r\nexport interface IWindow extends Window {\r\n defferedPromptEvent: BeforeInstallPromptEvent | null;\r\n}\r\n\r\ntype Booleanish = 'true' | 'false';\r\n\r\nexport interface PWAInstallAttributes {\r\n ['manual-apple']?: Booleanish;\r\n ['manual-chrome']?: Booleanish;\r\n ['disable-chrome']?: Booleanish;\r\n ['install-description']?: string;\r\n ['disable-install-description']?: Booleanish;\r\n ['manifest-url']?: string;\r\n name?: string;\r\n description?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ManifestScreenshot extends ImageResource {\r\n label?: string;\r\n platform?: string;\r\n form_factor?: \"wide\" | \"narrow\";\r\n}\r\n\r\nexport class Manifest {\r\n constructor() {\r\n this.icons = [{ src: '' }];\r\n this.screenshots = undefined;\r\n this.short_name = 'PWA';\r\n this.name = 'Progressive web application';\r\n this.description = 'Progressive web application';\r\n }\r\n short_name: string;\r\n icons: ImageResource[];\r\n screenshots?: ManifestScreenshot[];\r\n name: string;\r\n description: string;\r\n}\r\n","import {css} from 'lit'; export default css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`;\n ","import { WebAppManifest } from 'web-app-manifest';\r\nimport { IRelatedApp } from './types/types';\r\n\r\nconst _eventDispatcher = (_element: Element, name: string, message: string) => {\r\n const event = new CustomEvent(name, {\r\n detail: {\r\n message\r\n }\r\n });\r\n _element.dispatchEvent(event);\r\n}\r\nexport default class Utils {\r\n static isAppleMobile(): boolean {\r\n\t\tif (\r\n (\r\n ['iPhone', 'iPad', 'iPod'].includes(navigator.platform) ||\r\n (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2)\r\n )\r\n && ('serviceWorker' in navigator)\r\n )\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static isAppleDesktop(): boolean {\r\n // check if it's a mac\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n if (navigator.maxTouchPoints || !userAgent.match(/macintosh/))\r\n return false;\r\n // check safari version >= 17\r\n const version = /version\\/(\\d{2})\\./.exec(userAgent)\r\n if (!version || !version[1] || !(parseInt(version[1]) >= 17))\r\n return false;\r\n // hacky way to detect Sonoma\r\n const audioCheck = document.createElement('audio').canPlayType('audio/wav; codecs=\"1\"') ? true : false;\r\n const webGLCheck = new OffscreenCanvas(1, 1).getContext('webgl') ? true : false;\r\n\r\n return audioCheck && webGLCheck;\r\n }\r\n\r\n static deviceFormFactor(): 'narrow' | 'wide' {\r\n return window.matchMedia('(orientation: portrait)').matches? 'narrow' : 'wide';\r\n }\r\n \r\n static isStandalone() {\r\n\t\tif (window.matchMedia('(display-mode: standalone)').matches || ('standalone' in navigator && (navigator as any).standalone === true))\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static async getInstalledRelatedApps(): Promise {\r\n if ('getInstalledRelatedApps' in navigator)\r\n try{\r\n return await (navigator as any).getInstalledRelatedApps().then((relatedApps: IRelatedApp[]) => {\r\n return relatedApps;\r\n });\r\n } catch (e) {}\r\n \r\n return [];\r\n }\r\n \r\n static async isRelatedAppsInstalled(): Promise {\r\n const _relatedApps = await this.getInstalledRelatedApps();\r\n return _relatedApps.length? true : false;\r\n }\r\n\r\n static setStorageFlag(name: string, value:boolean, persistent: boolean = false) {\r\n try {\r\n if (persistent)\r\n localStorage.setItem(name, value.toString());\r\n else\r\n sessionStorage.setItem(name, value.toString());\r\n } catch (e) {}\r\n }\r\n static getStorageFlag(name: string): boolean {\r\n try {\r\n return sessionStorage.getItem(name) === 'true' || localStorage.getItem(name) === 'true';\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n static eventInstalledSuccess(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-success-event', 'App install success (Chromium/Android only)');\r\n }\r\n static eventInstalledFail(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-fail-event', 'App install failed (Chromium/Android only)');\r\n }\r\n static eventUserChoiceResult(_element: Element, message: string) {\r\n _eventDispatcher(_element, 'pwa-user-choice-result-event', message);\r\n }\r\n static eventInstallAvailable(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-available-event', 'App install available');\r\n }\r\n static eventInstallHowTo(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-how-to-event', 'App install instruction showed');\r\n }\r\n static eventGallery(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-gallery-event', 'App install gallery showed');\r\n }\r\n\r\n static normalizeManifestAssetUrls(manifest: WebAppManifest, manifestUrl: string) {\r\n const normalizedManifestUrl = new URL(manifestUrl, document.location.href);\r\n [...manifest.icons || [], ...manifest.screenshots || []].forEach(asset => {\r\n asset.src = new URL(asset.src, normalizedManifestUrl).href;\r\n })\r\n }\r\n}","import { html } from 'lit';\r\nimport Utils from '../utils';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nconst template = (screenshots: ManifestScreenshot[], theme: string, scrollToNextPage: any, scrollToPrevPage: any) => {\r\n\r\n return html`\r\n ${screenshots? html`\r\n
\r\n
\r\n
\r\n ${screenshots.filter(screenshot => !screenshot.form_factor || screenshot.form_factor === Utils.deviceFormFactor()).map(screenshot => html`${screenshot.label || \"\"}`)}\r\n
\r\n
\r\n \r\n ${theme != 'default'?\r\n html``\r\n :\r\n html``\r\n }\r\n \r\n \r\n ${theme != 'default'?\r\n html`\r\n \r\n `\r\n :\r\n html`\r\n \r\n \r\n \r\n `\r\n }\r\n \r\n
`\r\n : ''}`;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nimport styles from './styles-gallery.scss';\r\nimport template from './template-gallery';\r\n\r\n@customElement('pwa-gallery')\r\nexport default class PWAGalleryElement extends LitElement {\r\n\t@property({ type: Array }) screenshots: ManifestScreenshot[] = [];\r\n\t@property() theme: 'default' | 'apple_desktop' | 'apple_mobile' = 'default';\r\n\r\n\tstatic get styles() {\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tprivate getScrollElements = () => {\r\n\t\tconst gallery = this.shadowRoot?.querySelector('#paginated_gallery') as HTMLElement | null;\r\n\t\tif (!gallery) return;\r\n\t\t\r\n\t\tconst galleryScroller = gallery.querySelector('.gallery_scroller') as HTMLElement | null;\r\n\t\tif (!galleryScroller) return;\r\n\t\r\n\t\tconst galleryItems = Array.from(galleryScroller.querySelectorAll('img')) as HTMLElement[];\r\n\t\tif (galleryItems.length === 0) return;\r\n\t\r\n\t\treturn {\r\n\t\t\tscroller: galleryScroller,\r\n\t\t\titems: galleryItems\r\n\t\t};\r\n\t};\r\n\t\r\n\tprivate findCurrentItem = (scroller: HTMLElement, items: HTMLElement[]): HTMLElement | null => {\r\n\t\tconst scrollLeft = scroller.scrollLeft;\r\n\t \t// Find the item closest to the center of the viewport.\r\n\t\treturn items.find((item) => (item.offsetWidth + item.offsetLeft) >= scrollLeft + (item.offsetWidth / 2.5)) || null;\r\n\t};\r\n\t\r\n\tprivate scrollToPage = (direction: 'next' | 'prev') => {\r\n\t\tconst scrollData = this.getScrollElements();\r\n\t\tif (!scrollData) return;\r\n\t\r\n\t\tconst { scroller, items } = scrollData;\r\n\t\tconst currentItem = this.findCurrentItem(scroller, items);\r\n\t\tif (!currentItem) return;\r\n\t\r\n\t\tconst currentIndex = items.indexOf(currentItem);\r\n\t\tconst offset = direction === 'next' ? 1 : -1;\r\n\t\tconst targetIndex = currentIndex + offset;\r\n\t\t\r\n\t\tif (targetIndex >= 0 && targetIndex < items.length) {\r\n\t\t\titems[targetIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\r\n\t\t}\r\n\t};\r\n\t\r\n\tpublic scrollToNextPage = () => {\r\n\t\tthis.scrollToPage('next');\r\n\t};\r\n\t\r\n\tpublic scrollToPrevPage = () => {\r\n\t\tthis.scrollToPage('prev');\r\n\t};\r\n\r\n\r\n\tprivate _init = () => {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tconst _tools = this.getScrollElements();\r\n\t\tif (_tools)\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\t_tools.scroller.scrollTo({\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t300\r\n\t\t\t)\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\tthis._init();\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(\r\n this.screenshots,\r\n\t\t\tthis.theme,\r\n\t\t\tthis.scrollToNextPage,\r\n\t\t\tthis.scrollToPrevPage\r\n )}`;\r\n\t}\r\n}\r\n","import { html } from 'lit';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, icon: string, install: any) => {\r\n return html`\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${location.hostname}
\r\n
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\n\r\n// import TouchDragListener from \"./touch-listener\";\r\n\r\ntype IProps = {\r\n name: string,\r\n description: string,\r\n icon: string\r\n}\r\n\r\nimport template from './template-bottom-sheet';\r\nimport Utils from '../../../utils';\r\n\r\n@customElement('pwa-bottom-sheet')\r\nexport default class PWABottomSheetElement extends LitElement {\r\n\t@property({type: Object}) props: IProps = {\r\n name: '',\r\n description: '',\r\n icon: ''\r\n };\r\n @property({type: Object}) install = {handleEvent: () => {}};\r\n\t@property() hideDialog = () => {};\r\n\t@property() disableClose = false;\r\n\r\n\tprivate _callInstall = () => {\r\n\t\tthis.install.handleEvent();\r\n\t}\r\n\r\n\tprivate _callHide = () => {\r\n\t\tthis.hideDialog();\r\n\t\tthis.setupAppearence();\r\n\t}\r\n\r\n\tprivate bindedElement: {\r\n\t\ttouchElement: HTMLElement,\r\n\t\tlistener: any }| null = null;\r\n\tprivate readonly _saveBodyStyle = document.body.style.overscrollBehaviorY;\r\n\tprivate dragMobileSheet = (element: HTMLElement | null | undefined, touchTargetElement: HTMLElement | undefined, infoElement: HTMLElement | undefined) => {\r\n\t\tif (!element || !touchTargetElement || !infoElement)\r\n\t\t\treturn null;\r\n\r\n\t\tlet dragOffset = 0;\r\n\t\tconst bounceOffset = 35;\r\n\t\tconst bottomSize = touchTargetElement.clientHeight + infoElement.clientHeight;\r\n\r\n\t\tconst getYCoord = (e: MouseEvent | TouchEvent): number => {\r\n\t\t\treturn (e as MouseEvent).clientY || ((e as TouchEvent).changedTouches && (e as TouchEvent).changedTouches.length? (e as TouchEvent).changedTouches[0].clientY : 0);\r\n\t\t}\r\n\r\n\t\tconst dragMouseDown = (e: MouseEvent | TouchEvent) => {\r\n\t\t\twindow.addEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.addEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.addEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.addEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tdragOffset = getYCoord(e) - touchTargetElement.getBoundingClientRect().top;\r\n\r\n\t\t\tdocument.body.style.overscrollBehaviorY = 'none';\r\n\t\t}\r\n\t\tconst dragMouseUp = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tdocument.body.style.overscrollBehaviorY = this._saveBodyStyle;\r\n\r\n\t\t\tif (!this.disableClose && getYCoord(e) >= window.innerHeight - 25) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight + 50, true);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (window.innerHeight - getYCoord(e) > element.clientHeight / 2.5) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - element.clientHeight);\r\n\t\t\t\t\r\n\t\t\t\ttry {\r\n\t\t\t\t\tUtils.eventGallery((this.getRootNode() as ShadowRoot).host);\r\n\t\t\t\t} catch (e) {}\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - bottomSize - bounceOffset);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dragMouseMove = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tconst currentY = getYCoord(e);\r\n\r\n\t\t\tif (this.disableClose && window.innerHeight - currentY < 70) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (currentY <= (window.innerHeight - element.clientHeight + dragOffset)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`none`\r\n\t\t\t)\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"--translateY\",\r\n\t\t\t\t`translateY(${currentY - dragOffset}px)`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst closeDragElement = (e: MouseEvent | TouchEvent, toPoint?: number, hideDialog?: boolean) => {\r\n\t\t\twindow.removeEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.removeEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.removeEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.removeEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tif (window.innerWidth >= 768)\r\n\t\t\t\treturn\r\n\r\n\t\t\tif (!toPoint && getYCoord(e) >= window.innerHeight - bottomSize)\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(calc(100vh - ${bottomSize}px))`\r\n\t\t\t\t);\r\n\t\t\telse\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(${(toPoint || getYCoord(e)) + bounceOffset}px)`\r\n\t\t\t\t);\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s`\r\n\t\t\t);\r\n\r\n\t\t\tif (hideDialog){\r\n\t\t\t\ttouchTargetElement.removeEventListener('mousedown', dragMouseDown);\r\n\t\t\t\ttouchTargetElement.removeEventListener('touchstart', dragMouseDown);\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\tthis._callHide,\r\n\t\t\t\t\t250\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ttouchTargetElement.addEventListener('mousedown', dragMouseDown);\r\n\t\ttouchTargetElement.addEventListener('touchstart', dragMouseDown, {passive: true});\r\n\r\n\t\tcloseDragElement(new MouseEvent('mouseup'), window.innerHeight - bottomSize - bounceOffset);\r\n\r\n\t\treturn {\r\n\t\t\ttouchElement: touchTargetElement,\r\n\t\t\tlistener: dragMouseDown\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupAppearence = () => {\r\n\t\tif (this.bindedElement) {\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('mousedown', this.bindedElement.listener);\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('touchstart', this.bindedElement.listener);\r\n\t\t}\r\n\r\n\t\tthis.bindedElement = this.dragMobileSheet(\r\n\t\t\tthis.parentElement?.parentElement,\r\n\t\t\tthis.parentElement?.getElementsByClassName('touch-header')[0] as HTMLElement,\r\n\t\t\tthis.parentElement?.getElementsByClassName('body-header')[0] as HTMLElement);\r\n\t}\r\n\tprivate _init = () => {\r\n\t\tthis.setupAppearence();\r\n\r\n\t\twindow.addEventListener('resize', this.setupAppearence);\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tthis._init();\r\n return;\r\n\t}\r\n\r\n createRenderRoot() {\r\n return this;\r\n }\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(this.props.name, this.props.description, this.props.icon, this._callInstall)}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,\"Segoe UI\",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:\"\";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,\"Segoe UI\",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:\"\";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`;\n ","import {css} from 'lit'; export default css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,\"Segoe UI\";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon description\" \"welcome welcome\" \"how-to how-to\" \"gallery gallery\" \"button button\";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon\" \"description\" \"welcome\" \"how-to\" \"gallery\" \"button\";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;\n ","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"classMap\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_directives_class_map_js_2f88e643__.classMap) });","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, install: any, toggleGallery: any, galleryRequested: boolean) => {\r\n const installDialogClasses = () => { return {available: installAvailable, gallery: galleryRequested }};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n ${!disableClose? html`` : ''}\r\n
\r\n
${location.hostname}
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n ${!disableDescription? \r\n html`
${installDescription? installDescription: `${msg('This site has app functionality.')} ${msg('Install it on your device for extensive experience and easy access.')}`}
` \r\n : ''}\r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n ${screenshotsAvailable? html``:''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n
\r\n
`;\r\n};\r\nexport default template;\r\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, howToForApple: any, isDesktop: boolean, howToRequested: boolean, toggleGallery: any, galleryRequested: boolean) => {\r\n const installDialogClassesApple = () => { return {available: installAvailable, 'how-to': howToRequested, gallery: galleryRequested, desktop: isDesktop}};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, PropertyValues, html } from 'lit';\r\nimport { localized } from '@lit/localize';\r\nimport { property, state, customElement } from 'lit/decorators.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { changeLocale } from './localization';\r\n\r\nimport { IRelatedApp, Manifest, IWindow, PWAInstallAttributes } from './types/types';\r\n\r\nimport PWAGalleryElement from './gallery';\r\nimport PWABottomSheetElement from './templates/chrome/bottom-sheet';\r\n\r\nimport Utils from './utils';\r\n\r\ndeclare const window: IWindow;\r\n\r\nimport styles from './templates/chrome/styles.scss';\r\nimport stylesApple from './templates/apple/styles-apple.scss';\r\n\r\nimport template from './templates/chrome/template';\r\nimport templateApple from './templates/apple/template-apple';\r\n\r\n/**\r\n * @event {CustomEvent} pwa-install-success-event - App install success (Chromium/Android only)\r\n * @event {CustomEvent} pwa-install-fail-event - App install failed (Chromium/Android only)\r\n * @event {CustomEvent} pwa-user-choice-result-event - dismissed, accepted\r\n * @event {CustomEvent} pwa-install-available-event - App install available\r\n * @event {CustomEvent} pwa-install-how-to-event - App install instruction showed\r\n * @event {CustomEvent} pwa-install-gallery-event - App install gallery showed\r\n */\r\n@localized()\r\n@customElement('pwa-install')\r\nexport class PWAInstallElement extends LitElement {\r\n\t@property({attribute: 'manifest-url'}) manifestUrl = '/manifest.json';\r\n\t@property() icon = '';\r\n\t@property() name = '';\r\n\t@property() description = '';\r\n\t@property({attribute: 'install-description'}) installDescription = '';\r\n\t@property({attribute: 'disable-install-description', type: Boolean}) disableDescription = false;\r\n\t@property({attribute: 'disable-screenshots', type: Boolean}) disableScreenshots = false;\r\n\t@property({attribute: 'disable-screenshots-apple', type: Boolean}) disableScreenshotsApple = false;\r\n\t@property({attribute: 'disable-screenshots-chrome', type: Boolean}) disableScreenshotsChrome = false;\r\n\t@property({attribute: 'manual-apple', type: Boolean}) manualApple = false;\r\n\t@property({attribute: 'manual-chrome', type: Boolean}) manualChrome = false;\r\n\t@property({attribute: 'disable-chrome', type: Boolean}) disableChrome = false;\r\n\t@property({attribute: 'disable-close', type: Boolean}) disableClose = false;\r\n\t@property({attribute: 'use-local-storage', type: Boolean}) useLocalStorage = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn [ styles, stylesApple ];\r\n\t}\r\n\r\n\t@state() externalPromptEvent: BeforeInstallPromptEvent | null = null;\r\n\r\n\tpublic platforms: BeforeInstallPromptEvent['platforms'] = [];\r\n\tpublic userChoiceResult = '';\r\n\r\n\tpublic isDialogHidden: boolean = Utils.getStorageFlag('pwa-hide-install');\r\n\tpublic isInstallAvailable = false;\r\n\tpublic isAppleMobilePlatform = false;\r\n\tpublic isAppleDesktopPlatform = false;\r\n\tpublic isUnderStandaloneMode = false;\r\n\tpublic isRelatedAppsInstalled = false;\r\n\r\n\t/** @internal */\r\n\tprivate _manifest: WebAppManifest = new Manifest();\r\n\t/** @internal */\r\n\tprivate _howToRequested = false;\r\n\t/** @internal */\r\n\tprivate _galleryRequested = false;\r\n\t/** @internal */\r\n\tprivate _install = {\r\n\t\thandleEvent: () => {\r\n\t\t\tif (window.defferedPromptEvent) {\r\n\t\t\t\tthis.hideDialog();\r\n\t\t\t\twindow.defferedPromptEvent.prompt();\r\n\t\t\t\twindow.defferedPromptEvent.userChoice\r\n\t\t\t\t\t.then((choiceResult: PromptResponseObject) => {\r\n\t\t\t\t\t\tthis.userChoiceResult = choiceResult.outcome;\r\n\t\t\t\t\t\tUtils.eventUserChoiceResult(this, this.userChoiceResult);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tUtils.eventInstalledFail(this);\r\n\t\t\t\t\t});\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\tpublic install = () => {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis._howToRequested = true;\r\n\t\t\tthis.requestUpdate();\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._install.handleEvent();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialog = {\r\n\t\thandleEvent: () => {\r\n\t\t\tthis.isDialogHidden = true;\r\n\t\t\tUtils.setStorageFlag('pwa-hide-install', true, this.useLocalStorage);\r\n\t\t\tthis.requestUpdate();\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialogUser = () => {\r\n\t\tUtils.eventUserChoiceResult(this, 'dismissed');\r\n\t\tthis.userChoiceResult = 'dismissed';\r\n\t\tthis.hideDialog();\r\n\t}\r\n\tpublic hideDialog = () => {\r\n\t\tthis._hideDialog.handleEvent();\r\n\t}\r\n\tpublic showDialog = (forced = false) => {\r\n\t\tthis.isDialogHidden = false;\r\n\t\tif (forced)\r\n\t\t\tthis.isInstallAvailable = true;\r\n\t\tUtils.setStorageFlag('pwa-hide-install', false, this.useLocalStorage);\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tpublic getInstalledRelatedApps = async (): Promise => {\r\n\t\treturn await Utils.getInstalledRelatedApps();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _howToForApple = {\r\n handleEvent: () => {\r\n\t\t\tthis._howToRequested = !this._howToRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._galleryRequested = false;\r\n\t\t\tthis.requestUpdate();\r\n\r\n\t\t\tif (this._howToRequested) {\r\n\t\t\t\tUtils.eventInstallHowTo(this);\r\n\t\t\t}\t\t\t\t\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate _toggleGallery = {\r\n handleEvent: () => {\r\n\t\t\tthis._galleryRequested = !this._galleryRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._howToRequested = false;\r\n\r\n\t\t\tthis._galleryRequested && Utils.eventGallery(this);\r\n\r\n\t\t\tthis.requestUpdate();\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate async _checkInstalled() {\r\n\t\tthis.isUnderStandaloneMode = Utils.isStandalone();\r\n\t\tthis.isRelatedAppsInstalled = await Utils.isRelatedAppsInstalled();\r\n\t\tthis.isAppleMobilePlatform = Utils.isAppleMobile();\r\n\t\tthis.isAppleDesktopPlatform = Utils.isAppleDesktop();\r\n\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tif (!this.isUnderStandaloneMode) {\r\n\t\t\t\tthis.manualApple && this.hideDialog();\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t1000\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.manualChrome && this.hideDialog();\r\n\t\t}\r\n\t}\r\n\t/** @internal */\r\n\tprivate _init = async () => {\r\n\t\twindow.defferedPromptEvent = null;\r\n\r\n\t\tthis._checkInstalled();\r\n\r\n\t\tif (!this.disableChrome) {\r\n\t\t\tconst _promptHandler = (e: BeforeInstallPromptEvent) => {\r\n\t\t\t\twindow.defferedPromptEvent = e;\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.platforms = e.platforms;\r\n\r\n\t\t\t\tif (this.isRelatedAppsInstalled || this.isUnderStandaloneMode) {\r\n\t\t\t\t\tthis.isInstallAvailable = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userChoiceResult === 'accepted'){\r\n\t\t\t\t\tthis.isDialogHidden = true;\r\n\t\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t\tif (this.externalPromptEvent != null)\r\n\t\t\t\tsetTimeout(() => _promptHandler(this.externalPromptEvent!), 300);\r\n\t\t\telse\r\n\t\t\t\twindow.addEventListener('beforeinstallprompt', _promptHandler);\r\n\t\t}\r\n\r\n\t\twindow.addEventListener('appinstalled', (e) => {\r\n\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\tthis.isInstallAvailable = false;\r\n\r\n\t\t\tthis.requestUpdate();\r\n\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t});\r\n\r\n\r\n\t\ttry{\r\n\t\t\tconst _response = await fetch(this.manifestUrl);\r\n\t\t\tconst _json = await _response.json() as WebAppManifest;\r\n\t\t\tif (!_response.ok || !_json || !Object.keys(_json))\r\n\t\t\t\tthrow new Error('Manifest not found');\r\n\t\t\tUtils.normalizeManifestAssetUrls(_json, this.manifestUrl);\r\n\t\t\t\r\n\t\t\tthis.icon = this.icon || _json.icons?.length ? _json.icons![0].src : '';\r\n\t\t\tthis.name = this.name || _json['short_name'] || _json.name || '';\r\n\t\t\tthis.description = this.description || _json.description || '';\r\n\t\t\tthis._manifest = _json;\r\n\t\t}\r\n\t\tcatch(e) {\r\n\t\t\tthis.icon = this.icon || this._manifest.icons?.[0].src || '';\r\n\t\t\tthis.name = this.name || this._manifest['short_name'] || '';\r\n\t\t\tthis.description = this.description || this._manifest.description || '';\r\n\t\t}\r\n\t};\r\n\t/** @internal */\r\n\tprivate _requestUpdate = () => {\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tchangeLocale(navigator.language);\r\n\t\tthis._init();\r\n\t\tPWAGalleryElement.finalized;\r\n\t\tPWABottomSheetElement.finalized;\r\n\t\tsuper.connectedCallback();\r\n\t}\r\n\twillUpdate(changedProperties: PropertyValues) {\r\n\t\tif (this.externalPromptEvent && changedProperties.has('externalPromptEvent') && typeof this.externalPromptEvent == 'object') {\r\n\t\t this._init();\r\n\t\t}\r\n\t}\r\n\r\n\t// firstUpdated() {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\trender() {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform)\r\n\t\t\treturn html`${templateApple(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsApple,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._howToForApple,\r\n\t\t\t\tthis.isAppleDesktopPlatform,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested\r\n\t\t\t)}`;\r\n\t\telse\r\n\t\t\treturn html`${template(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsChrome,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._install,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested\r\n\t\t\t)}`;\r\n\t}\r\n}\r\n\r\nexport { PWAInstallAttributes };\r\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { updateWhenLocaleChanges } from './localized-controller.js';\n/**\n * Class decorator to enable re-rendering the given LitElement whenever a new\n * active locale has loaded.\n *\n * See also {@link updateWhenLocaleChanges} for the same functionality without\n * the use of decorators.\n *\n * When using lit-localize in transform mode, applications of this decorator are\n * removed.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {customElement} from 'lit/decorators.js';\n * import {msg, localized} from '@lit/localize';\n *\n * @localized()\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nexport const localized = () => (clazz, _context) => {\n clazz.addInitializer(updateWhenLocaleChanges);\n return clazz;\n};\n//# sourceMappingURL=localized-decorator.js.map","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=new Set([\"children\",\"localName\",\"ref\",\"style\",\"className\"]),n=new WeakMap,t=(e,t,o,l,a)=>{const s=a?.[t];void 0===s?(e[t]=o,null==o&&t in HTMLElement.prototype&&e.removeAttribute(t)):o!==l&&((e,t,o)=>{let l=n.get(e);void 0===l&&n.set(e,l=new Map);let a=l.get(t);void 0!==o?void 0===a?(l.set(t,a={handleEvent:o}),e.addEventListener(t,a)):a.handleEvent=o:void 0!==a&&(l.delete(t),e.removeEventListener(t,a))})(e,s,o)},o=({react:n,tagName:o,elementClass:l,events:a,displayName:s})=>{const c=new Set(Object.keys(a??{})),r=n.forwardRef(((s,r)=>{const i=n.useRef(new Map),d=n.useRef(null),f={},u={};for(const[n,t]of Object.entries(s))e.has(n)?f[\"className\"===n?\"class\":n]=t:c.has(n)||n in l.prototype?u[n]=t:f[n]=t;return n.useLayoutEffect((()=>{if(null===d.current)return;const e=new Map;for(const n in u)t(d.current,n,s[n],i.current.get(n),a),i.current.delete(n),e.set(n,s[n]);for(const[e,n]of i.current)t(d.current,e,void 0,n,a);i.current=e})),n.useLayoutEffect((()=>{d.current?.removeAttribute(\"defer-hydration\")}),[]),f.suppressHydrationWarning=!0,n.createElement(o,{...f,ref:n.useCallback((e=>{d.current=e,\"function\"==typeof r?r(e):null!==r&&(r.current=e)}),[r])})}));return r.displayName=s??l.name,r};export{o as createComponent};\n//# sourceMappingURL=create-component.js.map\n","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => (__WEBPACK_EXTERNAL_MODULE_react__[\"default\"]) });","\r\nimport { PWAInstallElement } from '../index';\r\nimport { createComponent, ReactWebComponent } from '@lit/react';\r\nimport react from 'react';\r\n\r\nconst PWAInstall = createComponent({\r\n\treact,\r\n\ttagName: 'pwa-install',\r\n\telementClass: PWAInstallElement,\r\n\tevents: {\r\n\t onPwaInstallSuccessEvent: 'pwa-install-success-event',\r\n\t onPwaInstallFailEvent: 'pwa-install-fail-event',\r\n\t onPwaUserChoiceResultEvent: 'pwa-user-choice-result-event',\r\n\t onPwaInstallAvailableEvent: 'pwa-install-available-event',\r\n\t onPwaInstallHowToEvent: 'pwa-install-how-to-event',\r\n\t onPwaInstallGalleryEvent: 'pwa-install-gallery-event'\r\n\t}\r\n});\r\n\r\nexport default PWAInstall;"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","y","x","d","__WEBPACK_EXTERNAL_MODULE_lit__","joinStringsAndValues","strings","values","valueOrder","concat","i","length","defaultMsg","template","isStrTagged","val","msg","installed","LOCALE_STATUS_EVENT","LocalizeController","constructor","host","this","__litLocalizeEventHandler","event","detail","status","requestUpdate","hostConnected","window","addEventListener","hostDisconnected","removeEventListener","updateWhenLocaleChanges","addController","Deferred","settled","promise","Promise","resolve","reject","_resolve","_reject","error","hl","toString","generateMsgId","isHtmlTagged","str","t0","v0","t1","v1","t2","v2","t3","v3","charCodeAt","fnv1a64","join","expressionOrders","WeakMap","hashCache","Map","runtimeMsg","templates","options","id","undefined","set","generateId","localized","order","map","dispatchStatusEvent","dispatchEvent","CustomEvent","loadingLocale","sourceLocale","validLocales","loadLocale","activeLocale","loading","requestId","getLocale","setLocale","newLocale","Error","has","thisRequestId","then","mod","readyLocale","err","errorLocale","errorMessage","__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__","targetLocales","localizedTemplates","config","async","lang","impl","_installMsgImplementation","Set","add","Manifest","icons","src","screenshots","short_name","name","description","css","_eventDispatcher","_element","message","Utils","isAppleMobile","includes","navigator","platform","userAgent","match","maxTouchPoints","isAppleDesktop","toLowerCase","version","exec","parseInt","audioCheck","document","createElement","canPlayType","webGLCheck","OffscreenCanvas","getContext","deviceFormFactor","matchMedia","matches","isStandalone","standalone","getInstalledRelatedApps","relatedApps","e","isRelatedAppsInstalled","setStorageFlag","persistent","localStorage","setItem","sessionStorage","getStorageFlag","getItem","eventInstalledSuccess","eventInstalledFail","eventUserChoiceResult","eventInstallAvailable","eventInstallHowTo","eventGallery","normalizeManifestAssetUrls","manifest","manifestUrl","normalizedManifestUrl","URL","location","href","forEach","asset","theme","scrollToNextPage","scrollToPrevPage","html","PWAGalleryElement","LitElement","getScrollElements","gallery","shadowRoot","querySelector","galleryScroller","galleryItems","Array","from","querySelectorAll","scroller","items","findCurrentItem","scrollLeft","find","item","offsetWidth","offsetLeft","scrollToPage","direction","scrollData","currentItem","targetIndex","indexOf","scrollIntoView","behavior","block","inline","_init","styles","firstUpdated","_tools","setTimeout","scrollTo","top","left","connectedCallback","super","render","property","type","customElement","icon","install","PWABottomSheetElement","props","handleEvent","hideDialog","disableClose","_callInstall","_callHide","setupAppearence","bindedElement","_saveBodyStyle","body","style","overscrollBehaviorY","dragMobileSheet","element","touchTargetElement","infoElement","dragOffset","bottomSize","clientHeight","getYCoord","clientY","changedTouches","dragMouseDown","dragMouseUp","dragMouseMove","getBoundingClientRect","innerHeight","closeDragElement","getRootNode","currentY","setProperty","toPoint","innerWidth","passive","MouseEvent","touchElement","listener","parentElement","getElementsByClassName","createRenderRoot","__WEBPACK_EXTERNAL_MODULE_lit_directives_class_map_js_2f88e643__","installDescription","disableDescription","disableScreenshots","installAvailable","toggleGallery","galleryRequested","installDialogClasses","available","screenshotsAvailable","howToForApple","isDesktop","howToRequested","desktop","PWAInstallElement","disableScreenshotsApple","disableScreenshotsChrome","manualApple","manualChrome","disableChrome","useLocalStorage","externalPromptEvent","platforms","userChoiceResult","isDialogHidden","isInstallAvailable","isAppleMobilePlatform","isAppleDesktopPlatform","isUnderStandaloneMode","_manifest","_howToRequested","_galleryRequested","_install","defferedPromptEvent","prompt","userChoice","choiceResult","outcome","catch","_hideDialog","_hideDialogUser","showDialog","forced","_howToForApple","_toggleGallery","_checkInstalled","_promptHandler","preventDefault","_response","fetch","_json","json","ok","keys","_requestUpdate","slice","changeLocale","language","finalized","willUpdate","changedProperties","attribute","Boolean","state","clazz","_context","addInitializer","n","t","l","a","s","HTMLElement","removeAttribute","delete","__WEBPACK_EXTERNAL_MODULE_react__","PWAInstall","react","tagName","elementClass","events","displayName","c","r","forwardRef","useRef","f","u","entries","useLayoutEffect","current","suppressHydrationWarning","ref","useCallback","onPwaInstallSuccessEvent","onPwaInstallFailEvent","onPwaUserChoiceResultEvent","onPwaInstallAvailableEvent","onPwaInstallHowToEvent","onPwaInstallGalleryEvent"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/types/index.d.ts b/dist/types/index.d.ts index 87154a3..9fb4dd8 100644 --- a/dist/types/index.d.ts +++ b/dist/types/index.d.ts @@ -1,5 +1,5 @@ import { LitElement, PropertyValues } from 'lit'; -import { IRelatedApp, PWAInstallAttributes } from './types/types'; +import { IRelatedApp, PWAInstallAttributes } from './types/types.js'; export declare class PWAInstallElement extends LitElement { manifestUrl: string; icon: string; diff --git a/dist/types/react-legacy/pwa-install.react-legacy.d.ts b/dist/types/react-legacy/pwa-install.react-legacy.d.ts index 830ede9..594487e 100644 --- a/dist/types/react-legacy/pwa-install.react-legacy.d.ts +++ b/dist/types/react-legacy/pwa-install.react-legacy.d.ts @@ -1,4 +1,4 @@ -import { PWAInstallElement } from '../index'; +import { PWAInstallElement } from '../index.js'; import { ReactWebComponent } from '@lit/react'; declare const PWAInstall: ReactWebComponent(()=>{"use strict";var l={161:t=>{t.exports=e},429:e=>{e.exports=t},125:e=>{e.exports=a}},i={};function o(e){var t=i[e];if(void 0!==t)return t.exports;var a=i[e]={exports:{}};return l[e](a,a.exports,o),a.exports}o.d=(e,t)=>{for(var a in t)o.o(t,a)&&!o.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};o.r(s),o.d(s,{PWAInstallElement:()=>Ke});var n={};o.r(n),o.d(n,{templates:()=>ie});var r={};o.r(r),o.d(r,{templates:()=>oe});var d={};o.r(d),o.d(d,{templates:()=>se});var c={};o.r(c),o.d(c,{templates:()=>ne});var p={};o.r(p),o.d(p,{templates:()=>re});var b={};o.r(b),o.d(b,{templates:()=>de});var g={};o.r(g),o.d(g,{templates:()=>ce});var h={};o.r(h),o.d(h,{templates:()=>pe});var m={};o.r(m),o.d(m,{templates:()=>be});var f={};o.r(f),o.d(f,{templates:()=>ge});var u={};o.r(u),o.d(u,{templates:()=>he});var v={};o.r(v),o.d(v,{templates:()=>me});var w={};o.r(w),o.d(w,{templates:()=>fe});var y={};o.r(y),o.d(y,{templates:()=>ue});var x={};o.r(x),o.d(x,{templates:()=>ve});var k={};o.r(k),o.d(k,{templates:()=>we});var D={};o.r(D),o.d(D,{templates:()=>ye});var j={};o.r(j),o.d(j,{templates:()=>xe});var A={};o.r(A),o.d(A,{templates:()=>ke});var S={};o.r(S),o.d(S,{templates:()=>De});var _={};o.r(_),o.d(_,{templates:()=>je});var z=o(161);const E=(e,t,a)=>{let l=e[0];for(let i=1;i{return"string"!=typeof(t=e)&&"strTag"in t?E(e.strings,e.values):e;var t};let I=P,L=!1;const $="lit-localize-status";class C{constructor(e){this.__litLocalizeEventHandler=e=>{"ready"===e.detail.status&&this.host.requestUpdate()},this.host=e}hostConnected(){window.addEventListener($,this.__litLocalizeEventHandler)}hostDisconnected(){window.removeEventListener($,this.__litLocalizeEventHandler)}}const R=e=>e.addController(new C(e));class M{constructor(){this.settled=!1,this.promise=new Promise(((e,t)=>{this._resolve=e,this._reject=t}))}resolve(e){this.settled=!0,this._resolve(e)}reject(e){this.settled=!0,this._reject(e)}}const T=[];for(let e=0;e<256;e++)T[e]=(e>>4&15).toString(16)+(15&e).toString(16);const H="",O="h",q="s";function B(e,t){return(t?O:q)+function(e){let t=0,a=8997,l=0,i=33826,o=0,s=40164,n=0,r=52210;for(let d=0;d>>16,a=65535&t,o+=l>>>16,i=65535&l,r=n+(o>>>16)&65535,s=65535&o;return T[r>>8]+T[255&r]+T[s>>8]+T[255&s]+T[i>>8]+T[255&i]+T[a>>8]+T[255&a]}("string"==typeof e?e:e.join(H))}const U=new WeakMap,F=new Map;function Y(e,t,a){if(e){const l=a?.id??function(e){const t="string"==typeof e?e:e.strings;let a=F.get(t);void 0===a&&(a=B(t,"string"!=typeof e&&!("strTag"in e)),F.set(t,a));return a}(t),i=e[l];if(i){if("string"==typeof i)return i;if("strTag"in i)return E(i.strings,t.values,i.values);{let e=U.get(i);return void 0===e&&(e=i.values,U.set(i,e)),{...i,values:e.map((e=>t.values[e]))}}}}return P(t)}function Z(e){window.dispatchEvent(new CustomEvent($,{detail:e}))}let V,W,N,G,K,Q="",J=new M;J.resolve();let X=0;const ee=()=>Q,te=e=>{if(e===(V??Q))return J.promise;if(!N||!G)throw Error("Internal error");if(!N.has(e))throw Error("Invalid locale code");X++;const t=X;V=e,J.settled&&(J=new M),Z({status:"loading",loadingLocale:e});return(e===W?Promise.resolve({templates:void 0}):G(e)).then((a=>{X===t&&(Q=e,V=void 0,K=a.templates,Z({status:"ready",readyLocale:e}),J.resolve())}),(a=>{X===t&&(Z({status:"error",errorLocale:e,errorMessage:a.toString()}),J.reject(a))})),J.promise};var ae=o(429);const le=["cs","da","de","el","es","fr","it","ja","km","ko","nl","no","pl","pt","ru","sr","sv","tr","uk","zh-CN","zh-HK"],ie={s182ab2d6c997515f:"Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.",s1b9047d53d9f9d22:'2) Нажать "Поделиться"',s37a9e8aec5713460:"Подробнее",s5c6aad7a7e4a1437:'3) Нажать "На экран «Домой»"',s6196153c4b0c1ea0:"Установить",s922329d6f6213590:"Добавить в Dock",sa5ef80b4bb9b39f8:"Свернуть",sa7551383d1897fcc:'2) Нажмите "Добавить в Dock"',sba52286c21552a4e:"Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.",sc79fd7641eb9a975:"Спрятать Инструкцию",scdaf4bbff76674c8:"На экран «Домой»",sdfe23506a3b0cdc8:"1) Открыть в Safari браузере",se740f75b95a51807:"Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.",sfea652f6580ff086:"Этот веб-сайт имеет функционал приложения."},oe={s182ab2d6c997515f:"Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.",s1b9047d53d9f9d22:"2) Gezinme çubuğunda Paylaş'a basın",s37a9e8aec5713460:"Daha Fazla",s5c6aad7a7e4a1437:"3) Ana Ekrana Ekle'ye basın",s6196153c4b0c1ea0:"Yükle",s922329d6f6213590:"Dock’a Ekle",sa5ef80b4bb9b39f8:"Küçült",sa7551383d1897fcc:"2) Dock’a ekleye basın",sba52286c21552a4e:"Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.",sc79fd7641eb9a975:"Talimatları gizle",scdaf4bbff76674c8:"Ana Ekrana Ekle",sdfe23506a3b0cdc8:"1) Safari tarayıcısında açın",se740f75b95a51807:"Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.",sfea652f6580ff086:"Bu site uygulama işlevselliğine sahiptir."},se={s182ab2d6c997515f:"Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",s1b9047d53d9f9d22:"2) Drücken Sie auf Teilen in der Navigationsleiste",s37a9e8aec5713460:"Mehr",s5c6aad7a7e4a1437:"3) Drücken Sie Hinzufügen zum Startbildschirm",s6196153c4b0c1ea0:"Installieren",s922329d6f6213590:"Zum Dock hinzufügen",sa5ef80b4bb9b39f8:"Weniger",sa7551383d1897fcc:"2) Drücken Sie auf Zum Dock hinzufügen",sba52286c21552a4e:"Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.",sc79fd7641eb9a975:"Anleitung ausblenden",scdaf4bbff76674c8:"Hinzufügen zum Startbildschirm",sdfe23506a3b0cdc8:"1) In Safari-Browser öffnen",se740f75b95a51807:"Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",sfea652f6580ff086:"Diese Website verfügt über App-Funktionalität."},ne={s182ab2d6c997515f:"Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.",s1b9047d53d9f9d22:"2) Presionar Compartir en la barra de direcciones",s37a9e8aec5713460:"Más",s5c6aad7a7e4a1437:"3) Presionar Añadir a pantalla de inicio",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Añadir al Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Presionar Añadir al Dock",sba52286c21552a4e:"Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.",sc79fd7641eb9a975:"Esconder instrucciones",scdaf4bbff76674c8:"Añadir a pantalla de inicio",sdfe23506a3b0cdc8:"1) Abrir en el navegador web Safari",se740f75b95a51807:"Añádelo a tu Dock para una experiencia amplia y acceso fácil.",sfea652f6580ff086:"Este sitio tiene funcionalidad de aplicación."},re={s182ab2d6c997515f:"Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.",s1b9047d53d9f9d22:"2) Druk op delen in de navigatiebalk",s37a9e8aec5713460:"Meer",s5c6aad7a7e4a1437:"3) Druk op Toevoegen aan het startscherm",s6196153c4b0c1ea0:"Installeren",s922329d6f6213590:"Toevoegen aan Dock",sa5ef80b4bb9b39f8:"Minder",sa7551383d1897fcc:"2) Druk op Toevoegen aan Dock",sba52286c21552a4e:"Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.",sc79fd7641eb9a975:"Instructie verbergen",scdaf4bbff76674c8:"Toevoegen aan het startscherm",sdfe23506a3b0cdc8:"1) Open in Safari-browser",se740f75b95a51807:"Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.",sfea652f6580ff086:"Deze site heeft app-functionaliteit."},de={s182ab2d6c997515f:"Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",s1b9047d53d9f9d22:"2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης",s37a9e8aec5713460:"Περισσότερα",s5c6aad7a7e4a1437:"3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας",s6196153c4b0c1ea0:"Εγκατάσταση",s922329d6f6213590:"Προσθήκη στην Πρόσβαση",sa5ef80b4bb9b39f8:"Λιγότερα",sa7551383d1897fcc:"2) Πατήστε Προσθήκη στην Πρόσβαση",sba52286c21552a4e:"Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sc79fd7641eb9a975:"Απόκρυψη Οδηγιών",scdaf4bbff76674c8:"Προσθήκη στην Οθόνη Αφετηρίας",sdfe23506a3b0cdc8:"1) Ανοίξτε τον περιηγητή Safari",se740f75b95a51807:"Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sfea652f6580ff086:"Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής."},ce={s182ab2d6c997515f:"Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.",s1b9047d53d9f9d22:"2) Appuyez sur Partager dans la barre de navigation",s37a9e8aec5713460:"Plus",s5c6aad7a7e4a1437:"3) Appuyez sur Ajouter à l'écran d'accueil",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Ajouter au Dock",sa5ef80b4bb9b39f8:"Moins",sa7551383d1897fcc:"2) Appuyez sur Ajouter au Dock",sba52286c21552a4e:"Installez-le sur votre appareil pour une expérience complète et un accès facile.",sc79fd7641eb9a975:"Masquer les instructions",scdaf4bbff76674c8:"Ajouter à l'écran d'accueil",sdfe23506a3b0cdc8:"1) Ouvrir dans le navigateur Safari",se740f75b95a51807:"Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.",sfea652f6580ff086:"Ce site possède des fonctionnalités d'application."},pe={s182ab2d6c997515f:"Додајте га на Home Screen за широке могућности и лак приступ.",s1b9047d53d9f9d22:"2) Притисните Share у навигационој траци",s37a9e8aec5713460:"Више",s5c6aad7a7e4a1437:"3) Притисните Add to Home Screen",s6196153c4b0c1ea0:"Инсталирај",sa5ef80b4bb9b39f8:"Мање",sa7551383d1897fcc:"3) Притисните Add to Dock",sba52286c21552a4e:"Инсталирајте га на вашем уређају за широке могућности и лак приступ.",sc79fd7641eb9a975:"Сакриј упутство",sdfe23506a3b0cdc8:"1) Отворите у Safari прегледачу",se740f75b95a51807:"Додајте га у вашу Dock за широке могућности и лак приступ.",sfea652f6580ff086:"Овај сајт има функционалност апликације.",s922329d6f6213590:"Add to Dock",scdaf4bbff76674c8:"Add to Home Screen"},be={s182ab2d6c997515f:"Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.",s1b9047d53d9f9d22:'2) Wybierz "Udostępnij"',s37a9e8aec5713460:"Więcej",s5c6aad7a7e4a1437:'3) Wybierz "Dodaj do Ekranu Głównego"',s6196153c4b0c1ea0:"Zainstaluj",s922329d6f6213590:"Dodaj do Docka",sa5ef80b4bb9b39f8:"Mniej",sa7551383d1897fcc:'2) Wybierz "Dodaj do Docka"',sba52286c21552a4e:"Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.",sc79fd7641eb9a975:"Ukryj instrukcję",scdaf4bbff76674c8:"Dodaj do Ekranu Głównego",sdfe23506a3b0cdc8:"1) Otwórz przeglądarkę Safari",se740f75b95a51807:"Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.",sfea652f6580ff086:"Ta strona posiada funkcje aplikacji."},ge={s182ab2d6c997515f:"Додайте на Домашній екран для зручного доступу та ширших можливостей.",s1b9047d53d9f9d22:"2) Натиснути «Поділитися»",s37a9e8aec5713460:"Детальніше",s5c6aad7a7e4a1437:"3) Натиснути «На Початковий екран»",s6196153c4b0c1ea0:"Встановити",s922329d6f6213590:"Додати на Dock",sa5ef80b4bb9b39f8:"Згорнути",sa7551383d1897fcc:"2) Натиснути «Додати на Dock»",sba52286c21552a4e:"Встановіть на ваш пристрій для зручного доступу та ширших можливостей.",sc79fd7641eb9a975:"Сховати Інструкцію",scdaf4bbff76674c8:"На Початковий экран",sdfe23506a3b0cdc8:"1) Відкрити в Safari браузері",se740f75b95a51807:"Додайте на панель Dock для зручного доступу та ширших можливостей.",sfea652f6580ff086:"Цей сайт має функції додатку."},he={s182ab2d6c997515f:"將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。",s1b9047d53d9f9d22:"2) 點擊列表上的分享按鈕",s37a9e8aec5713460:"詳細資訊",s5c6aad7a7e4a1437:"3) 點擊加入主畫面",s6196153c4b0c1ea0:"安裝",s922329d6f6213590:"添加到Dock欄",sa5ef80b4bb9b39f8:"簡短資訊",sa7551383d1897fcc:"2) 點選添加到Dock欄",sba52286c21552a4e:"在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。",sc79fd7641eb9a975:"隱藏安裝流程",scdaf4bbff76674c8:"將App加入主畫面",sdfe23506a3b0cdc8:"1) 在Safari上瀏覽此網頁",se740f75b95a51807:"將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。",sfea652f6580ff086:"此網站具有應用程式功能。"},me={s182ab2d6c997515f:"将其添加到主屏幕,以享受更丰富的体验并便于访问。",s1b9047d53d9f9d22:"2) 点击导航栏中的“分享”按钮",s37a9e8aec5713460:"更多",s5c6aad7a7e4a1437:"3) 点击“添加到主屏幕”",s6196153c4b0c1ea0:"安装",s922329d6f6213590:"添加到程序坞",sa5ef80b4bb9b39f8:"收起",sa7551383d1897fcc:"2) 点击“添加到程序坞”",sba52286c21552a4e:"在您的设备上安装,以享受更丰富的体验并便于访问。",sc79fd7641eb9a975:"隐藏安装步骤",scdaf4bbff76674c8:"添加到主屏幕",sdfe23506a3b0cdc8:"1) 在 Safari 浏览器中打开此页面",se740f75b95a51807:"将其添加到您的程序坞,以享受更全面的体验并便于访问。",sfea652f6580ff086:"此网站具备 App 功能特性。"},fe={s182ab2d6c997515f:"Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.",s1b9047d53d9f9d22:"2) Premi Condividi nella barra di navigazione",s37a9e8aec5713460:"Più",s5c6aad7a7e4a1437:"3) Premi Aggiungi alla schermata principale",s6196153c4b0c1ea0:"Installa",s922329d6f6213590:"Aggiungi al Dock",sa5ef80b4bb9b39f8:"Meno",sa7551383d1897fcc:"2) Premi Aggiungi al Dock",sba52286c21552a4e:"Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.",sc79fd7641eb9a975:"Nascondi istruzioni",scdaf4bbff76674c8:"Aggiungi alla schermata principale",sdfe23506a3b0cdc8:"1) Apri nel browser Safari",se740f75b95a51807:"Aggiungilo al Dock per un'esperienza più completa e un accesso facile.",sfea652f6580ff086:"Questo sito ha funzionalità di app."},ue={s182ab2d6c997515f:"Přidejte jej na plochu pro rozšířené využití a snadný přístup.",s1b9047d53d9f9d22:"2) Stiskněte tlačítko Sdílet na navigačním panelu",s37a9e8aec5713460:"Vice",s5c6aad7a7e4a1437:"3) Stiskněte tlačítko Přidat na plochu",s6196153c4b0c1ea0:"Nainstalovat",s922329d6f6213590:"Přidat do Docku",sa5ef80b4bb9b39f8:"Méně",sa7551383d1897fcc:"2) Stiskněte Přidat do Docku",sba52286c21552a4e:"Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.",sc79fd7641eb9a975:"Skrýt instrukce",scdaf4bbff76674c8:"Přidat na plochu",sdfe23506a3b0cdc8:"1) Otevřete v prohlížeči Safari",se740f75b95a51807:"Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.",sfea652f6580ff086:"Tento web má funkce aplikace."},ve={s182ab2d6c997515f:"Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.",s1b9047d53d9f9d22:"2) Trykk på Del-knappen i navigasjonslinjen",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Velg Legg til på Hjem-skjerm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Legg til i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Velg Legg til i Dock",sba52286c21552a4e:"Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.",sc79fd7641eb9a975:"Skjul instruksjoner",scdaf4bbff76674c8:"Legg til på Hjem-skjerm",sdfe23506a3b0cdc8:"1) Åpne i Safari",se740f75b95a51807:"Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.",sfea652f6580ff086:"Denne siden har app-funksjonalitet."},we={s182ab2d6c997515f:"Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.",s1b9047d53d9f9d22:"2) Pressione Compartilhar na barra de endereço",s37a9e8aec5713460:"Mais",s5c6aad7a7e4a1437:"3) Pressione Adicionar à Tela de Início",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Adicionar ao Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Pressione Adicionar ao Dock",sba52286c21552a4e:"Instale no dispositivo para uma melhor experiência e mais fácil acesso.",sc79fd7641eb9a975:"Ocultar Instruções",scdaf4bbff76674c8:"Adicionar à Tela de Início",sdfe23506a3b0cdc8:"1) Abra no navegador Safari",se740f75b95a51807:"Adicione ao Dock para uma melhor experiência e mais fácil acesso.",sfea652f6580ff086:"Este site possui funcionalidade de aplicativo."},ye={s182ab2d6c997515f:"ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。",s1b9047d53d9f9d22:"2) ナビゲーションバーで共有を押す",s37a9e8aec5713460:"展開",s5c6aad7a7e4a1437:"3) 「ホーム画面に追加」を押す",s6196153c4b0c1ea0:"インストール",s922329d6f6213590:"Dockに追加",sa5ef80b4bb9b39f8:"折りたたむ",sa7551383d1897fcc:"2) 「Dockに追加」を押す",sba52286c21552a4e:"デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。",sc79fd7641eb9a975:"説明を非表示",scdaf4bbff76674c8:"ホーム画面に追加",sdfe23506a3b0cdc8:"1) Safariで開く",se740f75b95a51807:"ドックに追加して、幅広い体験と簡単なアクセスを実現してください。",sfea652f6580ff086:"このサイトはアプリ機能があります。"},xe={s182ab2d6c997515f:"Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.",s1b9047d53d9f9d22:"2) Tryck på Dela-knappen i verktygsfältet",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Välj Lägg till på hemskärmen",s6196153c4b0c1ea0:"Installera",s922329d6f6213590:"Lägg till i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Välj Lägg till i Dock",sba52286c21552a4e:"Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.",sc79fd7641eb9a975:"Göm instruktioner",scdaf4bbff76674c8:"Lägg till på hemskärmen",sdfe23506a3b0cdc8:"1) Öppna i Safari",se740f75b95a51807:"Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.",sfea652f6580ff086:"Denna webbsajt har app-funktionalitet."},ke={s182ab2d6c997515f:"더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.",s1b9047d53d9f9d22:"2) 내비게이션 바에서 공유 버튼 누르기",s37a9e8aec5713460:"더보기",s5c6aad7a7e4a1437:"3) 홈 화면에 추가 버튼 누르기",s6196153c4b0c1ea0:"설치",s922329d6f6213590:"Dock에 추가",sa5ef80b4bb9b39f8:"닫기",sa7551383d1897fcc:"2) Dock에 추가 버튼 누르기",sba52286c21552a4e:"더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.",sc79fd7641eb9a975:"안내 숨기기",scdaf4bbff76674c8:"홈 화면에 추가",sdfe23506a3b0cdc8:"1) Safari 브라우저에서 열기",se740f75b95a51807:"더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.",sfea652f6580ff086:"이 사이트는 앱 기능을 가지고 있습니다."},De={s182ab2d6c997515f:"បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",s1b9047d53d9f9d22:"2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ",s37a9e8aec5713460:"បង្ហាញបន្ថែម",s5c6aad7a7e4a1437:"3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",s6196153c4b0c1ea0:"តំឡើង",s922329d6f6213590:"បន្ថែមទៅកាន់ Dock",sa5ef80b4bb9b39f8:"បង្ហាញតិច",sa7551383d1897fcc:"2) ចុចលើ បន្ថែមទៅកាន់ Dock",sba52286c21552a4e:"តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sc79fd7641eb9a975:"បិទការណែនាំ",scdaf4bbff76674c8:"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",sdfe23506a3b0cdc8:"1) បើកនៅក្នុងកម្មវិធី Safari",se740f75b95a51807:"បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sfea652f6580ff086:"គេហទំព័រនេះមានមុខងារជាកម្មវិធី។"},je={s182ab2d6c997515f:"Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.",s1b9047d53d9f9d22:"2) Tryk på Del-knappen i navigationslinjen",s37a9e8aec5713460:"Mere",s5c6aad7a7e4a1437:"3) Vælg Tilføj til hjemmeskærm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Tilføj til Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Vælg Tilføj til Dock",sba52286c21552a4e:"Installer den på din enhed for en bedre oplevelse og nem adgang.",sc79fd7641eb9a975:"Skjul instruktion",scdaf4bbff76674c8:"Tilføj til hjemmeskærm",sdfe23506a3b0cdc8:"1) Åbn i Safari-browseren",se740f75b95a51807:"Tilføj den til din Dock for en bedre oplevelse og nem adgang.",sfea652f6580ff086:"Denne side har app-funktionalitet."},Ae=new Map([["ru",n],["tr",r],["de",d],["es",c],["nl",p],["el",b],["fr",g],["sr",h],["pl",m],["uk",f],["zh-HK",u],["zh-CN",v],["it",w],["cs",y],["no",x],["pt",k],["ja",D],["sv",j],["ko",A],["km",S],["da",_]]),{getLocale:Se,setLocale:_e}=(ze={sourceLocale:"en",targetLocales:le,loadLocale:async e=>Ae.get(e)},function(e){if(L)throw Error("lit-localize can only be configured once");I=e,L=!0}(((e,t)=>Y(K,e,t))),Q=W=ze.sourceLocale,N=new Set(ze.targetLocales),N.add(ze.sourceLocale),G=ze.loadLocale,{getLocale:ee,setLocale:te});var ze;class Ee{constructor(){this.icons=[{src:""}],this.screenshots=void 0,this.short_name="PWA",this.name="Progressive web application",this.description="Progressive web application"}}const Pe=z.css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`,Ie=(e,t,a)=>{const l=new CustomEvent(t,{detail:{message:a}});e.dispatchEvent(l)};class Le{static isAppleMobile(){return!(!(["iPhone","iPad","iPod"].includes(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2)||!("serviceWorker"in navigator))}static isAppleDesktop(){const e=navigator.userAgent.toLowerCase();if(navigator.maxTouchPoints||!e.match(/macintosh/))return!1;const t=/version\/(\d{2})\./.exec(e);if(!(t&&t[1]&&parseInt(t[1])>=17))return!1;const a=!!document.createElement("audio").canPlayType('audio/wav; codecs="1"'),l=!!new OffscreenCanvas(1,1).getContext("webgl");return a&&l}static deviceFormFactor(){return window.matchMedia("(orientation: portrait)").matches?"narrow":"wide"}static isStandalone(){return!!(window.matchMedia("(display-mode: standalone)").matches||"standalone"in navigator&&!0===navigator.standalone)}static async getInstalledRelatedApps(){if("getInstalledRelatedApps"in navigator)try{return await navigator.getInstalledRelatedApps().then((e=>e))}catch(e){}return[]}static async isRelatedAppsInstalled(){return!!(await this.getInstalledRelatedApps()).length}static setStorageFlag(e,t,a=!1){try{a?localStorage.setItem(e,t.toString()):sessionStorage.setItem(e,t.toString())}catch(e){}}static getStorageFlag(e){try{return"true"===sessionStorage.getItem(e)||"true"===localStorage.getItem(e)}catch(e){return!1}}static eventInstalledSuccess(e){Ie(e,"pwa-install-success-event","App install success (Chromium/Android only)")}static eventInstalledFail(e){Ie(e,"pwa-install-fail-event","App install failed (Chromium/Android only)")}static eventUserChoiceResult(e,t){Ie(e,"pwa-user-choice-result-event",t)}static eventInstallAvailable(e){Ie(e,"pwa-install-available-event","App install available")}static eventInstallHowTo(e){Ie(e,"pwa-install-how-to-event","App install instruction showed")}static eventGallery(e){Ie(e,"pwa-install-gallery-event","App install gallery showed")}static normalizeManifestAssetUrls(e,t){const a=new URL(t,document.location.href);[...e.icons||[],...e.screenshots||[]].forEach((e=>{e.src=new URL(e.src,a).href}))}}const $e=(e,t,a,l)=>z.html`${e?z.html``:""}`;var Ce=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},Re=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Me=class extends z.LitElement{constructor(){super(...arguments),this.screenshots=[],this.theme="default",this.getScrollElements=()=>{const e=this.shadowRoot?.querySelector("#paginated_gallery");if(!e)return;const t=e.querySelector(".gallery_scroller");if(!t)return;const a=Array.from(t.querySelectorAll("img"));return 0!==a.length?{scroller:t,items:a}:void 0},this.findCurrentItem=(e,t)=>{const a=e.scrollLeft;return t.find((e=>e.offsetWidth+e.offsetLeft>=a+e.offsetWidth/2.5))||null},this.scrollToPage=e=>{const t=this.getScrollElements();if(!t)return;const{scroller:a,items:l}=t,i=this.findCurrentItem(a,l);if(!i)return;const o=l.indexOf(i)+("next"===e?1:-1);o>=0&&o{this.scrollToPage("next")},this.scrollToPrevPage=()=>{this.scrollToPage("prev")},this._init=()=>{}}static get styles(){return Pe}firstUpdated(){const e=this.getScrollElements();e&&setTimeout((()=>{e.scroller.scrollTo({top:0,left:0})}),300)}connectedCallback(){super.connectedCallback(),this._init()}render(){return z.html`${$e(this.screenshots,this.theme,this.scrollToNextPage,this.scrollToPrevPage)}`}};Ce([(0,ae.property)({type:Array}),Re("design:type",Array)],Me.prototype,"screenshots",void 0),Ce([(0,ae.property)(),Re("design:type",String)],Me.prototype,"theme",void 0),Me=Ce([(0,ae.customElement)("pwa-gallery")],Me);const Te=Me,He=(e,t,a,l)=>z.html`
icon
${location.hostname}
${t?z.html`
${t}
`:""}`;var Oe=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},qe=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Be=class extends z.LitElement{constructor(){super(...arguments),this.props={name:"",description:"",icon:""},this.install={handleEvent:()=>{}},this.hideDialog=()=>{},this.disableClose=!1,this._callInstall=()=>{this.install.handleEvent()},this._callHide=()=>{this.hideDialog(),this.setupAppearence()},this.bindedElement=null,this._saveBodyStyle=document.body.style.overscrollBehaviorY,this.dragMobileSheet=(e,t,a)=>{if(!e||!t||!a)return null;let l=0;const i=t.clientHeight+a.clientHeight,o=e=>e.clientY||(e.changedTouches&&e.changedTouches.length?e.changedTouches[0].clientY:0),s=e=>{window.addEventListener("mouseup",n),window.addEventListener("mousemove",r),window.addEventListener("touchend",n),window.addEventListener("touchmove",r),l=o(e)-t.getBoundingClientRect().top,document.body.style.overscrollBehaviorY="none"},n=t=>{if(document.body.style.overscrollBehaviorY=this._saveBodyStyle,!this.disableClose&&o(t)>=window.innerHeight-25)d(t,window.innerHeight+50,!0);else if(window.innerHeight-o(t)>e.clientHeight/2.5){d(t,window.innerHeight-e.clientHeight);try{Le.eventGallery(this.getRootNode().host)}catch(t){}}else d(t,window.innerHeight-i-35)},r=t=>{const a=o(t);this.disableClose&&window.innerHeight-a<70||a<=window.innerHeight-e.clientHeight+l||(e.style.setProperty("transition","none"),e.style.setProperty("--translateY",`translateY(${a-l}px)`))},d=(a,l,d)=>{window.removeEventListener("mouseup",n),window.removeEventListener("mousemove",r),window.removeEventListener("touchend",n),window.removeEventListener("touchmove",r),window.innerWidth>=768||(!l&&o(a)>=window.innerHeight-i?e.style.setProperty("--translateY",`translateY(calc(100vh - ${i}px))`):e.style.setProperty("--translateY",`translateY(${(l||o(a))+35}px)`),e.style.setProperty("transition","transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s"),d&&(t.removeEventListener("mousedown",s),t.removeEventListener("touchstart",s),setTimeout(this._callHide,250)))};return t.addEventListener("mousedown",s),t.addEventListener("touchstart",s,{passive:!0}),d(new MouseEvent("mouseup"),window.innerHeight-i-35),{touchElement:t,listener:s}},this.setupAppearence=()=>{this.bindedElement&&(this.bindedElement.touchElement.removeEventListener("mousedown",this.bindedElement.listener),this.bindedElement.touchElement.removeEventListener("touchstart",this.bindedElement.listener)),this.bindedElement=this.dragMobileSheet(this.parentElement?.parentElement,this.parentElement?.getElementsByClassName("touch-header")[0],this.parentElement?.getElementsByClassName("body-header")[0])},this._init=()=>{this.setupAppearence(),window.addEventListener("resize",this.setupAppearence)}}firstUpdated(){this._init()}createRenderRoot(){return this}connectedCallback(){super.connectedCallback()}render(){return z.html`${He(this.props.name,this.props.description,this.props.icon,this._callInstall)}`}};Oe([(0,ae.property)({type:Object}),qe("design:type",Object)],Be.prototype,"props",void 0),Oe([(0,ae.property)({type:Object}),qe("design:type",Object)],Be.prototype,"install",void 0),Oe([(0,ae.property)(),qe("design:type",Object)],Be.prototype,"hideDialog",void 0),Oe([(0,ae.property)(),qe("design:type",Object)],Be.prototype,"disableClose",void 0),Be=Oe([(0,ae.customElement)("pwa-bottom-sheet")],Be);const Ue=Be,Fe=z.css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,"Segoe UI",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:"";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,"Segoe UI",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:"";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`,Ye=z.css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,"Segoe UI";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:"icon description" "welcome welcome" "how-to how-to" "gallery gallery" "button button";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"icon" "description" "welcome" "how-to" "gallery" "button";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;var Ze=o(125);const Ve=(e,t,a,l,i,o,s,n,r,d,c,p,b)=>{const g=()=>({available:r,gallery:b}),h=!i&&n.screenshots&&n.screenshots.length;return z.html`
icon
${o?"":z.html``}
${location.hostname}
${t?z.html`
${t}
`:""} ${l?"":z.html`
${a||`${I("This site has app functionality.")} ${I("Install it on your device for extensive experience and easy access.")}`}
`} ${h?z.html``:""}
${h?z.html``:""}
${h?z.html``:""}
`},We=(e,t,a,l,i,o,s,n,r,d,c,p,b,g,h)=>{const m=!i&&n.screenshots&&n.screenshots.length;return z.html``};var Ne=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},Ge=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Ke=class extends z.LitElement{constructor(){super(...arguments),this.manifestUrl="/manifest.json",this.icon="",this.name="",this.description="",this.installDescription="",this.disableDescription=!1,this.disableScreenshots=!1,this.disableScreenshotsApple=!1,this.disableScreenshotsChrome=!1,this.manualApple=!1,this.manualChrome=!1,this.disableChrome=!1,this.disableClose=!1,this.useLocalStorage=!1,this.externalPromptEvent=null,this.platforms=[],this.userChoiceResult="",this.isDialogHidden=Le.getStorageFlag("pwa-hide-install"),this.isInstallAvailable=!1,this.isAppleMobilePlatform=!1,this.isAppleDesktopPlatform=!1,this.isUnderStandaloneMode=!1,this.isRelatedAppsInstalled=!1,this._manifest=new Ee,this._howToRequested=!1,this._galleryRequested=!1,this._install={handleEvent:()=>{window.defferedPromptEvent&&(this.hideDialog(),window.defferedPromptEvent.prompt(),window.defferedPromptEvent.userChoice.then((e=>{this.userChoiceResult=e.outcome,Le.eventUserChoiceResult(this,this.userChoiceResult)})).catch((e=>{Le.eventInstalledFail(this)})),window.defferedPromptEvent=null)},passive:!0},this.install=()=>{this.isAppleMobilePlatform||this.isAppleDesktopPlatform?(this._howToRequested=!0,this.requestUpdate()):this._install.handleEvent()},this._hideDialog={handleEvent:()=>{this.isDialogHidden=!0,Le.setStorageFlag("pwa-hide-install",!0,this.useLocalStorage),this.requestUpdate()},passive:!0},this._hideDialogUser=()=>{Le.eventUserChoiceResult(this,"dismissed"),this.userChoiceResult="dismissed",this.hideDialog()},this.hideDialog=()=>{this._hideDialog.handleEvent()},this.showDialog=(e=!1)=>{this.isDialogHidden=!1,e&&(this.isInstallAvailable=!0),Le.setStorageFlag("pwa-hide-install",!1,this.useLocalStorage),this.requestUpdate()},this.getInstalledRelatedApps=async()=>await Le.getInstalledRelatedApps(),this._howToForApple={handleEvent:()=>{this._howToRequested=!this._howToRequested,this._howToRequested&&this._galleryRequested&&(this._galleryRequested=!1),this.requestUpdate(),this._howToRequested&&Le.eventInstallHowTo(this)},passive:!0},this._toggleGallery={handleEvent:()=>{this._galleryRequested=!this._galleryRequested,this._howToRequested&&this._galleryRequested&&(this._howToRequested=!1),this._galleryRequested&&Le.eventGallery(this),this.requestUpdate()},passive:!0},this._init=async()=>{if(window.defferedPromptEvent=null,this._checkInstalled(),!this.disableChrome){const e=e=>{window.defferedPromptEvent=e,e.preventDefault(),this.platforms=e.platforms,this.isRelatedAppsInstalled||this.isUnderStandaloneMode?this.isInstallAvailable=!1:(this.isInstallAvailable=!0,Le.eventInstallAvailable(this)),"accepted"===this.userChoiceResult&&(this.isDialogHidden=!0,Le.eventInstalledSuccess(this)),this.requestUpdate()};null!=this.externalPromptEvent?setTimeout((()=>e(this.externalPromptEvent)),300):window.addEventListener("beforeinstallprompt",e)}window.addEventListener("appinstalled",(e=>{window.defferedPromptEvent=null,this.isInstallAvailable=!1,this.requestUpdate(),Le.eventInstalledSuccess(this)}));try{const e=await fetch(this.manifestUrl),t=await e.json();if(!e.ok||!t||!Object.keys(t))throw Error("Manifest not found");Le.normalizeManifestAssetUrls(t,this.manifestUrl),this.icon=this.icon||t.icons?.length?t.icons[0].src:"",this.name=this.name||t.short_name||t.name||"",this.description=this.description||t.description||"",this._manifest=t}catch(e){this.icon=this.icon||this._manifest.icons?.[0].src||"",this.name=this.name||this._manifest.short_name||"",this.description=this.description||this._manifest.description||""}},this._requestUpdate=()=>{this.requestUpdate()}}static get styles(){return[Fe,Ye]}async _checkInstalled(){this.isUnderStandaloneMode=Le.isStandalone(),this.isRelatedAppsInstalled=await Le.isRelatedAppsInstalled(),this.isAppleMobilePlatform=Le.isAppleMobile(),this.isAppleDesktopPlatform=Le.isAppleDesktop(),this.isAppleMobilePlatform||this.isAppleDesktopPlatform?this.isUnderStandaloneMode||(this.manualApple&&this.hideDialog(),setTimeout((()=>{this.isInstallAvailable=!0,this.requestUpdate(),Le.eventInstallAvailable(this)}),1e3)):this.manualChrome&&this.hideDialog()}connectedCallback(){(e=>{"nb"===e.slice(0,2)&&(e="no");switch(e){case"zh":case"zh-TW":e="zh-CN"}try{Ae.get(e)?_e(e):_e(e.slice(0,2))}catch{}})(navigator.language),this._init(),Te.finalized,Ue.finalized,super.connectedCallback()}willUpdate(e){this.externalPromptEvent&&e.has("externalPromptEvent")&&"object"==typeof this.externalPromptEvent&&this._init()}render(){return this.isAppleMobilePlatform||this.isAppleDesktopPlatform?z.html`${We(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsApple,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._howToForApple,this.isAppleDesktopPlatform,this._howToRequested,this._toggleGallery,this._galleryRequested)}`:z.html`${Ve(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsChrome,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._install,this._toggleGallery,this._galleryRequested)}`}};return Ne([(0,ae.property)({attribute:"manifest-url"}),Ge("design:type",Object)],Ke.prototype,"manifestUrl",void 0),Ne([(0,ae.property)(),Ge("design:type",Object)],Ke.prototype,"icon",void 0),Ne([(0,ae.property)(),Ge("design:type",Object)],Ke.prototype,"name",void 0),Ne([(0,ae.property)(),Ge("design:type",Object)],Ke.prototype,"description",void 0),Ne([(0,ae.property)({attribute:"install-description"}),Ge("design:type",Object)],Ke.prototype,"installDescription",void 0),Ne([(0,ae.property)({attribute:"disable-install-description",type:Boolean}),Ge("design:type",Object)],Ke.prototype,"disableDescription",void 0),Ne([(0,ae.property)({attribute:"disable-screenshots",type:Boolean}),Ge("design:type",Object)],Ke.prototype,"disableScreenshots",void 0),Ne([(0,ae.property)({attribute:"disable-screenshots-apple",type:Boolean}),Ge("design:type",Object)],Ke.prototype,"disableScreenshotsApple",void 0),Ne([(0,ae.property)({attribute:"disable-screenshots-chrome",type:Boolean}),Ge("design:type",Object)],Ke.prototype,"disableScreenshotsChrome",void 0),Ne([(0,ae.property)({attribute:"manual-apple",type:Boolean}),Ge("design:type",Object)],Ke.prototype,"manualApple",void 0),Ne([(0,ae.property)({attribute:"manual-chrome",type:Boolean}),Ge("design:type",Object)],Ke.prototype,"manualChrome",void 0),Ne([(0,ae.property)({attribute:"disable-chrome",type:Boolean}),Ge("design:type",Object)],Ke.prototype,"disableChrome",void 0),Ne([(0,ae.property)({attribute:"disable-close",type:Boolean}),Ge("design:type",Object)],Ke.prototype,"disableClose",void 0),Ne([(0,ae.property)({attribute:"use-local-storage",type:Boolean}),Ge("design:type",Object)],Ke.prototype,"useLocalStorage",void 0),Ne([(0,ae.state)(),Ge("design:type",Object)],Ke.prototype,"externalPromptEvent",void 0),Ke=Ne([(e,t)=>(e.addInitializer(R),e),(0,ae.customElement)("pwa-install")],Ke),s})())); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("lit"),require("lit/decorators.js"),require("lit/directives/class-map.js")):"function"==typeof define&&define.amd?define(["lit","lit/decorators.js","lit/directives/class-map.js"],t):"object"==typeof exports?exports.PWAInstallComponent=t(require("lit"),require("lit/decorators.js"),require("lit/directives/class-map.js")):e.PWAInstallComponent=t(e.lit,e["lit/decorators.js"],e["lit/directives/class-map.js"])}(globalThis,((e,t,a)=>(()=>{"use strict";var l={161:t=>{t.exports=e},429:e=>{e.exports=t},125:e=>{e.exports=a}},i={};function o(e){var t=i[e];if(void 0!==t)return t.exports;var a=i[e]={exports:{}};return l[e](a,a.exports,o),a.exports}o.d=(e,t)=>{for(var a in t)o.o(t,a)&&!o.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};o.r(s),o.d(s,{PWAInstallElement:()=>We});var n={};o.r(n),o.d(n,{templates:()=>te});var r={};o.r(r),o.d(r,{templates:()=>ae});var d={};o.r(d),o.d(d,{templates:()=>le});var c={};o.r(c),o.d(c,{templates:()=>ie});var p={};o.r(p),o.d(p,{templates:()=>oe});var b={};o.r(b),o.d(b,{templates:()=>se});var g={};o.r(g),o.d(g,{templates:()=>ne});var h={};o.r(h),o.d(h,{templates:()=>re});var m={};o.r(m),o.d(m,{templates:()=>de});var f={};o.r(f),o.d(f,{templates:()=>ce});var u={};o.r(u),o.d(u,{templates:()=>pe});var v={};o.r(v),o.d(v,{templates:()=>be});var w={};o.r(w),o.d(w,{templates:()=>ge});var y={};o.r(y),o.d(y,{templates:()=>he});var x={};o.r(x),o.d(x,{templates:()=>me});var k={};o.r(k),o.d(k,{templates:()=>fe});var D={};o.r(D),o.d(D,{templates:()=>ue});var j={};o.r(j),o.d(j,{templates:()=>ve});var A={};o.r(A),o.d(A,{templates:()=>we});var S={};o.r(S),o.d(S,{templates:()=>ye});var _={};o.r(_),o.d(_,{templates:()=>xe});var z=o(161);const E=(e,t,a)=>{let l=e[0];for(let i=1;i{return"string"!=typeof(t=e)&&"strTag"in t?E(e.strings,e.values):e;var t};let I=P,L=!1;const $="lit-localize-status";class C{constructor(e){this.__litLocalizeEventHandler=e=>{"ready"===e.detail.status&&this.host.requestUpdate()},this.host=e}hostConnected(){window.addEventListener($,this.__litLocalizeEventHandler)}hostDisconnected(){window.removeEventListener($,this.__litLocalizeEventHandler)}}const R=e=>e.addController(new C(e));class M{constructor(){this.settled=!1,this.promise=new Promise(((e,t)=>{this._resolve=e,this._reject=t}))}resolve(e){this.settled=!0,this._resolve(e)}reject(e){this.settled=!0,this._reject(e)}}const T=[];for(let e=0;e<256;e++)T[e]=(e>>4&15).toString(16)+(15&e).toString(16);function H(e,t){return(t?"h":"s")+function(e){let t=0,a=8997,l=0,i=33826,o=0,s=40164,n=0,r=52210;for(let d=0;d>>16,a=65535&t,o+=l>>>16,i=65535&l,r=n+(o>>>16)&65535,s=65535&o;return T[r>>8]+T[255&r]+T[s>>8]+T[255&s]+T[i>>8]+T[255&i]+T[a>>8]+T[255&a]}("string"==typeof e?e:e.join(""))}const O=new WeakMap,q=new Map;function B(e,t,a){if(e){const l=a?.id??function(e){const t="string"==typeof e?e:e.strings;let a=q.get(t);void 0===a&&(a=H(t,"string"!=typeof e&&!("strTag"in e)),q.set(t,a));return a}(t),i=e[l];if(i){if("string"==typeof i)return i;if("strTag"in i)return E(i.strings,t.values,i.values);{let e=O.get(i);return void 0===e&&(e=i.values,O.set(i,e)),{...i,values:e.map((e=>t.values[e]))}}}}return P(t)}function U(e){window.dispatchEvent(new CustomEvent($,{detail:e}))}let F,Y,Z,V,W,N="",G=new M;G.resolve();let K=0;const Q=()=>N,J=e=>{if(e===(F??N))return G.promise;if(!Z||!V)throw Error("Internal error");if(!Z.has(e))throw Error("Invalid locale code");K++;const t=K;F=e,G.settled&&(G=new M),U({status:"loading",loadingLocale:e});return(e===Y?Promise.resolve({templates:void 0}):V(e)).then((a=>{K===t&&(N=e,F=void 0,W=a.templates,U({status:"ready",readyLocale:e}),G.resolve())}),(a=>{K===t&&(U({status:"error",errorLocale:e,errorMessage:a.toString()}),G.reject(a))})),G.promise};var X=o(429);const ee=["cs","da","de","el","es","fr","it","ja","km","ko","nl","no","pl","pt","ru","sr","sv","tr","uk","zh-CN","zh-HK"],te={s182ab2d6c997515f:"Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.",s1b9047d53d9f9d22:'2) Нажать "Поделиться"',s37a9e8aec5713460:"Подробнее",s5c6aad7a7e4a1437:'3) Нажать "На экран «Домой»"',s6196153c4b0c1ea0:"Установить",s922329d6f6213590:"Добавить в Dock",sa5ef80b4bb9b39f8:"Свернуть",sa7551383d1897fcc:'2) Нажмите "Добавить в Dock"',sba52286c21552a4e:"Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.",sc79fd7641eb9a975:"Спрятать Инструкцию",scdaf4bbff76674c8:"На экран «Домой»",sdfe23506a3b0cdc8:"1) Открыть в Safari браузере",se740f75b95a51807:"Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.",sfea652f6580ff086:"Этот веб-сайт имеет функционал приложения."},ae={s182ab2d6c997515f:"Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.",s1b9047d53d9f9d22:"2) Gezinme çubuğunda Paylaş'a basın",s37a9e8aec5713460:"Daha Fazla",s5c6aad7a7e4a1437:"3) Ana Ekrana Ekle'ye basın",s6196153c4b0c1ea0:"Yükle",s922329d6f6213590:"Dock’a Ekle",sa5ef80b4bb9b39f8:"Küçült",sa7551383d1897fcc:"2) Dock’a ekleye basın",sba52286c21552a4e:"Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.",sc79fd7641eb9a975:"Talimatları gizle",scdaf4bbff76674c8:"Ana Ekrana Ekle",sdfe23506a3b0cdc8:"1) Safari tarayıcısında açın",se740f75b95a51807:"Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.",sfea652f6580ff086:"Bu site uygulama işlevselliğine sahiptir."},le={s182ab2d6c997515f:"Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",s1b9047d53d9f9d22:"2) Drücken Sie auf Teilen in der Navigationsleiste",s37a9e8aec5713460:"Mehr",s5c6aad7a7e4a1437:"3) Drücken Sie Hinzufügen zum Startbildschirm",s6196153c4b0c1ea0:"Installieren",s922329d6f6213590:"Zum Dock hinzufügen",sa5ef80b4bb9b39f8:"Weniger",sa7551383d1897fcc:"2) Drücken Sie auf Zum Dock hinzufügen",sba52286c21552a4e:"Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.",sc79fd7641eb9a975:"Anleitung ausblenden",scdaf4bbff76674c8:"Hinzufügen zum Startbildschirm",sdfe23506a3b0cdc8:"1) In Safari-Browser öffnen",se740f75b95a51807:"Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",sfea652f6580ff086:"Diese Website verfügt über App-Funktionalität."},ie={s182ab2d6c997515f:"Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.",s1b9047d53d9f9d22:"2) Presionar Compartir en la barra de direcciones",s37a9e8aec5713460:"Más",s5c6aad7a7e4a1437:"3) Presionar Añadir a pantalla de inicio",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Añadir al Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Presionar Añadir al Dock",sba52286c21552a4e:"Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.",sc79fd7641eb9a975:"Esconder instrucciones",scdaf4bbff76674c8:"Añadir a pantalla de inicio",sdfe23506a3b0cdc8:"1) Abrir en el navegador web Safari",se740f75b95a51807:"Añádelo a tu Dock para una experiencia amplia y acceso fácil.",sfea652f6580ff086:"Este sitio tiene funcionalidad de aplicación."},oe={s182ab2d6c997515f:"Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.",s1b9047d53d9f9d22:"2) Druk op delen in de navigatiebalk",s37a9e8aec5713460:"Meer",s5c6aad7a7e4a1437:"3) Druk op Toevoegen aan het startscherm",s6196153c4b0c1ea0:"Installeren",s922329d6f6213590:"Toevoegen aan Dock",sa5ef80b4bb9b39f8:"Minder",sa7551383d1897fcc:"2) Druk op Toevoegen aan Dock",sba52286c21552a4e:"Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.",sc79fd7641eb9a975:"Instructie verbergen",scdaf4bbff76674c8:"Toevoegen aan het startscherm",sdfe23506a3b0cdc8:"1) Open in Safari-browser",se740f75b95a51807:"Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.",sfea652f6580ff086:"Deze site heeft app-functionaliteit."},se={s182ab2d6c997515f:"Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",s1b9047d53d9f9d22:"2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης",s37a9e8aec5713460:"Περισσότερα",s5c6aad7a7e4a1437:"3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας",s6196153c4b0c1ea0:"Εγκατάσταση",s922329d6f6213590:"Προσθήκη στην Πρόσβαση",sa5ef80b4bb9b39f8:"Λιγότερα",sa7551383d1897fcc:"2) Πατήστε Προσθήκη στην Πρόσβαση",sba52286c21552a4e:"Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sc79fd7641eb9a975:"Απόκρυψη Οδηγιών",scdaf4bbff76674c8:"Προσθήκη στην Οθόνη Αφετηρίας",sdfe23506a3b0cdc8:"1) Ανοίξτε τον περιηγητή Safari",se740f75b95a51807:"Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sfea652f6580ff086:"Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής."},ne={s182ab2d6c997515f:"Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.",s1b9047d53d9f9d22:"2) Appuyez sur Partager dans la barre de navigation",s37a9e8aec5713460:"Plus",s5c6aad7a7e4a1437:"3) Appuyez sur Ajouter à l'écran d'accueil",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Ajouter au Dock",sa5ef80b4bb9b39f8:"Moins",sa7551383d1897fcc:"2) Appuyez sur Ajouter au Dock",sba52286c21552a4e:"Installez-le sur votre appareil pour une expérience complète et un accès facile.",sc79fd7641eb9a975:"Masquer les instructions",scdaf4bbff76674c8:"Ajouter à l'écran d'accueil",sdfe23506a3b0cdc8:"1) Ouvrir dans le navigateur Safari",se740f75b95a51807:"Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.",sfea652f6580ff086:"Ce site possède des fonctionnalités d'application."},re={s182ab2d6c997515f:"Додајте га на Home Screen за широке могућности и лак приступ.",s1b9047d53d9f9d22:"2) Притисните Share у навигационој траци",s37a9e8aec5713460:"Више",s5c6aad7a7e4a1437:"3) Притисните Add to Home Screen",s6196153c4b0c1ea0:"Инсталирај",sa5ef80b4bb9b39f8:"Мање",sa7551383d1897fcc:"3) Притисните Add to Dock",sba52286c21552a4e:"Инсталирајте га на вашем уређају за широке могућности и лак приступ.",sc79fd7641eb9a975:"Сакриј упутство",sdfe23506a3b0cdc8:"1) Отворите у Safari прегледачу",se740f75b95a51807:"Додајте га у вашу Dock за широке могућности и лак приступ.",sfea652f6580ff086:"Овај сајт има функционалност апликације.",s922329d6f6213590:"Add to Dock",scdaf4bbff76674c8:"Add to Home Screen"},de={s182ab2d6c997515f:"Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.",s1b9047d53d9f9d22:'2) Wybierz "Udostępnij"',s37a9e8aec5713460:"Więcej",s5c6aad7a7e4a1437:'3) Wybierz "Dodaj do Ekranu Głównego"',s6196153c4b0c1ea0:"Zainstaluj",s922329d6f6213590:"Dodaj do Docka",sa5ef80b4bb9b39f8:"Mniej",sa7551383d1897fcc:'2) Wybierz "Dodaj do Docka"',sba52286c21552a4e:"Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.",sc79fd7641eb9a975:"Ukryj instrukcję",scdaf4bbff76674c8:"Dodaj do Ekranu Głównego",sdfe23506a3b0cdc8:"1) Otwórz przeglądarkę Safari",se740f75b95a51807:"Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.",sfea652f6580ff086:"Ta strona posiada funkcje aplikacji."},ce={s182ab2d6c997515f:"Додайте на Домашній екран для зручного доступу та ширших можливостей.",s1b9047d53d9f9d22:"2) Натиснути «Поділитися»",s37a9e8aec5713460:"Детальніше",s5c6aad7a7e4a1437:"3) Натиснути «На Початковий екран»",s6196153c4b0c1ea0:"Встановити",s922329d6f6213590:"Додати на Dock",sa5ef80b4bb9b39f8:"Згорнути",sa7551383d1897fcc:"2) Натиснути «Додати на Dock»",sba52286c21552a4e:"Встановіть на ваш пристрій для зручного доступу та ширших можливостей.",sc79fd7641eb9a975:"Сховати Інструкцію",scdaf4bbff76674c8:"На Початковий экран",sdfe23506a3b0cdc8:"1) Відкрити в Safari браузері",se740f75b95a51807:"Додайте на панель Dock для зручного доступу та ширших можливостей.",sfea652f6580ff086:"Цей сайт має функції додатку."},pe={s182ab2d6c997515f:"將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。",s1b9047d53d9f9d22:"2) 點擊列表上的分享按鈕",s37a9e8aec5713460:"詳細資訊",s5c6aad7a7e4a1437:"3) 點擊加入主畫面",s6196153c4b0c1ea0:"安裝",s922329d6f6213590:"添加到Dock欄",sa5ef80b4bb9b39f8:"簡短資訊",sa7551383d1897fcc:"2) 點選添加到Dock欄",sba52286c21552a4e:"在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。",sc79fd7641eb9a975:"隱藏安裝流程",scdaf4bbff76674c8:"將App加入主畫面",sdfe23506a3b0cdc8:"1) 在Safari上瀏覽此網頁",se740f75b95a51807:"將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。",sfea652f6580ff086:"此網站具有應用程式功能。"},be={s182ab2d6c997515f:"将其添加到主屏幕,以享受更丰富的体验并便于访问。",s1b9047d53d9f9d22:"2) 点击导航栏中的“分享”按钮",s37a9e8aec5713460:"更多",s5c6aad7a7e4a1437:"3) 点击“添加到主屏幕”",s6196153c4b0c1ea0:"安装",s922329d6f6213590:"添加到程序坞",sa5ef80b4bb9b39f8:"收起",sa7551383d1897fcc:"2) 点击“添加到程序坞”",sba52286c21552a4e:"在您的设备上安装,以享受更丰富的体验并便于访问。",sc79fd7641eb9a975:"隐藏安装步骤",scdaf4bbff76674c8:"添加到主屏幕",sdfe23506a3b0cdc8:"1) 在 Safari 浏览器中打开此页面",se740f75b95a51807:"将其添加到您的程序坞,以享受更全面的体验并便于访问。",sfea652f6580ff086:"此网站具备 App 功能特性。"},ge={s182ab2d6c997515f:"Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.",s1b9047d53d9f9d22:"2) Premi Condividi nella barra di navigazione",s37a9e8aec5713460:"Più",s5c6aad7a7e4a1437:"3) Premi Aggiungi alla schermata principale",s6196153c4b0c1ea0:"Installa",s922329d6f6213590:"Aggiungi al Dock",sa5ef80b4bb9b39f8:"Meno",sa7551383d1897fcc:"2) Premi Aggiungi al Dock",sba52286c21552a4e:"Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.",sc79fd7641eb9a975:"Nascondi istruzioni",scdaf4bbff76674c8:"Aggiungi alla schermata principale",sdfe23506a3b0cdc8:"1) Apri nel browser Safari",se740f75b95a51807:"Aggiungilo al Dock per un'esperienza più completa e un accesso facile.",sfea652f6580ff086:"Questo sito ha funzionalità di app."},he={s182ab2d6c997515f:"Přidejte jej na plochu pro rozšířené využití a snadný přístup.",s1b9047d53d9f9d22:"2) Stiskněte tlačítko Sdílet na navigačním panelu",s37a9e8aec5713460:"Vice",s5c6aad7a7e4a1437:"3) Stiskněte tlačítko Přidat na plochu",s6196153c4b0c1ea0:"Nainstalovat",s922329d6f6213590:"Přidat do Docku",sa5ef80b4bb9b39f8:"Méně",sa7551383d1897fcc:"2) Stiskněte Přidat do Docku",sba52286c21552a4e:"Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.",sc79fd7641eb9a975:"Skrýt instrukce",scdaf4bbff76674c8:"Přidat na plochu",sdfe23506a3b0cdc8:"1) Otevřete v prohlížeči Safari",se740f75b95a51807:"Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.",sfea652f6580ff086:"Tento web má funkce aplikace."},me={s182ab2d6c997515f:"Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.",s1b9047d53d9f9d22:"2) Trykk på Del-knappen i navigasjonslinjen",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Velg Legg til på Hjem-skjerm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Legg til i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Velg Legg til i Dock",sba52286c21552a4e:"Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.",sc79fd7641eb9a975:"Skjul instruksjoner",scdaf4bbff76674c8:"Legg til på Hjem-skjerm",sdfe23506a3b0cdc8:"1) Åpne i Safari",se740f75b95a51807:"Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.",sfea652f6580ff086:"Denne siden har app-funksjonalitet."},fe={s182ab2d6c997515f:"Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.",s1b9047d53d9f9d22:"2) Pressione Compartilhar na barra de endereço",s37a9e8aec5713460:"Mais",s5c6aad7a7e4a1437:"3) Pressione Adicionar à Tela de Início",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Adicionar ao Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Pressione Adicionar ao Dock",sba52286c21552a4e:"Instale no dispositivo para uma melhor experiência e mais fácil acesso.",sc79fd7641eb9a975:"Ocultar Instruções",scdaf4bbff76674c8:"Adicionar à Tela de Início",sdfe23506a3b0cdc8:"1) Abra no navegador Safari",se740f75b95a51807:"Adicione ao Dock para uma melhor experiência e mais fácil acesso.",sfea652f6580ff086:"Este site possui funcionalidade de aplicativo."},ue={s182ab2d6c997515f:"ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。",s1b9047d53d9f9d22:"2) ナビゲーションバーで共有を押す",s37a9e8aec5713460:"展開",s5c6aad7a7e4a1437:"3) 「ホーム画面に追加」を押す",s6196153c4b0c1ea0:"インストール",s922329d6f6213590:"Dockに追加",sa5ef80b4bb9b39f8:"折りたたむ",sa7551383d1897fcc:"2) 「Dockに追加」を押す",sba52286c21552a4e:"デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。",sc79fd7641eb9a975:"説明を非表示",scdaf4bbff76674c8:"ホーム画面に追加",sdfe23506a3b0cdc8:"1) Safariで開く",se740f75b95a51807:"ドックに追加して、幅広い体験と簡単なアクセスを実現してください。",sfea652f6580ff086:"このサイトはアプリ機能があります。"},ve={s182ab2d6c997515f:"Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.",s1b9047d53d9f9d22:"2) Tryck på Dela-knappen i verktygsfältet",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Välj Lägg till på hemskärmen",s6196153c4b0c1ea0:"Installera",s922329d6f6213590:"Lägg till i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Välj Lägg till i Dock",sba52286c21552a4e:"Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.",sc79fd7641eb9a975:"Göm instruktioner",scdaf4bbff76674c8:"Lägg till på hemskärmen",sdfe23506a3b0cdc8:"1) Öppna i Safari",se740f75b95a51807:"Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.",sfea652f6580ff086:"Denna webbsajt har app-funktionalitet."},we={s182ab2d6c997515f:"더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.",s1b9047d53d9f9d22:"2) 내비게이션 바에서 공유 버튼 누르기",s37a9e8aec5713460:"더보기",s5c6aad7a7e4a1437:"3) 홈 화면에 추가 버튼 누르기",s6196153c4b0c1ea0:"설치",s922329d6f6213590:"Dock에 추가",sa5ef80b4bb9b39f8:"닫기",sa7551383d1897fcc:"2) Dock에 추가 버튼 누르기",sba52286c21552a4e:"더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.",sc79fd7641eb9a975:"안내 숨기기",scdaf4bbff76674c8:"홈 화면에 추가",sdfe23506a3b0cdc8:"1) Safari 브라우저에서 열기",se740f75b95a51807:"더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.",sfea652f6580ff086:"이 사이트는 앱 기능을 가지고 있습니다."},ye={s182ab2d6c997515f:"បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",s1b9047d53d9f9d22:"2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ",s37a9e8aec5713460:"បង្ហាញបន្ថែម",s5c6aad7a7e4a1437:"3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",s6196153c4b0c1ea0:"តំឡើង",s922329d6f6213590:"បន្ថែមទៅកាន់ Dock",sa5ef80b4bb9b39f8:"បង្ហាញតិច",sa7551383d1897fcc:"2) ចុចលើ បន្ថែមទៅកាន់ Dock",sba52286c21552a4e:"តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sc79fd7641eb9a975:"បិទការណែនាំ",scdaf4bbff76674c8:"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",sdfe23506a3b0cdc8:"1) បើកនៅក្នុងកម្មវិធី Safari",se740f75b95a51807:"បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sfea652f6580ff086:"គេហទំព័រនេះមានមុខងារជាកម្មវិធី។"},xe={s182ab2d6c997515f:"Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.",s1b9047d53d9f9d22:"2) Tryk på Del-knappen i navigationslinjen",s37a9e8aec5713460:"Mere",s5c6aad7a7e4a1437:"3) Vælg Tilføj til hjemmeskærm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Tilføj til Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Vælg Tilføj til Dock",sba52286c21552a4e:"Installer den på din enhed for en bedre oplevelse og nem adgang.",sc79fd7641eb9a975:"Skjul instruktion",scdaf4bbff76674c8:"Tilføj til hjemmeskærm",sdfe23506a3b0cdc8:"1) Åbn i Safari-browseren",se740f75b95a51807:"Tilføj den til din Dock for en bedre oplevelse og nem adgang.",sfea652f6580ff086:"Denne side har app-funktionalitet."},ke=new Map([["ru",n],["tr",r],["de",d],["es",c],["nl",p],["el",b],["fr",g],["sr",h],["pl",m],["uk",f],["zh-HK",u],["zh-CN",v],["it",w],["cs",y],["no",x],["pt",k],["ja",D],["sv",j],["ko",A],["km",S],["da",_]]),{getLocale:De,setLocale:je}=(Ae={sourceLocale:"en",targetLocales:ee,loadLocale:async e=>ke.get(e)},function(e){if(L)throw Error("lit-localize can only be configured once");I=e,L=!0}(((e,t)=>B(W,e,t))),N=Y=Ae.sourceLocale,Z=new Set(Ae.targetLocales),Z.add(Ae.sourceLocale),V=Ae.loadLocale,{getLocale:Q,setLocale:J});var Ae;class Se{constructor(){this.icons=[{src:""}],this.screenshots=void 0,this.short_name="PWA",this.name="Progressive web application",this.description="Progressive web application"}}const _e=z.css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`,ze=(e,t,a)=>{const l=new CustomEvent(t,{detail:{message:a}});e.dispatchEvent(l)};class Ee{static isAppleMobile(){return!(!(["iPhone","iPad","iPod"].includes(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2)||!("serviceWorker"in navigator))}static isAppleDesktop(){const e=navigator.userAgent.toLowerCase();if(navigator.maxTouchPoints||!e.match(/macintosh/))return!1;const t=/version\/(\d{2})\./.exec(e);if(!(t&&t[1]&&parseInt(t[1])>=17))return!1;const a=!!document.createElement("audio").canPlayType('audio/wav; codecs="1"'),l=!!new OffscreenCanvas(1,1).getContext("webgl");return a&&l}static deviceFormFactor(){return window.matchMedia("(orientation: portrait)").matches?"narrow":"wide"}static isStandalone(){return!!(window.matchMedia("(display-mode: standalone)").matches||"standalone"in navigator&&!0===navigator.standalone)}static async getInstalledRelatedApps(){if("getInstalledRelatedApps"in navigator)try{return await navigator.getInstalledRelatedApps().then((e=>e))}catch(e){}return[]}static async isRelatedAppsInstalled(){return!!(await this.getInstalledRelatedApps()).length}static setStorageFlag(e,t,a=!1){try{a?localStorage.setItem(e,t.toString()):sessionStorage.setItem(e,t.toString())}catch(e){}}static getStorageFlag(e){try{return"true"===sessionStorage.getItem(e)||"true"===localStorage.getItem(e)}catch(e){return!1}}static eventInstalledSuccess(e){ze(e,"pwa-install-success-event","App install success (Chromium/Android only)")}static eventInstalledFail(e){ze(e,"pwa-install-fail-event","App install failed (Chromium/Android only)")}static eventUserChoiceResult(e,t){ze(e,"pwa-user-choice-result-event",t)}static eventInstallAvailable(e){ze(e,"pwa-install-available-event","App install available")}static eventInstallHowTo(e){ze(e,"pwa-install-how-to-event","App install instruction showed")}static eventGallery(e){ze(e,"pwa-install-gallery-event","App install gallery showed")}static normalizeManifestAssetUrls(e,t){const a=new URL(t,document.location.href);[...e.icons||[],...e.screenshots||[]].forEach((e=>{e.src=new URL(e.src,a).href}))}}const Pe=(e,t,a,l)=>z.html`${e?z.html``:""}`;var Ie=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},Le=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let $e=class extends z.LitElement{constructor(){super(...arguments),this.screenshots=[],this.theme="default",this.getScrollElements=()=>{const e=this.shadowRoot?.querySelector("#paginated_gallery");if(!e)return;const t=e.querySelector(".gallery_scroller");if(!t)return;const a=Array.from(t.querySelectorAll("img"));return 0!==a.length?{scroller:t,items:a}:void 0},this.findCurrentItem=(e,t)=>{const a=e.scrollLeft;return t.find((e=>e.offsetWidth+e.offsetLeft>=a+e.offsetWidth/2.5))||null},this.scrollToPage=e=>{const t=this.getScrollElements();if(!t)return;const{scroller:a,items:l}=t,i=this.findCurrentItem(a,l);if(!i)return;const o=l.indexOf(i)+("next"===e?1:-1);o>=0&&o{this.scrollToPage("next")},this.scrollToPrevPage=()=>{this.scrollToPage("prev")},this._init=()=>{}}static get styles(){return _e}firstUpdated(){const e=this.getScrollElements();e&&setTimeout((()=>{e.scroller.scrollTo({top:0,left:0})}),300)}connectedCallback(){super.connectedCallback(),this._init()}render(){return z.html`${Pe(this.screenshots,this.theme,this.scrollToNextPage,this.scrollToPrevPage)}`}};Ie([(0,X.property)({type:Array}),Le("design:type",Array)],$e.prototype,"screenshots",void 0),Ie([(0,X.property)(),Le("design:type",String)],$e.prototype,"theme",void 0),$e=Ie([(0,X.customElement)("pwa-gallery")],$e);const Ce=$e,Re=(e,t,a,l)=>z.html`
icon
${location.hostname}
${t?z.html`
${t}
`:""}`;var Me=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},Te=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let He=class extends z.LitElement{constructor(){super(...arguments),this.props={name:"",description:"",icon:""},this.install={handleEvent:()=>{}},this.hideDialog=()=>{},this.disableClose=!1,this._callInstall=()=>{this.install.handleEvent()},this._callHide=()=>{this.hideDialog(),this.setupAppearence()},this.bindedElement=null,this._saveBodyStyle=document.body.style.overscrollBehaviorY,this.dragMobileSheet=(e,t,a)=>{if(!e||!t||!a)return null;let l=0;const i=t.clientHeight+a.clientHeight,o=e=>e.clientY||(e.changedTouches&&e.changedTouches.length?e.changedTouches[0].clientY:0),s=e=>{window.addEventListener("mouseup",n),window.addEventListener("mousemove",r),window.addEventListener("touchend",n),window.addEventListener("touchmove",r),l=o(e)-t.getBoundingClientRect().top,document.body.style.overscrollBehaviorY="none"},n=t=>{if(document.body.style.overscrollBehaviorY=this._saveBodyStyle,!this.disableClose&&o(t)>=window.innerHeight-25)d(t,window.innerHeight+50,!0);else if(window.innerHeight-o(t)>e.clientHeight/2.5){d(t,window.innerHeight-e.clientHeight);try{Ee.eventGallery(this.getRootNode().host)}catch(t){}}else d(t,window.innerHeight-i-35)},r=t=>{const a=o(t);this.disableClose&&window.innerHeight-a<70||a<=window.innerHeight-e.clientHeight+l||(e.style.setProperty("transition","none"),e.style.setProperty("--translateY",`translateY(${a-l}px)`))},d=(a,l,d)=>{window.removeEventListener("mouseup",n),window.removeEventListener("mousemove",r),window.removeEventListener("touchend",n),window.removeEventListener("touchmove",r),window.innerWidth>=768||(!l&&o(a)>=window.innerHeight-i?e.style.setProperty("--translateY",`translateY(calc(100vh - ${i}px))`):e.style.setProperty("--translateY",`translateY(${(l||o(a))+35}px)`),e.style.setProperty("transition","transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s"),d&&(t.removeEventListener("mousedown",s),t.removeEventListener("touchstart",s),setTimeout(this._callHide,250)))};return t.addEventListener("mousedown",s),t.addEventListener("touchstart",s,{passive:!0}),d(new MouseEvent("mouseup"),window.innerHeight-i-35),{touchElement:t,listener:s}},this.setupAppearence=()=>{this.bindedElement&&(this.bindedElement.touchElement.removeEventListener("mousedown",this.bindedElement.listener),this.bindedElement.touchElement.removeEventListener("touchstart",this.bindedElement.listener)),this.bindedElement=this.dragMobileSheet(this.parentElement?.parentElement,this.parentElement?.getElementsByClassName("touch-header")[0],this.parentElement?.getElementsByClassName("body-header")[0])},this._init=()=>{this.setupAppearence(),window.addEventListener("resize",this.setupAppearence)}}firstUpdated(){this._init()}createRenderRoot(){return this}connectedCallback(){super.connectedCallback()}render(){return z.html`${Re(this.props.name,this.props.description,this.props.icon,this._callInstall)}`}};Me([(0,X.property)({type:Object}),Te("design:type",Object)],He.prototype,"props",void 0),Me([(0,X.property)({type:Object}),Te("design:type",Object)],He.prototype,"install",void 0),Me([(0,X.property)(),Te("design:type",Object)],He.prototype,"hideDialog",void 0),Me([(0,X.property)(),Te("design:type",Object)],He.prototype,"disableClose",void 0),He=Me([(0,X.customElement)("pwa-bottom-sheet")],He);const Oe=He,qe=z.css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,"Segoe UI",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:"";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,"Segoe UI",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:"";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`,Be=z.css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,"Segoe UI";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:"icon description" "welcome welcome" "how-to how-to" "gallery gallery" "button button";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"icon" "description" "welcome" "how-to" "gallery" "button";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;var Ue=o(125);const Fe=(e,t,a,l,i,o,s,n,r,d,c,p,b)=>{const g=()=>({available:r,gallery:b}),h=!i&&n.screenshots&&n.screenshots.length;return z.html`
icon
${o?"":z.html``}
${location.hostname}
${t?z.html`
${t}
`:""} ${l?"":z.html`
${a||`${I("This site has app functionality.")} ${I("Install it on your device for extensive experience and easy access.")}`}
`} ${h?z.html``:""}
${h?z.html``:""}
${h?z.html``:""}
`},Ye=(e,t,a,l,i,o,s,n,r,d,c,p,b,g,h)=>{const m=!i&&n.screenshots&&n.screenshots.length;return z.html``};var Ze=function(e,t,a,l){var i,o=arguments.length,s=o<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,a):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,l);else for(var n=e.length-1;n>=0;n--)(i=e[n])&&(s=(o<3?i(s):o>3?i(t,a,s):i(t,a))||s);return o>3&&s&&Object.defineProperty(t,a,s),s},Ve=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let We=class extends z.LitElement{constructor(){super(...arguments),this.manifestUrl="/manifest.json",this.icon="",this.name="",this.description="",this.installDescription="",this.disableDescription=!1,this.disableScreenshots=!1,this.disableScreenshotsApple=!1,this.disableScreenshotsChrome=!1,this.manualApple=!1,this.manualChrome=!1,this.disableChrome=!1,this.disableClose=!1,this.useLocalStorage=!1,this.externalPromptEvent=null,this.platforms=[],this.userChoiceResult="",this.isDialogHidden=Ee.getStorageFlag("pwa-hide-install"),this.isInstallAvailable=!1,this.isAppleMobilePlatform=!1,this.isAppleDesktopPlatform=!1,this.isUnderStandaloneMode=!1,this.isRelatedAppsInstalled=!1,this._manifest=new Se,this._howToRequested=!1,this._galleryRequested=!1,this._install={handleEvent:()=>{window.defferedPromptEvent&&(this.hideDialog(),window.defferedPromptEvent.prompt(),window.defferedPromptEvent.userChoice.then((e=>{this.userChoiceResult=e.outcome,Ee.eventUserChoiceResult(this,this.userChoiceResult)})).catch((e=>{Ee.eventInstalledFail(this)})),window.defferedPromptEvent=null)},passive:!0},this.install=()=>{this.isAppleMobilePlatform||this.isAppleDesktopPlatform?(this._howToRequested=!0,this.requestUpdate()):this._install.handleEvent()},this._hideDialog={handleEvent:()=>{this.isDialogHidden=!0,Ee.setStorageFlag("pwa-hide-install",!0,this.useLocalStorage),this.requestUpdate()},passive:!0},this._hideDialogUser=()=>{Ee.eventUserChoiceResult(this,"dismissed"),this.userChoiceResult="dismissed",this.hideDialog()},this.hideDialog=()=>{this._hideDialog.handleEvent()},this.showDialog=(e=!1)=>{this.isDialogHidden=!1,e&&(this.isInstallAvailable=!0),Ee.setStorageFlag("pwa-hide-install",!1,this.useLocalStorage),this.requestUpdate()},this.getInstalledRelatedApps=async()=>await Ee.getInstalledRelatedApps(),this._howToForApple={handleEvent:()=>{this._howToRequested=!this._howToRequested,this._howToRequested&&this._galleryRequested&&(this._galleryRequested=!1),this.requestUpdate(),this._howToRequested&&Ee.eventInstallHowTo(this)},passive:!0},this._toggleGallery={handleEvent:()=>{this._galleryRequested=!this._galleryRequested,this._howToRequested&&this._galleryRequested&&(this._howToRequested=!1),this._galleryRequested&&Ee.eventGallery(this),this.requestUpdate()},passive:!0},this._init=async()=>{if(window.defferedPromptEvent=null,this._checkInstalled(),!this.disableChrome){const e=e=>{window.defferedPromptEvent=e,e.preventDefault(),this.platforms=e.platforms,this.isRelatedAppsInstalled||this.isUnderStandaloneMode?this.isInstallAvailable=!1:(this.isInstallAvailable=!0,Ee.eventInstallAvailable(this)),"accepted"===this.userChoiceResult&&(this.isDialogHidden=!0,Ee.eventInstalledSuccess(this)),this.requestUpdate()};null!=this.externalPromptEvent?setTimeout((()=>e(this.externalPromptEvent)),300):window.addEventListener("beforeinstallprompt",e)}window.addEventListener("appinstalled",(e=>{window.defferedPromptEvent=null,this.isInstallAvailable=!1,this.requestUpdate(),Ee.eventInstalledSuccess(this)}));try{const e=await fetch(this.manifestUrl),t=await e.json();if(!e.ok||!t||!Object.keys(t))throw Error("Manifest not found");Ee.normalizeManifestAssetUrls(t,this.manifestUrl),this.icon=this.icon||t.icons?.length?t.icons[0].src:"",this.name=this.name||t.short_name||t.name||"",this.description=this.description||t.description||"",this._manifest=t}catch(e){this.icon=this.icon||this._manifest.icons?.[0].src||"",this.name=this.name||this._manifest.short_name||"",this.description=this.description||this._manifest.description||""}},this._requestUpdate=()=>{this.requestUpdate()}}static get styles(){return[qe,Be]}async _checkInstalled(){this.isUnderStandaloneMode=Ee.isStandalone(),this.isRelatedAppsInstalled=await Ee.isRelatedAppsInstalled(),this.isAppleMobilePlatform=Ee.isAppleMobile(),this.isAppleDesktopPlatform=Ee.isAppleDesktop(),this.isAppleMobilePlatform||this.isAppleDesktopPlatform?this.isUnderStandaloneMode||(this.manualApple&&this.hideDialog(),setTimeout((()=>{this.isInstallAvailable=!0,this.requestUpdate(),Ee.eventInstallAvailable(this)}),1e3)):this.manualChrome&&this.hideDialog()}connectedCallback(){(e=>{"nb"===e.slice(0,2)&&(e="no");switch(e){case"zh":case"zh-TW":e="zh-CN"}try{ke.get(e)?je(e):je(e.slice(0,2))}catch{}})(navigator.language),this._init(),Ce.finalized,Oe.finalized,super.connectedCallback()}willUpdate(e){this.externalPromptEvent&&e.has("externalPromptEvent")&&"object"==typeof this.externalPromptEvent&&this._init()}render(){return this.isAppleMobilePlatform||this.isAppleDesktopPlatform?z.html`${Ye(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsApple,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._howToForApple,this.isAppleDesktopPlatform,this._howToRequested,this._toggleGallery,this._galleryRequested)}`:z.html`${Fe(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsChrome,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._install,this._toggleGallery,this._galleryRequested)}`}};return Ze([(0,X.property)({attribute:"manifest-url"}),Ve("design:type",Object)],We.prototype,"manifestUrl",void 0),Ze([(0,X.property)(),Ve("design:type",Object)],We.prototype,"icon",void 0),Ze([(0,X.property)(),Ve("design:type",Object)],We.prototype,"name",void 0),Ze([(0,X.property)(),Ve("design:type",Object)],We.prototype,"description",void 0),Ze([(0,X.property)({attribute:"install-description"}),Ve("design:type",Object)],We.prototype,"installDescription",void 0),Ze([(0,X.property)({attribute:"disable-install-description",type:Boolean}),Ve("design:type",Object)],We.prototype,"disableDescription",void 0),Ze([(0,X.property)({attribute:"disable-screenshots",type:Boolean}),Ve("design:type",Object)],We.prototype,"disableScreenshots",void 0),Ze([(0,X.property)({attribute:"disable-screenshots-apple",type:Boolean}),Ve("design:type",Object)],We.prototype,"disableScreenshotsApple",void 0),Ze([(0,X.property)({attribute:"disable-screenshots-chrome",type:Boolean}),Ve("design:type",Object)],We.prototype,"disableScreenshotsChrome",void 0),Ze([(0,X.property)({attribute:"manual-apple",type:Boolean}),Ve("design:type",Object)],We.prototype,"manualApple",void 0),Ze([(0,X.property)({attribute:"manual-chrome",type:Boolean}),Ve("design:type",Object)],We.prototype,"manualChrome",void 0),Ze([(0,X.property)({attribute:"disable-chrome",type:Boolean}),Ve("design:type",Object)],We.prototype,"disableChrome",void 0),Ze([(0,X.property)({attribute:"disable-close",type:Boolean}),Ve("design:type",Object)],We.prototype,"disableClose",void 0),Ze([(0,X.property)({attribute:"use-local-storage",type:Boolean}),Ve("design:type",Object)],We.prototype,"useLocalStorage",void 0),Ze([(0,X.state)(),Ve("design:type",Object)],We.prototype,"externalPromptEvent",void 0),We=Ze([(e,t)=>(e.addInitializer(R),e),(0,X.customElement)("pwa-install")],We),s})())); //# sourceMappingURL=pwa-install.umd.js.map \ No newline at end of file diff --git a/dist/umd/pwa-install.umd.js.map b/dist/umd/pwa-install.umd.js.map index 97408df..81c7968 100644 --- a/dist/umd/pwa-install.umd.js.map +++ b/dist/umd/pwa-install.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"pwa-install.umd.js","mappings":"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","sources":["webpack://PWAInstallComponent/webpack/universalModuleDefinition","webpack://PWAInstallComponent/external umd \"lit\"","webpack://PWAInstallComponent/external umd \"lit/decorators.js\"","webpack://PWAInstallComponent/external umd \"lit/directives/class-map.js\"","webpack://PWAInstallComponent/webpack/bootstrap","webpack://PWAInstallComponent/webpack/runtime/define property getters","webpack://PWAInstallComponent/webpack/runtime/hasOwnProperty shorthand","webpack://PWAInstallComponent/webpack/runtime/make namespace object","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/str-tag.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/default-msg.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/init/install.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/locale-status-event.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/localized-controller.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/deferred.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/fnv1a64.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/id-generation.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/runtime-msg.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/init/runtime.js","webpack://PWAInstallComponent/./src/localization/locale-codes.ts","webpack://PWAInstallComponent/./src/localization/locales/ru.ts","webpack://PWAInstallComponent/./src/localization/locales/tr.ts","webpack://PWAInstallComponent/./src/localization/locales/de.ts","webpack://PWAInstallComponent/./src/localization/locales/es.ts","webpack://PWAInstallComponent/./src/localization/locales/nl.ts","webpack://PWAInstallComponent/./src/localization/locales/el.ts","webpack://PWAInstallComponent/./src/localization/locales/fr.ts","webpack://PWAInstallComponent/./src/localization/locales/sr.ts","webpack://PWAInstallComponent/./src/localization/locales/pl.ts","webpack://PWAInstallComponent/./src/localization/locales/uk.ts","webpack://PWAInstallComponent/./src/localization/locales/zh-HK.ts","webpack://PWAInstallComponent/./src/localization/locales/zh-CN.ts","webpack://PWAInstallComponent/./src/localization/locales/it.ts","webpack://PWAInstallComponent/./src/localization/locales/cs.ts","webpack://PWAInstallComponent/./src/localization/locales/no.ts","webpack://PWAInstallComponent/./src/localization/locales/pt.ts","webpack://PWAInstallComponent/./src/localization/locales/ja.ts","webpack://PWAInstallComponent/./src/localization/locales/sv.ts","webpack://PWAInstallComponent/./src/localization/locales/ko.ts","webpack://PWAInstallComponent/./src/localization/locales/km.ts","webpack://PWAInstallComponent/./src/localization/locales/da.ts","webpack://PWAInstallComponent/./src/localization/index.ts","webpack://PWAInstallComponent/./src/types/types.ts","webpack://PWAInstallComponent/./src/gallery/styles-gallery.scss","webpack://PWAInstallComponent/./src/utils.ts","webpack://PWAInstallComponent/./src/gallery/template-gallery.ts","webpack://PWAInstallComponent/./src/gallery/index.ts","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/template-bottom-sheet.ts","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/index.ts","webpack://PWAInstallComponent/./src/templates/chrome/styles.scss","webpack://PWAInstallComponent/./src/templates/apple/styles-apple.scss","webpack://PWAInstallComponent/./src/templates/chrome/template.ts","webpack://PWAInstallComponent/./src/templates/apple/template-apple.ts","webpack://PWAInstallComponent/./src/index.ts","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/localized-decorator.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"lit\"), require(\"lit/decorators.js\"), require(\"lit/directives/class-map.js\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"lit\", \"lit/decorators.js\", \"lit/directives/class-map.js\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PWAInstallComponent\"] = factory(require(\"lit\"), require(\"lit/decorators.js\"), require(\"lit/directives/class-map.js\"));\n\telse\n\t\troot[\"PWAInstallComponent\"] = factory(root[\"lit\"], root[\"lit/decorators.js\"], root[\"lit/directives/class-map.js\"]);\n})(globalThis, (__WEBPACK_EXTERNAL_MODULE__161__, __WEBPACK_EXTERNAL_MODULE__429__, __WEBPACK_EXTERNAL_MODULE__125__) => {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__161__;","module.exports = __WEBPACK_EXTERNAL_MODULE__429__;","module.exports = __WEBPACK_EXTERNAL_MODULE__125__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Tag that allows expressions to be used in localized non-HTML template\n * strings.\n *\n * Example: msg(str`Hello ${this.user}!`);\n *\n * The Lit html tag can also be used for this purpose, but HTML will need to be\n * escaped, and there is a small overhead for HTML parsing.\n *\n * Untagged template strings with expressions aren't supported by lit-localize\n * because they don't allow for values to be captured at runtime.\n */\nconst _str = (strings, ...values) => ({\n strTag: true,\n strings,\n values,\n});\nexport const str = _str;\nexport const isStrTagged = (val) => typeof val !== 'string' && 'strTag' in val;\n/**\n * Render the result of a `str` tagged template to a string. Note we don't need\n * to do this for Lit templates, since Lit itself handles rendering.\n */\nexport const joinStringsAndValues = (strings, values, valueOrder) => {\n let concat = strings[0];\n for (let i = 1; i < strings.length; i++) {\n concat += values[valueOrder ? valueOrder[i - 1] : i - 1];\n concat += strings[i];\n }\n return concat;\n};\n//# sourceMappingURL=str-tag.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { isStrTagged, joinStringsAndValues } from './str-tag.js';\n/**\n * Default identity msg implementation. Simply returns the input template with\n * no awareness of translations. If the template is str-tagged, returns it in\n * string form.\n */\nexport const defaultMsg = ((template) => isStrTagged(template)\n ? joinStringsAndValues(template.strings, template.values)\n : template);\n//# sourceMappingURL=default-msg.js.map","import { defaultMsg } from '../internal/default-msg.js';\n/**\n * Make a string or lit-html template localizable.\n *\n * @param template A string, a lit-html template, or a function that returns\n * either a string or lit-html template.\n * @param options Optional configuration object with the following properties:\n * - id: Optional project-wide unique identifier for this template. If\n * omitted, an id will be automatically generated from the template strings.\n * - desc: Optional description\n */\nexport let msg = defaultMsg;\nlet installed = false;\n/**\n * Internal only. Do not use this function.\n *\n * Installs an implementation of the msg function to replace the default\n * identity function. Throws if called more than once.\n *\n * @internal\n */\nexport function _installMsgImplementation(impl) {\n if (installed) {\n throw new Error('lit-localize can only be configured once');\n }\n msg = impl;\n installed = true;\n}\n//# sourceMappingURL=install.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Name of the event dispatched to `window` whenever a locale change starts,\n * finishes successfully, or fails. Only relevant to runtime mode.\n *\n * The `detail` of this event is an object with a `status` string that can be:\n * \"loading\", \"ready\", or \"error\", along with the relevant locale code, and\n * error message if applicable.\n *\n * You can listen for this event to know when your application should be\n * re-rendered following a locale change. See also the Localized mixin, which\n * automatically re-renders LitElement classes using this event.\n */\nexport const LOCALE_STATUS_EVENT = 'lit-localize-status';\n//# sourceMappingURL=locale-status-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { LOCALE_STATUS_EVENT } from './locale-status-event.js';\nclass LocalizeController {\n constructor(host) {\n this.__litLocalizeEventHandler = (event) => {\n if (event.detail.status === 'ready') {\n this.host.requestUpdate();\n }\n };\n this.host = host;\n }\n hostConnected() {\n window.addEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n hostDisconnected() {\n window.removeEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n}\n/**\n * Re-render the given LitElement whenever a new active locale has loaded.\n *\n * See also {@link localized} for the same functionality as a decorator.\n *\n * When using lit-localize in transform mode, calls to this function are\n * replaced with undefined.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {msg, updateWhenLocaleChanges} from '@lit/localize';\n *\n * class MyElement extends LitElement {\n * constructor() {\n * super();\n * updateWhenLocaleChanges(this);\n * }\n *\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nconst _updateWhenLocaleChanges = (host) => host.addController(new LocalizeController(host));\nexport const updateWhenLocaleChanges = _updateWhenLocaleChanges;\n//# sourceMappingURL=localized-controller.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport class Deferred {\n constructor() {\n this.settled = false;\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n resolve(value) {\n this.settled = true;\n this._resolve(value);\n }\n reject(error) {\n this.settled = true;\n this._reject(error);\n }\n}\n//# sourceMappingURL=deferred.js.map","/**\n * @license\n * Copyright 2014 Travis Webb\n * SPDX-License-Identifier: MIT\n */\n// This module is derived from the file:\n// https://github.com/tjwebb/fnv-plus/blob/1e2ce68a07cb7dd4c3c85364f3d8d96c95919474/index.js#L309\n//\n// Changes:\n// - Only the _hash64_1a_fast function is included.\n// - Removed loop unrolling.\n// - Converted to TypeScript ES module.\n// - var -> let/const\n//\n// TODO(aomarks) Upstream improvements to https://github.com/tjwebb/fnv-plus/.\nconst hl = [];\nfor (let i = 0; i < 256; i++) {\n hl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n}\n/**\n * Perform a FNV-1A 64-bit hash of the given string (as UTF-16 code units), and\n * return a hexadecimal digest (left zero padded to 16 characters).\n *\n * @see {@link http://tools.ietf.org/html/draft-eastlake-fnv-06}\n */\nexport function fnv1a64(str) {\n let t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n for (let i = 0; i < str.length; i++) {\n v0 ^= str.charCodeAt(i);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = (t3 + (t2 >>> 16)) & 65535;\n v2 = t2 & 65535;\n }\n return (hl[v3 >> 8] +\n hl[v3 & 255] +\n hl[v2 >> 8] +\n hl[v2 & 255] +\n hl[v1 >> 8] +\n hl[v1 & 255] +\n hl[v0 >> 8] +\n hl[v0 & 255]);\n}\n//# sourceMappingURL=fnv1a64.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { fnv1a64 } from './fnv1a64.js';\n/**\n * Delimiter used between each template string component before hashing. Used to\n * prevent e.g. \"foobar\" and \"foo${baz}bar\" from sharing a hash.\n *\n * This is the \"record separator\" ASCII character.\n */\nexport const HASH_DELIMITER = '\\x1e';\n/**\n * Id prefix on html-tagged templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst HTML_PREFIX = 'h';\n/**\n * Id prefix on plain string templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst STRING_PREFIX = 's';\n/**\n * Generate a unique ID for a lit-localize message.\n *\n * Example:\n * Template: html`Hello ${who}!`\n * Params: [\"Hello \", \"!\"], true\n * Output: h82ccc38d4d46eaa9\n *\n * The ID is constructed as:\n *\n * [0] Kind of template: [h]tml or [s]tring.\n * [1,16] 64-bit FNV-1a hash hex digest of the template strings, as UTF-16\n * code points, delineated by an ASCII \"record separator\" character.\n *\n * We choose FNV-1a because:\n *\n * 1. It's pretty fast (e.g. much faster than SHA-1).\n * 2. It's pretty small (0.25 KiB minified + brotli).\n * 3. We don't require cryptographic security, and 64 bits should give\n * sufficient collision resistance for any one application. Worst\n * case, we will always detect collisions during analysis.\n * 4. We can't use Web Crypto API (e.g. SHA-1), because it's asynchronous.\n * 5. It's a well known non-cryptographic hash with implementations in many\n * languages.\n * 6. There was an existing JavaScript implementation that doesn't require\n * BigInt, for IE11 compatibility.\n */\nexport function generateMsgId(strings, isHtmlTagged) {\n return ((isHtmlTagged ? HTML_PREFIX : STRING_PREFIX) +\n fnv1a64(typeof strings === 'string' ? strings : strings.join(HASH_DELIMITER)));\n}\n//# sourceMappingURL=id-generation.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { defaultMsg } from './default-msg.js';\nimport { joinStringsAndValues } from './str-tag.js';\nimport { generateMsgId } from './id-generation.js';\nconst expressionOrders = new WeakMap();\nconst hashCache = new Map();\nexport function runtimeMsg(templates, template, options) {\n if (templates) {\n const id = options?.id ?? generateId(template);\n const localized = templates[id];\n if (localized) {\n if (typeof localized === 'string') {\n // E.g. \"Hello World!\"\n return localized;\n }\n else if ('strTag' in localized) {\n // E.g. str`Hello ${name}!`\n //\n // Localized templates have ${number} in place of real template\n // expressions. They can't have real template values, because the\n // variable scope would be wrong. The number tells us the index of the\n // source value to substitute in its place, because expressions can be\n // moved to a different position during translation.\n return joinStringsAndValues(localized.strings, \n // Cast `template` because its type wasn't automatically narrowed (but\n // we know it must be the same type as `localized`).\n template.values, localized.values);\n }\n else {\n // E.g. html`Hello ${name}!`\n //\n // We have to keep our own mapping of expression ordering because we do\n // an in-place update of `values`, and otherwise we'd lose ordering for\n // subsequent renders.\n let order = expressionOrders.get(localized);\n if (order === undefined) {\n order = localized.values;\n expressionOrders.set(localized, order);\n }\n return {\n ...localized,\n values: order.map((i) => template.values[i]),\n };\n }\n }\n }\n return defaultMsg(template);\n}\nfunction generateId(template) {\n const strings = typeof template === 'string' ? template : template.strings;\n let id = hashCache.get(strings);\n if (id === undefined) {\n id = generateMsgId(strings, typeof template !== 'string' && !('strTag' in template));\n hashCache.set(strings, id);\n }\n return id;\n}\n//# sourceMappingURL=runtime-msg.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { Deferred } from '../internal/deferred.js';\nimport { LOCALE_STATUS_EVENT } from '../internal/locale-status-event.js';\nimport { runtimeMsg } from '../internal/runtime-msg.js';\nimport { _installMsgImplementation } from './install.js';\n/**\n * Dispatch a \"lit-localize-status\" event to `window` with the given detail.\n */\nfunction dispatchStatusEvent(detail) {\n window.dispatchEvent(new CustomEvent(LOCALE_STATUS_EVENT, { detail }));\n}\nlet activeLocale = '';\nlet loadingLocale;\nlet sourceLocale;\nlet validLocales;\nlet loadLocale;\nlet templates;\nlet loading = new Deferred();\n// The loading promise must be initially resolved, because that's what we should\n// return if the user immediately calls setLocale(sourceLocale).\nloading.resolve();\nlet requestId = 0;\n/**\n * Set configuration parameters for lit-localize when in runtime mode. Returns\n * an object with functions:\n *\n * - `getLocale`: Return the active locale code.\n * - `setLocale`: Set the active locale code.\n *\n * Throws if called more than once.\n */\nexport const configureLocalization = (config) => {\n _installMsgImplementation(((template, options) => runtimeMsg(templates, template, options)));\n activeLocale = sourceLocale = config.sourceLocale;\n validLocales = new Set(config.targetLocales);\n validLocales.add(config.sourceLocale);\n loadLocale = config.loadLocale;\n return { getLocale, setLocale };\n};\n/**\n * Return the active locale code.\n */\nconst getLocale = () => {\n return activeLocale;\n};\n/**\n * Set the active locale code, and begin loading templates for that locale using\n * the `loadLocale` function that was passed to `configureLocalization`. Returns\n * a promise that resolves when the next locale is ready to be rendered.\n *\n * Note that if a second call to `setLocale` is made while the first requested\n * locale is still loading, then the second call takes precedence, and the\n * promise returned from the first call will resolve when second locale is\n * ready. If you need to know whether a particular locale was loaded, check\n * `getLocale` after the promise resolves.\n *\n * Throws if the given locale is not contained by the configured `sourceLocale`\n * or `targetLocales`.\n */\nconst setLocale = (newLocale) => {\n if (newLocale === (loadingLocale ?? activeLocale)) {\n return loading.promise;\n }\n if (!validLocales || !loadLocale) {\n throw new Error('Internal error');\n }\n if (!validLocales.has(newLocale)) {\n throw new Error('Invalid locale code');\n }\n requestId++;\n const thisRequestId = requestId;\n loadingLocale = newLocale;\n if (loading.settled) {\n loading = new Deferred();\n }\n dispatchStatusEvent({ status: 'loading', loadingLocale: newLocale });\n const localePromise = newLocale === sourceLocale\n ? // We could switch to the source locale synchronously, but we prefer to\n // queue it on a microtask so that switching locales is consistently\n // asynchronous.\n Promise.resolve({ templates: undefined })\n : loadLocale(newLocale);\n localePromise.then((mod) => {\n if (requestId === thisRequestId) {\n activeLocale = newLocale;\n loadingLocale = undefined;\n templates = mod.templates;\n dispatchStatusEvent({ status: 'ready', readyLocale: newLocale });\n loading.resolve();\n }\n // Else another locale was requested in the meantime. Don't resolve or\n // reject, because the newer load call is going to use the same promise.\n // Note the user can call getLocale() after the promise resolves if they\n // need to check if the locale is still the one they expected to load.\n }, (err) => {\n if (requestId === thisRequestId) {\n dispatchStatusEvent({\n status: 'error',\n errorLocale: newLocale,\n errorMessage: err.toString(),\n });\n loading.reject(err);\n }\n });\n return loading.promise;\n};\n//# sourceMappingURL=runtime.js.map","// Do not modify this file by hand!\n// Re-generate this file by running lit-localize.\n\n/**\n * The locale code that templates in this source code are written in.\n */\nexport const sourceLocale = `en`;\n\n/**\n * The other locale codes that this application is localized into. Sorted\n * lexicographically.\n */\nexport const targetLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `es`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n\n/**\n * All valid project locale codes. Sorted lexicographically.\n */\nexport const allLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `en`,\n `es`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.`,\n's1b9047d53d9f9d22': `2) Нажать \"Поделиться\"`,\n's37a9e8aec5713460': `Подробнее`,\n's5c6aad7a7e4a1437': `3) Нажать \"На экран «Домой»\"`,\n's6196153c4b0c1ea0': `Установить`,\n's922329d6f6213590': `Добавить в Dock`,\n'sa5ef80b4bb9b39f8': `Свернуть`,\n'sa7551383d1897fcc': `2) Нажмите \"Добавить в Dock\"`,\n'sba52286c21552a4e': `Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.`,\n'sc79fd7641eb9a975': `Спрятать Инструкцию`,\n'scdaf4bbff76674c8': `На экран «Домой»`,\n'sdfe23506a3b0cdc8': `1) Открыть в Safari браузере`,\n'se740f75b95a51807': `Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.`,\n'sfea652f6580ff086': `Этот веб-сайт имеет функционал приложения.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.`,\n's1b9047d53d9f9d22': `2) Gezinme çubuğunda Paylaş'a basın`,\n's37a9e8aec5713460': `Daha Fazla`,\n's5c6aad7a7e4a1437': `3) Ana Ekrana Ekle'ye basın`,\n's6196153c4b0c1ea0': `Yükle`,\n's922329d6f6213590': `Dock’a Ekle`,\n'sa5ef80b4bb9b39f8': `Küçült`,\n'sa7551383d1897fcc': `2) Dock’a ekleye basın`,\n'sba52286c21552a4e': `Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.`,\n'sc79fd7641eb9a975': `Talimatları gizle`,\n'scdaf4bbff76674c8': `Ana Ekrana Ekle`,\n'sdfe23506a3b0cdc8': `1) Safari tarayıcısında açın`,\n'se740f75b95a51807': `Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.`,\n'sfea652f6580ff086': `Bu site uygulama işlevselliğine sahiptir.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n's1b9047d53d9f9d22': `2) Drücken Sie auf Teilen in der Navigationsleiste`,\n's37a9e8aec5713460': `Mehr`,\n's5c6aad7a7e4a1437': `3) Drücken Sie Hinzufügen zum Startbildschirm`,\n's6196153c4b0c1ea0': `Installieren`,\n's922329d6f6213590': `Zum Dock hinzufügen`,\n'sa5ef80b4bb9b39f8': `Weniger`,\n'sa7551383d1897fcc': `2) Drücken Sie auf Zum Dock hinzufügen`,\n'sba52286c21552a4e': `Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.`,\n'sc79fd7641eb9a975': `Anleitung ausblenden`,\n'scdaf4bbff76674c8': `Hinzufügen zum Startbildschirm`,\n'sdfe23506a3b0cdc8': `1) In Safari-Browser öffnen`,\n'se740f75b95a51807': `Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n'sfea652f6580ff086': `Diese Website verfügt über App-Funktionalität.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.`,\n's1b9047d53d9f9d22': `2) Presionar Compartir en la barra de direcciones`,\n's37a9e8aec5713460': `Más`,\n's5c6aad7a7e4a1437': `3) Presionar Añadir a pantalla de inicio`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Añadir al Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Presionar Añadir al Dock`,\n'sba52286c21552a4e': `Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.`,\n'sc79fd7641eb9a975': `Esconder instrucciones`,\n'scdaf4bbff76674c8': `Añadir a pantalla de inicio`,\n'sdfe23506a3b0cdc8': `1) Abrir en el navegador web Safari`,\n'se740f75b95a51807': `Añádelo a tu Dock para una experiencia amplia y acceso fácil.`,\n'sfea652f6580ff086': `Este sitio tiene funcionalidad de aplicación.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.`,\n's1b9047d53d9f9d22': `2) Druk op delen in de navigatiebalk`,\n's37a9e8aec5713460': `Meer`,\n's5c6aad7a7e4a1437': `3) Druk op Toevoegen aan het startscherm`,\n's6196153c4b0c1ea0': `Installeren`,\n's922329d6f6213590': `Toevoegen aan Dock`,\n'sa5ef80b4bb9b39f8': `Minder`,\n'sa7551383d1897fcc': `2) Druk op Toevoegen aan Dock`,\n'sba52286c21552a4e': `Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.`,\n'sc79fd7641eb9a975': `Instructie verbergen`,\n'scdaf4bbff76674c8': `Toevoegen aan het startscherm`,\n'sdfe23506a3b0cdc8': `1) Open in Safari-browser`,\n'se740f75b95a51807': `Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.`,\n'sfea652f6580ff086': `Deze site heeft app-functionaliteit.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n's1b9047d53d9f9d22': `2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης`,\n's37a9e8aec5713460': `Περισσότερα`,\n's5c6aad7a7e4a1437': `3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας`,\n's6196153c4b0c1ea0': `Εγκατάσταση`,\n's922329d6f6213590': `Προσθήκη στην Πρόσβαση`,\n'sa5ef80b4bb9b39f8': `Λιγότερα`,\n'sa7551383d1897fcc': `2) Πατήστε Προσθήκη στην Πρόσβαση`,\n'sba52286c21552a4e': `Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sc79fd7641eb9a975': `Απόκρυψη Οδηγιών`,\n'scdaf4bbff76674c8': `Προσθήκη στην Οθόνη Αφετηρίας`,\n'sdfe23506a3b0cdc8': `1) Ανοίξτε τον περιηγητή Safari`,\n'se740f75b95a51807': `Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sfea652f6580ff086': `Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.`,\n's1b9047d53d9f9d22': `2) Appuyez sur Partager dans la barre de navigation`,\n's37a9e8aec5713460': `Plus`,\n's5c6aad7a7e4a1437': `3) Appuyez sur Ajouter à l'écran d'accueil`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Ajouter au Dock`,\n'sa5ef80b4bb9b39f8': `Moins`,\n'sa7551383d1897fcc': `2) Appuyez sur Ajouter au Dock`,\n'sba52286c21552a4e': `Installez-le sur votre appareil pour une expérience complète et un accès facile.`,\n'sc79fd7641eb9a975': `Masquer les instructions`,\n'scdaf4bbff76674c8': `Ajouter à l'écran d'accueil`,\n'sdfe23506a3b0cdc8': `1) Ouvrir dans le navigateur Safari`,\n'se740f75b95a51807': `Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.`,\n'sfea652f6580ff086': `Ce site possède des fonctionnalités d'application.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Додајте га на Home Screen за широке могућности и лак приступ.`,\n's1b9047d53d9f9d22': `2) Притисните Share у навигационој траци`,\n's37a9e8aec5713460': `Више`,\n's5c6aad7a7e4a1437': `3) Притисните Add to Home Screen`,\n's6196153c4b0c1ea0': `Инсталирај`,\n'sa5ef80b4bb9b39f8': `Мање`,\n'sa7551383d1897fcc': `3) Притисните Add to Dock`,\n'sba52286c21552a4e': `Инсталирајте га на вашем уређају за широке могућности и лак приступ.`,\n'sc79fd7641eb9a975': `Сакриј упутство`,\n'sdfe23506a3b0cdc8': `1) Отворите у Safari прегледачу`,\n'se740f75b95a51807': `Додајте га у вашу Dock за широке могућности и лак приступ.`,\n'sfea652f6580ff086': `Овај сајт има функционалност апликације.`,\n's922329d6f6213590': `Add to Dock`,\n'scdaf4bbff76674c8': `Add to Home Screen`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n's1b9047d53d9f9d22': `2) Wybierz \"Udostępnij\"`,\n's37a9e8aec5713460': `Więcej`,\n's5c6aad7a7e4a1437': `3) Wybierz \"Dodaj do Ekranu Głównego\"`,\n's6196153c4b0c1ea0': `Zainstaluj`,\n's922329d6f6213590': `Dodaj do Docka`,\n'sa5ef80b4bb9b39f8': `Mniej`,\n'sa7551383d1897fcc': `2) Wybierz \"Dodaj do Docka\"`,\n'sba52286c21552a4e': `Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sc79fd7641eb9a975': `Ukryj instrukcję`,\n'scdaf4bbff76674c8': `Dodaj do Ekranu Głównego`,\n'sdfe23506a3b0cdc8': `1) Otwórz przeglądarkę Safari`,\n'se740f75b95a51807': `Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sfea652f6580ff086': `Ta strona posiada funkcje aplikacji.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Додайте на Домашній екран для зручного доступу та ширших можливостей.`,\n's1b9047d53d9f9d22': `2) Натиснути «Поділитися»`,\n's37a9e8aec5713460': `Детальніше`,\n's5c6aad7a7e4a1437': `3) Натиснути «На Початковий екран»`,\n's6196153c4b0c1ea0': `Встановити`,\n's922329d6f6213590': `Додати на Dock`,\n'sa5ef80b4bb9b39f8': `Згорнути`,\n'sa7551383d1897fcc': `2) Натиснути «Додати на Dock»`,\n'sba52286c21552a4e': `Встановіть на ваш пристрій для зручного доступу та ширших можливостей.`,\n'sc79fd7641eb9a975': `Сховати Інструкцію`,\n'scdaf4bbff76674c8': `На Початковий экран`,\n'sdfe23506a3b0cdc8': `1) Відкрити в Safari браузері`,\n'se740f75b95a51807': `Додайте на панель Dock для зручного доступу та ширших можливостей.`,\n'sfea652f6580ff086': `Цей сайт має функції додатку.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。`,\n's1b9047d53d9f9d22': `2) 點擊列表上的分享按鈕`,\n's37a9e8aec5713460': `詳細資訊`,\n's5c6aad7a7e4a1437': `3) 點擊加入主畫面`,\n's6196153c4b0c1ea0': `安裝`,\n's922329d6f6213590': `添加到Dock欄`,\n'sa5ef80b4bb9b39f8': `簡短資訊`,\n'sa7551383d1897fcc': `2) 點選添加到Dock欄`,\n'sba52286c21552a4e': `在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。`,\n'sc79fd7641eb9a975': `隱藏安裝流程`,\n'scdaf4bbff76674c8': `將App加入主畫面`,\n'sdfe23506a3b0cdc8': `1) 在Safari上瀏覽此網頁`,\n'se740f75b95a51807': `將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。`,\n'sfea652f6580ff086': `此網站具有應用程式功能。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `将其添加到主屏幕,以享受更丰富的体验并便于访问。`,\n's1b9047d53d9f9d22': `2) 点击导航栏中的“分享”按钮`,\n's37a9e8aec5713460': `更多`,\n's5c6aad7a7e4a1437': `3) 点击“添加到主屏幕”`,\n's6196153c4b0c1ea0': `安装`,\n's922329d6f6213590': `添加到程序坞`,\n'sa5ef80b4bb9b39f8': `收起`,\n'sa7551383d1897fcc': `2) 点击“添加到程序坞”`,\n'sba52286c21552a4e': `在您的设备上安装,以享受更丰富的体验并便于访问。`,\n'sc79fd7641eb9a975': `隐藏安装步骤`,\n'scdaf4bbff76674c8': `添加到主屏幕`,\n'sdfe23506a3b0cdc8': `1) 在 Safari 浏览器中打开此页面`,\n'se740f75b95a51807': `将其添加到您的程序坞,以享受更全面的体验并便于访问。`,\n'sfea652f6580ff086': `此网站具备 App 功能特性。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.`,\n's1b9047d53d9f9d22': `2) Premi Condividi nella barra di navigazione`,\n's37a9e8aec5713460': `Più`,\n's5c6aad7a7e4a1437': `3) Premi Aggiungi alla schermata principale`,\n's6196153c4b0c1ea0': `Installa`,\n's922329d6f6213590': `Aggiungi al Dock`,\n'sa5ef80b4bb9b39f8': `Meno`,\n'sa7551383d1897fcc': `2) Premi Aggiungi al Dock`,\n'sba52286c21552a4e': `Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.`,\n'sc79fd7641eb9a975': `Nascondi istruzioni`,\n'scdaf4bbff76674c8': `Aggiungi alla schermata principale`,\n'sdfe23506a3b0cdc8': `1) Apri nel browser Safari`,\n'se740f75b95a51807': `Aggiungilo al Dock per un'esperienza più completa e un accesso facile.`,\n'sfea652f6580ff086': `Questo sito ha funzionalità di app.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Přidejte jej na plochu pro rozšířené využití a snadný přístup.`,\n's1b9047d53d9f9d22': `2) Stiskněte tlačítko Sdílet na navigačním panelu`,\n's37a9e8aec5713460': `Vice`,\n's5c6aad7a7e4a1437': `3) Stiskněte tlačítko Přidat na plochu`,\n's6196153c4b0c1ea0': `Nainstalovat`,\n's922329d6f6213590': `Přidat do Docku`,\n'sa5ef80b4bb9b39f8': `Méně`,\n'sa7551383d1897fcc': `2) Stiskněte Přidat do Docku`,\n'sba52286c21552a4e': `Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.`,\n'sc79fd7641eb9a975': `Skrýt instrukce`,\n'scdaf4bbff76674c8': `Přidat na plochu`,\n'sdfe23506a3b0cdc8': `1) Otevřete v prohlížeči Safari`,\n'se740f75b95a51807': `Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.`,\n'sfea652f6580ff086': `Tento web má funkce aplikace.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.`,\n's1b9047d53d9f9d22': `2) Trykk på Del-knappen i navigasjonslinjen`,\n's37a9e8aec5713460': `Mer`,\n's5c6aad7a7e4a1437': `3) Velg Legg til på Hjem-skjerm`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Legg til i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Velg Legg til i Dock`,\n'sba52286c21552a4e': `Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sc79fd7641eb9a975': `Skjul instruksjoner`,\n'scdaf4bbff76674c8': `Legg til på Hjem-skjerm`,\n'sdfe23506a3b0cdc8': `1) Åpne i Safari`,\n'se740f75b95a51807': `Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sfea652f6580ff086': `Denne siden har app-funksjonalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.`,\n's1b9047d53d9f9d22': `2) Pressione Compartilhar na barra de endereço`,\n's37a9e8aec5713460': `Mais`,\n's5c6aad7a7e4a1437': `3) Pressione Adicionar à Tela de Início`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Adicionar ao Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Pressione Adicionar ao Dock`,\n'sba52286c21552a4e': `Instale no dispositivo para uma melhor experiência e mais fácil acesso.`,\n'sc79fd7641eb9a975': `Ocultar Instruções`,\n'scdaf4bbff76674c8': `Adicionar à Tela de Início`,\n'sdfe23506a3b0cdc8': `1) Abra no navegador Safari`,\n'se740f75b95a51807': `Adicione ao Dock para uma melhor experiência e mais fácil acesso.`,\n'sfea652f6580ff086': `Este site possui funcionalidade de aplicativo.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。`,\n's1b9047d53d9f9d22': `2) ナビゲーションバーで共有を押す`,\n's37a9e8aec5713460': `展開`,\n's5c6aad7a7e4a1437': `3) 「ホーム画面に追加」を押す`,\n's6196153c4b0c1ea0': `インストール`,\n's922329d6f6213590': `Dockに追加`,\n'sa5ef80b4bb9b39f8': `折りたたむ`,\n'sa7551383d1897fcc': `2) 「Dockに追加」を押す`,\n'sba52286c21552a4e': `デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。`,\n'sc79fd7641eb9a975': `説明を非表示`,\n'scdaf4bbff76674c8': `ホーム画面に追加`,\n'sdfe23506a3b0cdc8': `1) Safariで開く`,\n'se740f75b95a51807': `ドックに追加して、幅広い体験と簡単なアクセスを実現してください。`,\n'sfea652f6580ff086': `このサイトはアプリ機能があります。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.`,\n's1b9047d53d9f9d22': `2) Tryck på Dela-knappen i verktygsfältet`,\n's37a9e8aec5713460': `Mer`,\n's5c6aad7a7e4a1437': `3) Välj Lägg till på hemskärmen`,\n's6196153c4b0c1ea0': `Installera`,\n's922329d6f6213590': `Lägg till i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Välj Lägg till i Dock`,\n'sba52286c21552a4e': `Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sc79fd7641eb9a975': `Göm instruktioner`,\n'scdaf4bbff76674c8': `Lägg till på hemskärmen`,\n'sdfe23506a3b0cdc8': `1) Öppna i Safari`,\n'se740f75b95a51807': `Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sfea652f6580ff086': `Denna webbsajt har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.`,\n's1b9047d53d9f9d22': `2) 내비게이션 바에서 공유 버튼 누르기`,\n's37a9e8aec5713460': `더보기`,\n's5c6aad7a7e4a1437': `3) 홈 화면에 추가 버튼 누르기`,\n's6196153c4b0c1ea0': `설치`,\n's922329d6f6213590': `Dock에 추가`,\n'sa5ef80b4bb9b39f8': `닫기`,\n'sa7551383d1897fcc': `2) Dock에 추가 버튼 누르기`,\n'sba52286c21552a4e': `더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.`,\n'sc79fd7641eb9a975': `안내 숨기기`,\n'scdaf4bbff76674c8': `홈 화면에 추가`,\n'sdfe23506a3b0cdc8': `1) Safari 브라우저에서 열기`,\n'se740f75b95a51807': `더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.`,\n'sfea652f6580ff086': `이 사이트는 앱 기능을 가지고 있습니다.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n's1b9047d53d9f9d22': `2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ`,\n's37a9e8aec5713460': `បង្ហាញបន្ថែម`,\n's5c6aad7a7e4a1437': `3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n's6196153c4b0c1ea0': `តំឡើង`,\n's922329d6f6213590': `បន្ថែមទៅកាន់ Dock`,\n'sa5ef80b4bb9b39f8': `បង្ហាញតិច`,\n'sa7551383d1897fcc': `2) ចុចលើ បន្ថែមទៅកាន់ Dock`,\n'sba52286c21552a4e': `តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sc79fd7641eb9a975': `បិទការណែនាំ`,\n'scdaf4bbff76674c8': `បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n'sdfe23506a3b0cdc8': `1) បើកនៅក្នុងកម្មវិធី Safari`,\n'se740f75b95a51807': `បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sfea652f6580ff086': `គេហទំព័រនេះមានមុខងារជាកម្មវិធី។`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.`,\n's1b9047d53d9f9d22': `2) Tryk på Del-knappen i navigationslinjen`,\n's37a9e8aec5713460': `Mere`,\n's5c6aad7a7e4a1437': `3) Vælg Tilføj til hjemmeskærm`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Tilføj til Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Vælg Tilføj til Dock`,\n'sba52286c21552a4e': `Installer den på din enhed for en bedre oplevelse og nem adgang.`,\n'sc79fd7641eb9a975': `Skjul instruktion`,\n'scdaf4bbff76674c8': `Tilføj til hjemmeskærm`,\n'sdfe23506a3b0cdc8': `1) Åbn i Safari-browseren`,\n'se740f75b95a51807': `Tilføj den til din Dock for en bedre oplevelse og nem adgang.`,\n'sfea652f6580ff086': `Denne side har app-funktionalitet.`,\n };\n ","import { configureLocalization } from '@lit/localize';\r\nimport {\r\n sourceLocale,\r\n targetLocales,\r\n} from './locale-codes';\r\n\r\nimport * as ru from './locales/ru';\r\nimport * as tr from './locales/tr';\r\nimport * as de from \"./locales/de\";\r\nimport * as es from \"./locales/es\";\r\nimport * as nl from \"./locales/nl\";\r\nimport * as el from \"./locales/el\";\r\nimport * as fr from \"./locales/fr\";\r\nimport * as sr from \"./locales/sr\";\r\nimport * as pl from \"./locales/pl\";\r\nimport * as uk from \"./locales/uk\";\r\nimport * as zhHK from \"./locales/zh-HK\";\r\nimport * as zhCN from \"./locales/zh-CN\";\r\nimport * as it from \"./locales/it\";\r\nimport * as cs from \"./locales/cs\";\r\nimport * as no from \"./locales/no\";\r\nimport * as pt from \"./locales/pt\";\r\nimport * as ja from \"./locales/ja\";\r\nimport * as sv from \"./locales/sv\";\r\nimport * as ko from \"./locales/ko\";\r\nimport * as km from \"./locales/km\";\r\nimport * as da from \"./locales/da\";\r\n\r\nconst localizedTemplates = new Map([\r\n ['ru', ru],\r\n ['tr', tr],\r\n ['de', de],\r\n ['es', es],\r\n ['nl', nl],\r\n ['el', el],\r\n ['fr', fr],\r\n ['sr', sr],\r\n ['pl', pl],\r\n ['uk', uk],\r\n ['zh-HK', zhHK],\r\n ['zh-CN', zhCN],\r\n ['it', it],\r\n ['cs', cs],\r\n ['no', no], // + nb\r\n ['pt', pt],\r\n ['ja', ja],\r\n ['sv', sv],\r\n ['ko', ko],\r\n ['km', km],\r\n ['da', da],\r\n])\r\n\r\nexport const { getLocale, setLocale } = configureLocalization({\r\n sourceLocale,\r\n targetLocales,\r\n // @ts-ignore\r\n loadLocale: async (lang: string) => localizedTemplates.get(lang)\r\n});\r\n\r\nexport const changeLocale = (lang: string) => {\r\n // Norwegian Bokmål is same as Norwegian\r\n switch (lang.slice(0, 2)) {\r\n case 'nb':\r\n lang = 'no';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // Fallback to simplified Chinese\r\n switch (lang) {\r\n case 'zh':\r\n case 'zh-TW':\r\n lang = 'zh-CN';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n try {\r\n if (localizedTemplates.get(lang))\r\n setLocale(lang);\r\n else\r\n setLocale(lang.slice(0, 2));\r\n }\r\n catch {\r\n console.warn(`pwa-install: translation error - unsupported locale: ${lang}`);\r\n }\r\n};\r\n","import { ImageResource } from 'web-app-manifest';\r\n\r\nexport interface IRelatedApp {\r\n id: string,\r\n platform: string,\r\n url: string\r\n}\r\n\r\nexport interface IWindow extends Window {\r\n defferedPromptEvent: BeforeInstallPromptEvent | null;\r\n}\r\n\r\ntype Booleanish = 'true' | 'false';\r\n\r\nexport interface PWAInstallAttributes {\r\n ['manual-apple']?: Booleanish;\r\n ['manual-chrome']?: Booleanish;\r\n ['disable-chrome']?: Booleanish;\r\n ['install-description']?: string;\r\n ['disable-install-description']?: Booleanish;\r\n ['manifest-url']?: string;\r\n name?: string;\r\n description?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ManifestScreenshot extends ImageResource {\r\n label?: string;\r\n platform?: string;\r\n form_factor?: \"wide\" | \"narrow\";\r\n}\r\n\r\nexport class Manifest {\r\n constructor() {\r\n this.icons = [{ src: '' }];\r\n this.screenshots = undefined;\r\n this.short_name = 'PWA';\r\n this.name = 'Progressive web application';\r\n this.description = 'Progressive web application';\r\n }\r\n short_name: string;\r\n icons: ImageResource[];\r\n screenshots?: ManifestScreenshot[];\r\n name: string;\r\n description: string;\r\n}\r\n","import {css} from 'lit'; export default css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`;\n ","import { WebAppManifest } from 'web-app-manifest';\r\nimport { IRelatedApp } from './types/types';\r\n\r\nconst _eventDispatcher = (_element: Element, name: string, message: string) => {\r\n const event = new CustomEvent(name, {\r\n detail: {\r\n message\r\n }\r\n });\r\n _element.dispatchEvent(event);\r\n}\r\nexport default class Utils {\r\n static isAppleMobile(): boolean {\r\n\t\tif (\r\n (\r\n ['iPhone', 'iPad', 'iPod'].includes(navigator.platform) ||\r\n (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2)\r\n )\r\n && ('serviceWorker' in navigator)\r\n )\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static isAppleDesktop(): boolean {\r\n // check if it's a mac\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n if (navigator.maxTouchPoints || !userAgent.match(/macintosh/))\r\n return false;\r\n // check safari version >= 17\r\n const version = /version\\/(\\d{2})\\./.exec(userAgent)\r\n if (!version || !version[1] || !(parseInt(version[1]) >= 17))\r\n return false;\r\n // hacky way to detect Sonoma\r\n const audioCheck = document.createElement('audio').canPlayType('audio/wav; codecs=\"1\"') ? true : false;\r\n const webGLCheck = new OffscreenCanvas(1, 1).getContext('webgl') ? true : false;\r\n\r\n return audioCheck && webGLCheck;\r\n }\r\n\r\n static deviceFormFactor(): 'narrow' | 'wide' {\r\n return window.matchMedia('(orientation: portrait)').matches? 'narrow' : 'wide';\r\n }\r\n \r\n static isStandalone() {\r\n\t\tif (window.matchMedia('(display-mode: standalone)').matches || ('standalone' in navigator && (navigator as any).standalone === true))\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static async getInstalledRelatedApps(): Promise {\r\n if ('getInstalledRelatedApps' in navigator)\r\n try{\r\n return await (navigator as any).getInstalledRelatedApps().then((relatedApps: IRelatedApp[]) => {\r\n return relatedApps;\r\n });\r\n } catch (e) {}\r\n \r\n return [];\r\n }\r\n \r\n static async isRelatedAppsInstalled(): Promise {\r\n const _relatedApps = await this.getInstalledRelatedApps();\r\n return _relatedApps.length? true : false;\r\n }\r\n\r\n static setStorageFlag(name: string, value:boolean, persistent: boolean = false) {\r\n try {\r\n if (persistent)\r\n localStorage.setItem(name, value.toString());\r\n else\r\n sessionStorage.setItem(name, value.toString());\r\n } catch (e) {}\r\n }\r\n static getStorageFlag(name: string): boolean {\r\n try {\r\n return sessionStorage.getItem(name) === 'true' || localStorage.getItem(name) === 'true';\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n static eventInstalledSuccess(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-success-event', 'App install success (Chromium/Android only)');\r\n }\r\n static eventInstalledFail(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-fail-event', 'App install failed (Chromium/Android only)');\r\n }\r\n static eventUserChoiceResult(_element: Element, message: string) {\r\n _eventDispatcher(_element, 'pwa-user-choice-result-event', message);\r\n }\r\n static eventInstallAvailable(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-available-event', 'App install available');\r\n }\r\n static eventInstallHowTo(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-how-to-event', 'App install instruction showed');\r\n }\r\n static eventGallery(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-gallery-event', 'App install gallery showed');\r\n }\r\n\r\n static normalizeManifestAssetUrls(manifest: WebAppManifest, manifestUrl: string) {\r\n const normalizedManifestUrl = new URL(manifestUrl, document.location.href);\r\n [...manifest.icons || [], ...manifest.screenshots || []].forEach(asset => {\r\n asset.src = new URL(asset.src, normalizedManifestUrl).href;\r\n })\r\n }\r\n}","import { html } from 'lit';\r\nimport Utils from '../utils';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nconst template = (screenshots: ManifestScreenshot[], theme: string, scrollToNextPage: any, scrollToPrevPage: any) => {\r\n\r\n return html`\r\n ${screenshots? html`\r\n
\r\n
\r\n
\r\n ${screenshots.filter(screenshot => !screenshot.form_factor || screenshot.form_factor === Utils.deviceFormFactor()).map(screenshot => html`${screenshot.label || \"\"}`)}\r\n
\r\n
\r\n \r\n ${theme != 'default'?\r\n html``\r\n :\r\n html``\r\n }\r\n \r\n \r\n ${theme != 'default'?\r\n html`\r\n \r\n `\r\n :\r\n html`\r\n \r\n \r\n \r\n `\r\n }\r\n \r\n
`\r\n : ''}`;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nimport styles from './styles-gallery.scss';\r\nimport template from './template-gallery';\r\n\r\n@customElement('pwa-gallery')\r\nexport default class PWAGalleryElement extends LitElement {\r\n\t@property({ type: Array }) screenshots: ManifestScreenshot[] = [];\r\n\t@property() theme: 'default' | 'apple_desktop' | 'apple_mobile' = 'default';\r\n\r\n\tstatic get styles() {\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tprivate getScrollElements = () => {\r\n\t\tconst gallery = this.shadowRoot?.querySelector('#paginated_gallery') as HTMLElement | null;\r\n\t\tif (!gallery) return;\r\n\t\t\r\n\t\tconst galleryScroller = gallery.querySelector('.gallery_scroller') as HTMLElement | null;\r\n\t\tif (!galleryScroller) return;\r\n\t\r\n\t\tconst galleryItems = Array.from(galleryScroller.querySelectorAll('img')) as HTMLElement[];\r\n\t\tif (galleryItems.length === 0) return;\r\n\t\r\n\t\treturn {\r\n\t\t\tscroller: galleryScroller,\r\n\t\t\titems: galleryItems\r\n\t\t};\r\n\t};\r\n\t\r\n\tprivate findCurrentItem = (scroller: HTMLElement, items: HTMLElement[]): HTMLElement | null => {\r\n\t\tconst scrollLeft = scroller.scrollLeft;\r\n\t \t// Find the item closest to the center of the viewport.\r\n\t\treturn items.find((item) => (item.offsetWidth + item.offsetLeft) >= scrollLeft + (item.offsetWidth / 2.5)) || null;\r\n\t};\r\n\t\r\n\tprivate scrollToPage = (direction: 'next' | 'prev') => {\r\n\t\tconst scrollData = this.getScrollElements();\r\n\t\tif (!scrollData) return;\r\n\t\r\n\t\tconst { scroller, items } = scrollData;\r\n\t\tconst currentItem = this.findCurrentItem(scroller, items);\r\n\t\tif (!currentItem) return;\r\n\t\r\n\t\tconst currentIndex = items.indexOf(currentItem);\r\n\t\tconst offset = direction === 'next' ? 1 : -1;\r\n\t\tconst targetIndex = currentIndex + offset;\r\n\t\t\r\n\t\tif (targetIndex >= 0 && targetIndex < items.length) {\r\n\t\t\titems[targetIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\r\n\t\t}\r\n\t};\r\n\t\r\n\tpublic scrollToNextPage = () => {\r\n\t\tthis.scrollToPage('next');\r\n\t};\r\n\t\r\n\tpublic scrollToPrevPage = () => {\r\n\t\tthis.scrollToPage('prev');\r\n\t};\r\n\r\n\r\n\tprivate _init = () => {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tconst _tools = this.getScrollElements();\r\n\t\tif (_tools)\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\t_tools.scroller.scrollTo({\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t300\r\n\t\t\t)\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\tthis._init();\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(\r\n this.screenshots,\r\n\t\t\tthis.theme,\r\n\t\t\tthis.scrollToNextPage,\r\n\t\t\tthis.scrollToPrevPage\r\n )}`;\r\n\t}\r\n}\r\n","import { html } from 'lit';\nimport { msg } from '@lit/localize';\n\nconst template = (name: string, description: string, icon: string, install: any) => {\n return html`\n
\n
\n
\n \"icon\"\n
\n
\n
\n \n
\n
${location.hostname}
\n
\n \n
\n ${description ? html `
${description}
`: ''}\n `;\n};\nexport default template;\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\n\r\n// import TouchDragListener from \"./touch-listener\";\r\n\r\ntype IProps = {\r\n name: string,\r\n description: string,\r\n icon: string\r\n}\r\n\r\nimport template from './template-bottom-sheet';\r\nimport Utils from '../../../utils';\r\n\r\n@customElement('pwa-bottom-sheet')\r\nexport default class PWABottomSheetElement extends LitElement {\r\n\t@property({type: Object}) props: IProps = {\r\n name: '',\r\n description: '',\r\n icon: ''\r\n };\r\n @property({type: Object}) install = {handleEvent: () => {}};\r\n\t@property() hideDialog = () => {};\r\n\t@property() disableClose = false;\r\n\r\n\tprivate _callInstall = () => {\r\n\t\tthis.install.handleEvent();\r\n\t}\r\n\r\n\tprivate _callHide = () => {\r\n\t\tthis.hideDialog();\r\n\t\tthis.setupAppearence();\r\n\t}\r\n\r\n\tprivate bindedElement: {\r\n\t\ttouchElement: HTMLElement,\r\n\t\tlistener: any }| null = null;\r\n\tprivate readonly _saveBodyStyle = document.body.style.overscrollBehaviorY;\r\n\tprivate dragMobileSheet = (element: HTMLElement | null | undefined, touchTargetElement: HTMLElement | undefined, infoElement: HTMLElement | undefined) => {\r\n\t\tif (!element || !touchTargetElement || !infoElement)\r\n\t\t\treturn null;\r\n\r\n\t\tlet dragOffset = 0;\r\n\t\tconst bounceOffset = 35;\r\n\t\tconst bottomSize = touchTargetElement.clientHeight + infoElement.clientHeight;\r\n\r\n\t\tconst getYCoord = (e: MouseEvent | TouchEvent): number => {\r\n\t\t\treturn (e as MouseEvent).clientY || ((e as TouchEvent).changedTouches && (e as TouchEvent).changedTouches.length? (e as TouchEvent).changedTouches[0].clientY : 0);\r\n\t\t}\r\n\r\n\t\tconst dragMouseDown = (e: MouseEvent | TouchEvent) => {\r\n\t\t\twindow.addEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.addEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.addEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.addEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tdragOffset = getYCoord(e) - touchTargetElement.getBoundingClientRect().top;\r\n\r\n\t\t\tdocument.body.style.overscrollBehaviorY = 'none';\r\n\t\t}\r\n\t\tconst dragMouseUp = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tdocument.body.style.overscrollBehaviorY = this._saveBodyStyle;\r\n\r\n\t\t\tif (!this.disableClose && getYCoord(e) >= window.innerHeight - 25) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight + 50, true);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (window.innerHeight - getYCoord(e) > element.clientHeight / 2.5) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - element.clientHeight);\r\n\t\t\t\t\r\n\t\t\t\ttry {\r\n\t\t\t\t\tUtils.eventGallery((this.getRootNode() as ShadowRoot).host);\r\n\t\t\t\t} catch (e) {}\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - bottomSize - bounceOffset);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dragMouseMove = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tconst currentY = getYCoord(e);\r\n\r\n\t\t\tif (this.disableClose && window.innerHeight - currentY < 70) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (currentY <= (window.innerHeight - element.clientHeight + dragOffset)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`none`\r\n\t\t\t)\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"--translateY\",\r\n\t\t\t\t`translateY(${currentY - dragOffset}px)`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst closeDragElement = (e: MouseEvent | TouchEvent, toPoint?: number, hideDialog?: boolean) => {\r\n\t\t\twindow.removeEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.removeEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.removeEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.removeEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tif (window.innerWidth >= 768)\r\n\t\t\t\treturn\r\n\r\n\t\t\tif (!toPoint && getYCoord(e) >= window.innerHeight - bottomSize)\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(calc(100vh - ${bottomSize}px))`\r\n\t\t\t\t);\r\n\t\t\telse\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(${(toPoint || getYCoord(e)) + bounceOffset}px)`\r\n\t\t\t\t);\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s`\r\n\t\t\t);\r\n\r\n\t\t\tif (hideDialog){\r\n\t\t\t\ttouchTargetElement.removeEventListener('mousedown', dragMouseDown);\r\n\t\t\t\ttouchTargetElement.removeEventListener('touchstart', dragMouseDown);\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\tthis._callHide,\r\n\t\t\t\t\t250\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ttouchTargetElement.addEventListener('mousedown', dragMouseDown);\r\n\t\ttouchTargetElement.addEventListener('touchstart', dragMouseDown, {passive: true});\r\n\r\n\t\tcloseDragElement(new MouseEvent('mouseup'), window.innerHeight - bottomSize - bounceOffset);\r\n\r\n\t\treturn {\r\n\t\t\ttouchElement: touchTargetElement,\r\n\t\t\tlistener: dragMouseDown\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupAppearence = () => {\r\n\t\tif (this.bindedElement) {\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('mousedown', this.bindedElement.listener);\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('touchstart', this.bindedElement.listener);\r\n\t\t}\r\n\r\n\t\tthis.bindedElement = this.dragMobileSheet(\r\n\t\t\tthis.parentElement?.parentElement,\r\n\t\t\tthis.parentElement?.getElementsByClassName('touch-header')[0] as HTMLElement,\r\n\t\t\tthis.parentElement?.getElementsByClassName('body-header')[0] as HTMLElement);\r\n\t}\r\n\tprivate _init = () => {\r\n\t\tthis.setupAppearence();\r\n\r\n\t\twindow.addEventListener('resize', this.setupAppearence);\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tthis._init();\r\n return;\r\n\t}\r\n\r\n createRenderRoot() {\r\n return this;\r\n }\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(this.props.name, this.props.description, this.props.icon, this._callInstall)}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,\"Segoe UI\",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:\"\";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,\"Segoe UI\",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:\"\";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`;\n ","import {css} from 'lit'; export default css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,\"Segoe UI\";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon description\" \"welcome welcome\" \"how-to how-to\" \"gallery gallery\" \"button button\";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon\" \"description\" \"welcome\" \"how-to\" \"gallery\" \"button\";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;\n ","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, install: any, toggleGallery: any, galleryRequested: boolean) => {\r\n const installDialogClasses = () => { return {available: installAvailable, gallery: galleryRequested }};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n ${!disableClose? html`` : ''}\r\n
\r\n
${location.hostname}
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n ${!disableDescription? \r\n html`
${installDescription? installDescription: `${msg('This site has app functionality.')} ${msg('Install it on your device for extensive experience and easy access.')}`}
` \r\n : ''}\r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n ${screenshotsAvailable? html``:''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n
\r\n
`;\r\n};\r\nexport default template;\r\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, howToForApple: any, isDesktop: boolean, howToRequested: boolean, toggleGallery: any, galleryRequested: boolean) => {\r\n const installDialogClassesApple = () => { return {available: installAvailable, 'how-to': howToRequested, gallery: galleryRequested, desktop: isDesktop}};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, PropertyValues, html } from 'lit';\r\nimport { localized } from '@lit/localize';\r\nimport { property, state, customElement } from 'lit/decorators.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { changeLocale } from './localization';\r\n\r\nimport { IRelatedApp, Manifest, IWindow, PWAInstallAttributes } from './types/types';\r\n\r\nimport PWAGalleryElement from './gallery';\r\nimport PWABottomSheetElement from './templates/chrome/bottom-sheet';\r\n\r\nimport Utils from './utils';\r\n\r\ndeclare const window: IWindow;\r\n\r\nimport styles from './templates/chrome/styles.scss';\r\nimport stylesApple from './templates/apple/styles-apple.scss';\r\n\r\nimport template from './templates/chrome/template';\r\nimport templateApple from './templates/apple/template-apple';\r\n\r\n/**\r\n * @event {CustomEvent} pwa-install-success-event - App install success (Chromium/Android only)\r\n * @event {CustomEvent} pwa-install-fail-event - App install failed (Chromium/Android only)\r\n * @event {CustomEvent} pwa-user-choice-result-event - dismissed, accepted\r\n * @event {CustomEvent} pwa-install-available-event - App install available\r\n * @event {CustomEvent} pwa-install-how-to-event - App install instruction showed\r\n * @event {CustomEvent} pwa-install-gallery-event - App install gallery showed\r\n */\r\n@localized()\r\n@customElement('pwa-install')\r\nexport class PWAInstallElement extends LitElement {\r\n\t@property({attribute: 'manifest-url'}) manifestUrl = '/manifest.json';\r\n\t@property() icon = '';\r\n\t@property() name = '';\r\n\t@property() description = '';\r\n\t@property({attribute: 'install-description'}) installDescription = '';\r\n\t@property({attribute: 'disable-install-description', type: Boolean}) disableDescription = false;\r\n\t@property({attribute: 'disable-screenshots', type: Boolean}) disableScreenshots = false;\r\n\t@property({attribute: 'disable-screenshots-apple', type: Boolean}) disableScreenshotsApple = false;\r\n\t@property({attribute: 'disable-screenshots-chrome', type: Boolean}) disableScreenshotsChrome = false;\r\n\t@property({attribute: 'manual-apple', type: Boolean}) manualApple = false;\r\n\t@property({attribute: 'manual-chrome', type: Boolean}) manualChrome = false;\r\n\t@property({attribute: 'disable-chrome', type: Boolean}) disableChrome = false;\r\n\t@property({attribute: 'disable-close', type: Boolean}) disableClose = false;\r\n\t@property({attribute: 'use-local-storage', type: Boolean}) useLocalStorage = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn [ styles, stylesApple ];\r\n\t}\r\n\r\n\t@state() externalPromptEvent: BeforeInstallPromptEvent | null = null;\r\n\r\n\tpublic platforms: BeforeInstallPromptEvent['platforms'] = [];\r\n\tpublic userChoiceResult = '';\r\n\r\n\tpublic isDialogHidden: boolean = Utils.getStorageFlag('pwa-hide-install');\r\n\tpublic isInstallAvailable = false;\r\n\tpublic isAppleMobilePlatform = false;\r\n\tpublic isAppleDesktopPlatform = false;\r\n\tpublic isUnderStandaloneMode = false;\r\n\tpublic isRelatedAppsInstalled = false;\r\n\r\n\t/** @internal */\r\n\tprivate _manifest: WebAppManifest = new Manifest();\r\n\t/** @internal */\r\n\tprivate _howToRequested = false;\r\n\t/** @internal */\r\n\tprivate _galleryRequested = false;\r\n\t/** @internal */\r\n\tprivate _install = {\r\n\t\thandleEvent: () => {\r\n\t\t\tif (window.defferedPromptEvent) {\r\n\t\t\t\tthis.hideDialog();\r\n\t\t\t\twindow.defferedPromptEvent.prompt();\r\n\t\t\t\twindow.defferedPromptEvent.userChoice\r\n\t\t\t\t\t.then((choiceResult: PromptResponseObject) => {\r\n\t\t\t\t\t\tthis.userChoiceResult = choiceResult.outcome;\r\n\t\t\t\t\t\tUtils.eventUserChoiceResult(this, this.userChoiceResult);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tUtils.eventInstalledFail(this);\r\n\t\t\t\t\t});\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\tpublic install = () => {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis._howToRequested = true;\r\n\t\t\tthis.requestUpdate();\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._install.handleEvent();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialog = {\r\n\t\thandleEvent: () => {\r\n\t\t\tthis.isDialogHidden = true;\r\n\t\t\tUtils.setStorageFlag('pwa-hide-install', true, this.useLocalStorage);\r\n\t\t\tthis.requestUpdate();\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialogUser = () => {\r\n\t\tUtils.eventUserChoiceResult(this, 'dismissed');\r\n\t\tthis.userChoiceResult = 'dismissed';\r\n\t\tthis.hideDialog();\r\n\t}\r\n\tpublic hideDialog = () => {\r\n\t\tthis._hideDialog.handleEvent();\r\n\t}\r\n\tpublic showDialog = (forced = false) => {\r\n\t\tthis.isDialogHidden = false;\r\n\t\tif (forced)\r\n\t\t\tthis.isInstallAvailable = true;\r\n\t\tUtils.setStorageFlag('pwa-hide-install', false, this.useLocalStorage);\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tpublic getInstalledRelatedApps = async (): Promise => {\r\n\t\treturn await Utils.getInstalledRelatedApps();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _howToForApple = {\r\n handleEvent: () => {\r\n\t\t\tthis._howToRequested = !this._howToRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._galleryRequested = false;\r\n\t\t\tthis.requestUpdate();\r\n\r\n\t\t\tif (this._howToRequested) {\r\n\t\t\t\tUtils.eventInstallHowTo(this);\r\n\t\t\t}\t\t\t\t\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate _toggleGallery = {\r\n handleEvent: () => {\r\n\t\t\tthis._galleryRequested = !this._galleryRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._howToRequested = false;\r\n\r\n\t\t\tthis._galleryRequested && Utils.eventGallery(this);\r\n\r\n\t\t\tthis.requestUpdate();\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate async _checkInstalled() {\r\n\t\tthis.isUnderStandaloneMode = Utils.isStandalone();\r\n\t\tthis.isRelatedAppsInstalled = await Utils.isRelatedAppsInstalled();\r\n\t\tthis.isAppleMobilePlatform = Utils.isAppleMobile();\r\n\t\tthis.isAppleDesktopPlatform = Utils.isAppleDesktop();\r\n\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tif (!this.isUnderStandaloneMode) {\r\n\t\t\t\tthis.manualApple && this.hideDialog();\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t1000\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.manualChrome && this.hideDialog();\r\n\t\t}\r\n\t}\r\n\t/** @internal */\r\n\tprivate _init = async () => {\r\n\t\twindow.defferedPromptEvent = null;\r\n\r\n\t\tthis._checkInstalled();\r\n\r\n\t\tif (!this.disableChrome) {\r\n\t\t\tconst _promptHandler = (e: BeforeInstallPromptEvent) => {\r\n\t\t\t\twindow.defferedPromptEvent = e;\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.platforms = e.platforms;\r\n\r\n\t\t\t\tif (this.isRelatedAppsInstalled || this.isUnderStandaloneMode) {\r\n\t\t\t\t\tthis.isInstallAvailable = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userChoiceResult === 'accepted'){\r\n\t\t\t\t\tthis.isDialogHidden = true;\r\n\t\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t\tif (this.externalPromptEvent != null)\r\n\t\t\t\tsetTimeout(() => _promptHandler(this.externalPromptEvent!), 300);\r\n\t\t\telse\r\n\t\t\t\twindow.addEventListener('beforeinstallprompt', _promptHandler);\r\n\t\t}\r\n\r\n\t\twindow.addEventListener('appinstalled', (e) => {\r\n\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\tthis.isInstallAvailable = false;\r\n\r\n\t\t\tthis.requestUpdate();\r\n\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t});\r\n\r\n\r\n\t\ttry{\r\n\t\t\tconst _response = await fetch(this.manifestUrl);\r\n\t\t\tconst _json = await _response.json() as WebAppManifest;\r\n\t\t\tif (!_response.ok || !_json || !Object.keys(_json))\r\n\t\t\t\tthrow new Error('Manifest not found');\r\n\t\t\tUtils.normalizeManifestAssetUrls(_json, this.manifestUrl);\r\n\t\t\t\r\n\t\t\tthis.icon = this.icon || _json.icons?.length ? _json.icons![0].src : '';\r\n\t\t\tthis.name = this.name || _json['short_name'] || _json.name || '';\r\n\t\t\tthis.description = this.description || _json.description || '';\r\n\t\t\tthis._manifest = _json;\r\n\t\t}\r\n\t\tcatch(e) {\r\n\t\t\tthis.icon = this.icon || this._manifest.icons?.[0].src || '';\r\n\t\t\tthis.name = this.name || this._manifest['short_name'] || '';\r\n\t\t\tthis.description = this.description || this._manifest.description || '';\r\n\t\t}\r\n\t};\r\n\t/** @internal */\r\n\tprivate _requestUpdate = () => {\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tchangeLocale(navigator.language);\r\n\t\tthis._init();\r\n\t\tPWAGalleryElement.finalized;\r\n\t\tPWABottomSheetElement.finalized;\r\n\t\tsuper.connectedCallback();\r\n\t}\r\n\twillUpdate(changedProperties: PropertyValues) {\r\n\t\tif (this.externalPromptEvent && changedProperties.has('externalPromptEvent') && typeof this.externalPromptEvent == 'object') {\r\n\t\t this._init();\r\n\t\t}\r\n\t}\r\n\r\n\t// firstUpdated() {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\trender() {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform)\r\n\t\t\treturn html`${templateApple(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsApple,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._howToForApple,\r\n\t\t\t\tthis.isAppleDesktopPlatform,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested\r\n\t\t\t)}`;\r\n\t\telse\r\n\t\t\treturn html`${template(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsChrome,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._install,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested\r\n\t\t\t)}`;\r\n\t}\r\n}\r\n\r\nexport { PWAInstallAttributes };\r\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { updateWhenLocaleChanges } from './localized-controller.js';\n/**\n * Class decorator to enable re-rendering the given LitElement whenever a new\n * active locale has loaded.\n *\n * See also {@link updateWhenLocaleChanges} for the same functionality without\n * the use of decorators.\n *\n * When using lit-localize in transform mode, applications of this decorator are\n * removed.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {customElement} from 'lit/decorators.js';\n * import {msg, localized} from '@lit/localize';\n *\n * @localized()\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nexport const localized = () => (clazz, _context) => {\n clazz.addInitializer(updateWhenLocaleChanges);\n return clazz;\n};\n//# sourceMappingURL=localized-decorator.js.map"],"names":["root","factory","exports","module","require","define","amd","globalThis","__WEBPACK_EXTERNAL_MODULE__161__","__WEBPACK_EXTERNAL_MODULE__429__","__WEBPACK_EXTERNAL_MODULE__125__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","joinStringsAndValues","strings","values","valueOrder","concat","i","length","defaultMsg","template","isStrTagged","val","msg","installed","LOCALE_STATUS_EVENT","LocalizeController","constructor","host","this","__litLocalizeEventHandler","event","detail","status","requestUpdate","hostConnected","window","addEventListener","hostDisconnected","removeEventListener","updateWhenLocaleChanges","addController","Deferred","settled","promise","Promise","resolve","reject","_resolve","_reject","error","hl","toString","HASH_DELIMITER","HTML_PREFIX","STRING_PREFIX","generateMsgId","isHtmlTagged","str","t0","v0","t1","v1","t2","v2","t3","v3","charCodeAt","fnv1a64","join","expressionOrders","WeakMap","hashCache","Map","runtimeMsg","templates","options","id","set","generateId","localized","order","map","dispatchStatusEvent","dispatchEvent","CustomEvent","loadingLocale","sourceLocale","validLocales","loadLocale","activeLocale","loading","requestId","getLocale","setLocale","newLocale","Error","has","thisRequestId","then","mod","readyLocale","err","errorLocale","errorMessage","targetLocales","localizedTemplates","config","async","lang","impl","_installMsgImplementation","Set","add","Manifest","icons","src","screenshots","short_name","name","description","css","_eventDispatcher","_element","message","Utils","isAppleMobile","includes","navigator","platform","userAgent","match","maxTouchPoints","isAppleDesktop","toLowerCase","version","exec","parseInt","audioCheck","document","createElement","canPlayType","webGLCheck","OffscreenCanvas","getContext","deviceFormFactor","matchMedia","matches","isStandalone","standalone","getInstalledRelatedApps","relatedApps","e","isRelatedAppsInstalled","setStorageFlag","persistent","localStorage","setItem","sessionStorage","getStorageFlag","getItem","eventInstalledSuccess","eventInstalledFail","eventUserChoiceResult","eventInstallAvailable","eventInstallHowTo","eventGallery","normalizeManifestAssetUrls","manifest","manifestUrl","normalizedManifestUrl","URL","location","href","forEach","asset","theme","scrollToNextPage","scrollToPrevPage","html","PWAGalleryElement","LitElement","getScrollElements","gallery","shadowRoot","querySelector","galleryScroller","galleryItems","Array","from","querySelectorAll","scroller","items","findCurrentItem","scrollLeft","find","item","offsetWidth","offsetLeft","scrollToPage","direction","scrollData","currentItem","targetIndex","indexOf","scrollIntoView","behavior","block","inline","_init","styles","firstUpdated","_tools","setTimeout","scrollTo","top","left","connectedCallback","super","render","property","type","customElement","icon","install","PWABottomSheetElement","props","handleEvent","hideDialog","disableClose","_callInstall","_callHide","setupAppearence","bindedElement","_saveBodyStyle","body","style","overscrollBehaviorY","dragMobileSheet","element","touchTargetElement","infoElement","dragOffset","bottomSize","clientHeight","getYCoord","clientY","changedTouches","dragMouseDown","dragMouseUp","dragMouseMove","getBoundingClientRect","innerHeight","closeDragElement","getRootNode","currentY","setProperty","toPoint","innerWidth","passive","MouseEvent","touchElement","listener","parentElement","getElementsByClassName","createRenderRoot","installDescription","disableDescription","disableScreenshots","installAvailable","toggleGallery","galleryRequested","installDialogClasses","available","screenshotsAvailable","howToForApple","isDesktop","howToRequested","desktop","PWAInstallElement","disableScreenshotsApple","disableScreenshotsChrome","manualApple","manualChrome","disableChrome","useLocalStorage","externalPromptEvent","platforms","userChoiceResult","isDialogHidden","isInstallAvailable","isAppleMobilePlatform","isAppleDesktopPlatform","isUnderStandaloneMode","_manifest","_howToRequested","_galleryRequested","_install","defferedPromptEvent","prompt","userChoice","choiceResult","outcome","catch","_hideDialog","_hideDialogUser","showDialog","forced","_howToForApple","_toggleGallery","_checkInstalled","_promptHandler","preventDefault","_response","fetch","_json","json","ok","keys","_requestUpdate","slice","changeLocale","language","finalized","willUpdate","changedProperties","attribute","Boolean","state","clazz","_context","addInitializer"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"pwa-install.umd.js","mappings":"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","sources":["webpack://PWAInstallComponent/webpack/universalModuleDefinition","webpack://PWAInstallComponent/external umd \"lit\"","webpack://PWAInstallComponent/external umd \"lit/decorators.js\"","webpack://PWAInstallComponent/external umd \"lit/directives/class-map.js\"","webpack://PWAInstallComponent/webpack/bootstrap","webpack://PWAInstallComponent/webpack/runtime/define property getters","webpack://PWAInstallComponent/webpack/runtime/hasOwnProperty shorthand","webpack://PWAInstallComponent/webpack/runtime/make namespace object","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/str-tag.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/default-msg.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/init/install.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/locale-status-event.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/localized-controller.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/deferred.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/fnv1a64.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/id-generation.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/runtime-msg.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/init/runtime.js","webpack://PWAInstallComponent/./src/localization/locale-codes.ts","webpack://PWAInstallComponent/./src/localization/locales/ru.ts","webpack://PWAInstallComponent/./src/localization/locales/tr.ts","webpack://PWAInstallComponent/./src/localization/locales/de.ts","webpack://PWAInstallComponent/./src/localization/locales/es.ts","webpack://PWAInstallComponent/./src/localization/locales/nl.ts","webpack://PWAInstallComponent/./src/localization/locales/el.ts","webpack://PWAInstallComponent/./src/localization/locales/fr.ts","webpack://PWAInstallComponent/./src/localization/locales/sr.ts","webpack://PWAInstallComponent/./src/localization/locales/pl.ts","webpack://PWAInstallComponent/./src/localization/locales/uk.ts","webpack://PWAInstallComponent/./src/localization/locales/zh-HK.ts","webpack://PWAInstallComponent/./src/localization/locales/zh-CN.ts","webpack://PWAInstallComponent/./src/localization/locales/it.ts","webpack://PWAInstallComponent/./src/localization/locales/cs.ts","webpack://PWAInstallComponent/./src/localization/locales/no.ts","webpack://PWAInstallComponent/./src/localization/locales/pt.ts","webpack://PWAInstallComponent/./src/localization/locales/ja.ts","webpack://PWAInstallComponent/./src/localization/locales/sv.ts","webpack://PWAInstallComponent/./src/localization/locales/ko.ts","webpack://PWAInstallComponent/./src/localization/locales/km.ts","webpack://PWAInstallComponent/./src/localization/locales/da.ts","webpack://PWAInstallComponent/./src/localization/index.ts","webpack://PWAInstallComponent/./src/types/types.ts","webpack://PWAInstallComponent/./src/gallery/styles-gallery.scss","webpack://PWAInstallComponent/./src/utils.ts","webpack://PWAInstallComponent/./src/gallery/template-gallery.ts","webpack://PWAInstallComponent/./src/gallery/index.ts","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/template-bottom-sheet.ts","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/index.ts","webpack://PWAInstallComponent/./src/templates/chrome/styles.scss","webpack://PWAInstallComponent/./src/templates/apple/styles-apple.scss","webpack://PWAInstallComponent/./src/templates/chrome/template.ts","webpack://PWAInstallComponent/./src/templates/apple/template-apple.ts","webpack://PWAInstallComponent/./src/index.ts","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/localized-decorator.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"lit\"), require(\"lit/decorators.js\"), require(\"lit/directives/class-map.js\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"lit\", \"lit/decorators.js\", \"lit/directives/class-map.js\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PWAInstallComponent\"] = factory(require(\"lit\"), require(\"lit/decorators.js\"), require(\"lit/directives/class-map.js\"));\n\telse\n\t\troot[\"PWAInstallComponent\"] = factory(root[\"lit\"], root[\"lit/decorators.js\"], root[\"lit/directives/class-map.js\"]);\n})(globalThis, (__WEBPACK_EXTERNAL_MODULE__161__, __WEBPACK_EXTERNAL_MODULE__429__, __WEBPACK_EXTERNAL_MODULE__125__) => {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__161__;","module.exports = __WEBPACK_EXTERNAL_MODULE__429__;","module.exports = __WEBPACK_EXTERNAL_MODULE__125__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Tag that allows expressions to be used in localized non-HTML template\n * strings.\n *\n * Example: msg(str`Hello ${this.user}!`);\n *\n * The Lit html tag can also be used for this purpose, but HTML will need to be\n * escaped, and there is a small overhead for HTML parsing.\n *\n * Untagged template strings with expressions aren't supported by lit-localize\n * because they don't allow for values to be captured at runtime.\n */\nconst _str = (strings, ...values) => ({\n strTag: true,\n strings,\n values,\n});\nexport const str = _str;\nexport const isStrTagged = (val) => typeof val !== 'string' && 'strTag' in val;\n/**\n * Render the result of a `str` tagged template to a string. Note we don't need\n * to do this for Lit templates, since Lit itself handles rendering.\n */\nexport const joinStringsAndValues = (strings, values, valueOrder) => {\n let concat = strings[0];\n for (let i = 1; i < strings.length; i++) {\n concat += values[valueOrder ? valueOrder[i - 1] : i - 1];\n concat += strings[i];\n }\n return concat;\n};\n//# sourceMappingURL=str-tag.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { isStrTagged, joinStringsAndValues } from './str-tag.js';\n/**\n * Default identity msg implementation. Simply returns the input template with\n * no awareness of translations. If the template is str-tagged, returns it in\n * string form.\n */\nexport const defaultMsg = ((template) => isStrTagged(template)\n ? joinStringsAndValues(template.strings, template.values)\n : template);\n//# sourceMappingURL=default-msg.js.map","import { defaultMsg } from '../internal/default-msg.js';\n/**\n * Make a string or lit-html template localizable.\n *\n * @param template A string, a lit-html template, or a function that returns\n * either a string or lit-html template.\n * @param options Optional configuration object with the following properties:\n * - id: Optional project-wide unique identifier for this template. If\n * omitted, an id will be automatically generated from the template strings.\n * - desc: Optional description\n */\nexport let msg = defaultMsg;\nlet installed = false;\n/**\n * Internal only. Do not use this function.\n *\n * Installs an implementation of the msg function to replace the default\n * identity function. Throws if called more than once.\n *\n * @internal\n */\nexport function _installMsgImplementation(impl) {\n if (installed) {\n throw new Error('lit-localize can only be configured once');\n }\n msg = impl;\n installed = true;\n}\n//# sourceMappingURL=install.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Name of the event dispatched to `window` whenever a locale change starts,\n * finishes successfully, or fails. Only relevant to runtime mode.\n *\n * The `detail` of this event is an object with a `status` string that can be:\n * \"loading\", \"ready\", or \"error\", along with the relevant locale code, and\n * error message if applicable.\n *\n * You can listen for this event to know when your application should be\n * re-rendered following a locale change. See also the Localized mixin, which\n * automatically re-renders LitElement classes using this event.\n */\nexport const LOCALE_STATUS_EVENT = 'lit-localize-status';\n//# sourceMappingURL=locale-status-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { LOCALE_STATUS_EVENT } from './locale-status-event.js';\nclass LocalizeController {\n constructor(host) {\n this.__litLocalizeEventHandler = (event) => {\n if (event.detail.status === 'ready') {\n this.host.requestUpdate();\n }\n };\n this.host = host;\n }\n hostConnected() {\n window.addEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n hostDisconnected() {\n window.removeEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n}\n/**\n * Re-render the given LitElement whenever a new active locale has loaded.\n *\n * See also {@link localized} for the same functionality as a decorator.\n *\n * When using lit-localize in transform mode, calls to this function are\n * replaced with undefined.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {msg, updateWhenLocaleChanges} from '@lit/localize';\n *\n * class MyElement extends LitElement {\n * constructor() {\n * super();\n * updateWhenLocaleChanges(this);\n * }\n *\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nconst _updateWhenLocaleChanges = (host) => host.addController(new LocalizeController(host));\nexport const updateWhenLocaleChanges = _updateWhenLocaleChanges;\n//# sourceMappingURL=localized-controller.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport class Deferred {\n constructor() {\n this.settled = false;\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n resolve(value) {\n this.settled = true;\n this._resolve(value);\n }\n reject(error) {\n this.settled = true;\n this._reject(error);\n }\n}\n//# sourceMappingURL=deferred.js.map","/**\n * @license\n * Copyright 2014 Travis Webb\n * SPDX-License-Identifier: MIT\n */\n// This module is derived from the file:\n// https://github.com/tjwebb/fnv-plus/blob/1e2ce68a07cb7dd4c3c85364f3d8d96c95919474/index.js#L309\n//\n// Changes:\n// - Only the _hash64_1a_fast function is included.\n// - Removed loop unrolling.\n// - Converted to TypeScript ES module.\n// - var -> let/const\n//\n// TODO(aomarks) Upstream improvements to https://github.com/tjwebb/fnv-plus/.\nconst hl = [];\nfor (let i = 0; i < 256; i++) {\n hl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n}\n/**\n * Perform a FNV-1A 64-bit hash of the given string (as UTF-16 code units), and\n * return a hexadecimal digest (left zero padded to 16 characters).\n *\n * @see {@link http://tools.ietf.org/html/draft-eastlake-fnv-06}\n */\nexport function fnv1a64(str) {\n let t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n for (let i = 0; i < str.length; i++) {\n v0 ^= str.charCodeAt(i);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = (t3 + (t2 >>> 16)) & 65535;\n v2 = t2 & 65535;\n }\n return (hl[v3 >> 8] +\n hl[v3 & 255] +\n hl[v2 >> 8] +\n hl[v2 & 255] +\n hl[v1 >> 8] +\n hl[v1 & 255] +\n hl[v0 >> 8] +\n hl[v0 & 255]);\n}\n//# sourceMappingURL=fnv1a64.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { fnv1a64 } from './fnv1a64.js';\n/**\n * Delimiter used between each template string component before hashing. Used to\n * prevent e.g. \"foobar\" and \"foo${baz}bar\" from sharing a hash.\n *\n * This is the \"record separator\" ASCII character.\n */\nexport const HASH_DELIMITER = '\\x1e';\n/**\n * Id prefix on html-tagged templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst HTML_PREFIX = 'h';\n/**\n * Id prefix on plain string templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst STRING_PREFIX = 's';\n/**\n * Generate a unique ID for a lit-localize message.\n *\n * Example:\n * Template: html`Hello ${who}!`\n * Params: [\"Hello \", \"!\"], true\n * Output: h82ccc38d4d46eaa9\n *\n * The ID is constructed as:\n *\n * [0] Kind of template: [h]tml or [s]tring.\n * [1,16] 64-bit FNV-1a hash hex digest of the template strings, as UTF-16\n * code points, delineated by an ASCII \"record separator\" character.\n *\n * We choose FNV-1a because:\n *\n * 1. It's pretty fast (e.g. much faster than SHA-1).\n * 2. It's pretty small (0.25 KiB minified + brotli).\n * 3. We don't require cryptographic security, and 64 bits should give\n * sufficient collision resistance for any one application. Worst\n * case, we will always detect collisions during analysis.\n * 4. We can't use Web Crypto API (e.g. SHA-1), because it's asynchronous.\n * 5. It's a well known non-cryptographic hash with implementations in many\n * languages.\n * 6. There was an existing JavaScript implementation that doesn't require\n * BigInt, for IE11 compatibility.\n */\nexport function generateMsgId(strings, isHtmlTagged) {\n return ((isHtmlTagged ? HTML_PREFIX : STRING_PREFIX) +\n fnv1a64(typeof strings === 'string' ? strings : strings.join(HASH_DELIMITER)));\n}\n//# sourceMappingURL=id-generation.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { defaultMsg } from './default-msg.js';\nimport { joinStringsAndValues } from './str-tag.js';\nimport { generateMsgId } from './id-generation.js';\nconst expressionOrders = new WeakMap();\nconst hashCache = new Map();\nexport function runtimeMsg(templates, template, options) {\n if (templates) {\n const id = options?.id ?? generateId(template);\n const localized = templates[id];\n if (localized) {\n if (typeof localized === 'string') {\n // E.g. \"Hello World!\"\n return localized;\n }\n else if ('strTag' in localized) {\n // E.g. str`Hello ${name}!`\n //\n // Localized templates have ${number} in place of real template\n // expressions. They can't have real template values, because the\n // variable scope would be wrong. The number tells us the index of the\n // source value to substitute in its place, because expressions can be\n // moved to a different position during translation.\n return joinStringsAndValues(localized.strings, \n // Cast `template` because its type wasn't automatically narrowed (but\n // we know it must be the same type as `localized`).\n template.values, localized.values);\n }\n else {\n // E.g. html`Hello ${name}!`\n //\n // We have to keep our own mapping of expression ordering because we do\n // an in-place update of `values`, and otherwise we'd lose ordering for\n // subsequent renders.\n let order = expressionOrders.get(localized);\n if (order === undefined) {\n order = localized.values;\n expressionOrders.set(localized, order);\n }\n return {\n ...localized,\n values: order.map((i) => template.values[i]),\n };\n }\n }\n }\n return defaultMsg(template);\n}\nfunction generateId(template) {\n const strings = typeof template === 'string' ? template : template.strings;\n let id = hashCache.get(strings);\n if (id === undefined) {\n id = generateMsgId(strings, typeof template !== 'string' && !('strTag' in template));\n hashCache.set(strings, id);\n }\n return id;\n}\n//# sourceMappingURL=runtime-msg.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { Deferred } from '../internal/deferred.js';\nimport { LOCALE_STATUS_EVENT } from '../internal/locale-status-event.js';\nimport { runtimeMsg } from '../internal/runtime-msg.js';\nimport { _installMsgImplementation } from './install.js';\n/**\n * Dispatch a \"lit-localize-status\" event to `window` with the given detail.\n */\nfunction dispatchStatusEvent(detail) {\n window.dispatchEvent(new CustomEvent(LOCALE_STATUS_EVENT, { detail }));\n}\nlet activeLocale = '';\nlet loadingLocale;\nlet sourceLocale;\nlet validLocales;\nlet loadLocale;\nlet templates;\nlet loading = new Deferred();\n// The loading promise must be initially resolved, because that's what we should\n// return if the user immediately calls setLocale(sourceLocale).\nloading.resolve();\nlet requestId = 0;\n/**\n * Set configuration parameters for lit-localize when in runtime mode. Returns\n * an object with functions:\n *\n * - `getLocale`: Return the active locale code.\n * - `setLocale`: Set the active locale code.\n *\n * Throws if called more than once.\n */\nexport const configureLocalization = (config) => {\n _installMsgImplementation(((template, options) => runtimeMsg(templates, template, options)));\n activeLocale = sourceLocale = config.sourceLocale;\n validLocales = new Set(config.targetLocales);\n validLocales.add(config.sourceLocale);\n loadLocale = config.loadLocale;\n return { getLocale, setLocale };\n};\n/**\n * Return the active locale code.\n */\nconst getLocale = () => {\n return activeLocale;\n};\n/**\n * Set the active locale code, and begin loading templates for that locale using\n * the `loadLocale` function that was passed to `configureLocalization`. Returns\n * a promise that resolves when the next locale is ready to be rendered.\n *\n * Note that if a second call to `setLocale` is made while the first requested\n * locale is still loading, then the second call takes precedence, and the\n * promise returned from the first call will resolve when second locale is\n * ready. If you need to know whether a particular locale was loaded, check\n * `getLocale` after the promise resolves.\n *\n * Throws if the given locale is not contained by the configured `sourceLocale`\n * or `targetLocales`.\n */\nconst setLocale = (newLocale) => {\n if (newLocale === (loadingLocale ?? activeLocale)) {\n return loading.promise;\n }\n if (!validLocales || !loadLocale) {\n throw new Error('Internal error');\n }\n if (!validLocales.has(newLocale)) {\n throw new Error('Invalid locale code');\n }\n requestId++;\n const thisRequestId = requestId;\n loadingLocale = newLocale;\n if (loading.settled) {\n loading = new Deferred();\n }\n dispatchStatusEvent({ status: 'loading', loadingLocale: newLocale });\n const localePromise = newLocale === sourceLocale\n ? // We could switch to the source locale synchronously, but we prefer to\n // queue it on a microtask so that switching locales is consistently\n // asynchronous.\n Promise.resolve({ templates: undefined })\n : loadLocale(newLocale);\n localePromise.then((mod) => {\n if (requestId === thisRequestId) {\n activeLocale = newLocale;\n loadingLocale = undefined;\n templates = mod.templates;\n dispatchStatusEvent({ status: 'ready', readyLocale: newLocale });\n loading.resolve();\n }\n // Else another locale was requested in the meantime. Don't resolve or\n // reject, because the newer load call is going to use the same promise.\n // Note the user can call getLocale() after the promise resolves if they\n // need to check if the locale is still the one they expected to load.\n }, (err) => {\n if (requestId === thisRequestId) {\n dispatchStatusEvent({\n status: 'error',\n errorLocale: newLocale,\n errorMessage: err.toString(),\n });\n loading.reject(err);\n }\n });\n return loading.promise;\n};\n//# sourceMappingURL=runtime.js.map","// Do not modify this file by hand!\n// Re-generate this file by running lit-localize.\n\n/**\n * The locale code that templates in this source code are written in.\n */\nexport const sourceLocale = `en`;\n\n/**\n * The other locale codes that this application is localized into. Sorted\n * lexicographically.\n */\nexport const targetLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `es`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n\n/**\n * All valid project locale codes. Sorted lexicographically.\n */\nexport const allLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `en`,\n `es`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.`,\n's1b9047d53d9f9d22': `2) Нажать \"Поделиться\"`,\n's37a9e8aec5713460': `Подробнее`,\n's5c6aad7a7e4a1437': `3) Нажать \"На экран «Домой»\"`,\n's6196153c4b0c1ea0': `Установить`,\n's922329d6f6213590': `Добавить в Dock`,\n'sa5ef80b4bb9b39f8': `Свернуть`,\n'sa7551383d1897fcc': `2) Нажмите \"Добавить в Dock\"`,\n'sba52286c21552a4e': `Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.`,\n'sc79fd7641eb9a975': `Спрятать Инструкцию`,\n'scdaf4bbff76674c8': `На экран «Домой»`,\n'sdfe23506a3b0cdc8': `1) Открыть в Safari браузере`,\n'se740f75b95a51807': `Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.`,\n'sfea652f6580ff086': `Этот веб-сайт имеет функционал приложения.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.`,\n's1b9047d53d9f9d22': `2) Gezinme çubuğunda Paylaş'a basın`,\n's37a9e8aec5713460': `Daha Fazla`,\n's5c6aad7a7e4a1437': `3) Ana Ekrana Ekle'ye basın`,\n's6196153c4b0c1ea0': `Yükle`,\n's922329d6f6213590': `Dock’a Ekle`,\n'sa5ef80b4bb9b39f8': `Küçült`,\n'sa7551383d1897fcc': `2) Dock’a ekleye basın`,\n'sba52286c21552a4e': `Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.`,\n'sc79fd7641eb9a975': `Talimatları gizle`,\n'scdaf4bbff76674c8': `Ana Ekrana Ekle`,\n'sdfe23506a3b0cdc8': `1) Safari tarayıcısında açın`,\n'se740f75b95a51807': `Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.`,\n'sfea652f6580ff086': `Bu site uygulama işlevselliğine sahiptir.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n's1b9047d53d9f9d22': `2) Drücken Sie auf Teilen in der Navigationsleiste`,\n's37a9e8aec5713460': `Mehr`,\n's5c6aad7a7e4a1437': `3) Drücken Sie Hinzufügen zum Startbildschirm`,\n's6196153c4b0c1ea0': `Installieren`,\n's922329d6f6213590': `Zum Dock hinzufügen`,\n'sa5ef80b4bb9b39f8': `Weniger`,\n'sa7551383d1897fcc': `2) Drücken Sie auf Zum Dock hinzufügen`,\n'sba52286c21552a4e': `Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.`,\n'sc79fd7641eb9a975': `Anleitung ausblenden`,\n'scdaf4bbff76674c8': `Hinzufügen zum Startbildschirm`,\n'sdfe23506a3b0cdc8': `1) In Safari-Browser öffnen`,\n'se740f75b95a51807': `Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n'sfea652f6580ff086': `Diese Website verfügt über App-Funktionalität.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.`,\n's1b9047d53d9f9d22': `2) Presionar Compartir en la barra de direcciones`,\n's37a9e8aec5713460': `Más`,\n's5c6aad7a7e4a1437': `3) Presionar Añadir a pantalla de inicio`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Añadir al Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Presionar Añadir al Dock`,\n'sba52286c21552a4e': `Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.`,\n'sc79fd7641eb9a975': `Esconder instrucciones`,\n'scdaf4bbff76674c8': `Añadir a pantalla de inicio`,\n'sdfe23506a3b0cdc8': `1) Abrir en el navegador web Safari`,\n'se740f75b95a51807': `Añádelo a tu Dock para una experiencia amplia y acceso fácil.`,\n'sfea652f6580ff086': `Este sitio tiene funcionalidad de aplicación.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.`,\n's1b9047d53d9f9d22': `2) Druk op delen in de navigatiebalk`,\n's37a9e8aec5713460': `Meer`,\n's5c6aad7a7e4a1437': `3) Druk op Toevoegen aan het startscherm`,\n's6196153c4b0c1ea0': `Installeren`,\n's922329d6f6213590': `Toevoegen aan Dock`,\n'sa5ef80b4bb9b39f8': `Minder`,\n'sa7551383d1897fcc': `2) Druk op Toevoegen aan Dock`,\n'sba52286c21552a4e': `Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.`,\n'sc79fd7641eb9a975': `Instructie verbergen`,\n'scdaf4bbff76674c8': `Toevoegen aan het startscherm`,\n'sdfe23506a3b0cdc8': `1) Open in Safari-browser`,\n'se740f75b95a51807': `Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.`,\n'sfea652f6580ff086': `Deze site heeft app-functionaliteit.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n's1b9047d53d9f9d22': `2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης`,\n's37a9e8aec5713460': `Περισσότερα`,\n's5c6aad7a7e4a1437': `3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας`,\n's6196153c4b0c1ea0': `Εγκατάσταση`,\n's922329d6f6213590': `Προσθήκη στην Πρόσβαση`,\n'sa5ef80b4bb9b39f8': `Λιγότερα`,\n'sa7551383d1897fcc': `2) Πατήστε Προσθήκη στην Πρόσβαση`,\n'sba52286c21552a4e': `Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sc79fd7641eb9a975': `Απόκρυψη Οδηγιών`,\n'scdaf4bbff76674c8': `Προσθήκη στην Οθόνη Αφετηρίας`,\n'sdfe23506a3b0cdc8': `1) Ανοίξτε τον περιηγητή Safari`,\n'se740f75b95a51807': `Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sfea652f6580ff086': `Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.`,\n's1b9047d53d9f9d22': `2) Appuyez sur Partager dans la barre de navigation`,\n's37a9e8aec5713460': `Plus`,\n's5c6aad7a7e4a1437': `3) Appuyez sur Ajouter à l'écran d'accueil`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Ajouter au Dock`,\n'sa5ef80b4bb9b39f8': `Moins`,\n'sa7551383d1897fcc': `2) Appuyez sur Ajouter au Dock`,\n'sba52286c21552a4e': `Installez-le sur votre appareil pour une expérience complète et un accès facile.`,\n'sc79fd7641eb9a975': `Masquer les instructions`,\n'scdaf4bbff76674c8': `Ajouter à l'écran d'accueil`,\n'sdfe23506a3b0cdc8': `1) Ouvrir dans le navigateur Safari`,\n'se740f75b95a51807': `Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.`,\n'sfea652f6580ff086': `Ce site possède des fonctionnalités d'application.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Додајте га на Home Screen за широке могућности и лак приступ.`,\n's1b9047d53d9f9d22': `2) Притисните Share у навигационој траци`,\n's37a9e8aec5713460': `Више`,\n's5c6aad7a7e4a1437': `3) Притисните Add to Home Screen`,\n's6196153c4b0c1ea0': `Инсталирај`,\n'sa5ef80b4bb9b39f8': `Мање`,\n'sa7551383d1897fcc': `3) Притисните Add to Dock`,\n'sba52286c21552a4e': `Инсталирајте га на вашем уређају за широке могућности и лак приступ.`,\n'sc79fd7641eb9a975': `Сакриј упутство`,\n'sdfe23506a3b0cdc8': `1) Отворите у Safari прегледачу`,\n'se740f75b95a51807': `Додајте га у вашу Dock за широке могућности и лак приступ.`,\n'sfea652f6580ff086': `Овај сајт има функционалност апликације.`,\n's922329d6f6213590': `Add to Dock`,\n'scdaf4bbff76674c8': `Add to Home Screen`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n's1b9047d53d9f9d22': `2) Wybierz \"Udostępnij\"`,\n's37a9e8aec5713460': `Więcej`,\n's5c6aad7a7e4a1437': `3) Wybierz \"Dodaj do Ekranu Głównego\"`,\n's6196153c4b0c1ea0': `Zainstaluj`,\n's922329d6f6213590': `Dodaj do Docka`,\n'sa5ef80b4bb9b39f8': `Mniej`,\n'sa7551383d1897fcc': `2) Wybierz \"Dodaj do Docka\"`,\n'sba52286c21552a4e': `Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sc79fd7641eb9a975': `Ukryj instrukcję`,\n'scdaf4bbff76674c8': `Dodaj do Ekranu Głównego`,\n'sdfe23506a3b0cdc8': `1) Otwórz przeglądarkę Safari`,\n'se740f75b95a51807': `Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sfea652f6580ff086': `Ta strona posiada funkcje aplikacji.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Додайте на Домашній екран для зручного доступу та ширших можливостей.`,\n's1b9047d53d9f9d22': `2) Натиснути «Поділитися»`,\n's37a9e8aec5713460': `Детальніше`,\n's5c6aad7a7e4a1437': `3) Натиснути «На Початковий екран»`,\n's6196153c4b0c1ea0': `Встановити`,\n's922329d6f6213590': `Додати на Dock`,\n'sa5ef80b4bb9b39f8': `Згорнути`,\n'sa7551383d1897fcc': `2) Натиснути «Додати на Dock»`,\n'sba52286c21552a4e': `Встановіть на ваш пристрій для зручного доступу та ширших можливостей.`,\n'sc79fd7641eb9a975': `Сховати Інструкцію`,\n'scdaf4bbff76674c8': `На Початковий экран`,\n'sdfe23506a3b0cdc8': `1) Відкрити в Safari браузері`,\n'se740f75b95a51807': `Додайте на панель Dock для зручного доступу та ширших можливостей.`,\n'sfea652f6580ff086': `Цей сайт має функції додатку.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。`,\n's1b9047d53d9f9d22': `2) 點擊列表上的分享按鈕`,\n's37a9e8aec5713460': `詳細資訊`,\n's5c6aad7a7e4a1437': `3) 點擊加入主畫面`,\n's6196153c4b0c1ea0': `安裝`,\n's922329d6f6213590': `添加到Dock欄`,\n'sa5ef80b4bb9b39f8': `簡短資訊`,\n'sa7551383d1897fcc': `2) 點選添加到Dock欄`,\n'sba52286c21552a4e': `在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。`,\n'sc79fd7641eb9a975': `隱藏安裝流程`,\n'scdaf4bbff76674c8': `將App加入主畫面`,\n'sdfe23506a3b0cdc8': `1) 在Safari上瀏覽此網頁`,\n'se740f75b95a51807': `將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。`,\n'sfea652f6580ff086': `此網站具有應用程式功能。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `将其添加到主屏幕,以享受更丰富的体验并便于访问。`,\n's1b9047d53d9f9d22': `2) 点击导航栏中的“分享”按钮`,\n's37a9e8aec5713460': `更多`,\n's5c6aad7a7e4a1437': `3) 点击“添加到主屏幕”`,\n's6196153c4b0c1ea0': `安装`,\n's922329d6f6213590': `添加到程序坞`,\n'sa5ef80b4bb9b39f8': `收起`,\n'sa7551383d1897fcc': `2) 点击“添加到程序坞”`,\n'sba52286c21552a4e': `在您的设备上安装,以享受更丰富的体验并便于访问。`,\n'sc79fd7641eb9a975': `隐藏安装步骤`,\n'scdaf4bbff76674c8': `添加到主屏幕`,\n'sdfe23506a3b0cdc8': `1) 在 Safari 浏览器中打开此页面`,\n'se740f75b95a51807': `将其添加到您的程序坞,以享受更全面的体验并便于访问。`,\n'sfea652f6580ff086': `此网站具备 App 功能特性。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.`,\n's1b9047d53d9f9d22': `2) Premi Condividi nella barra di navigazione`,\n's37a9e8aec5713460': `Più`,\n's5c6aad7a7e4a1437': `3) Premi Aggiungi alla schermata principale`,\n's6196153c4b0c1ea0': `Installa`,\n's922329d6f6213590': `Aggiungi al Dock`,\n'sa5ef80b4bb9b39f8': `Meno`,\n'sa7551383d1897fcc': `2) Premi Aggiungi al Dock`,\n'sba52286c21552a4e': `Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.`,\n'sc79fd7641eb9a975': `Nascondi istruzioni`,\n'scdaf4bbff76674c8': `Aggiungi alla schermata principale`,\n'sdfe23506a3b0cdc8': `1) Apri nel browser Safari`,\n'se740f75b95a51807': `Aggiungilo al Dock per un'esperienza più completa e un accesso facile.`,\n'sfea652f6580ff086': `Questo sito ha funzionalità di app.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Přidejte jej na plochu pro rozšířené využití a snadný přístup.`,\n's1b9047d53d9f9d22': `2) Stiskněte tlačítko Sdílet na navigačním panelu`,\n's37a9e8aec5713460': `Vice`,\n's5c6aad7a7e4a1437': `3) Stiskněte tlačítko Přidat na plochu`,\n's6196153c4b0c1ea0': `Nainstalovat`,\n's922329d6f6213590': `Přidat do Docku`,\n'sa5ef80b4bb9b39f8': `Méně`,\n'sa7551383d1897fcc': `2) Stiskněte Přidat do Docku`,\n'sba52286c21552a4e': `Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.`,\n'sc79fd7641eb9a975': `Skrýt instrukce`,\n'scdaf4bbff76674c8': `Přidat na plochu`,\n'sdfe23506a3b0cdc8': `1) Otevřete v prohlížeči Safari`,\n'se740f75b95a51807': `Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.`,\n'sfea652f6580ff086': `Tento web má funkce aplikace.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.`,\n's1b9047d53d9f9d22': `2) Trykk på Del-knappen i navigasjonslinjen`,\n's37a9e8aec5713460': `Mer`,\n's5c6aad7a7e4a1437': `3) Velg Legg til på Hjem-skjerm`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Legg til i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Velg Legg til i Dock`,\n'sba52286c21552a4e': `Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sc79fd7641eb9a975': `Skjul instruksjoner`,\n'scdaf4bbff76674c8': `Legg til på Hjem-skjerm`,\n'sdfe23506a3b0cdc8': `1) Åpne i Safari`,\n'se740f75b95a51807': `Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sfea652f6580ff086': `Denne siden har app-funksjonalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.`,\n's1b9047d53d9f9d22': `2) Pressione Compartilhar na barra de endereço`,\n's37a9e8aec5713460': `Mais`,\n's5c6aad7a7e4a1437': `3) Pressione Adicionar à Tela de Início`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Adicionar ao Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Pressione Adicionar ao Dock`,\n'sba52286c21552a4e': `Instale no dispositivo para uma melhor experiência e mais fácil acesso.`,\n'sc79fd7641eb9a975': `Ocultar Instruções`,\n'scdaf4bbff76674c8': `Adicionar à Tela de Início`,\n'sdfe23506a3b0cdc8': `1) Abra no navegador Safari`,\n'se740f75b95a51807': `Adicione ao Dock para uma melhor experiência e mais fácil acesso.`,\n'sfea652f6580ff086': `Este site possui funcionalidade de aplicativo.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。`,\n's1b9047d53d9f9d22': `2) ナビゲーションバーで共有を押す`,\n's37a9e8aec5713460': `展開`,\n's5c6aad7a7e4a1437': `3) 「ホーム画面に追加」を押す`,\n's6196153c4b0c1ea0': `インストール`,\n's922329d6f6213590': `Dockに追加`,\n'sa5ef80b4bb9b39f8': `折りたたむ`,\n'sa7551383d1897fcc': `2) 「Dockに追加」を押す`,\n'sba52286c21552a4e': `デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。`,\n'sc79fd7641eb9a975': `説明を非表示`,\n'scdaf4bbff76674c8': `ホーム画面に追加`,\n'sdfe23506a3b0cdc8': `1) Safariで開く`,\n'se740f75b95a51807': `ドックに追加して、幅広い体験と簡単なアクセスを実現してください。`,\n'sfea652f6580ff086': `このサイトはアプリ機能があります。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.`,\n's1b9047d53d9f9d22': `2) Tryck på Dela-knappen i verktygsfältet`,\n's37a9e8aec5713460': `Mer`,\n's5c6aad7a7e4a1437': `3) Välj Lägg till på hemskärmen`,\n's6196153c4b0c1ea0': `Installera`,\n's922329d6f6213590': `Lägg till i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Välj Lägg till i Dock`,\n'sba52286c21552a4e': `Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sc79fd7641eb9a975': `Göm instruktioner`,\n'scdaf4bbff76674c8': `Lägg till på hemskärmen`,\n'sdfe23506a3b0cdc8': `1) Öppna i Safari`,\n'se740f75b95a51807': `Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sfea652f6580ff086': `Denna webbsajt har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.`,\n's1b9047d53d9f9d22': `2) 내비게이션 바에서 공유 버튼 누르기`,\n's37a9e8aec5713460': `더보기`,\n's5c6aad7a7e4a1437': `3) 홈 화면에 추가 버튼 누르기`,\n's6196153c4b0c1ea0': `설치`,\n's922329d6f6213590': `Dock에 추가`,\n'sa5ef80b4bb9b39f8': `닫기`,\n'sa7551383d1897fcc': `2) Dock에 추가 버튼 누르기`,\n'sba52286c21552a4e': `더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.`,\n'sc79fd7641eb9a975': `안내 숨기기`,\n'scdaf4bbff76674c8': `홈 화면에 추가`,\n'sdfe23506a3b0cdc8': `1) Safari 브라우저에서 열기`,\n'se740f75b95a51807': `더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.`,\n'sfea652f6580ff086': `이 사이트는 앱 기능을 가지고 있습니다.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n's1b9047d53d9f9d22': `2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ`,\n's37a9e8aec5713460': `បង្ហាញបន្ថែម`,\n's5c6aad7a7e4a1437': `3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n's6196153c4b0c1ea0': `តំឡើង`,\n's922329d6f6213590': `បន្ថែមទៅកាន់ Dock`,\n'sa5ef80b4bb9b39f8': `បង្ហាញតិច`,\n'sa7551383d1897fcc': `2) ចុចលើ បន្ថែមទៅកាន់ Dock`,\n'sba52286c21552a4e': `តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sc79fd7641eb9a975': `បិទការណែនាំ`,\n'scdaf4bbff76674c8': `បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n'sdfe23506a3b0cdc8': `1) បើកនៅក្នុងកម្មវិធី Safari`,\n'se740f75b95a51807': `បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sfea652f6580ff086': `គេហទំព័រនេះមានមុខងារជាកម្មវិធី។`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's182ab2d6c997515f': `Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.`,\n's1b9047d53d9f9d22': `2) Tryk på Del-knappen i navigationslinjen`,\n's37a9e8aec5713460': `Mere`,\n's5c6aad7a7e4a1437': `3) Vælg Tilføj til hjemmeskærm`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Tilføj til Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Vælg Tilføj til Dock`,\n'sba52286c21552a4e': `Installer den på din enhed for en bedre oplevelse og nem adgang.`,\n'sc79fd7641eb9a975': `Skjul instruktion`,\n'scdaf4bbff76674c8': `Tilføj til hjemmeskærm`,\n'sdfe23506a3b0cdc8': `1) Åbn i Safari-browseren`,\n'se740f75b95a51807': `Tilføj den til din Dock for en bedre oplevelse og nem adgang.`,\n'sfea652f6580ff086': `Denne side har app-funktionalitet.`,\n };\n ","import { configureLocalization } from '@lit/localize';\r\nimport {\r\n sourceLocale,\r\n targetLocales,\r\n} from './locale-codes';\r\n\r\nimport * as ru from './locales/ru';\r\nimport * as tr from './locales/tr';\r\nimport * as de from \"./locales/de\";\r\nimport * as es from \"./locales/es\";\r\nimport * as nl from \"./locales/nl\";\r\nimport * as el from \"./locales/el\";\r\nimport * as fr from \"./locales/fr\";\r\nimport * as sr from \"./locales/sr\";\r\nimport * as pl from \"./locales/pl\";\r\nimport * as uk from \"./locales/uk\";\r\nimport * as zhHK from \"./locales/zh-HK\";\r\nimport * as zhCN from \"./locales/zh-CN\";\r\nimport * as it from \"./locales/it\";\r\nimport * as cs from \"./locales/cs\";\r\nimport * as no from \"./locales/no\";\r\nimport * as pt from \"./locales/pt\";\r\nimport * as ja from \"./locales/ja\";\r\nimport * as sv from \"./locales/sv\";\r\nimport * as ko from \"./locales/ko\";\r\nimport * as km from \"./locales/km\";\r\nimport * as da from \"./locales/da\";\r\n\r\nconst localizedTemplates = new Map([\r\n ['ru', ru],\r\n ['tr', tr],\r\n ['de', de],\r\n ['es', es],\r\n ['nl', nl],\r\n ['el', el],\r\n ['fr', fr],\r\n ['sr', sr],\r\n ['pl', pl],\r\n ['uk', uk],\r\n ['zh-HK', zhHK],\r\n ['zh-CN', zhCN],\r\n ['it', it],\r\n ['cs', cs],\r\n ['no', no], // + nb\r\n ['pt', pt],\r\n ['ja', ja],\r\n ['sv', sv],\r\n ['ko', ko],\r\n ['km', km],\r\n ['da', da],\r\n])\r\n\r\nexport const { getLocale, setLocale } = configureLocalization({\r\n sourceLocale,\r\n targetLocales,\r\n // @ts-ignore\r\n loadLocale: async (lang: string) => localizedTemplates.get(lang)\r\n});\r\n\r\nexport const changeLocale = (lang: string) => {\r\n // Norwegian Bokmål is same as Norwegian\r\n switch (lang.slice(0, 2)) {\r\n case 'nb':\r\n lang = 'no';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // Fallback to simplified Chinese\r\n switch (lang) {\r\n case 'zh':\r\n case 'zh-TW':\r\n lang = 'zh-CN';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n try {\r\n if (localizedTemplates.get(lang))\r\n setLocale(lang);\r\n else\r\n setLocale(lang.slice(0, 2));\r\n }\r\n catch {\r\n console.warn(`pwa-install: translation error - unsupported locale: ${lang}`);\r\n }\r\n};\r\n","import { ImageResource } from 'web-app-manifest';\r\n\r\nexport interface IRelatedApp {\r\n id: string,\r\n platform: string,\r\n url: string\r\n}\r\n\r\nexport interface IWindow extends Window {\r\n defferedPromptEvent: BeforeInstallPromptEvent | null;\r\n}\r\n\r\ntype Booleanish = 'true' | 'false';\r\n\r\nexport interface PWAInstallAttributes {\r\n ['manual-apple']?: Booleanish;\r\n ['manual-chrome']?: Booleanish;\r\n ['disable-chrome']?: Booleanish;\r\n ['install-description']?: string;\r\n ['disable-install-description']?: Booleanish;\r\n ['manifest-url']?: string;\r\n name?: string;\r\n description?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ManifestScreenshot extends ImageResource {\r\n label?: string;\r\n platform?: string;\r\n form_factor?: \"wide\" | \"narrow\";\r\n}\r\n\r\nexport class Manifest {\r\n constructor() {\r\n this.icons = [{ src: '' }];\r\n this.screenshots = undefined;\r\n this.short_name = 'PWA';\r\n this.name = 'Progressive web application';\r\n this.description = 'Progressive web application';\r\n }\r\n short_name: string;\r\n icons: ImageResource[];\r\n screenshots?: ManifestScreenshot[];\r\n name: string;\r\n description: string;\r\n}\r\n","import {css} from 'lit'; export default css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`;\n ","import { WebAppManifest } from 'web-app-manifest';\r\nimport { IRelatedApp } from './types/types';\r\n\r\nconst _eventDispatcher = (_element: Element, name: string, message: string) => {\r\n const event = new CustomEvent(name, {\r\n detail: {\r\n message\r\n }\r\n });\r\n _element.dispatchEvent(event);\r\n}\r\nexport default class Utils {\r\n static isAppleMobile(): boolean {\r\n\t\tif (\r\n (\r\n ['iPhone', 'iPad', 'iPod'].includes(navigator.platform) ||\r\n (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2)\r\n )\r\n && ('serviceWorker' in navigator)\r\n )\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static isAppleDesktop(): boolean {\r\n // check if it's a mac\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n if (navigator.maxTouchPoints || !userAgent.match(/macintosh/))\r\n return false;\r\n // check safari version >= 17\r\n const version = /version\\/(\\d{2})\\./.exec(userAgent)\r\n if (!version || !version[1] || !(parseInt(version[1]) >= 17))\r\n return false;\r\n // hacky way to detect Sonoma\r\n const audioCheck = document.createElement('audio').canPlayType('audio/wav; codecs=\"1\"') ? true : false;\r\n const webGLCheck = new OffscreenCanvas(1, 1).getContext('webgl') ? true : false;\r\n\r\n return audioCheck && webGLCheck;\r\n }\r\n\r\n static deviceFormFactor(): 'narrow' | 'wide' {\r\n return window.matchMedia('(orientation: portrait)').matches? 'narrow' : 'wide';\r\n }\r\n \r\n static isStandalone() {\r\n\t\tif (window.matchMedia('(display-mode: standalone)').matches || ('standalone' in navigator && (navigator as any).standalone === true))\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static async getInstalledRelatedApps(): Promise {\r\n if ('getInstalledRelatedApps' in navigator)\r\n try{\r\n return await (navigator as any).getInstalledRelatedApps().then((relatedApps: IRelatedApp[]) => {\r\n return relatedApps;\r\n });\r\n } catch (e) {}\r\n \r\n return [];\r\n }\r\n \r\n static async isRelatedAppsInstalled(): Promise {\r\n const _relatedApps = await this.getInstalledRelatedApps();\r\n return _relatedApps.length? true : false;\r\n }\r\n\r\n static setStorageFlag(name: string, value:boolean, persistent: boolean = false) {\r\n try {\r\n if (persistent)\r\n localStorage.setItem(name, value.toString());\r\n else\r\n sessionStorage.setItem(name, value.toString());\r\n } catch (e) {}\r\n }\r\n static getStorageFlag(name: string): boolean {\r\n try {\r\n return sessionStorage.getItem(name) === 'true' || localStorage.getItem(name) === 'true';\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n static eventInstalledSuccess(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-success-event', 'App install success (Chromium/Android only)');\r\n }\r\n static eventInstalledFail(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-fail-event', 'App install failed (Chromium/Android only)');\r\n }\r\n static eventUserChoiceResult(_element: Element, message: string) {\r\n _eventDispatcher(_element, 'pwa-user-choice-result-event', message);\r\n }\r\n static eventInstallAvailable(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-available-event', 'App install available');\r\n }\r\n static eventInstallHowTo(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-how-to-event', 'App install instruction showed');\r\n }\r\n static eventGallery(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-gallery-event', 'App install gallery showed');\r\n }\r\n\r\n static normalizeManifestAssetUrls(manifest: WebAppManifest, manifestUrl: string) {\r\n const normalizedManifestUrl = new URL(manifestUrl, document.location.href);\r\n [...manifest.icons || [], ...manifest.screenshots || []].forEach(asset => {\r\n asset.src = new URL(asset.src, normalizedManifestUrl).href;\r\n })\r\n }\r\n}","import { html } from 'lit';\r\nimport Utils from '../utils';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nconst template = (screenshots: ManifestScreenshot[], theme: string, scrollToNextPage: any, scrollToPrevPage: any) => {\r\n\r\n return html`\r\n ${screenshots? html`\r\n
\r\n
\r\n
\r\n ${screenshots.filter(screenshot => !screenshot.form_factor || screenshot.form_factor === Utils.deviceFormFactor()).map(screenshot => html`${screenshot.label || \"\"}`)}\r\n
\r\n
\r\n \r\n ${theme != 'default'?\r\n html``\r\n :\r\n html``\r\n }\r\n \r\n \r\n ${theme != 'default'?\r\n html`\r\n \r\n `\r\n :\r\n html`\r\n \r\n \r\n \r\n `\r\n }\r\n \r\n
`\r\n : ''}`;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nimport styles from './styles-gallery.scss';\r\nimport template from './template-gallery';\r\n\r\n@customElement('pwa-gallery')\r\nexport default class PWAGalleryElement extends LitElement {\r\n\t@property({ type: Array }) screenshots: ManifestScreenshot[] = [];\r\n\t@property() theme: 'default' | 'apple_desktop' | 'apple_mobile' = 'default';\r\n\r\n\tstatic get styles() {\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tprivate getScrollElements = () => {\r\n\t\tconst gallery = this.shadowRoot?.querySelector('#paginated_gallery') as HTMLElement | null;\r\n\t\tif (!gallery) return;\r\n\t\t\r\n\t\tconst galleryScroller = gallery.querySelector('.gallery_scroller') as HTMLElement | null;\r\n\t\tif (!galleryScroller) return;\r\n\t\r\n\t\tconst galleryItems = Array.from(galleryScroller.querySelectorAll('img')) as HTMLElement[];\r\n\t\tif (galleryItems.length === 0) return;\r\n\t\r\n\t\treturn {\r\n\t\t\tscroller: galleryScroller,\r\n\t\t\titems: galleryItems\r\n\t\t};\r\n\t};\r\n\t\r\n\tprivate findCurrentItem = (scroller: HTMLElement, items: HTMLElement[]): HTMLElement | null => {\r\n\t\tconst scrollLeft = scroller.scrollLeft;\r\n\t \t// Find the item closest to the center of the viewport.\r\n\t\treturn items.find((item) => (item.offsetWidth + item.offsetLeft) >= scrollLeft + (item.offsetWidth / 2.5)) || null;\r\n\t};\r\n\t\r\n\tprivate scrollToPage = (direction: 'next' | 'prev') => {\r\n\t\tconst scrollData = this.getScrollElements();\r\n\t\tif (!scrollData) return;\r\n\t\r\n\t\tconst { scroller, items } = scrollData;\r\n\t\tconst currentItem = this.findCurrentItem(scroller, items);\r\n\t\tif (!currentItem) return;\r\n\t\r\n\t\tconst currentIndex = items.indexOf(currentItem);\r\n\t\tconst offset = direction === 'next' ? 1 : -1;\r\n\t\tconst targetIndex = currentIndex + offset;\r\n\t\t\r\n\t\tif (targetIndex >= 0 && targetIndex < items.length) {\r\n\t\t\titems[targetIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\r\n\t\t}\r\n\t};\r\n\t\r\n\tpublic scrollToNextPage = () => {\r\n\t\tthis.scrollToPage('next');\r\n\t};\r\n\t\r\n\tpublic scrollToPrevPage = () => {\r\n\t\tthis.scrollToPage('prev');\r\n\t};\r\n\r\n\r\n\tprivate _init = () => {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tconst _tools = this.getScrollElements();\r\n\t\tif (_tools)\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\t_tools.scroller.scrollTo({\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t300\r\n\t\t\t)\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\tthis._init();\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(\r\n this.screenshots,\r\n\t\t\tthis.theme,\r\n\t\t\tthis.scrollToNextPage,\r\n\t\t\tthis.scrollToPrevPage\r\n )}`;\r\n\t}\r\n}\r\n","import { html } from 'lit';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, icon: string, install: any) => {\r\n return html`\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${location.hostname}
\r\n
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\n\r\n// import TouchDragListener from \"./touch-listener\";\r\n\r\ntype IProps = {\r\n name: string,\r\n description: string,\r\n icon: string\r\n}\r\n\r\nimport template from './template-bottom-sheet';\r\nimport Utils from '../../../utils';\r\n\r\n@customElement('pwa-bottom-sheet')\r\nexport default class PWABottomSheetElement extends LitElement {\r\n\t@property({type: Object}) props: IProps = {\r\n name: '',\r\n description: '',\r\n icon: ''\r\n };\r\n @property({type: Object}) install = {handleEvent: () => {}};\r\n\t@property() hideDialog = () => {};\r\n\t@property() disableClose = false;\r\n\r\n\tprivate _callInstall = () => {\r\n\t\tthis.install.handleEvent();\r\n\t}\r\n\r\n\tprivate _callHide = () => {\r\n\t\tthis.hideDialog();\r\n\t\tthis.setupAppearence();\r\n\t}\r\n\r\n\tprivate bindedElement: {\r\n\t\ttouchElement: HTMLElement,\r\n\t\tlistener: any }| null = null;\r\n\tprivate readonly _saveBodyStyle = document.body.style.overscrollBehaviorY;\r\n\tprivate dragMobileSheet = (element: HTMLElement | null | undefined, touchTargetElement: HTMLElement | undefined, infoElement: HTMLElement | undefined) => {\r\n\t\tif (!element || !touchTargetElement || !infoElement)\r\n\t\t\treturn null;\r\n\r\n\t\tlet dragOffset = 0;\r\n\t\tconst bounceOffset = 35;\r\n\t\tconst bottomSize = touchTargetElement.clientHeight + infoElement.clientHeight;\r\n\r\n\t\tconst getYCoord = (e: MouseEvent | TouchEvent): number => {\r\n\t\t\treturn (e as MouseEvent).clientY || ((e as TouchEvent).changedTouches && (e as TouchEvent).changedTouches.length? (e as TouchEvent).changedTouches[0].clientY : 0);\r\n\t\t}\r\n\r\n\t\tconst dragMouseDown = (e: MouseEvent | TouchEvent) => {\r\n\t\t\twindow.addEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.addEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.addEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.addEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tdragOffset = getYCoord(e) - touchTargetElement.getBoundingClientRect().top;\r\n\r\n\t\t\tdocument.body.style.overscrollBehaviorY = 'none';\r\n\t\t}\r\n\t\tconst dragMouseUp = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tdocument.body.style.overscrollBehaviorY = this._saveBodyStyle;\r\n\r\n\t\t\tif (!this.disableClose && getYCoord(e) >= window.innerHeight - 25) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight + 50, true);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (window.innerHeight - getYCoord(e) > element.clientHeight / 2.5) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - element.clientHeight);\r\n\t\t\t\t\r\n\t\t\t\ttry {\r\n\t\t\t\t\tUtils.eventGallery((this.getRootNode() as ShadowRoot).host);\r\n\t\t\t\t} catch (e) {}\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - bottomSize - bounceOffset);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dragMouseMove = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tconst currentY = getYCoord(e);\r\n\r\n\t\t\tif (this.disableClose && window.innerHeight - currentY < 70) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (currentY <= (window.innerHeight - element.clientHeight + dragOffset)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`none`\r\n\t\t\t)\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"--translateY\",\r\n\t\t\t\t`translateY(${currentY - dragOffset}px)`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst closeDragElement = (e: MouseEvent | TouchEvent, toPoint?: number, hideDialog?: boolean) => {\r\n\t\t\twindow.removeEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.removeEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.removeEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.removeEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tif (window.innerWidth >= 768)\r\n\t\t\t\treturn\r\n\r\n\t\t\tif (!toPoint && getYCoord(e) >= window.innerHeight - bottomSize)\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(calc(100vh - ${bottomSize}px))`\r\n\t\t\t\t);\r\n\t\t\telse\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(${(toPoint || getYCoord(e)) + bounceOffset}px)`\r\n\t\t\t\t);\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s`\r\n\t\t\t);\r\n\r\n\t\t\tif (hideDialog){\r\n\t\t\t\ttouchTargetElement.removeEventListener('mousedown', dragMouseDown);\r\n\t\t\t\ttouchTargetElement.removeEventListener('touchstart', dragMouseDown);\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\tthis._callHide,\r\n\t\t\t\t\t250\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ttouchTargetElement.addEventListener('mousedown', dragMouseDown);\r\n\t\ttouchTargetElement.addEventListener('touchstart', dragMouseDown, {passive: true});\r\n\r\n\t\tcloseDragElement(new MouseEvent('mouseup'), window.innerHeight - bottomSize - bounceOffset);\r\n\r\n\t\treturn {\r\n\t\t\ttouchElement: touchTargetElement,\r\n\t\t\tlistener: dragMouseDown\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupAppearence = () => {\r\n\t\tif (this.bindedElement) {\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('mousedown', this.bindedElement.listener);\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('touchstart', this.bindedElement.listener);\r\n\t\t}\r\n\r\n\t\tthis.bindedElement = this.dragMobileSheet(\r\n\t\t\tthis.parentElement?.parentElement,\r\n\t\t\tthis.parentElement?.getElementsByClassName('touch-header')[0] as HTMLElement,\r\n\t\t\tthis.parentElement?.getElementsByClassName('body-header')[0] as HTMLElement);\r\n\t}\r\n\tprivate _init = () => {\r\n\t\tthis.setupAppearence();\r\n\r\n\t\twindow.addEventListener('resize', this.setupAppearence);\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tthis._init();\r\n return;\r\n\t}\r\n\r\n createRenderRoot() {\r\n return this;\r\n }\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(this.props.name, this.props.description, this.props.icon, this._callInstall)}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,\"Segoe UI\",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:\"\";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,\"Segoe UI\",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:\"\";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`;\n ","import {css} from 'lit'; export default css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,\"Segoe UI\";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon description\" \"welcome welcome\" \"how-to how-to\" \"gallery gallery\" \"button button\";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon\" \"description\" \"welcome\" \"how-to\" \"gallery\" \"button\";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;\n ","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, install: any, toggleGallery: any, galleryRequested: boolean) => {\r\n const installDialogClasses = () => { return {available: installAvailable, gallery: galleryRequested }};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n ${!disableClose? html`` : ''}\r\n
\r\n
${location.hostname}
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n ${!disableDescription? \r\n html`
${installDescription? installDescription: `${msg('This site has app functionality.')} ${msg('Install it on your device for extensive experience and easy access.')}`}
` \r\n : ''}\r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n ${screenshotsAvailable? html``:''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n
\r\n
`;\r\n};\r\nexport default template;\r\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, howToForApple: any, isDesktop: boolean, howToRequested: boolean, toggleGallery: any, galleryRequested: boolean) => {\r\n const installDialogClassesApple = () => { return {available: installAvailable, 'how-to': howToRequested, gallery: galleryRequested, desktop: isDesktop}};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, PropertyValues, html } from 'lit';\r\nimport { localized } from '@lit/localize';\r\nimport { property, state, customElement } from 'lit/decorators.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { changeLocale } from './localization';\r\n\r\nimport { IRelatedApp, Manifest, IWindow, PWAInstallAttributes } from './types/types';\r\n\r\nimport PWAGalleryElement from './gallery';\r\nimport PWABottomSheetElement from './templates/chrome/bottom-sheet';\r\n\r\nimport Utils from './utils';\r\n\r\ndeclare const window: IWindow;\r\n\r\nimport styles from './templates/chrome/styles.scss';\r\nimport stylesApple from './templates/apple/styles-apple.scss';\r\n\r\nimport template from './templates/chrome/template';\r\nimport templateApple from './templates/apple/template-apple';\r\n\r\n/**\r\n * @event {CustomEvent} pwa-install-success-event - App install success (Chromium/Android only)\r\n * @event {CustomEvent} pwa-install-fail-event - App install failed (Chromium/Android only)\r\n * @event {CustomEvent} pwa-user-choice-result-event - dismissed, accepted\r\n * @event {CustomEvent} pwa-install-available-event - App install available\r\n * @event {CustomEvent} pwa-install-how-to-event - App install instruction showed\r\n * @event {CustomEvent} pwa-install-gallery-event - App install gallery showed\r\n */\r\n@localized()\r\n@customElement('pwa-install')\r\nexport class PWAInstallElement extends LitElement {\r\n\t@property({attribute: 'manifest-url'}) manifestUrl = '/manifest.json';\r\n\t@property() icon = '';\r\n\t@property() name = '';\r\n\t@property() description = '';\r\n\t@property({attribute: 'install-description'}) installDescription = '';\r\n\t@property({attribute: 'disable-install-description', type: Boolean}) disableDescription = false;\r\n\t@property({attribute: 'disable-screenshots', type: Boolean}) disableScreenshots = false;\r\n\t@property({attribute: 'disable-screenshots-apple', type: Boolean}) disableScreenshotsApple = false;\r\n\t@property({attribute: 'disable-screenshots-chrome', type: Boolean}) disableScreenshotsChrome = false;\r\n\t@property({attribute: 'manual-apple', type: Boolean}) manualApple = false;\r\n\t@property({attribute: 'manual-chrome', type: Boolean}) manualChrome = false;\r\n\t@property({attribute: 'disable-chrome', type: Boolean}) disableChrome = false;\r\n\t@property({attribute: 'disable-close', type: Boolean}) disableClose = false;\r\n\t@property({attribute: 'use-local-storage', type: Boolean}) useLocalStorage = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn [ styles, stylesApple ];\r\n\t}\r\n\r\n\t@state() externalPromptEvent: BeforeInstallPromptEvent | null = null;\r\n\r\n\tpublic platforms: BeforeInstallPromptEvent['platforms'] = [];\r\n\tpublic userChoiceResult = '';\r\n\r\n\tpublic isDialogHidden: boolean = Utils.getStorageFlag('pwa-hide-install');\r\n\tpublic isInstallAvailable = false;\r\n\tpublic isAppleMobilePlatform = false;\r\n\tpublic isAppleDesktopPlatform = false;\r\n\tpublic isUnderStandaloneMode = false;\r\n\tpublic isRelatedAppsInstalled = false;\r\n\r\n\t/** @internal */\r\n\tprivate _manifest: WebAppManifest = new Manifest();\r\n\t/** @internal */\r\n\tprivate _howToRequested = false;\r\n\t/** @internal */\r\n\tprivate _galleryRequested = false;\r\n\t/** @internal */\r\n\tprivate _install = {\r\n\t\thandleEvent: () => {\r\n\t\t\tif (window.defferedPromptEvent) {\r\n\t\t\t\tthis.hideDialog();\r\n\t\t\t\twindow.defferedPromptEvent.prompt();\r\n\t\t\t\twindow.defferedPromptEvent.userChoice\r\n\t\t\t\t\t.then((choiceResult: PromptResponseObject) => {\r\n\t\t\t\t\t\tthis.userChoiceResult = choiceResult.outcome;\r\n\t\t\t\t\t\tUtils.eventUserChoiceResult(this, this.userChoiceResult);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tUtils.eventInstalledFail(this);\r\n\t\t\t\t\t});\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\tpublic install = () => {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis._howToRequested = true;\r\n\t\t\tthis.requestUpdate();\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._install.handleEvent();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialog = {\r\n\t\thandleEvent: () => {\r\n\t\t\tthis.isDialogHidden = true;\r\n\t\t\tUtils.setStorageFlag('pwa-hide-install', true, this.useLocalStorage);\r\n\t\t\tthis.requestUpdate();\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialogUser = () => {\r\n\t\tUtils.eventUserChoiceResult(this, 'dismissed');\r\n\t\tthis.userChoiceResult = 'dismissed';\r\n\t\tthis.hideDialog();\r\n\t}\r\n\tpublic hideDialog = () => {\r\n\t\tthis._hideDialog.handleEvent();\r\n\t}\r\n\tpublic showDialog = (forced = false) => {\r\n\t\tthis.isDialogHidden = false;\r\n\t\tif (forced)\r\n\t\t\tthis.isInstallAvailable = true;\r\n\t\tUtils.setStorageFlag('pwa-hide-install', false, this.useLocalStorage);\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tpublic getInstalledRelatedApps = async (): Promise => {\r\n\t\treturn await Utils.getInstalledRelatedApps();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _howToForApple = {\r\n handleEvent: () => {\r\n\t\t\tthis._howToRequested = !this._howToRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._galleryRequested = false;\r\n\t\t\tthis.requestUpdate();\r\n\r\n\t\t\tif (this._howToRequested) {\r\n\t\t\t\tUtils.eventInstallHowTo(this);\r\n\t\t\t}\t\t\t\t\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate _toggleGallery = {\r\n handleEvent: () => {\r\n\t\t\tthis._galleryRequested = !this._galleryRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._howToRequested = false;\r\n\r\n\t\t\tthis._galleryRequested && Utils.eventGallery(this);\r\n\r\n\t\t\tthis.requestUpdate();\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate async _checkInstalled() {\r\n\t\tthis.isUnderStandaloneMode = Utils.isStandalone();\r\n\t\tthis.isRelatedAppsInstalled = await Utils.isRelatedAppsInstalled();\r\n\t\tthis.isAppleMobilePlatform = Utils.isAppleMobile();\r\n\t\tthis.isAppleDesktopPlatform = Utils.isAppleDesktop();\r\n\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tif (!this.isUnderStandaloneMode) {\r\n\t\t\t\tthis.manualApple && this.hideDialog();\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t1000\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.manualChrome && this.hideDialog();\r\n\t\t}\r\n\t}\r\n\t/** @internal */\r\n\tprivate _init = async () => {\r\n\t\twindow.defferedPromptEvent = null;\r\n\r\n\t\tthis._checkInstalled();\r\n\r\n\t\tif (!this.disableChrome) {\r\n\t\t\tconst _promptHandler = (e: BeforeInstallPromptEvent) => {\r\n\t\t\t\twindow.defferedPromptEvent = e;\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.platforms = e.platforms;\r\n\r\n\t\t\t\tif (this.isRelatedAppsInstalled || this.isUnderStandaloneMode) {\r\n\t\t\t\t\tthis.isInstallAvailable = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userChoiceResult === 'accepted'){\r\n\t\t\t\t\tthis.isDialogHidden = true;\r\n\t\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t\tif (this.externalPromptEvent != null)\r\n\t\t\t\tsetTimeout(() => _promptHandler(this.externalPromptEvent!), 300);\r\n\t\t\telse\r\n\t\t\t\twindow.addEventListener('beforeinstallprompt', _promptHandler);\r\n\t\t}\r\n\r\n\t\twindow.addEventListener('appinstalled', (e) => {\r\n\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\tthis.isInstallAvailable = false;\r\n\r\n\t\t\tthis.requestUpdate();\r\n\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t});\r\n\r\n\r\n\t\ttry{\r\n\t\t\tconst _response = await fetch(this.manifestUrl);\r\n\t\t\tconst _json = await _response.json() as WebAppManifest;\r\n\t\t\tif (!_response.ok || !_json || !Object.keys(_json))\r\n\t\t\t\tthrow new Error('Manifest not found');\r\n\t\t\tUtils.normalizeManifestAssetUrls(_json, this.manifestUrl);\r\n\t\t\t\r\n\t\t\tthis.icon = this.icon || _json.icons?.length ? _json.icons![0].src : '';\r\n\t\t\tthis.name = this.name || _json['short_name'] || _json.name || '';\r\n\t\t\tthis.description = this.description || _json.description || '';\r\n\t\t\tthis._manifest = _json;\r\n\t\t}\r\n\t\tcatch(e) {\r\n\t\t\tthis.icon = this.icon || this._manifest.icons?.[0].src || '';\r\n\t\t\tthis.name = this.name || this._manifest['short_name'] || '';\r\n\t\t\tthis.description = this.description || this._manifest.description || '';\r\n\t\t}\r\n\t};\r\n\t/** @internal */\r\n\tprivate _requestUpdate = () => {\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tchangeLocale(navigator.language);\r\n\t\tthis._init();\r\n\t\tPWAGalleryElement.finalized;\r\n\t\tPWABottomSheetElement.finalized;\r\n\t\tsuper.connectedCallback();\r\n\t}\r\n\twillUpdate(changedProperties: PropertyValues) {\r\n\t\tif (this.externalPromptEvent && changedProperties.has('externalPromptEvent') && typeof this.externalPromptEvent == 'object') {\r\n\t\t this._init();\r\n\t\t}\r\n\t}\r\n\r\n\t// firstUpdated() {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\trender() {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform)\r\n\t\t\treturn html`${templateApple(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsApple,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._howToForApple,\r\n\t\t\t\tthis.isAppleDesktopPlatform,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested\r\n\t\t\t)}`;\r\n\t\telse\r\n\t\t\treturn html`${template(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsChrome,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._install,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested\r\n\t\t\t)}`;\r\n\t}\r\n}\r\n\r\nexport { PWAInstallAttributes };\r\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { updateWhenLocaleChanges } from './localized-controller.js';\n/**\n * Class decorator to enable re-rendering the given LitElement whenever a new\n * active locale has loaded.\n *\n * See also {@link updateWhenLocaleChanges} for the same functionality without\n * the use of decorators.\n *\n * When using lit-localize in transform mode, applications of this decorator are\n * removed.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {customElement} from 'lit/decorators.js';\n * import {msg, localized} from '@lit/localize';\n *\n * @localized()\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nexport const localized = () => (clazz, _context) => {\n clazz.addInitializer(updateWhenLocaleChanges);\n return clazz;\n};\n//# sourceMappingURL=localized-decorator.js.map"],"names":["root","factory","exports","module","require","define","amd","globalThis","__WEBPACK_EXTERNAL_MODULE__161__","__WEBPACK_EXTERNAL_MODULE__429__","__WEBPACK_EXTERNAL_MODULE__125__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","joinStringsAndValues","strings","values","valueOrder","concat","i","length","defaultMsg","template","isStrTagged","val","msg","installed","LOCALE_STATUS_EVENT","LocalizeController","constructor","host","this","__litLocalizeEventHandler","event","detail","status","requestUpdate","hostConnected","window","addEventListener","hostDisconnected","removeEventListener","updateWhenLocaleChanges","addController","Deferred","settled","promise","Promise","resolve","reject","_resolve","_reject","error","hl","toString","generateMsgId","isHtmlTagged","str","t0","v0","t1","v1","t2","v2","t3","v3","charCodeAt","fnv1a64","join","expressionOrders","WeakMap","hashCache","Map","runtimeMsg","templates","options","id","set","generateId","localized","order","map","dispatchStatusEvent","dispatchEvent","CustomEvent","loadingLocale","sourceLocale","validLocales","loadLocale","activeLocale","loading","requestId","getLocale","setLocale","newLocale","Error","has","thisRequestId","then","mod","readyLocale","err","errorLocale","errorMessage","targetLocales","localizedTemplates","config","async","lang","impl","_installMsgImplementation","Set","add","Manifest","icons","src","screenshots","short_name","name","description","css","_eventDispatcher","_element","message","Utils","isAppleMobile","includes","navigator","platform","userAgent","match","maxTouchPoints","isAppleDesktop","toLowerCase","version","exec","parseInt","audioCheck","document","createElement","canPlayType","webGLCheck","OffscreenCanvas","getContext","deviceFormFactor","matchMedia","matches","isStandalone","standalone","getInstalledRelatedApps","relatedApps","e","isRelatedAppsInstalled","setStorageFlag","persistent","localStorage","setItem","sessionStorage","getStorageFlag","getItem","eventInstalledSuccess","eventInstalledFail","eventUserChoiceResult","eventInstallAvailable","eventInstallHowTo","eventGallery","normalizeManifestAssetUrls","manifest","manifestUrl","normalizedManifestUrl","URL","location","href","forEach","asset","theme","scrollToNextPage","scrollToPrevPage","html","PWAGalleryElement","LitElement","getScrollElements","gallery","shadowRoot","querySelector","galleryScroller","galleryItems","Array","from","querySelectorAll","scroller","items","findCurrentItem","scrollLeft","find","item","offsetWidth","offsetLeft","scrollToPage","direction","scrollData","currentItem","targetIndex","indexOf","scrollIntoView","behavior","block","inline","_init","styles","firstUpdated","_tools","setTimeout","scrollTo","top","left","connectedCallback","super","render","property","type","customElement","icon","install","PWABottomSheetElement","props","handleEvent","hideDialog","disableClose","_callInstall","_callHide","setupAppearence","bindedElement","_saveBodyStyle","body","style","overscrollBehaviorY","dragMobileSheet","element","touchTargetElement","infoElement","dragOffset","bottomSize","clientHeight","getYCoord","clientY","changedTouches","dragMouseDown","dragMouseUp","dragMouseMove","getBoundingClientRect","innerHeight","closeDragElement","getRootNode","currentY","setProperty","toPoint","innerWidth","passive","MouseEvent","touchElement","listener","parentElement","getElementsByClassName","createRenderRoot","installDescription","disableDescription","disableScreenshots","installAvailable","toggleGallery","galleryRequested","installDialogClasses","available","screenshotsAvailable","howToForApple","isDesktop","howToRequested","desktop","PWAInstallElement","disableScreenshotsApple","disableScreenshotsChrome","manualApple","manualChrome","disableChrome","useLocalStorage","externalPromptEvent","platforms","userChoiceResult","isDialogHidden","isInstallAvailable","isAppleMobilePlatform","isAppleDesktopPlatform","isUnderStandaloneMode","_manifest","_howToRequested","_galleryRequested","_install","defferedPromptEvent","prompt","userChoice","choiceResult","outcome","catch","_hideDialog","_hideDialogUser","showDialog","forced","_howToForApple","_toggleGallery","_checkInstalled","_promptHandler","preventDefault","_response","fetch","_json","json","ok","keys","_requestUpdate","slice","changeLocale","language","finalized","willUpdate","changedProperties","attribute","Boolean","state","clazz","_context","addInitializer"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/pwa-install.bundle.js b/docs/pwa-install.bundle.js index d88b6d5..5536991 100644 --- a/docs/pwa-install.bundle.js +++ b/docs/pwa-install.bundle.js @@ -1,2 +1,2 @@ -var PWAInstallComponent;(()=>{"use strict";var e={d:(t,a)=>{for(var i in a)e.o(a,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:a[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{PWAInstallElement:()=>oa});var a={};e.r(a),e.d(a,{templates:()=>ct});var i={};e.r(i),e.d(i,{templates:()=>pt});var o={};e.r(o),e.d(o,{templates:()=>ht});var s={};e.r(s),e.d(s,{templates:()=>gt});var l={};e.r(l),e.d(l,{templates:()=>bt});var n={};e.r(n),e.d(n,{templates:()=>ut});var r={};e.r(r),e.d(r,{templates:()=>ft});var d={};e.r(d),e.d(d,{templates:()=>mt});var c={};e.r(c),e.d(c,{templates:()=>vt});var p={};e.r(p),e.d(p,{templates:()=>wt});var h={};e.r(h),e.d(h,{templates:()=>yt});var g={};e.r(g),e.d(g,{templates:()=>xt});var b={};e.r(b),e.d(b,{templates:()=>kt});var u={};e.r(u),e.d(u,{templates:()=>_t});var f={};e.r(f),e.d(f,{templates:()=>$t});var m={};e.r(m),e.d(m,{templates:()=>At});var v={};e.r(v),e.d(v,{templates:()=>St});var w={};e.r(w),e.d(w,{templates:()=>Et});var y={};e.r(y),e.d(y,{templates:()=>Dt});var x={};e.r(x),e.d(x,{templates:()=>Pt});var k={};e.r(k),e.d(k,{templates:()=>jt});const _=globalThis,$=_.ShadowRoot&&(void 0===_.ShadyCSS||_.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,A=Symbol(),S=new WeakMap;class E{constructor(e,t,a){if(this._$cssResult$=!0,a!==A)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o;const t=this.t;if($&&void 0===e){const a=void 0!==t&&1===t.length;a&&(e=S.get(t)),void 0===e&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),a&&S.set(t,e))}return e}toString(){return this.cssText}}const D=(e,...t)=>{const a=1===e.length?e[0]:t.reduce(((t,a,i)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if("number"==typeof e)return e;throw Error("Value passed to 'css' function must be a 'css' function result: "+e+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(a)+e[i+1]),e[0]);return new E(a,e,A)},P=(e,t)=>{if($)e.adoptedStyleSheets=t.map((e=>e instanceof CSSStyleSheet?e:e.styleSheet));else for(const a of t){const t=document.createElement("style"),i=_.litNonce;void 0!==i&&t.setAttribute("nonce",i),t.textContent=a.cssText,e.appendChild(t)}},j=$?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t="";for(const a of e.cssRules)t+=a.cssText;return(e=>new E("string"==typeof e?e:e+"",void 0,A))(t)})(e):e,{is:C,defineProperty:z,getOwnPropertyDescriptor:T,getOwnPropertyNames:R,getOwnPropertySymbols:I,getPrototypeOf:M}=Object,L=globalThis,U=L.trustedTypes,H=U?U.emptyScript:"",O=L.reactiveElementPolyfillSupport,B=(e,t)=>e,N={toAttribute(e,t){switch(t){case Boolean:e=e?H:null;break;case Object:case Array:e=null==e?e:JSON.stringify(e)}return e},fromAttribute(e,t){let a=e;switch(t){case Boolean:a=null!==e;break;case Number:a=null===e?null:Number(e);break;case Object:case Array:try{a=JSON.parse(e)}catch(e){a=null}}return a}},q=(e,t)=>!C(e,t),W={attribute:!0,type:String,converter:N,reflect:!1,hasChanged:q};Symbol.metadata??=Symbol("metadata"),L.litPropertyMetadata??=new WeakMap;class V extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=W){if(t.state&&(t.attribute=!1),this._$Ei(),this.elementProperties.set(e,t),!t.noAccessor){const a=Symbol(),i=this.getPropertyDescriptor(e,a,t);void 0!==i&&z(this.prototype,e,i)}}static getPropertyDescriptor(e,t,a){const{get:i,set:o}=T(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get(){return i?.call(this)},set(t){const s=i?.call(this);o.call(this,t),this.requestUpdate(e,s,a)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??W}static _$Ei(){if(this.hasOwnProperty(B("elementProperties")))return;const e=M(this);e.finalize(),void 0!==e.l&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(B("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(B("properties"))){const e=this.properties,t=[...R(e),...I(e)];for(const a of t)this.createProperty(a,e[a])}const e=this[Symbol.metadata];if(null!==e){const t=litPropertyMetadata.get(e);if(void 0!==t)for(const[e,a]of t)this.elementProperties.set(e,a)}this._$Eh=new Map;for(const[e,t]of this.elementProperties){const a=this._$Eu(e,t);void 0!==a&&this._$Eh.set(a,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const a=new Set(e.flat(1/0).reverse());for(const e of a)t.unshift(j(e))}else void 0!==e&&t.push(j(e));return t}static _$Eu(e,t){const a=t.attribute;return!1===a?void 0:"string"==typeof a?a:"string"==typeof e?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((e=>e(this)))}addController(e){(this._$EO??=new Set).add(e),void 0!==this.renderRoot&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){const e=new Map,t=this.constructor.elementProperties;for(const a of t.keys())this.hasOwnProperty(a)&&(e.set(a,this[a]),delete this[a]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return P(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((e=>e.hostConnected?.()))}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach((e=>e.hostDisconnected?.()))}attributeChangedCallback(e,t,a){this._$AK(e,a)}_$EC(e,t){const a=this.constructor.elementProperties.get(e),i=this.constructor._$Eu(e,a);if(void 0!==i&&!0===a.reflect){const o=(void 0!==a.converter?.toAttribute?a.converter:N).toAttribute(t,a.type);this._$Em=e,null==o?this.removeAttribute(i):this.setAttribute(i,o),this._$Em=null}}_$AK(e,t){const a=this.constructor,i=a._$Eh.get(e);if(void 0!==i&&this._$Em!==i){const e=a.getPropertyOptions(i),o="function"==typeof e.converter?{fromAttribute:e.converter}:void 0!==e.converter?.fromAttribute?e.converter:N;this._$Em=i,this[i]=o.fromAttribute(t,e.type),this._$Em=null}}requestUpdate(e,t,a){if(void 0!==e){if(a??=this.constructor.getPropertyOptions(e),!(a.hasChanged??q)(this[e],t))return;this.P(e,t,a)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(e,t,a){this._$AL.has(e)||this._$AL.set(e,t),!0===a.reflect&&this._$Em!==e&&(this._$Ej??=new Set).add(e)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}const e=this.scheduleUpdate();return null!=e&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}const e=this.constructor.elementProperties;if(e.size>0)for(const[t,a]of e)!0!==a.wrapped||this._$AL.has(t)||void 0===this[t]||this.P(t,this[t],a)}let e=!1;const t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach((e=>e.hostUpdate?.())),this.update(t)):this._$EU()}catch(t){throw e=!1,this._$EU(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach((e=>e.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Ej&&=this._$Ej.forEach((e=>this._$EC(e,this[e]))),this._$EU()}updated(e){}firstUpdated(e){}}V.elementStyles=[],V.shadowRootOptions={mode:"open"},V[B("elementProperties")]=new Map,V[B("finalized")]=new Map,O?.({ReactiveElement:V}),(L.reactiveElementVersions??=[]).push("2.0.4");const F=globalThis,Z=F.trustedTypes,Y=Z?Z.createPolicy("lit-html",{createHTML:e=>e}):void 0,G="$lit$",K=`lit$${Math.random().toFixed(9).slice(2)}$`,J="?"+K,Q=`<${J}>`,X=document,ee=()=>X.createComment(""),te=e=>null===e||"object"!=typeof e&&"function"!=typeof e,ae=Array.isArray,ie=e=>ae(e)||"function"==typeof e?.[Symbol.iterator],oe="[ \t\n\f\r]",se=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,le=/-->/g,ne=/>/g,re=RegExp(`>|${oe}(?:([^\\s"'>=/]+)(${oe}*=${oe}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),de=/'/g,ce=/"/g,pe=/^(?:script|style|textarea|title)$/i,he=e=>(t,...a)=>({_$litType$:e,strings:t,values:a}),ge=he(1),be=(he(2),he(3),Symbol.for("lit-noChange")),ue=Symbol.for("lit-nothing"),fe=new WeakMap,me=X.createTreeWalker(X,129);function ve(e,t){if(!ae(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==Y?Y.createHTML(t):t}const we=(e,t)=>{const a=e.length-1,i=[];let o,s=2===t?"":3===t?"":"",l=se;for(let t=0;t"===r[0]?(l=o??se,d=-1):void 0===r[1]?d=-2:(d=l.lastIndex-r[2].length,n=r[1],l=void 0===r[3]?re:'"'===r[3]?ce:de):l===ce||l===de?l=re:l===le||l===ne?l=se:(l=re,o=void 0);const p=l===re&&e[t+1].startsWith("/>")?" ":"";s+=l===se?a+Q:d>=0?(i.push(n),a.slice(0,d)+G+a.slice(d)+K+p):a+K+(-2===d?t:p)}return[ve(e,s+(e[a]||"")+(2===t?"":3===t?"":"")),i]};class ye{constructor({strings:e,_$litType$:t},a){let i;this.parts=[];let o=0,s=0;const l=e.length-1,n=this.parts,[r,d]=we(e,t);if(this.el=ye.createElement(r,a),me.currentNode=this.el.content,2===t||3===t){const e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;null!==(i=me.nextNode())&&n.length0){i.textContent=Z?Z.emptyScript:"";for(let a=0;a2||""!==a[0]||""!==a[1]?(this._$AH=Array(a.length-1).fill(new String),this.strings=a):this._$AH=ue}_$AI(e,t=this,a,i){const o=this.strings;let s=!1;if(void 0===o)e=xe(this,e,t,0),s=!te(e)||e!==this._$AH&&e!==be,s&&(this._$AH=e);else{const i=e;let l,n;for(e=o[0],l=0;l{const i=a?.renderBefore??t;let o=i._$litPart$;if(void 0===o){const e=a?.renderBefore??null;i._$litPart$=o=new _e(t.insertBefore(ee(),e),e,void 0,a??{})}return o._$AI(e),o})(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this.o?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this.o?.setConnected(!1)}render(){return be}}je._$litElement$=!0,je.finalized=!0,globalThis.litElementHydrateSupport?.({LitElement:je});const Ce=globalThis.litElementPolyfillSupport;Ce?.({LitElement:je});(globalThis.litElementVersions??=[]).push("4.1.0");const ze=(e,t,a)=>{let i=e[0];for(let o=1;o{return"string"!=typeof(t=e)&&"strTag"in t?ze(e.strings,e.values):e;var t};let Re=Te,Ie=!1;const Me="lit-localize-status";class Le{constructor(e){this.__litLocalizeEventHandler=e=>{"ready"===e.detail.status&&this.host.requestUpdate()},this.host=e}hostConnected(){window.addEventListener(Me,this.__litLocalizeEventHandler)}hostDisconnected(){window.removeEventListener(Me,this.__litLocalizeEventHandler)}}const Ue=e=>e.addController(new Le(e));class He{constructor(){this.settled=!1,this.promise=new Promise(((e,t)=>{this._resolve=e,this._reject=t}))}resolve(e){this.settled=!0,this._resolve(e)}reject(e){this.settled=!0,this._reject(e)}}const Oe=[];for(let e=0;e<256;e++)Oe[e]=(e>>4&15).toString(16)+(15&e).toString(16);const Be="",Ne="h",qe="s";function We(e,t){return(t?Ne:qe)+function(e){let t=0,a=8997,i=0,o=33826,s=0,l=40164,n=0,r=52210;for(let d=0;d>>16,a=65535&t,s+=i>>>16,o=65535&i,r=n+(s>>>16)&65535,l=65535&s;return Oe[r>>8]+Oe[255&r]+Oe[l>>8]+Oe[255&l]+Oe[o>>8]+Oe[255&o]+Oe[a>>8]+Oe[255&a]}("string"==typeof e?e:e.join(Be))}const Ve=new WeakMap,Fe=new Map;function Ze(e,t,a){if(e){const i=a?.id??function(e){const t="string"==typeof e?e:e.strings;let a=Fe.get(t);void 0===a&&(a=We(t,"string"!=typeof e&&!("strTag"in e)),Fe.set(t,a));return a}(t),o=e[i];if(o){if("string"==typeof o)return o;if("strTag"in o)return ze(o.strings,t.values,o.values);{let e=Ve.get(o);return void 0===e&&(e=o.values,Ve.set(o,e)),{...o,values:e.map((e=>t.values[e]))}}}}return Te(t)}function Ye(e){window.dispatchEvent(new CustomEvent(Me,{detail:e}))}let Ge,Ke,Je,Qe,Xe,et="",tt=new He;tt.resolve();let at=0;const it=()=>et,ot=e=>{if(e===(Ge??et))return tt.promise;if(!Je||!Qe)throw Error("Internal error");if(!Je.has(e))throw Error("Invalid locale code");at++;const t=at;Ge=e,tt.settled&&(tt=new He),Ye({status:"loading",loadingLocale:e});return(e===Ke?Promise.resolve({templates:void 0}):Qe(e)).then((a=>{at===t&&(et=e,Ge=void 0,Xe=a.templates,Ye({status:"ready",readyLocale:e}),tt.resolve())}),(a=>{at===t&&(Ye({status:"error",errorLocale:e,errorMessage:a.toString()}),tt.reject(a))})),tt.promise},st=e=>(t,a)=>{void 0!==a?a.addInitializer((()=>{customElements.define(e,t)})):customElements.define(e,t)},lt={attribute:!0,type:String,converter:N,reflect:!1,hasChanged:q},nt=(e=lt,t,a)=>{const{kind:i,metadata:o}=a;let s=globalThis.litPropertyMetadata.get(o);if(void 0===s&&globalThis.litPropertyMetadata.set(o,s=new Map),s.set(a.name,e),"accessor"===i){const{name:i}=a;return{set(a){const o=t.get.call(this);t.set.call(this,a),this.requestUpdate(i,o,e)},init(t){return void 0!==t&&this.P(i,void 0,e),t}}}if("setter"===i){const{name:i}=a;return function(a){const o=this[i];t.call(this,a),this.requestUpdate(i,o,e)}}throw Error("Unsupported decorator location: "+i)};function rt(e){return(t,a)=>"object"==typeof a?nt(e,t,a):((e,t,a)=>{const i=t.hasOwnProperty(a);return t.constructor.createProperty(a,i?{...e,wrapped:!0}:e),i?Object.getOwnPropertyDescriptor(t,a):void 0})(e,t,a)}const dt=["cs","da","de","el","es","fr","it","ja","km","ko","nl","no","pl","pt","ru","sr","sv","tr","uk","zh-CN","zh-HK"],ct={s182ab2d6c997515f:"Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.",s1b9047d53d9f9d22:'2) Нажать "Поделиться"',s37a9e8aec5713460:"Подробнее",s5c6aad7a7e4a1437:'3) Нажать "На экран «Домой»"',s6196153c4b0c1ea0:"Установить",s922329d6f6213590:"Добавить в Dock",sa5ef80b4bb9b39f8:"Свернуть",sa7551383d1897fcc:'2) Нажмите "Добавить в Dock"',sba52286c21552a4e:"Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.",sc79fd7641eb9a975:"Спрятать Инструкцию",scdaf4bbff76674c8:"На экран «Домой»",sdfe23506a3b0cdc8:"1) Открыть в Safari браузере",se740f75b95a51807:"Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.",sfea652f6580ff086:"Этот веб-сайт имеет функционал приложения."},pt={s182ab2d6c997515f:"Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.",s1b9047d53d9f9d22:"2) Gezinme çubuğunda Paylaş'a basın",s37a9e8aec5713460:"Daha Fazla",s5c6aad7a7e4a1437:"3) Ana Ekrana Ekle'ye basın",s6196153c4b0c1ea0:"Yükle",s922329d6f6213590:"Dock’a Ekle",sa5ef80b4bb9b39f8:"Küçült",sa7551383d1897fcc:"2) Dock’a ekleye basın",sba52286c21552a4e:"Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.",sc79fd7641eb9a975:"Talimatları gizle",scdaf4bbff76674c8:"Ana Ekrana Ekle",sdfe23506a3b0cdc8:"1) Safari tarayıcısında açın",se740f75b95a51807:"Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.",sfea652f6580ff086:"Bu site uygulama işlevselliğine sahiptir."},ht={s182ab2d6c997515f:"Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",s1b9047d53d9f9d22:"2) Drücken Sie auf Teilen in der Navigationsleiste",s37a9e8aec5713460:"Mehr",s5c6aad7a7e4a1437:"3) Drücken Sie Hinzufügen zum Startbildschirm",s6196153c4b0c1ea0:"Installieren",s922329d6f6213590:"Zum Dock hinzufügen",sa5ef80b4bb9b39f8:"Weniger",sa7551383d1897fcc:"2) Drücken Sie auf Zum Dock hinzufügen",sba52286c21552a4e:"Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.",sc79fd7641eb9a975:"Anleitung ausblenden",scdaf4bbff76674c8:"Hinzufügen zum Startbildschirm",sdfe23506a3b0cdc8:"1) In Safari-Browser öffnen",se740f75b95a51807:"Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",sfea652f6580ff086:"Diese Website verfügt über App-Funktionalität."},gt={s182ab2d6c997515f:"Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.",s1b9047d53d9f9d22:"2) Presionar Compartir en la barra de direcciones",s37a9e8aec5713460:"Más",s5c6aad7a7e4a1437:"3) Presionar Añadir a pantalla de inicio",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Añadir al Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Presionar Añadir al Dock",sba52286c21552a4e:"Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.",sc79fd7641eb9a975:"Esconder instrucciones",scdaf4bbff76674c8:"Añadir a pantalla de inicio",sdfe23506a3b0cdc8:"1) Abrir en el navegador web Safari",se740f75b95a51807:"Añádelo a tu Dock para una experiencia amplia y acceso fácil.",sfea652f6580ff086:"Este sitio tiene funcionalidad de aplicación."},bt={s182ab2d6c997515f:"Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.",s1b9047d53d9f9d22:"2) Druk op delen in de navigatiebalk",s37a9e8aec5713460:"Meer",s5c6aad7a7e4a1437:"3) Druk op Toevoegen aan het startscherm",s6196153c4b0c1ea0:"Installeren",s922329d6f6213590:"Toevoegen aan Dock",sa5ef80b4bb9b39f8:"Minder",sa7551383d1897fcc:"2) Druk op Toevoegen aan Dock",sba52286c21552a4e:"Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.",sc79fd7641eb9a975:"Instructie verbergen",scdaf4bbff76674c8:"Toevoegen aan het startscherm",sdfe23506a3b0cdc8:"1) Open in Safari-browser",se740f75b95a51807:"Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.",sfea652f6580ff086:"Deze site heeft app-functionaliteit."},ut={s182ab2d6c997515f:"Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",s1b9047d53d9f9d22:"2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης",s37a9e8aec5713460:"Περισσότερα",s5c6aad7a7e4a1437:"3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας",s6196153c4b0c1ea0:"Εγκατάσταση",s922329d6f6213590:"Προσθήκη στην Πρόσβαση",sa5ef80b4bb9b39f8:"Λιγότερα",sa7551383d1897fcc:"2) Πατήστε Προσθήκη στην Πρόσβαση",sba52286c21552a4e:"Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sc79fd7641eb9a975:"Απόκρυψη Οδηγιών",scdaf4bbff76674c8:"Προσθήκη στην Οθόνη Αφετηρίας",sdfe23506a3b0cdc8:"1) Ανοίξτε τον περιηγητή Safari",se740f75b95a51807:"Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sfea652f6580ff086:"Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής."},ft={s182ab2d6c997515f:"Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.",s1b9047d53d9f9d22:"2) Appuyez sur Partager dans la barre de navigation",s37a9e8aec5713460:"Plus",s5c6aad7a7e4a1437:"3) Appuyez sur Ajouter à l'écran d'accueil",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Ajouter au Dock",sa5ef80b4bb9b39f8:"Moins",sa7551383d1897fcc:"2) Appuyez sur Ajouter au Dock",sba52286c21552a4e:"Installez-le sur votre appareil pour une expérience complète et un accès facile.",sc79fd7641eb9a975:"Masquer les instructions",scdaf4bbff76674c8:"Ajouter à l'écran d'accueil",sdfe23506a3b0cdc8:"1) Ouvrir dans le navigateur Safari",se740f75b95a51807:"Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.",sfea652f6580ff086:"Ce site possède des fonctionnalités d'application."},mt={s182ab2d6c997515f:"Додајте га на Home Screen за широке могућности и лак приступ.",s1b9047d53d9f9d22:"2) Притисните Share у навигационој траци",s37a9e8aec5713460:"Више",s5c6aad7a7e4a1437:"3) Притисните Add to Home Screen",s6196153c4b0c1ea0:"Инсталирај",sa5ef80b4bb9b39f8:"Мање",sa7551383d1897fcc:"3) Притисните Add to Dock",sba52286c21552a4e:"Инсталирајте га на вашем уређају за широке могућности и лак приступ.",sc79fd7641eb9a975:"Сакриј упутство",sdfe23506a3b0cdc8:"1) Отворите у Safari прегледачу",se740f75b95a51807:"Додајте га у вашу Dock за широке могућности и лак приступ.",sfea652f6580ff086:"Овај сајт има функционалност апликације.",s922329d6f6213590:"Add to Dock",scdaf4bbff76674c8:"Add to Home Screen"},vt={s182ab2d6c997515f:"Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.",s1b9047d53d9f9d22:'2) Wybierz "Udostępnij"',s37a9e8aec5713460:"Więcej",s5c6aad7a7e4a1437:'3) Wybierz "Dodaj do Ekranu Głównego"',s6196153c4b0c1ea0:"Zainstaluj",s922329d6f6213590:"Dodaj do Docka",sa5ef80b4bb9b39f8:"Mniej",sa7551383d1897fcc:'2) Wybierz "Dodaj do Docka"',sba52286c21552a4e:"Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.",sc79fd7641eb9a975:"Ukryj instrukcję",scdaf4bbff76674c8:"Dodaj do Ekranu Głównego",sdfe23506a3b0cdc8:"1) Otwórz przeglądarkę Safari",se740f75b95a51807:"Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.",sfea652f6580ff086:"Ta strona posiada funkcje aplikacji."},wt={s182ab2d6c997515f:"Додайте на Домашній екран для зручного доступу та ширших можливостей.",s1b9047d53d9f9d22:"2) Натиснути «Поділитися»",s37a9e8aec5713460:"Детальніше",s5c6aad7a7e4a1437:"3) Натиснути «На Початковий екран»",s6196153c4b0c1ea0:"Встановити",s922329d6f6213590:"Додати на Dock",sa5ef80b4bb9b39f8:"Згорнути",sa7551383d1897fcc:"2) Натиснути «Додати на Dock»",sba52286c21552a4e:"Встановіть на ваш пристрій для зручного доступу та ширших можливостей.",sc79fd7641eb9a975:"Сховати Інструкцію",scdaf4bbff76674c8:"На Початковий экран",sdfe23506a3b0cdc8:"1) Відкрити в Safari браузері",se740f75b95a51807:"Додайте на панель Dock для зручного доступу та ширших можливостей.",sfea652f6580ff086:"Цей сайт має функції додатку."},yt={s182ab2d6c997515f:"將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。",s1b9047d53d9f9d22:"2) 點擊列表上的分享按鈕",s37a9e8aec5713460:"詳細資訊",s5c6aad7a7e4a1437:"3) 點擊加入主畫面",s6196153c4b0c1ea0:"安裝",s922329d6f6213590:"添加到Dock欄",sa5ef80b4bb9b39f8:"簡短資訊",sa7551383d1897fcc:"2) 點選添加到Dock欄",sba52286c21552a4e:"在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。",sc79fd7641eb9a975:"隱藏安裝流程",scdaf4bbff76674c8:"將App加入主畫面",sdfe23506a3b0cdc8:"1) 在Safari上瀏覽此網頁",se740f75b95a51807:"將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。",sfea652f6580ff086:"此網站具有應用程式功能。"},xt={s182ab2d6c997515f:"将其添加到主屏幕,以享受更丰富的体验并便于访问。",s1b9047d53d9f9d22:"2) 点击导航栏中的“分享”按钮",s37a9e8aec5713460:"更多",s5c6aad7a7e4a1437:"3) 点击“添加到主屏幕”",s6196153c4b0c1ea0:"安装",s922329d6f6213590:"添加到程序坞",sa5ef80b4bb9b39f8:"收起",sa7551383d1897fcc:"2) 点击“添加到程序坞”",sba52286c21552a4e:"在您的设备上安装,以享受更丰富的体验并便于访问。",sc79fd7641eb9a975:"隐藏安装步骤",scdaf4bbff76674c8:"添加到主屏幕",sdfe23506a3b0cdc8:"1) 在 Safari 浏览器中打开此页面",se740f75b95a51807:"将其添加到您的程序坞,以享受更全面的体验并便于访问。",sfea652f6580ff086:"此网站具备 App 功能特性。"},kt={s182ab2d6c997515f:"Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.",s1b9047d53d9f9d22:"2) Premi Condividi nella barra di navigazione",s37a9e8aec5713460:"Più",s5c6aad7a7e4a1437:"3) Premi Aggiungi alla schermata principale",s6196153c4b0c1ea0:"Installa",s922329d6f6213590:"Aggiungi al Dock",sa5ef80b4bb9b39f8:"Meno",sa7551383d1897fcc:"2) Premi Aggiungi al Dock",sba52286c21552a4e:"Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.",sc79fd7641eb9a975:"Nascondi istruzioni",scdaf4bbff76674c8:"Aggiungi alla schermata principale",sdfe23506a3b0cdc8:"1) Apri nel browser Safari",se740f75b95a51807:"Aggiungilo al Dock per un'esperienza più completa e un accesso facile.",sfea652f6580ff086:"Questo sito ha funzionalità di app."},_t={s182ab2d6c997515f:"Přidejte jej na plochu pro rozšířené využití a snadný přístup.",s1b9047d53d9f9d22:"2) Stiskněte tlačítko Sdílet na navigačním panelu",s37a9e8aec5713460:"Vice",s5c6aad7a7e4a1437:"3) Stiskněte tlačítko Přidat na plochu",s6196153c4b0c1ea0:"Nainstalovat",s922329d6f6213590:"Přidat do Docku",sa5ef80b4bb9b39f8:"Méně",sa7551383d1897fcc:"2) Stiskněte Přidat do Docku",sba52286c21552a4e:"Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.",sc79fd7641eb9a975:"Skrýt instrukce",scdaf4bbff76674c8:"Přidat na plochu",sdfe23506a3b0cdc8:"1) Otevřete v prohlížeči Safari",se740f75b95a51807:"Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.",sfea652f6580ff086:"Tento web má funkce aplikace."},$t={s182ab2d6c997515f:"Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.",s1b9047d53d9f9d22:"2) Trykk på Del-knappen i navigasjonslinjen",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Velg Legg til på Hjem-skjerm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Legg til i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Velg Legg til i Dock",sba52286c21552a4e:"Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.",sc79fd7641eb9a975:"Skjul instruksjoner",scdaf4bbff76674c8:"Legg til på Hjem-skjerm",sdfe23506a3b0cdc8:"1) Åpne i Safari",se740f75b95a51807:"Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.",sfea652f6580ff086:"Denne siden har app-funksjonalitet."},At={s182ab2d6c997515f:"Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.",s1b9047d53d9f9d22:"2) Pressione Compartilhar na barra de endereço",s37a9e8aec5713460:"Mais",s5c6aad7a7e4a1437:"3) Pressione Adicionar à Tela de Início",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Adicionar ao Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Pressione Adicionar ao Dock",sba52286c21552a4e:"Instale no dispositivo para uma melhor experiência e mais fácil acesso.",sc79fd7641eb9a975:"Ocultar Instruções",scdaf4bbff76674c8:"Adicionar à Tela de Início",sdfe23506a3b0cdc8:"1) Abra no navegador Safari",se740f75b95a51807:"Adicione ao Dock para uma melhor experiência e mais fácil acesso.",sfea652f6580ff086:"Este site possui funcionalidade de aplicativo."},St={s182ab2d6c997515f:"ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。",s1b9047d53d9f9d22:"2) ナビゲーションバーで共有を押す",s37a9e8aec5713460:"展開",s5c6aad7a7e4a1437:"3) 「ホーム画面に追加」を押す",s6196153c4b0c1ea0:"インストール",s922329d6f6213590:"Dockに追加",sa5ef80b4bb9b39f8:"折りたたむ",sa7551383d1897fcc:"2) 「Dockに追加」を押す",sba52286c21552a4e:"デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。",sc79fd7641eb9a975:"説明を非表示",scdaf4bbff76674c8:"ホーム画面に追加",sdfe23506a3b0cdc8:"1) Safariで開く",se740f75b95a51807:"ドックに追加して、幅広い体験と簡単なアクセスを実現してください。",sfea652f6580ff086:"このサイトはアプリ機能があります。"},Et={s182ab2d6c997515f:"Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.",s1b9047d53d9f9d22:"2) Tryck på Dela-knappen i verktygsfältet",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Välj Lägg till på hemskärmen",s6196153c4b0c1ea0:"Installera",s922329d6f6213590:"Lägg till i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Välj Lägg till i Dock",sba52286c21552a4e:"Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.",sc79fd7641eb9a975:"Göm instruktioner",scdaf4bbff76674c8:"Lägg till på hemskärmen",sdfe23506a3b0cdc8:"1) Öppna i Safari",se740f75b95a51807:"Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.",sfea652f6580ff086:"Denna webbsajt har app-funktionalitet."},Dt={s182ab2d6c997515f:"더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.",s1b9047d53d9f9d22:"2) 내비게이션 바에서 공유 버튼 누르기",s37a9e8aec5713460:"더보기",s5c6aad7a7e4a1437:"3) 홈 화면에 추가 버튼 누르기",s6196153c4b0c1ea0:"설치",s922329d6f6213590:"Dock에 추가",sa5ef80b4bb9b39f8:"닫기",sa7551383d1897fcc:"2) Dock에 추가 버튼 누르기",sba52286c21552a4e:"더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.",sc79fd7641eb9a975:"안내 숨기기",scdaf4bbff76674c8:"홈 화면에 추가",sdfe23506a3b0cdc8:"1) Safari 브라우저에서 열기",se740f75b95a51807:"더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.",sfea652f6580ff086:"이 사이트는 앱 기능을 가지고 있습니다."},Pt={s182ab2d6c997515f:"បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",s1b9047d53d9f9d22:"2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ",s37a9e8aec5713460:"បង្ហាញបន្ថែម",s5c6aad7a7e4a1437:"3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",s6196153c4b0c1ea0:"តំឡើង",s922329d6f6213590:"បន្ថែមទៅកាន់ Dock",sa5ef80b4bb9b39f8:"បង្ហាញតិច",sa7551383d1897fcc:"2) ចុចលើ បន្ថែមទៅកាន់ Dock",sba52286c21552a4e:"តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sc79fd7641eb9a975:"បិទការណែនាំ",scdaf4bbff76674c8:"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",sdfe23506a3b0cdc8:"1) បើកនៅក្នុងកម្មវិធី Safari",se740f75b95a51807:"បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sfea652f6580ff086:"គេហទំព័រនេះមានមុខងារជាកម្មវិធី។"},jt={s182ab2d6c997515f:"Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.",s1b9047d53d9f9d22:"2) Tryk på Del-knappen i navigationslinjen",s37a9e8aec5713460:"Mere",s5c6aad7a7e4a1437:"3) Vælg Tilføj til hjemmeskærm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Tilføj til Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Vælg Tilføj til Dock",sba52286c21552a4e:"Installer den på din enhed for en bedre oplevelse og nem adgang.",sc79fd7641eb9a975:"Skjul instruktion",scdaf4bbff76674c8:"Tilføj til hjemmeskærm",sdfe23506a3b0cdc8:"1) Åbn i Safari-browseren",se740f75b95a51807:"Tilføj den til din Dock for en bedre oplevelse og nem adgang.",sfea652f6580ff086:"Denne side har app-funktionalitet."},Ct=new Map([["ru",a],["tr",i],["de",o],["es",s],["nl",l],["el",n],["fr",r],["sr",d],["pl",c],["uk",p],["zh-HK",h],["zh-CN",g],["it",b],["cs",u],["no",f],["pt",m],["ja",v],["sv",w],["ko",y],["km",x],["da",k]]),{getLocale:zt,setLocale:Tt}=(Rt={sourceLocale:"en",targetLocales:dt,loadLocale:async e=>Ct.get(e)},function(e){if(Ie)throw Error("lit-localize can only be configured once");Re=e,Ie=!0}(((e,t)=>Ze(Xe,e,t))),et=Ke=Rt.sourceLocale,Je=new Set(Rt.targetLocales),Je.add(Rt.sourceLocale),Qe=Rt.loadLocale,{getLocale:it,setLocale:ot});var Rt;class It{constructor(){this.icons=[{src:""}],this.screenshots=void 0,this.short_name="PWA",this.name="Progressive web application",this.description="Progressive web application"}}const Mt=D`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`,Lt=(e,t,a)=>{const i=new CustomEvent(t,{detail:{message:a}});e.dispatchEvent(i)};class Ut{static isAppleMobile(){return!(!(["iPhone","iPad","iPod"].includes(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2)||!("serviceWorker"in navigator))}static isAppleDesktop(){const e=navigator.userAgent.toLowerCase();if(navigator.maxTouchPoints||!e.match(/macintosh/))return!1;const t=/version\/(\d{2})\./.exec(e);if(!(t&&t[1]&&parseInt(t[1])>=17))return!1;const a=!!document.createElement("audio").canPlayType('audio/wav; codecs="1"'),i=!!new OffscreenCanvas(1,1).getContext("webgl");return a&&i}static deviceFormFactor(){return window.matchMedia("(orientation: portrait)").matches?"narrow":"wide"}static isStandalone(){return!!(window.matchMedia("(display-mode: standalone)").matches||"standalone"in navigator&&!0===navigator.standalone)}static async getInstalledRelatedApps(){if("getInstalledRelatedApps"in navigator)try{return await navigator.getInstalledRelatedApps().then((e=>e))}catch(e){}return[]}static async isRelatedAppsInstalled(){return!!(await this.getInstalledRelatedApps()).length}static setStorageFlag(e,t,a=!1){try{a?localStorage.setItem(e,t.toString()):sessionStorage.setItem(e,t.toString())}catch(e){}}static getStorageFlag(e){try{return"true"===sessionStorage.getItem(e)||"true"===localStorage.getItem(e)}catch(e){return!1}}static eventInstalledSuccess(e){Lt(e,"pwa-install-success-event","App install success (Chromium/Android only)")}static eventInstalledFail(e){Lt(e,"pwa-install-fail-event","App install failed (Chromium/Android only)")}static eventUserChoiceResult(e,t){Lt(e,"pwa-user-choice-result-event",t)}static eventInstallAvailable(e){Lt(e,"pwa-install-available-event","App install available")}static eventInstallHowTo(e){Lt(e,"pwa-install-how-to-event","App install instruction showed")}static eventGallery(e){Lt(e,"pwa-install-gallery-event","App install gallery showed")}static normalizeManifestAssetUrls(e,t){const a=new URL(t,document.location.href);[...e.icons||[],...e.screenshots||[]].forEach((e=>{e.src=new URL(e.src,a).href}))}}const Ht=(e,t,a,i)=>ge`${e?ge``:""}`;var Ot=function(e,t,a,i){var o,s=arguments.length,l=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,a):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,a,i);else for(var n=e.length-1;n>=0;n--)(o=e[n])&&(l=(s<3?o(l):s>3?o(t,a,l):o(t,a))||l);return s>3&&l&&Object.defineProperty(t,a,l),l},Bt=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Nt=class extends je{constructor(){super(...arguments),this.screenshots=[],this.theme="default",this.getScrollElements=()=>{const e=this.shadowRoot?.querySelector("#paginated_gallery");if(!e)return;const t=e.querySelector(".gallery_scroller");if(!t)return;const a=Array.from(t.querySelectorAll("img"));return 0!==a.length?{scroller:t,items:a}:void 0},this.findCurrentItem=(e,t)=>{const a=e.scrollLeft;return t.find((e=>e.offsetWidth+e.offsetLeft>=a+e.offsetWidth/2.5))||null},this.scrollToPage=e=>{const t=this.getScrollElements();if(!t)return;const{scroller:a,items:i}=t,o=this.findCurrentItem(a,i);if(!o)return;const s=i.indexOf(o)+("next"===e?1:-1);s>=0&&s{this.scrollToPage("next")},this.scrollToPrevPage=()=>{this.scrollToPage("prev")},this._init=()=>{}}static get styles(){return Mt}firstUpdated(){const e=this.getScrollElements();e&&setTimeout((()=>{e.scroller.scrollTo({top:0,left:0})}),300)}connectedCallback(){super.connectedCallback(),this._init()}render(){return ge`${Ht(this.screenshots,this.theme,this.scrollToNextPage,this.scrollToPrevPage)}`}};Ot([rt({type:Array}),Bt("design:type",Array)],Nt.prototype,"screenshots",void 0),Ot([rt(),Bt("design:type",String)],Nt.prototype,"theme",void 0),Nt=Ot([st("pwa-gallery")],Nt);const qt=Nt,Wt=(e,t,a,i)=>ge`
icon
${location.hostname}
${t?ge`
${t}
`:""}`;var Vt=function(e,t,a,i){var o,s=arguments.length,l=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,a):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,a,i);else for(var n=e.length-1;n>=0;n--)(o=e[n])&&(l=(s<3?o(l):s>3?o(t,a,l):o(t,a))||l);return s>3&&l&&Object.defineProperty(t,a,l),l},Ft=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Zt=class extends je{constructor(){super(...arguments),this.props={name:"",description:"",icon:""},this.install={handleEvent:()=>{}},this.hideDialog=()=>{},this.disableClose=!1,this._callInstall=()=>{this.install.handleEvent()},this._callHide=()=>{this.hideDialog(),this.setupAppearence()},this.bindedElement=null,this._saveBodyStyle=document.body.style.overscrollBehaviorY,this.dragMobileSheet=(e,t,a)=>{if(!e||!t||!a)return null;let i=0;const o=t.clientHeight+a.clientHeight,s=e=>e.clientY||(e.changedTouches&&e.changedTouches.length?e.changedTouches[0].clientY:0),l=e=>{window.addEventListener("mouseup",n),window.addEventListener("mousemove",r),window.addEventListener("touchend",n),window.addEventListener("touchmove",r),i=s(e)-t.getBoundingClientRect().top,document.body.style.overscrollBehaviorY="none"},n=t=>{if(document.body.style.overscrollBehaviorY=this._saveBodyStyle,!this.disableClose&&s(t)>=window.innerHeight-25)d(t,window.innerHeight+50,!0);else if(window.innerHeight-s(t)>e.clientHeight/2.5){d(t,window.innerHeight-e.clientHeight);try{Ut.eventGallery(this.getRootNode().host)}catch(t){}}else d(t,window.innerHeight-o-35)},r=t=>{const a=s(t);this.disableClose&&window.innerHeight-a<70||a<=window.innerHeight-e.clientHeight+i||(e.style.setProperty("transition","none"),e.style.setProperty("--translateY",`translateY(${a-i}px)`))},d=(a,i,d)=>{window.removeEventListener("mouseup",n),window.removeEventListener("mousemove",r),window.removeEventListener("touchend",n),window.removeEventListener("touchmove",r),window.innerWidth>=768||(!i&&s(a)>=window.innerHeight-o?e.style.setProperty("--translateY",`translateY(calc(100vh - ${o}px))`):e.style.setProperty("--translateY",`translateY(${(i||s(a))+35}px)`),e.style.setProperty("transition","transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s"),d&&(t.removeEventListener("mousedown",l),t.removeEventListener("touchstart",l),setTimeout(this._callHide,250)))};return t.addEventListener("mousedown",l),t.addEventListener("touchstart",l,{passive:!0}),d(new MouseEvent("mouseup"),window.innerHeight-o-35),{touchElement:t,listener:l}},this.setupAppearence=()=>{this.bindedElement&&(this.bindedElement.touchElement.removeEventListener("mousedown",this.bindedElement.listener),this.bindedElement.touchElement.removeEventListener("touchstart",this.bindedElement.listener)),this.bindedElement=this.dragMobileSheet(this.parentElement?.parentElement,this.parentElement?.getElementsByClassName("touch-header")[0],this.parentElement?.getElementsByClassName("body-header")[0])},this._init=()=>{this.setupAppearence(),window.addEventListener("resize",this.setupAppearence)}}firstUpdated(){this._init()}createRenderRoot(){return this}connectedCallback(){super.connectedCallback()}render(){return ge`${Wt(this.props.name,this.props.description,this.props.icon,this._callInstall)}`}};Vt([rt({type:Object}),Ft("design:type",Object)],Zt.prototype,"props",void 0),Vt([rt({type:Object}),Ft("design:type",Object)],Zt.prototype,"install",void 0),Vt([rt(),Ft("design:type",Object)],Zt.prototype,"hideDialog",void 0),Vt([rt(),Ft("design:type",Object)],Zt.prototype,"disableClose",void 0),Zt=Vt([st("pwa-bottom-sheet")],Zt);const Yt=Zt,Gt=D`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,"Segoe UI",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:"";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,"Segoe UI",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:"";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`,Kt=D`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,"Segoe UI";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:"icon description" "welcome welcome" "how-to how-to" "gallery gallery" "button button";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"icon" "description" "welcome" "how-to" "gallery" "button";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`,Jt=1;class Qt{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,a){this.t=e,this._$AM=t,this.i=a}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}}const Xt=(e=>(...t)=>({_$litDirective$:e,values:t}))(class extends Qt{constructor(e){if(super(e),e.type!==Jt||"class"!==e.name||e.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(e){return" "+Object.keys(e).filter((t=>e[t])).join(" ")+" "}update(e,[t]){if(void 0===this.st){this.st=new Set,void 0!==e.strings&&(this.nt=new Set(e.strings.join(" ").split(/\s/).filter((e=>""!==e))));for(const e in t)t[e]&&!this.nt?.has(e)&&this.st.add(e);return this.render(t)}const a=e.element.classList;for(const e of this.st)e in t||(a.remove(e),this.st.delete(e));for(const e in t){const i=!!t[e];i===this.st.has(e)||this.nt?.has(e)||(i?(a.add(e),this.st.add(e)):(a.remove(e),this.st.delete(e)))}return be}}),ea=(e,t,a,i,o,s,l,n,r,d,c,p,h)=>{const g=()=>({available:r,gallery:h}),b=!o&&n.screenshots&&n.screenshots.length;return ge`
icon
${s?"":ge``}
${location.hostname}
${t?ge`
${t}
`:""} ${i?"":ge`
${a||`${Re("This site has app functionality.")} ${Re("Install it on your device for extensive experience and easy access.")}`}
`} ${b?ge``:""}
${b?ge``:""}
${b?ge``:""}
`},ta=(e,t,a,i,o,s,l,n,r,d,c,p,h,g,b)=>{const u=!o&&n.screenshots&&n.screenshots.length;return ge``};var aa=function(e,t,a,i){var o,s=arguments.length,l=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,a):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,a,i);else for(var n=e.length-1;n>=0;n--)(o=e[n])&&(l=(s<3?o(l):s>3?o(t,a,l):o(t,a))||l);return s>3&&l&&Object.defineProperty(t,a,l),l},ia=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let oa=class extends je{constructor(){super(...arguments),this.manifestUrl="/manifest.json",this.icon="",this.name="",this.description="",this.installDescription="",this.disableDescription=!1,this.disableScreenshots=!1,this.disableScreenshotsApple=!1,this.disableScreenshotsChrome=!1,this.manualApple=!1,this.manualChrome=!1,this.disableChrome=!1,this.disableClose=!1,this.useLocalStorage=!1,this.externalPromptEvent=null,this.platforms=[],this.userChoiceResult="",this.isDialogHidden=Ut.getStorageFlag("pwa-hide-install"),this.isInstallAvailable=!1,this.isAppleMobilePlatform=!1,this.isAppleDesktopPlatform=!1,this.isUnderStandaloneMode=!1,this.isRelatedAppsInstalled=!1,this._manifest=new It,this._howToRequested=!1,this._galleryRequested=!1,this._install={handleEvent:()=>{window.defferedPromptEvent&&(this.hideDialog(),window.defferedPromptEvent.prompt(),window.defferedPromptEvent.userChoice.then((e=>{this.userChoiceResult=e.outcome,Ut.eventUserChoiceResult(this,this.userChoiceResult)})).catch((e=>{Ut.eventInstalledFail(this)})),window.defferedPromptEvent=null)},passive:!0},this.install=()=>{this.isAppleMobilePlatform||this.isAppleDesktopPlatform?(this._howToRequested=!0,this.requestUpdate()):this._install.handleEvent()},this._hideDialog={handleEvent:()=>{this.isDialogHidden=!0,Ut.setStorageFlag("pwa-hide-install",!0,this.useLocalStorage),this.requestUpdate()},passive:!0},this._hideDialogUser=()=>{Ut.eventUserChoiceResult(this,"dismissed"),this.userChoiceResult="dismissed",this.hideDialog()},this.hideDialog=()=>{this._hideDialog.handleEvent()},this.showDialog=(e=!1)=>{this.isDialogHidden=!1,e&&(this.isInstallAvailable=!0),Ut.setStorageFlag("pwa-hide-install",!1,this.useLocalStorage),this.requestUpdate()},this.getInstalledRelatedApps=async()=>await Ut.getInstalledRelatedApps(),this._howToForApple={handleEvent:()=>{this._howToRequested=!this._howToRequested,this._howToRequested&&this._galleryRequested&&(this._galleryRequested=!1),this.requestUpdate(),this._howToRequested&&Ut.eventInstallHowTo(this)},passive:!0},this._toggleGallery={handleEvent:()=>{this._galleryRequested=!this._galleryRequested,this._howToRequested&&this._galleryRequested&&(this._howToRequested=!1),this._galleryRequested&&Ut.eventGallery(this),this.requestUpdate()},passive:!0},this._init=async()=>{if(window.defferedPromptEvent=null,this._checkInstalled(),!this.disableChrome){const e=e=>{window.defferedPromptEvent=e,e.preventDefault(),this.platforms=e.platforms,this.isRelatedAppsInstalled||this.isUnderStandaloneMode?this.isInstallAvailable=!1:(this.isInstallAvailable=!0,Ut.eventInstallAvailable(this)),"accepted"===this.userChoiceResult&&(this.isDialogHidden=!0,Ut.eventInstalledSuccess(this)),this.requestUpdate()};null!=this.externalPromptEvent?setTimeout((()=>e(this.externalPromptEvent)),300):window.addEventListener("beforeinstallprompt",e)}window.addEventListener("appinstalled",(e=>{window.defferedPromptEvent=null,this.isInstallAvailable=!1,this.requestUpdate(),Ut.eventInstalledSuccess(this)}));try{const e=await fetch(this.manifestUrl),t=await e.json();if(!e.ok||!t||!Object.keys(t))throw Error("Manifest not found");Ut.normalizeManifestAssetUrls(t,this.manifestUrl),this.icon=this.icon||t.icons?.length?t.icons[0].src:"",this.name=this.name||t.short_name||t.name||"",this.description=this.description||t.description||"",this._manifest=t}catch(e){this.icon=this.icon||this._manifest.icons?.[0].src||"",this.name=this.name||this._manifest.short_name||"",this.description=this.description||this._manifest.description||""}},this._requestUpdate=()=>{this.requestUpdate()}}static get styles(){return[Gt,Kt]}async _checkInstalled(){this.isUnderStandaloneMode=Ut.isStandalone(),this.isRelatedAppsInstalled=await Ut.isRelatedAppsInstalled(),this.isAppleMobilePlatform=Ut.isAppleMobile(),this.isAppleDesktopPlatform=Ut.isAppleDesktop(),this.isAppleMobilePlatform||this.isAppleDesktopPlatform?this.isUnderStandaloneMode||(this.manualApple&&this.hideDialog(),setTimeout((()=>{this.isInstallAvailable=!0,this.requestUpdate(),Ut.eventInstallAvailable(this)}),1e3)):this.manualChrome&&this.hideDialog()}connectedCallback(){(e=>{"nb"===e.slice(0,2)&&(e="no");switch(e){case"zh":case"zh-TW":e="zh-CN"}try{Ct.get(e)?Tt(e):Tt(e.slice(0,2))}catch{}})(navigator.language),this._init(),qt.finalized,Yt.finalized,super.connectedCallback()}willUpdate(e){this.externalPromptEvent&&e.has("externalPromptEvent")&&"object"==typeof this.externalPromptEvent&&this._init()}render(){return this.isAppleMobilePlatform||this.isAppleDesktopPlatform?ge`${ta(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsApple,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._howToForApple,this.isAppleDesktopPlatform,this._howToRequested,this._toggleGallery,this._galleryRequested)}`:ge`${ea(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsChrome,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._install,this._toggleGallery,this._galleryRequested)}`}};aa([rt({attribute:"manifest-url"}),ia("design:type",Object)],oa.prototype,"manifestUrl",void 0),aa([rt(),ia("design:type",Object)],oa.prototype,"icon",void 0),aa([rt(),ia("design:type",Object)],oa.prototype,"name",void 0),aa([rt(),ia("design:type",Object)],oa.prototype,"description",void 0),aa([rt({attribute:"install-description"}),ia("design:type",Object)],oa.prototype,"installDescription",void 0),aa([rt({attribute:"disable-install-description",type:Boolean}),ia("design:type",Object)],oa.prototype,"disableDescription",void 0),aa([rt({attribute:"disable-screenshots",type:Boolean}),ia("design:type",Object)],oa.prototype,"disableScreenshots",void 0),aa([rt({attribute:"disable-screenshots-apple",type:Boolean}),ia("design:type",Object)],oa.prototype,"disableScreenshotsApple",void 0),aa([rt({attribute:"disable-screenshots-chrome",type:Boolean}),ia("design:type",Object)],oa.prototype,"disableScreenshotsChrome",void 0),aa([rt({attribute:"manual-apple",type:Boolean}),ia("design:type",Object)],oa.prototype,"manualApple",void 0),aa([rt({attribute:"manual-chrome",type:Boolean}),ia("design:type",Object)],oa.prototype,"manualChrome",void 0),aa([rt({attribute:"disable-chrome",type:Boolean}),ia("design:type",Object)],oa.prototype,"disableChrome",void 0),aa([rt({attribute:"disable-close",type:Boolean}),ia("design:type",Object)],oa.prototype,"disableClose",void 0),aa([rt({attribute:"use-local-storage",type:Boolean}),ia("design:type",Object)],oa.prototype,"useLocalStorage",void 0),aa([function(e){return rt({...e,state:!0,attribute:!1})}(),ia("design:type",Object)],oa.prototype,"externalPromptEvent",void 0),oa=aa([(e,t)=>(e.addInitializer(Ue),e),st("pwa-install")],oa),PWAInstallComponent=t})(); +var PWAInstallComponent;(()=>{"use strict";var e={d:(t,a)=>{for(var i in a)e.o(a,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:a[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{PWAInstallElement:()=>ta});var a={};e.r(a),e.d(a,{templates:()=>nt});var i={};e.r(i),e.d(i,{templates:()=>rt});var o={};e.r(o),e.d(o,{templates:()=>dt});var s={};e.r(s),e.d(s,{templates:()=>ct});var l={};e.r(l),e.d(l,{templates:()=>pt});var n={};e.r(n),e.d(n,{templates:()=>ht});var r={};e.r(r),e.d(r,{templates:()=>gt});var d={};e.r(d),e.d(d,{templates:()=>bt});var c={};e.r(c),e.d(c,{templates:()=>ut});var p={};e.r(p),e.d(p,{templates:()=>ft});var h={};e.r(h),e.d(h,{templates:()=>mt});var g={};e.r(g),e.d(g,{templates:()=>vt});var b={};e.r(b),e.d(b,{templates:()=>wt});var u={};e.r(u),e.d(u,{templates:()=>yt});var f={};e.r(f),e.d(f,{templates:()=>xt});var m={};e.r(m),e.d(m,{templates:()=>kt});var v={};e.r(v),e.d(v,{templates:()=>_t});var w={};e.r(w),e.d(w,{templates:()=>$t});var y={};e.r(y),e.d(y,{templates:()=>At});var x={};e.r(x),e.d(x,{templates:()=>St});var k={};e.r(k),e.d(k,{templates:()=>Et});const _=globalThis,$=_.ShadowRoot&&(void 0===_.ShadyCSS||_.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,A=Symbol(),S=new WeakMap;class E{constructor(e,t,a){if(this._$cssResult$=!0,a!==A)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o;const t=this.t;if($&&void 0===e){const a=void 0!==t&&1===t.length;a&&(e=S.get(t)),void 0===e&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),a&&S.set(t,e))}return e}toString(){return this.cssText}}const D=(e,...t)=>{const a=1===e.length?e[0]:t.reduce(((t,a,i)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if("number"==typeof e)return e;throw Error("Value passed to 'css' function must be a 'css' function result: "+e+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(a)+e[i+1]),e[0]);return new E(a,e,A)},P=(e,t)=>{if($)e.adoptedStyleSheets=t.map((e=>e instanceof CSSStyleSheet?e:e.styleSheet));else for(const a of t){const t=document.createElement("style"),i=_.litNonce;void 0!==i&&t.setAttribute("nonce",i),t.textContent=a.cssText,e.appendChild(t)}},j=$?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t="";for(const a of e.cssRules)t+=a.cssText;return(e=>new E("string"==typeof e?e:e+"",void 0,A))(t)})(e):e,{is:C,defineProperty:z,getOwnPropertyDescriptor:T,getOwnPropertyNames:R,getOwnPropertySymbols:I,getPrototypeOf:M}=Object,L=globalThis,U=L.trustedTypes,H=U?U.emptyScript:"",O=L.reactiveElementPolyfillSupport,B=(e,t)=>e,N={toAttribute(e,t){switch(t){case Boolean:e=e?H:null;break;case Object:case Array:e=null==e?e:JSON.stringify(e)}return e},fromAttribute(e,t){let a=e;switch(t){case Boolean:a=null!==e;break;case Number:a=null===e?null:Number(e);break;case Object:case Array:try{a=JSON.parse(e)}catch(e){a=null}}return a}},q=(e,t)=>!C(e,t),W={attribute:!0,type:String,converter:N,reflect:!1,hasChanged:q};Symbol.metadata??=Symbol("metadata"),L.litPropertyMetadata??=new WeakMap;class V extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=W){if(t.state&&(t.attribute=!1),this._$Ei(),this.elementProperties.set(e,t),!t.noAccessor){const a=Symbol(),i=this.getPropertyDescriptor(e,a,t);void 0!==i&&z(this.prototype,e,i)}}static getPropertyDescriptor(e,t,a){const{get:i,set:o}=T(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get(){return i?.call(this)},set(t){const s=i?.call(this);o.call(this,t),this.requestUpdate(e,s,a)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??W}static _$Ei(){if(this.hasOwnProperty(B("elementProperties")))return;const e=M(this);e.finalize(),void 0!==e.l&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(B("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(B("properties"))){const e=this.properties,t=[...R(e),...I(e)];for(const a of t)this.createProperty(a,e[a])}const e=this[Symbol.metadata];if(null!==e){const t=litPropertyMetadata.get(e);if(void 0!==t)for(const[e,a]of t)this.elementProperties.set(e,a)}this._$Eh=new Map;for(const[e,t]of this.elementProperties){const a=this._$Eu(e,t);void 0!==a&&this._$Eh.set(a,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const a=new Set(e.flat(1/0).reverse());for(const e of a)t.unshift(j(e))}else void 0!==e&&t.push(j(e));return t}static _$Eu(e,t){const a=t.attribute;return!1===a?void 0:"string"==typeof a?a:"string"==typeof e?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((e=>e(this)))}addController(e){(this._$EO??=new Set).add(e),void 0!==this.renderRoot&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){const e=new Map,t=this.constructor.elementProperties;for(const a of t.keys())this.hasOwnProperty(a)&&(e.set(a,this[a]),delete this[a]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return P(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((e=>e.hostConnected?.()))}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach((e=>e.hostDisconnected?.()))}attributeChangedCallback(e,t,a){this._$AK(e,a)}_$EC(e,t){const a=this.constructor.elementProperties.get(e),i=this.constructor._$Eu(e,a);if(void 0!==i&&!0===a.reflect){const o=(void 0!==a.converter?.toAttribute?a.converter:N).toAttribute(t,a.type);this._$Em=e,null==o?this.removeAttribute(i):this.setAttribute(i,o),this._$Em=null}}_$AK(e,t){const a=this.constructor,i=a._$Eh.get(e);if(void 0!==i&&this._$Em!==i){const e=a.getPropertyOptions(i),o="function"==typeof e.converter?{fromAttribute:e.converter}:void 0!==e.converter?.fromAttribute?e.converter:N;this._$Em=i,this[i]=o.fromAttribute(t,e.type),this._$Em=null}}requestUpdate(e,t,a){if(void 0!==e){if(a??=this.constructor.getPropertyOptions(e),!(a.hasChanged??q)(this[e],t))return;this.P(e,t,a)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(e,t,a){this._$AL.has(e)||this._$AL.set(e,t),!0===a.reflect&&this._$Em!==e&&(this._$Ej??=new Set).add(e)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}const e=this.scheduleUpdate();return null!=e&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}const e=this.constructor.elementProperties;if(e.size>0)for(const[t,a]of e)!0!==a.wrapped||this._$AL.has(t)||void 0===this[t]||this.P(t,this[t],a)}let e=!1;const t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach((e=>e.hostUpdate?.())),this.update(t)):this._$EU()}catch(t){throw e=!1,this._$EU(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach((e=>e.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Ej&&=this._$Ej.forEach((e=>this._$EC(e,this[e]))),this._$EU()}updated(e){}firstUpdated(e){}}V.elementStyles=[],V.shadowRootOptions={mode:"open"},V[B("elementProperties")]=new Map,V[B("finalized")]=new Map,O?.({ReactiveElement:V}),(L.reactiveElementVersions??=[]).push("2.0.4");const F=globalThis,Z=F.trustedTypes,Y=Z?Z.createPolicy("lit-html",{createHTML:e=>e}):void 0,G="$lit$",K=`lit$${Math.random().toFixed(9).slice(2)}$`,J="?"+K,Q=`<${J}>`,X=document,ee=()=>X.createComment(""),te=e=>null===e||"object"!=typeof e&&"function"!=typeof e,ae=Array.isArray,ie=e=>ae(e)||"function"==typeof e?.[Symbol.iterator],oe="[ \t\n\f\r]",se=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,le=/-->/g,ne=/>/g,re=RegExp(`>|${oe}(?:([^\\s"'>=/]+)(${oe}*=${oe}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),de=/'/g,ce=/"/g,pe=/^(?:script|style|textarea|title)$/i,he=e=>(t,...a)=>({_$litType$:e,strings:t,values:a}),ge=he(1),be=(he(2),he(3),Symbol.for("lit-noChange")),ue=Symbol.for("lit-nothing"),fe=new WeakMap,me=X.createTreeWalker(X,129);function ve(e,t){if(!ae(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==Y?Y.createHTML(t):t}const we=(e,t)=>{const a=e.length-1,i=[];let o,s=2===t?"":3===t?"":"",l=se;for(let t=0;t"===r[0]?(l=o??se,d=-1):void 0===r[1]?d=-2:(d=l.lastIndex-r[2].length,n=r[1],l=void 0===r[3]?re:'"'===r[3]?ce:de):l===ce||l===de?l=re:l===le||l===ne?l=se:(l=re,o=void 0);const p=l===re&&e[t+1].startsWith("/>")?" ":"";s+=l===se?a+Q:d>=0?(i.push(n),a.slice(0,d)+G+a.slice(d)+K+p):a+K+(-2===d?t:p)}return[ve(e,s+(e[a]||"")+(2===t?"":3===t?"":"")),i]};class ye{constructor({strings:e,_$litType$:t},a){let i;this.parts=[];let o=0,s=0;const l=e.length-1,n=this.parts,[r,d]=we(e,t);if(this.el=ye.createElement(r,a),me.currentNode=this.el.content,2===t||3===t){const e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;null!==(i=me.nextNode())&&n.length0){i.textContent=Z?Z.emptyScript:"";for(let a=0;a2||""!==a[0]||""!==a[1]?(this._$AH=Array(a.length-1).fill(new String),this.strings=a):this._$AH=ue}_$AI(e,t=this,a,i){const o=this.strings;let s=!1;if(void 0===o)e=xe(this,e,t,0),s=!te(e)||e!==this._$AH&&e!==be,s&&(this._$AH=e);else{const i=e;let l,n;for(e=o[0],l=0;l{const i=a?.renderBefore??t;let o=i._$litPart$;if(void 0===o){const e=a?.renderBefore??null;i._$litPart$=o=new _e(t.insertBefore(ee(),e),e,void 0,a??{})}return o._$AI(e),o})(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return be}}je._$litElement$=!0,je.finalized=!0,globalThis.litElementHydrateSupport?.({LitElement:je});const Ce=globalThis.litElementPolyfillSupport;Ce?.({LitElement:je});(globalThis.litElementVersions??=[]).push("4.1.1");const ze=(e,t,a)=>{let i=e[0];for(let o=1;o{return"string"!=typeof(t=e)&&"strTag"in t?ze(e.strings,e.values):e;var t};let Re=Te,Ie=!1;const Me="lit-localize-status";class Le{constructor(e){this.__litLocalizeEventHandler=e=>{"ready"===e.detail.status&&this.host.requestUpdate()},this.host=e}hostConnected(){window.addEventListener(Me,this.__litLocalizeEventHandler)}hostDisconnected(){window.removeEventListener(Me,this.__litLocalizeEventHandler)}}const Ue=e=>e.addController(new Le(e));class He{constructor(){this.settled=!1,this.promise=new Promise(((e,t)=>{this._resolve=e,this._reject=t}))}resolve(e){this.settled=!0,this._resolve(e)}reject(e){this.settled=!0,this._reject(e)}}const Oe=[];for(let e=0;e<256;e++)Oe[e]=(e>>4&15).toString(16)+(15&e).toString(16);function Be(e,t){return(t?"h":"s")+function(e){let t=0,a=8997,i=0,o=33826,s=0,l=40164,n=0,r=52210;for(let d=0;d>>16,a=65535&t,s+=i>>>16,o=65535&i,r=n+(s>>>16)&65535,l=65535&s;return Oe[r>>8]+Oe[255&r]+Oe[l>>8]+Oe[255&l]+Oe[o>>8]+Oe[255&o]+Oe[a>>8]+Oe[255&a]}("string"==typeof e?e:e.join(""))}const Ne=new WeakMap,qe=new Map;function We(e,t,a){if(e){const i=a?.id??function(e){const t="string"==typeof e?e:e.strings;let a=qe.get(t);void 0===a&&(a=Be(t,"string"!=typeof e&&!("strTag"in e)),qe.set(t,a));return a}(t),o=e[i];if(o){if("string"==typeof o)return o;if("strTag"in o)return ze(o.strings,t.values,o.values);{let e=Ne.get(o);return void 0===e&&(e=o.values,Ne.set(o,e)),{...o,values:e.map((e=>t.values[e]))}}}}return Te(t)}function Ve(e){window.dispatchEvent(new CustomEvent(Me,{detail:e}))}let Fe,Ze,Ye,Ge,Ke,Je="",Qe=new He;Qe.resolve();let Xe=0;const et=()=>Je,tt=e=>{if(e===(Fe??Je))return Qe.promise;if(!Ye||!Ge)throw Error("Internal error");if(!Ye.has(e))throw Error("Invalid locale code");Xe++;const t=Xe;Fe=e,Qe.settled&&(Qe=new He),Ve({status:"loading",loadingLocale:e});return(e===Ze?Promise.resolve({templates:void 0}):Ge(e)).then((a=>{Xe===t&&(Je=e,Fe=void 0,Ke=a.templates,Ve({status:"ready",readyLocale:e}),Qe.resolve())}),(a=>{Xe===t&&(Ve({status:"error",errorLocale:e,errorMessage:a.toString()}),Qe.reject(a))})),Qe.promise},at=e=>(t,a)=>{void 0!==a?a.addInitializer((()=>{customElements.define(e,t)})):customElements.define(e,t)},it={attribute:!0,type:String,converter:N,reflect:!1,hasChanged:q},ot=(e=it,t,a)=>{const{kind:i,metadata:o}=a;let s=globalThis.litPropertyMetadata.get(o);if(void 0===s&&globalThis.litPropertyMetadata.set(o,s=new Map),s.set(a.name,e),"accessor"===i){const{name:i}=a;return{set(a){const o=t.get.call(this);t.set.call(this,a),this.requestUpdate(i,o,e)},init(t){return void 0!==t&&this.P(i,void 0,e),t}}}if("setter"===i){const{name:i}=a;return function(a){const o=this[i];t.call(this,a),this.requestUpdate(i,o,e)}}throw Error("Unsupported decorator location: "+i)};function st(e){return(t,a)=>"object"==typeof a?ot(e,t,a):((e,t,a)=>{const i=t.hasOwnProperty(a);return t.constructor.createProperty(a,i?{...e,wrapped:!0}:e),i?Object.getOwnPropertyDescriptor(t,a):void 0})(e,t,a)}const lt=["cs","da","de","el","es","fr","it","ja","km","ko","nl","no","pl","pt","ru","sr","sv","tr","uk","zh-CN","zh-HK"],nt={s182ab2d6c997515f:"Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.",s1b9047d53d9f9d22:'2) Нажать "Поделиться"',s37a9e8aec5713460:"Подробнее",s5c6aad7a7e4a1437:'3) Нажать "На экран «Домой»"',s6196153c4b0c1ea0:"Установить",s922329d6f6213590:"Добавить в Dock",sa5ef80b4bb9b39f8:"Свернуть",sa7551383d1897fcc:'2) Нажмите "Добавить в Dock"',sba52286c21552a4e:"Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.",sc79fd7641eb9a975:"Спрятать Инструкцию",scdaf4bbff76674c8:"На экран «Домой»",sdfe23506a3b0cdc8:"1) Открыть в Safari браузере",se740f75b95a51807:"Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.",sfea652f6580ff086:"Этот веб-сайт имеет функционал приложения."},rt={s182ab2d6c997515f:"Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.",s1b9047d53d9f9d22:"2) Gezinme çubuğunda Paylaş'a basın",s37a9e8aec5713460:"Daha Fazla",s5c6aad7a7e4a1437:"3) Ana Ekrana Ekle'ye basın",s6196153c4b0c1ea0:"Yükle",s922329d6f6213590:"Dock’a Ekle",sa5ef80b4bb9b39f8:"Küçült",sa7551383d1897fcc:"2) Dock’a ekleye basın",sba52286c21552a4e:"Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.",sc79fd7641eb9a975:"Talimatları gizle",scdaf4bbff76674c8:"Ana Ekrana Ekle",sdfe23506a3b0cdc8:"1) Safari tarayıcısında açın",se740f75b95a51807:"Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.",sfea652f6580ff086:"Bu site uygulama işlevselliğine sahiptir."},dt={s182ab2d6c997515f:"Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",s1b9047d53d9f9d22:"2) Drücken Sie auf Teilen in der Navigationsleiste",s37a9e8aec5713460:"Mehr",s5c6aad7a7e4a1437:"3) Drücken Sie Hinzufügen zum Startbildschirm",s6196153c4b0c1ea0:"Installieren",s922329d6f6213590:"Zum Dock hinzufügen",sa5ef80b4bb9b39f8:"Weniger",sa7551383d1897fcc:"2) Drücken Sie auf Zum Dock hinzufügen",sba52286c21552a4e:"Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.",sc79fd7641eb9a975:"Anleitung ausblenden",scdaf4bbff76674c8:"Hinzufügen zum Startbildschirm",sdfe23506a3b0cdc8:"1) In Safari-Browser öffnen",se740f75b95a51807:"Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.",sfea652f6580ff086:"Diese Website verfügt über App-Funktionalität."},ct={s182ab2d6c997515f:"Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.",s1b9047d53d9f9d22:"2) Presionar Compartir en la barra de direcciones",s37a9e8aec5713460:"Más",s5c6aad7a7e4a1437:"3) Presionar Añadir a pantalla de inicio",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Añadir al Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Presionar Añadir al Dock",sba52286c21552a4e:"Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.",sc79fd7641eb9a975:"Esconder instrucciones",scdaf4bbff76674c8:"Añadir a pantalla de inicio",sdfe23506a3b0cdc8:"1) Abrir en el navegador web Safari",se740f75b95a51807:"Añádelo a tu Dock para una experiencia amplia y acceso fácil.",sfea652f6580ff086:"Este sitio tiene funcionalidad de aplicación."},pt={s182ab2d6c997515f:"Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.",s1b9047d53d9f9d22:"2) Druk op delen in de navigatiebalk",s37a9e8aec5713460:"Meer",s5c6aad7a7e4a1437:"3) Druk op Toevoegen aan het startscherm",s6196153c4b0c1ea0:"Installeren",s922329d6f6213590:"Toevoegen aan Dock",sa5ef80b4bb9b39f8:"Minder",sa7551383d1897fcc:"2) Druk op Toevoegen aan Dock",sba52286c21552a4e:"Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.",sc79fd7641eb9a975:"Instructie verbergen",scdaf4bbff76674c8:"Toevoegen aan het startscherm",sdfe23506a3b0cdc8:"1) Open in Safari-browser",se740f75b95a51807:"Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.",sfea652f6580ff086:"Deze site heeft app-functionaliteit."},ht={s182ab2d6c997515f:"Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",s1b9047d53d9f9d22:"2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης",s37a9e8aec5713460:"Περισσότερα",s5c6aad7a7e4a1437:"3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας",s6196153c4b0c1ea0:"Εγκατάσταση",s922329d6f6213590:"Προσθήκη στην Πρόσβαση",sa5ef80b4bb9b39f8:"Λιγότερα",sa7551383d1897fcc:"2) Πατήστε Προσθήκη στην Πρόσβαση",sba52286c21552a4e:"Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sc79fd7641eb9a975:"Απόκρυψη Οδηγιών",scdaf4bbff76674c8:"Προσθήκη στην Οθόνη Αφετηρίας",sdfe23506a3b0cdc8:"1) Ανοίξτε τον περιηγητή Safari",se740f75b95a51807:"Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sfea652f6580ff086:"Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής."},gt={s182ab2d6c997515f:"Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.",s1b9047d53d9f9d22:"2) Appuyez sur Partager dans la barre de navigation",s37a9e8aec5713460:"Plus",s5c6aad7a7e4a1437:"3) Appuyez sur Ajouter à l'écran d'accueil",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Ajouter au Dock",sa5ef80b4bb9b39f8:"Moins",sa7551383d1897fcc:"2) Appuyez sur Ajouter au Dock",sba52286c21552a4e:"Installez-le sur votre appareil pour une expérience complète et un accès facile.",sc79fd7641eb9a975:"Masquer les instructions",scdaf4bbff76674c8:"Ajouter à l'écran d'accueil",sdfe23506a3b0cdc8:"1) Ouvrir dans le navigateur Safari",se740f75b95a51807:"Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.",sfea652f6580ff086:"Ce site possède des fonctionnalités d'application."},bt={s182ab2d6c997515f:"Додајте га на Home Screen за широке могућности и лак приступ.",s1b9047d53d9f9d22:"2) Притисните Share у навигационој траци",s37a9e8aec5713460:"Више",s5c6aad7a7e4a1437:"3) Притисните Add to Home Screen",s6196153c4b0c1ea0:"Инсталирај",sa5ef80b4bb9b39f8:"Мање",sa7551383d1897fcc:"3) Притисните Add to Dock",sba52286c21552a4e:"Инсталирајте га на вашем уређају за широке могућности и лак приступ.",sc79fd7641eb9a975:"Сакриј упутство",sdfe23506a3b0cdc8:"1) Отворите у Safari прегледачу",se740f75b95a51807:"Додајте га у вашу Dock за широке могућности и лак приступ.",sfea652f6580ff086:"Овај сајт има функционалност апликације.",s922329d6f6213590:"Add to Dock",scdaf4bbff76674c8:"Add to Home Screen"},ut={s182ab2d6c997515f:"Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.",s1b9047d53d9f9d22:'2) Wybierz "Udostępnij"',s37a9e8aec5713460:"Więcej",s5c6aad7a7e4a1437:'3) Wybierz "Dodaj do Ekranu Głównego"',s6196153c4b0c1ea0:"Zainstaluj",s922329d6f6213590:"Dodaj do Docka",sa5ef80b4bb9b39f8:"Mniej",sa7551383d1897fcc:'2) Wybierz "Dodaj do Docka"',sba52286c21552a4e:"Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.",sc79fd7641eb9a975:"Ukryj instrukcję",scdaf4bbff76674c8:"Dodaj do Ekranu Głównego",sdfe23506a3b0cdc8:"1) Otwórz przeglądarkę Safari",se740f75b95a51807:"Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.",sfea652f6580ff086:"Ta strona posiada funkcje aplikacji."},ft={s182ab2d6c997515f:"Додайте на Домашній екран для зручного доступу та ширших можливостей.",s1b9047d53d9f9d22:"2) Натиснути «Поділитися»",s37a9e8aec5713460:"Детальніше",s5c6aad7a7e4a1437:"3) Натиснути «На Початковий екран»",s6196153c4b0c1ea0:"Встановити",s922329d6f6213590:"Додати на Dock",sa5ef80b4bb9b39f8:"Згорнути",sa7551383d1897fcc:"2) Натиснути «Додати на Dock»",sba52286c21552a4e:"Встановіть на ваш пристрій для зручного доступу та ширших можливостей.",sc79fd7641eb9a975:"Сховати Інструкцію",scdaf4bbff76674c8:"На Початковий экран",sdfe23506a3b0cdc8:"1) Відкрити в Safari браузері",se740f75b95a51807:"Додайте на панель Dock для зручного доступу та ширших можливостей.",sfea652f6580ff086:"Цей сайт має функції додатку."},mt={s182ab2d6c997515f:"將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。",s1b9047d53d9f9d22:"2) 點擊列表上的分享按鈕",s37a9e8aec5713460:"詳細資訊",s5c6aad7a7e4a1437:"3) 點擊加入主畫面",s6196153c4b0c1ea0:"安裝",s922329d6f6213590:"添加到Dock欄",sa5ef80b4bb9b39f8:"簡短資訊",sa7551383d1897fcc:"2) 點選添加到Dock欄",sba52286c21552a4e:"在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。",sc79fd7641eb9a975:"隱藏安裝流程",scdaf4bbff76674c8:"將App加入主畫面",sdfe23506a3b0cdc8:"1) 在Safari上瀏覽此網頁",se740f75b95a51807:"將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。",sfea652f6580ff086:"此網站具有應用程式功能。"},vt={s182ab2d6c997515f:"将其添加到主屏幕,以享受更丰富的体验并便于访问。",s1b9047d53d9f9d22:"2) 点击导航栏中的“分享”按钮",s37a9e8aec5713460:"更多",s5c6aad7a7e4a1437:"3) 点击“添加到主屏幕”",s6196153c4b0c1ea0:"安装",s922329d6f6213590:"添加到程序坞",sa5ef80b4bb9b39f8:"收起",sa7551383d1897fcc:"2) 点击“添加到程序坞”",sba52286c21552a4e:"在您的设备上安装,以享受更丰富的体验并便于访问。",sc79fd7641eb9a975:"隐藏安装步骤",scdaf4bbff76674c8:"添加到主屏幕",sdfe23506a3b0cdc8:"1) 在 Safari 浏览器中打开此页面",se740f75b95a51807:"将其添加到您的程序坞,以享受更全面的体验并便于访问。",sfea652f6580ff086:"此网站具备 App 功能特性。"},wt={s182ab2d6c997515f:"Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.",s1b9047d53d9f9d22:"2) Premi Condividi nella barra di navigazione",s37a9e8aec5713460:"Più",s5c6aad7a7e4a1437:"3) Premi Aggiungi alla schermata principale",s6196153c4b0c1ea0:"Installa",s922329d6f6213590:"Aggiungi al Dock",sa5ef80b4bb9b39f8:"Meno",sa7551383d1897fcc:"2) Premi Aggiungi al Dock",sba52286c21552a4e:"Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.",sc79fd7641eb9a975:"Nascondi istruzioni",scdaf4bbff76674c8:"Aggiungi alla schermata principale",sdfe23506a3b0cdc8:"1) Apri nel browser Safari",se740f75b95a51807:"Aggiungilo al Dock per un'esperienza più completa e un accesso facile.",sfea652f6580ff086:"Questo sito ha funzionalità di app."},yt={s182ab2d6c997515f:"Přidejte jej na plochu pro rozšířené využití a snadný přístup.",s1b9047d53d9f9d22:"2) Stiskněte tlačítko Sdílet na navigačním panelu",s37a9e8aec5713460:"Vice",s5c6aad7a7e4a1437:"3) Stiskněte tlačítko Přidat na plochu",s6196153c4b0c1ea0:"Nainstalovat",s922329d6f6213590:"Přidat do Docku",sa5ef80b4bb9b39f8:"Méně",sa7551383d1897fcc:"2) Stiskněte Přidat do Docku",sba52286c21552a4e:"Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.",sc79fd7641eb9a975:"Skrýt instrukce",scdaf4bbff76674c8:"Přidat na plochu",sdfe23506a3b0cdc8:"1) Otevřete v prohlížeči Safari",se740f75b95a51807:"Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.",sfea652f6580ff086:"Tento web má funkce aplikace."},xt={s182ab2d6c997515f:"Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.",s1b9047d53d9f9d22:"2) Trykk på Del-knappen i navigasjonslinjen",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Velg Legg til på Hjem-skjerm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Legg til i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Velg Legg til i Dock",sba52286c21552a4e:"Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.",sc79fd7641eb9a975:"Skjul instruksjoner",scdaf4bbff76674c8:"Legg til på Hjem-skjerm",sdfe23506a3b0cdc8:"1) Åpne i Safari",se740f75b95a51807:"Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.",sfea652f6580ff086:"Denne siden har app-funksjonalitet."},kt={s182ab2d6c997515f:"Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.",s1b9047d53d9f9d22:"2) Pressione Compartilhar na barra de endereço",s37a9e8aec5713460:"Mais",s5c6aad7a7e4a1437:"3) Pressione Adicionar à Tela de Início",s6196153c4b0c1ea0:"Instalar",s922329d6f6213590:"Adicionar ao Dock",sa5ef80b4bb9b39f8:"Menos",sa7551383d1897fcc:"2) Pressione Adicionar ao Dock",sba52286c21552a4e:"Instale no dispositivo para uma melhor experiência e mais fácil acesso.",sc79fd7641eb9a975:"Ocultar Instruções",scdaf4bbff76674c8:"Adicionar à Tela de Início",sdfe23506a3b0cdc8:"1) Abra no navegador Safari",se740f75b95a51807:"Adicione ao Dock para uma melhor experiência e mais fácil acesso.",sfea652f6580ff086:"Este site possui funcionalidade de aplicativo."},_t={s182ab2d6c997515f:"ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。",s1b9047d53d9f9d22:"2) ナビゲーションバーで共有を押す",s37a9e8aec5713460:"展開",s5c6aad7a7e4a1437:"3) 「ホーム画面に追加」を押す",s6196153c4b0c1ea0:"インストール",s922329d6f6213590:"Dockに追加",sa5ef80b4bb9b39f8:"折りたたむ",sa7551383d1897fcc:"2) 「Dockに追加」を押す",sba52286c21552a4e:"デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。",sc79fd7641eb9a975:"説明を非表示",scdaf4bbff76674c8:"ホーム画面に追加",sdfe23506a3b0cdc8:"1) Safariで開く",se740f75b95a51807:"ドックに追加して、幅広い体験と簡単なアクセスを実現してください。",sfea652f6580ff086:"このサイトはアプリ機能があります。"},$t={s182ab2d6c997515f:"Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.",s1b9047d53d9f9d22:"2) Tryck på Dela-knappen i verktygsfältet",s37a9e8aec5713460:"Mer",s5c6aad7a7e4a1437:"3) Välj Lägg till på hemskärmen",s6196153c4b0c1ea0:"Installera",s922329d6f6213590:"Lägg till i Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Välj Lägg till i Dock",sba52286c21552a4e:"Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.",sc79fd7641eb9a975:"Göm instruktioner",scdaf4bbff76674c8:"Lägg till på hemskärmen",sdfe23506a3b0cdc8:"1) Öppna i Safari",se740f75b95a51807:"Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.",sfea652f6580ff086:"Denna webbsajt har app-funktionalitet."},At={s182ab2d6c997515f:"더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.",s1b9047d53d9f9d22:"2) 내비게이션 바에서 공유 버튼 누르기",s37a9e8aec5713460:"더보기",s5c6aad7a7e4a1437:"3) 홈 화면에 추가 버튼 누르기",s6196153c4b0c1ea0:"설치",s922329d6f6213590:"Dock에 추가",sa5ef80b4bb9b39f8:"닫기",sa7551383d1897fcc:"2) Dock에 추가 버튼 누르기",sba52286c21552a4e:"더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.",sc79fd7641eb9a975:"안내 숨기기",scdaf4bbff76674c8:"홈 화면에 추가",sdfe23506a3b0cdc8:"1) Safari 브라우저에서 열기",se740f75b95a51807:"더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.",sfea652f6580ff086:"이 사이트는 앱 기능을 가지고 있습니다."},St={s182ab2d6c997515f:"បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",s1b9047d53d9f9d22:"2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ",s37a9e8aec5713460:"បង្ហាញបន្ថែម",s5c6aad7a7e4a1437:"3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",s6196153c4b0c1ea0:"តំឡើង",s922329d6f6213590:"បន្ថែមទៅកាន់ Dock",sa5ef80b4bb9b39f8:"បង្ហាញតិច",sa7551383d1897fcc:"2) ចុចលើ បន្ថែមទៅកាន់ Dock",sba52286c21552a4e:"តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sc79fd7641eb9a975:"បិទការណែនាំ",scdaf4bbff76674c8:"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",sdfe23506a3b0cdc8:"1) បើកនៅក្នុងកម្មវិធី Safari",se740f75b95a51807:"បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sfea652f6580ff086:"គេហទំព័រនេះមានមុខងារជាកម្មវិធី។"},Et={s182ab2d6c997515f:"Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.",s1b9047d53d9f9d22:"2) Tryk på Del-knappen i navigationslinjen",s37a9e8aec5713460:"Mere",s5c6aad7a7e4a1437:"3) Vælg Tilføj til hjemmeskærm",s6196153c4b0c1ea0:"Installer",s922329d6f6213590:"Tilføj til Dock",sa5ef80b4bb9b39f8:"Mindre",sa7551383d1897fcc:"2) Vælg Tilføj til Dock",sba52286c21552a4e:"Installer den på din enhed for en bedre oplevelse og nem adgang.",sc79fd7641eb9a975:"Skjul instruktion",scdaf4bbff76674c8:"Tilføj til hjemmeskærm",sdfe23506a3b0cdc8:"1) Åbn i Safari-browseren",se740f75b95a51807:"Tilføj den til din Dock for en bedre oplevelse og nem adgang.",sfea652f6580ff086:"Denne side har app-funktionalitet."},Dt=new Map([["ru",a],["tr",i],["de",o],["es",s],["nl",l],["el",n],["fr",r],["sr",d],["pl",c],["uk",p],["zh-HK",h],["zh-CN",g],["it",b],["cs",u],["no",f],["pt",m],["ja",v],["sv",w],["ko",y],["km",x],["da",k]]),{getLocale:Pt,setLocale:jt}=(Ct={sourceLocale:"en",targetLocales:lt,loadLocale:async e=>Dt.get(e)},function(e){if(Ie)throw Error("lit-localize can only be configured once");Re=e,Ie=!0}(((e,t)=>We(Ke,e,t))),Je=Ze=Ct.sourceLocale,Ye=new Set(Ct.targetLocales),Ye.add(Ct.sourceLocale),Ge=Ct.loadLocale,{getLocale:et,setLocale:tt});var Ct;class zt{constructor(){this.icons=[{src:""}],this.screenshots=void 0,this.short_name="PWA",this.name="Progressive web application",this.description="Progressive web application"}}const Tt=D`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-left:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-right:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-left:7px}.gallery.apple_mobile .btn.prev svg{margin-left:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`,Rt=(e,t,a)=>{const i=new CustomEvent(t,{detail:{message:a}});e.dispatchEvent(i)};class It{static isAppleMobile(){return!(!(["iPhone","iPad","iPod"].includes(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2)||!("serviceWorker"in navigator))}static isAppleDesktop(){const e=navigator.userAgent.toLowerCase();if(navigator.maxTouchPoints||!e.match(/macintosh/))return!1;const t=/version\/(\d{2})\./.exec(e);if(!(t&&t[1]&&parseInt(t[1])>=17))return!1;const a=!!document.createElement("audio").canPlayType('audio/wav; codecs="1"'),i=!!new OffscreenCanvas(1,1).getContext("webgl");return a&&i}static deviceFormFactor(){return window.matchMedia("(orientation: portrait)").matches?"narrow":"wide"}static isStandalone(){return!!(window.matchMedia("(display-mode: standalone)").matches||"standalone"in navigator&&!0===navigator.standalone)}static async getInstalledRelatedApps(){if("getInstalledRelatedApps"in navigator)try{return await navigator.getInstalledRelatedApps().then((e=>e))}catch(e){}return[]}static async isRelatedAppsInstalled(){return!!(await this.getInstalledRelatedApps()).length}static setStorageFlag(e,t,a=!1){try{a?localStorage.setItem(e,t.toString()):sessionStorage.setItem(e,t.toString())}catch(e){}}static getStorageFlag(e){try{return"true"===sessionStorage.getItem(e)||"true"===localStorage.getItem(e)}catch(e){return!1}}static eventInstalledSuccess(e){Rt(e,"pwa-install-success-event","App install success (Chromium/Android only)")}static eventInstalledFail(e){Rt(e,"pwa-install-fail-event","App install failed (Chromium/Android only)")}static eventUserChoiceResult(e,t){Rt(e,"pwa-user-choice-result-event",t)}static eventInstallAvailable(e){Rt(e,"pwa-install-available-event","App install available")}static eventInstallHowTo(e){Rt(e,"pwa-install-how-to-event","App install instruction showed")}static eventGallery(e){Rt(e,"pwa-install-gallery-event","App install gallery showed")}static normalizeManifestAssetUrls(e,t){const a=new URL(t,document.location.href);[...e.icons||[],...e.screenshots||[]].forEach((e=>{e.src=new URL(e.src,a).href}))}}const Mt=(e,t,a,i)=>ge`${e?ge``:""}`;var Lt=function(e,t,a,i){var o,s=arguments.length,l=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,a):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,a,i);else for(var n=e.length-1;n>=0;n--)(o=e[n])&&(l=(s<3?o(l):s>3?o(t,a,l):o(t,a))||l);return s>3&&l&&Object.defineProperty(t,a,l),l},Ut=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Ht=class extends je{constructor(){super(...arguments),this.screenshots=[],this.theme="default",this.getScrollElements=()=>{const e=this.shadowRoot?.querySelector("#paginated_gallery");if(!e)return;const t=e.querySelector(".gallery_scroller");if(!t)return;const a=Array.from(t.querySelectorAll("img"));return 0!==a.length?{scroller:t,items:a}:void 0},this.findCurrentItem=(e,t)=>{const a=e.scrollLeft;return t.find((e=>e.offsetWidth+e.offsetLeft>=a+e.offsetWidth/2.5))||null},this.scrollToPage=e=>{const t=this.getScrollElements();if(!t)return;const{scroller:a,items:i}=t,o=this.findCurrentItem(a,i);if(!o)return;const s=i.indexOf(o)+("next"===e?1:-1);s>=0&&s{this.scrollToPage("next")},this.scrollToPrevPage=()=>{this.scrollToPage("prev")},this._init=()=>{}}static get styles(){return Tt}firstUpdated(){const e=this.getScrollElements();e&&setTimeout((()=>{e.scroller.scrollTo({top:0,left:0})}),300)}connectedCallback(){super.connectedCallback(),this._init()}render(){return ge`${Mt(this.screenshots,this.theme,this.scrollToNextPage,this.scrollToPrevPage)}`}};Lt([st({type:Array}),Ut("design:type",Array)],Ht.prototype,"screenshots",void 0),Lt([st(),Ut("design:type",String)],Ht.prototype,"theme",void 0),Ht=Lt([at("pwa-gallery")],Ht);const Ot=Ht,Bt=(e,t,a,i)=>ge`
icon
${location.hostname}
${t?ge`
${t}
`:""}`;var Nt=function(e,t,a,i){var o,s=arguments.length,l=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,a):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,a,i);else for(var n=e.length-1;n>=0;n--)(o=e[n])&&(l=(s<3?o(l):s>3?o(t,a,l):o(t,a))||l);return s>3&&l&&Object.defineProperty(t,a,l),l},qt=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Wt=class extends je{constructor(){super(...arguments),this.props={name:"",description:"",icon:""},this.install={handleEvent:()=>{}},this.hideDialog=()=>{},this.disableClose=!1,this._callInstall=()=>{this.install.handleEvent()},this._callHide=()=>{this.hideDialog(),this.setupAppearence()},this.bindedElement=null,this._saveBodyStyle=document.body.style.overscrollBehaviorY,this.dragMobileSheet=(e,t,a)=>{if(!e||!t||!a)return null;let i=0;const o=t.clientHeight+a.clientHeight,s=e=>e.clientY||(e.changedTouches&&e.changedTouches.length?e.changedTouches[0].clientY:0),l=e=>{window.addEventListener("mouseup",n),window.addEventListener("mousemove",r),window.addEventListener("touchend",n),window.addEventListener("touchmove",r),i=s(e)-t.getBoundingClientRect().top,document.body.style.overscrollBehaviorY="none"},n=t=>{if(document.body.style.overscrollBehaviorY=this._saveBodyStyle,!this.disableClose&&s(t)>=window.innerHeight-25)d(t,window.innerHeight+50,!0);else if(window.innerHeight-s(t)>e.clientHeight/2.5){d(t,window.innerHeight-e.clientHeight);try{It.eventGallery(this.getRootNode().host)}catch(t){}}else d(t,window.innerHeight-o-35)},r=t=>{const a=s(t);this.disableClose&&window.innerHeight-a<70||a<=window.innerHeight-e.clientHeight+i||(e.style.setProperty("transition","none"),e.style.setProperty("--translateY",`translateY(${a-i}px)`))},d=(a,i,d)=>{window.removeEventListener("mouseup",n),window.removeEventListener("mousemove",r),window.removeEventListener("touchend",n),window.removeEventListener("touchmove",r),window.innerWidth>=768||(!i&&s(a)>=window.innerHeight-o?e.style.setProperty("--translateY",`translateY(calc(100vh - ${o}px))`):e.style.setProperty("--translateY",`translateY(${(i||s(a))+35}px)`),e.style.setProperty("transition","transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s"),d&&(t.removeEventListener("mousedown",l),t.removeEventListener("touchstart",l),setTimeout(this._callHide,250)))};return t.addEventListener("mousedown",l),t.addEventListener("touchstart",l,{passive:!0}),d(new MouseEvent("mouseup"),window.innerHeight-o-35),{touchElement:t,listener:l}},this.setupAppearence=()=>{this.bindedElement&&(this.bindedElement.touchElement.removeEventListener("mousedown",this.bindedElement.listener),this.bindedElement.touchElement.removeEventListener("touchstart",this.bindedElement.listener)),this.bindedElement=this.dragMobileSheet(this.parentElement?.parentElement,this.parentElement?.getElementsByClassName("touch-header")[0],this.parentElement?.getElementsByClassName("body-header")[0])},this._init=()=>{this.setupAppearence(),window.addEventListener("resize",this.setupAppearence)}}firstUpdated(){this._init()}createRenderRoot(){return this}connectedCallback(){super.connectedCallback()}render(){return ge`${Bt(this.props.name,this.props.description,this.props.icon,this._callInstall)}`}};Nt([st({type:Object}),qt("design:type",Object)],Wt.prototype,"props",void 0),Nt([st({type:Object}),qt("design:type",Object)],Wt.prototype,"install",void 0),Nt([st(),qt("design:type",Object)],Wt.prototype,"hideDialog",void 0),Nt([st(),qt("design:type",Object)],Wt.prototype,"disableClose",void 0),Wt=Nt([at("pwa-bottom-sheet")],Wt);const Vt=Wt,Ft=D`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,"Segoe UI",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome .dialog-body .icon{display:flex;align-items:flex-start}#pwa-install-element .install-dialog.chrome .dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}#pwa-install-element .install-dialog.chrome .dialog-body .about{display:grid;grid-template-rows:30px auto}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname,#pwa-install-element .install-dialog.chrome .dialog-body .about .name{padding:0 5px;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.chrome .dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.chrome .dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:left;word-break:break-all;white-space:nowrap}#pwa-install-element .install-dialog.chrome .dialog-body .about+hr{margin-top:10px}#pwa-install-element .install-dialog.chrome .dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:left}#pwa-install-element .install-dialog.chrome .dialog-body .app-description{font-size:13px;margin-bottom:10px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}#pwa-install-element .install-dialog.chrome .dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}#pwa-install-element .install-dialog.chrome .dialog-body .install-description{font-size:14px}#pwa-install-element .install-dialog.chrome .dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}#pwa-install-element .install-dialog.chrome .dialog-body .action-buttons .primary{grid-column-start:2}#pwa-install-element .install-dialog.chrome .dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile .dialog-body{grid-template-columns:1fr}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header:active{cursor:grabbing}#pwa-install-element .install-dialog.mobile .dialog-body .touch-header::before{content:"";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}#pwa-install-element .install-dialog.mobile .dialog-body .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .install{text-transform:capitalize;height:40px;padding:0 23px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about{grid-template-rows:auto auto;grid-gap:6px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .name{padding:0;line-height:20px;font-size:16px}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}#pwa-install-element .install-dialog.mobile .dialog-body .body-header .icon .icon-image{margin:0;width:45px;height:45px}#pwa-install-element .install-dialog.mobile .dialog-body .description{padding:15px 20px 0;margin:0;margin-bottom:15px;-webkit-line-clamp:6;max-height:150px}#pwa-install-element .install-dialog.mobile .dialog-body pwa-gallery{max-height:100%;padding-bottom:15px;opacity:1}#pwa-install-element .install-dialog.mobile .material-button{border-radius:20px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}#pwa-install-element .material-button{--text-color-primary:#fff;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#fff;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,"Segoe UI",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}#pwa-install-element .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}#pwa-install-element .material-button.secondary::after,#pwa-install-element .material-button.secondary::before{background-color:var(--background-color-primary)}#pwa-install-element .material-button.secondary:active,#pwa-install-element .material-button.secondary:hover{box-shadow:none}#pwa-install-element .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-right:0;margin-left:auto;padding:0;border-radius:50%}#pwa-install-element .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}#pwa-install-element .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}#pwa-install-element .material-button.secondary.close::before{border-radius:50%}#pwa-install-element .material-button::before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}#pwa-install-element .material-button::after{content:"";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}#pwa-install-element .material-button:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}#pwa-install-element .material-button:hover::before{opacity:.08}#pwa-install-element .material-button:hover:focus::before{opacity:.3}#pwa-install-element .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#pwa-install-element .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#fff;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}#pwa-install-element .install-dialog .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}@media(hover:none)and (pointer:coarse){#pwa-install-element .install-dialog.chrome .dialog-body .description::-webkit-scrollbar{display:none}}`,Zt=D`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,"Segoe UI";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:"icon description" "welcome welcome" "how-to how-to" "gallery gallery" "button button";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-right:7px;margin-top:7px;margin-left:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-right:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-right:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:left;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:left}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-right:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:left}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"icon" "description" "welcome" "how-to" "gallery" "button";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-right:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-right:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`,Yt=1;class Gt{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,a){this._$Ct=e,this._$AM=t,this._$Ci=a}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}}const Kt=(e=>(...t)=>({_$litDirective$:e,values:t}))(class extends Gt{constructor(e){if(super(e),e.type!==Yt||"class"!==e.name||e.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(e){return" "+Object.keys(e).filter((t=>e[t])).join(" ")+" "}update(e,[t]){if(void 0===this.st){this.st=new Set,void 0!==e.strings&&(this.nt=new Set(e.strings.join(" ").split(/\s/).filter((e=>""!==e))));for(const e in t)t[e]&&!this.nt?.has(e)&&this.st.add(e);return this.render(t)}const a=e.element.classList;for(const e of this.st)e in t||(a.remove(e),this.st.delete(e));for(const e in t){const i=!!t[e];i===this.st.has(e)||this.nt?.has(e)||(i?(a.add(e),this.st.add(e)):(a.remove(e),this.st.delete(e)))}return be}}),Jt=(e,t,a,i,o,s,l,n,r,d,c,p,h)=>{const g=()=>({available:r,gallery:h}),b=!o&&n.screenshots&&n.screenshots.length;return ge`
icon
${s?"":ge``}
${location.hostname}
${t?ge`
${t}
`:""} ${i?"":ge`
${a||`${Re("This site has app functionality.")} ${Re("Install it on your device for extensive experience and easy access.")}`}
`} ${b?ge``:""}
${b?ge``:""}
${b?ge``:""}
`},Qt=(e,t,a,i,o,s,l,n,r,d,c,p,h,g,b)=>{const u=!o&&n.screenshots&&n.screenshots.length;return ge``};var Xt=function(e,t,a,i){var o,s=arguments.length,l=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,a):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,a,i);else for(var n=e.length-1;n>=0;n--)(o=e[n])&&(l=(s<3?o(l):s>3?o(t,a,l):o(t,a))||l);return s>3&&l&&Object.defineProperty(t,a,l),l},ea=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let ta=class extends je{constructor(){super(...arguments),this.manifestUrl="/manifest.json",this.icon="",this.name="",this.description="",this.installDescription="",this.disableDescription=!1,this.disableScreenshots=!1,this.disableScreenshotsApple=!1,this.disableScreenshotsChrome=!1,this.manualApple=!1,this.manualChrome=!1,this.disableChrome=!1,this.disableClose=!1,this.useLocalStorage=!1,this.externalPromptEvent=null,this.platforms=[],this.userChoiceResult="",this.isDialogHidden=It.getStorageFlag("pwa-hide-install"),this.isInstallAvailable=!1,this.isAppleMobilePlatform=!1,this.isAppleDesktopPlatform=!1,this.isUnderStandaloneMode=!1,this.isRelatedAppsInstalled=!1,this._manifest=new zt,this._howToRequested=!1,this._galleryRequested=!1,this._install={handleEvent:()=>{window.defferedPromptEvent&&(this.hideDialog(),window.defferedPromptEvent.prompt(),window.defferedPromptEvent.userChoice.then((e=>{this.userChoiceResult=e.outcome,It.eventUserChoiceResult(this,this.userChoiceResult)})).catch((e=>{It.eventInstalledFail(this)})),window.defferedPromptEvent=null)},passive:!0},this.install=()=>{this.isAppleMobilePlatform||this.isAppleDesktopPlatform?(this._howToRequested=!0,this.requestUpdate()):this._install.handleEvent()},this._hideDialog={handleEvent:()=>{this.isDialogHidden=!0,It.setStorageFlag("pwa-hide-install",!0,this.useLocalStorage),this.requestUpdate()},passive:!0},this._hideDialogUser=()=>{It.eventUserChoiceResult(this,"dismissed"),this.userChoiceResult="dismissed",this.hideDialog()},this.hideDialog=()=>{this._hideDialog.handleEvent()},this.showDialog=(e=!1)=>{this.isDialogHidden=!1,e&&(this.isInstallAvailable=!0),It.setStorageFlag("pwa-hide-install",!1,this.useLocalStorage),this.requestUpdate()},this.getInstalledRelatedApps=async()=>await It.getInstalledRelatedApps(),this._howToForApple={handleEvent:()=>{this._howToRequested=!this._howToRequested,this._howToRequested&&this._galleryRequested&&(this._galleryRequested=!1),this.requestUpdate(),this._howToRequested&&It.eventInstallHowTo(this)},passive:!0},this._toggleGallery={handleEvent:()=>{this._galleryRequested=!this._galleryRequested,this._howToRequested&&this._galleryRequested&&(this._howToRequested=!1),this._galleryRequested&&It.eventGallery(this),this.requestUpdate()},passive:!0},this._init=async()=>{if(window.defferedPromptEvent=null,this._checkInstalled(),!this.disableChrome){const e=e=>{window.defferedPromptEvent=e,e.preventDefault(),this.platforms=e.platforms,this.isRelatedAppsInstalled||this.isUnderStandaloneMode?this.isInstallAvailable=!1:(this.isInstallAvailable=!0,It.eventInstallAvailable(this)),"accepted"===this.userChoiceResult&&(this.isDialogHidden=!0,It.eventInstalledSuccess(this)),this.requestUpdate()};null!=this.externalPromptEvent?setTimeout((()=>e(this.externalPromptEvent)),300):window.addEventListener("beforeinstallprompt",e)}window.addEventListener("appinstalled",(e=>{window.defferedPromptEvent=null,this.isInstallAvailable=!1,this.requestUpdate(),It.eventInstalledSuccess(this)}));try{const e=await fetch(this.manifestUrl),t=await e.json();if(!e.ok||!t||!Object.keys(t))throw Error("Manifest not found");It.normalizeManifestAssetUrls(t,this.manifestUrl),this.icon=this.icon||t.icons?.length?t.icons[0].src:"",this.name=this.name||t.short_name||t.name||"",this.description=this.description||t.description||"",this._manifest=t}catch(e){this.icon=this.icon||this._manifest.icons?.[0].src||"",this.name=this.name||this._manifest.short_name||"",this.description=this.description||this._manifest.description||""}},this._requestUpdate=()=>{this.requestUpdate()}}static get styles(){return[Ft,Zt]}async _checkInstalled(){this.isUnderStandaloneMode=It.isStandalone(),this.isRelatedAppsInstalled=await It.isRelatedAppsInstalled(),this.isAppleMobilePlatform=It.isAppleMobile(),this.isAppleDesktopPlatform=It.isAppleDesktop(),this.isAppleMobilePlatform||this.isAppleDesktopPlatform?this.isUnderStandaloneMode||(this.manualApple&&this.hideDialog(),setTimeout((()=>{this.isInstallAvailable=!0,this.requestUpdate(),It.eventInstallAvailable(this)}),1e3)):this.manualChrome&&this.hideDialog()}connectedCallback(){(e=>{"nb"===e.slice(0,2)&&(e="no");switch(e){case"zh":case"zh-TW":e="zh-CN"}try{Dt.get(e)?jt(e):jt(e.slice(0,2))}catch{}})(navigator.language),this._init(),Ot.finalized,Vt.finalized,super.connectedCallback()}willUpdate(e){this.externalPromptEvent&&e.has("externalPromptEvent")&&"object"==typeof this.externalPromptEvent&&this._init()}render(){return this.isAppleMobilePlatform||this.isAppleDesktopPlatform?ge`${Qt(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsApple,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._howToForApple,this.isAppleDesktopPlatform,this._howToRequested,this._toggleGallery,this._galleryRequested)}`:ge`${Jt(this.name,this.description,this.installDescription,this.disableDescription,this.disableScreenshots||this.disableScreenshotsChrome,this.disableClose,this.icon,this._manifest,this.isInstallAvailable&&!this.isDialogHidden,this._hideDialogUser,this._install,this._toggleGallery,this._galleryRequested)}`}};Xt([st({attribute:"manifest-url"}),ea("design:type",Object)],ta.prototype,"manifestUrl",void 0),Xt([st(),ea("design:type",Object)],ta.prototype,"icon",void 0),Xt([st(),ea("design:type",Object)],ta.prototype,"name",void 0),Xt([st(),ea("design:type",Object)],ta.prototype,"description",void 0),Xt([st({attribute:"install-description"}),ea("design:type",Object)],ta.prototype,"installDescription",void 0),Xt([st({attribute:"disable-install-description",type:Boolean}),ea("design:type",Object)],ta.prototype,"disableDescription",void 0),Xt([st({attribute:"disable-screenshots",type:Boolean}),ea("design:type",Object)],ta.prototype,"disableScreenshots",void 0),Xt([st({attribute:"disable-screenshots-apple",type:Boolean}),ea("design:type",Object)],ta.prototype,"disableScreenshotsApple",void 0),Xt([st({attribute:"disable-screenshots-chrome",type:Boolean}),ea("design:type",Object)],ta.prototype,"disableScreenshotsChrome",void 0),Xt([st({attribute:"manual-apple",type:Boolean}),ea("design:type",Object)],ta.prototype,"manualApple",void 0),Xt([st({attribute:"manual-chrome",type:Boolean}),ea("design:type",Object)],ta.prototype,"manualChrome",void 0),Xt([st({attribute:"disable-chrome",type:Boolean}),ea("design:type",Object)],ta.prototype,"disableChrome",void 0),Xt([st({attribute:"disable-close",type:Boolean}),ea("design:type",Object)],ta.prototype,"disableClose",void 0),Xt([st({attribute:"use-local-storage",type:Boolean}),ea("design:type",Object)],ta.prototype,"useLocalStorage",void 0),Xt([function(e){return st({...e,state:!0,attribute:!1})}(),ea("design:type",Object)],ta.prototype,"externalPromptEvent",void 0),ta=Xt([(e,t)=>(e.addInitializer(Ue),e),at("pwa-install")],ta),PWAInstallComponent=t})(); //# sourceMappingURL=pwa-install.bundle.js.map \ No newline at end of file diff --git a/docs/service-worker.js b/docs/service-worker.js index 8027c0a..6f13fb9 100644 --- a/docs/service-worker.js +++ b/docs/service-worker.js @@ -1 +1 @@ -var cacheName="PWAinstallDemo-17.10.2024/22:35:41",filesToCache=["/pwa-install/","manifest.json"];function sendMessage(e,n){return new Promise((function(t,s){var a=new MessageChannel;e.postMessage(n,[a.port2])}))}function sendMessageToAll(e,n){clients.matchAll().then((t=>{t.forEach((n=>{sendMessage(n,e)})),n&&"function"==typeof n&&n()}))}self.addEventListener("install",(function(e){e.waitUntil(caches.open(cacheName).then((function(e){return e.addAll(filesToCache)}))),self.skipWaiting()})),self.addEventListener("activate",(function(e){return e.waitUntil(caches.keys().then((function(e){return Promise.all(e.map((function(e){if(e!==cacheName)return sendMessageToAll("NEW_VERSION"),caches.delete(e)})))}))),self.clients.claim()})),self.addEventListener("fetch",(function(e){e.respondWith(caches.match(e.request,{ignoreSearch:!0}).then((function(n){return n||fetch(e.request)})))})),self.addEventListener("message",(e=>{e&&e.data&&e.data.message})); \ No newline at end of file +var cacheName="PWAinstallDemo-18.12.2024/21:38:29",filesToCache=["/pwa-install/","manifest.json"];function sendMessage(e,n){return new Promise((function(t,s){var a=new MessageChannel;e.postMessage(n,[a.port2])}))}function sendMessageToAll(e,n){clients.matchAll().then((t=>{t.forEach((n=>{sendMessage(n,e)})),n&&"function"==typeof n&&n()}))}self.addEventListener("install",(function(e){e.waitUntil(caches.open(cacheName).then((function(e){return e.addAll(filesToCache)}))),self.skipWaiting()})),self.addEventListener("activate",(function(e){return e.waitUntil(caches.keys().then((function(e){return Promise.all(e.map((function(e){if(e!==cacheName)return sendMessageToAll("NEW_VERSION"),caches.delete(e)})))}))),self.clients.claim()})),self.addEventListener("fetch",(function(e){e.respondWith(caches.match(e.request,{ignoreSearch:!0}).then((function(n){return n||fetch(e.request)})))})),self.addEventListener("message",(e=>{e&&e.data&&e.data.message})); \ No newline at end of file diff --git a/package.json b/package.json index 347e097..3edadb3 100644 --- a/package.json +++ b/package.json @@ -8,33 +8,37 @@ }, "type": "module", "types": "dist/types/index.d.ts", - "main": "dist/pwa-install.es.js", + "module": "dist/pwa-install.es.js", + "main": "dist/pwa-install.bundle.js", "exports": { ".": { - "import": { - "types": "./dist/types/index.d.ts", - "default": "./dist/pwa-install.es.js" - }, - "require": { - "types": "./dist/types/index.d.ts", - "default": "./dist/pwa-install.bundle.js" - } + "types": "./dist/types/index.d.ts", + "default": "./dist/pwa-install.es.js" }, "./react-legacy": { - "import": { - "types": "./dist/types/react-legacy/pwa-install.react-legacy.d.ts", - "default": "./dist/react-legacy/pwa-install.react-legacy.js" - } + "types": "./dist/types/react-legacy/pwa-install.react-legacy.d.ts", + "default": "./dist/react-legacy/pwa-install.react-legacy.js" }, "./dist/react-legacy/pwa-install.react-legacy.js": { - "import": { - "types": "./dist/types/react-legacy/pwa-install.react-legacy.d.ts", - "default": "./dist/react-legacy/pwa-install.react-legacy.js" - } + "types": "./dist/types/react-legacy/pwa-install.react-legacy.d.ts", + "default": "./dist/react-legacy/pwa-install.react-legacy.js" } }, + "typesVersions": { + "*": { + "react-legacy": [ + "./dist/types/react-legacy/pwa-install.react-legacy.d.ts" + ], + "dist/react-legacy/pwa-install.react-legacy.js": [ + "./dist/types/react-legacy/pwa-install.react-legacy.d.ts" + ] + } + }, + "files": [ + "dist" + ], "scripts": { - "build": "npm run localize:extract && npm run localize:build && npm run build:noloc && npm run cem:analyze", + "build": "npm run localize:extract && npm run localize:build && npm run build:noloc && npm run cem:analyze && node ./scripts/postbuild.mjs", "build:noloc": "webpack --config webpack/webpack.prod.js --mode=production && webpack --config webpack/webpack.prod.module.js --mode=production && webpack --config webpack/webpack.prod.umd.js --mode=production && npx webpack --config webpack/webpack.prod.react.js --mode=production && npm run cem:analyze", "localize:extract": "lit-localize extract", "localize:build": "lit-localize build", diff --git a/scripts/postbuild.mjs b/scripts/postbuild.mjs new file mode 100644 index 0000000..45f5518 --- /dev/null +++ b/scripts/postbuild.mjs @@ -0,0 +1,20 @@ +import { readFile, writeFile } from "node:fs/promises"; + +async function fixTypes() { + let file = 'dist/types/index.d.ts'; + let content = await readFile(file, 'utf-8'); + await writeFile( + file, + content.replace('from \'./types/types\';', 'from \'./types/types.js\';'), + 'utf-8' + ); + file = 'dist/types/react-legacy/pwa-install.react-legacy.d.ts'; + content = await readFile(file, 'utf-8'); + await writeFile( + file, + content.replace('from \'../index\';', 'from \'../index.js\';'), + 'utf-8' + ); +} + +fixTypes() From 9b8447bb7252bae63188d7dc29039e33b2237fef Mon Sep 17 00:00:00 2001 From: Gleb Khmyznikov Date: Wed, 12 Feb 2025 15:50:03 +0100 Subject: [PATCH 2/2] adjust the package json --- dist/pwa-install.bundle.js.map | 2 +- dist/pwa-install.es.js.map | 2 +- dist/react-legacy/pwa-install.react-legacy.js.map | 2 +- dist/umd/pwa-install.umd.js.map | 2 +- docs/service-worker.js | 2 +- package.json | 9 ++++++--- 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/dist/pwa-install.bundle.js.map b/dist/pwa-install.bundle.js.map index 0d3ffcb..3aee6ab 100644 --- a/dist/pwa-install.bundle.js.map +++ b/dist/pwa-install.bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"pwa-install.bundle.js","mappings":"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","sources":["webpack://PWAInstallComponent/webpack/bootstrap","webpack://PWAInstallComponent/webpack/runtime/define property getters","webpack://PWAInstallComponent/webpack/runtime/hasOwnProperty shorthand","webpack://PWAInstallComponent/webpack/runtime/make namespace object","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/css-tag.js","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/reactive-element.js","webpack://PWAInstallComponent/./node_modules/lit-html/lit-html.js","webpack://PWAInstallComponent/./node_modules/lit-element/lit-element.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/str-tag.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/default-msg.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/init/install.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/locale-status-event.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/localized-controller.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/deferred.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/fnv1a64.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/id-generation.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/runtime-msg.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/init/runtime.js","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/decorators/custom-element.js","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/decorators/property.js","webpack://PWAInstallComponent/./src/localization/locale-codes.ts","webpack://PWAInstallComponent/./src/localization/locales/ru.ts","webpack://PWAInstallComponent/./src/localization/locales/tr.ts","webpack://PWAInstallComponent/./src/localization/locales/de.ts","webpack://PWAInstallComponent/./src/localization/locales/es.ts","webpack://PWAInstallComponent/./src/localization/locales/nl.ts","webpack://PWAInstallComponent/./src/localization/locales/el.ts","webpack://PWAInstallComponent/./src/localization/locales/fr.ts","webpack://PWAInstallComponent/./src/localization/locales/sr.ts","webpack://PWAInstallComponent/./src/localization/locales/pl.ts","webpack://PWAInstallComponent/./src/localization/locales/uk.ts","webpack://PWAInstallComponent/./src/localization/locales/zh-HK.ts","webpack://PWAInstallComponent/./src/localization/locales/zh-CN.ts","webpack://PWAInstallComponent/./src/localization/locales/it.ts","webpack://PWAInstallComponent/./src/localization/locales/cs.ts","webpack://PWAInstallComponent/./src/localization/locales/no.ts","webpack://PWAInstallComponent/./src/localization/locales/pt.ts","webpack://PWAInstallComponent/./src/localization/locales/ja.ts","webpack://PWAInstallComponent/./src/localization/locales/sv.ts","webpack://PWAInstallComponent/./src/localization/locales/ko.ts","webpack://PWAInstallComponent/./src/localization/locales/km.ts","webpack://PWAInstallComponent/./src/localization/locales/fa.ts","webpack://PWAInstallComponent/./src/localization/locales/da.ts","webpack://PWAInstallComponent/./src/localization/locales/vi.ts","webpack://PWAInstallComponent/./src/localization/index.ts","webpack://PWAInstallComponent/./src/types/types.ts","webpack://PWAInstallComponent/./src/gallery/styles-gallery.scss","webpack://PWAInstallComponent/./src/utils.ts","webpack://PWAInstallComponent/./src/gallery/template-gallery.ts","webpack://PWAInstallComponent/./src/gallery/index.ts","webpack://PWAInstallComponent/./src/templates/chrome/styles-common.scss","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/styles-bottom-sheet.scss","webpack://PWAInstallComponent/./node_modules/lit-html/directive.js","webpack://PWAInstallComponent/./node_modules/lit-html/directives/class-map.js","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/template-bottom-sheet.ts","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/index.ts","webpack://PWAInstallComponent/./src/templates/chrome/styles.scss","webpack://PWAInstallComponent/./src/templates/apple/styles-apple.scss","webpack://PWAInstallComponent/./src/templates/chrome/template.ts","webpack://PWAInstallComponent/./src/templates/apple/template-apple.ts","webpack://PWAInstallComponent/./src/index.ts","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/decorators/state.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/localized-decorator.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"\":3===i?\"\":\"\",c=f;for(let i=0;i\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"\")+(2===i?\"\":3===i?\"\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as s}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class r extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const s=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(s,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return s}}r._$litElement$=!0,r[\"finalized\"]=!0,globalThis.litElementHydrateSupport?.({LitElement:r});const i=globalThis.litElementPolyfillSupport;i?.({LitElement:r});const o={_$AK:(t,e,s)=>{t._$AK(e,s)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push(\"4.1.1\");export{r as LitElement,o as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Tag that allows expressions to be used in localized non-HTML template\n * strings.\n *\n * Example: msg(str`Hello ${this.user}!`);\n *\n * The Lit html tag can also be used for this purpose, but HTML will need to be\n * escaped, and there is a small overhead for HTML parsing.\n *\n * Untagged template strings with expressions aren't supported by lit-localize\n * because they don't allow for values to be captured at runtime.\n */\nconst _str = (strings, ...values) => ({\n strTag: true,\n strings,\n values,\n});\nexport const str = _str;\nexport const isStrTagged = (val) => typeof val !== 'string' && 'strTag' in val;\n/**\n * Render the result of a `str` tagged template to a string. Note we don't need\n * to do this for Lit templates, since Lit itself handles rendering.\n */\nexport const joinStringsAndValues = (strings, values, valueOrder) => {\n let concat = strings[0];\n for (let i = 1; i < strings.length; i++) {\n concat += values[valueOrder ? valueOrder[i - 1] : i - 1];\n concat += strings[i];\n }\n return concat;\n};\n//# sourceMappingURL=str-tag.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { isStrTagged, joinStringsAndValues } from './str-tag.js';\n/**\n * Default identity msg implementation. Simply returns the input template with\n * no awareness of translations. If the template is str-tagged, returns it in\n * string form.\n */\nexport const defaultMsg = ((template) => isStrTagged(template)\n ? joinStringsAndValues(template.strings, template.values)\n : template);\n//# sourceMappingURL=default-msg.js.map","import { defaultMsg } from '../internal/default-msg.js';\n/**\n * Make a string or lit-html template localizable.\n *\n * @param template A string, a lit-html template, or a function that returns\n * either a string or lit-html template.\n * @param options Optional configuration object with the following properties:\n * - id: Optional project-wide unique identifier for this template. If\n * omitted, an id will be automatically generated from the template strings.\n * - desc: Optional description\n */\nexport let msg = defaultMsg;\nlet installed = false;\n/**\n * Internal only. Do not use this function.\n *\n * Installs an implementation of the msg function to replace the default\n * identity function. Throws if called more than once.\n *\n * @internal\n */\nexport function _installMsgImplementation(impl) {\n if (installed) {\n throw new Error('lit-localize can only be configured once');\n }\n msg = impl;\n installed = true;\n}\n//# sourceMappingURL=install.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Name of the event dispatched to `window` whenever a locale change starts,\n * finishes successfully, or fails. Only relevant to runtime mode.\n *\n * The `detail` of this event is an object with a `status` string that can be:\n * \"loading\", \"ready\", or \"error\", along with the relevant locale code, and\n * error message if applicable.\n *\n * You can listen for this event to know when your application should be\n * re-rendered following a locale change. See also the Localized mixin, which\n * automatically re-renders LitElement classes using this event.\n */\nexport const LOCALE_STATUS_EVENT = 'lit-localize-status';\n//# sourceMappingURL=locale-status-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { LOCALE_STATUS_EVENT } from './locale-status-event.js';\nclass LocalizeController {\n constructor(host) {\n this.__litLocalizeEventHandler = (event) => {\n if (event.detail.status === 'ready') {\n this.host.requestUpdate();\n }\n };\n this.host = host;\n }\n hostConnected() {\n window.addEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n hostDisconnected() {\n window.removeEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n}\n/**\n * Re-render the given LitElement whenever a new active locale has loaded.\n *\n * See also {@link localized} for the same functionality as a decorator.\n *\n * When using lit-localize in transform mode, calls to this function are\n * replaced with undefined.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {msg, updateWhenLocaleChanges} from '@lit/localize';\n *\n * class MyElement extends LitElement {\n * constructor() {\n * super();\n * updateWhenLocaleChanges(this);\n * }\n *\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nconst _updateWhenLocaleChanges = (host) => host.addController(new LocalizeController(host));\nexport const updateWhenLocaleChanges = _updateWhenLocaleChanges;\n//# sourceMappingURL=localized-controller.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport class Deferred {\n constructor() {\n this.settled = false;\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n resolve(value) {\n this.settled = true;\n this._resolve(value);\n }\n reject(error) {\n this.settled = true;\n this._reject(error);\n }\n}\n//# sourceMappingURL=deferred.js.map","/**\n * @license\n * Copyright 2014 Travis Webb\n * SPDX-License-Identifier: MIT\n */\n// This module is derived from the file:\n// https://github.com/tjwebb/fnv-plus/blob/1e2ce68a07cb7dd4c3c85364f3d8d96c95919474/index.js#L309\n//\n// Changes:\n// - Only the _hash64_1a_fast function is included.\n// - Removed loop unrolling.\n// - Converted to TypeScript ES module.\n// - var -> let/const\n//\n// TODO(aomarks) Upstream improvements to https://github.com/tjwebb/fnv-plus/.\nconst hl = [];\nfor (let i = 0; i < 256; i++) {\n hl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n}\n/**\n * Perform a FNV-1A 64-bit hash of the given string (as UTF-16 code units), and\n * return a hexadecimal digest (left zero padded to 16 characters).\n *\n * @see {@link http://tools.ietf.org/html/draft-eastlake-fnv-06}\n */\nexport function fnv1a64(str) {\n let t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n for (let i = 0; i < str.length; i++) {\n v0 ^= str.charCodeAt(i);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = (t3 + (t2 >>> 16)) & 65535;\n v2 = t2 & 65535;\n }\n return (hl[v3 >> 8] +\n hl[v3 & 255] +\n hl[v2 >> 8] +\n hl[v2 & 255] +\n hl[v1 >> 8] +\n hl[v1 & 255] +\n hl[v0 >> 8] +\n hl[v0 & 255]);\n}\n//# sourceMappingURL=fnv1a64.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { fnv1a64 } from './fnv1a64.js';\n/**\n * Delimiter used between each template string component before hashing. Used to\n * prevent e.g. \"foobar\" and \"foo${baz}bar\" from sharing a hash.\n *\n * This is the \"record separator\" ASCII character.\n */\nexport const HASH_DELIMITER = '\\x1e';\n/**\n * Id prefix on html-tagged templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst HTML_PREFIX = 'h';\n/**\n * Id prefix on plain string templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst STRING_PREFIX = 's';\n/**\n * Generate a unique ID for a lit-localize message.\n *\n * Example:\n * Template: html`Hello ${who}!`\n * Params: [\"Hello \", \"!\"], true\n * Output: h82ccc38d4d46eaa9\n *\n * The ID is constructed as:\n *\n * [0] Kind of template: [h]tml or [s]tring.\n * [1,16] 64-bit FNV-1a hash hex digest of the template strings, as UTF-16\n * code points, delineated by an ASCII \"record separator\" character.\n *\n * We choose FNV-1a because:\n *\n * 1. It's pretty fast (e.g. much faster than SHA-1).\n * 2. It's pretty small (0.25 KiB minified + brotli).\n * 3. We don't require cryptographic security, and 64 bits should give\n * sufficient collision resistance for any one application. Worst\n * case, we will always detect collisions during analysis.\n * 4. We can't use Web Crypto API (e.g. SHA-1), because it's asynchronous.\n * 5. It's a well known non-cryptographic hash with implementations in many\n * languages.\n * 6. There was an existing JavaScript implementation that doesn't require\n * BigInt, for IE11 compatibility.\n */\nexport function generateMsgId(strings, isHtmlTagged) {\n return ((isHtmlTagged ? HTML_PREFIX : STRING_PREFIX) +\n fnv1a64(typeof strings === 'string' ? strings : strings.join(HASH_DELIMITER)));\n}\n//# sourceMappingURL=id-generation.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { defaultMsg } from './default-msg.js';\nimport { joinStringsAndValues } from './str-tag.js';\nimport { generateMsgId } from './id-generation.js';\nconst expressionOrders = new WeakMap();\nconst hashCache = new Map();\nexport function runtimeMsg(templates, template, options) {\n if (templates) {\n const id = options?.id ?? generateId(template);\n const localized = templates[id];\n if (localized) {\n if (typeof localized === 'string') {\n // E.g. \"Hello World!\"\n return localized;\n }\n else if ('strTag' in localized) {\n // E.g. str`Hello ${name}!`\n //\n // Localized templates have ${number} in place of real template\n // expressions. They can't have real template values, because the\n // variable scope would be wrong. The number tells us the index of the\n // source value to substitute in its place, because expressions can be\n // moved to a different position during translation.\n return joinStringsAndValues(localized.strings, \n // Cast `template` because its type wasn't automatically narrowed (but\n // we know it must be the same type as `localized`).\n template.values, localized.values);\n }\n else {\n // E.g. html`Hello ${name}!`\n //\n // We have to keep our own mapping of expression ordering because we do\n // an in-place update of `values`, and otherwise we'd lose ordering for\n // subsequent renders.\n let order = expressionOrders.get(localized);\n if (order === undefined) {\n order = localized.values;\n expressionOrders.set(localized, order);\n }\n return {\n ...localized,\n values: order.map((i) => template.values[i]),\n };\n }\n }\n }\n return defaultMsg(template);\n}\nfunction generateId(template) {\n const strings = typeof template === 'string' ? template : template.strings;\n let id = hashCache.get(strings);\n if (id === undefined) {\n id = generateMsgId(strings, typeof template !== 'string' && !('strTag' in template));\n hashCache.set(strings, id);\n }\n return id;\n}\n//# sourceMappingURL=runtime-msg.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { Deferred } from '../internal/deferred.js';\nimport { LOCALE_STATUS_EVENT } from '../internal/locale-status-event.js';\nimport { runtimeMsg } from '../internal/runtime-msg.js';\nimport { _installMsgImplementation } from './install.js';\n/**\n * Dispatch a \"lit-localize-status\" event to `window` with the given detail.\n */\nfunction dispatchStatusEvent(detail) {\n window.dispatchEvent(new CustomEvent(LOCALE_STATUS_EVENT, { detail }));\n}\nlet activeLocale = '';\nlet loadingLocale;\nlet sourceLocale;\nlet validLocales;\nlet loadLocale;\nlet templates;\nlet loading = new Deferred();\n// The loading promise must be initially resolved, because that's what we should\n// return if the user immediately calls setLocale(sourceLocale).\nloading.resolve();\nlet requestId = 0;\n/**\n * Set configuration parameters for lit-localize when in runtime mode. Returns\n * an object with functions:\n *\n * - `getLocale`: Return the active locale code.\n * - `setLocale`: Set the active locale code.\n *\n * Throws if called more than once.\n */\nexport const configureLocalization = (config) => {\n _installMsgImplementation(((template, options) => runtimeMsg(templates, template, options)));\n activeLocale = sourceLocale = config.sourceLocale;\n validLocales = new Set(config.targetLocales);\n validLocales.add(config.sourceLocale);\n loadLocale = config.loadLocale;\n return { getLocale, setLocale };\n};\n/**\n * Return the active locale code.\n */\nconst getLocale = () => {\n return activeLocale;\n};\n/**\n * Set the active locale code, and begin loading templates for that locale using\n * the `loadLocale` function that was passed to `configureLocalization`. Returns\n * a promise that resolves when the next locale is ready to be rendered.\n *\n * Note that if a second call to `setLocale` is made while the first requested\n * locale is still loading, then the second call takes precedence, and the\n * promise returned from the first call will resolve when second locale is\n * ready. If you need to know whether a particular locale was loaded, check\n * `getLocale` after the promise resolves.\n *\n * Throws if the given locale is not contained by the configured `sourceLocale`\n * or `targetLocales`.\n */\nconst setLocale = (newLocale) => {\n if (newLocale === (loadingLocale ?? activeLocale)) {\n return loading.promise;\n }\n if (!validLocales || !loadLocale) {\n throw new Error('Internal error');\n }\n if (!validLocales.has(newLocale)) {\n throw new Error('Invalid locale code');\n }\n requestId++;\n const thisRequestId = requestId;\n loadingLocale = newLocale;\n if (loading.settled) {\n loading = new Deferred();\n }\n dispatchStatusEvent({ status: 'loading', loadingLocale: newLocale });\n const localePromise = newLocale === sourceLocale\n ? // We could switch to the source locale synchronously, but we prefer to\n // queue it on a microtask so that switching locales is consistently\n // asynchronous.\n Promise.resolve({ templates: undefined })\n : loadLocale(newLocale);\n localePromise.then((mod) => {\n if (requestId === thisRequestId) {\n activeLocale = newLocale;\n loadingLocale = undefined;\n templates = mod.templates;\n dispatchStatusEvent({ status: 'ready', readyLocale: newLocale });\n loading.resolve();\n }\n // Else another locale was requested in the meantime. Don't resolve or\n // reject, because the newer load call is going to use the same promise.\n // Note the user can call getLocale() after the promise resolves if they\n // need to check if the locale is still the one they expected to load.\n }, (err) => {\n if (requestId === thisRequestId) {\n dispatchStatusEvent({\n status: 'error',\n errorLocale: newLocale,\n errorMessage: err.toString(),\n });\n loading.reject(err);\n }\n });\n return loading.promise;\n};\n//# sourceMappingURL=runtime.js.map","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.P(o,void 0,t),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","// Do not modify this file by hand!\n// Re-generate this file by running lit-localize.\n\n/**\n * The locale code that templates in this source code are written in.\n */\nexport const sourceLocale = `en`;\n\n/**\n * The other locale codes that this application is localized into. Sorted\n * lexicographically.\n */\nexport const targetLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `es`,\n `fa`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `vi`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n\n/**\n * All valid project locale codes. Sorted lexicographically.\n */\nexport const allLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `en`,\n `es`,\n `fa`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `vi`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Откройте меню вашего браузера`,\n's182ab2d6c997515f': `Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.`,\n's1b9047d53d9f9d22': `2) Нажать \"Поделиться\"`,\n's2d90afa5dcca2c0e': `3) Прокрутите вниз до \"Добавить на главный экран\"`,\n's37a9e8aec5713460': `Подробнее`,\n's4593f304dac8848c': `2) Нажмите \"Добавить на главный экран\"`,\n's54cfbb14f46396d4': `1) Откройте в вашем основном браузере`,\n's6196153c4b0c1ea0': `Установить`,\n's922329d6f6213590': `Добавить в Dock`,\n'sa5ef80b4bb9b39f8': `Свернуть`,\n'sa7551383d1897fcc': `2) Нажмите \"Добавить в Dock\"`,\n'sba52286c21552a4e': `Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.`,\n'sc79fd7641eb9a975': `Спрятать Инструкцию`,\n'scdaf4bbff76674c8': `На экран «Домой»`,\n'se740f75b95a51807': `Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.`,\n'sfea652f6580ff086': `Этот веб-сайт имеет функционал приложения.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Tarayıcı menünüzü açın`,\n's182ab2d6c997515f': `Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.`,\n's1b9047d53d9f9d22': `2) Gezinme çubuğunda Paylaş'a basın`,\n's2d90afa5dcca2c0e': `3) \"Ana Ekrana Ekle\" seçeneğine kadar aşağı kaydırın`,\n's37a9e8aec5713460': `Daha Fazla`,\n's4593f304dac8848c': `2) \"Ana Ekrana Ekle\"ye dokunun`,\n's54cfbb14f46396d4': `1) Ana tarayıcınızda açın`,\n's6196153c4b0c1ea0': `Yükle`,\n's922329d6f6213590': `Dock’a Ekle`,\n'sa5ef80b4bb9b39f8': `Küçült`,\n'sa7551383d1897fcc': `2) Dock’a ekleye basın`,\n'sba52286c21552a4e': `Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.`,\n'sc79fd7641eb9a975': `Talimatları gizle`,\n'scdaf4bbff76674c8': `Ana Ekrana Ekle`,\n'se740f75b95a51807': `Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.`,\n'sfea652f6580ff086': `Bu site uygulama işlevselliğine sahiptir.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Öffnen Sie das Menü Ihres Browsers`,\n's182ab2d6c997515f': `Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n's1b9047d53d9f9d22': `2) Drücken Sie auf Teilen in der Navigationsleiste`,\n's2d90afa5dcca2c0e': `3) Scrollen Sie nach unten zu \"Zum Startbildschirm hinzufügen\"`,\n's37a9e8aec5713460': `Mehr`,\n's4593f304dac8848c': `2) Tippen Sie auf \"Zum Startbildschirm hinzufügen\"`,\n's54cfbb14f46396d4': `1) Öffnen Sie es in Ihrem Hauptbrowser`,\n's6196153c4b0c1ea0': `Installieren`,\n's922329d6f6213590': `Zum Dock hinzufügen`,\n'sa5ef80b4bb9b39f8': `Weniger`,\n'sa7551383d1897fcc': `2) Drücken Sie auf Zum Dock hinzufügen`,\n'sba52286c21552a4e': `Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.`,\n'sc79fd7641eb9a975': `Anleitung ausblenden`,\n'scdaf4bbff76674c8': `Hinzufügen zum Startbildschirm`,\n'se740f75b95a51807': `Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n'sfea652f6580ff086': `Diese Website verfügt über App-Funktionalität.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Abre el menú de tu navegador`,\n's182ab2d6c997515f': `Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.`,\n's1b9047d53d9f9d22': `2) Presionar Compartir en la barra de direcciones`,\n's2d90afa5dcca2c0e': `3) Desplázate hacia abajo hasta \"Añadir a pantalla de inicio\"`,\n's37a9e8aec5713460': `Más`,\n's4593f304dac8848c': `2) Toca \"Añadir a pantalla de inicio\"`,\n's54cfbb14f46396d4': `1) Abre en tu navegador principal`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Añadir al Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Presionar Añadir al Dock`,\n'sba52286c21552a4e': `Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.`,\n'sc79fd7641eb9a975': `Esconder instrucciones`,\n'scdaf4bbff76674c8': `Añadir a pantalla de inicio`,\n'se740f75b95a51807': `Añádelo a tu Dock para una experiencia amplia y acceso fácil.`,\n'sfea652f6580ff086': `Este sitio tiene funcionalidad de aplicación.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Open je browsermenu`,\n's182ab2d6c997515f': `Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.`,\n's1b9047d53d9f9d22': `2) Druk op delen in de navigatiebalk`,\n's2d90afa5dcca2c0e': `3) Scrol naar beneden naar \"Toevoegen aan startscherm\"`,\n's37a9e8aec5713460': `Meer`,\n's4593f304dac8848c': `2) Tik op \"Toevoegen aan startscherm\"`,\n's54cfbb14f46396d4': `1) Open in je hoofdprogramma`,\n's6196153c4b0c1ea0': `Installeren`,\n's922329d6f6213590': `Toevoegen aan Dock`,\n'sa5ef80b4bb9b39f8': `Minder`,\n'sa7551383d1897fcc': `2) Druk op Toevoegen aan Dock`,\n'sba52286c21552a4e': `Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.`,\n'sc79fd7641eb9a975': `Instructie verbergen`,\n'scdaf4bbff76674c8': `Toevoegen aan het startscherm`,\n'se740f75b95a51807': `Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.`,\n'sfea652f6580ff086': `Deze site heeft app-functionaliteit.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Ανοίξτε το μενού του περιηγητή σας`,\n's182ab2d6c997515f': `Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n's1b9047d53d9f9d22': `2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης`,\n's2d90afa5dcca2c0e': `3) Κάντε κύλιση προς τα κάτω στο \"Προσθήκη στην οθόνη Αφετηρίας\"`,\n's37a9e8aec5713460': `Περισσότερα`,\n's4593f304dac8848c': `2) Πατήστε \"Προσθήκη στην οθόνη Αφετηρίας\"`,\n's54cfbb14f46396d4': `1) Ανοίξτε στον κύριο περιηγητή σας`,\n's6196153c4b0c1ea0': `Εγκατάσταση`,\n's922329d6f6213590': `Προσθήκη στην Πρόσβαση`,\n'sa5ef80b4bb9b39f8': `Λιγότερα`,\n'sa7551383d1897fcc': `2) Πατήστε Προσθήκη στην Πρόσβαση`,\n'sba52286c21552a4e': `Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sc79fd7641eb9a975': `Απόκρυψη Οδηγιών`,\n'scdaf4bbff76674c8': `Προσθήκη στην Οθόνη Αφετηρίας`,\n'se740f75b95a51807': `Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sfea652f6580ff086': `Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Ouvrez le menu de votre navigateur`,\n's182ab2d6c997515f': `Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.`,\n's1b9047d53d9f9d22': `2) Appuyez sur Partager dans la barre de navigation`,\n's2d90afa5dcca2c0e': `3) Faites défiler vers le bas jusqu'à \"Ajouter à l'écran d'accueil\"`,\n's37a9e8aec5713460': `Plus`,\n's4593f304dac8848c': `2) Touchez \"Ajouter à l'écran d'accueil\"`,\n's54cfbb14f46396d4': `1) Ouvrir dans votre navigateur principal`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Ajouter au Dock`,\n'sa5ef80b4bb9b39f8': `Moins`,\n'sa7551383d1897fcc': `2) Appuyez sur Ajouter au Dock`,\n'sba52286c21552a4e': `Installez-le sur votre appareil pour une expérience complète et un accès facile.`,\n'sc79fd7641eb9a975': `Masquer les instructions`,\n'scdaf4bbff76674c8': `Ajouter à l'écran d'accueil`,\n'se740f75b95a51807': `Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.`,\n'sfea652f6580ff086': `Ce site possède des fonctionnalités d'application.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Отворите мени вашег прегледача`,\n's182ab2d6c997515f': `Додајте га на Home Screen за широке могућности и лак приступ.`,\n's1b9047d53d9f9d22': `2) Притисните Share у навигационој траци`,\n's2d90afa5dcca2c0e': `3) Померите се надоле до \"Add to Home Screen\"`,\n's37a9e8aec5713460': `Више`,\n's4593f304dac8848c': `2) Додирните \"Add to Home Screen\"`,\n's54cfbb14f46396d4': `1) Отворите у вашем главном прегледачу`,\n's6196153c4b0c1ea0': `Инсталирај`,\n'sa5ef80b4bb9b39f8': `Мање`,\n'sa7551383d1897fcc': `3) Притисните Add to Dock`,\n'sba52286c21552a4e': `Инсталирајте га на вашем уређају за широке могућности и лак приступ.`,\n'sc79fd7641eb9a975': `Сакриј упутство`,\n'se740f75b95a51807': `Додајте га у вашу Dock за широке могућности и лак приступ.`,\n'sfea652f6580ff086': `Овај сајт има функционалност апликације.`,\n's922329d6f6213590': `Add to Dock`,\n'scdaf4bbff76674c8': `Add to Home Screen`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Otwórz menu przeglądarki`,\n's182ab2d6c997515f': `Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n's1b9047d53d9f9d22': `2) Wybierz \"Udostępnij\"`,\n's2d90afa5dcca2c0e': `3) Przewiń w dół do opcji \"Dodaj do Ekranu Głównego\"`,\n's37a9e8aec5713460': `Więcej`,\n's4593f304dac8848c': `2) Naciśnij \"Dodaj do Ekranu Głównego\"`,\n's54cfbb14f46396d4': `1) Otwórz w swojej głównej przeglądarce`,\n's6196153c4b0c1ea0': `Zainstaluj`,\n's922329d6f6213590': `Dodaj do Docka`,\n'sa5ef80b4bb9b39f8': `Mniej`,\n'sa7551383d1897fcc': `2) Wybierz \"Dodaj do Docka\"`,\n'sba52286c21552a4e': `Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sc79fd7641eb9a975': `Ukryj instrukcję`,\n'scdaf4bbff76674c8': `Dodaj do Ekranu Głównego`,\n'se740f75b95a51807': `Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sfea652f6580ff086': `Ta strona posiada funkcje aplikacji.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Відкрити меню браузера`,\n's182ab2d6c997515f': `Додайте на Домашній екран для зручного доступу та ширших можливостей.`,\n's1b9047d53d9f9d22': `2) Натиснути «Поділитися»`,\n's2d90afa5dcca2c0e': `3) Прокрутіть вниз до «На Початковий экран»`,\n's37a9e8aec5713460': `Детальніше`,\n's4593f304dac8848c': `2) Натиснути «На Початковий экран»`,\n's54cfbb14f46396d4': `1) Відкрити у вашому основному браузері`,\n's6196153c4b0c1ea0': `Встановити`,\n's922329d6f6213590': `Додати на Dock`,\n'sa5ef80b4bb9b39f8': `Згорнути`,\n'sa7551383d1897fcc': `2) Натиснути «Додати на Dock»`,\n'sba52286c21552a4e': `Встановіть на ваш пристрій для зручного доступу та ширших можливостей.`,\n'sc79fd7641eb9a975': `Сховати Інструкцію`,\n'scdaf4bbff76674c8': `На Початковий экран`,\n'se740f75b95a51807': `Додайте на панель Dock для зручного доступу та ширших можливостей.`,\n'sfea652f6580ff086': `Цей сайт має функції додатку.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 打開您的瀏覽器菜單`,\n's182ab2d6c997515f': `將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。`,\n's1b9047d53d9f9d22': `2) 點擊列表上的分享按鈕`,\n's2d90afa5dcca2c0e': `3) 向下滾動到「添加到主屏幕」`,\n's37a9e8aec5713460': `詳細資訊`,\n's4593f304dac8848c': `2) 點擊「添加到主屏幕」`,\n's54cfbb14f46396d4': `1) 在您的主要瀏覽器中打開`,\n's6196153c4b0c1ea0': `安裝`,\n's922329d6f6213590': `添加到Dock欄`,\n'sa5ef80b4bb9b39f8': `簡短資訊`,\n'sa7551383d1897fcc': `2) 點選添加到Dock欄`,\n'sba52286c21552a4e': `在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。`,\n'sc79fd7641eb9a975': `隱藏安裝流程`,\n'scdaf4bbff76674c8': `將App加入主畫面`,\n'se740f75b95a51807': `將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。`,\n'sfea652f6580ff086': `此網站具有應用程式功能。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 打开浏览器菜单`,\n's182ab2d6c997515f': `将其添加到主屏幕,以享受更丰富的体验并便于访问。`,\n's1b9047d53d9f9d22': `2) 点击导航栏中的“分享”按钮`,\n's2d90afa5dcca2c0e': `3) 向下滚动至“添加到主屏幕”`,\n's37a9e8aec5713460': `更多`,\n's4593f304dac8848c': `2) 轻触“添加到主屏幕”`,\n's54cfbb14f46396d4': `1) 在您的主浏览器中打开`,\n's6196153c4b0c1ea0': `安装`,\n's922329d6f6213590': `添加到程序坞`,\n'sa5ef80b4bb9b39f8': `收起`,\n'sa7551383d1897fcc': `2) 点击“添加到程序坞”`,\n'sba52286c21552a4e': `在您的设备上安装,以享受更丰富的体验并便于访问。`,\n'sc79fd7641eb9a975': `隐藏安装步骤`,\n'scdaf4bbff76674c8': `添加到主屏幕`,\n'se740f75b95a51807': `将其添加到您的程序坞,以享受更全面的体验并便于访问。`,\n'sfea652f6580ff086': `此网站具备 App 功能特性。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Apri il menu del tuo browser`,\n's182ab2d6c997515f': `Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.`,\n's1b9047d53d9f9d22': `2) Premi Condividi nella barra di navigazione`,\n's2d90afa5dcca2c0e': `3) Scorri verso il basso fino a \"Aggiungi alla schermata principale\"`,\n's37a9e8aec5713460': `Più`,\n's4593f304dac8848c': `2) Tocca \"Aggiungi alla schermata principale\"`,\n's54cfbb14f46396d4': `1) Apri nel tuo browser principale`,\n's6196153c4b0c1ea0': `Installa`,\n's922329d6f6213590': `Aggiungi al Dock`,\n'sa5ef80b4bb9b39f8': `Meno`,\n'sa7551383d1897fcc': `2) Premi Aggiungi al Dock`,\n'sba52286c21552a4e': `Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.`,\n'sc79fd7641eb9a975': `Nascondi istruzioni`,\n'scdaf4bbff76674c8': `Aggiungi alla schermata principale`,\n'se740f75b95a51807': `Aggiungilo al Dock per un'esperienza più completa e un accesso facile.`,\n'sfea652f6580ff086': `Questo sito ha funzionalità di app.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Otevřete nabídku prohlížeče`,\n's182ab2d6c997515f': `Přidejte jej na plochu pro rozšířené využití a snadný přístup.`,\n's1b9047d53d9f9d22': `2) Stiskněte tlačítko Sdílet na navigačním panelu`,\n's2d90afa5dcca2c0e': `3) Projděte dolů k \"Přidat na plochu\"`,\n's37a9e8aec5713460': `Více`,\n's4593f304dac8848c': `2) Klepněte na \"Přidat na plochu\"`,\n's54cfbb14f46396d4': `1) Otevřete v hlavním prohlížeči`,\n's6196153c4b0c1ea0': `Nainstalovat`,\n's922329d6f6213590': `Přidat do Docku`,\n'sa5ef80b4bb9b39f8': `Méně`,\n'sa7551383d1897fcc': `2) Stiskněte Přidat do Docku`,\n'sba52286c21552a4e': `Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.`,\n'sc79fd7641eb9a975': `Skrýt instrukce`,\n'scdaf4bbff76674c8': `Přidat na plochu`,\n'se740f75b95a51807': `Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.`,\n'sfea652f6580ff086': `Tento web má funkce aplikace.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Åpne menyen i nettleseren din`,\n's182ab2d6c997515f': `Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.`,\n's1b9047d53d9f9d22': `2) Trykk på Del-knappen i navigasjonslinjen`,\n's2d90afa5dcca2c0e': `3) Rull ned til «Legg til på Hjem-skjerm»`,\n's37a9e8aec5713460': `Mer`,\n's4593f304dac8848c': `2) Trykk på \"Legg til på Hjem-skjerm\"`,\n's54cfbb14f46396d4': `1) Åpne i hovednettleseren din`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Legg til i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Velg Legg til i Dock`,\n'sba52286c21552a4e': `Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sc79fd7641eb9a975': `Skjul instruksjoner`,\n'scdaf4bbff76674c8': `Legg til på Hjem-skjerm`,\n'se740f75b95a51807': `Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sfea652f6580ff086': `Denne siden har app-funksjonalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Abra o menu do seu navegador`,\n's182ab2d6c997515f': `Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.`,\n's1b9047d53d9f9d22': `2) Pressione Compartilhar na barra de endereço`,\n's2d90afa5dcca2c0e': `3) Role para baixo até \"Adicionar à Tela de Início\"`,\n's37a9e8aec5713460': `Mais`,\n's4593f304dac8848c': `2) Toque em \"Adicionar à Tela de Início\"`,\n's54cfbb14f46396d4': `1) Abra no seu navegador principal`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Adicionar ao Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Pressione Adicionar ao Dock`,\n'sba52286c21552a4e': `Instale no dispositivo para uma melhor experiência e mais fácil acesso.`,\n'sc79fd7641eb9a975': `Ocultar Instruções`,\n'scdaf4bbff76674c8': `Adicionar à Tela de Início`,\n'se740f75b95a51807': `Adicione ao Dock para uma melhor experiência e mais fácil acesso.`,\n'sfea652f6580ff086': `Este site possui funcionalidade de aplicativo.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) ブラウザメニューを開く`,\n's182ab2d6c997515f': `ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。`,\n's1b9047d53d9f9d22': `2) ナビゲーションバーで共有を押す`,\n's2d90afa5dcca2c0e': `3) 「ホーム画面に追加」までスクロールする`,\n's37a9e8aec5713460': `展開`,\n's4593f304dac8848c': `2) 「ホーム画面に追加」をタップする`,\n's54cfbb14f46396d4': `1) メインブラウザで開く`,\n's6196153c4b0c1ea0': `インストール`,\n's922329d6f6213590': `Dockに追加`,\n'sa5ef80b4bb9b39f8': `折りたたむ`,\n'sa7551383d1897fcc': `2) 「Dockに追加」を押す`,\n'sba52286c21552a4e': `デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。`,\n'sc79fd7641eb9a975': `説明を非表示`,\n'scdaf4bbff76674c8': `ホーム画面に追加`,\n'se740f75b95a51807': `ドックに追加して、幅広い体験と簡単なアクセスを実現してください。`,\n'sfea652f6580ff086': `このサイトはアプリ機能があります。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Öppna din webbläsares meny`,\n's182ab2d6c997515f': `Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.`,\n's1b9047d53d9f9d22': `2) Tryck på Dela-knappen i verktygsfältet`,\n's2d90afa5dcca2c0e': `3) Scrolla ner till \"Lägg till på hemskärmen\"`,\n's37a9e8aec5713460': `Mer`,\n's4593f304dac8848c': `2) Tryck på \"Lägg till på hemskärmen\"`,\n's54cfbb14f46396d4': `1) Öppna i din huvudsakliga webbläsare`,\n's6196153c4b0c1ea0': `Installera`,\n's922329d6f6213590': `Lägg till i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Välj Lägg till i Dock`,\n'sba52286c21552a4e': `Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sc79fd7641eb9a975': `Göm instruktioner`,\n'scdaf4bbff76674c8': `Lägg till på hemskärmen`,\n'se740f75b95a51807': `Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sfea652f6580ff086': `Denna webbsajt har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 브라우저 메뉴 열기`,\n's182ab2d6c997515f': `더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.`,\n's1b9047d53d9f9d22': `2) 내비게이션 바에서 공유 버튼 누르기`,\n's2d90afa5dcca2c0e': `3) \"홈 화면에 추가\"로 스크롤하기`,\n's37a9e8aec5713460': `더보기`,\n's4593f304dac8848c': `2) \"홈 화면에 추가\" 탭하기`,\n's54cfbb14f46396d4': `1) 주 브라우저에서 열기`,\n's6196153c4b0c1ea0': `설치`,\n's922329d6f6213590': `Dock에 추가`,\n'sa5ef80b4bb9b39f8': `닫기`,\n'sa7551383d1897fcc': `2) Dock에 추가 버튼 누르기`,\n'sba52286c21552a4e': `더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.`,\n'sc79fd7641eb9a975': `안내 숨기기`,\n'scdaf4bbff76674c8': `홈 화면에 추가`,\n'se740f75b95a51807': `더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.`,\n'sfea652f6580ff086': `이 사이트는 앱 기능을 가지고 있습니다.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) បើកម៉ឺនុយកម្មវិធីរុករករបស់អ្នក`,\n's182ab2d6c997515f': `បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n's1b9047d53d9f9d22': `2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ`,\n's2d90afa5dcca2c0e': `3) អូសចុះទៅកាន់ \"បន្ថែមទៅផ្ទាំងអេក្រង់ដើម\"`,\n's37a9e8aec5713460': `បង្ហាញបន្ថែម`,\n's4593f304dac8848c': `2) ចុចលើ \"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម\"`,\n's54cfbb14f46396d4': `1) បើកនៅក្នុងកម្មវិធីរុករកសំខាន់របស់អ្នក`,\n's6196153c4b0c1ea0': `តំឡើង`,\n's922329d6f6213590': `បន្ថែមទៅកាន់ Dock`,\n'sa5ef80b4bb9b39f8': `បង្ហាញតិច`,\n'sa7551383d1897fcc': `2) ចុចលើ បន្ថែមទៅកាន់ Dock`,\n'sba52286c21552a4e': `តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sc79fd7641eb9a975': `បិទការណែនាំ`,\n'scdaf4bbff76674c8': `បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n'se740f75b95a51807': `បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sfea652f6580ff086': `គេហទំព័រនេះមានមុខងារជាកម្មវិធី។`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `۱) مرورگر خود را باز کنید`,\n's182ab2d6c997515f': `برای تجربه گسترده و دسترسی آسان آن را به صفحه اصلی خود اضافه کنید.`,\n's1b9047d53d9f9d22': `۱)در نوار پایین دکمه (Share) را بزنید`,\n's2d90afa5dcca2c0e': `۳) به پایین اسکرول کنید تا به \"Add to Home Screen\" برسید`,\n's37a9e8aec5713460': `بیشتر`,\n's4593f304dac8848c': `۲) روی \"Add to Home screen\" ضربه بزنید`,\n's54cfbb14f46396d4': `۱) در مرورگر اصلی خود باز کنید`,\n's6196153c4b0c1ea0': `نصب`,\n's922329d6f6213590': `افزودن به (Dock)`,\n'sa5ef80b4bb9b39f8': `کمتر`,\n'sa7551383d1897fcc': `۲) (Add to Dock) را انتخاب کنید `,\n'sba52286c21552a4e': `برای تجربه گسترده و دسترسی آسان آن را بر روی دستگاه خود نصب کنید.`,\n'sc79fd7641eb9a975': ` مخفی کردن مراحل`,\n'scdaf4bbff76674c8': `افزودن به (Home Screen)`,\n'se740f75b95a51807': `برای تجربه گسترده و دسترسی آسان آن را به Dock خود اضافه کنید.`,\n'sfea652f6580ff086': ` این سایت دارای قابلیت اپلیکیشن است. `,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Åbn din browsermenu`,\n's182ab2d6c997515f': `Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.`,\n's1b9047d53d9f9d22': `2) Tryk på Del-knappen i navigationslinjen`,\n's2d90afa5dcca2c0e': `3) Rul ned til \"Tilføj til hjemmeskærm\"`,\n's37a9e8aec5713460': `Mere`,\n's4593f304dac8848c': `2) Tryk på \"Tilføj til hjemmeskærm\"`,\n's54cfbb14f46396d4': `1) Åbn i din primære browser`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Tilføj til Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Vælg Tilføj til Dock`,\n'sba52286c21552a4e': `Installer den på din enhed for en bedre oplevelse og nem adgang.`,\n'sc79fd7641eb9a975': `Skjul instruktion`,\n'scdaf4bbff76674c8': `Tilføj til hjemmeskærm`,\n'se740f75b95a51807': `Tilføj den til din Dock for en bedre oplevelse og nem adgang.`,\n'sfea652f6580ff086': `Denne side har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Mở menu trình duyệt của bạn`,\n's182ab2d6c997515f': `Thêm nó vào màn hình chính của bạn để có trải nghiệm phong phú hơn và truy cập dễ dàng hơn.`,\n's1b9047d53d9f9d22': `2) Nhấp vào nút \"Chia sẻ\" trên thanh điều hướng`,\n's2d90afa5dcca2c0e': `3) Kéo đến mục \"Thêm vào Màn hình chính\"`,\n's37a9e8aec5713460': `Thêm`,\n's4593f304dac8848c': `2) Nhấn vào \"Thêm vào Màn hình chính\"`,\n's54cfbb14f46396d4': `1) Mở trình duyệt chính của bạn`,\n's6196153c4b0c1ea0': `Cài đặt`,\n's922329d6f6213590': `Thêm vào Dock`,\n'sa5ef80b4bb9b39f8': `Thu gọn`,\n'sa7551383d1897fcc': `2) Nhấp vào \"Thêm vào Dock\"`,\n'sba52286c21552a4e': `Cài đặt trên thiết bị của bạn để có trải nghiệm phong phú hơn và truy cập dễ dàng.`,\n'sc79fd7641eb9a975': `Ẩn các bước cài đặt`,\n'scdaf4bbff76674c8': `Thêm vào màn hình chính`,\n'se740f75b95a51807': `Thêm nó vào Dock của bạn để có trải nghiệm toàn diện hơn và truy cập dễ dàng hơn.`,\n'sfea652f6580ff086': `Trang web này có cả chức năng đặc trưng ứng dụng.`,\n };\n ","import { configureLocalization } from '@lit/localize';\r\nimport {\r\n sourceLocale,\r\n targetLocales,\r\n} from './locale-codes';\r\n\r\nimport * as ru from './locales/ru';\r\nimport * as tr from './locales/tr';\r\nimport * as de from \"./locales/de\";\r\nimport * as es from \"./locales/es\";\r\nimport * as nl from \"./locales/nl\";\r\nimport * as el from \"./locales/el\";\r\nimport * as fr from \"./locales/fr\";\r\nimport * as sr from \"./locales/sr\";\r\nimport * as pl from \"./locales/pl\";\r\nimport * as uk from \"./locales/uk\";\r\nimport * as zhHK from \"./locales/zh-HK\";\r\nimport * as zhCN from \"./locales/zh-CN\";\r\nimport * as it from \"./locales/it\";\r\nimport * as cs from \"./locales/cs\";\r\nimport * as no from \"./locales/no\";\r\nimport * as pt from \"./locales/pt\";\r\nimport * as ja from \"./locales/ja\";\r\nimport * as sv from \"./locales/sv\";\r\nimport * as ko from \"./locales/ko\";\r\nimport * as km from \"./locales/km\";\r\nimport * as fa from \"./locales/fa\";\r\nimport * as da from \"./locales/da\";\r\nimport * as vi from \"./locales/vi\";\r\n\r\nconst localizedTemplates = new Map([\r\n ['ru', ru],\r\n ['tr', tr],\r\n ['de', de],\r\n ['es', es],\r\n ['nl', nl],\r\n ['el', el],\r\n ['fr', fr],\r\n ['sr', sr],\r\n ['pl', pl],\r\n ['uk', uk],\r\n ['zh-HK', zhHK],\r\n ['zh-CN', zhCN],\r\n ['it', it],\r\n ['cs', cs],\r\n ['no', no], // + nb\r\n ['pt', pt],\r\n ['ja', ja],\r\n ['sv', sv],\r\n ['ko', ko],\r\n ['km', km],\r\n ['fa', fa],\r\n ['da', da],\r\n ['vi', vi],\r\n])\r\n\r\nexport const { getLocale, setLocale } = configureLocalization({\r\n sourceLocale,\r\n targetLocales,\r\n // @ts-ignore\r\n loadLocale: async (lang: string) => localizedTemplates.get(lang)\r\n});\r\n\r\nexport const changeLocale = async (lang: string) => {\r\n // Norwegian Bokmål is same as Norwegian\r\n switch (lang.slice(0, 2)) {\r\n case 'nb':\r\n lang = 'no';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // Fallback to simplified Chinese\r\n switch (lang) {\r\n case 'zh':\r\n case 'zh-TW':\r\n lang = 'zh-CN';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n try {\r\n if (localizedTemplates.get(lang))\r\n await setLocale(lang);\r\n else\r\n await setLocale(lang.slice(0, 2));\r\n }\r\n catch {\r\n console.warn(`pwa-install: translation error - unsupported locale: ${lang}`);\r\n }\r\n};\r\n\r\nexport const isRTL = () => {\r\n let locale = getLocale();\r\n return ['ar', 'he', 'fa', 'ur'].includes(getLocale());\r\n}\r\n","import { ImageResource } from 'web-app-manifest';\r\n\r\nexport interface IRelatedApp {\r\n id: string,\r\n platform: string,\r\n url: string\r\n}\r\n\r\nexport interface IWindow extends Window {\r\n defferedPromptEvent: BeforeInstallPromptEvent | null;\r\n BeforeInstallPromptEvent: BeforeInstallPromptEvent;\r\n}\r\n\r\ntype Booleanish = 'true' | 'false';\r\n\r\nexport interface PWAInstallAttributes {\r\n ['manual-apple']?: Booleanish;\r\n ['manual-chrome']?: Booleanish;\r\n ['disable-chrome']?: Booleanish;\r\n ['install-description']?: string;\r\n ['disable-install-description']?: Booleanish;\r\n ['manifest-url']?: string;\r\n name?: string;\r\n description?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ManifestScreenshot extends ImageResource {\r\n label?: string;\r\n platform?: string;\r\n form_factor?: \"wide\" | \"narrow\";\r\n}\r\n\r\nexport class Manifest {\r\n constructor() {\r\n this.icons = [{ src: '' }];\r\n this.screenshots = undefined;\r\n this.short_name = 'PWA';\r\n this.name = 'Progressive web application';\r\n this.description = 'Progressive web application';\r\n }\r\n short_name: string;\r\n icons: ImageResource[];\r\n screenshots?: ManifestScreenshot[];\r\n name: string;\r\n description: string;\r\n}\r\n","import {css} from 'lit'; export default css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-inline-start:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-inline-end:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px;margin:0 auto}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-inline-start:7px}.gallery.apple_mobile .btn.prev svg{margin-inline-start:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`;\n ","import { WebAppManifest } from 'web-app-manifest';\r\nimport { IRelatedApp, Manifest } from './types/types';\r\n\r\nconst _eventDispatcher = (_element: Element, name: string, message: string) => {\r\n const event = new CustomEvent(name, {\r\n detail: {\r\n message\r\n }\r\n });\r\n _element.dispatchEvent(event);\r\n}\r\nexport default class Utils {\r\n static isAppleMobile(): boolean {\r\n\t\tif (\r\n (\r\n ['iPhone', 'iPad', 'iPod'].includes(navigator.platform) ||\r\n (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2)\r\n )\r\n && ('serviceWorker' in navigator)\r\n )\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static isAppleDesktop(): boolean {\r\n // check if it's a mac\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n if (navigator.maxTouchPoints || !userAgent.match(/macintosh/))\r\n return false;\r\n // check safari version >= 17\r\n const version = /version\\/(\\d{2})\\./.exec(userAgent)\r\n if (!version || !version[1] || !(parseInt(version[1]) >= 17))\r\n return false;\r\n // hacky way to detect Sonoma\r\n const audioCheck = document.createElement('audio').canPlayType('audio/wav; codecs=\"1\"') ? true : false;\r\n const webGLCheck = new OffscreenCanvas(1, 1).getContext('webgl') ? true : false;\r\n\r\n return audioCheck && webGLCheck;\r\n }\r\n\r\n static isAndroid(): boolean {\r\n if (navigator.userAgent.toLowerCase().match(/android/))\r\n return true;\r\n return false;\r\n }\r\n\r\n static isAndroidFallback(): boolean {\r\n if (this.isAndroid() && !('BeforeInstallPromptEvent' in window))\r\n return true;\r\n return false;\r\n }\r\n\r\n static deviceFormFactor(): 'narrow' | 'wide' {\r\n return window.matchMedia('(orientation: portrait)').matches? 'narrow' : 'wide';\r\n }\r\n \r\n static isStandalone() {\r\n\t\tif (window.matchMedia('(display-mode: standalone)').matches || ('standalone' in navigator && (navigator as any).standalone === true))\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static async getInstalledRelatedApps(): Promise {\r\n if ('getInstalledRelatedApps' in navigator)\r\n try{\r\n return await (navigator as any).getInstalledRelatedApps().then((relatedApps: IRelatedApp[]) => {\r\n return relatedApps;\r\n });\r\n } catch (e) {}\r\n \r\n return [];\r\n }\r\n \r\n static async isRelatedAppsInstalled(): Promise {\r\n const _relatedApps = await this.getInstalledRelatedApps();\r\n return _relatedApps.length? true : false;\r\n }\r\n\r\n static setStorageFlag(name: string, value:boolean, persistent: boolean = false) {\r\n try {\r\n if (persistent)\r\n localStorage.setItem(name, value.toString());\r\n else\r\n sessionStorage.setItem(name, value.toString());\r\n } catch (e) {}\r\n }\r\n static getStorageFlag(name: string): boolean {\r\n try {\r\n return sessionStorage.getItem(name) === 'true' || localStorage.getItem(name) === 'true';\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n static eventInstalledSuccess(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-success-event', 'App install success (Chromium/Android only)');\r\n }\r\n static eventInstalledFail(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-fail-event', 'App install failed (Chromium/Android only)');\r\n }\r\n static eventUserChoiceResult(_element: Element, message: string) {\r\n _eventDispatcher(_element, 'pwa-user-choice-result-event', message);\r\n }\r\n static eventInstallAvailable(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-available-event', 'App install available');\r\n }\r\n static eventInstallHowTo(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-how-to-event', 'App install instruction showed');\r\n }\r\n static eventGallery(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-gallery-event', 'App install gallery showed');\r\n }\r\n\r\n static normalizeManifestAssetUrls(manifest: WebAppManifest, manifestUrl: string) {\r\n const normalizedManifestUrl = new URL(manifestUrl, document.location.href);\r\n [...manifest.icons || [], ...manifest.screenshots || []].forEach(asset => {\r\n asset.src = new URL(asset.src, normalizedManifestUrl).href;\r\n })\r\n }\r\n\r\n static async fetchAndProcessManifest(manifestUrl: string, icon: string, name: string, description: string): Promise<{_manifest: WebAppManifest, icon: string, name: string, description: string}> {\r\n let _manifest: WebAppManifest = new Manifest();\r\n let _json: WebAppManifest | null = null;\r\n try{\r\n\t\t\tconst _response = await fetch(manifestUrl);\r\n\t\t\t_json = await _response.json() as WebAppManifest;\r\n\t\t\tif (!_response.ok || !_json || !Object.keys(_json))\r\n\t\t\t\tthrow new Error('Manifest not found');\r\n\t\t\tthis.normalizeManifestAssetUrls(_json, manifestUrl);\r\n } \r\n catch(e) {} \r\n\r\n icon = icon || (_json?.icons?.length ? _json?.icons![0].src : _manifest.icons?.[0].src) || '';\r\n name = name || (_json? _json['short_name']: _manifest['short_name']) || '';\r\n description = description || _json?.description || _manifest.description || '';\r\n\t\t_manifest = _json || _manifest;\r\n \r\n return {\r\n _manifest,\r\n icon,\r\n name,\r\n description\r\n }\r\n }\r\n}","import { html } from 'lit';\r\nimport Utils from '../utils';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nconst template = (screenshots: ManifestScreenshot[], theme: string, scrollToNextPage: any, scrollToPrevPage: any) => {\r\n\r\n return html`\r\n ${screenshots? html`\r\n
\r\n
\r\n
\r\n ${screenshots.filter(screenshot => !screenshot.form_factor || screenshot.form_factor === Utils.deviceFormFactor()).map(screenshot => html`${screenshot.label || \"\"}`)}\r\n
\r\n
\r\n \r\n ${theme != 'default'?\r\n html``\r\n :\r\n html``\r\n }\r\n \r\n \r\n ${theme != 'default'?\r\n html`\r\n \r\n `\r\n :\r\n html`\r\n \r\n \r\n \r\n `\r\n }\r\n \r\n
`\r\n : ''}`;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nimport styles from './styles-gallery.scss';\r\nimport template from './template-gallery';\r\n\r\n@customElement('pwa-gallery')\r\nexport default class PWAGalleryElement extends LitElement {\r\n\t@property({ type: Array }) screenshots: ManifestScreenshot[] = [];\r\n\t@property() theme: 'default' | 'apple_desktop' | 'apple_mobile' = 'default';\r\n\t@property({ type: Boolean }) rtl: boolean = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tprivate getScrollElements = () => {\r\n\t\tconst gallery = this.shadowRoot?.querySelector('#paginated_gallery') as HTMLElement | null;\r\n\t\tif (!gallery) return;\r\n\t\t\r\n\t\tconst galleryScroller = gallery.querySelector('.gallery_scroller') as HTMLElement | null;\r\n\t\tif (!galleryScroller) return;\r\n\t\r\n\t\tconst galleryItems = Array.from(galleryScroller.querySelectorAll('img')) as HTMLElement[];\r\n\t\tif (galleryItems.length === 0) return;\r\n\t\r\n\t\treturn {\r\n\t\t\tscroller: galleryScroller,\r\n\t\t\titems: galleryItems\r\n\t\t};\r\n\t};\r\n\t\r\n\tprivate findCurrentItem = (scroller: HTMLElement, items: HTMLElement[]): HTMLElement | null => {\r\n\t\tconst scrollLeft = scroller.scrollLeft * (this.rtl? -1 : 1);\r\n\t \t// Find the item closest to the center of the viewport.\r\n\t\treturn items.find((item) => (item.offsetWidth + item.offsetLeft * (this.rtl? -1 : 1)) >= scrollLeft + (item.offsetWidth / 2.5)) || null;\r\n\t};\r\n\t\r\n\tprivate scrollToPage = (direction: 'next' | 'prev') => {\r\n\t\tconst scrollData = this.getScrollElements();\r\n\t\tif (!scrollData) return;\r\n\t\r\n\t\tconst { scroller, items } = scrollData;\r\n\t\tconst currentItem = this.findCurrentItem(scroller, items);\r\n\t\tif (!currentItem) return;\r\n\t\r\n\t\tconst currentIndex = items.indexOf(currentItem);\r\n\t\tconst offset = (direction === 'next' ? 1 : -1) * (this.rtl? -1 : 1) ;\r\n\t\tconst targetIndex = currentIndex + offset;\r\n\t\t\r\n\t\tif (targetIndex >= 0 && targetIndex < items.length) {\r\n\t\t\titems[targetIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\r\n\t\t}\r\n\t};\r\n\t\r\n\tpublic scrollToNextPage = () => {\r\n\t\tthis.scrollToPage('next');\r\n\t};\r\n\t\r\n\tpublic scrollToPrevPage = () => {\r\n\t\tthis.scrollToPage('prev');\r\n\t};\r\n\r\n\r\n\tprivate _init = () => {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tconst _tools = this.getScrollElements();\r\n\t\tif (_tools)\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\t_tools.scroller.scrollTo({\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t300\r\n\t\t\t)\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\tthis._init();\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(\r\n this.screenshots,\r\n\t\t\tthis.theme,\r\n\t\t\tthis.scrollToNextPage,\r\n\t\t\tthis.scrollToPrevPage\r\n )}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`.dialog-body .icon{display:flex;align-items:flex-start}.dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}.dialog-body .about{display:grid;grid-template-rows:30px auto}.dialog-body .about .hostname,.dialog-body .about .name{padding:0 5px;overflow:hidden}.dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}.dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}.dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:start;word-break:break-all;white-space:nowrap}.dialog-body .about+hr{margin-top:10px}.dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:start}.dialog-body .app-description{font-size:13px;margin-bottom:10px}.dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}.dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}.dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}.dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.dialog-body .install-description{font-size:14px}.dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}.dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}.dialog-body .action-buttons .primary{grid-column-start:2}.dialog-body .material-button{--text-color-primary:#eee;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#eee;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,\"Segoe UI\",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}.dialog-body .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}.dialog-body .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}.dialog-body .material-button.secondary::after,.dialog-body .material-button.secondary::before{background-color:var(--background-color-primary)}.dialog-body .material-button.secondary:active,.dialog-body .material-button.secondary:hover{box-shadow:none}.dialog-body .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-inline-end:0;margin-inline-start:auto;padding:0;border-radius:50%}.dialog-body .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}.dialog-body .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}.dialog-body .material-button.secondary.close::before{border-radius:50%}.dialog-body .material-button::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}.dialog-body .material-button::after{content:\"\";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}.dialog-body .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.dialog-body .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}.dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}@media(prefers-color-scheme:dark){.dialog-body .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(hover:none)and (pointer:coarse){.dialog-body .description::-webkit-scrollbar{display:none}}`;\n ","import {css} from 'lit'; export default css`:host{grid-template-columns:1fr}:host .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}:host .touch-header:active{cursor:grabbing}:host .touch-header::before{content:\"\";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}:host .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}:host .body-header .install{text-transform:capitalize;height:40px;min-width:50px;padding:0 23px;align-items:center;display:inline-flex;-webkit-tap-highlight-color:transparent;transition:min-width .2s,color .2s,background-color .2s,border-color .2s}:host .body-header .install .button-text,:host .body-header .install svg{margin:0 auto}:host .body-header .install .check-icon{display:none}:host .body-header .about{grid-template-rows:auto auto;grid-gap:6px}:host .body-header .about .name{padding:0;line-height:20px;font-size:16px}:host .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}:host .body-header .icon .icon-image{margin:0;width:45px;height:45px}:host .how-to-body{display:flex;flex-direction:column;gap:15px;max-height:0;overflow:hidden;padding:0 20px;opacity:0}:host .how-to-body .description-step{display:flex;gap:15px;margin-inline-start:2.5px;align-items:center}:host .how-to-body .description-step .svg-wrap{display:flex;align-items:center;width:40px;height:40px;background-color:var(--touch-header-color);border-radius:50%}:host .how-to-body .description-step .svg-wrap svg{fill:var(--text-color-normal);margin:0 auto}:host .how-to-body .description-step .svg-wrap.add-icon svg{padding-right:1px}:host .how-to .description,:host .how-to ::slotted(pwa-gallery){max-height:0;padding-top:0;padding-bottom:0;overflow:hidden;opacity:0}:host .how-to .how-to-body{max-height:600px;padding-top:18px;padding-bottom:18px;opacity:1}:host .how-to .install{min-width:40px;padding:0;background:rgba(0,0,0,0);color:var(--text-color-normal);box-shadow:none;border:1px solid}:host .how-to .install .check-icon{display:inline;fill:var(--text-color-normal)}:host .how-to .install .button-text{display:none}:host .description{padding:15px 20px;margin:0;-webkit-line-clamp:6;max-height:150px;opacity:1}:host ::slotted(pwa-gallery){display:block;max-height:600px;padding-bottom:15px;opacity:1;transition:max-height 1.5s,opacity .8s,padding 1.5s}:host .description,:host .how-to-body{transition:max-height .2s,opacity .15s,padding .2s}:host .material-button{border-radius:20px}`;\n ","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{noChange as t}from\"../lit-html.js\";import{directive as s,Directive as i,PartType as r}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=s(class extends i{constructor(t){if(super(t),t.type!==r.ATTRIBUTE||\"class\"!==t.name||t.strings?.length>2)throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\")}render(t){return\" \"+Object.keys(t).filter((s=>t[s])).join(\" \")+\" \"}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(\" \").split(/\\s/).filter((t=>\"\"!==t))));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)))}return t}});export{e as classMap};\n//# sourceMappingURL=class-map.js.map\n","import { html } from 'lit';\r\nimport { msg } from '@lit/localize';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\n\r\nconst fallbackClass = (isAndroidFallback: boolean = false, howToRequested: boolean = false) => {\r\n return {fallback: isAndroidFallback, 'how-to': howToRequested};\r\n}\r\n\r\nconst template = (name: string, description: string, icon: string, install: any, fallback?: boolean, howToRequested?: boolean) => {\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${location.hostname}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${msg('1) Open your browser menu')}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${msg('2) Tap \"Add to Home screen\"')}
\r\n
\r\n
\r\n ${description ? html `
${description}
`: ''}\r\n \r\n
\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\n\r\nimport stylesCommon from '../styles-common.scss'\r\nimport styles from './styles-bottom-sheet.scss';\r\n\r\n// import TouchDragListener from \"./touch-listener\";\r\n\r\ntype IProps = {\r\n name: string,\r\n description: string,\r\n icon: string\r\n}\r\n\r\nimport template from './template-bottom-sheet';\r\nimport Utils from '../../../utils';\r\n\r\n@customElement('pwa-bottom-sheet')\r\nexport default class PWABottomSheetElement extends LitElement {\r\n\tstatic get styles() {\r\n\t\treturn [stylesCommon, styles];\r\n\t}\r\n\r\n\t@property({type: Object}) props: IProps = {\r\n name: '',\r\n description: '',\r\n icon: ''\r\n };\r\n @property({type: Object}) install = {handleEvent: () => {}};\r\n\t@property() hideDialog = () => {};\r\n\t@property({type: Boolean}) disableClose = false;\r\n\r\n\t@property({type: Boolean}) fallback = false;\r\n\t@property({type: Boolean}) howToRequested = false;\r\n\t@property({type: Object}) toggleHowTo = {handleEvent: () => {}};\r\n\r\n\tprivate _callInstall = () => {\r\n\t\tif (this.fallback) {\r\n\t\t\tthis.toggleHowTo.handleEvent();\r\n\t\t\tsetTimeout(() => this.setupAppearence(true), 210);\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.install.handleEvent();\r\n\t}\r\n\r\n\tprivate _callHide = () => {\r\n\t\tthis.hideDialog();\r\n\t\tthis.setupAppearence();\r\n\t}\r\n\r\n\tprivate bindedElement: {\r\n\t\ttouchElement: HTMLElement,\r\n\t\tlistener: any }| null = null;\r\n\tprivate readonly _saveBodyStyle = document.body.style.overscrollBehaviorY;\r\n\tprivate dragMobileSheet = (element: HTMLElement | null | undefined, touchTargetElement: HTMLElement | undefined, infoElement: HTMLElement | undefined) => {\r\n\t\tif (!element || !touchTargetElement || !infoElement)\r\n\t\t\treturn null;\r\n\r\n\t\tlet dragOffset = 0;\r\n\t\tconst bounceOffset = 35;\r\n\t\t\r\n\t\tconst bottomSize = infoElement.offsetHeight + infoElement.offsetTop;\r\n\r\n\t\tconst getYCoord = (e: MouseEvent | TouchEvent): number => {\r\n\t\t\treturn (e as MouseEvent).clientY || ((e as TouchEvent).changedTouches && (e as TouchEvent).changedTouches.length? (e as TouchEvent).changedTouches[0].clientY : 0);\r\n\t\t}\r\n\r\n\t\tconst dragMouseDown = (e: MouseEvent | TouchEvent) => {\r\n\t\t\twindow.addEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.addEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.addEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.addEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tdragOffset = getYCoord(e) - touchTargetElement.getBoundingClientRect().top;\r\n\r\n\t\t\tdocument.body.style.overscrollBehaviorY = 'none';\r\n\t\t}\r\n\t\tconst dragMouseUp = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tdocument.body.style.overscrollBehaviorY = this._saveBodyStyle;\r\n\r\n\t\t\tif (!this.disableClose && getYCoord(e) >= window.innerHeight - 25) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight + 50, true);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (window.innerHeight - getYCoord(e) > element.clientHeight / 2.5) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - element.clientHeight);\r\n\t\t\t\t\r\n\t\t\t\ttry {\r\n\t\t\t\t\t!this.howToRequested && Utils.eventGallery((this.getRootNode() as ShadowRoot).host);\r\n\t\t\t\t} catch (e) {}\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - bottomSize - bounceOffset);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dragMouseMove = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tconst currentY = getYCoord(e);\r\n\r\n\t\t\tif (this.disableClose && window.innerHeight - currentY < 70) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (currentY <= (window.innerHeight - element.clientHeight + dragOffset)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`none`\r\n\t\t\t)\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"--translateY\",\r\n\t\t\t\t`translateY(${currentY - dragOffset}px)`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst closeDragElement = (e: MouseEvent | TouchEvent, toPoint?: number, hideDialog?: boolean) => {\r\n\t\t\twindow.removeEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.removeEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.removeEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.removeEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tif (window.innerWidth >= 768)\r\n\t\t\t\treturn\r\n\r\n\t\t\tif (!toPoint && getYCoord(e) >= window.innerHeight - bottomSize)\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(calc(100vh - ${bottomSize}px))`\r\n\t\t\t\t);\r\n\t\t\telse\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(${(toPoint || getYCoord(e)) + bounceOffset}px)`\r\n\t\t\t\t);\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s`\r\n\t\t\t);\r\n\r\n\t\t\tif (hideDialog){\r\n\t\t\t\ttouchTargetElement.removeEventListener('mousedown', dragMouseDown);\r\n\t\t\t\ttouchTargetElement.removeEventListener('touchstart', dragMouseDown);\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\tthis._callHide,\r\n\t\t\t\t\t250\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ttouchTargetElement.addEventListener('mousedown', dragMouseDown);\r\n\t\ttouchTargetElement.addEventListener('touchstart', dragMouseDown, {passive: false});\r\n\r\n\t\tcloseDragElement(new MouseEvent('mouseup'), window.innerHeight - bottomSize - bounceOffset);\r\n\r\n\t\treturn {\r\n\t\t\ttouchElement: touchTargetElement,\r\n\t\t\tlistener: dragMouseDown\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupAppearence = (fullOpen?: boolean) => {\r\n\t\tif (this.bindedElement) {\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('mousedown', this.bindedElement.listener);\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('touchstart', this.bindedElement.listener);\r\n\t\t}\r\n\t\t\r\n\t\tthis.bindedElement = this.dragMobileSheet(\r\n\t\t\tthis.parentElement,\r\n\t\t\tthis.shadowRoot?.querySelector('.dialog-body .touch-header') as HTMLElement,\r\n\t\t\tthis.shadowRoot?.querySelector(`.dialog-body ${fullOpen? '.how-to-body': '.body-header'}`) as HTMLElement);\r\n\t}\r\n\tprivate _init = () => {\r\n\t\tthis.setupAppearence();\r\n\r\n\t\twindow.addEventListener('resize', () => this.setupAppearence());\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tthis._init();\r\n return;\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(this.props.name, this.props.description, this.props.icon, this._callInstall, this.fallback, this.howToRequested)}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,\"Segoe UI\",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#eee;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}`;\n ","import {css} from 'lit'; export default css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,\"Segoe UI\";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon description\" \"welcome welcome\" \"how-to how-to\" \"gallery gallery\" \"button button\";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-inline-end:7px;margin-top:7px;margin-inline-start:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-inline-end:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-inline-end:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;padding:0;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:start;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;grid-template-columns:unset;gap:unset;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:start}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-inline-end:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:start}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon\" \"description\" \"welcome\" \"how-to\" \"gallery\" \"button\";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-inline-end:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-inline-end:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop pwa-gallery{margin:0 -10px}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;\n ","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\nimport { ManifestScreenshot } from '../../types/types';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, install: any, toggleGallery: any, galleryRequested: boolean, toggleHowTo: any, howToRequested: boolean, isAndroidFallback: boolean, isRTL: boolean = false) => {\r\n const installDialogClasses = () => { return {available: installAvailable, gallery: galleryRequested }};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n ${!disableClose? html`` : ''}\r\n
\r\n
${location.hostname}
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n ${!disableDescription? \r\n html`
${installDescription? installDescription: `${msg('This site has app functionality.')} ${msg('Install it on your device for extensive experience and easy access.')}`}
` \r\n : ''}\r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n ${screenshotsAvailable? html``:''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n ${screenshotsAvailable? html``: ''}\r\n \r\n
\r\n
`;\r\n};\r\nexport default template;\r\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, howToForApple: any, isDesktop: boolean, howToRequested: boolean, toggleGallery: any, galleryRequested: boolean, isRTL: boolean = false) => {\r\n const installDialogClassesApple = () => { return {available: installAvailable, 'how-to': howToRequested, gallery: galleryRequested, desktop: isDesktop}};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, PropertyValues, html } from 'lit';\r\nimport { localized } from '@lit/localize';\r\nimport { property, state, customElement } from 'lit/decorators.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { changeLocale, isRTL } from './localization';\r\n\r\nimport { IRelatedApp, Manifest, IWindow, PWAInstallAttributes } from './types/types';\r\n\r\nimport PWAGalleryElement from './gallery';\r\nimport PWABottomSheetElement from './templates/chrome/bottom-sheet';\r\n\r\nimport Utils from './utils';\r\n\r\ndeclare const window: IWindow;\r\n\r\nimport styles from './templates/chrome/styles.scss';\r\nimport stylesCommon from './templates/chrome/styles-common.scss'\r\nimport stylesApple from './templates/apple/styles-apple.scss';\r\n\r\nimport template from './templates/chrome/template';\r\nimport templateApple from './templates/apple/template-apple';\r\n\r\n/**\r\n * @event {CustomEvent} pwa-install-success-event - App install success (Chromium/Android only)\r\n * @event {CustomEvent} pwa-install-fail-event - App install failed (Chromium/Android only)\r\n * @event {CustomEvent} pwa-user-choice-result-event - dismissed, accepted\r\n * @event {CustomEvent} pwa-install-available-event - App install available\r\n * @event {CustomEvent} pwa-install-how-to-event - App install instruction showed\r\n * @event {CustomEvent} pwa-install-gallery-event - App install gallery showed\r\n */\r\n@localized()\r\n@customElement('pwa-install')\r\nexport class PWAInstallElement extends LitElement {\r\n\t@property({attribute: 'manifest-url'}) manifestUrl = '/manifest.json';\r\n\t@property() icon = '';\r\n\t@property() name = '';\r\n\t@property() description = '';\r\n\t@property({attribute: 'install-description'}) installDescription = '';\r\n\t@property({attribute: 'disable-install-description', type: Boolean}) disableDescription = false;\r\n\t@property({attribute: 'disable-screenshots', type: Boolean}) disableScreenshots = false;\r\n\t@property({attribute: 'disable-screenshots-apple', type: Boolean}) disableScreenshotsApple = false;\r\n\t@property({attribute: 'disable-screenshots-chrome', type: Boolean}) disableScreenshotsChrome = false;\r\n\t@property({attribute: 'manual-apple', type: Boolean}) manualApple = false;\r\n\t@property({attribute: 'manual-chrome', type: Boolean}) manualChrome = false;\r\n\t@property({attribute: 'disable-chrome', type: Boolean}) disableChrome = false;\r\n\t@property({attribute: 'disable-close', type: Boolean}) disableClose = false;\r\n\t@property({attribute: 'disable-android-fallback', type: Boolean}) disableFallback = false;\r\n\t@property({attribute: 'use-local-storage', type: Boolean}) useLocalStorage = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn [ styles, stylesCommon, stylesApple ];\r\n\t}\r\n\r\n\t@state() externalPromptEvent: BeforeInstallPromptEvent | null = null;\r\n\r\n\tpublic platforms: BeforeInstallPromptEvent['platforms'] = [];\r\n\tpublic userChoiceResult = '';\r\n\r\n\tpublic isDialogHidden: boolean = Utils.getStorageFlag('pwa-hide-install');\r\n\tpublic isInstallAvailable = false;\r\n\tpublic isAppleMobilePlatform = false;\r\n\tpublic isAppleDesktopPlatform = false;\r\n\tpublic isAndroidFallback = false;\r\n\tpublic isAndroid = false;\r\n\tpublic isUnderStandaloneMode = false;\r\n\tpublic isRelatedAppsInstalled = false;\r\n\r\n\t/** @internal */\r\n\tprivate _isRTL = false;\r\n\r\n\t/** @internal */\r\n\tprivate _manifest: Manifest = new Manifest();\r\n\t/** @internal */\r\n\tprivate _howToRequested = false;\r\n\t/** @internal */\r\n\tprivate _galleryRequested = false;\r\n\t/** @internal */\r\n\tprivate _install = {\r\n\t\thandleEvent: () => {\r\n\t\t\tif (window.defferedPromptEvent) {\r\n\t\t\t\tthis.hideDialog();\r\n\t\t\t\twindow.defferedPromptEvent.prompt();\r\n\t\t\t\twindow.defferedPromptEvent.userChoice\r\n\t\t\t\t\t.then((choiceResult: PromptResponseObject) => {\r\n\t\t\t\t\t\tthis.userChoiceResult = choiceResult.outcome;\r\n\t\t\t\t\t\tUtils.eventUserChoiceResult(this, this.userChoiceResult);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tUtils.eventInstalledFail(this);\r\n\t\t\t\t\t});\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\tpublic install = () => {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis._howToRequested = true;\r\n\t\t\tthis.requestUpdate();\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._install.handleEvent();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialog = {\r\n\t\thandleEvent: () => {\r\n\t\t\tthis.isDialogHidden = true;\r\n\t\t\tUtils.setStorageFlag('pwa-hide-install', true, this.useLocalStorage);\r\n\t\t\tthis.requestUpdate();\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialogUser = () => {\r\n\t\tUtils.eventUserChoiceResult(this, 'dismissed');\r\n\t\tthis.userChoiceResult = 'dismissed';\r\n\t\tthis.hideDialog();\r\n\t}\r\n\tpublic hideDialog = () => {\r\n\t\tthis._hideDialog.handleEvent();\r\n\t}\r\n\tpublic showDialog = (forced = false) => {\r\n\t\tthis.isDialogHidden = false;\r\n\t\tif (forced)\r\n\t\t\tthis.isInstallAvailable = true;\r\n\t\tUtils.setStorageFlag('pwa-hide-install', false, this.useLocalStorage);\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tpublic getInstalledRelatedApps = async (): Promise => {\r\n\t\treturn await Utils.getInstalledRelatedApps();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _toggleHowTo = {\r\n handleEvent: () => {\r\n\t\t\tthis._howToRequested = !this._howToRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._galleryRequested = false;\r\n\t\t\tthis.requestUpdate();\r\n\r\n\t\t\tif (this._howToRequested) {\r\n\t\t\t\tUtils.eventInstallHowTo(this);\r\n\t\t\t}\t\t\t\t\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate _toggleGallery = {\r\n handleEvent: () => {\r\n\t\t\tthis._galleryRequested = !this._galleryRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._howToRequested = false;\r\n\r\n\t\t\tthis._galleryRequested && Utils.eventGallery(this);\r\n\r\n\t\t\tthis.requestUpdate();\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate async _checkPlatform() {\r\n\t\tthis.isUnderStandaloneMode = Utils.isStandalone();\r\n\t\tthis.isRelatedAppsInstalled = await Utils.isRelatedAppsInstalled();\r\n\t\tthis.isAppleMobilePlatform = Utils.isAppleMobile();\r\n\t\tthis.isAppleDesktopPlatform = Utils.isAppleDesktop();\r\n\t\tthis.isAndroidFallback = Utils.isAndroidFallback();\r\n\t\tthis.isAndroid = Utils.isAndroid();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _checkInstallAvailable() {\r\n\t\tif (this.isUnderStandaloneMode)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis.manualApple && this.hideDialog();\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t},\r\n\t\t\t\t1000\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet _promptTriggered = false;\r\n\t\tif (!this.disableChrome && window.BeforeInstallPromptEvent) {\r\n\t\t\tthis.manualChrome && this.hideDialog();\r\n\t\t\tconst _promptHandler = (e: BeforeInstallPromptEvent) => {\r\n\t\t\t\twindow.defferedPromptEvent = e;\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.platforms = e.platforms;\r\n\r\n\t\t\t\tif (this.isRelatedAppsInstalled) {\r\n\t\t\t\t\tthis.isInstallAvailable = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userChoiceResult === 'accepted'){\r\n\t\t\t\t\tthis.isDialogHidden = true;\r\n\t\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t_promptTriggered = true;\r\n\t\t\t\tthis.isAndroidFallback = false;\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t\tif (this.externalPromptEvent != null)\r\n\t\t\t\tsetTimeout(() => _promptHandler(this.externalPromptEvent!), 300);\r\n\t\t\telse\r\n\t\t\t\twindow.addEventListener('beforeinstallprompt', _promptHandler);\r\n\t\t}\r\n\t\t\r\n\t\tif (!this.disableFallback && this.isAndroid && !_promptTriggered) {\r\n\t\t\t// browsers without BeforeInstallPromptEvent\r\n\t\t\tif (this.isAndroidFallback) {\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t1000\r\n\t\t\t\t);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t// trying to fix browsers like Opera with BeforeInstallPromptEvent not working\r\n\t\t\tif ('userActivation' in navigator && !this.isRelatedAppsInstalled) {\r\n\t\t\t\tconst _activation = navigator.userActivation;\r\n\t\t\t\tconst _activationHandler = setInterval(() => {\r\n\t\t\t\t\tif (_activation.isActive || _activation.hasBeenActive) {\r\n\t\t\t\t\t\tif (!_promptTriggered) {\r\n\t\t\t\t\t\t\tthis.isAndroidFallback = true;\r\n\t\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\t\tthis.requestUpdate();\r\n\t\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tclearInterval(_activationHandler);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 1000);\r\n\t\t\t\tsetTimeout(() => clearInterval(_activationHandler), 30000);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _init = async () => {\r\n\t\twindow.defferedPromptEvent = null;\r\n\r\n\t\tawait this._checkPlatform();\r\n\t\tthis._checkInstallAvailable();\r\n\r\n\t\tif ('onappinstalled' in window)\r\n\t\t\twindow.addEventListener('appinstalled', (e) => {\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t\tthis.isInstallAvailable = false;\r\n\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t});\r\n\r\n\t\tObject.assign(this, await Utils.fetchAndProcessManifest(this.manifestUrl, this.icon, this.name, this.description));\r\n\t};\r\n\t/** @internal */\r\n\tprivate _requestUpdate = () => {\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tasync connectedCallback() {\r\n\t\tawait changeLocale(navigator.language);\r\n\t\tthis._isRTL = isRTL();\r\n\t\tthis._init();\r\n\t\tPWAGalleryElement.finalized;\r\n\t\tPWABottomSheetElement.finalized;\r\n\t\tsuper.connectedCallback();\r\n\t}\r\n\twillUpdate(changedProperties: PropertyValues) {\r\n\t\tif (this.externalPromptEvent && changedProperties.has('externalPromptEvent') && typeof this.externalPromptEvent == 'object') {\r\n\t\t this._init();\r\n\t\t}\r\n\t}\r\n\r\n\t// firstUpdated() {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\trender() {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform)\r\n\t\t\treturn html`${templateApple(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsApple,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._toggleHowTo,\r\n\t\t\t\tthis.isAppleDesktopPlatform,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested,\r\n\t\t\t\tthis._isRTL\r\n\t\t\t)}`;\r\n\t\telse\r\n\t\t\treturn html`${template(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsChrome,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._install,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested,\r\n\t\t\t\tthis._toggleHowTo,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis.isAndroidFallback,\r\n\t\t\t\tthis._isRTL\r\n\t\t\t)}`;\r\n\t}\r\n}\r\n\r\nexport { PWAInstallAttributes };\r\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { updateWhenLocaleChanges } from './localized-controller.js';\n/**\n * Class decorator to enable re-rendering the given LitElement whenever a new\n * active locale has loaded.\n *\n * See also {@link updateWhenLocaleChanges} for the same functionality without\n * the use of decorators.\n *\n * When using lit-localize in transform mode, applications of this decorator are\n * removed.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {customElement} from 'lit/decorators.js';\n * import {msg, localized} from '@lit/localize';\n *\n * @localized()\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nexport const localized = () => (clazz, _context) => {\n clazz.addInitializer(updateWhenLocaleChanges);\n return clazz;\n};\n//# sourceMappingURL=localized-decorator.js.map"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","t","globalThis","e","ShadowRoot","ShadyCSS","nativeShadow","Document","CSSStyleSheet","s","WeakMap","n","constructor","this","_$cssResult$","Error","cssText","styleSheet","length","replaceSync","set","toString","i","reduce","S","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","c","cssRules","r","is","getOwnPropertyDescriptor","getOwnPropertyNames","h","getOwnPropertySymbols","getPrototypeOf","a","trustedTypes","l","emptyScript","p","reactiveElementPolyfillSupport","d","u","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","f","y","attribute","type","String","converter","reflect","hasChanged","metadata","litPropertyMetadata","b","HTMLElement","addInitializer","_$Ei","push","observedAttributes","finalize","_$Eh","keys","createProperty","state","elementProperties","noAccessor","getPropertyDescriptor","requestUpdate","configurable","getPropertyOptions","Map","finalized","properties","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$EC","removeAttribute","P","_$ET","has","_$Ej","reject","scheduleUpdate","performUpdate","wrapped","shouldUpdate","willUpdate","hostUpdate","update","_$EU","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","ReactiveElement","reactiveElementVersions","createPolicy","createHTML","Math","random","toFixed","slice","createComment","iterator","v","_","m","RegExp","g","$","_$litType$","strings","values","x","T","for","E","A","C","createTreeWalker","V","lastIndex","exec","test","startsWith","N","parts","el","currentNode","content","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","getAttribute","split","index","name","ctor","H","I","L","k","tagName","append","data","indexOf","innerHTML","_$Co","_$Cl","_$litDirective$","_$AO","_$AT","_$AS","M","_$AV","_$AN","_$AD","_$AM","parentNode","_$AU","creationScope","importNode","R","nextSibling","z","_$AI","_$Cv","_$AH","_$AA","_$AB","options","startNode","endNode","_$AR","O","insertBefore","createTextNode","_$AC","_$AP","remove","setConnected","element","fill","j","arguments","toggleAttribute","capture","once","passive","removeEventListener","addEventListener","handleEvent","host","litHtmlPolyfillSupport","litHtmlVersions","renderOptions","_$Do","renderBefore","render","_$litPart$","_$litElement$","litElementHydrateSupport","LitElement","litElementPolyfillSupport","litElementVersions","joinStringsAndValues","valueOrder","concat","defaultMsg","template","isStrTagged","val","msg","installed","LOCALE_STATUS_EVENT","LocalizeController","__litLocalizeEventHandler","event","detail","status","window","updateWhenLocaleChanges","Deferred","settled","promise","resolve","_resolve","_reject","error","hl","generateMsgId","isHtmlTagged","str","t0","v0","t1","v1","t2","v2","t3","v3","charCodeAt","fnv1a64","join","expressionOrders","hashCache","runtimeMsg","templates","id","undefined","generateId","localized","order","dispatchStatusEvent","dispatchEvent","CustomEvent","loadingLocale","sourceLocale","validLocales","loadLocale","activeLocale","loading","requestId","getLocale","setLocale","newLocale","thisRequestId","then","mod","readyLocale","err","errorLocale","errorMessage","customElements","define","kind","init","targetLocales","localizedTemplates","config","async","lang","impl","_installMsgImplementation","Manifest","icons","src","screenshots","short_name","description","_eventDispatcher","_element","message","Utils","isAppleMobile","includes","navigator","platform","userAgent","match","maxTouchPoints","isAppleDesktop","version","parseInt","audioCheck","canPlayType","webGLCheck","OffscreenCanvas","getContext","isAndroid","isAndroidFallback","deviceFormFactor","matchMedia","matches","isStandalone","standalone","getInstalledRelatedApps","relatedApps","isRelatedAppsInstalled","setStorageFlag","persistent","localStorage","setItem","sessionStorage","getStorageFlag","getItem","eventInstalledSuccess","eventInstalledFail","eventUserChoiceResult","eventInstallAvailable","eventInstallHowTo","eventGallery","normalizeManifestAssetUrls","manifest","manifestUrl","normalizedManifestUrl","URL","location","href","asset","fetchAndProcessManifest","icon","_manifest","_json","_response","fetch","json","ok","theme","scrollToNextPage","scrollToPrevPage","PWAGalleryElement","rtl","getScrollElements","gallery","querySelector","galleryScroller","galleryItems","from","querySelectorAll","scroller","items","findCurrentItem","scrollLeft","find","item","offsetWidth","offsetLeft","scrollToPage","direction","scrollData","currentItem","targetIndex","scrollIntoView","behavior","block","inline","_init","_tools","setTimeout","scrollTo","top","left","_$Ct","_$Ci","filter","st","nt","classList","install","fallback","howToRequested","PWABottomSheetElement","props","hideDialog","disableClose","toggleHowTo","_callInstall","setupAppearence","_callHide","bindedElement","_saveBodyStyle","body","style","overscrollBehaviorY","dragMobileSheet","touchTargetElement","infoElement","dragOffset","bottomSize","offsetHeight","offsetTop","getYCoord","clientY","changedTouches","dragMouseDown","dragMouseUp","dragMouseMove","preventDefault","getBoundingClientRect","innerHeight","closeDragElement","clientHeight","getRootNode","currentY","setProperty","toPoint","innerWidth","MouseEvent","touchElement","listener","fullOpen","parentElement","installDescription","disableDescription","disableScreenshots","installAvailable","toggleGallery","galleryRequested","isRTL","installDialogClasses","available","screenshotsAvailable","howToForApple","isDesktop","desktop","PWAInstallElement","disableScreenshotsApple","disableScreenshotsChrome","manualApple","manualChrome","disableChrome","disableFallback","useLocalStorage","externalPromptEvent","platforms","userChoiceResult","isDialogHidden","isInstallAvailable","isAppleMobilePlatform","isAppleDesktopPlatform","isUnderStandaloneMode","_isRTL","_howToRequested","_galleryRequested","_install","defferedPromptEvent","prompt","userChoice","choiceResult","outcome","catch","_hideDialog","_hideDialogUser","showDialog","forced","_toggleHowTo","_toggleGallery","_checkPlatform","_checkInstallAvailable","assign","_requestUpdate","_promptTriggered","BeforeInstallPromptEvent","_promptHandler","_activation","userActivation","_activationHandler","setInterval","isActive","hasBeenActive","clearInterval","changeLocale","language","changedProperties","clazz","_context"],"sourceRoot":""} +{"version":3,"file":"pwa-install.bundle.js","mappings":"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","sources":["webpack://PWAInstallComponent/webpack/bootstrap","webpack://PWAInstallComponent/webpack/runtime/define property getters","webpack://PWAInstallComponent/webpack/runtime/hasOwnProperty shorthand","webpack://PWAInstallComponent/webpack/runtime/make namespace object","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/css-tag.js","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/reactive-element.js","webpack://PWAInstallComponent/./node_modules/lit-html/lit-html.js","webpack://PWAInstallComponent/./node_modules/lit-element/lit-element.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/str-tag.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/default-msg.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/init/install.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/locale-status-event.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/localized-controller.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/deferred.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/fnv1a64.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/id-generation.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/runtime-msg.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/init/runtime.js","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/decorators/custom-element.js","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/decorators/property.js","webpack://PWAInstallComponent/./src/localization/locale-codes.ts","webpack://PWAInstallComponent/./src/localization/locales/ru.ts","webpack://PWAInstallComponent/./src/localization/locales/tr.ts","webpack://PWAInstallComponent/./src/localization/locales/de.ts","webpack://PWAInstallComponent/./src/localization/locales/es.ts","webpack://PWAInstallComponent/./src/localization/locales/nl.ts","webpack://PWAInstallComponent/./src/localization/locales/el.ts","webpack://PWAInstallComponent/./src/localization/locales/fr.ts","webpack://PWAInstallComponent/./src/localization/locales/sr.ts","webpack://PWAInstallComponent/./src/localization/locales/pl.ts","webpack://PWAInstallComponent/./src/localization/locales/uk.ts","webpack://PWAInstallComponent/./src/localization/locales/zh-HK.ts","webpack://PWAInstallComponent/./src/localization/locales/zh-CN.ts","webpack://PWAInstallComponent/./src/localization/locales/it.ts","webpack://PWAInstallComponent/./src/localization/locales/cs.ts","webpack://PWAInstallComponent/./src/localization/locales/no.ts","webpack://PWAInstallComponent/./src/localization/locales/pt.ts","webpack://PWAInstallComponent/./src/localization/locales/ja.ts","webpack://PWAInstallComponent/./src/localization/locales/sv.ts","webpack://PWAInstallComponent/./src/localization/locales/ko.ts","webpack://PWAInstallComponent/./src/localization/locales/km.ts","webpack://PWAInstallComponent/./src/localization/locales/fa.ts","webpack://PWAInstallComponent/./src/localization/locales/da.ts","webpack://PWAInstallComponent/./src/localization/locales/vi.ts","webpack://PWAInstallComponent/./src/localization/index.ts","webpack://PWAInstallComponent/./src/types/types.ts","webpack://PWAInstallComponent/./src/gallery/styles-gallery.scss","webpack://PWAInstallComponent/./src/utils.ts","webpack://PWAInstallComponent/./src/gallery/template-gallery.ts","webpack://PWAInstallComponent/./src/gallery/index.ts","webpack://PWAInstallComponent/./src/templates/chrome/styles-common.scss","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/styles-bottom-sheet.scss","webpack://PWAInstallComponent/./node_modules/lit-html/directive.js","webpack://PWAInstallComponent/./node_modules/lit-html/directives/class-map.js","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/template-bottom-sheet.ts","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/index.ts","webpack://PWAInstallComponent/./src/templates/chrome/styles.scss","webpack://PWAInstallComponent/./src/templates/apple/styles-apple.scss","webpack://PWAInstallComponent/./src/templates/chrome/template.ts","webpack://PWAInstallComponent/./src/templates/apple/template-apple.ts","webpack://PWAInstallComponent/./src/index.ts","webpack://PWAInstallComponent/./node_modules/@lit/reactive-element/decorators/state.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/localized-decorator.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"\":3===i?\"\":\"\",c=f;for(let i=0;i\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"\")+(2===i?\"\":3===i?\"\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as s}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class r extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const s=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(s,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return s}}r._$litElement$=!0,r[\"finalized\"]=!0,globalThis.litElementHydrateSupport?.({LitElement:r});const i=globalThis.litElementPolyfillSupport;i?.({LitElement:r});const o={_$AK:(t,e,s)=>{t._$AK(e,s)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push(\"4.1.1\");export{r as LitElement,o as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Tag that allows expressions to be used in localized non-HTML template\n * strings.\n *\n * Example: msg(str`Hello ${this.user}!`);\n *\n * The Lit html tag can also be used for this purpose, but HTML will need to be\n * escaped, and there is a small overhead for HTML parsing.\n *\n * Untagged template strings with expressions aren't supported by lit-localize\n * because they don't allow for values to be captured at runtime.\n */\nconst _str = (strings, ...values) => ({\n strTag: true,\n strings,\n values,\n});\nexport const str = _str;\nexport const isStrTagged = (val) => typeof val !== 'string' && 'strTag' in val;\n/**\n * Render the result of a `str` tagged template to a string. Note we don't need\n * to do this for Lit templates, since Lit itself handles rendering.\n */\nexport const joinStringsAndValues = (strings, values, valueOrder) => {\n let concat = strings[0];\n for (let i = 1; i < strings.length; i++) {\n concat += values[valueOrder ? valueOrder[i - 1] : i - 1];\n concat += strings[i];\n }\n return concat;\n};\n//# sourceMappingURL=str-tag.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { isStrTagged, joinStringsAndValues } from './str-tag.js';\n/**\n * Default identity msg implementation. Simply returns the input template with\n * no awareness of translations. If the template is str-tagged, returns it in\n * string form.\n */\nexport const defaultMsg = ((template) => isStrTagged(template)\n ? joinStringsAndValues(template.strings, template.values)\n : template);\n//# sourceMappingURL=default-msg.js.map","import { defaultMsg } from '../internal/default-msg.js';\n/**\n * Make a string or lit-html template localizable.\n *\n * @param template A string, a lit-html template, or a function that returns\n * either a string or lit-html template.\n * @param options Optional configuration object with the following properties:\n * - id: Optional project-wide unique identifier for this template. If\n * omitted, an id will be automatically generated from the template strings.\n * - desc: Optional description\n */\nexport let msg = defaultMsg;\nlet installed = false;\n/**\n * Internal only. Do not use this function.\n *\n * Installs an implementation of the msg function to replace the default\n * identity function. Throws if called more than once.\n *\n * @internal\n */\nexport function _installMsgImplementation(impl) {\n if (installed) {\n throw new Error('lit-localize can only be configured once');\n }\n msg = impl;\n installed = true;\n}\n//# sourceMappingURL=install.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Name of the event dispatched to `window` whenever a locale change starts,\n * finishes successfully, or fails. Only relevant to runtime mode.\n *\n * The `detail` of this event is an object with a `status` string that can be:\n * \"loading\", \"ready\", or \"error\", along with the relevant locale code, and\n * error message if applicable.\n *\n * You can listen for this event to know when your application should be\n * re-rendered following a locale change. See also the Localized mixin, which\n * automatically re-renders LitElement classes using this event.\n */\nexport const LOCALE_STATUS_EVENT = 'lit-localize-status';\n//# sourceMappingURL=locale-status-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { LOCALE_STATUS_EVENT } from './locale-status-event.js';\nclass LocalizeController {\n constructor(host) {\n this.__litLocalizeEventHandler = (event) => {\n if (event.detail.status === 'ready') {\n this.host.requestUpdate();\n }\n };\n this.host = host;\n }\n hostConnected() {\n window.addEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n hostDisconnected() {\n window.removeEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n}\n/**\n * Re-render the given LitElement whenever a new active locale has loaded.\n *\n * See also {@link localized} for the same functionality as a decorator.\n *\n * When using lit-localize in transform mode, calls to this function are\n * replaced with undefined.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {msg, updateWhenLocaleChanges} from '@lit/localize';\n *\n * class MyElement extends LitElement {\n * constructor() {\n * super();\n * updateWhenLocaleChanges(this);\n * }\n *\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nconst _updateWhenLocaleChanges = (host) => host.addController(new LocalizeController(host));\nexport const updateWhenLocaleChanges = _updateWhenLocaleChanges;\n//# sourceMappingURL=localized-controller.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport class Deferred {\n constructor() {\n this.settled = false;\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n resolve(value) {\n this.settled = true;\n this._resolve(value);\n }\n reject(error) {\n this.settled = true;\n this._reject(error);\n }\n}\n//# sourceMappingURL=deferred.js.map","/**\n * @license\n * Copyright 2014 Travis Webb\n * SPDX-License-Identifier: MIT\n */\n// This module is derived from the file:\n// https://github.com/tjwebb/fnv-plus/blob/1e2ce68a07cb7dd4c3c85364f3d8d96c95919474/index.js#L309\n//\n// Changes:\n// - Only the _hash64_1a_fast function is included.\n// - Removed loop unrolling.\n// - Converted to TypeScript ES module.\n// - var -> let/const\n//\n// TODO(aomarks) Upstream improvements to https://github.com/tjwebb/fnv-plus/.\nconst hl = [];\nfor (let i = 0; i < 256; i++) {\n hl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n}\n/**\n * Perform a FNV-1A 64-bit hash of the given string (as UTF-16 code units), and\n * return a hexadecimal digest (left zero padded to 16 characters).\n *\n * @see {@link http://tools.ietf.org/html/draft-eastlake-fnv-06}\n */\nexport function fnv1a64(str) {\n let t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n for (let i = 0; i < str.length; i++) {\n v0 ^= str.charCodeAt(i);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = (t3 + (t2 >>> 16)) & 65535;\n v2 = t2 & 65535;\n }\n return (hl[v3 >> 8] +\n hl[v3 & 255] +\n hl[v2 >> 8] +\n hl[v2 & 255] +\n hl[v1 >> 8] +\n hl[v1 & 255] +\n hl[v0 >> 8] +\n hl[v0 & 255]);\n}\n//# sourceMappingURL=fnv1a64.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { fnv1a64 } from './fnv1a64.js';\n/**\n * Delimiter used between each template string component before hashing. Used to\n * prevent e.g. \"foobar\" and \"foo${baz}bar\" from sharing a hash.\n *\n * This is the \"record separator\" ASCII character.\n */\nexport const HASH_DELIMITER = '\\x1e';\n/**\n * Id prefix on html-tagged templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst HTML_PREFIX = 'h';\n/**\n * Id prefix on plain string templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst STRING_PREFIX = 's';\n/**\n * Generate a unique ID for a lit-localize message.\n *\n * Example:\n * Template: html`Hello ${who}!`\n * Params: [\"Hello \", \"!\"], true\n * Output: h82ccc38d4d46eaa9\n *\n * The ID is constructed as:\n *\n * [0] Kind of template: [h]tml or [s]tring.\n * [1,16] 64-bit FNV-1a hash hex digest of the template strings, as UTF-16\n * code points, delineated by an ASCII \"record separator\" character.\n *\n * We choose FNV-1a because:\n *\n * 1. It's pretty fast (e.g. much faster than SHA-1).\n * 2. It's pretty small (0.25 KiB minified + brotli).\n * 3. We don't require cryptographic security, and 64 bits should give\n * sufficient collision resistance for any one application. Worst\n * case, we will always detect collisions during analysis.\n * 4. We can't use Web Crypto API (e.g. SHA-1), because it's asynchronous.\n * 5. It's a well known non-cryptographic hash with implementations in many\n * languages.\n * 6. There was an existing JavaScript implementation that doesn't require\n * BigInt, for IE11 compatibility.\n */\nexport function generateMsgId(strings, isHtmlTagged) {\n return ((isHtmlTagged ? HTML_PREFIX : STRING_PREFIX) +\n fnv1a64(typeof strings === 'string' ? strings : strings.join(HASH_DELIMITER)));\n}\n//# sourceMappingURL=id-generation.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { defaultMsg } from './default-msg.js';\nimport { joinStringsAndValues } from './str-tag.js';\nimport { generateMsgId } from './id-generation.js';\nconst expressionOrders = new WeakMap();\nconst hashCache = new Map();\nexport function runtimeMsg(templates, template, options) {\n if (templates) {\n const id = options?.id ?? generateId(template);\n const localized = templates[id];\n if (localized) {\n if (typeof localized === 'string') {\n // E.g. \"Hello World!\"\n return localized;\n }\n else if ('strTag' in localized) {\n // E.g. str`Hello ${name}!`\n //\n // Localized templates have ${number} in place of real template\n // expressions. They can't have real template values, because the\n // variable scope would be wrong. The number tells us the index of the\n // source value to substitute in its place, because expressions can be\n // moved to a different position during translation.\n return joinStringsAndValues(localized.strings, \n // Cast `template` because its type wasn't automatically narrowed (but\n // we know it must be the same type as `localized`).\n template.values, localized.values);\n }\n else {\n // E.g. html`Hello ${name}!`\n //\n // We have to keep our own mapping of expression ordering because we do\n // an in-place update of `values`, and otherwise we'd lose ordering for\n // subsequent renders.\n let order = expressionOrders.get(localized);\n if (order === undefined) {\n order = localized.values;\n expressionOrders.set(localized, order);\n }\n return {\n ...localized,\n values: order.map((i) => template.values[i]),\n };\n }\n }\n }\n return defaultMsg(template);\n}\nfunction generateId(template) {\n const strings = typeof template === 'string' ? template : template.strings;\n let id = hashCache.get(strings);\n if (id === undefined) {\n id = generateMsgId(strings, typeof template !== 'string' && !('strTag' in template));\n hashCache.set(strings, id);\n }\n return id;\n}\n//# sourceMappingURL=runtime-msg.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { Deferred } from '../internal/deferred.js';\nimport { LOCALE_STATUS_EVENT } from '../internal/locale-status-event.js';\nimport { runtimeMsg } from '../internal/runtime-msg.js';\nimport { _installMsgImplementation } from './install.js';\n/**\n * Dispatch a \"lit-localize-status\" event to `window` with the given detail.\n */\nfunction dispatchStatusEvent(detail) {\n window.dispatchEvent(new CustomEvent(LOCALE_STATUS_EVENT, { detail }));\n}\nlet activeLocale = '';\nlet loadingLocale;\nlet sourceLocale;\nlet validLocales;\nlet loadLocale;\nlet templates;\nlet loading = new Deferred();\n// The loading promise must be initially resolved, because that's what we should\n// return if the user immediately calls setLocale(sourceLocale).\nloading.resolve();\nlet requestId = 0;\n/**\n * Set configuration parameters for lit-localize when in runtime mode. Returns\n * an object with functions:\n *\n * - `getLocale`: Return the active locale code.\n * - `setLocale`: Set the active locale code.\n *\n * Throws if called more than once.\n */\nexport const configureLocalization = (config) => {\n _installMsgImplementation(((template, options) => runtimeMsg(templates, template, options)));\n activeLocale = sourceLocale = config.sourceLocale;\n validLocales = new Set(config.targetLocales);\n validLocales.add(config.sourceLocale);\n loadLocale = config.loadLocale;\n return { getLocale, setLocale };\n};\n/**\n * Return the active locale code.\n */\nconst getLocale = () => {\n return activeLocale;\n};\n/**\n * Set the active locale code, and begin loading templates for that locale using\n * the `loadLocale` function that was passed to `configureLocalization`. Returns\n * a promise that resolves when the next locale is ready to be rendered.\n *\n * Note that if a second call to `setLocale` is made while the first requested\n * locale is still loading, then the second call takes precedence, and the\n * promise returned from the first call will resolve when second locale is\n * ready. If you need to know whether a particular locale was loaded, check\n * `getLocale` after the promise resolves.\n *\n * Throws if the given locale is not contained by the configured `sourceLocale`\n * or `targetLocales`.\n */\nconst setLocale = (newLocale) => {\n if (newLocale === (loadingLocale ?? activeLocale)) {\n return loading.promise;\n }\n if (!validLocales || !loadLocale) {\n throw new Error('Internal error');\n }\n if (!validLocales.has(newLocale)) {\n throw new Error('Invalid locale code');\n }\n requestId++;\n const thisRequestId = requestId;\n loadingLocale = newLocale;\n if (loading.settled) {\n loading = new Deferred();\n }\n dispatchStatusEvent({ status: 'loading', loadingLocale: newLocale });\n const localePromise = newLocale === sourceLocale\n ? // We could switch to the source locale synchronously, but we prefer to\n // queue it on a microtask so that switching locales is consistently\n // asynchronous.\n Promise.resolve({ templates: undefined })\n : loadLocale(newLocale);\n localePromise.then((mod) => {\n if (requestId === thisRequestId) {\n activeLocale = newLocale;\n loadingLocale = undefined;\n templates = mod.templates;\n dispatchStatusEvent({ status: 'ready', readyLocale: newLocale });\n loading.resolve();\n }\n // Else another locale was requested in the meantime. Don't resolve or\n // reject, because the newer load call is going to use the same promise.\n // Note the user can call getLocale() after the promise resolves if they\n // need to check if the locale is still the one they expected to load.\n }, (err) => {\n if (requestId === thisRequestId) {\n dispatchStatusEvent({\n status: 'error',\n errorLocale: newLocale,\n errorMessage: err.toString(),\n });\n loading.reject(err);\n }\n });\n return loading.promise;\n};\n//# sourceMappingURL=runtime.js.map","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.P(o,void 0,t),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","// Do not modify this file by hand!\n// Re-generate this file by running lit-localize.\n\n/**\n * The locale code that templates in this source code are written in.\n */\nexport const sourceLocale = `en`;\n\n/**\n * The other locale codes that this application is localized into. Sorted\n * lexicographically.\n */\nexport const targetLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `es`,\n `fa`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `vi`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n\n/**\n * All valid project locale codes. Sorted lexicographically.\n */\nexport const allLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `en`,\n `es`,\n `fa`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `vi`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Откройте меню вашего браузера`,\n's182ab2d6c997515f': `Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.`,\n's1b9047d53d9f9d22': `2) Нажать \"Поделиться\"`,\n's2d90afa5dcca2c0e': `3) Прокрутите вниз до \"Добавить на главный экран\"`,\n's37a9e8aec5713460': `Подробнее`,\n's4593f304dac8848c': `2) Нажмите \"Добавить на главный экран\"`,\n's54cfbb14f46396d4': `1) Откройте в вашем основном браузере`,\n's6196153c4b0c1ea0': `Установить`,\n's922329d6f6213590': `Добавить в Dock`,\n'sa5ef80b4bb9b39f8': `Свернуть`,\n'sa7551383d1897fcc': `2) Нажмите \"Добавить в Dock\"`,\n'sba52286c21552a4e': `Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.`,\n'sc79fd7641eb9a975': `Спрятать Инструкцию`,\n'scdaf4bbff76674c8': `На экран «Домой»`,\n'se740f75b95a51807': `Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.`,\n'sfea652f6580ff086': `Этот веб-сайт имеет функционал приложения.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Tarayıcı menünüzü açın`,\n's182ab2d6c997515f': `Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.`,\n's1b9047d53d9f9d22': `2) Gezinme çubuğunda Paylaş'a basın`,\n's2d90afa5dcca2c0e': `3) \"Ana Ekrana Ekle\" seçeneğine kadar aşağı kaydırın`,\n's37a9e8aec5713460': `Daha Fazla`,\n's4593f304dac8848c': `2) \"Ana Ekrana Ekle\"ye dokunun`,\n's54cfbb14f46396d4': `1) Ana tarayıcınızda açın`,\n's6196153c4b0c1ea0': `Yükle`,\n's922329d6f6213590': `Dock’a Ekle`,\n'sa5ef80b4bb9b39f8': `Küçült`,\n'sa7551383d1897fcc': `2) Dock’a ekleye basın`,\n'sba52286c21552a4e': `Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.`,\n'sc79fd7641eb9a975': `Talimatları gizle`,\n'scdaf4bbff76674c8': `Ana Ekrana Ekle`,\n'se740f75b95a51807': `Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.`,\n'sfea652f6580ff086': `Bu site uygulama işlevselliğine sahiptir.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Öffnen Sie das Menü Ihres Browsers`,\n's182ab2d6c997515f': `Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n's1b9047d53d9f9d22': `2) Drücken Sie auf Teilen in der Navigationsleiste`,\n's2d90afa5dcca2c0e': `3) Scrollen Sie nach unten zu \"Zum Startbildschirm hinzufügen\"`,\n's37a9e8aec5713460': `Mehr`,\n's4593f304dac8848c': `2) Tippen Sie auf \"Zum Startbildschirm hinzufügen\"`,\n's54cfbb14f46396d4': `1) Öffnen Sie es in Ihrem Hauptbrowser`,\n's6196153c4b0c1ea0': `Installieren`,\n's922329d6f6213590': `Zum Dock hinzufügen`,\n'sa5ef80b4bb9b39f8': `Weniger`,\n'sa7551383d1897fcc': `2) Drücken Sie auf Zum Dock hinzufügen`,\n'sba52286c21552a4e': `Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.`,\n'sc79fd7641eb9a975': `Anleitung ausblenden`,\n'scdaf4bbff76674c8': `Hinzufügen zum Startbildschirm`,\n'se740f75b95a51807': `Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n'sfea652f6580ff086': `Diese Website verfügt über App-Funktionalität.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Abre el menú de tu navegador`,\n's182ab2d6c997515f': `Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.`,\n's1b9047d53d9f9d22': `2) Presionar Compartir en la barra de direcciones`,\n's2d90afa5dcca2c0e': `3) Desplázate hacia abajo hasta \"Añadir a pantalla de inicio\"`,\n's37a9e8aec5713460': `Más`,\n's4593f304dac8848c': `2) Toca \"Añadir a pantalla de inicio\"`,\n's54cfbb14f46396d4': `1) Abre en tu navegador principal`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Añadir al Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Presionar Añadir al Dock`,\n'sba52286c21552a4e': `Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.`,\n'sc79fd7641eb9a975': `Esconder instrucciones`,\n'scdaf4bbff76674c8': `Añadir a pantalla de inicio`,\n'se740f75b95a51807': `Añádelo a tu Dock para una experiencia amplia y acceso fácil.`,\n'sfea652f6580ff086': `Este sitio tiene funcionalidad de aplicación.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Open je browsermenu`,\n's182ab2d6c997515f': `Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.`,\n's1b9047d53d9f9d22': `2) Druk op delen in de navigatiebalk`,\n's2d90afa5dcca2c0e': `3) Scrol naar beneden naar \"Toevoegen aan startscherm\"`,\n's37a9e8aec5713460': `Meer`,\n's4593f304dac8848c': `2) Tik op \"Toevoegen aan startscherm\"`,\n's54cfbb14f46396d4': `1) Open in je hoofdprogramma`,\n's6196153c4b0c1ea0': `Installeren`,\n's922329d6f6213590': `Toevoegen aan Dock`,\n'sa5ef80b4bb9b39f8': `Minder`,\n'sa7551383d1897fcc': `2) Druk op Toevoegen aan Dock`,\n'sba52286c21552a4e': `Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.`,\n'sc79fd7641eb9a975': `Instructie verbergen`,\n'scdaf4bbff76674c8': `Toevoegen aan het startscherm`,\n'se740f75b95a51807': `Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.`,\n'sfea652f6580ff086': `Deze site heeft app-functionaliteit.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Ανοίξτε το μενού του περιηγητή σας`,\n's182ab2d6c997515f': `Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n's1b9047d53d9f9d22': `2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης`,\n's2d90afa5dcca2c0e': `3) Κάντε κύλιση προς τα κάτω στο \"Προσθήκη στην οθόνη Αφετηρίας\"`,\n's37a9e8aec5713460': `Περισσότερα`,\n's4593f304dac8848c': `2) Πατήστε \"Προσθήκη στην οθόνη Αφετηρίας\"`,\n's54cfbb14f46396d4': `1) Ανοίξτε στον κύριο περιηγητή σας`,\n's6196153c4b0c1ea0': `Εγκατάσταση`,\n's922329d6f6213590': `Προσθήκη στην Πρόσβαση`,\n'sa5ef80b4bb9b39f8': `Λιγότερα`,\n'sa7551383d1897fcc': `2) Πατήστε Προσθήκη στην Πρόσβαση`,\n'sba52286c21552a4e': `Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sc79fd7641eb9a975': `Απόκρυψη Οδηγιών`,\n'scdaf4bbff76674c8': `Προσθήκη στην Οθόνη Αφετηρίας`,\n'se740f75b95a51807': `Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sfea652f6580ff086': `Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Ouvrez le menu de votre navigateur`,\n's182ab2d6c997515f': `Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.`,\n's1b9047d53d9f9d22': `2) Appuyez sur Partager dans la barre de navigation`,\n's2d90afa5dcca2c0e': `3) Faites défiler vers le bas jusqu'à \"Ajouter à l'écran d'accueil\"`,\n's37a9e8aec5713460': `Plus`,\n's4593f304dac8848c': `2) Touchez \"Ajouter à l'écran d'accueil\"`,\n's54cfbb14f46396d4': `1) Ouvrir dans votre navigateur principal`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Ajouter au Dock`,\n'sa5ef80b4bb9b39f8': `Moins`,\n'sa7551383d1897fcc': `2) Appuyez sur Ajouter au Dock`,\n'sba52286c21552a4e': `Installez-le sur votre appareil pour une expérience complète et un accès facile.`,\n'sc79fd7641eb9a975': `Masquer les instructions`,\n'scdaf4bbff76674c8': `Ajouter à l'écran d'accueil`,\n'se740f75b95a51807': `Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.`,\n'sfea652f6580ff086': `Ce site possède des fonctionnalités d'application.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Отворите мени вашег прегледача`,\n's182ab2d6c997515f': `Додајте га на Home Screen за широке могућности и лак приступ.`,\n's1b9047d53d9f9d22': `2) Притисните Share у навигационој траци`,\n's2d90afa5dcca2c0e': `3) Померите се надоле до \"Add to Home Screen\"`,\n's37a9e8aec5713460': `Више`,\n's4593f304dac8848c': `2) Додирните \"Add to Home Screen\"`,\n's54cfbb14f46396d4': `1) Отворите у вашем главном прегледачу`,\n's6196153c4b0c1ea0': `Инсталирај`,\n'sa5ef80b4bb9b39f8': `Мање`,\n'sa7551383d1897fcc': `3) Притисните Add to Dock`,\n'sba52286c21552a4e': `Инсталирајте га на вашем уређају за широке могућности и лак приступ.`,\n'sc79fd7641eb9a975': `Сакриј упутство`,\n'se740f75b95a51807': `Додајте га у вашу Dock за широке могућности и лак приступ.`,\n'sfea652f6580ff086': `Овај сајт има функционалност апликације.`,\n's922329d6f6213590': `Add to Dock`,\n'scdaf4bbff76674c8': `Add to Home Screen`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Otwórz menu przeglądarki`,\n's182ab2d6c997515f': `Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n's1b9047d53d9f9d22': `2) Wybierz \"Udostępnij\"`,\n's2d90afa5dcca2c0e': `3) Przewiń w dół do opcji \"Dodaj do Ekranu Głównego\"`,\n's37a9e8aec5713460': `Więcej`,\n's4593f304dac8848c': `2) Naciśnij \"Dodaj do Ekranu Głównego\"`,\n's54cfbb14f46396d4': `1) Otwórz w swojej głównej przeglądarce`,\n's6196153c4b0c1ea0': `Zainstaluj`,\n's922329d6f6213590': `Dodaj do Docka`,\n'sa5ef80b4bb9b39f8': `Mniej`,\n'sa7551383d1897fcc': `2) Wybierz \"Dodaj do Docka\"`,\n'sba52286c21552a4e': `Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sc79fd7641eb9a975': `Ukryj instrukcję`,\n'scdaf4bbff76674c8': `Dodaj do Ekranu Głównego`,\n'se740f75b95a51807': `Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sfea652f6580ff086': `Ta strona posiada funkcje aplikacji.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Відкрити меню браузера`,\n's182ab2d6c997515f': `Додайте на Домашній екран для зручного доступу та ширших можливостей.`,\n's1b9047d53d9f9d22': `2) Натиснути «Поділитися»`,\n's2d90afa5dcca2c0e': `3) Прокрутіть вниз до «На Початковий экран»`,\n's37a9e8aec5713460': `Детальніше`,\n's4593f304dac8848c': `2) Натиснути «На Початковий экран»`,\n's54cfbb14f46396d4': `1) Відкрити у вашому основному браузері`,\n's6196153c4b0c1ea0': `Встановити`,\n's922329d6f6213590': `Додати на Dock`,\n'sa5ef80b4bb9b39f8': `Згорнути`,\n'sa7551383d1897fcc': `2) Натиснути «Додати на Dock»`,\n'sba52286c21552a4e': `Встановіть на ваш пристрій для зручного доступу та ширших можливостей.`,\n'sc79fd7641eb9a975': `Сховати Інструкцію`,\n'scdaf4bbff76674c8': `На Початковий экран`,\n'se740f75b95a51807': `Додайте на панель Dock для зручного доступу та ширших можливостей.`,\n'sfea652f6580ff086': `Цей сайт має функції додатку.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 打開您的瀏覽器菜單`,\n's182ab2d6c997515f': `將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。`,\n's1b9047d53d9f9d22': `2) 點擊列表上的分享按鈕`,\n's2d90afa5dcca2c0e': `3) 向下滾動到「添加到主屏幕」`,\n's37a9e8aec5713460': `詳細資訊`,\n's4593f304dac8848c': `2) 點擊「添加到主屏幕」`,\n's54cfbb14f46396d4': `1) 在您的主要瀏覽器中打開`,\n's6196153c4b0c1ea0': `安裝`,\n's922329d6f6213590': `添加到Dock欄`,\n'sa5ef80b4bb9b39f8': `簡短資訊`,\n'sa7551383d1897fcc': `2) 點選添加到Dock欄`,\n'sba52286c21552a4e': `在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。`,\n'sc79fd7641eb9a975': `隱藏安裝流程`,\n'scdaf4bbff76674c8': `將App加入主畫面`,\n'se740f75b95a51807': `將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。`,\n'sfea652f6580ff086': `此網站具有應用程式功能。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 打开浏览器菜单`,\n's182ab2d6c997515f': `将其添加到主屏幕,以享受更丰富的体验并便于访问。`,\n's1b9047d53d9f9d22': `2) 点击导航栏中的“分享”按钮`,\n's2d90afa5dcca2c0e': `3) 向下滚动至“添加到主屏幕”`,\n's37a9e8aec5713460': `更多`,\n's4593f304dac8848c': `2) 轻触“添加到主屏幕”`,\n's54cfbb14f46396d4': `1) 在您的主浏览器中打开`,\n's6196153c4b0c1ea0': `安装`,\n's922329d6f6213590': `添加到程序坞`,\n'sa5ef80b4bb9b39f8': `收起`,\n'sa7551383d1897fcc': `2) 点击“添加到程序坞”`,\n'sba52286c21552a4e': `在您的设备上安装,以享受更丰富的体验并便于访问。`,\n'sc79fd7641eb9a975': `隐藏安装步骤`,\n'scdaf4bbff76674c8': `添加到主屏幕`,\n'se740f75b95a51807': `将其添加到您的程序坞,以享受更全面的体验并便于访问。`,\n'sfea652f6580ff086': `此网站具备 App 功能特性。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Apri il menu del tuo browser`,\n's182ab2d6c997515f': `Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.`,\n's1b9047d53d9f9d22': `2) Premi Condividi nella barra di navigazione`,\n's2d90afa5dcca2c0e': `3) Scorri verso il basso fino a \"Aggiungi alla schermata principale\"`,\n's37a9e8aec5713460': `Più`,\n's4593f304dac8848c': `2) Tocca \"Aggiungi alla schermata principale\"`,\n's54cfbb14f46396d4': `1) Apri nel tuo browser principale`,\n's6196153c4b0c1ea0': `Installa`,\n's922329d6f6213590': `Aggiungi al Dock`,\n'sa5ef80b4bb9b39f8': `Meno`,\n'sa7551383d1897fcc': `2) Premi Aggiungi al Dock`,\n'sba52286c21552a4e': `Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.`,\n'sc79fd7641eb9a975': `Nascondi istruzioni`,\n'scdaf4bbff76674c8': `Aggiungi alla schermata principale`,\n'se740f75b95a51807': `Aggiungilo al Dock per un'esperienza più completa e un accesso facile.`,\n'sfea652f6580ff086': `Questo sito ha funzionalità di app.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Otevřete nabídku prohlížeče`,\n's182ab2d6c997515f': `Přidejte jej na plochu pro rozšířené využití a snadný přístup.`,\n's1b9047d53d9f9d22': `2) Stiskněte tlačítko Sdílet na navigačním panelu`,\n's2d90afa5dcca2c0e': `3) Projděte dolů k \"Přidat na plochu\"`,\n's37a9e8aec5713460': `Více`,\n's4593f304dac8848c': `2) Klepněte na \"Přidat na plochu\"`,\n's54cfbb14f46396d4': `1) Otevřete v hlavním prohlížeči`,\n's6196153c4b0c1ea0': `Nainstalovat`,\n's922329d6f6213590': `Přidat do Docku`,\n'sa5ef80b4bb9b39f8': `Méně`,\n'sa7551383d1897fcc': `2) Stiskněte Přidat do Docku`,\n'sba52286c21552a4e': `Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.`,\n'sc79fd7641eb9a975': `Skrýt instrukce`,\n'scdaf4bbff76674c8': `Přidat na plochu`,\n'se740f75b95a51807': `Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.`,\n'sfea652f6580ff086': `Tento web má funkce aplikace.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Åpne menyen i nettleseren din`,\n's182ab2d6c997515f': `Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.`,\n's1b9047d53d9f9d22': `2) Trykk på Del-knappen i navigasjonslinjen`,\n's2d90afa5dcca2c0e': `3) Rull ned til «Legg til på Hjem-skjerm»`,\n's37a9e8aec5713460': `Mer`,\n's4593f304dac8848c': `2) Trykk på \"Legg til på Hjem-skjerm\"`,\n's54cfbb14f46396d4': `1) Åpne i hovednettleseren din`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Legg til i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Velg Legg til i Dock`,\n'sba52286c21552a4e': `Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sc79fd7641eb9a975': `Skjul instruksjoner`,\n'scdaf4bbff76674c8': `Legg til på Hjem-skjerm`,\n'se740f75b95a51807': `Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sfea652f6580ff086': `Denne siden har app-funksjonalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Abra o menu do seu navegador`,\n's182ab2d6c997515f': `Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.`,\n's1b9047d53d9f9d22': `2) Pressione Compartilhar na barra de endereço`,\n's2d90afa5dcca2c0e': `3) Role para baixo até \"Adicionar à Tela de Início\"`,\n's37a9e8aec5713460': `Mais`,\n's4593f304dac8848c': `2) Toque em \"Adicionar à Tela de Início\"`,\n's54cfbb14f46396d4': `1) Abra no seu navegador principal`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Adicionar ao Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Pressione Adicionar ao Dock`,\n'sba52286c21552a4e': `Instale no dispositivo para uma melhor experiência e mais fácil acesso.`,\n'sc79fd7641eb9a975': `Ocultar Instruções`,\n'scdaf4bbff76674c8': `Adicionar à Tela de Início`,\n'se740f75b95a51807': `Adicione ao Dock para uma melhor experiência e mais fácil acesso.`,\n'sfea652f6580ff086': `Este site possui funcionalidade de aplicativo.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) ブラウザメニューを開く`,\n's182ab2d6c997515f': `ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。`,\n's1b9047d53d9f9d22': `2) ナビゲーションバーで共有を押す`,\n's2d90afa5dcca2c0e': `3) 「ホーム画面に追加」までスクロールする`,\n's37a9e8aec5713460': `展開`,\n's4593f304dac8848c': `2) 「ホーム画面に追加」をタップする`,\n's54cfbb14f46396d4': `1) メインブラウザで開く`,\n's6196153c4b0c1ea0': `インストール`,\n's922329d6f6213590': `Dockに追加`,\n'sa5ef80b4bb9b39f8': `折りたたむ`,\n'sa7551383d1897fcc': `2) 「Dockに追加」を押す`,\n'sba52286c21552a4e': `デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。`,\n'sc79fd7641eb9a975': `説明を非表示`,\n'scdaf4bbff76674c8': `ホーム画面に追加`,\n'se740f75b95a51807': `ドックに追加して、幅広い体験と簡単なアクセスを実現してください。`,\n'sfea652f6580ff086': `このサイトはアプリ機能があります。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Öppna din webbläsares meny`,\n's182ab2d6c997515f': `Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.`,\n's1b9047d53d9f9d22': `2) Tryck på Dela-knappen i verktygsfältet`,\n's2d90afa5dcca2c0e': `3) Scrolla ner till \"Lägg till på hemskärmen\"`,\n's37a9e8aec5713460': `Mer`,\n's4593f304dac8848c': `2) Tryck på \"Lägg till på hemskärmen\"`,\n's54cfbb14f46396d4': `1) Öppna i din huvudsakliga webbläsare`,\n's6196153c4b0c1ea0': `Installera`,\n's922329d6f6213590': `Lägg till i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Välj Lägg till i Dock`,\n'sba52286c21552a4e': `Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sc79fd7641eb9a975': `Göm instruktioner`,\n'scdaf4bbff76674c8': `Lägg till på hemskärmen`,\n'se740f75b95a51807': `Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sfea652f6580ff086': `Denna webbsajt har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 브라우저 메뉴 열기`,\n's182ab2d6c997515f': `더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.`,\n's1b9047d53d9f9d22': `2) 내비게이션 바에서 공유 버튼 누르기`,\n's2d90afa5dcca2c0e': `3) \"홈 화면에 추가\"로 스크롤하기`,\n's37a9e8aec5713460': `더보기`,\n's4593f304dac8848c': `2) \"홈 화면에 추가\" 탭하기`,\n's54cfbb14f46396d4': `1) 주 브라우저에서 열기`,\n's6196153c4b0c1ea0': `설치`,\n's922329d6f6213590': `Dock에 추가`,\n'sa5ef80b4bb9b39f8': `닫기`,\n'sa7551383d1897fcc': `2) Dock에 추가 버튼 누르기`,\n'sba52286c21552a4e': `더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.`,\n'sc79fd7641eb9a975': `안내 숨기기`,\n'scdaf4bbff76674c8': `홈 화면에 추가`,\n'se740f75b95a51807': `더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.`,\n'sfea652f6580ff086': `이 사이트는 앱 기능을 가지고 있습니다.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) បើកម៉ឺនុយកម្មវិធីរុករករបស់អ្នក`,\n's182ab2d6c997515f': `បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n's1b9047d53d9f9d22': `2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ`,\n's2d90afa5dcca2c0e': `3) អូសចុះទៅកាន់ \"បន្ថែមទៅផ្ទាំងអេក្រង់ដើម\"`,\n's37a9e8aec5713460': `បង្ហាញបន្ថែម`,\n's4593f304dac8848c': `2) ចុចលើ \"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម\"`,\n's54cfbb14f46396d4': `1) បើកនៅក្នុងកម្មវិធីរុករកសំខាន់របស់អ្នក`,\n's6196153c4b0c1ea0': `តំឡើង`,\n's922329d6f6213590': `បន្ថែមទៅកាន់ Dock`,\n'sa5ef80b4bb9b39f8': `បង្ហាញតិច`,\n'sa7551383d1897fcc': `2) ចុចលើ បន្ថែមទៅកាន់ Dock`,\n'sba52286c21552a4e': `តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sc79fd7641eb9a975': `បិទការណែនាំ`,\n'scdaf4bbff76674c8': `បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n'se740f75b95a51807': `បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sfea652f6580ff086': `គេហទំព័រនេះមានមុខងារជាកម្មវិធី។`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `۱) مرورگر خود را باز کنید`,\n's182ab2d6c997515f': `برای تجربه گسترده و دسترسی آسان آن را به صفحه اصلی خود اضافه کنید.`,\n's1b9047d53d9f9d22': `۱)در نوار پایین دکمه (Share) را بزنید`,\n's2d90afa5dcca2c0e': `۳) به پایین اسکرول کنید تا به \"Add to Home Screen\" برسید`,\n's37a9e8aec5713460': `بیشتر`,\n's4593f304dac8848c': `۲) روی \"Add to Home screen\" ضربه بزنید`,\n's54cfbb14f46396d4': `۱) در مرورگر اصلی خود باز کنید`,\n's6196153c4b0c1ea0': `نصب`,\n's922329d6f6213590': `افزودن به (Dock)`,\n'sa5ef80b4bb9b39f8': `کمتر`,\n'sa7551383d1897fcc': `۲) (Add to Dock) را انتخاب کنید `,\n'sba52286c21552a4e': `برای تجربه گسترده و دسترسی آسان آن را بر روی دستگاه خود نصب کنید.`,\n'sc79fd7641eb9a975': ` مخفی کردن مراحل`,\n'scdaf4bbff76674c8': `افزودن به (Home Screen)`,\n'se740f75b95a51807': `برای تجربه گسترده و دسترسی آسان آن را به Dock خود اضافه کنید.`,\n'sfea652f6580ff086': ` این سایت دارای قابلیت اپلیکیشن است. `,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Åbn din browsermenu`,\n's182ab2d6c997515f': `Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.`,\n's1b9047d53d9f9d22': `2) Tryk på Del-knappen i navigationslinjen`,\n's2d90afa5dcca2c0e': `3) Rul ned til \"Tilføj til hjemmeskærm\"`,\n's37a9e8aec5713460': `Mere`,\n's4593f304dac8848c': `2) Tryk på \"Tilføj til hjemmeskærm\"`,\n's54cfbb14f46396d4': `1) Åbn i din primære browser`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Tilføj til Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Vælg Tilføj til Dock`,\n'sba52286c21552a4e': `Installer den på din enhed for en bedre oplevelse og nem adgang.`,\n'sc79fd7641eb9a975': `Skjul instruktion`,\n'scdaf4bbff76674c8': `Tilføj til hjemmeskærm`,\n'se740f75b95a51807': `Tilføj den til din Dock for en bedre oplevelse og nem adgang.`,\n'sfea652f6580ff086': `Denne side har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Mở menu trình duyệt của bạn`,\n's182ab2d6c997515f': `Thêm nó vào màn hình chính của bạn để có trải nghiệm phong phú hơn và truy cập dễ dàng hơn.`,\n's1b9047d53d9f9d22': `2) Nhấp vào nút \"Chia sẻ\" trên thanh điều hướng`,\n's2d90afa5dcca2c0e': `3) Kéo đến mục \"Thêm vào Màn hình chính\"`,\n's37a9e8aec5713460': `Thêm`,\n's4593f304dac8848c': `2) Nhấn vào \"Thêm vào Màn hình chính\"`,\n's54cfbb14f46396d4': `1) Mở trình duyệt chính của bạn`,\n's6196153c4b0c1ea0': `Cài đặt`,\n's922329d6f6213590': `Thêm vào Dock`,\n'sa5ef80b4bb9b39f8': `Thu gọn`,\n'sa7551383d1897fcc': `2) Nhấp vào \"Thêm vào Dock\"`,\n'sba52286c21552a4e': `Cài đặt trên thiết bị của bạn để có trải nghiệm phong phú hơn và truy cập dễ dàng.`,\n'sc79fd7641eb9a975': `Ẩn các bước cài đặt`,\n'scdaf4bbff76674c8': `Thêm vào màn hình chính`,\n'se740f75b95a51807': `Thêm nó vào Dock của bạn để có trải nghiệm toàn diện hơn và truy cập dễ dàng hơn.`,\n'sfea652f6580ff086': `Trang web này có cả chức năng đặc trưng ứng dụng.`,\n };\n ","import { configureLocalization } from '@lit/localize';\r\nimport {\r\n sourceLocale,\r\n targetLocales,\r\n} from './locale-codes';\r\n\r\nimport * as ru from './locales/ru';\r\nimport * as tr from './locales/tr';\r\nimport * as de from \"./locales/de\";\r\nimport * as es from \"./locales/es\";\r\nimport * as nl from \"./locales/nl\";\r\nimport * as el from \"./locales/el\";\r\nimport * as fr from \"./locales/fr\";\r\nimport * as sr from \"./locales/sr\";\r\nimport * as pl from \"./locales/pl\";\r\nimport * as uk from \"./locales/uk\";\r\nimport * as zhHK from \"./locales/zh-HK\";\r\nimport * as zhCN from \"./locales/zh-CN\";\r\nimport * as it from \"./locales/it\";\r\nimport * as cs from \"./locales/cs\";\r\nimport * as no from \"./locales/no\";\r\nimport * as pt from \"./locales/pt\";\r\nimport * as ja from \"./locales/ja\";\r\nimport * as sv from \"./locales/sv\";\r\nimport * as ko from \"./locales/ko\";\r\nimport * as km from \"./locales/km\";\r\nimport * as fa from \"./locales/fa\";\r\nimport * as da from \"./locales/da\";\r\nimport * as vi from \"./locales/vi\";\r\n\r\nconst localizedTemplates = new Map([\r\n ['ru', ru],\r\n ['tr', tr],\r\n ['de', de],\r\n ['es', es],\r\n ['nl', nl],\r\n ['el', el],\r\n ['fr', fr],\r\n ['sr', sr],\r\n ['pl', pl],\r\n ['uk', uk],\r\n ['zh-HK', zhHK],\r\n ['zh-CN', zhCN],\r\n ['it', it],\r\n ['cs', cs],\r\n ['no', no], // + nb\r\n ['pt', pt],\r\n ['ja', ja],\r\n ['sv', sv],\r\n ['ko', ko],\r\n ['km', km],\r\n ['fa', fa],\r\n ['da', da],\r\n ['vi', vi],\r\n])\r\n\r\nexport const { getLocale, setLocale } = configureLocalization({\r\n sourceLocale,\r\n targetLocales,\r\n // @ts-ignore\r\n loadLocale: async (lang: string) => localizedTemplates.get(lang)\r\n});\r\n\r\nexport const changeLocale = async (lang: string) => {\r\n // Norwegian Bokmål is same as Norwegian\r\n switch (lang.slice(0, 2)) {\r\n case 'nb':\r\n lang = 'no';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // Fallback to simplified Chinese\r\n switch (lang) {\r\n case 'zh':\r\n case 'zh-TW':\r\n lang = 'zh-CN';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n try {\r\n if (localizedTemplates.get(lang))\r\n await setLocale(lang);\r\n else\r\n await setLocale(lang.slice(0, 2));\r\n }\r\n catch {\r\n console.warn(`pwa-install: translation error - unsupported locale: ${lang}`);\r\n }\r\n};\r\n\r\nexport const isRTL = () => {\r\n let locale = getLocale();\r\n return ['ar', 'he', 'fa', 'ur'].includes(getLocale());\r\n}\r\n","import { ImageResource } from 'web-app-manifest';\r\n\r\nexport interface IRelatedApp {\r\n id: string,\r\n platform: string,\r\n url: string\r\n}\r\n\r\nexport interface IWindow extends Window {\r\n defferedPromptEvent: BeforeInstallPromptEvent | null;\r\n BeforeInstallPromptEvent: BeforeInstallPromptEvent;\r\n}\r\n\r\ntype Booleanish = 'true' | 'false';\r\n\r\nexport interface PWAInstallAttributes {\r\n ['manual-apple']?: Booleanish;\r\n ['manual-chrome']?: Booleanish;\r\n ['disable-chrome']?: Booleanish;\r\n ['install-description']?: string;\r\n ['disable-install-description']?: Booleanish;\r\n ['manifest-url']?: string;\r\n name?: string;\r\n description?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ManifestScreenshot extends ImageResource {\r\n label?: string;\r\n platform?: string;\r\n form_factor?: \"wide\" | \"narrow\";\r\n}\r\n\r\nexport class Manifest {\r\n constructor() {\r\n this.icons = [{ src: '' }];\r\n this.screenshots = undefined;\r\n this.short_name = 'PWA';\r\n this.name = 'Progressive web application';\r\n this.description = 'Progressive web application';\r\n }\r\n short_name: string;\r\n icons: ImageResource[];\r\n screenshots?: ManifestScreenshot[];\r\n name: string;\r\n description: string;\r\n}\r\n","import {css} from 'lit'; export default css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-inline-start:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-inline-end:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px;margin:0 auto}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-inline-start:7px}.gallery.apple_mobile .btn.prev svg{margin-inline-start:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`;\n ","import { WebAppManifest } from 'web-app-manifest';\r\nimport { IRelatedApp, Manifest } from './types/types';\r\n\r\nconst _eventDispatcher = (_element: Element, name: string, message: string) => {\r\n const event = new CustomEvent(name, {\r\n detail: {\r\n message\r\n }\r\n });\r\n _element.dispatchEvent(event);\r\n}\r\nexport default class Utils {\r\n static isAppleMobile(): boolean {\r\n\t\tif (\r\n (\r\n ['iPhone', 'iPad', 'iPod'].includes(navigator.platform) ||\r\n (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2)\r\n )\r\n && ('serviceWorker' in navigator)\r\n )\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static isAppleDesktop(): boolean {\r\n // check if it's a mac\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n if (navigator.maxTouchPoints || !userAgent.match(/macintosh/))\r\n return false;\r\n // check safari version >= 17\r\n const version = /version\\/(\\d{2})\\./.exec(userAgent)\r\n if (!version || !version[1] || !(parseInt(version[1]) >= 17))\r\n return false;\r\n // hacky way to detect Sonoma\r\n const audioCheck = document.createElement('audio').canPlayType('audio/wav; codecs=\"1\"') ? true : false;\r\n const webGLCheck = new OffscreenCanvas(1, 1).getContext('webgl') ? true : false;\r\n\r\n return audioCheck && webGLCheck;\r\n }\r\n\r\n static isAndroid(): boolean {\r\n if (navigator.userAgent.toLowerCase().match(/android/))\r\n return true;\r\n return false;\r\n }\r\n\r\n static isAndroidFallback(): boolean {\r\n if (this.isAndroid() && !('BeforeInstallPromptEvent' in window))\r\n return true;\r\n return false;\r\n }\r\n\r\n static deviceFormFactor(): 'narrow' | 'wide' {\r\n return window.matchMedia('(orientation: portrait)').matches? 'narrow' : 'wide';\r\n }\r\n \r\n static isStandalone() {\r\n\t\tif (window.matchMedia('(display-mode: standalone)').matches || ('standalone' in navigator && (navigator as any).standalone === true))\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static async getInstalledRelatedApps(): Promise {\r\n if ('getInstalledRelatedApps' in navigator)\r\n try{\r\n return await (navigator as any).getInstalledRelatedApps().then((relatedApps: IRelatedApp[]) => {\r\n return relatedApps;\r\n });\r\n } catch (e) {}\r\n \r\n return [];\r\n }\r\n \r\n static async isRelatedAppsInstalled(): Promise {\r\n const _relatedApps = await this.getInstalledRelatedApps();\r\n return _relatedApps.length? true : false;\r\n }\r\n\r\n static setStorageFlag(name: string, value:boolean, persistent: boolean = false) {\r\n try {\r\n if (persistent)\r\n localStorage.setItem(name, value.toString());\r\n else\r\n sessionStorage.setItem(name, value.toString());\r\n } catch (e) {}\r\n }\r\n static getStorageFlag(name: string): boolean {\r\n try {\r\n return sessionStorage.getItem(name) === 'true' || localStorage.getItem(name) === 'true';\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n static eventInstalledSuccess(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-success-event', 'App install success (Chromium/Android only)');\r\n }\r\n static eventInstalledFail(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-fail-event', 'App install failed (Chromium/Android only)');\r\n }\r\n static eventUserChoiceResult(_element: Element, message: string) {\r\n _eventDispatcher(_element, 'pwa-user-choice-result-event', message);\r\n }\r\n static eventInstallAvailable(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-available-event', 'App install available');\r\n }\r\n static eventInstallHowTo(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-how-to-event', 'App install instruction showed');\r\n }\r\n static eventGallery(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-gallery-event', 'App install gallery showed');\r\n }\r\n\r\n static normalizeManifestAssetUrls(manifest: WebAppManifest, manifestUrl: string) {\r\n const normalizedManifestUrl = new URL(manifestUrl, document.location.href);\r\n [...manifest.icons || [], ...manifest.screenshots || []].forEach(asset => {\r\n asset.src = new URL(asset.src, normalizedManifestUrl).href;\r\n })\r\n }\r\n\r\n static async fetchAndProcessManifest(manifestUrl: string, icon: string, name: string, description: string): Promise<{_manifest: WebAppManifest, icon: string, name: string, description: string}> {\r\n let _manifest: WebAppManifest = new Manifest();\r\n let _json: WebAppManifest | null = null;\r\n try{\r\n\t\t\tconst _response = await fetch(manifestUrl);\r\n\t\t\t_json = await _response.json() as WebAppManifest;\r\n\t\t\tif (!_response.ok || !_json || !Object.keys(_json))\r\n\t\t\t\tthrow new Error('Manifest not found');\r\n\t\t\tthis.normalizeManifestAssetUrls(_json, manifestUrl);\r\n } \r\n catch(e) {} \r\n\r\n icon = icon || (_json?.icons?.length ? _json?.icons![0].src : _manifest.icons?.[0].src) || '';\r\n name = name || (_json? _json['short_name']: _manifest['short_name']) || '';\r\n description = description || _json?.description || _manifest.description || '';\r\n\t\t_manifest = _json || _manifest;\r\n \r\n return {\r\n _manifest,\r\n icon,\r\n name,\r\n description\r\n }\r\n }\r\n}","import { html } from 'lit';\r\nimport Utils from '../utils';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nconst template = (screenshots: ManifestScreenshot[], theme: string, scrollToNextPage: any, scrollToPrevPage: any) => {\r\n\r\n return html`\r\n ${screenshots? html`\r\n
\r\n
\r\n
\r\n ${screenshots.filter(screenshot => !screenshot.form_factor || screenshot.form_factor === Utils.deviceFormFactor()).map(screenshot => html`${screenshot.label || \"\"}`)}\r\n
\r\n
\r\n \r\n ${theme != 'default'?\r\n html``\r\n :\r\n html``\r\n }\r\n \r\n \r\n ${theme != 'default'?\r\n html`\r\n \r\n `\r\n :\r\n html`\r\n \r\n \r\n \r\n `\r\n }\r\n \r\n
`\r\n : ''}`;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nimport styles from './styles-gallery.scss';\r\nimport template from './template-gallery';\r\n\r\n@customElement('pwa-gallery')\r\nexport default class PWAGalleryElement extends LitElement {\r\n\t@property({ type: Array }) screenshots: ManifestScreenshot[] = [];\r\n\t@property() theme: 'default' | 'apple_desktop' | 'apple_mobile' = 'default';\r\n\t@property({ type: Boolean }) rtl: boolean = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tprivate getScrollElements = () => {\r\n\t\tconst gallery = this.shadowRoot?.querySelector('#paginated_gallery') as HTMLElement | null;\r\n\t\tif (!gallery) return;\r\n\t\t\r\n\t\tconst galleryScroller = gallery.querySelector('.gallery_scroller') as HTMLElement | null;\r\n\t\tif (!galleryScroller) return;\r\n\t\r\n\t\tconst galleryItems = Array.from(galleryScroller.querySelectorAll('img')) as HTMLElement[];\r\n\t\tif (galleryItems.length === 0) return;\r\n\t\r\n\t\treturn {\r\n\t\t\tscroller: galleryScroller,\r\n\t\t\titems: galleryItems\r\n\t\t};\r\n\t};\r\n\t\r\n\tprivate findCurrentItem = (scroller: HTMLElement, items: HTMLElement[]): HTMLElement | null => {\r\n\t\tconst scrollLeft = scroller.scrollLeft * (this.rtl? -1 : 1);\r\n\t \t// Find the item closest to the center of the viewport.\r\n\t\treturn items.find((item) => (item.offsetWidth + item.offsetLeft * (this.rtl? -1 : 1)) >= scrollLeft + (item.offsetWidth / 2.5)) || null;\r\n\t};\r\n\t\r\n\tprivate scrollToPage = (direction: 'next' | 'prev') => {\r\n\t\tconst scrollData = this.getScrollElements();\r\n\t\tif (!scrollData) return;\r\n\t\r\n\t\tconst { scroller, items } = scrollData;\r\n\t\tconst currentItem = this.findCurrentItem(scroller, items);\r\n\t\tif (!currentItem) return;\r\n\t\r\n\t\tconst currentIndex = items.indexOf(currentItem);\r\n\t\tconst offset = (direction === 'next' ? 1 : -1) * (this.rtl? -1 : 1) ;\r\n\t\tconst targetIndex = currentIndex + offset;\r\n\t\t\r\n\t\tif (targetIndex >= 0 && targetIndex < items.length) {\r\n\t\t\titems[targetIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\r\n\t\t}\r\n\t};\r\n\t\r\n\tpublic scrollToNextPage = () => {\r\n\t\tthis.scrollToPage('next');\r\n\t};\r\n\t\r\n\tpublic scrollToPrevPage = () => {\r\n\t\tthis.scrollToPage('prev');\r\n\t};\r\n\r\n\r\n\tprivate _init = () => {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tconst _tools = this.getScrollElements();\r\n\t\tif (_tools)\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\t_tools.scroller.scrollTo({\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t300\r\n\t\t\t)\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\tthis._init();\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(\r\n this.screenshots,\r\n\t\t\tthis.theme,\r\n\t\t\tthis.scrollToNextPage,\r\n\t\t\tthis.scrollToPrevPage\r\n )}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`.dialog-body .icon{display:flex;align-items:flex-start}.dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}.dialog-body .about{display:grid;grid-template-rows:30px auto}.dialog-body .about .hostname,.dialog-body .about .name{padding:0 5px;overflow:hidden}.dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}.dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}.dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:start;word-break:break-all;white-space:nowrap}.dialog-body .about+hr{margin-top:10px}.dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:start}.dialog-body .app-description{font-size:13px;margin-bottom:10px}.dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}.dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}.dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}.dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.dialog-body .install-description{font-size:14px}.dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}.dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}.dialog-body .action-buttons .primary{grid-column-start:2}.dialog-body .material-button{--text-color-primary:#eee;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#eee;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,\"Segoe UI\",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}.dialog-body .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}.dialog-body .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}.dialog-body .material-button.secondary::after,.dialog-body .material-button.secondary::before{background-color:var(--background-color-primary)}.dialog-body .material-button.secondary:active,.dialog-body .material-button.secondary:hover{box-shadow:none}.dialog-body .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-inline-end:0;margin-inline-start:auto;padding:0;border-radius:50%}.dialog-body .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}.dialog-body .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}.dialog-body .material-button.secondary.close::before{border-radius:50%}.dialog-body .material-button::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}.dialog-body .material-button::after{content:\"\";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}.dialog-body .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.dialog-body .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}.dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}@media(prefers-color-scheme:dark){.dialog-body .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(hover:none)and (pointer:coarse){.dialog-body .description::-webkit-scrollbar{display:none}}`;\n ","import {css} from 'lit'; export default css`:host{grid-template-columns:1fr}:host .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}:host .touch-header:active{cursor:grabbing}:host .touch-header::before{content:\"\";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}:host .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}:host .body-header .install{text-transform:capitalize;height:40px;min-width:50px;padding:0 23px;align-items:center;display:inline-flex;-webkit-tap-highlight-color:transparent;transition:min-width .2s,color .2s,background-color .2s,border-color .2s}:host .body-header .install .button-text,:host .body-header .install svg{margin:0 auto}:host .body-header .install .check-icon{display:none}:host .body-header .about{grid-template-rows:auto auto;grid-gap:6px}:host .body-header .about .name{padding:0;line-height:20px;font-size:16px}:host .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}:host .body-header .icon .icon-image{margin:0;width:45px;height:45px}:host .how-to-body{display:flex;flex-direction:column;gap:15px;max-height:0;overflow:hidden;padding:0 20px;opacity:0}:host .how-to-body .description-step{display:flex;gap:15px;margin-inline-start:2.5px;align-items:center}:host .how-to-body .description-step .svg-wrap{display:flex;align-items:center;width:40px;height:40px;background-color:var(--touch-header-color);border-radius:50%}:host .how-to-body .description-step .svg-wrap svg{fill:var(--text-color-normal);margin:0 auto}:host .how-to-body .description-step .svg-wrap.add-icon svg{padding-right:1px}:host .how-to .description,:host .how-to ::slotted(pwa-gallery){max-height:0;padding-top:0;padding-bottom:0;overflow:hidden;opacity:0}:host .how-to .how-to-body{max-height:600px;padding-top:18px;padding-bottom:18px;opacity:1}:host .how-to .install{min-width:40px;padding:0;background:rgba(0,0,0,0);color:var(--text-color-normal);box-shadow:none;border:1px solid}:host .how-to .install .check-icon{display:inline;fill:var(--text-color-normal)}:host .how-to .install .button-text{display:none}:host .description{padding:15px 20px;margin:0;-webkit-line-clamp:6;max-height:150px;opacity:1}:host ::slotted(pwa-gallery){display:block;max-height:600px;padding-bottom:15px;opacity:1;transition:max-height 1.5s,opacity .8s,padding 1.5s}:host .description,:host .how-to-body{transition:max-height .2s,opacity .15s,padding .2s}:host .material-button{border-radius:20px}`;\n ","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{noChange as t}from\"../lit-html.js\";import{directive as s,Directive as i,PartType as r}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=s(class extends i{constructor(t){if(super(t),t.type!==r.ATTRIBUTE||\"class\"!==t.name||t.strings?.length>2)throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\")}render(t){return\" \"+Object.keys(t).filter((s=>t[s])).join(\" \")+\" \"}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(\" \").split(/\\s/).filter((t=>\"\"!==t))));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)))}return t}});export{e as classMap};\n//# sourceMappingURL=class-map.js.map\n","import { html } from 'lit';\r\nimport { msg } from '@lit/localize';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\n\r\nconst fallbackClass = (isAndroidFallback: boolean = false, howToRequested: boolean = false) => {\r\n return {fallback: isAndroidFallback, 'how-to': howToRequested};\r\n}\r\n\r\nconst template = (name: string, description: string, icon: string, install: any, fallback?: boolean, howToRequested?: boolean) => {\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${location.hostname}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${msg('1) Open your browser menu')}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${msg('2) Tap \"Add to Home screen\"')}
\r\n
\r\n
\r\n ${description ? html `
${description}
`: ''}\r\n \r\n
\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\n\r\nimport stylesCommon from '../styles-common.scss'\r\nimport styles from './styles-bottom-sheet.scss';\r\n\r\n// import TouchDragListener from \"./touch-listener\";\r\n\r\ntype IProps = {\r\n name: string,\r\n description: string,\r\n icon: string\r\n}\r\n\r\nimport template from './template-bottom-sheet';\r\nimport Utils from '../../../utils';\r\n\r\n@customElement('pwa-bottom-sheet')\r\nexport default class PWABottomSheetElement extends LitElement {\r\n\tstatic get styles() {\r\n\t\treturn [stylesCommon, styles];\r\n\t}\r\n\r\n\t@property({type: Object}) props: IProps = {\r\n name: '',\r\n description: '',\r\n icon: ''\r\n };\r\n @property({type: Object}) install = {handleEvent: () => {}};\r\n\t@property() hideDialog = () => {};\r\n\t@property({type: Boolean}) disableClose = false;\r\n\r\n\t@property({type: Boolean}) fallback = false;\r\n\t@property({type: Boolean}) howToRequested = false;\r\n\t@property({type: Object}) toggleHowTo = {handleEvent: () => {}};\r\n\r\n\tprivate _callInstall = () => {\r\n\t\tif (this.fallback) {\r\n\t\t\tthis.toggleHowTo.handleEvent();\r\n\t\t\tsetTimeout(() => this.setupAppearence(true), 210);\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.install.handleEvent();\r\n\t}\r\n\r\n\tprivate _callHide = () => {\r\n\t\tthis.hideDialog();\r\n\t\tthis.setupAppearence();\r\n\t}\r\n\r\n\tprivate bindedElement: {\r\n\t\ttouchElement: HTMLElement,\r\n\t\tlistener: any }| null = null;\r\n\tprivate readonly _saveBodyStyle = document.body.style.overscrollBehaviorY;\r\n\tprivate dragMobileSheet = (element: HTMLElement | null | undefined, touchTargetElement: HTMLElement | undefined, infoElement: HTMLElement | undefined) => {\r\n\t\tif (!element || !touchTargetElement || !infoElement)\r\n\t\t\treturn null;\r\n\r\n\t\tlet dragOffset = 0;\r\n\t\tconst bounceOffset = 35;\r\n\t\t\r\n\t\tconst bottomSize = infoElement.offsetHeight + infoElement.offsetTop;\r\n\r\n\t\tconst getYCoord = (e: MouseEvent | TouchEvent): number => {\r\n\t\t\treturn (e as MouseEvent).clientY || ((e as TouchEvent).changedTouches && (e as TouchEvent).changedTouches.length? (e as TouchEvent).changedTouches[0].clientY : 0);\r\n\t\t}\r\n\r\n\t\tconst dragMouseDown = (e: MouseEvent | TouchEvent) => {\r\n\t\t\twindow.addEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.addEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.addEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.addEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tdragOffset = getYCoord(e) - touchTargetElement.getBoundingClientRect().top;\r\n\r\n\t\t\tdocument.body.style.overscrollBehaviorY = 'none';\r\n\t\t}\r\n\t\tconst dragMouseUp = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tdocument.body.style.overscrollBehaviorY = this._saveBodyStyle;\r\n\r\n\t\t\tif (!this.disableClose && getYCoord(e) >= window.innerHeight - 25) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight + 50, true);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (window.innerHeight - getYCoord(e) > element.clientHeight / 2.5) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - element.clientHeight);\r\n\t\t\t\t\r\n\t\t\t\ttry {\r\n\t\t\t\t\t!this.howToRequested && Utils.eventGallery((this.getRootNode() as ShadowRoot).host);\r\n\t\t\t\t} catch (e) {}\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - bottomSize - bounceOffset);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dragMouseMove = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tconst currentY = getYCoord(e);\r\n\r\n\t\t\tif (this.disableClose && window.innerHeight - currentY < 70) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (currentY <= (window.innerHeight - element.clientHeight + dragOffset)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`none`\r\n\t\t\t)\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"--translateY\",\r\n\t\t\t\t`translateY(${currentY - dragOffset}px)`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst closeDragElement = (e: MouseEvent | TouchEvent, toPoint?: number, hideDialog?: boolean) => {\r\n\t\t\twindow.removeEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.removeEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.removeEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.removeEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tif (window.innerWidth >= 768)\r\n\t\t\t\treturn\r\n\r\n\t\t\tif (!toPoint && getYCoord(e) >= window.innerHeight - bottomSize)\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(calc(100vh - ${bottomSize}px))`\r\n\t\t\t\t);\r\n\t\t\telse\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(${(toPoint || getYCoord(e)) + bounceOffset}px)`\r\n\t\t\t\t);\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s`\r\n\t\t\t);\r\n\r\n\t\t\tif (hideDialog){\r\n\t\t\t\ttouchTargetElement.removeEventListener('mousedown', dragMouseDown);\r\n\t\t\t\ttouchTargetElement.removeEventListener('touchstart', dragMouseDown);\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\tthis._callHide,\r\n\t\t\t\t\t250\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ttouchTargetElement.addEventListener('mousedown', dragMouseDown);\r\n\t\ttouchTargetElement.addEventListener('touchstart', dragMouseDown, {passive: false});\r\n\r\n\t\tcloseDragElement(new MouseEvent('mouseup'), window.innerHeight - bottomSize - bounceOffset);\r\n\r\n\t\treturn {\r\n\t\t\ttouchElement: touchTargetElement,\r\n\t\t\tlistener: dragMouseDown\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupAppearence = (fullOpen?: boolean) => {\r\n\t\tif (this.bindedElement) {\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('mousedown', this.bindedElement.listener);\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('touchstart', this.bindedElement.listener);\r\n\t\t}\r\n\t\t\r\n\t\tthis.bindedElement = this.dragMobileSheet(\r\n\t\t\tthis.parentElement,\r\n\t\t\tthis.shadowRoot?.querySelector('.dialog-body .touch-header') as HTMLElement,\r\n\t\t\tthis.shadowRoot?.querySelector(`.dialog-body ${fullOpen? '.how-to-body': '.body-header'}`) as HTMLElement);\r\n\t}\r\n\tprivate _init = () => {\r\n\t\tthis.setupAppearence();\r\n\r\n\t\twindow.addEventListener('resize', () => this.setupAppearence());\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tthis._init();\r\n return;\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(this.props.name, this.props.description, this.props.icon, this._callInstall, this.fallback, this.howToRequested)}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,\"Segoe UI\",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#eee;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}`;\n ","import {css} from 'lit'; export default css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,\"Segoe UI\";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon description\" \"welcome welcome\" \"how-to how-to\" \"gallery gallery\" \"button button\";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-inline-end:7px;margin-top:7px;margin-inline-start:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-inline-end:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-inline-end:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;padding:0;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:start;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;grid-template-columns:unset;gap:unset;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:start}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-inline-end:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:start}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon\" \"description\" \"welcome\" \"how-to\" \"gallery\" \"button\";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-inline-end:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-inline-end:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop pwa-gallery{margin:0 -10px}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;\n ","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\nimport { ManifestScreenshot } from '../../types/types';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, install: any, toggleGallery: any, galleryRequested: boolean, toggleHowTo: any, howToRequested: boolean, isAndroidFallback: boolean, isRTL: boolean = false) => {\r\n const installDialogClasses = () => { return {available: installAvailable, gallery: galleryRequested }};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n ${!disableClose? html`` : ''}\r\n
\r\n
${location.hostname}
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n ${!disableDescription? \r\n html`
${installDescription? installDescription: `${msg('This site has app functionality.')} ${msg('Install it on your device for extensive experience and easy access.')}`}
` \r\n : ''}\r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n ${screenshotsAvailable? html``:''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n ${screenshotsAvailable? html``: ''}\r\n \r\n
\r\n
`;\r\n};\r\nexport default template;\r\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, howToForApple: any, isDesktop: boolean, howToRequested: boolean, toggleGallery: any, galleryRequested: boolean, isRTL: boolean = false) => {\r\n const installDialogClassesApple = () => { return {available: installAvailable, 'how-to': howToRequested, gallery: galleryRequested, desktop: isDesktop}};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, PropertyValues, html } from 'lit';\r\nimport { localized } from '@lit/localize';\r\nimport { property, state, customElement } from 'lit/decorators.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { changeLocale, isRTL } from './localization';\r\n\r\nimport { IRelatedApp, Manifest, IWindow, PWAInstallAttributes } from './types/types';\r\n\r\nimport PWAGalleryElement from './gallery';\r\nimport PWABottomSheetElement from './templates/chrome/bottom-sheet';\r\n\r\nimport Utils from './utils';\r\n\r\ndeclare const window: IWindow;\r\n\r\nimport styles from './templates/chrome/styles.scss';\r\nimport stylesCommon from './templates/chrome/styles-common.scss'\r\nimport stylesApple from './templates/apple/styles-apple.scss';\r\n\r\nimport template from './templates/chrome/template';\r\nimport templateApple from './templates/apple/template-apple';\r\n\r\n/**\r\n * @event {CustomEvent} pwa-install-success-event - App install success (Chromium/Android only)\r\n * @event {CustomEvent} pwa-install-fail-event - App install failed (Chromium/Android only)\r\n * @event {CustomEvent} pwa-user-choice-result-event - dismissed, accepted\r\n * @event {CustomEvent} pwa-install-available-event - App install available\r\n * @event {CustomEvent} pwa-install-how-to-event - App install instruction showed\r\n * @event {CustomEvent} pwa-install-gallery-event - App install gallery showed\r\n */\r\n@localized()\r\n@customElement('pwa-install')\r\nexport class PWAInstallElement extends LitElement {\r\n\t@property({attribute: 'manifest-url'}) manifestUrl = '/manifest.json';\r\n\t@property() icon = '';\r\n\t@property() name = '';\r\n\t@property() description = '';\r\n\t@property({attribute: 'install-description'}) installDescription = '';\r\n\t@property({attribute: 'disable-install-description', type: Boolean}) disableDescription = false;\r\n\t@property({attribute: 'disable-screenshots', type: Boolean}) disableScreenshots = false;\r\n\t@property({attribute: 'disable-screenshots-apple', type: Boolean}) disableScreenshotsApple = false;\r\n\t@property({attribute: 'disable-screenshots-chrome', type: Boolean}) disableScreenshotsChrome = false;\r\n\t@property({attribute: 'manual-apple', type: Boolean}) manualApple = false;\r\n\t@property({attribute: 'manual-chrome', type: Boolean}) manualChrome = false;\r\n\t@property({attribute: 'disable-chrome', type: Boolean}) disableChrome = false;\r\n\t@property({attribute: 'disable-close', type: Boolean}) disableClose = false;\r\n\t@property({attribute: 'disable-android-fallback', type: Boolean}) disableFallback = false;\r\n\t@property({attribute: 'use-local-storage', type: Boolean}) useLocalStorage = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn [ styles, stylesCommon, stylesApple ];\r\n\t}\r\n\r\n\t@state() externalPromptEvent: BeforeInstallPromptEvent | null = null;\r\n\r\n\tpublic platforms: BeforeInstallPromptEvent['platforms'] = [];\r\n\tpublic userChoiceResult = '';\r\n\r\n\tpublic isDialogHidden: boolean = Utils.getStorageFlag('pwa-hide-install');\r\n\tpublic isInstallAvailable = false;\r\n\tpublic isAppleMobilePlatform = false;\r\n\tpublic isAppleDesktopPlatform = false;\r\n\tpublic isAndroidFallback = false;\r\n\tpublic isAndroid = false;\r\n\tpublic isUnderStandaloneMode = false;\r\n\tpublic isRelatedAppsInstalled = false;\r\n\r\n\t/** @internal */\r\n\tprivate _isRTL = false;\r\n\r\n\t/** @internal */\r\n\tprivate _manifest: Manifest = new Manifest();\r\n\t/** @internal */\r\n\tprivate _howToRequested = false;\r\n\t/** @internal */\r\n\tprivate _galleryRequested = false;\r\n\t/** @internal */\r\n\tprivate _install = {\r\n\t\thandleEvent: () => {\r\n\t\t\tif (window.defferedPromptEvent) {\r\n\t\t\t\tthis.hideDialog();\r\n\t\t\t\twindow.defferedPromptEvent.prompt();\r\n\t\t\t\twindow.defferedPromptEvent.userChoice\r\n\t\t\t\t\t.then((choiceResult: PromptResponseObject) => {\r\n\t\t\t\t\t\tthis.userChoiceResult = choiceResult.outcome;\r\n\t\t\t\t\t\tUtils.eventUserChoiceResult(this, this.userChoiceResult);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tUtils.eventInstalledFail(this);\r\n\t\t\t\t\t});\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\tpublic install = () => {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis._howToRequested = true;\r\n\t\t\tthis.requestUpdate();\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._install.handleEvent();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialog = {\r\n\t\thandleEvent: () => {\r\n\t\t\tthis.isDialogHidden = true;\r\n\t\t\tUtils.setStorageFlag('pwa-hide-install', true, this.useLocalStorage);\r\n\t\t\tthis.requestUpdate();\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialogUser = () => {\r\n\t\tUtils.eventUserChoiceResult(this, 'dismissed');\r\n\t\tthis.userChoiceResult = 'dismissed';\r\n\t\tthis.hideDialog();\r\n\t}\r\n\tpublic hideDialog = () => {\r\n\t\tthis._hideDialog.handleEvent();\r\n\t}\r\n\tpublic showDialog = (forced = false) => {\r\n\t\tthis.isDialogHidden = false;\r\n\t\tif (forced)\r\n\t\t\tthis.isInstallAvailable = true;\r\n\t\tUtils.setStorageFlag('pwa-hide-install', false, this.useLocalStorage);\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tpublic getInstalledRelatedApps = async (): Promise => {\r\n\t\treturn await Utils.getInstalledRelatedApps();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _toggleHowTo = {\r\n handleEvent: () => {\r\n\t\t\tthis._howToRequested = !this._howToRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._galleryRequested = false;\r\n\t\t\tthis.requestUpdate();\r\n\r\n\t\t\tif (this._howToRequested) {\r\n\t\t\t\tUtils.eventInstallHowTo(this);\r\n\t\t\t}\t\t\t\t\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate _toggleGallery = {\r\n handleEvent: () => {\r\n\t\t\tthis._galleryRequested = !this._galleryRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._howToRequested = false;\r\n\r\n\t\t\tthis._galleryRequested && Utils.eventGallery(this);\r\n\r\n\t\t\tthis.requestUpdate();\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate async _checkPlatform() {\r\n\t\tthis.isUnderStandaloneMode = Utils.isStandalone();\r\n\t\tthis.isRelatedAppsInstalled = await Utils.isRelatedAppsInstalled();\r\n\t\tthis.isAppleMobilePlatform = Utils.isAppleMobile();\r\n\t\tthis.isAppleDesktopPlatform = Utils.isAppleDesktop();\r\n\t\tthis.isAndroidFallback = Utils.isAndroidFallback();\r\n\t\tthis.isAndroid = Utils.isAndroid();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _checkInstallAvailable() {\r\n\t\tif (this.isUnderStandaloneMode)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis.manualApple && this.hideDialog();\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t},\r\n\t\t\t\t1000\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet _promptTriggered = false;\r\n\t\tif (!this.disableChrome && window.BeforeInstallPromptEvent) {\r\n\t\t\tthis.manualChrome && this.hideDialog();\r\n\t\t\tconst _promptHandler = (e: BeforeInstallPromptEvent) => {\r\n\t\t\t\twindow.defferedPromptEvent = e;\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.platforms = e.platforms;\r\n\r\n\t\t\t\tif (this.isRelatedAppsInstalled) {\r\n\t\t\t\t\tthis.isInstallAvailable = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userChoiceResult === 'accepted'){\r\n\t\t\t\t\tthis.isDialogHidden = true;\r\n\t\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t_promptTriggered = true;\r\n\t\t\t\tthis.isAndroidFallback = false;\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t\tif (this.externalPromptEvent != null)\r\n\t\t\t\tsetTimeout(() => _promptHandler(this.externalPromptEvent!), 300);\r\n\t\t\telse\r\n\t\t\t\twindow.addEventListener('beforeinstallprompt', _promptHandler);\r\n\t\t}\r\n\t\t\r\n\t\tif (!this.disableFallback && this.isAndroid && !_promptTriggered) {\r\n\t\t\t// browsers without BeforeInstallPromptEvent\r\n\t\t\tif (this.isAndroidFallback) {\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t1000\r\n\t\t\t\t);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t// trying to fix browsers like Opera with BeforeInstallPromptEvent not working\r\n\t\t\tif ('userActivation' in navigator && !this.isRelatedAppsInstalled) {\r\n\t\t\t\tconst _activation = navigator.userActivation;\r\n\t\t\t\tconst _activationHandler = setInterval(() => {\r\n\t\t\t\t\tif (_activation.isActive || _activation.hasBeenActive) {\r\n\t\t\t\t\t\tif (!_promptTriggered) {\r\n\t\t\t\t\t\t\tthis.isAndroidFallback = true;\r\n\t\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\t\tthis.requestUpdate();\r\n\t\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tclearInterval(_activationHandler);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 1000);\r\n\t\t\t\tsetTimeout(() => clearInterval(_activationHandler), 30000);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _init = async () => {\r\n\t\twindow.defferedPromptEvent = null;\r\n\r\n\t\tawait this._checkPlatform();\r\n\t\tthis._checkInstallAvailable();\r\n\r\n\t\tif ('onappinstalled' in window)\r\n\t\t\twindow.addEventListener('appinstalled', (e) => {\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t\tthis.isInstallAvailable = false;\r\n\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t});\r\n\r\n\t\tObject.assign(this, await Utils.fetchAndProcessManifest(this.manifestUrl, this.icon, this.name, this.description));\r\n\t};\r\n\t/** @internal */\r\n\tprivate _requestUpdate = () => {\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tasync connectedCallback() {\r\n\t\tawait changeLocale(navigator.language);\r\n\t\tthis._isRTL = isRTL();\r\n\t\tthis._init();\r\n\t\tPWAGalleryElement.finalized;\r\n\t\tPWABottomSheetElement.finalized;\r\n\t\tsuper.connectedCallback();\r\n\t}\r\n\twillUpdate(changedProperties: PropertyValues) {\r\n\t\tif (this.externalPromptEvent && changedProperties.has('externalPromptEvent') && typeof this.externalPromptEvent == 'object') {\r\n\t\t this._init();\r\n\t\t}\r\n\t}\r\n\r\n\t// firstUpdated() {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\trender() {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform)\r\n\t\t\treturn html`${templateApple(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsApple,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._toggleHowTo,\r\n\t\t\t\tthis.isAppleDesktopPlatform,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested,\r\n\t\t\t\tthis._isRTL\r\n\t\t\t)}`;\r\n\t\telse\r\n\t\t\treturn html`${template(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsChrome,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._install,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested,\r\n\t\t\t\tthis._toggleHowTo,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis.isAndroidFallback,\r\n\t\t\t\tthis._isRTL\r\n\t\t\t)}`;\r\n\t}\r\n}\r\n\r\nexport { PWAInstallAttributes };\r\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { updateWhenLocaleChanges } from './localized-controller.js';\n/**\n * Class decorator to enable re-rendering the given LitElement whenever a new\n * active locale has loaded.\n *\n * See also {@link updateWhenLocaleChanges} for the same functionality without\n * the use of decorators.\n *\n * When using lit-localize in transform mode, applications of this decorator are\n * removed.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {customElement} from 'lit/decorators.js';\n * import {msg, localized} from '@lit/localize';\n *\n * @localized()\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nexport const localized = () => (clazz, _context) => {\n clazz.addInitializer(updateWhenLocaleChanges);\n return clazz;\n};\n//# sourceMappingURL=localized-decorator.js.map"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","t","globalThis","e","ShadowRoot","ShadyCSS","nativeShadow","Document","CSSStyleSheet","s","WeakMap","n","constructor","this","_$cssResult$","Error","cssText","styleSheet","length","replaceSync","set","toString","i","reduce","S","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","c","cssRules","r","is","getOwnPropertyDescriptor","getOwnPropertyNames","h","getOwnPropertySymbols","getPrototypeOf","a","trustedTypes","l","emptyScript","p","reactiveElementPolyfillSupport","d","u","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","f","y","attribute","type","String","converter","reflect","hasChanged","metadata","litPropertyMetadata","b","HTMLElement","addInitializer","_$Ei","push","observedAttributes","finalize","_$Eh","keys","createProperty","state","elementProperties","noAccessor","getPropertyDescriptor","requestUpdate","configurable","getPropertyOptions","Map","finalized","properties","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$EC","removeAttribute","P","_$ET","has","_$Ej","reject","scheduleUpdate","performUpdate","wrapped","shouldUpdate","willUpdate","hostUpdate","update","_$EU","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","ReactiveElement","reactiveElementVersions","createPolicy","createHTML","Math","random","toFixed","slice","createComment","iterator","v","_","m","RegExp","g","$","_$litType$","strings","values","x","T","for","E","A","C","createTreeWalker","V","lastIndex","exec","test","startsWith","N","parts","el","currentNode","content","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","getAttribute","split","index","name","ctor","H","I","L","k","tagName","append","data","indexOf","innerHTML","_$Co","_$Cl","_$litDirective$","_$AO","_$AT","_$AS","M","_$AV","_$AN","_$AD","_$AM","parentNode","_$AU","creationScope","importNode","R","nextSibling","z","_$AI","_$Cv","_$AH","_$AA","_$AB","options","startNode","endNode","_$AR","O","insertBefore","createTextNode","_$AC","_$AP","remove","setConnected","element","fill","j","arguments","toggleAttribute","capture","once","passive","removeEventListener","addEventListener","handleEvent","host","litHtmlPolyfillSupport","litHtmlVersions","renderOptions","_$Do","renderBefore","render","_$litPart$","_$litElement$","litElementHydrateSupport","LitElement","litElementPolyfillSupport","litElementVersions","joinStringsAndValues","valueOrder","concat","defaultMsg","template","isStrTagged","val","msg","installed","LOCALE_STATUS_EVENT","LocalizeController","__litLocalizeEventHandler","event","detail","status","window","updateWhenLocaleChanges","Deferred","settled","promise","resolve","_resolve","_reject","error","hl","generateMsgId","isHtmlTagged","str","t0","v0","t1","v1","t2","v2","t3","v3","charCodeAt","fnv1a64","join","expressionOrders","hashCache","runtimeMsg","templates","id","undefined","generateId","localized","order","dispatchStatusEvent","dispatchEvent","CustomEvent","loadingLocale","sourceLocale","validLocales","loadLocale","activeLocale","loading","requestId","getLocale","setLocale","newLocale","thisRequestId","then","mod","readyLocale","err","errorLocale","errorMessage","customElements","define","kind","init","targetLocales","localizedTemplates","config","async","lang","impl","_installMsgImplementation","Manifest","icons","src","screenshots","short_name","description","_eventDispatcher","_element","message","Utils","isAppleMobile","includes","navigator","platform","userAgent","match","maxTouchPoints","isAppleDesktop","version","parseInt","audioCheck","canPlayType","webGLCheck","OffscreenCanvas","getContext","isAndroid","isAndroidFallback","deviceFormFactor","matchMedia","matches","isStandalone","standalone","getInstalledRelatedApps","relatedApps","isRelatedAppsInstalled","setStorageFlag","persistent","localStorage","setItem","sessionStorage","getStorageFlag","getItem","eventInstalledSuccess","eventInstalledFail","eventUserChoiceResult","eventInstallAvailable","eventInstallHowTo","eventGallery","normalizeManifestAssetUrls","manifest","manifestUrl","normalizedManifestUrl","URL","location","href","asset","fetchAndProcessManifest","icon","_manifest","_json","_response","fetch","json","ok","theme","scrollToNextPage","scrollToPrevPage","PWAGalleryElement","rtl","getScrollElements","gallery","querySelector","galleryScroller","galleryItems","from","querySelectorAll","scroller","items","findCurrentItem","scrollLeft","find","item","offsetWidth","offsetLeft","scrollToPage","direction","scrollData","currentItem","targetIndex","scrollIntoView","behavior","block","inline","_init","_tools","setTimeout","scrollTo","top","left","_$Ct","_$Ci","filter","st","nt","classList","install","fallback","howToRequested","PWABottomSheetElement","props","hideDialog","disableClose","toggleHowTo","_callInstall","setupAppearence","_callHide","bindedElement","_saveBodyStyle","body","style","overscrollBehaviorY","dragMobileSheet","touchTargetElement","infoElement","dragOffset","bottomSize","offsetHeight","offsetTop","getYCoord","clientY","changedTouches","dragMouseDown","dragMouseUp","dragMouseMove","preventDefault","getBoundingClientRect","innerHeight","closeDragElement","clientHeight","getRootNode","currentY","setProperty","toPoint","innerWidth","MouseEvent","touchElement","listener","fullOpen","parentElement","installDescription","disableDescription","disableScreenshots","installAvailable","toggleGallery","galleryRequested","isRTL","installDialogClasses","available","screenshotsAvailable","howToForApple","isDesktop","desktop","PWAInstallElement","disableScreenshotsApple","disableScreenshotsChrome","manualApple","manualChrome","disableChrome","disableFallback","useLocalStorage","externalPromptEvent","platforms","userChoiceResult","isDialogHidden","isInstallAvailable","isAppleMobilePlatform","isAppleDesktopPlatform","isUnderStandaloneMode","_isRTL","_howToRequested","_galleryRequested","_install","defferedPromptEvent","prompt","userChoice","choiceResult","outcome","catch","_hideDialog","_hideDialogUser","showDialog","forced","_toggleHowTo","_toggleGallery","_checkPlatform","_checkInstallAvailable","assign","_requestUpdate","_promptTriggered","BeforeInstallPromptEvent","_promptHandler","_activation","userActivation","_activationHandler","setInterval","isActive","hasBeenActive","clearInterval","changeLocale","language","changedProperties","clazz","_context"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/pwa-install.es.js.map b/dist/pwa-install.es.js.map index 47a5417..312d316 100644 --- a/dist/pwa-install.es.js.map +++ b/dist/pwa-install.es.js.map @@ -1 +1 @@ -{"version":3,"file":"pwa-install.es.js","mappings":"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","sources":["webpack://@khmyznikov/pwa-install/webpack/bootstrap","webpack://@khmyznikov/pwa-install/webpack/runtime/define property getters","webpack://@khmyznikov/pwa-install/webpack/runtime/hasOwnProperty shorthand","webpack://@khmyznikov/pwa-install/webpack/runtime/make namespace object","webpack://@khmyznikov/pwa-install/external module \"lit\"","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/str-tag.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/default-msg.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/init/install.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/locale-status-event.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/localized-controller.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/deferred.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/fnv1a64.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/id-generation.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/runtime-msg.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/init/runtime.js","webpack://@khmyznikov/pwa-install/external module \"lit/decorators.js\"","webpack://@khmyznikov/pwa-install/./src/localization/locale-codes.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ru.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/tr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/de.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/es.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/nl.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/el.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/fr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/sr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/pl.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/uk.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/zh-HK.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/zh-CN.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/it.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/cs.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/no.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/pt.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ja.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/sv.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ko.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/km.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/fa.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/da.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/vi.ts","webpack://@khmyznikov/pwa-install/./src/localization/index.ts","webpack://@khmyznikov/pwa-install/./src/types/types.ts","webpack://@khmyznikov/pwa-install/./src/gallery/styles-gallery.scss","webpack://@khmyznikov/pwa-install/./src/utils.ts","webpack://@khmyznikov/pwa-install/./src/gallery/template-gallery.ts","webpack://@khmyznikov/pwa-install/./src/gallery/index.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/styles-common.scss","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/styles-bottom-sheet.scss","webpack://@khmyznikov/pwa-install/external module \"lit/directives/class-map.js\"","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/template-bottom-sheet.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/index.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/styles.scss","webpack://@khmyznikov/pwa-install/./src/templates/apple/styles-apple.scss","webpack://@khmyznikov/pwa-install/./src/templates/chrome/template.ts","webpack://@khmyznikov/pwa-install/./src/templates/apple/template-apple.ts","webpack://@khmyznikov/pwa-install/./src/index.ts","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/localized-decorator.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"LitElement\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.LitElement), [\"css\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.css), [\"html\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.html) });","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Tag that allows expressions to be used in localized non-HTML template\n * strings.\n *\n * Example: msg(str`Hello ${this.user}!`);\n *\n * The Lit html tag can also be used for this purpose, but HTML will need to be\n * escaped, and there is a small overhead for HTML parsing.\n *\n * Untagged template strings with expressions aren't supported by lit-localize\n * because they don't allow for values to be captured at runtime.\n */\nconst _str = (strings, ...values) => ({\n strTag: true,\n strings,\n values,\n});\nexport const str = _str;\nexport const isStrTagged = (val) => typeof val !== 'string' && 'strTag' in val;\n/**\n * Render the result of a `str` tagged template to a string. Note we don't need\n * to do this for Lit templates, since Lit itself handles rendering.\n */\nexport const joinStringsAndValues = (strings, values, valueOrder) => {\n let concat = strings[0];\n for (let i = 1; i < strings.length; i++) {\n concat += values[valueOrder ? valueOrder[i - 1] : i - 1];\n concat += strings[i];\n }\n return concat;\n};\n//# sourceMappingURL=str-tag.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { isStrTagged, joinStringsAndValues } from './str-tag.js';\n/**\n * Default identity msg implementation. Simply returns the input template with\n * no awareness of translations. If the template is str-tagged, returns it in\n * string form.\n */\nexport const defaultMsg = ((template) => isStrTagged(template)\n ? joinStringsAndValues(template.strings, template.values)\n : template);\n//# sourceMappingURL=default-msg.js.map","import { defaultMsg } from '../internal/default-msg.js';\n/**\n * Make a string or lit-html template localizable.\n *\n * @param template A string, a lit-html template, or a function that returns\n * either a string or lit-html template.\n * @param options Optional configuration object with the following properties:\n * - id: Optional project-wide unique identifier for this template. If\n * omitted, an id will be automatically generated from the template strings.\n * - desc: Optional description\n */\nexport let msg = defaultMsg;\nlet installed = false;\n/**\n * Internal only. Do not use this function.\n *\n * Installs an implementation of the msg function to replace the default\n * identity function. Throws if called more than once.\n *\n * @internal\n */\nexport function _installMsgImplementation(impl) {\n if (installed) {\n throw new Error('lit-localize can only be configured once');\n }\n msg = impl;\n installed = true;\n}\n//# sourceMappingURL=install.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Name of the event dispatched to `window` whenever a locale change starts,\n * finishes successfully, or fails. Only relevant to runtime mode.\n *\n * The `detail` of this event is an object with a `status` string that can be:\n * \"loading\", \"ready\", or \"error\", along with the relevant locale code, and\n * error message if applicable.\n *\n * You can listen for this event to know when your application should be\n * re-rendered following a locale change. See also the Localized mixin, which\n * automatically re-renders LitElement classes using this event.\n */\nexport const LOCALE_STATUS_EVENT = 'lit-localize-status';\n//# sourceMappingURL=locale-status-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { LOCALE_STATUS_EVENT } from './locale-status-event.js';\nclass LocalizeController {\n constructor(host) {\n this.__litLocalizeEventHandler = (event) => {\n if (event.detail.status === 'ready') {\n this.host.requestUpdate();\n }\n };\n this.host = host;\n }\n hostConnected() {\n window.addEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n hostDisconnected() {\n window.removeEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n}\n/**\n * Re-render the given LitElement whenever a new active locale has loaded.\n *\n * See also {@link localized} for the same functionality as a decorator.\n *\n * When using lit-localize in transform mode, calls to this function are\n * replaced with undefined.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {msg, updateWhenLocaleChanges} from '@lit/localize';\n *\n * class MyElement extends LitElement {\n * constructor() {\n * super();\n * updateWhenLocaleChanges(this);\n * }\n *\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nconst _updateWhenLocaleChanges = (host) => host.addController(new LocalizeController(host));\nexport const updateWhenLocaleChanges = _updateWhenLocaleChanges;\n//# sourceMappingURL=localized-controller.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport class Deferred {\n constructor() {\n this.settled = false;\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n resolve(value) {\n this.settled = true;\n this._resolve(value);\n }\n reject(error) {\n this.settled = true;\n this._reject(error);\n }\n}\n//# sourceMappingURL=deferred.js.map","/**\n * @license\n * Copyright 2014 Travis Webb\n * SPDX-License-Identifier: MIT\n */\n// This module is derived from the file:\n// https://github.com/tjwebb/fnv-plus/blob/1e2ce68a07cb7dd4c3c85364f3d8d96c95919474/index.js#L309\n//\n// Changes:\n// - Only the _hash64_1a_fast function is included.\n// - Removed loop unrolling.\n// - Converted to TypeScript ES module.\n// - var -> let/const\n//\n// TODO(aomarks) Upstream improvements to https://github.com/tjwebb/fnv-plus/.\nconst hl = [];\nfor (let i = 0; i < 256; i++) {\n hl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n}\n/**\n * Perform a FNV-1A 64-bit hash of the given string (as UTF-16 code units), and\n * return a hexadecimal digest (left zero padded to 16 characters).\n *\n * @see {@link http://tools.ietf.org/html/draft-eastlake-fnv-06}\n */\nexport function fnv1a64(str) {\n let t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n for (let i = 0; i < str.length; i++) {\n v0 ^= str.charCodeAt(i);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = (t3 + (t2 >>> 16)) & 65535;\n v2 = t2 & 65535;\n }\n return (hl[v3 >> 8] +\n hl[v3 & 255] +\n hl[v2 >> 8] +\n hl[v2 & 255] +\n hl[v1 >> 8] +\n hl[v1 & 255] +\n hl[v0 >> 8] +\n hl[v0 & 255]);\n}\n//# sourceMappingURL=fnv1a64.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { fnv1a64 } from './fnv1a64.js';\n/**\n * Delimiter used between each template string component before hashing. Used to\n * prevent e.g. \"foobar\" and \"foo${baz}bar\" from sharing a hash.\n *\n * This is the \"record separator\" ASCII character.\n */\nexport const HASH_DELIMITER = '\\x1e';\n/**\n * Id prefix on html-tagged templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst HTML_PREFIX = 'h';\n/**\n * Id prefix on plain string templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst STRING_PREFIX = 's';\n/**\n * Generate a unique ID for a lit-localize message.\n *\n * Example:\n * Template: html`Hello ${who}!`\n * Params: [\"Hello \", \"!\"], true\n * Output: h82ccc38d4d46eaa9\n *\n * The ID is constructed as:\n *\n * [0] Kind of template: [h]tml or [s]tring.\n * [1,16] 64-bit FNV-1a hash hex digest of the template strings, as UTF-16\n * code points, delineated by an ASCII \"record separator\" character.\n *\n * We choose FNV-1a because:\n *\n * 1. It's pretty fast (e.g. much faster than SHA-1).\n * 2. It's pretty small (0.25 KiB minified + brotli).\n * 3. We don't require cryptographic security, and 64 bits should give\n * sufficient collision resistance for any one application. Worst\n * case, we will always detect collisions during analysis.\n * 4. We can't use Web Crypto API (e.g. SHA-1), because it's asynchronous.\n * 5. It's a well known non-cryptographic hash with implementations in many\n * languages.\n * 6. There was an existing JavaScript implementation that doesn't require\n * BigInt, for IE11 compatibility.\n */\nexport function generateMsgId(strings, isHtmlTagged) {\n return ((isHtmlTagged ? HTML_PREFIX : STRING_PREFIX) +\n fnv1a64(typeof strings === 'string' ? strings : strings.join(HASH_DELIMITER)));\n}\n//# sourceMappingURL=id-generation.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { defaultMsg } from './default-msg.js';\nimport { joinStringsAndValues } from './str-tag.js';\nimport { generateMsgId } from './id-generation.js';\nconst expressionOrders = new WeakMap();\nconst hashCache = new Map();\nexport function runtimeMsg(templates, template, options) {\n if (templates) {\n const id = options?.id ?? generateId(template);\n const localized = templates[id];\n if (localized) {\n if (typeof localized === 'string') {\n // E.g. \"Hello World!\"\n return localized;\n }\n else if ('strTag' in localized) {\n // E.g. str`Hello ${name}!`\n //\n // Localized templates have ${number} in place of real template\n // expressions. They can't have real template values, because the\n // variable scope would be wrong. The number tells us the index of the\n // source value to substitute in its place, because expressions can be\n // moved to a different position during translation.\n return joinStringsAndValues(localized.strings, \n // Cast `template` because its type wasn't automatically narrowed (but\n // we know it must be the same type as `localized`).\n template.values, localized.values);\n }\n else {\n // E.g. html`Hello ${name}!`\n //\n // We have to keep our own mapping of expression ordering because we do\n // an in-place update of `values`, and otherwise we'd lose ordering for\n // subsequent renders.\n let order = expressionOrders.get(localized);\n if (order === undefined) {\n order = localized.values;\n expressionOrders.set(localized, order);\n }\n return {\n ...localized,\n values: order.map((i) => template.values[i]),\n };\n }\n }\n }\n return defaultMsg(template);\n}\nfunction generateId(template) {\n const strings = typeof template === 'string' ? template : template.strings;\n let id = hashCache.get(strings);\n if (id === undefined) {\n id = generateMsgId(strings, typeof template !== 'string' && !('strTag' in template));\n hashCache.set(strings, id);\n }\n return id;\n}\n//# sourceMappingURL=runtime-msg.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { Deferred } from '../internal/deferred.js';\nimport { LOCALE_STATUS_EVENT } from '../internal/locale-status-event.js';\nimport { runtimeMsg } from '../internal/runtime-msg.js';\nimport { _installMsgImplementation } from './install.js';\n/**\n * Dispatch a \"lit-localize-status\" event to `window` with the given detail.\n */\nfunction dispatchStatusEvent(detail) {\n window.dispatchEvent(new CustomEvent(LOCALE_STATUS_EVENT, { detail }));\n}\nlet activeLocale = '';\nlet loadingLocale;\nlet sourceLocale;\nlet validLocales;\nlet loadLocale;\nlet templates;\nlet loading = new Deferred();\n// The loading promise must be initially resolved, because that's what we should\n// return if the user immediately calls setLocale(sourceLocale).\nloading.resolve();\nlet requestId = 0;\n/**\n * Set configuration parameters for lit-localize when in runtime mode. Returns\n * an object with functions:\n *\n * - `getLocale`: Return the active locale code.\n * - `setLocale`: Set the active locale code.\n *\n * Throws if called more than once.\n */\nexport const configureLocalization = (config) => {\n _installMsgImplementation(((template, options) => runtimeMsg(templates, template, options)));\n activeLocale = sourceLocale = config.sourceLocale;\n validLocales = new Set(config.targetLocales);\n validLocales.add(config.sourceLocale);\n loadLocale = config.loadLocale;\n return { getLocale, setLocale };\n};\n/**\n * Return the active locale code.\n */\nconst getLocale = () => {\n return activeLocale;\n};\n/**\n * Set the active locale code, and begin loading templates for that locale using\n * the `loadLocale` function that was passed to `configureLocalization`. Returns\n * a promise that resolves when the next locale is ready to be rendered.\n *\n * Note that if a second call to `setLocale` is made while the first requested\n * locale is still loading, then the second call takes precedence, and the\n * promise returned from the first call will resolve when second locale is\n * ready. If you need to know whether a particular locale was loaded, check\n * `getLocale` after the promise resolves.\n *\n * Throws if the given locale is not contained by the configured `sourceLocale`\n * or `targetLocales`.\n */\nconst setLocale = (newLocale) => {\n if (newLocale === (loadingLocale ?? activeLocale)) {\n return loading.promise;\n }\n if (!validLocales || !loadLocale) {\n throw new Error('Internal error');\n }\n if (!validLocales.has(newLocale)) {\n throw new Error('Invalid locale code');\n }\n requestId++;\n const thisRequestId = requestId;\n loadingLocale = newLocale;\n if (loading.settled) {\n loading = new Deferred();\n }\n dispatchStatusEvent({ status: 'loading', loadingLocale: newLocale });\n const localePromise = newLocale === sourceLocale\n ? // We could switch to the source locale synchronously, but we prefer to\n // queue it on a microtask so that switching locales is consistently\n // asynchronous.\n Promise.resolve({ templates: undefined })\n : loadLocale(newLocale);\n localePromise.then((mod) => {\n if (requestId === thisRequestId) {\n activeLocale = newLocale;\n loadingLocale = undefined;\n templates = mod.templates;\n dispatchStatusEvent({ status: 'ready', readyLocale: newLocale });\n loading.resolve();\n }\n // Else another locale was requested in the meantime. Don't resolve or\n // reject, because the newer load call is going to use the same promise.\n // Note the user can call getLocale() after the promise resolves if they\n // need to check if the locale is still the one they expected to load.\n }, (err) => {\n if (requestId === thisRequestId) {\n dispatchStatusEvent({\n status: 'error',\n errorLocale: newLocale,\n errorMessage: err.toString(),\n });\n loading.reject(err);\n }\n });\n return loading.promise;\n};\n//# sourceMappingURL=runtime.js.map","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"customElement\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.customElement), [\"property\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.property), [\"state\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.state) });","// Do not modify this file by hand!\n// Re-generate this file by running lit-localize.\n\n/**\n * The locale code that templates in this source code are written in.\n */\nexport const sourceLocale = `en`;\n\n/**\n * The other locale codes that this application is localized into. Sorted\n * lexicographically.\n */\nexport const targetLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `es`,\n `fa`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `vi`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n\n/**\n * All valid project locale codes. Sorted lexicographically.\n */\nexport const allLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `en`,\n `es`,\n `fa`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `vi`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Откройте меню вашего браузера`,\n's182ab2d6c997515f': `Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.`,\n's1b9047d53d9f9d22': `2) Нажать \"Поделиться\"`,\n's2d90afa5dcca2c0e': `3) Прокрутите вниз до \"Добавить на главный экран\"`,\n's37a9e8aec5713460': `Подробнее`,\n's4593f304dac8848c': `2) Нажмите \"Добавить на главный экран\"`,\n's54cfbb14f46396d4': `1) Откройте в вашем основном браузере`,\n's6196153c4b0c1ea0': `Установить`,\n's922329d6f6213590': `Добавить в Dock`,\n'sa5ef80b4bb9b39f8': `Свернуть`,\n'sa7551383d1897fcc': `2) Нажмите \"Добавить в Dock\"`,\n'sba52286c21552a4e': `Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.`,\n'sc79fd7641eb9a975': `Спрятать Инструкцию`,\n'scdaf4bbff76674c8': `На экран «Домой»`,\n'se740f75b95a51807': `Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.`,\n'sfea652f6580ff086': `Этот веб-сайт имеет функционал приложения.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Tarayıcı menünüzü açın`,\n's182ab2d6c997515f': `Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.`,\n's1b9047d53d9f9d22': `2) Gezinme çubuğunda Paylaş'a basın`,\n's2d90afa5dcca2c0e': `3) \"Ana Ekrana Ekle\" seçeneğine kadar aşağı kaydırın`,\n's37a9e8aec5713460': `Daha Fazla`,\n's4593f304dac8848c': `2) \"Ana Ekrana Ekle\"ye dokunun`,\n's54cfbb14f46396d4': `1) Ana tarayıcınızda açın`,\n's6196153c4b0c1ea0': `Yükle`,\n's922329d6f6213590': `Dock’a Ekle`,\n'sa5ef80b4bb9b39f8': `Küçült`,\n'sa7551383d1897fcc': `2) Dock’a ekleye basın`,\n'sba52286c21552a4e': `Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.`,\n'sc79fd7641eb9a975': `Talimatları gizle`,\n'scdaf4bbff76674c8': `Ana Ekrana Ekle`,\n'se740f75b95a51807': `Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.`,\n'sfea652f6580ff086': `Bu site uygulama işlevselliğine sahiptir.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Öffnen Sie das Menü Ihres Browsers`,\n's182ab2d6c997515f': `Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n's1b9047d53d9f9d22': `2) Drücken Sie auf Teilen in der Navigationsleiste`,\n's2d90afa5dcca2c0e': `3) Scrollen Sie nach unten zu \"Zum Startbildschirm hinzufügen\"`,\n's37a9e8aec5713460': `Mehr`,\n's4593f304dac8848c': `2) Tippen Sie auf \"Zum Startbildschirm hinzufügen\"`,\n's54cfbb14f46396d4': `1) Öffnen Sie es in Ihrem Hauptbrowser`,\n's6196153c4b0c1ea0': `Installieren`,\n's922329d6f6213590': `Zum Dock hinzufügen`,\n'sa5ef80b4bb9b39f8': `Weniger`,\n'sa7551383d1897fcc': `2) Drücken Sie auf Zum Dock hinzufügen`,\n'sba52286c21552a4e': `Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.`,\n'sc79fd7641eb9a975': `Anleitung ausblenden`,\n'scdaf4bbff76674c8': `Hinzufügen zum Startbildschirm`,\n'se740f75b95a51807': `Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n'sfea652f6580ff086': `Diese Website verfügt über App-Funktionalität.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Abre el menú de tu navegador`,\n's182ab2d6c997515f': `Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.`,\n's1b9047d53d9f9d22': `2) Presionar Compartir en la barra de direcciones`,\n's2d90afa5dcca2c0e': `3) Desplázate hacia abajo hasta \"Añadir a pantalla de inicio\"`,\n's37a9e8aec5713460': `Más`,\n's4593f304dac8848c': `2) Toca \"Añadir a pantalla de inicio\"`,\n's54cfbb14f46396d4': `1) Abre en tu navegador principal`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Añadir al Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Presionar Añadir al Dock`,\n'sba52286c21552a4e': `Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.`,\n'sc79fd7641eb9a975': `Esconder instrucciones`,\n'scdaf4bbff76674c8': `Añadir a pantalla de inicio`,\n'se740f75b95a51807': `Añádelo a tu Dock para una experiencia amplia y acceso fácil.`,\n'sfea652f6580ff086': `Este sitio tiene funcionalidad de aplicación.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Open je browsermenu`,\n's182ab2d6c997515f': `Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.`,\n's1b9047d53d9f9d22': `2) Druk op delen in de navigatiebalk`,\n's2d90afa5dcca2c0e': `3) Scrol naar beneden naar \"Toevoegen aan startscherm\"`,\n's37a9e8aec5713460': `Meer`,\n's4593f304dac8848c': `2) Tik op \"Toevoegen aan startscherm\"`,\n's54cfbb14f46396d4': `1) Open in je hoofdprogramma`,\n's6196153c4b0c1ea0': `Installeren`,\n's922329d6f6213590': `Toevoegen aan Dock`,\n'sa5ef80b4bb9b39f8': `Minder`,\n'sa7551383d1897fcc': `2) Druk op Toevoegen aan Dock`,\n'sba52286c21552a4e': `Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.`,\n'sc79fd7641eb9a975': `Instructie verbergen`,\n'scdaf4bbff76674c8': `Toevoegen aan het startscherm`,\n'se740f75b95a51807': `Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.`,\n'sfea652f6580ff086': `Deze site heeft app-functionaliteit.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Ανοίξτε το μενού του περιηγητή σας`,\n's182ab2d6c997515f': `Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n's1b9047d53d9f9d22': `2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης`,\n's2d90afa5dcca2c0e': `3) Κάντε κύλιση προς τα κάτω στο \"Προσθήκη στην οθόνη Αφετηρίας\"`,\n's37a9e8aec5713460': `Περισσότερα`,\n's4593f304dac8848c': `2) Πατήστε \"Προσθήκη στην οθόνη Αφετηρίας\"`,\n's54cfbb14f46396d4': `1) Ανοίξτε στον κύριο περιηγητή σας`,\n's6196153c4b0c1ea0': `Εγκατάσταση`,\n's922329d6f6213590': `Προσθήκη στην Πρόσβαση`,\n'sa5ef80b4bb9b39f8': `Λιγότερα`,\n'sa7551383d1897fcc': `2) Πατήστε Προσθήκη στην Πρόσβαση`,\n'sba52286c21552a4e': `Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sc79fd7641eb9a975': `Απόκρυψη Οδηγιών`,\n'scdaf4bbff76674c8': `Προσθήκη στην Οθόνη Αφετηρίας`,\n'se740f75b95a51807': `Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sfea652f6580ff086': `Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Ouvrez le menu de votre navigateur`,\n's182ab2d6c997515f': `Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.`,\n's1b9047d53d9f9d22': `2) Appuyez sur Partager dans la barre de navigation`,\n's2d90afa5dcca2c0e': `3) Faites défiler vers le bas jusqu'à \"Ajouter à l'écran d'accueil\"`,\n's37a9e8aec5713460': `Plus`,\n's4593f304dac8848c': `2) Touchez \"Ajouter à l'écran d'accueil\"`,\n's54cfbb14f46396d4': `1) Ouvrir dans votre navigateur principal`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Ajouter au Dock`,\n'sa5ef80b4bb9b39f8': `Moins`,\n'sa7551383d1897fcc': `2) Appuyez sur Ajouter au Dock`,\n'sba52286c21552a4e': `Installez-le sur votre appareil pour une expérience complète et un accès facile.`,\n'sc79fd7641eb9a975': `Masquer les instructions`,\n'scdaf4bbff76674c8': `Ajouter à l'écran d'accueil`,\n'se740f75b95a51807': `Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.`,\n'sfea652f6580ff086': `Ce site possède des fonctionnalités d'application.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Отворите мени вашег прегледача`,\n's182ab2d6c997515f': `Додајте га на Home Screen за широке могућности и лак приступ.`,\n's1b9047d53d9f9d22': `2) Притисните Share у навигационој траци`,\n's2d90afa5dcca2c0e': `3) Померите се надоле до \"Add to Home Screen\"`,\n's37a9e8aec5713460': `Више`,\n's4593f304dac8848c': `2) Додирните \"Add to Home Screen\"`,\n's54cfbb14f46396d4': `1) Отворите у вашем главном прегледачу`,\n's6196153c4b0c1ea0': `Инсталирај`,\n'sa5ef80b4bb9b39f8': `Мање`,\n'sa7551383d1897fcc': `3) Притисните Add to Dock`,\n'sba52286c21552a4e': `Инсталирајте га на вашем уређају за широке могућности и лак приступ.`,\n'sc79fd7641eb9a975': `Сакриј упутство`,\n'se740f75b95a51807': `Додајте га у вашу Dock за широке могућности и лак приступ.`,\n'sfea652f6580ff086': `Овај сајт има функционалност апликације.`,\n's922329d6f6213590': `Add to Dock`,\n'scdaf4bbff76674c8': `Add to Home Screen`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Otwórz menu przeglądarki`,\n's182ab2d6c997515f': `Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n's1b9047d53d9f9d22': `2) Wybierz \"Udostępnij\"`,\n's2d90afa5dcca2c0e': `3) Przewiń w dół do opcji \"Dodaj do Ekranu Głównego\"`,\n's37a9e8aec5713460': `Więcej`,\n's4593f304dac8848c': `2) Naciśnij \"Dodaj do Ekranu Głównego\"`,\n's54cfbb14f46396d4': `1) Otwórz w swojej głównej przeglądarce`,\n's6196153c4b0c1ea0': `Zainstaluj`,\n's922329d6f6213590': `Dodaj do Docka`,\n'sa5ef80b4bb9b39f8': `Mniej`,\n'sa7551383d1897fcc': `2) Wybierz \"Dodaj do Docka\"`,\n'sba52286c21552a4e': `Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sc79fd7641eb9a975': `Ukryj instrukcję`,\n'scdaf4bbff76674c8': `Dodaj do Ekranu Głównego`,\n'se740f75b95a51807': `Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sfea652f6580ff086': `Ta strona posiada funkcje aplikacji.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Відкрити меню браузера`,\n's182ab2d6c997515f': `Додайте на Домашній екран для зручного доступу та ширших можливостей.`,\n's1b9047d53d9f9d22': `2) Натиснути «Поділитися»`,\n's2d90afa5dcca2c0e': `3) Прокрутіть вниз до «На Початковий экран»`,\n's37a9e8aec5713460': `Детальніше`,\n's4593f304dac8848c': `2) Натиснути «На Початковий экран»`,\n's54cfbb14f46396d4': `1) Відкрити у вашому основному браузері`,\n's6196153c4b0c1ea0': `Встановити`,\n's922329d6f6213590': `Додати на Dock`,\n'sa5ef80b4bb9b39f8': `Згорнути`,\n'sa7551383d1897fcc': `2) Натиснути «Додати на Dock»`,\n'sba52286c21552a4e': `Встановіть на ваш пристрій для зручного доступу та ширших можливостей.`,\n'sc79fd7641eb9a975': `Сховати Інструкцію`,\n'scdaf4bbff76674c8': `На Початковий экран`,\n'se740f75b95a51807': `Додайте на панель Dock для зручного доступу та ширших можливостей.`,\n'sfea652f6580ff086': `Цей сайт має функції додатку.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 打開您的瀏覽器菜單`,\n's182ab2d6c997515f': `將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。`,\n's1b9047d53d9f9d22': `2) 點擊列表上的分享按鈕`,\n's2d90afa5dcca2c0e': `3) 向下滾動到「添加到主屏幕」`,\n's37a9e8aec5713460': `詳細資訊`,\n's4593f304dac8848c': `2) 點擊「添加到主屏幕」`,\n's54cfbb14f46396d4': `1) 在您的主要瀏覽器中打開`,\n's6196153c4b0c1ea0': `安裝`,\n's922329d6f6213590': `添加到Dock欄`,\n'sa5ef80b4bb9b39f8': `簡短資訊`,\n'sa7551383d1897fcc': `2) 點選添加到Dock欄`,\n'sba52286c21552a4e': `在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。`,\n'sc79fd7641eb9a975': `隱藏安裝流程`,\n'scdaf4bbff76674c8': `將App加入主畫面`,\n'se740f75b95a51807': `將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。`,\n'sfea652f6580ff086': `此網站具有應用程式功能。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 打开浏览器菜单`,\n's182ab2d6c997515f': `将其添加到主屏幕,以享受更丰富的体验并便于访问。`,\n's1b9047d53d9f9d22': `2) 点击导航栏中的“分享”按钮`,\n's2d90afa5dcca2c0e': `3) 向下滚动至“添加到主屏幕”`,\n's37a9e8aec5713460': `更多`,\n's4593f304dac8848c': `2) 轻触“添加到主屏幕”`,\n's54cfbb14f46396d4': `1) 在您的主浏览器中打开`,\n's6196153c4b0c1ea0': `安装`,\n's922329d6f6213590': `添加到程序坞`,\n'sa5ef80b4bb9b39f8': `收起`,\n'sa7551383d1897fcc': `2) 点击“添加到程序坞”`,\n'sba52286c21552a4e': `在您的设备上安装,以享受更丰富的体验并便于访问。`,\n'sc79fd7641eb9a975': `隐藏安装步骤`,\n'scdaf4bbff76674c8': `添加到主屏幕`,\n'se740f75b95a51807': `将其添加到您的程序坞,以享受更全面的体验并便于访问。`,\n'sfea652f6580ff086': `此网站具备 App 功能特性。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Apri il menu del tuo browser`,\n's182ab2d6c997515f': `Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.`,\n's1b9047d53d9f9d22': `2) Premi Condividi nella barra di navigazione`,\n's2d90afa5dcca2c0e': `3) Scorri verso il basso fino a \"Aggiungi alla schermata principale\"`,\n's37a9e8aec5713460': `Più`,\n's4593f304dac8848c': `2) Tocca \"Aggiungi alla schermata principale\"`,\n's54cfbb14f46396d4': `1) Apri nel tuo browser principale`,\n's6196153c4b0c1ea0': `Installa`,\n's922329d6f6213590': `Aggiungi al Dock`,\n'sa5ef80b4bb9b39f8': `Meno`,\n'sa7551383d1897fcc': `2) Premi Aggiungi al Dock`,\n'sba52286c21552a4e': `Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.`,\n'sc79fd7641eb9a975': `Nascondi istruzioni`,\n'scdaf4bbff76674c8': `Aggiungi alla schermata principale`,\n'se740f75b95a51807': `Aggiungilo al Dock per un'esperienza più completa e un accesso facile.`,\n'sfea652f6580ff086': `Questo sito ha funzionalità di app.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Otevřete nabídku prohlížeče`,\n's182ab2d6c997515f': `Přidejte jej na plochu pro rozšířené využití a snadný přístup.`,\n's1b9047d53d9f9d22': `2) Stiskněte tlačítko Sdílet na navigačním panelu`,\n's2d90afa5dcca2c0e': `3) Projděte dolů k \"Přidat na plochu\"`,\n's37a9e8aec5713460': `Více`,\n's4593f304dac8848c': `2) Klepněte na \"Přidat na plochu\"`,\n's54cfbb14f46396d4': `1) Otevřete v hlavním prohlížeči`,\n's6196153c4b0c1ea0': `Nainstalovat`,\n's922329d6f6213590': `Přidat do Docku`,\n'sa5ef80b4bb9b39f8': `Méně`,\n'sa7551383d1897fcc': `2) Stiskněte Přidat do Docku`,\n'sba52286c21552a4e': `Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.`,\n'sc79fd7641eb9a975': `Skrýt instrukce`,\n'scdaf4bbff76674c8': `Přidat na plochu`,\n'se740f75b95a51807': `Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.`,\n'sfea652f6580ff086': `Tento web má funkce aplikace.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Åpne menyen i nettleseren din`,\n's182ab2d6c997515f': `Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.`,\n's1b9047d53d9f9d22': `2) Trykk på Del-knappen i navigasjonslinjen`,\n's2d90afa5dcca2c0e': `3) Rull ned til «Legg til på Hjem-skjerm»`,\n's37a9e8aec5713460': `Mer`,\n's4593f304dac8848c': `2) Trykk på \"Legg til på Hjem-skjerm\"`,\n's54cfbb14f46396d4': `1) Åpne i hovednettleseren din`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Legg til i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Velg Legg til i Dock`,\n'sba52286c21552a4e': `Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sc79fd7641eb9a975': `Skjul instruksjoner`,\n'scdaf4bbff76674c8': `Legg til på Hjem-skjerm`,\n'se740f75b95a51807': `Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sfea652f6580ff086': `Denne siden har app-funksjonalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Abra o menu do seu navegador`,\n's182ab2d6c997515f': `Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.`,\n's1b9047d53d9f9d22': `2) Pressione Compartilhar na barra de endereço`,\n's2d90afa5dcca2c0e': `3) Role para baixo até \"Adicionar à Tela de Início\"`,\n's37a9e8aec5713460': `Mais`,\n's4593f304dac8848c': `2) Toque em \"Adicionar à Tela de Início\"`,\n's54cfbb14f46396d4': `1) Abra no seu navegador principal`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Adicionar ao Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Pressione Adicionar ao Dock`,\n'sba52286c21552a4e': `Instale no dispositivo para uma melhor experiência e mais fácil acesso.`,\n'sc79fd7641eb9a975': `Ocultar Instruções`,\n'scdaf4bbff76674c8': `Adicionar à Tela de Início`,\n'se740f75b95a51807': `Adicione ao Dock para uma melhor experiência e mais fácil acesso.`,\n'sfea652f6580ff086': `Este site possui funcionalidade de aplicativo.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) ブラウザメニューを開く`,\n's182ab2d6c997515f': `ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。`,\n's1b9047d53d9f9d22': `2) ナビゲーションバーで共有を押す`,\n's2d90afa5dcca2c0e': `3) 「ホーム画面に追加」までスクロールする`,\n's37a9e8aec5713460': `展開`,\n's4593f304dac8848c': `2) 「ホーム画面に追加」をタップする`,\n's54cfbb14f46396d4': `1) メインブラウザで開く`,\n's6196153c4b0c1ea0': `インストール`,\n's922329d6f6213590': `Dockに追加`,\n'sa5ef80b4bb9b39f8': `折りたたむ`,\n'sa7551383d1897fcc': `2) 「Dockに追加」を押す`,\n'sba52286c21552a4e': `デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。`,\n'sc79fd7641eb9a975': `説明を非表示`,\n'scdaf4bbff76674c8': `ホーム画面に追加`,\n'se740f75b95a51807': `ドックに追加して、幅広い体験と簡単なアクセスを実現してください。`,\n'sfea652f6580ff086': `このサイトはアプリ機能があります。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Öppna din webbläsares meny`,\n's182ab2d6c997515f': `Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.`,\n's1b9047d53d9f9d22': `2) Tryck på Dela-knappen i verktygsfältet`,\n's2d90afa5dcca2c0e': `3) Scrolla ner till \"Lägg till på hemskärmen\"`,\n's37a9e8aec5713460': `Mer`,\n's4593f304dac8848c': `2) Tryck på \"Lägg till på hemskärmen\"`,\n's54cfbb14f46396d4': `1) Öppna i din huvudsakliga webbläsare`,\n's6196153c4b0c1ea0': `Installera`,\n's922329d6f6213590': `Lägg till i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Välj Lägg till i Dock`,\n'sba52286c21552a4e': `Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sc79fd7641eb9a975': `Göm instruktioner`,\n'scdaf4bbff76674c8': `Lägg till på hemskärmen`,\n'se740f75b95a51807': `Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sfea652f6580ff086': `Denna webbsajt har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 브라우저 메뉴 열기`,\n's182ab2d6c997515f': `더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.`,\n's1b9047d53d9f9d22': `2) 내비게이션 바에서 공유 버튼 누르기`,\n's2d90afa5dcca2c0e': `3) \"홈 화면에 추가\"로 스크롤하기`,\n's37a9e8aec5713460': `더보기`,\n's4593f304dac8848c': `2) \"홈 화면에 추가\" 탭하기`,\n's54cfbb14f46396d4': `1) 주 브라우저에서 열기`,\n's6196153c4b0c1ea0': `설치`,\n's922329d6f6213590': `Dock에 추가`,\n'sa5ef80b4bb9b39f8': `닫기`,\n'sa7551383d1897fcc': `2) Dock에 추가 버튼 누르기`,\n'sba52286c21552a4e': `더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.`,\n'sc79fd7641eb9a975': `안내 숨기기`,\n'scdaf4bbff76674c8': `홈 화면에 추가`,\n'se740f75b95a51807': `더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.`,\n'sfea652f6580ff086': `이 사이트는 앱 기능을 가지고 있습니다.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) បើកម៉ឺនុយកម្មវិធីរុករករបស់អ្នក`,\n's182ab2d6c997515f': `បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n's1b9047d53d9f9d22': `2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ`,\n's2d90afa5dcca2c0e': `3) អូសចុះទៅកាន់ \"បន្ថែមទៅផ្ទាំងអេក្រង់ដើម\"`,\n's37a9e8aec5713460': `បង្ហាញបន្ថែម`,\n's4593f304dac8848c': `2) ចុចលើ \"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម\"`,\n's54cfbb14f46396d4': `1) បើកនៅក្នុងកម្មវិធីរុករកសំខាន់របស់អ្នក`,\n's6196153c4b0c1ea0': `តំឡើង`,\n's922329d6f6213590': `បន្ថែមទៅកាន់ Dock`,\n'sa5ef80b4bb9b39f8': `បង្ហាញតិច`,\n'sa7551383d1897fcc': `2) ចុចលើ បន្ថែមទៅកាន់ Dock`,\n'sba52286c21552a4e': `តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sc79fd7641eb9a975': `បិទការណែនាំ`,\n'scdaf4bbff76674c8': `បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n'se740f75b95a51807': `បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sfea652f6580ff086': `គេហទំព័រនេះមានមុខងារជាកម្មវិធី។`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `۱) مرورگر خود را باز کنید`,\n's182ab2d6c997515f': `برای تجربه گسترده و دسترسی آسان آن را به صفحه اصلی خود اضافه کنید.`,\n's1b9047d53d9f9d22': `۱)در نوار پایین دکمه (Share) را بزنید`,\n's2d90afa5dcca2c0e': `۳) به پایین اسکرول کنید تا به \"Add to Home Screen\" برسید`,\n's37a9e8aec5713460': `بیشتر`,\n's4593f304dac8848c': `۲) روی \"Add to Home screen\" ضربه بزنید`,\n's54cfbb14f46396d4': `۱) در مرورگر اصلی خود باز کنید`,\n's6196153c4b0c1ea0': `نصب`,\n's922329d6f6213590': `افزودن به (Dock)`,\n'sa5ef80b4bb9b39f8': `کمتر`,\n'sa7551383d1897fcc': `۲) (Add to Dock) را انتخاب کنید `,\n'sba52286c21552a4e': `برای تجربه گسترده و دسترسی آسان آن را بر روی دستگاه خود نصب کنید.`,\n'sc79fd7641eb9a975': ` مخفی کردن مراحل`,\n'scdaf4bbff76674c8': `افزودن به (Home Screen)`,\n'se740f75b95a51807': `برای تجربه گسترده و دسترسی آسان آن را به Dock خود اضافه کنید.`,\n'sfea652f6580ff086': ` این سایت دارای قابلیت اپلیکیشن است. `,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Åbn din browsermenu`,\n's182ab2d6c997515f': `Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.`,\n's1b9047d53d9f9d22': `2) Tryk på Del-knappen i navigationslinjen`,\n's2d90afa5dcca2c0e': `3) Rul ned til \"Tilføj til hjemmeskærm\"`,\n's37a9e8aec5713460': `Mere`,\n's4593f304dac8848c': `2) Tryk på \"Tilføj til hjemmeskærm\"`,\n's54cfbb14f46396d4': `1) Åbn i din primære browser`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Tilføj til Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Vælg Tilføj til Dock`,\n'sba52286c21552a4e': `Installer den på din enhed for en bedre oplevelse og nem adgang.`,\n'sc79fd7641eb9a975': `Skjul instruktion`,\n'scdaf4bbff76674c8': `Tilføj til hjemmeskærm`,\n'se740f75b95a51807': `Tilføj den til din Dock for en bedre oplevelse og nem adgang.`,\n'sfea652f6580ff086': `Denne side har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Mở menu trình duyệt của bạn`,\n's182ab2d6c997515f': `Thêm nó vào màn hình chính của bạn để có trải nghiệm phong phú hơn và truy cập dễ dàng hơn.`,\n's1b9047d53d9f9d22': `2) Nhấp vào nút \"Chia sẻ\" trên thanh điều hướng`,\n's2d90afa5dcca2c0e': `3) Kéo đến mục \"Thêm vào Màn hình chính\"`,\n's37a9e8aec5713460': `Thêm`,\n's4593f304dac8848c': `2) Nhấn vào \"Thêm vào Màn hình chính\"`,\n's54cfbb14f46396d4': `1) Mở trình duyệt chính của bạn`,\n's6196153c4b0c1ea0': `Cài đặt`,\n's922329d6f6213590': `Thêm vào Dock`,\n'sa5ef80b4bb9b39f8': `Thu gọn`,\n'sa7551383d1897fcc': `2) Nhấp vào \"Thêm vào Dock\"`,\n'sba52286c21552a4e': `Cài đặt trên thiết bị của bạn để có trải nghiệm phong phú hơn và truy cập dễ dàng.`,\n'sc79fd7641eb9a975': `Ẩn các bước cài đặt`,\n'scdaf4bbff76674c8': `Thêm vào màn hình chính`,\n'se740f75b95a51807': `Thêm nó vào Dock của bạn để có trải nghiệm toàn diện hơn và truy cập dễ dàng hơn.`,\n'sfea652f6580ff086': `Trang web này có cả chức năng đặc trưng ứng dụng.`,\n };\n ","import { configureLocalization } from '@lit/localize';\r\nimport {\r\n sourceLocale,\r\n targetLocales,\r\n} from './locale-codes';\r\n\r\nimport * as ru from './locales/ru';\r\nimport * as tr from './locales/tr';\r\nimport * as de from \"./locales/de\";\r\nimport * as es from \"./locales/es\";\r\nimport * as nl from \"./locales/nl\";\r\nimport * as el from \"./locales/el\";\r\nimport * as fr from \"./locales/fr\";\r\nimport * as sr from \"./locales/sr\";\r\nimport * as pl from \"./locales/pl\";\r\nimport * as uk from \"./locales/uk\";\r\nimport * as zhHK from \"./locales/zh-HK\";\r\nimport * as zhCN from \"./locales/zh-CN\";\r\nimport * as it from \"./locales/it\";\r\nimport * as cs from \"./locales/cs\";\r\nimport * as no from \"./locales/no\";\r\nimport * as pt from \"./locales/pt\";\r\nimport * as ja from \"./locales/ja\";\r\nimport * as sv from \"./locales/sv\";\r\nimport * as ko from \"./locales/ko\";\r\nimport * as km from \"./locales/km\";\r\nimport * as fa from \"./locales/fa\";\r\nimport * as da from \"./locales/da\";\r\nimport * as vi from \"./locales/vi\";\r\n\r\nconst localizedTemplates = new Map([\r\n ['ru', ru],\r\n ['tr', tr],\r\n ['de', de],\r\n ['es', es],\r\n ['nl', nl],\r\n ['el', el],\r\n ['fr', fr],\r\n ['sr', sr],\r\n ['pl', pl],\r\n ['uk', uk],\r\n ['zh-HK', zhHK],\r\n ['zh-CN', zhCN],\r\n ['it', it],\r\n ['cs', cs],\r\n ['no', no], // + nb\r\n ['pt', pt],\r\n ['ja', ja],\r\n ['sv', sv],\r\n ['ko', ko],\r\n ['km', km],\r\n ['fa', fa],\r\n ['da', da],\r\n ['vi', vi],\r\n])\r\n\r\nexport const { getLocale, setLocale } = configureLocalization({\r\n sourceLocale,\r\n targetLocales,\r\n // @ts-ignore\r\n loadLocale: async (lang: string) => localizedTemplates.get(lang)\r\n});\r\n\r\nexport const changeLocale = async (lang: string) => {\r\n // Norwegian Bokmål is same as Norwegian\r\n switch (lang.slice(0, 2)) {\r\n case 'nb':\r\n lang = 'no';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // Fallback to simplified Chinese\r\n switch (lang) {\r\n case 'zh':\r\n case 'zh-TW':\r\n lang = 'zh-CN';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n try {\r\n if (localizedTemplates.get(lang))\r\n await setLocale(lang);\r\n else\r\n await setLocale(lang.slice(0, 2));\r\n }\r\n catch {\r\n console.warn(`pwa-install: translation error - unsupported locale: ${lang}`);\r\n }\r\n};\r\n\r\nexport const isRTL = () => {\r\n let locale = getLocale();\r\n return ['ar', 'he', 'fa', 'ur'].includes(getLocale());\r\n}\r\n","import { ImageResource } from 'web-app-manifest';\r\n\r\nexport interface IRelatedApp {\r\n id: string,\r\n platform: string,\r\n url: string\r\n}\r\n\r\nexport interface IWindow extends Window {\r\n defferedPromptEvent: BeforeInstallPromptEvent | null;\r\n BeforeInstallPromptEvent: BeforeInstallPromptEvent;\r\n}\r\n\r\ntype Booleanish = 'true' | 'false';\r\n\r\nexport interface PWAInstallAttributes {\r\n ['manual-apple']?: Booleanish;\r\n ['manual-chrome']?: Booleanish;\r\n ['disable-chrome']?: Booleanish;\r\n ['install-description']?: string;\r\n ['disable-install-description']?: Booleanish;\r\n ['manifest-url']?: string;\r\n name?: string;\r\n description?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ManifestScreenshot extends ImageResource {\r\n label?: string;\r\n platform?: string;\r\n form_factor?: \"wide\" | \"narrow\";\r\n}\r\n\r\nexport class Manifest {\r\n constructor() {\r\n this.icons = [{ src: '' }];\r\n this.screenshots = undefined;\r\n this.short_name = 'PWA';\r\n this.name = 'Progressive web application';\r\n this.description = 'Progressive web application';\r\n }\r\n short_name: string;\r\n icons: ImageResource[];\r\n screenshots?: ManifestScreenshot[];\r\n name: string;\r\n description: string;\r\n}\r\n","import {css} from 'lit'; export default css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-inline-start:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-inline-end:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px;margin:0 auto}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-inline-start:7px}.gallery.apple_mobile .btn.prev svg{margin-inline-start:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`;\n ","import { WebAppManifest } from 'web-app-manifest';\r\nimport { IRelatedApp, Manifest } from './types/types';\r\n\r\nconst _eventDispatcher = (_element: Element, name: string, message: string) => {\r\n const event = new CustomEvent(name, {\r\n detail: {\r\n message\r\n }\r\n });\r\n _element.dispatchEvent(event);\r\n}\r\nexport default class Utils {\r\n static isAppleMobile(): boolean {\r\n\t\tif (\r\n (\r\n ['iPhone', 'iPad', 'iPod'].includes(navigator.platform) ||\r\n (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2)\r\n )\r\n && ('serviceWorker' in navigator)\r\n )\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static isAppleDesktop(): boolean {\r\n // check if it's a mac\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n if (navigator.maxTouchPoints || !userAgent.match(/macintosh/))\r\n return false;\r\n // check safari version >= 17\r\n const version = /version\\/(\\d{2})\\./.exec(userAgent)\r\n if (!version || !version[1] || !(parseInt(version[1]) >= 17))\r\n return false;\r\n // hacky way to detect Sonoma\r\n const audioCheck = document.createElement('audio').canPlayType('audio/wav; codecs=\"1\"') ? true : false;\r\n const webGLCheck = new OffscreenCanvas(1, 1).getContext('webgl') ? true : false;\r\n\r\n return audioCheck && webGLCheck;\r\n }\r\n\r\n static isAndroid(): boolean {\r\n if (navigator.userAgent.toLowerCase().match(/android/))\r\n return true;\r\n return false;\r\n }\r\n\r\n static isAndroidFallback(): boolean {\r\n if (this.isAndroid() && !('BeforeInstallPromptEvent' in window))\r\n return true;\r\n return false;\r\n }\r\n\r\n static deviceFormFactor(): 'narrow' | 'wide' {\r\n return window.matchMedia('(orientation: portrait)').matches? 'narrow' : 'wide';\r\n }\r\n \r\n static isStandalone() {\r\n\t\tif (window.matchMedia('(display-mode: standalone)').matches || ('standalone' in navigator && (navigator as any).standalone === true))\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static async getInstalledRelatedApps(): Promise {\r\n if ('getInstalledRelatedApps' in navigator)\r\n try{\r\n return await (navigator as any).getInstalledRelatedApps().then((relatedApps: IRelatedApp[]) => {\r\n return relatedApps;\r\n });\r\n } catch (e) {}\r\n \r\n return [];\r\n }\r\n \r\n static async isRelatedAppsInstalled(): Promise {\r\n const _relatedApps = await this.getInstalledRelatedApps();\r\n return _relatedApps.length? true : false;\r\n }\r\n\r\n static setStorageFlag(name: string, value:boolean, persistent: boolean = false) {\r\n try {\r\n if (persistent)\r\n localStorage.setItem(name, value.toString());\r\n else\r\n sessionStorage.setItem(name, value.toString());\r\n } catch (e) {}\r\n }\r\n static getStorageFlag(name: string): boolean {\r\n try {\r\n return sessionStorage.getItem(name) === 'true' || localStorage.getItem(name) === 'true';\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n static eventInstalledSuccess(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-success-event', 'App install success (Chromium/Android only)');\r\n }\r\n static eventInstalledFail(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-fail-event', 'App install failed (Chromium/Android only)');\r\n }\r\n static eventUserChoiceResult(_element: Element, message: string) {\r\n _eventDispatcher(_element, 'pwa-user-choice-result-event', message);\r\n }\r\n static eventInstallAvailable(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-available-event', 'App install available');\r\n }\r\n static eventInstallHowTo(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-how-to-event', 'App install instruction showed');\r\n }\r\n static eventGallery(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-gallery-event', 'App install gallery showed');\r\n }\r\n\r\n static normalizeManifestAssetUrls(manifest: WebAppManifest, manifestUrl: string) {\r\n const normalizedManifestUrl = new URL(manifestUrl, document.location.href);\r\n [...manifest.icons || [], ...manifest.screenshots || []].forEach(asset => {\r\n asset.src = new URL(asset.src, normalizedManifestUrl).href;\r\n })\r\n }\r\n\r\n static async fetchAndProcessManifest(manifestUrl: string, icon: string, name: string, description: string): Promise<{_manifest: WebAppManifest, icon: string, name: string, description: string}> {\r\n let _manifest: WebAppManifest = new Manifest();\r\n let _json: WebAppManifest | null = null;\r\n try{\r\n\t\t\tconst _response = await fetch(manifestUrl);\r\n\t\t\t_json = await _response.json() as WebAppManifest;\r\n\t\t\tif (!_response.ok || !_json || !Object.keys(_json))\r\n\t\t\t\tthrow new Error('Manifest not found');\r\n\t\t\tthis.normalizeManifestAssetUrls(_json, manifestUrl);\r\n } \r\n catch(e) {} \r\n\r\n icon = icon || (_json?.icons?.length ? _json?.icons![0].src : _manifest.icons?.[0].src) || '';\r\n name = name || (_json? _json['short_name']: _manifest['short_name']) || '';\r\n description = description || _json?.description || _manifest.description || '';\r\n\t\t_manifest = _json || _manifest;\r\n \r\n return {\r\n _manifest,\r\n icon,\r\n name,\r\n description\r\n }\r\n }\r\n}","import { html } from 'lit';\r\nimport Utils from '../utils';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nconst template = (screenshots: ManifestScreenshot[], theme: string, scrollToNextPage: any, scrollToPrevPage: any) => {\r\n\r\n return html`\r\n ${screenshots? html`\r\n
\r\n
\r\n
\r\n ${screenshots.filter(screenshot => !screenshot.form_factor || screenshot.form_factor === Utils.deviceFormFactor()).map(screenshot => html`${screenshot.label || \"\"}`)}\r\n
\r\n
\r\n \r\n ${theme != 'default'?\r\n html``\r\n :\r\n html``\r\n }\r\n \r\n \r\n ${theme != 'default'?\r\n html`\r\n \r\n `\r\n :\r\n html`\r\n \r\n \r\n \r\n `\r\n }\r\n \r\n
`\r\n : ''}`;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nimport styles from './styles-gallery.scss';\r\nimport template from './template-gallery';\r\n\r\n@customElement('pwa-gallery')\r\nexport default class PWAGalleryElement extends LitElement {\r\n\t@property({ type: Array }) screenshots: ManifestScreenshot[] = [];\r\n\t@property() theme: 'default' | 'apple_desktop' | 'apple_mobile' = 'default';\r\n\t@property({ type: Boolean }) rtl: boolean = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tprivate getScrollElements = () => {\r\n\t\tconst gallery = this.shadowRoot?.querySelector('#paginated_gallery') as HTMLElement | null;\r\n\t\tif (!gallery) return;\r\n\t\t\r\n\t\tconst galleryScroller = gallery.querySelector('.gallery_scroller') as HTMLElement | null;\r\n\t\tif (!galleryScroller) return;\r\n\t\r\n\t\tconst galleryItems = Array.from(galleryScroller.querySelectorAll('img')) as HTMLElement[];\r\n\t\tif (galleryItems.length === 0) return;\r\n\t\r\n\t\treturn {\r\n\t\t\tscroller: galleryScroller,\r\n\t\t\titems: galleryItems\r\n\t\t};\r\n\t};\r\n\t\r\n\tprivate findCurrentItem = (scroller: HTMLElement, items: HTMLElement[]): HTMLElement | null => {\r\n\t\tconst scrollLeft = scroller.scrollLeft * (this.rtl? -1 : 1);\r\n\t \t// Find the item closest to the center of the viewport.\r\n\t\treturn items.find((item) => (item.offsetWidth + item.offsetLeft * (this.rtl? -1 : 1)) >= scrollLeft + (item.offsetWidth / 2.5)) || null;\r\n\t};\r\n\t\r\n\tprivate scrollToPage = (direction: 'next' | 'prev') => {\r\n\t\tconst scrollData = this.getScrollElements();\r\n\t\tif (!scrollData) return;\r\n\t\r\n\t\tconst { scroller, items } = scrollData;\r\n\t\tconst currentItem = this.findCurrentItem(scroller, items);\r\n\t\tif (!currentItem) return;\r\n\t\r\n\t\tconst currentIndex = items.indexOf(currentItem);\r\n\t\tconst offset = (direction === 'next' ? 1 : -1) * (this.rtl? -1 : 1) ;\r\n\t\tconst targetIndex = currentIndex + offset;\r\n\t\t\r\n\t\tif (targetIndex >= 0 && targetIndex < items.length) {\r\n\t\t\titems[targetIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\r\n\t\t}\r\n\t};\r\n\t\r\n\tpublic scrollToNextPage = () => {\r\n\t\tthis.scrollToPage('next');\r\n\t};\r\n\t\r\n\tpublic scrollToPrevPage = () => {\r\n\t\tthis.scrollToPage('prev');\r\n\t};\r\n\r\n\r\n\tprivate _init = () => {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tconst _tools = this.getScrollElements();\r\n\t\tif (_tools)\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\t_tools.scroller.scrollTo({\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t300\r\n\t\t\t)\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\tthis._init();\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(\r\n this.screenshots,\r\n\t\t\tthis.theme,\r\n\t\t\tthis.scrollToNextPage,\r\n\t\t\tthis.scrollToPrevPage\r\n )}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`.dialog-body .icon{display:flex;align-items:flex-start}.dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}.dialog-body .about{display:grid;grid-template-rows:30px auto}.dialog-body .about .hostname,.dialog-body .about .name{padding:0 5px;overflow:hidden}.dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}.dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}.dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:start;word-break:break-all;white-space:nowrap}.dialog-body .about+hr{margin-top:10px}.dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:start}.dialog-body .app-description{font-size:13px;margin-bottom:10px}.dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}.dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}.dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}.dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.dialog-body .install-description{font-size:14px}.dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}.dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}.dialog-body .action-buttons .primary{grid-column-start:2}.dialog-body .material-button{--text-color-primary:#eee;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#eee;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,\"Segoe UI\",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}.dialog-body .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}.dialog-body .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}.dialog-body .material-button.secondary::after,.dialog-body .material-button.secondary::before{background-color:var(--background-color-primary)}.dialog-body .material-button.secondary:active,.dialog-body .material-button.secondary:hover{box-shadow:none}.dialog-body .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-inline-end:0;margin-inline-start:auto;padding:0;border-radius:50%}.dialog-body .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}.dialog-body .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}.dialog-body .material-button.secondary.close::before{border-radius:50%}.dialog-body .material-button::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}.dialog-body .material-button::after{content:\"\";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}.dialog-body .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.dialog-body .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}.dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}@media(prefers-color-scheme:dark){.dialog-body .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(hover:none)and (pointer:coarse){.dialog-body .description::-webkit-scrollbar{display:none}}`;\n ","import {css} from 'lit'; export default css`:host{grid-template-columns:1fr}:host .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}:host .touch-header:active{cursor:grabbing}:host .touch-header::before{content:\"\";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}:host .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}:host .body-header .install{text-transform:capitalize;height:40px;min-width:50px;padding:0 23px;align-items:center;display:inline-flex;-webkit-tap-highlight-color:transparent;transition:min-width .2s,color .2s,background-color .2s,border-color .2s}:host .body-header .install .button-text,:host .body-header .install svg{margin:0 auto}:host .body-header .install .check-icon{display:none}:host .body-header .about{grid-template-rows:auto auto;grid-gap:6px}:host .body-header .about .name{padding:0;line-height:20px;font-size:16px}:host .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}:host .body-header .icon .icon-image{margin:0;width:45px;height:45px}:host .how-to-body{display:flex;flex-direction:column;gap:15px;max-height:0;overflow:hidden;padding:0 20px;opacity:0}:host .how-to-body .description-step{display:flex;gap:15px;margin-inline-start:2.5px;align-items:center}:host .how-to-body .description-step .svg-wrap{display:flex;align-items:center;width:40px;height:40px;background-color:var(--touch-header-color);border-radius:50%}:host .how-to-body .description-step .svg-wrap svg{fill:var(--text-color-normal);margin:0 auto}:host .how-to-body .description-step .svg-wrap.add-icon svg{padding-right:1px}:host .how-to .description,:host .how-to ::slotted(pwa-gallery){max-height:0;padding-top:0;padding-bottom:0;overflow:hidden;opacity:0}:host .how-to .how-to-body{max-height:600px;padding-top:18px;padding-bottom:18px;opacity:1}:host .how-to .install{min-width:40px;padding:0;background:rgba(0,0,0,0);color:var(--text-color-normal);box-shadow:none;border:1px solid}:host .how-to .install .check-icon{display:inline;fill:var(--text-color-normal)}:host .how-to .install .button-text{display:none}:host .description{padding:15px 20px;margin:0;-webkit-line-clamp:6;max-height:150px;opacity:1}:host ::slotted(pwa-gallery){display:block;max-height:600px;padding-bottom:15px;opacity:1;transition:max-height 1.5s,opacity .8s,padding 1.5s}:host .description,:host .how-to-body{transition:max-height .2s,opacity .15s,padding .2s}:host .material-button{border-radius:20px}`;\n ","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"classMap\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_directives_class_map_js_2f88e643__.classMap) });","import { html } from 'lit';\r\nimport { msg } from '@lit/localize';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\n\r\nconst fallbackClass = (isAndroidFallback: boolean = false, howToRequested: boolean = false) => {\r\n return {fallback: isAndroidFallback, 'how-to': howToRequested};\r\n}\r\n\r\nconst template = (name: string, description: string, icon: string, install: any, fallback?: boolean, howToRequested?: boolean) => {\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${location.hostname}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${msg('1) Open your browser menu')}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${msg('2) Tap \"Add to Home screen\"')}
\r\n
\r\n
\r\n ${description ? html `
${description}
`: ''}\r\n \r\n
\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\n\r\nimport stylesCommon from '../styles-common.scss'\r\nimport styles from './styles-bottom-sheet.scss';\r\n\r\n// import TouchDragListener from \"./touch-listener\";\r\n\r\ntype IProps = {\r\n name: string,\r\n description: string,\r\n icon: string\r\n}\r\n\r\nimport template from './template-bottom-sheet';\r\nimport Utils from '../../../utils';\r\n\r\n@customElement('pwa-bottom-sheet')\r\nexport default class PWABottomSheetElement extends LitElement {\r\n\tstatic get styles() {\r\n\t\treturn [stylesCommon, styles];\r\n\t}\r\n\r\n\t@property({type: Object}) props: IProps = {\r\n name: '',\r\n description: '',\r\n icon: ''\r\n };\r\n @property({type: Object}) install = {handleEvent: () => {}};\r\n\t@property() hideDialog = () => {};\r\n\t@property({type: Boolean}) disableClose = false;\r\n\r\n\t@property({type: Boolean}) fallback = false;\r\n\t@property({type: Boolean}) howToRequested = false;\r\n\t@property({type: Object}) toggleHowTo = {handleEvent: () => {}};\r\n\r\n\tprivate _callInstall = () => {\r\n\t\tif (this.fallback) {\r\n\t\t\tthis.toggleHowTo.handleEvent();\r\n\t\t\tsetTimeout(() => this.setupAppearence(true), 210);\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.install.handleEvent();\r\n\t}\r\n\r\n\tprivate _callHide = () => {\r\n\t\tthis.hideDialog();\r\n\t\tthis.setupAppearence();\r\n\t}\r\n\r\n\tprivate bindedElement: {\r\n\t\ttouchElement: HTMLElement,\r\n\t\tlistener: any }| null = null;\r\n\tprivate readonly _saveBodyStyle = document.body.style.overscrollBehaviorY;\r\n\tprivate dragMobileSheet = (element: HTMLElement | null | undefined, touchTargetElement: HTMLElement | undefined, infoElement: HTMLElement | undefined) => {\r\n\t\tif (!element || !touchTargetElement || !infoElement)\r\n\t\t\treturn null;\r\n\r\n\t\tlet dragOffset = 0;\r\n\t\tconst bounceOffset = 35;\r\n\t\t\r\n\t\tconst bottomSize = infoElement.offsetHeight + infoElement.offsetTop;\r\n\r\n\t\tconst getYCoord = (e: MouseEvent | TouchEvent): number => {\r\n\t\t\treturn (e as MouseEvent).clientY || ((e as TouchEvent).changedTouches && (e as TouchEvent).changedTouches.length? (e as TouchEvent).changedTouches[0].clientY : 0);\r\n\t\t}\r\n\r\n\t\tconst dragMouseDown = (e: MouseEvent | TouchEvent) => {\r\n\t\t\twindow.addEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.addEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.addEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.addEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tdragOffset = getYCoord(e) - touchTargetElement.getBoundingClientRect().top;\r\n\r\n\t\t\tdocument.body.style.overscrollBehaviorY = 'none';\r\n\t\t}\r\n\t\tconst dragMouseUp = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tdocument.body.style.overscrollBehaviorY = this._saveBodyStyle;\r\n\r\n\t\t\tif (!this.disableClose && getYCoord(e) >= window.innerHeight - 25) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight + 50, true);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (window.innerHeight - getYCoord(e) > element.clientHeight / 2.5) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - element.clientHeight);\r\n\t\t\t\t\r\n\t\t\t\ttry {\r\n\t\t\t\t\t!this.howToRequested && Utils.eventGallery((this.getRootNode() as ShadowRoot).host);\r\n\t\t\t\t} catch (e) {}\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - bottomSize - bounceOffset);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dragMouseMove = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tconst currentY = getYCoord(e);\r\n\r\n\t\t\tif (this.disableClose && window.innerHeight - currentY < 70) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (currentY <= (window.innerHeight - element.clientHeight + dragOffset)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`none`\r\n\t\t\t)\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"--translateY\",\r\n\t\t\t\t`translateY(${currentY - dragOffset}px)`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst closeDragElement = (e: MouseEvent | TouchEvent, toPoint?: number, hideDialog?: boolean) => {\r\n\t\t\twindow.removeEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.removeEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.removeEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.removeEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tif (window.innerWidth >= 768)\r\n\t\t\t\treturn\r\n\r\n\t\t\tif (!toPoint && getYCoord(e) >= window.innerHeight - bottomSize)\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(calc(100vh - ${bottomSize}px))`\r\n\t\t\t\t);\r\n\t\t\telse\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(${(toPoint || getYCoord(e)) + bounceOffset}px)`\r\n\t\t\t\t);\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s`\r\n\t\t\t);\r\n\r\n\t\t\tif (hideDialog){\r\n\t\t\t\ttouchTargetElement.removeEventListener('mousedown', dragMouseDown);\r\n\t\t\t\ttouchTargetElement.removeEventListener('touchstart', dragMouseDown);\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\tthis._callHide,\r\n\t\t\t\t\t250\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ttouchTargetElement.addEventListener('mousedown', dragMouseDown);\r\n\t\ttouchTargetElement.addEventListener('touchstart', dragMouseDown, {passive: false});\r\n\r\n\t\tcloseDragElement(new MouseEvent('mouseup'), window.innerHeight - bottomSize - bounceOffset);\r\n\r\n\t\treturn {\r\n\t\t\ttouchElement: touchTargetElement,\r\n\t\t\tlistener: dragMouseDown\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupAppearence = (fullOpen?: boolean) => {\r\n\t\tif (this.bindedElement) {\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('mousedown', this.bindedElement.listener);\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('touchstart', this.bindedElement.listener);\r\n\t\t}\r\n\t\t\r\n\t\tthis.bindedElement = this.dragMobileSheet(\r\n\t\t\tthis.parentElement,\r\n\t\t\tthis.shadowRoot?.querySelector('.dialog-body .touch-header') as HTMLElement,\r\n\t\t\tthis.shadowRoot?.querySelector(`.dialog-body ${fullOpen? '.how-to-body': '.body-header'}`) as HTMLElement);\r\n\t}\r\n\tprivate _init = () => {\r\n\t\tthis.setupAppearence();\r\n\r\n\t\twindow.addEventListener('resize', () => this.setupAppearence());\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tthis._init();\r\n return;\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(this.props.name, this.props.description, this.props.icon, this._callInstall, this.fallback, this.howToRequested)}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,\"Segoe UI\",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#eee;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}`;\n ","import {css} from 'lit'; export default css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,\"Segoe UI\";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon description\" \"welcome welcome\" \"how-to how-to\" \"gallery gallery\" \"button button\";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-inline-end:7px;margin-top:7px;margin-inline-start:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-inline-end:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-inline-end:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;padding:0;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:start;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;grid-template-columns:unset;gap:unset;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:start}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-inline-end:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:start}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon\" \"description\" \"welcome\" \"how-to\" \"gallery\" \"button\";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-inline-end:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-inline-end:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop pwa-gallery{margin:0 -10px}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;\n ","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\nimport { ManifestScreenshot } from '../../types/types';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, install: any, toggleGallery: any, galleryRequested: boolean, toggleHowTo: any, howToRequested: boolean, isAndroidFallback: boolean, isRTL: boolean = false) => {\r\n const installDialogClasses = () => { return {available: installAvailable, gallery: galleryRequested }};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n ${!disableClose? html`` : ''}\r\n
\r\n
${location.hostname}
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n ${!disableDescription? \r\n html`
${installDescription? installDescription: `${msg('This site has app functionality.')} ${msg('Install it on your device for extensive experience and easy access.')}`}
` \r\n : ''}\r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n ${screenshotsAvailable? html``:''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n ${screenshotsAvailable? html``: ''}\r\n \r\n
\r\n
`;\r\n};\r\nexport default template;\r\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, howToForApple: any, isDesktop: boolean, howToRequested: boolean, toggleGallery: any, galleryRequested: boolean, isRTL: boolean = false) => {\r\n const installDialogClassesApple = () => { return {available: installAvailable, 'how-to': howToRequested, gallery: galleryRequested, desktop: isDesktop}};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, PropertyValues, html } from 'lit';\r\nimport { localized } from '@lit/localize';\r\nimport { property, state, customElement } from 'lit/decorators.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { changeLocale, isRTL } from './localization';\r\n\r\nimport { IRelatedApp, Manifest, IWindow, PWAInstallAttributes } from './types/types';\r\n\r\nimport PWAGalleryElement from './gallery';\r\nimport PWABottomSheetElement from './templates/chrome/bottom-sheet';\r\n\r\nimport Utils from './utils';\r\n\r\ndeclare const window: IWindow;\r\n\r\nimport styles from './templates/chrome/styles.scss';\r\nimport stylesCommon from './templates/chrome/styles-common.scss'\r\nimport stylesApple from './templates/apple/styles-apple.scss';\r\n\r\nimport template from './templates/chrome/template';\r\nimport templateApple from './templates/apple/template-apple';\r\n\r\n/**\r\n * @event {CustomEvent} pwa-install-success-event - App install success (Chromium/Android only)\r\n * @event {CustomEvent} pwa-install-fail-event - App install failed (Chromium/Android only)\r\n * @event {CustomEvent} pwa-user-choice-result-event - dismissed, accepted\r\n * @event {CustomEvent} pwa-install-available-event - App install available\r\n * @event {CustomEvent} pwa-install-how-to-event - App install instruction showed\r\n * @event {CustomEvent} pwa-install-gallery-event - App install gallery showed\r\n */\r\n@localized()\r\n@customElement('pwa-install')\r\nexport class PWAInstallElement extends LitElement {\r\n\t@property({attribute: 'manifest-url'}) manifestUrl = '/manifest.json';\r\n\t@property() icon = '';\r\n\t@property() name = '';\r\n\t@property() description = '';\r\n\t@property({attribute: 'install-description'}) installDescription = '';\r\n\t@property({attribute: 'disable-install-description', type: Boolean}) disableDescription = false;\r\n\t@property({attribute: 'disable-screenshots', type: Boolean}) disableScreenshots = false;\r\n\t@property({attribute: 'disable-screenshots-apple', type: Boolean}) disableScreenshotsApple = false;\r\n\t@property({attribute: 'disable-screenshots-chrome', type: Boolean}) disableScreenshotsChrome = false;\r\n\t@property({attribute: 'manual-apple', type: Boolean}) manualApple = false;\r\n\t@property({attribute: 'manual-chrome', type: Boolean}) manualChrome = false;\r\n\t@property({attribute: 'disable-chrome', type: Boolean}) disableChrome = false;\r\n\t@property({attribute: 'disable-close', type: Boolean}) disableClose = false;\r\n\t@property({attribute: 'disable-android-fallback', type: Boolean}) disableFallback = false;\r\n\t@property({attribute: 'use-local-storage', type: Boolean}) useLocalStorage = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn [ styles, stylesCommon, stylesApple ];\r\n\t}\r\n\r\n\t@state() externalPromptEvent: BeforeInstallPromptEvent | null = null;\r\n\r\n\tpublic platforms: BeforeInstallPromptEvent['platforms'] = [];\r\n\tpublic userChoiceResult = '';\r\n\r\n\tpublic isDialogHidden: boolean = Utils.getStorageFlag('pwa-hide-install');\r\n\tpublic isInstallAvailable = false;\r\n\tpublic isAppleMobilePlatform = false;\r\n\tpublic isAppleDesktopPlatform = false;\r\n\tpublic isAndroidFallback = false;\r\n\tpublic isAndroid = false;\r\n\tpublic isUnderStandaloneMode = false;\r\n\tpublic isRelatedAppsInstalled = false;\r\n\r\n\t/** @internal */\r\n\tprivate _isRTL = false;\r\n\r\n\t/** @internal */\r\n\tprivate _manifest: Manifest = new Manifest();\r\n\t/** @internal */\r\n\tprivate _howToRequested = false;\r\n\t/** @internal */\r\n\tprivate _galleryRequested = false;\r\n\t/** @internal */\r\n\tprivate _install = {\r\n\t\thandleEvent: () => {\r\n\t\t\tif (window.defferedPromptEvent) {\r\n\t\t\t\tthis.hideDialog();\r\n\t\t\t\twindow.defferedPromptEvent.prompt();\r\n\t\t\t\twindow.defferedPromptEvent.userChoice\r\n\t\t\t\t\t.then((choiceResult: PromptResponseObject) => {\r\n\t\t\t\t\t\tthis.userChoiceResult = choiceResult.outcome;\r\n\t\t\t\t\t\tUtils.eventUserChoiceResult(this, this.userChoiceResult);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tUtils.eventInstalledFail(this);\r\n\t\t\t\t\t});\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\tpublic install = () => {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis._howToRequested = true;\r\n\t\t\tthis.requestUpdate();\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._install.handleEvent();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialog = {\r\n\t\thandleEvent: () => {\r\n\t\t\tthis.isDialogHidden = true;\r\n\t\t\tUtils.setStorageFlag('pwa-hide-install', true, this.useLocalStorage);\r\n\t\t\tthis.requestUpdate();\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialogUser = () => {\r\n\t\tUtils.eventUserChoiceResult(this, 'dismissed');\r\n\t\tthis.userChoiceResult = 'dismissed';\r\n\t\tthis.hideDialog();\r\n\t}\r\n\tpublic hideDialog = () => {\r\n\t\tthis._hideDialog.handleEvent();\r\n\t}\r\n\tpublic showDialog = (forced = false) => {\r\n\t\tthis.isDialogHidden = false;\r\n\t\tif (forced)\r\n\t\t\tthis.isInstallAvailable = true;\r\n\t\tUtils.setStorageFlag('pwa-hide-install', false, this.useLocalStorage);\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tpublic getInstalledRelatedApps = async (): Promise => {\r\n\t\treturn await Utils.getInstalledRelatedApps();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _toggleHowTo = {\r\n handleEvent: () => {\r\n\t\t\tthis._howToRequested = !this._howToRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._galleryRequested = false;\r\n\t\t\tthis.requestUpdate();\r\n\r\n\t\t\tif (this._howToRequested) {\r\n\t\t\t\tUtils.eventInstallHowTo(this);\r\n\t\t\t}\t\t\t\t\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate _toggleGallery = {\r\n handleEvent: () => {\r\n\t\t\tthis._galleryRequested = !this._galleryRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._howToRequested = false;\r\n\r\n\t\t\tthis._galleryRequested && Utils.eventGallery(this);\r\n\r\n\t\t\tthis.requestUpdate();\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate async _checkPlatform() {\r\n\t\tthis.isUnderStandaloneMode = Utils.isStandalone();\r\n\t\tthis.isRelatedAppsInstalled = await Utils.isRelatedAppsInstalled();\r\n\t\tthis.isAppleMobilePlatform = Utils.isAppleMobile();\r\n\t\tthis.isAppleDesktopPlatform = Utils.isAppleDesktop();\r\n\t\tthis.isAndroidFallback = Utils.isAndroidFallback();\r\n\t\tthis.isAndroid = Utils.isAndroid();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _checkInstallAvailable() {\r\n\t\tif (this.isUnderStandaloneMode)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis.manualApple && this.hideDialog();\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t},\r\n\t\t\t\t1000\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet _promptTriggered = false;\r\n\t\tif (!this.disableChrome && window.BeforeInstallPromptEvent) {\r\n\t\t\tthis.manualChrome && this.hideDialog();\r\n\t\t\tconst _promptHandler = (e: BeforeInstallPromptEvent) => {\r\n\t\t\t\twindow.defferedPromptEvent = e;\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.platforms = e.platforms;\r\n\r\n\t\t\t\tif (this.isRelatedAppsInstalled) {\r\n\t\t\t\t\tthis.isInstallAvailable = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userChoiceResult === 'accepted'){\r\n\t\t\t\t\tthis.isDialogHidden = true;\r\n\t\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t_promptTriggered = true;\r\n\t\t\t\tthis.isAndroidFallback = false;\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t\tif (this.externalPromptEvent != null)\r\n\t\t\t\tsetTimeout(() => _promptHandler(this.externalPromptEvent!), 300);\r\n\t\t\telse\r\n\t\t\t\twindow.addEventListener('beforeinstallprompt', _promptHandler);\r\n\t\t}\r\n\t\t\r\n\t\tif (!this.disableFallback && this.isAndroid && !_promptTriggered) {\r\n\t\t\t// browsers without BeforeInstallPromptEvent\r\n\t\t\tif (this.isAndroidFallback) {\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t1000\r\n\t\t\t\t);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t// trying to fix browsers like Opera with BeforeInstallPromptEvent not working\r\n\t\t\tif ('userActivation' in navigator && !this.isRelatedAppsInstalled) {\r\n\t\t\t\tconst _activation = navigator.userActivation;\r\n\t\t\t\tconst _activationHandler = setInterval(() => {\r\n\t\t\t\t\tif (_activation.isActive || _activation.hasBeenActive) {\r\n\t\t\t\t\t\tif (!_promptTriggered) {\r\n\t\t\t\t\t\t\tthis.isAndroidFallback = true;\r\n\t\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\t\tthis.requestUpdate();\r\n\t\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tclearInterval(_activationHandler);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 1000);\r\n\t\t\t\tsetTimeout(() => clearInterval(_activationHandler), 30000);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _init = async () => {\r\n\t\twindow.defferedPromptEvent = null;\r\n\r\n\t\tawait this._checkPlatform();\r\n\t\tthis._checkInstallAvailable();\r\n\r\n\t\tif ('onappinstalled' in window)\r\n\t\t\twindow.addEventListener('appinstalled', (e) => {\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t\tthis.isInstallAvailable = false;\r\n\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t});\r\n\r\n\t\tObject.assign(this, await Utils.fetchAndProcessManifest(this.manifestUrl, this.icon, this.name, this.description));\r\n\t};\r\n\t/** @internal */\r\n\tprivate _requestUpdate = () => {\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tasync connectedCallback() {\r\n\t\tawait changeLocale(navigator.language);\r\n\t\tthis._isRTL = isRTL();\r\n\t\tthis._init();\r\n\t\tPWAGalleryElement.finalized;\r\n\t\tPWABottomSheetElement.finalized;\r\n\t\tsuper.connectedCallback();\r\n\t}\r\n\twillUpdate(changedProperties: PropertyValues) {\r\n\t\tif (this.externalPromptEvent && changedProperties.has('externalPromptEvent') && typeof this.externalPromptEvent == 'object') {\r\n\t\t this._init();\r\n\t\t}\r\n\t}\r\n\r\n\t// firstUpdated() {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\trender() {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform)\r\n\t\t\treturn html`${templateApple(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsApple,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._toggleHowTo,\r\n\t\t\t\tthis.isAppleDesktopPlatform,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested,\r\n\t\t\t\tthis._isRTL\r\n\t\t\t)}`;\r\n\t\telse\r\n\t\t\treturn html`${template(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsChrome,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._install,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested,\r\n\t\t\t\tthis._toggleHowTo,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis.isAndroidFallback,\r\n\t\t\t\tthis._isRTL\r\n\t\t\t)}`;\r\n\t}\r\n}\r\n\r\nexport { PWAInstallAttributes };\r\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { updateWhenLocaleChanges } from './localized-controller.js';\n/**\n * Class decorator to enable re-rendering the given LitElement whenever a new\n * active locale has loaded.\n *\n * See also {@link updateWhenLocaleChanges} for the same functionality without\n * the use of decorators.\n *\n * When using lit-localize in transform mode, applications of this decorator are\n * removed.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {customElement} from 'lit/decorators.js';\n * import {msg, localized} from '@lit/localize';\n *\n * @localized()\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nexport const localized = () => (clazz, _context) => {\n clazz.addInitializer(updateWhenLocaleChanges);\n return clazz;\n};\n//# sourceMappingURL=localized-decorator.js.map"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","y","x","d","__WEBPACK_EXTERNAL_MODULE_lit__","joinStringsAndValues","strings","values","valueOrder","concat","i","length","defaultMsg","template","isStrTagged","val","msg","installed","LOCALE_STATUS_EVENT","LocalizeController","constructor","host","this","__litLocalizeEventHandler","event","detail","status","requestUpdate","hostConnected","window","addEventListener","hostDisconnected","removeEventListener","updateWhenLocaleChanges","addController","Deferred","settled","promise","Promise","resolve","reject","_resolve","_reject","error","hl","toString","generateMsgId","isHtmlTagged","str","t0","v0","t1","v1","t2","v2","t3","v3","charCodeAt","fnv1a64","join","expressionOrders","WeakMap","hashCache","Map","runtimeMsg","templates","options","id","undefined","set","generateId","localized","order","map","dispatchStatusEvent","dispatchEvent","CustomEvent","loadingLocale","sourceLocale","validLocales","loadLocale","activeLocale","loading","requestId","getLocale","setLocale","newLocale","Error","has","thisRequestId","then","mod","readyLocale","err","errorLocale","errorMessage","__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__","targetLocales","localizedTemplates","config","async","lang","impl","_installMsgImplementation","Set","add","Manifest","icons","src","screenshots","short_name","name","description","css","_eventDispatcher","_element","message","Utils","isAppleMobile","includes","navigator","platform","userAgent","match","maxTouchPoints","isAppleDesktop","toLowerCase","version","exec","parseInt","audioCheck","document","createElement","canPlayType","webGLCheck","OffscreenCanvas","getContext","isAndroid","isAndroidFallback","deviceFormFactor","matchMedia","matches","isStandalone","standalone","getInstalledRelatedApps","relatedApps","e","isRelatedAppsInstalled","setStorageFlag","persistent","localStorage","setItem","sessionStorage","getStorageFlag","getItem","eventInstalledSuccess","eventInstalledFail","eventUserChoiceResult","eventInstallAvailable","eventInstallHowTo","eventGallery","normalizeManifestAssetUrls","manifest","manifestUrl","normalizedManifestUrl","URL","location","href","forEach","asset","fetchAndProcessManifest","icon","_manifest","_json","_response","fetch","json","ok","keys","theme","scrollToNextPage","scrollToPrevPage","html","PWAGalleryElement","LitElement","rtl","getScrollElements","gallery","shadowRoot","querySelector","galleryScroller","galleryItems","Array","from","querySelectorAll","scroller","items","findCurrentItem","scrollLeft","find","item","offsetWidth","offsetLeft","scrollToPage","direction","scrollData","currentItem","targetIndex","indexOf","scrollIntoView","behavior","block","inline","_init","styles","firstUpdated","_tools","setTimeout","scrollTo","top","left","connectedCallback","super","render","property","type","Boolean","customElement","__WEBPACK_EXTERNAL_MODULE_lit_directives_class_map_js_2f88e643__","install","fallback","howToRequested","PWABottomSheetElement","props","handleEvent","hideDialog","disableClose","toggleHowTo","_callInstall","setupAppearence","_callHide","bindedElement","_saveBodyStyle","body","style","overscrollBehaviorY","dragMobileSheet","element","touchTargetElement","infoElement","dragOffset","bottomSize","offsetHeight","offsetTop","getYCoord","clientY","changedTouches","dragMouseDown","dragMouseUp","dragMouseMove","preventDefault","getBoundingClientRect","innerHeight","closeDragElement","clientHeight","getRootNode","currentY","setProperty","toPoint","innerWidth","passive","MouseEvent","touchElement","listener","fullOpen","parentElement","installDescription","disableDescription","disableScreenshots","installAvailable","toggleGallery","galleryRequested","isRTL","installDialogClasses","available","screenshotsAvailable","howToForApple","isDesktop","desktop","PWAInstallElement","disableScreenshotsApple","disableScreenshotsChrome","manualApple","manualChrome","disableChrome","disableFallback","useLocalStorage","externalPromptEvent","platforms","userChoiceResult","isDialogHidden","isInstallAvailable","isAppleMobilePlatform","isAppleDesktopPlatform","isUnderStandaloneMode","_isRTL","_howToRequested","_galleryRequested","_install","defferedPromptEvent","prompt","userChoice","choiceResult","outcome","catch","_hideDialog","_hideDialogUser","showDialog","forced","_toggleHowTo","_toggleGallery","_checkPlatform","_checkInstallAvailable","assign","_requestUpdate","_promptTriggered","BeforeInstallPromptEvent","_promptHandler","_activation","userActivation","_activationHandler","setInterval","isActive","hasBeenActive","clearInterval","slice","changeLocale","language","finalized","willUpdate","changedProperties","attribute","state","clazz","_context","addInitializer"],"sourceRoot":""} +{"version":3,"file":"pwa-install.es.js","mappings":"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","sources":["webpack://@khmyznikov/pwa-install/webpack/bootstrap","webpack://@khmyznikov/pwa-install/webpack/runtime/define property getters","webpack://@khmyznikov/pwa-install/webpack/runtime/hasOwnProperty shorthand","webpack://@khmyznikov/pwa-install/webpack/runtime/make namespace object","webpack://@khmyznikov/pwa-install/external module \"lit\"","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/str-tag.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/default-msg.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/init/install.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/locale-status-event.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/localized-controller.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/deferred.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/fnv1a64.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/id-generation.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/runtime-msg.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/init/runtime.js","webpack://@khmyznikov/pwa-install/external module \"lit/decorators.js\"","webpack://@khmyznikov/pwa-install/./src/localization/locale-codes.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ru.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/tr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/de.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/es.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/nl.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/el.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/fr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/sr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/pl.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/uk.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/zh-HK.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/zh-CN.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/it.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/cs.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/no.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/pt.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ja.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/sv.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ko.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/km.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/fa.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/da.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/vi.ts","webpack://@khmyznikov/pwa-install/./src/localization/index.ts","webpack://@khmyznikov/pwa-install/./src/types/types.ts","webpack://@khmyznikov/pwa-install/./src/gallery/styles-gallery.scss","webpack://@khmyznikov/pwa-install/./src/utils.ts","webpack://@khmyznikov/pwa-install/./src/gallery/template-gallery.ts","webpack://@khmyznikov/pwa-install/./src/gallery/index.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/styles-common.scss","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/styles-bottom-sheet.scss","webpack://@khmyznikov/pwa-install/external module \"lit/directives/class-map.js\"","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/template-bottom-sheet.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/index.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/styles.scss","webpack://@khmyznikov/pwa-install/./src/templates/apple/styles-apple.scss","webpack://@khmyznikov/pwa-install/./src/templates/chrome/template.ts","webpack://@khmyznikov/pwa-install/./src/templates/apple/template-apple.ts","webpack://@khmyznikov/pwa-install/./src/index.ts","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/localized-decorator.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"LitElement\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.LitElement), [\"css\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.css), [\"html\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.html) });","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Tag that allows expressions to be used in localized non-HTML template\n * strings.\n *\n * Example: msg(str`Hello ${this.user}!`);\n *\n * The Lit html tag can also be used for this purpose, but HTML will need to be\n * escaped, and there is a small overhead for HTML parsing.\n *\n * Untagged template strings with expressions aren't supported by lit-localize\n * because they don't allow for values to be captured at runtime.\n */\nconst _str = (strings, ...values) => ({\n strTag: true,\n strings,\n values,\n});\nexport const str = _str;\nexport const isStrTagged = (val) => typeof val !== 'string' && 'strTag' in val;\n/**\n * Render the result of a `str` tagged template to a string. Note we don't need\n * to do this for Lit templates, since Lit itself handles rendering.\n */\nexport const joinStringsAndValues = (strings, values, valueOrder) => {\n let concat = strings[0];\n for (let i = 1; i < strings.length; i++) {\n concat += values[valueOrder ? valueOrder[i - 1] : i - 1];\n concat += strings[i];\n }\n return concat;\n};\n//# sourceMappingURL=str-tag.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { isStrTagged, joinStringsAndValues } from './str-tag.js';\n/**\n * Default identity msg implementation. Simply returns the input template with\n * no awareness of translations. If the template is str-tagged, returns it in\n * string form.\n */\nexport const defaultMsg = ((template) => isStrTagged(template)\n ? joinStringsAndValues(template.strings, template.values)\n : template);\n//# sourceMappingURL=default-msg.js.map","import { defaultMsg } from '../internal/default-msg.js';\n/**\n * Make a string or lit-html template localizable.\n *\n * @param template A string, a lit-html template, or a function that returns\n * either a string or lit-html template.\n * @param options Optional configuration object with the following properties:\n * - id: Optional project-wide unique identifier for this template. If\n * omitted, an id will be automatically generated from the template strings.\n * - desc: Optional description\n */\nexport let msg = defaultMsg;\nlet installed = false;\n/**\n * Internal only. Do not use this function.\n *\n * Installs an implementation of the msg function to replace the default\n * identity function. Throws if called more than once.\n *\n * @internal\n */\nexport function _installMsgImplementation(impl) {\n if (installed) {\n throw new Error('lit-localize can only be configured once');\n }\n msg = impl;\n installed = true;\n}\n//# sourceMappingURL=install.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Name of the event dispatched to `window` whenever a locale change starts,\n * finishes successfully, or fails. Only relevant to runtime mode.\n *\n * The `detail` of this event is an object with a `status` string that can be:\n * \"loading\", \"ready\", or \"error\", along with the relevant locale code, and\n * error message if applicable.\n *\n * You can listen for this event to know when your application should be\n * re-rendered following a locale change. See also the Localized mixin, which\n * automatically re-renders LitElement classes using this event.\n */\nexport const LOCALE_STATUS_EVENT = 'lit-localize-status';\n//# sourceMappingURL=locale-status-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { LOCALE_STATUS_EVENT } from './locale-status-event.js';\nclass LocalizeController {\n constructor(host) {\n this.__litLocalizeEventHandler = (event) => {\n if (event.detail.status === 'ready') {\n this.host.requestUpdate();\n }\n };\n this.host = host;\n }\n hostConnected() {\n window.addEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n hostDisconnected() {\n window.removeEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n}\n/**\n * Re-render the given LitElement whenever a new active locale has loaded.\n *\n * See also {@link localized} for the same functionality as a decorator.\n *\n * When using lit-localize in transform mode, calls to this function are\n * replaced with undefined.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {msg, updateWhenLocaleChanges} from '@lit/localize';\n *\n * class MyElement extends LitElement {\n * constructor() {\n * super();\n * updateWhenLocaleChanges(this);\n * }\n *\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nconst _updateWhenLocaleChanges = (host) => host.addController(new LocalizeController(host));\nexport const updateWhenLocaleChanges = _updateWhenLocaleChanges;\n//# sourceMappingURL=localized-controller.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport class Deferred {\n constructor() {\n this.settled = false;\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n resolve(value) {\n this.settled = true;\n this._resolve(value);\n }\n reject(error) {\n this.settled = true;\n this._reject(error);\n }\n}\n//# sourceMappingURL=deferred.js.map","/**\n * @license\n * Copyright 2014 Travis Webb\n * SPDX-License-Identifier: MIT\n */\n// This module is derived from the file:\n// https://github.com/tjwebb/fnv-plus/blob/1e2ce68a07cb7dd4c3c85364f3d8d96c95919474/index.js#L309\n//\n// Changes:\n// - Only the _hash64_1a_fast function is included.\n// - Removed loop unrolling.\n// - Converted to TypeScript ES module.\n// - var -> let/const\n//\n// TODO(aomarks) Upstream improvements to https://github.com/tjwebb/fnv-plus/.\nconst hl = [];\nfor (let i = 0; i < 256; i++) {\n hl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n}\n/**\n * Perform a FNV-1A 64-bit hash of the given string (as UTF-16 code units), and\n * return a hexadecimal digest (left zero padded to 16 characters).\n *\n * @see {@link http://tools.ietf.org/html/draft-eastlake-fnv-06}\n */\nexport function fnv1a64(str) {\n let t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n for (let i = 0; i < str.length; i++) {\n v0 ^= str.charCodeAt(i);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = (t3 + (t2 >>> 16)) & 65535;\n v2 = t2 & 65535;\n }\n return (hl[v3 >> 8] +\n hl[v3 & 255] +\n hl[v2 >> 8] +\n hl[v2 & 255] +\n hl[v1 >> 8] +\n hl[v1 & 255] +\n hl[v0 >> 8] +\n hl[v0 & 255]);\n}\n//# sourceMappingURL=fnv1a64.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { fnv1a64 } from './fnv1a64.js';\n/**\n * Delimiter used between each template string component before hashing. Used to\n * prevent e.g. \"foobar\" and \"foo${baz}bar\" from sharing a hash.\n *\n * This is the \"record separator\" ASCII character.\n */\nexport const HASH_DELIMITER = '\\x1e';\n/**\n * Id prefix on html-tagged templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst HTML_PREFIX = 'h';\n/**\n * Id prefix on plain string templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst STRING_PREFIX = 's';\n/**\n * Generate a unique ID for a lit-localize message.\n *\n * Example:\n * Template: html`Hello ${who}!`\n * Params: [\"Hello \", \"!\"], true\n * Output: h82ccc38d4d46eaa9\n *\n * The ID is constructed as:\n *\n * [0] Kind of template: [h]tml or [s]tring.\n * [1,16] 64-bit FNV-1a hash hex digest of the template strings, as UTF-16\n * code points, delineated by an ASCII \"record separator\" character.\n *\n * We choose FNV-1a because:\n *\n * 1. It's pretty fast (e.g. much faster than SHA-1).\n * 2. It's pretty small (0.25 KiB minified + brotli).\n * 3. We don't require cryptographic security, and 64 bits should give\n * sufficient collision resistance for any one application. Worst\n * case, we will always detect collisions during analysis.\n * 4. We can't use Web Crypto API (e.g. SHA-1), because it's asynchronous.\n * 5. It's a well known non-cryptographic hash with implementations in many\n * languages.\n * 6. There was an existing JavaScript implementation that doesn't require\n * BigInt, for IE11 compatibility.\n */\nexport function generateMsgId(strings, isHtmlTagged) {\n return ((isHtmlTagged ? HTML_PREFIX : STRING_PREFIX) +\n fnv1a64(typeof strings === 'string' ? strings : strings.join(HASH_DELIMITER)));\n}\n//# sourceMappingURL=id-generation.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { defaultMsg } from './default-msg.js';\nimport { joinStringsAndValues } from './str-tag.js';\nimport { generateMsgId } from './id-generation.js';\nconst expressionOrders = new WeakMap();\nconst hashCache = new Map();\nexport function runtimeMsg(templates, template, options) {\n if (templates) {\n const id = options?.id ?? generateId(template);\n const localized = templates[id];\n if (localized) {\n if (typeof localized === 'string') {\n // E.g. \"Hello World!\"\n return localized;\n }\n else if ('strTag' in localized) {\n // E.g. str`Hello ${name}!`\n //\n // Localized templates have ${number} in place of real template\n // expressions. They can't have real template values, because the\n // variable scope would be wrong. The number tells us the index of the\n // source value to substitute in its place, because expressions can be\n // moved to a different position during translation.\n return joinStringsAndValues(localized.strings, \n // Cast `template` because its type wasn't automatically narrowed (but\n // we know it must be the same type as `localized`).\n template.values, localized.values);\n }\n else {\n // E.g. html`Hello ${name}!`\n //\n // We have to keep our own mapping of expression ordering because we do\n // an in-place update of `values`, and otherwise we'd lose ordering for\n // subsequent renders.\n let order = expressionOrders.get(localized);\n if (order === undefined) {\n order = localized.values;\n expressionOrders.set(localized, order);\n }\n return {\n ...localized,\n values: order.map((i) => template.values[i]),\n };\n }\n }\n }\n return defaultMsg(template);\n}\nfunction generateId(template) {\n const strings = typeof template === 'string' ? template : template.strings;\n let id = hashCache.get(strings);\n if (id === undefined) {\n id = generateMsgId(strings, typeof template !== 'string' && !('strTag' in template));\n hashCache.set(strings, id);\n }\n return id;\n}\n//# sourceMappingURL=runtime-msg.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { Deferred } from '../internal/deferred.js';\nimport { LOCALE_STATUS_EVENT } from '../internal/locale-status-event.js';\nimport { runtimeMsg } from '../internal/runtime-msg.js';\nimport { _installMsgImplementation } from './install.js';\n/**\n * Dispatch a \"lit-localize-status\" event to `window` with the given detail.\n */\nfunction dispatchStatusEvent(detail) {\n window.dispatchEvent(new CustomEvent(LOCALE_STATUS_EVENT, { detail }));\n}\nlet activeLocale = '';\nlet loadingLocale;\nlet sourceLocale;\nlet validLocales;\nlet loadLocale;\nlet templates;\nlet loading = new Deferred();\n// The loading promise must be initially resolved, because that's what we should\n// return if the user immediately calls setLocale(sourceLocale).\nloading.resolve();\nlet requestId = 0;\n/**\n * Set configuration parameters for lit-localize when in runtime mode. Returns\n * an object with functions:\n *\n * - `getLocale`: Return the active locale code.\n * - `setLocale`: Set the active locale code.\n *\n * Throws if called more than once.\n */\nexport const configureLocalization = (config) => {\n _installMsgImplementation(((template, options) => runtimeMsg(templates, template, options)));\n activeLocale = sourceLocale = config.sourceLocale;\n validLocales = new Set(config.targetLocales);\n validLocales.add(config.sourceLocale);\n loadLocale = config.loadLocale;\n return { getLocale, setLocale };\n};\n/**\n * Return the active locale code.\n */\nconst getLocale = () => {\n return activeLocale;\n};\n/**\n * Set the active locale code, and begin loading templates for that locale using\n * the `loadLocale` function that was passed to `configureLocalization`. Returns\n * a promise that resolves when the next locale is ready to be rendered.\n *\n * Note that if a second call to `setLocale` is made while the first requested\n * locale is still loading, then the second call takes precedence, and the\n * promise returned from the first call will resolve when second locale is\n * ready. If you need to know whether a particular locale was loaded, check\n * `getLocale` after the promise resolves.\n *\n * Throws if the given locale is not contained by the configured `sourceLocale`\n * or `targetLocales`.\n */\nconst setLocale = (newLocale) => {\n if (newLocale === (loadingLocale ?? activeLocale)) {\n return loading.promise;\n }\n if (!validLocales || !loadLocale) {\n throw new Error('Internal error');\n }\n if (!validLocales.has(newLocale)) {\n throw new Error('Invalid locale code');\n }\n requestId++;\n const thisRequestId = requestId;\n loadingLocale = newLocale;\n if (loading.settled) {\n loading = new Deferred();\n }\n dispatchStatusEvent({ status: 'loading', loadingLocale: newLocale });\n const localePromise = newLocale === sourceLocale\n ? // We could switch to the source locale synchronously, but we prefer to\n // queue it on a microtask so that switching locales is consistently\n // asynchronous.\n Promise.resolve({ templates: undefined })\n : loadLocale(newLocale);\n localePromise.then((mod) => {\n if (requestId === thisRequestId) {\n activeLocale = newLocale;\n loadingLocale = undefined;\n templates = mod.templates;\n dispatchStatusEvent({ status: 'ready', readyLocale: newLocale });\n loading.resolve();\n }\n // Else another locale was requested in the meantime. Don't resolve or\n // reject, because the newer load call is going to use the same promise.\n // Note the user can call getLocale() after the promise resolves if they\n // need to check if the locale is still the one they expected to load.\n }, (err) => {\n if (requestId === thisRequestId) {\n dispatchStatusEvent({\n status: 'error',\n errorLocale: newLocale,\n errorMessage: err.toString(),\n });\n loading.reject(err);\n }\n });\n return loading.promise;\n};\n//# sourceMappingURL=runtime.js.map","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"customElement\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.customElement), [\"property\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.property), [\"state\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.state) });","// Do not modify this file by hand!\n// Re-generate this file by running lit-localize.\n\n/**\n * The locale code that templates in this source code are written in.\n */\nexport const sourceLocale = `en`;\n\n/**\n * The other locale codes that this application is localized into. Sorted\n * lexicographically.\n */\nexport const targetLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `es`,\n `fa`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `vi`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n\n/**\n * All valid project locale codes. Sorted lexicographically.\n */\nexport const allLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `en`,\n `es`,\n `fa`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `vi`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Откройте меню вашего браузера`,\n's182ab2d6c997515f': `Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.`,\n's1b9047d53d9f9d22': `2) Нажать \"Поделиться\"`,\n's2d90afa5dcca2c0e': `3) Прокрутите вниз до \"Добавить на главный экран\"`,\n's37a9e8aec5713460': `Подробнее`,\n's4593f304dac8848c': `2) Нажмите \"Добавить на главный экран\"`,\n's54cfbb14f46396d4': `1) Откройте в вашем основном браузере`,\n's6196153c4b0c1ea0': `Установить`,\n's922329d6f6213590': `Добавить в Dock`,\n'sa5ef80b4bb9b39f8': `Свернуть`,\n'sa7551383d1897fcc': `2) Нажмите \"Добавить в Dock\"`,\n'sba52286c21552a4e': `Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.`,\n'sc79fd7641eb9a975': `Спрятать Инструкцию`,\n'scdaf4bbff76674c8': `На экран «Домой»`,\n'se740f75b95a51807': `Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.`,\n'sfea652f6580ff086': `Этот веб-сайт имеет функционал приложения.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Tarayıcı menünüzü açın`,\n's182ab2d6c997515f': `Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.`,\n's1b9047d53d9f9d22': `2) Gezinme çubuğunda Paylaş'a basın`,\n's2d90afa5dcca2c0e': `3) \"Ana Ekrana Ekle\" seçeneğine kadar aşağı kaydırın`,\n's37a9e8aec5713460': `Daha Fazla`,\n's4593f304dac8848c': `2) \"Ana Ekrana Ekle\"ye dokunun`,\n's54cfbb14f46396d4': `1) Ana tarayıcınızda açın`,\n's6196153c4b0c1ea0': `Yükle`,\n's922329d6f6213590': `Dock’a Ekle`,\n'sa5ef80b4bb9b39f8': `Küçült`,\n'sa7551383d1897fcc': `2) Dock’a ekleye basın`,\n'sba52286c21552a4e': `Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.`,\n'sc79fd7641eb9a975': `Talimatları gizle`,\n'scdaf4bbff76674c8': `Ana Ekrana Ekle`,\n'se740f75b95a51807': `Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.`,\n'sfea652f6580ff086': `Bu site uygulama işlevselliğine sahiptir.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Öffnen Sie das Menü Ihres Browsers`,\n's182ab2d6c997515f': `Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n's1b9047d53d9f9d22': `2) Drücken Sie auf Teilen in der Navigationsleiste`,\n's2d90afa5dcca2c0e': `3) Scrollen Sie nach unten zu \"Zum Startbildschirm hinzufügen\"`,\n's37a9e8aec5713460': `Mehr`,\n's4593f304dac8848c': `2) Tippen Sie auf \"Zum Startbildschirm hinzufügen\"`,\n's54cfbb14f46396d4': `1) Öffnen Sie es in Ihrem Hauptbrowser`,\n's6196153c4b0c1ea0': `Installieren`,\n's922329d6f6213590': `Zum Dock hinzufügen`,\n'sa5ef80b4bb9b39f8': `Weniger`,\n'sa7551383d1897fcc': `2) Drücken Sie auf Zum Dock hinzufügen`,\n'sba52286c21552a4e': `Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.`,\n'sc79fd7641eb9a975': `Anleitung ausblenden`,\n'scdaf4bbff76674c8': `Hinzufügen zum Startbildschirm`,\n'se740f75b95a51807': `Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n'sfea652f6580ff086': `Diese Website verfügt über App-Funktionalität.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Abre el menú de tu navegador`,\n's182ab2d6c997515f': `Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.`,\n's1b9047d53d9f9d22': `2) Presionar Compartir en la barra de direcciones`,\n's2d90afa5dcca2c0e': `3) Desplázate hacia abajo hasta \"Añadir a pantalla de inicio\"`,\n's37a9e8aec5713460': `Más`,\n's4593f304dac8848c': `2) Toca \"Añadir a pantalla de inicio\"`,\n's54cfbb14f46396d4': `1) Abre en tu navegador principal`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Añadir al Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Presionar Añadir al Dock`,\n'sba52286c21552a4e': `Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.`,\n'sc79fd7641eb9a975': `Esconder instrucciones`,\n'scdaf4bbff76674c8': `Añadir a pantalla de inicio`,\n'se740f75b95a51807': `Añádelo a tu Dock para una experiencia amplia y acceso fácil.`,\n'sfea652f6580ff086': `Este sitio tiene funcionalidad de aplicación.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Open je browsermenu`,\n's182ab2d6c997515f': `Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.`,\n's1b9047d53d9f9d22': `2) Druk op delen in de navigatiebalk`,\n's2d90afa5dcca2c0e': `3) Scrol naar beneden naar \"Toevoegen aan startscherm\"`,\n's37a9e8aec5713460': `Meer`,\n's4593f304dac8848c': `2) Tik op \"Toevoegen aan startscherm\"`,\n's54cfbb14f46396d4': `1) Open in je hoofdprogramma`,\n's6196153c4b0c1ea0': `Installeren`,\n's922329d6f6213590': `Toevoegen aan Dock`,\n'sa5ef80b4bb9b39f8': `Minder`,\n'sa7551383d1897fcc': `2) Druk op Toevoegen aan Dock`,\n'sba52286c21552a4e': `Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.`,\n'sc79fd7641eb9a975': `Instructie verbergen`,\n'scdaf4bbff76674c8': `Toevoegen aan het startscherm`,\n'se740f75b95a51807': `Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.`,\n'sfea652f6580ff086': `Deze site heeft app-functionaliteit.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Ανοίξτε το μενού του περιηγητή σας`,\n's182ab2d6c997515f': `Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n's1b9047d53d9f9d22': `2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης`,\n's2d90afa5dcca2c0e': `3) Κάντε κύλιση προς τα κάτω στο \"Προσθήκη στην οθόνη Αφετηρίας\"`,\n's37a9e8aec5713460': `Περισσότερα`,\n's4593f304dac8848c': `2) Πατήστε \"Προσθήκη στην οθόνη Αφετηρίας\"`,\n's54cfbb14f46396d4': `1) Ανοίξτε στον κύριο περιηγητή σας`,\n's6196153c4b0c1ea0': `Εγκατάσταση`,\n's922329d6f6213590': `Προσθήκη στην Πρόσβαση`,\n'sa5ef80b4bb9b39f8': `Λιγότερα`,\n'sa7551383d1897fcc': `2) Πατήστε Προσθήκη στην Πρόσβαση`,\n'sba52286c21552a4e': `Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sc79fd7641eb9a975': `Απόκρυψη Οδηγιών`,\n'scdaf4bbff76674c8': `Προσθήκη στην Οθόνη Αφετηρίας`,\n'se740f75b95a51807': `Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sfea652f6580ff086': `Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Ouvrez le menu de votre navigateur`,\n's182ab2d6c997515f': `Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.`,\n's1b9047d53d9f9d22': `2) Appuyez sur Partager dans la barre de navigation`,\n's2d90afa5dcca2c0e': `3) Faites défiler vers le bas jusqu'à \"Ajouter à l'écran d'accueil\"`,\n's37a9e8aec5713460': `Plus`,\n's4593f304dac8848c': `2) Touchez \"Ajouter à l'écran d'accueil\"`,\n's54cfbb14f46396d4': `1) Ouvrir dans votre navigateur principal`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Ajouter au Dock`,\n'sa5ef80b4bb9b39f8': `Moins`,\n'sa7551383d1897fcc': `2) Appuyez sur Ajouter au Dock`,\n'sba52286c21552a4e': `Installez-le sur votre appareil pour une expérience complète et un accès facile.`,\n'sc79fd7641eb9a975': `Masquer les instructions`,\n'scdaf4bbff76674c8': `Ajouter à l'écran d'accueil`,\n'se740f75b95a51807': `Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.`,\n'sfea652f6580ff086': `Ce site possède des fonctionnalités d'application.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Отворите мени вашег прегледача`,\n's182ab2d6c997515f': `Додајте га на Home Screen за широке могућности и лак приступ.`,\n's1b9047d53d9f9d22': `2) Притисните Share у навигационој траци`,\n's2d90afa5dcca2c0e': `3) Померите се надоле до \"Add to Home Screen\"`,\n's37a9e8aec5713460': `Више`,\n's4593f304dac8848c': `2) Додирните \"Add to Home Screen\"`,\n's54cfbb14f46396d4': `1) Отворите у вашем главном прегледачу`,\n's6196153c4b0c1ea0': `Инсталирај`,\n'sa5ef80b4bb9b39f8': `Мање`,\n'sa7551383d1897fcc': `3) Притисните Add to Dock`,\n'sba52286c21552a4e': `Инсталирајте га на вашем уређају за широке могућности и лак приступ.`,\n'sc79fd7641eb9a975': `Сакриј упутство`,\n'se740f75b95a51807': `Додајте га у вашу Dock за широке могућности и лак приступ.`,\n'sfea652f6580ff086': `Овај сајт има функционалност апликације.`,\n's922329d6f6213590': `Add to Dock`,\n'scdaf4bbff76674c8': `Add to Home Screen`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Otwórz menu przeglądarki`,\n's182ab2d6c997515f': `Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n's1b9047d53d9f9d22': `2) Wybierz \"Udostępnij\"`,\n's2d90afa5dcca2c0e': `3) Przewiń w dół do opcji \"Dodaj do Ekranu Głównego\"`,\n's37a9e8aec5713460': `Więcej`,\n's4593f304dac8848c': `2) Naciśnij \"Dodaj do Ekranu Głównego\"`,\n's54cfbb14f46396d4': `1) Otwórz w swojej głównej przeglądarce`,\n's6196153c4b0c1ea0': `Zainstaluj`,\n's922329d6f6213590': `Dodaj do Docka`,\n'sa5ef80b4bb9b39f8': `Mniej`,\n'sa7551383d1897fcc': `2) Wybierz \"Dodaj do Docka\"`,\n'sba52286c21552a4e': `Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sc79fd7641eb9a975': `Ukryj instrukcję`,\n'scdaf4bbff76674c8': `Dodaj do Ekranu Głównego`,\n'se740f75b95a51807': `Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sfea652f6580ff086': `Ta strona posiada funkcje aplikacji.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Відкрити меню браузера`,\n's182ab2d6c997515f': `Додайте на Домашній екран для зручного доступу та ширших можливостей.`,\n's1b9047d53d9f9d22': `2) Натиснути «Поділитися»`,\n's2d90afa5dcca2c0e': `3) Прокрутіть вниз до «На Початковий экран»`,\n's37a9e8aec5713460': `Детальніше`,\n's4593f304dac8848c': `2) Натиснути «На Початковий экран»`,\n's54cfbb14f46396d4': `1) Відкрити у вашому основному браузері`,\n's6196153c4b0c1ea0': `Встановити`,\n's922329d6f6213590': `Додати на Dock`,\n'sa5ef80b4bb9b39f8': `Згорнути`,\n'sa7551383d1897fcc': `2) Натиснути «Додати на Dock»`,\n'sba52286c21552a4e': `Встановіть на ваш пристрій для зручного доступу та ширших можливостей.`,\n'sc79fd7641eb9a975': `Сховати Інструкцію`,\n'scdaf4bbff76674c8': `На Початковий экран`,\n'se740f75b95a51807': `Додайте на панель Dock для зручного доступу та ширших можливостей.`,\n'sfea652f6580ff086': `Цей сайт має функції додатку.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 打開您的瀏覽器菜單`,\n's182ab2d6c997515f': `將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。`,\n's1b9047d53d9f9d22': `2) 點擊列表上的分享按鈕`,\n's2d90afa5dcca2c0e': `3) 向下滾動到「添加到主屏幕」`,\n's37a9e8aec5713460': `詳細資訊`,\n's4593f304dac8848c': `2) 點擊「添加到主屏幕」`,\n's54cfbb14f46396d4': `1) 在您的主要瀏覽器中打開`,\n's6196153c4b0c1ea0': `安裝`,\n's922329d6f6213590': `添加到Dock欄`,\n'sa5ef80b4bb9b39f8': `簡短資訊`,\n'sa7551383d1897fcc': `2) 點選添加到Dock欄`,\n'sba52286c21552a4e': `在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。`,\n'sc79fd7641eb9a975': `隱藏安裝流程`,\n'scdaf4bbff76674c8': `將App加入主畫面`,\n'se740f75b95a51807': `將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。`,\n'sfea652f6580ff086': `此網站具有應用程式功能。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 打开浏览器菜单`,\n's182ab2d6c997515f': `将其添加到主屏幕,以享受更丰富的体验并便于访问。`,\n's1b9047d53d9f9d22': `2) 点击导航栏中的“分享”按钮`,\n's2d90afa5dcca2c0e': `3) 向下滚动至“添加到主屏幕”`,\n's37a9e8aec5713460': `更多`,\n's4593f304dac8848c': `2) 轻触“添加到主屏幕”`,\n's54cfbb14f46396d4': `1) 在您的主浏览器中打开`,\n's6196153c4b0c1ea0': `安装`,\n's922329d6f6213590': `添加到程序坞`,\n'sa5ef80b4bb9b39f8': `收起`,\n'sa7551383d1897fcc': `2) 点击“添加到程序坞”`,\n'sba52286c21552a4e': `在您的设备上安装,以享受更丰富的体验并便于访问。`,\n'sc79fd7641eb9a975': `隐藏安装步骤`,\n'scdaf4bbff76674c8': `添加到主屏幕`,\n'se740f75b95a51807': `将其添加到您的程序坞,以享受更全面的体验并便于访问。`,\n'sfea652f6580ff086': `此网站具备 App 功能特性。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Apri il menu del tuo browser`,\n's182ab2d6c997515f': `Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.`,\n's1b9047d53d9f9d22': `2) Premi Condividi nella barra di navigazione`,\n's2d90afa5dcca2c0e': `3) Scorri verso il basso fino a \"Aggiungi alla schermata principale\"`,\n's37a9e8aec5713460': `Più`,\n's4593f304dac8848c': `2) Tocca \"Aggiungi alla schermata principale\"`,\n's54cfbb14f46396d4': `1) Apri nel tuo browser principale`,\n's6196153c4b0c1ea0': `Installa`,\n's922329d6f6213590': `Aggiungi al Dock`,\n'sa5ef80b4bb9b39f8': `Meno`,\n'sa7551383d1897fcc': `2) Premi Aggiungi al Dock`,\n'sba52286c21552a4e': `Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.`,\n'sc79fd7641eb9a975': `Nascondi istruzioni`,\n'scdaf4bbff76674c8': `Aggiungi alla schermata principale`,\n'se740f75b95a51807': `Aggiungilo al Dock per un'esperienza più completa e un accesso facile.`,\n'sfea652f6580ff086': `Questo sito ha funzionalità di app.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Otevřete nabídku prohlížeče`,\n's182ab2d6c997515f': `Přidejte jej na plochu pro rozšířené využití a snadný přístup.`,\n's1b9047d53d9f9d22': `2) Stiskněte tlačítko Sdílet na navigačním panelu`,\n's2d90afa5dcca2c0e': `3) Projděte dolů k \"Přidat na plochu\"`,\n's37a9e8aec5713460': `Více`,\n's4593f304dac8848c': `2) Klepněte na \"Přidat na plochu\"`,\n's54cfbb14f46396d4': `1) Otevřete v hlavním prohlížeči`,\n's6196153c4b0c1ea0': `Nainstalovat`,\n's922329d6f6213590': `Přidat do Docku`,\n'sa5ef80b4bb9b39f8': `Méně`,\n'sa7551383d1897fcc': `2) Stiskněte Přidat do Docku`,\n'sba52286c21552a4e': `Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.`,\n'sc79fd7641eb9a975': `Skrýt instrukce`,\n'scdaf4bbff76674c8': `Přidat na plochu`,\n'se740f75b95a51807': `Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.`,\n'sfea652f6580ff086': `Tento web má funkce aplikace.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Åpne menyen i nettleseren din`,\n's182ab2d6c997515f': `Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.`,\n's1b9047d53d9f9d22': `2) Trykk på Del-knappen i navigasjonslinjen`,\n's2d90afa5dcca2c0e': `3) Rull ned til «Legg til på Hjem-skjerm»`,\n's37a9e8aec5713460': `Mer`,\n's4593f304dac8848c': `2) Trykk på \"Legg til på Hjem-skjerm\"`,\n's54cfbb14f46396d4': `1) Åpne i hovednettleseren din`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Legg til i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Velg Legg til i Dock`,\n'sba52286c21552a4e': `Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sc79fd7641eb9a975': `Skjul instruksjoner`,\n'scdaf4bbff76674c8': `Legg til på Hjem-skjerm`,\n'se740f75b95a51807': `Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sfea652f6580ff086': `Denne siden har app-funksjonalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Abra o menu do seu navegador`,\n's182ab2d6c997515f': `Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.`,\n's1b9047d53d9f9d22': `2) Pressione Compartilhar na barra de endereço`,\n's2d90afa5dcca2c0e': `3) Role para baixo até \"Adicionar à Tela de Início\"`,\n's37a9e8aec5713460': `Mais`,\n's4593f304dac8848c': `2) Toque em \"Adicionar à Tela de Início\"`,\n's54cfbb14f46396d4': `1) Abra no seu navegador principal`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Adicionar ao Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Pressione Adicionar ao Dock`,\n'sba52286c21552a4e': `Instale no dispositivo para uma melhor experiência e mais fácil acesso.`,\n'sc79fd7641eb9a975': `Ocultar Instruções`,\n'scdaf4bbff76674c8': `Adicionar à Tela de Início`,\n'se740f75b95a51807': `Adicione ao Dock para uma melhor experiência e mais fácil acesso.`,\n'sfea652f6580ff086': `Este site possui funcionalidade de aplicativo.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) ブラウザメニューを開く`,\n's182ab2d6c997515f': `ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。`,\n's1b9047d53d9f9d22': `2) ナビゲーションバーで共有を押す`,\n's2d90afa5dcca2c0e': `3) 「ホーム画面に追加」までスクロールする`,\n's37a9e8aec5713460': `展開`,\n's4593f304dac8848c': `2) 「ホーム画面に追加」をタップする`,\n's54cfbb14f46396d4': `1) メインブラウザで開く`,\n's6196153c4b0c1ea0': `インストール`,\n's922329d6f6213590': `Dockに追加`,\n'sa5ef80b4bb9b39f8': `折りたたむ`,\n'sa7551383d1897fcc': `2) 「Dockに追加」を押す`,\n'sba52286c21552a4e': `デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。`,\n'sc79fd7641eb9a975': `説明を非表示`,\n'scdaf4bbff76674c8': `ホーム画面に追加`,\n'se740f75b95a51807': `ドックに追加して、幅広い体験と簡単なアクセスを実現してください。`,\n'sfea652f6580ff086': `このサイトはアプリ機能があります。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Öppna din webbläsares meny`,\n's182ab2d6c997515f': `Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.`,\n's1b9047d53d9f9d22': `2) Tryck på Dela-knappen i verktygsfältet`,\n's2d90afa5dcca2c0e': `3) Scrolla ner till \"Lägg till på hemskärmen\"`,\n's37a9e8aec5713460': `Mer`,\n's4593f304dac8848c': `2) Tryck på \"Lägg till på hemskärmen\"`,\n's54cfbb14f46396d4': `1) Öppna i din huvudsakliga webbläsare`,\n's6196153c4b0c1ea0': `Installera`,\n's922329d6f6213590': `Lägg till i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Välj Lägg till i Dock`,\n'sba52286c21552a4e': `Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sc79fd7641eb9a975': `Göm instruktioner`,\n'scdaf4bbff76674c8': `Lägg till på hemskärmen`,\n'se740f75b95a51807': `Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sfea652f6580ff086': `Denna webbsajt har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 브라우저 메뉴 열기`,\n's182ab2d6c997515f': `더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.`,\n's1b9047d53d9f9d22': `2) 내비게이션 바에서 공유 버튼 누르기`,\n's2d90afa5dcca2c0e': `3) \"홈 화면에 추가\"로 스크롤하기`,\n's37a9e8aec5713460': `더보기`,\n's4593f304dac8848c': `2) \"홈 화면에 추가\" 탭하기`,\n's54cfbb14f46396d4': `1) 주 브라우저에서 열기`,\n's6196153c4b0c1ea0': `설치`,\n's922329d6f6213590': `Dock에 추가`,\n'sa5ef80b4bb9b39f8': `닫기`,\n'sa7551383d1897fcc': `2) Dock에 추가 버튼 누르기`,\n'sba52286c21552a4e': `더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.`,\n'sc79fd7641eb9a975': `안내 숨기기`,\n'scdaf4bbff76674c8': `홈 화면에 추가`,\n'se740f75b95a51807': `더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.`,\n'sfea652f6580ff086': `이 사이트는 앱 기능을 가지고 있습니다.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) បើកម៉ឺនុយកម្មវិធីរុករករបស់អ្នក`,\n's182ab2d6c997515f': `បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n's1b9047d53d9f9d22': `2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ`,\n's2d90afa5dcca2c0e': `3) អូសចុះទៅកាន់ \"បន្ថែមទៅផ្ទាំងអេក្រង់ដើម\"`,\n's37a9e8aec5713460': `បង្ហាញបន្ថែម`,\n's4593f304dac8848c': `2) ចុចលើ \"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម\"`,\n's54cfbb14f46396d4': `1) បើកនៅក្នុងកម្មវិធីរុករកសំខាន់របស់អ្នក`,\n's6196153c4b0c1ea0': `តំឡើង`,\n's922329d6f6213590': `បន្ថែមទៅកាន់ Dock`,\n'sa5ef80b4bb9b39f8': `បង្ហាញតិច`,\n'sa7551383d1897fcc': `2) ចុចលើ បន្ថែមទៅកាន់ Dock`,\n'sba52286c21552a4e': `តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sc79fd7641eb9a975': `បិទការណែនាំ`,\n'scdaf4bbff76674c8': `បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n'se740f75b95a51807': `បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sfea652f6580ff086': `គេហទំព័រនេះមានមុខងារជាកម្មវិធី។`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `۱) مرورگر خود را باز کنید`,\n's182ab2d6c997515f': `برای تجربه گسترده و دسترسی آسان آن را به صفحه اصلی خود اضافه کنید.`,\n's1b9047d53d9f9d22': `۱)در نوار پایین دکمه (Share) را بزنید`,\n's2d90afa5dcca2c0e': `۳) به پایین اسکرول کنید تا به \"Add to Home Screen\" برسید`,\n's37a9e8aec5713460': `بیشتر`,\n's4593f304dac8848c': `۲) روی \"Add to Home screen\" ضربه بزنید`,\n's54cfbb14f46396d4': `۱) در مرورگر اصلی خود باز کنید`,\n's6196153c4b0c1ea0': `نصب`,\n's922329d6f6213590': `افزودن به (Dock)`,\n'sa5ef80b4bb9b39f8': `کمتر`,\n'sa7551383d1897fcc': `۲) (Add to Dock) را انتخاب کنید `,\n'sba52286c21552a4e': `برای تجربه گسترده و دسترسی آسان آن را بر روی دستگاه خود نصب کنید.`,\n'sc79fd7641eb9a975': ` مخفی کردن مراحل`,\n'scdaf4bbff76674c8': `افزودن به (Home Screen)`,\n'se740f75b95a51807': `برای تجربه گسترده و دسترسی آسان آن را به Dock خود اضافه کنید.`,\n'sfea652f6580ff086': ` این سایت دارای قابلیت اپلیکیشن است. `,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Åbn din browsermenu`,\n's182ab2d6c997515f': `Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.`,\n's1b9047d53d9f9d22': `2) Tryk på Del-knappen i navigationslinjen`,\n's2d90afa5dcca2c0e': `3) Rul ned til \"Tilføj til hjemmeskærm\"`,\n's37a9e8aec5713460': `Mere`,\n's4593f304dac8848c': `2) Tryk på \"Tilføj til hjemmeskærm\"`,\n's54cfbb14f46396d4': `1) Åbn i din primære browser`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Tilføj til Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Vælg Tilføj til Dock`,\n'sba52286c21552a4e': `Installer den på din enhed for en bedre oplevelse og nem adgang.`,\n'sc79fd7641eb9a975': `Skjul instruktion`,\n'scdaf4bbff76674c8': `Tilføj til hjemmeskærm`,\n'se740f75b95a51807': `Tilføj den til din Dock for en bedre oplevelse og nem adgang.`,\n'sfea652f6580ff086': `Denne side har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Mở menu trình duyệt của bạn`,\n's182ab2d6c997515f': `Thêm nó vào màn hình chính của bạn để có trải nghiệm phong phú hơn và truy cập dễ dàng hơn.`,\n's1b9047d53d9f9d22': `2) Nhấp vào nút \"Chia sẻ\" trên thanh điều hướng`,\n's2d90afa5dcca2c0e': `3) Kéo đến mục \"Thêm vào Màn hình chính\"`,\n's37a9e8aec5713460': `Thêm`,\n's4593f304dac8848c': `2) Nhấn vào \"Thêm vào Màn hình chính\"`,\n's54cfbb14f46396d4': `1) Mở trình duyệt chính của bạn`,\n's6196153c4b0c1ea0': `Cài đặt`,\n's922329d6f6213590': `Thêm vào Dock`,\n'sa5ef80b4bb9b39f8': `Thu gọn`,\n'sa7551383d1897fcc': `2) Nhấp vào \"Thêm vào Dock\"`,\n'sba52286c21552a4e': `Cài đặt trên thiết bị của bạn để có trải nghiệm phong phú hơn và truy cập dễ dàng.`,\n'sc79fd7641eb9a975': `Ẩn các bước cài đặt`,\n'scdaf4bbff76674c8': `Thêm vào màn hình chính`,\n'se740f75b95a51807': `Thêm nó vào Dock của bạn để có trải nghiệm toàn diện hơn và truy cập dễ dàng hơn.`,\n'sfea652f6580ff086': `Trang web này có cả chức năng đặc trưng ứng dụng.`,\n };\n ","import { configureLocalization } from '@lit/localize';\r\nimport {\r\n sourceLocale,\r\n targetLocales,\r\n} from './locale-codes';\r\n\r\nimport * as ru from './locales/ru';\r\nimport * as tr from './locales/tr';\r\nimport * as de from \"./locales/de\";\r\nimport * as es from \"./locales/es\";\r\nimport * as nl from \"./locales/nl\";\r\nimport * as el from \"./locales/el\";\r\nimport * as fr from \"./locales/fr\";\r\nimport * as sr from \"./locales/sr\";\r\nimport * as pl from \"./locales/pl\";\r\nimport * as uk from \"./locales/uk\";\r\nimport * as zhHK from \"./locales/zh-HK\";\r\nimport * as zhCN from \"./locales/zh-CN\";\r\nimport * as it from \"./locales/it\";\r\nimport * as cs from \"./locales/cs\";\r\nimport * as no from \"./locales/no\";\r\nimport * as pt from \"./locales/pt\";\r\nimport * as ja from \"./locales/ja\";\r\nimport * as sv from \"./locales/sv\";\r\nimport * as ko from \"./locales/ko\";\r\nimport * as km from \"./locales/km\";\r\nimport * as fa from \"./locales/fa\";\r\nimport * as da from \"./locales/da\";\r\nimport * as vi from \"./locales/vi\";\r\n\r\nconst localizedTemplates = new Map([\r\n ['ru', ru],\r\n ['tr', tr],\r\n ['de', de],\r\n ['es', es],\r\n ['nl', nl],\r\n ['el', el],\r\n ['fr', fr],\r\n ['sr', sr],\r\n ['pl', pl],\r\n ['uk', uk],\r\n ['zh-HK', zhHK],\r\n ['zh-CN', zhCN],\r\n ['it', it],\r\n ['cs', cs],\r\n ['no', no], // + nb\r\n ['pt', pt],\r\n ['ja', ja],\r\n ['sv', sv],\r\n ['ko', ko],\r\n ['km', km],\r\n ['fa', fa],\r\n ['da', da],\r\n ['vi', vi],\r\n])\r\n\r\nexport const { getLocale, setLocale } = configureLocalization({\r\n sourceLocale,\r\n targetLocales,\r\n // @ts-ignore\r\n loadLocale: async (lang: string) => localizedTemplates.get(lang)\r\n});\r\n\r\nexport const changeLocale = async (lang: string) => {\r\n // Norwegian Bokmål is same as Norwegian\r\n switch (lang.slice(0, 2)) {\r\n case 'nb':\r\n lang = 'no';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // Fallback to simplified Chinese\r\n switch (lang) {\r\n case 'zh':\r\n case 'zh-TW':\r\n lang = 'zh-CN';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n try {\r\n if (localizedTemplates.get(lang))\r\n await setLocale(lang);\r\n else\r\n await setLocale(lang.slice(0, 2));\r\n }\r\n catch {\r\n console.warn(`pwa-install: translation error - unsupported locale: ${lang}`);\r\n }\r\n};\r\n\r\nexport const isRTL = () => {\r\n let locale = getLocale();\r\n return ['ar', 'he', 'fa', 'ur'].includes(getLocale());\r\n}\r\n","import { ImageResource } from 'web-app-manifest';\r\n\r\nexport interface IRelatedApp {\r\n id: string,\r\n platform: string,\r\n url: string\r\n}\r\n\r\nexport interface IWindow extends Window {\r\n defferedPromptEvent: BeforeInstallPromptEvent | null;\r\n BeforeInstallPromptEvent: BeforeInstallPromptEvent;\r\n}\r\n\r\ntype Booleanish = 'true' | 'false';\r\n\r\nexport interface PWAInstallAttributes {\r\n ['manual-apple']?: Booleanish;\r\n ['manual-chrome']?: Booleanish;\r\n ['disable-chrome']?: Booleanish;\r\n ['install-description']?: string;\r\n ['disable-install-description']?: Booleanish;\r\n ['manifest-url']?: string;\r\n name?: string;\r\n description?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ManifestScreenshot extends ImageResource {\r\n label?: string;\r\n platform?: string;\r\n form_factor?: \"wide\" | \"narrow\";\r\n}\r\n\r\nexport class Manifest {\r\n constructor() {\r\n this.icons = [{ src: '' }];\r\n this.screenshots = undefined;\r\n this.short_name = 'PWA';\r\n this.name = 'Progressive web application';\r\n this.description = 'Progressive web application';\r\n }\r\n short_name: string;\r\n icons: ImageResource[];\r\n screenshots?: ManifestScreenshot[];\r\n name: string;\r\n description: string;\r\n}\r\n","import {css} from 'lit'; export default css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-inline-start:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-inline-end:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px;margin:0 auto}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-inline-start:7px}.gallery.apple_mobile .btn.prev svg{margin-inline-start:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`;\n ","import { WebAppManifest } from 'web-app-manifest';\r\nimport { IRelatedApp, Manifest } from './types/types';\r\n\r\nconst _eventDispatcher = (_element: Element, name: string, message: string) => {\r\n const event = new CustomEvent(name, {\r\n detail: {\r\n message\r\n }\r\n });\r\n _element.dispatchEvent(event);\r\n}\r\nexport default class Utils {\r\n static isAppleMobile(): boolean {\r\n\t\tif (\r\n (\r\n ['iPhone', 'iPad', 'iPod'].includes(navigator.platform) ||\r\n (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2)\r\n )\r\n && ('serviceWorker' in navigator)\r\n )\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static isAppleDesktop(): boolean {\r\n // check if it's a mac\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n if (navigator.maxTouchPoints || !userAgent.match(/macintosh/))\r\n return false;\r\n // check safari version >= 17\r\n const version = /version\\/(\\d{2})\\./.exec(userAgent)\r\n if (!version || !version[1] || !(parseInt(version[1]) >= 17))\r\n return false;\r\n // hacky way to detect Sonoma\r\n const audioCheck = document.createElement('audio').canPlayType('audio/wav; codecs=\"1\"') ? true : false;\r\n const webGLCheck = new OffscreenCanvas(1, 1).getContext('webgl') ? true : false;\r\n\r\n return audioCheck && webGLCheck;\r\n }\r\n\r\n static isAndroid(): boolean {\r\n if (navigator.userAgent.toLowerCase().match(/android/))\r\n return true;\r\n return false;\r\n }\r\n\r\n static isAndroidFallback(): boolean {\r\n if (this.isAndroid() && !('BeforeInstallPromptEvent' in window))\r\n return true;\r\n return false;\r\n }\r\n\r\n static deviceFormFactor(): 'narrow' | 'wide' {\r\n return window.matchMedia('(orientation: portrait)').matches? 'narrow' : 'wide';\r\n }\r\n \r\n static isStandalone() {\r\n\t\tif (window.matchMedia('(display-mode: standalone)').matches || ('standalone' in navigator && (navigator as any).standalone === true))\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static async getInstalledRelatedApps(): Promise {\r\n if ('getInstalledRelatedApps' in navigator)\r\n try{\r\n return await (navigator as any).getInstalledRelatedApps().then((relatedApps: IRelatedApp[]) => {\r\n return relatedApps;\r\n });\r\n } catch (e) {}\r\n \r\n return [];\r\n }\r\n \r\n static async isRelatedAppsInstalled(): Promise {\r\n const _relatedApps = await this.getInstalledRelatedApps();\r\n return _relatedApps.length? true : false;\r\n }\r\n\r\n static setStorageFlag(name: string, value:boolean, persistent: boolean = false) {\r\n try {\r\n if (persistent)\r\n localStorage.setItem(name, value.toString());\r\n else\r\n sessionStorage.setItem(name, value.toString());\r\n } catch (e) {}\r\n }\r\n static getStorageFlag(name: string): boolean {\r\n try {\r\n return sessionStorage.getItem(name) === 'true' || localStorage.getItem(name) === 'true';\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n static eventInstalledSuccess(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-success-event', 'App install success (Chromium/Android only)');\r\n }\r\n static eventInstalledFail(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-fail-event', 'App install failed (Chromium/Android only)');\r\n }\r\n static eventUserChoiceResult(_element: Element, message: string) {\r\n _eventDispatcher(_element, 'pwa-user-choice-result-event', message);\r\n }\r\n static eventInstallAvailable(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-available-event', 'App install available');\r\n }\r\n static eventInstallHowTo(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-how-to-event', 'App install instruction showed');\r\n }\r\n static eventGallery(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-gallery-event', 'App install gallery showed');\r\n }\r\n\r\n static normalizeManifestAssetUrls(manifest: WebAppManifest, manifestUrl: string) {\r\n const normalizedManifestUrl = new URL(manifestUrl, document.location.href);\r\n [...manifest.icons || [], ...manifest.screenshots || []].forEach(asset => {\r\n asset.src = new URL(asset.src, normalizedManifestUrl).href;\r\n })\r\n }\r\n\r\n static async fetchAndProcessManifest(manifestUrl: string, icon: string, name: string, description: string): Promise<{_manifest: WebAppManifest, icon: string, name: string, description: string}> {\r\n let _manifest: WebAppManifest = new Manifest();\r\n let _json: WebAppManifest | null = null;\r\n try{\r\n\t\t\tconst _response = await fetch(manifestUrl);\r\n\t\t\t_json = await _response.json() as WebAppManifest;\r\n\t\t\tif (!_response.ok || !_json || !Object.keys(_json))\r\n\t\t\t\tthrow new Error('Manifest not found');\r\n\t\t\tthis.normalizeManifestAssetUrls(_json, manifestUrl);\r\n } \r\n catch(e) {} \r\n\r\n icon = icon || (_json?.icons?.length ? _json?.icons![0].src : _manifest.icons?.[0].src) || '';\r\n name = name || (_json? _json['short_name']: _manifest['short_name']) || '';\r\n description = description || _json?.description || _manifest.description || '';\r\n\t\t_manifest = _json || _manifest;\r\n \r\n return {\r\n _manifest,\r\n icon,\r\n name,\r\n description\r\n }\r\n }\r\n}","import { html } from 'lit';\r\nimport Utils from '../utils';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nconst template = (screenshots: ManifestScreenshot[], theme: string, scrollToNextPage: any, scrollToPrevPage: any) => {\r\n\r\n return html`\r\n ${screenshots? html`\r\n
\r\n
\r\n
\r\n ${screenshots.filter(screenshot => !screenshot.form_factor || screenshot.form_factor === Utils.deviceFormFactor()).map(screenshot => html`${screenshot.label || \"\"}`)}\r\n
\r\n
\r\n \r\n ${theme != 'default'?\r\n html``\r\n :\r\n html``\r\n }\r\n \r\n \r\n ${theme != 'default'?\r\n html`\r\n \r\n `\r\n :\r\n html`\r\n \r\n \r\n \r\n `\r\n }\r\n \r\n
`\r\n : ''}`;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nimport styles from './styles-gallery.scss';\r\nimport template from './template-gallery';\r\n\r\n@customElement('pwa-gallery')\r\nexport default class PWAGalleryElement extends LitElement {\r\n\t@property({ type: Array }) screenshots: ManifestScreenshot[] = [];\r\n\t@property() theme: 'default' | 'apple_desktop' | 'apple_mobile' = 'default';\r\n\t@property({ type: Boolean }) rtl: boolean = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tprivate getScrollElements = () => {\r\n\t\tconst gallery = this.shadowRoot?.querySelector('#paginated_gallery') as HTMLElement | null;\r\n\t\tif (!gallery) return;\r\n\t\t\r\n\t\tconst galleryScroller = gallery.querySelector('.gallery_scroller') as HTMLElement | null;\r\n\t\tif (!galleryScroller) return;\r\n\t\r\n\t\tconst galleryItems = Array.from(galleryScroller.querySelectorAll('img')) as HTMLElement[];\r\n\t\tif (galleryItems.length === 0) return;\r\n\t\r\n\t\treturn {\r\n\t\t\tscroller: galleryScroller,\r\n\t\t\titems: galleryItems\r\n\t\t};\r\n\t};\r\n\t\r\n\tprivate findCurrentItem = (scroller: HTMLElement, items: HTMLElement[]): HTMLElement | null => {\r\n\t\tconst scrollLeft = scroller.scrollLeft * (this.rtl? -1 : 1);\r\n\t \t// Find the item closest to the center of the viewport.\r\n\t\treturn items.find((item) => (item.offsetWidth + item.offsetLeft * (this.rtl? -1 : 1)) >= scrollLeft + (item.offsetWidth / 2.5)) || null;\r\n\t};\r\n\t\r\n\tprivate scrollToPage = (direction: 'next' | 'prev') => {\r\n\t\tconst scrollData = this.getScrollElements();\r\n\t\tif (!scrollData) return;\r\n\t\r\n\t\tconst { scroller, items } = scrollData;\r\n\t\tconst currentItem = this.findCurrentItem(scroller, items);\r\n\t\tif (!currentItem) return;\r\n\t\r\n\t\tconst currentIndex = items.indexOf(currentItem);\r\n\t\tconst offset = (direction === 'next' ? 1 : -1) * (this.rtl? -1 : 1) ;\r\n\t\tconst targetIndex = currentIndex + offset;\r\n\t\t\r\n\t\tif (targetIndex >= 0 && targetIndex < items.length) {\r\n\t\t\titems[targetIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\r\n\t\t}\r\n\t};\r\n\t\r\n\tpublic scrollToNextPage = () => {\r\n\t\tthis.scrollToPage('next');\r\n\t};\r\n\t\r\n\tpublic scrollToPrevPage = () => {\r\n\t\tthis.scrollToPage('prev');\r\n\t};\r\n\r\n\r\n\tprivate _init = () => {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tconst _tools = this.getScrollElements();\r\n\t\tif (_tools)\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\t_tools.scroller.scrollTo({\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t300\r\n\t\t\t)\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\tthis._init();\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(\r\n this.screenshots,\r\n\t\t\tthis.theme,\r\n\t\t\tthis.scrollToNextPage,\r\n\t\t\tthis.scrollToPrevPage\r\n )}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`.dialog-body .icon{display:flex;align-items:flex-start}.dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}.dialog-body .about{display:grid;grid-template-rows:30px auto}.dialog-body .about .hostname,.dialog-body .about .name{padding:0 5px;overflow:hidden}.dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}.dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}.dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:start;word-break:break-all;white-space:nowrap}.dialog-body .about+hr{margin-top:10px}.dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:start}.dialog-body .app-description{font-size:13px;margin-bottom:10px}.dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}.dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}.dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}.dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.dialog-body .install-description{font-size:14px}.dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}.dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}.dialog-body .action-buttons .primary{grid-column-start:2}.dialog-body .material-button{--text-color-primary:#eee;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#eee;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,\"Segoe UI\",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}.dialog-body .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}.dialog-body .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}.dialog-body .material-button.secondary::after,.dialog-body .material-button.secondary::before{background-color:var(--background-color-primary)}.dialog-body .material-button.secondary:active,.dialog-body .material-button.secondary:hover{box-shadow:none}.dialog-body .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-inline-end:0;margin-inline-start:auto;padding:0;border-radius:50%}.dialog-body .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}.dialog-body .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}.dialog-body .material-button.secondary.close::before{border-radius:50%}.dialog-body .material-button::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}.dialog-body .material-button::after{content:\"\";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}.dialog-body .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.dialog-body .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}.dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}@media(prefers-color-scheme:dark){.dialog-body .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(hover:none)and (pointer:coarse){.dialog-body .description::-webkit-scrollbar{display:none}}`;\n ","import {css} from 'lit'; export default css`:host{grid-template-columns:1fr}:host .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}:host .touch-header:active{cursor:grabbing}:host .touch-header::before{content:\"\";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}:host .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}:host .body-header .install{text-transform:capitalize;height:40px;min-width:50px;padding:0 23px;align-items:center;display:inline-flex;-webkit-tap-highlight-color:transparent;transition:min-width .2s,color .2s,background-color .2s,border-color .2s}:host .body-header .install .button-text,:host .body-header .install svg{margin:0 auto}:host .body-header .install .check-icon{display:none}:host .body-header .about{grid-template-rows:auto auto;grid-gap:6px}:host .body-header .about .name{padding:0;line-height:20px;font-size:16px}:host .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}:host .body-header .icon .icon-image{margin:0;width:45px;height:45px}:host .how-to-body{display:flex;flex-direction:column;gap:15px;max-height:0;overflow:hidden;padding:0 20px;opacity:0}:host .how-to-body .description-step{display:flex;gap:15px;margin-inline-start:2.5px;align-items:center}:host .how-to-body .description-step .svg-wrap{display:flex;align-items:center;width:40px;height:40px;background-color:var(--touch-header-color);border-radius:50%}:host .how-to-body .description-step .svg-wrap svg{fill:var(--text-color-normal);margin:0 auto}:host .how-to-body .description-step .svg-wrap.add-icon svg{padding-right:1px}:host .how-to .description,:host .how-to ::slotted(pwa-gallery){max-height:0;padding-top:0;padding-bottom:0;overflow:hidden;opacity:0}:host .how-to .how-to-body{max-height:600px;padding-top:18px;padding-bottom:18px;opacity:1}:host .how-to .install{min-width:40px;padding:0;background:rgba(0,0,0,0);color:var(--text-color-normal);box-shadow:none;border:1px solid}:host .how-to .install .check-icon{display:inline;fill:var(--text-color-normal)}:host .how-to .install .button-text{display:none}:host .description{padding:15px 20px;margin:0;-webkit-line-clamp:6;max-height:150px;opacity:1}:host ::slotted(pwa-gallery){display:block;max-height:600px;padding-bottom:15px;opacity:1;transition:max-height 1.5s,opacity .8s,padding 1.5s}:host .description,:host .how-to-body{transition:max-height .2s,opacity .15s,padding .2s}:host .material-button{border-radius:20px}`;\n ","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"classMap\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_directives_class_map_js_2f88e643__.classMap) });","import { html } from 'lit';\r\nimport { msg } from '@lit/localize';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\n\r\nconst fallbackClass = (isAndroidFallback: boolean = false, howToRequested: boolean = false) => {\r\n return {fallback: isAndroidFallback, 'how-to': howToRequested};\r\n}\r\n\r\nconst template = (name: string, description: string, icon: string, install: any, fallback?: boolean, howToRequested?: boolean) => {\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${location.hostname}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${msg('1) Open your browser menu')}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${msg('2) Tap \"Add to Home screen\"')}
\r\n
\r\n
\r\n ${description ? html `
${description}
`: ''}\r\n \r\n
\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\n\r\nimport stylesCommon from '../styles-common.scss'\r\nimport styles from './styles-bottom-sheet.scss';\r\n\r\n// import TouchDragListener from \"./touch-listener\";\r\n\r\ntype IProps = {\r\n name: string,\r\n description: string,\r\n icon: string\r\n}\r\n\r\nimport template from './template-bottom-sheet';\r\nimport Utils from '../../../utils';\r\n\r\n@customElement('pwa-bottom-sheet')\r\nexport default class PWABottomSheetElement extends LitElement {\r\n\tstatic get styles() {\r\n\t\treturn [stylesCommon, styles];\r\n\t}\r\n\r\n\t@property({type: Object}) props: IProps = {\r\n name: '',\r\n description: '',\r\n icon: ''\r\n };\r\n @property({type: Object}) install = {handleEvent: () => {}};\r\n\t@property() hideDialog = () => {};\r\n\t@property({type: Boolean}) disableClose = false;\r\n\r\n\t@property({type: Boolean}) fallback = false;\r\n\t@property({type: Boolean}) howToRequested = false;\r\n\t@property({type: Object}) toggleHowTo = {handleEvent: () => {}};\r\n\r\n\tprivate _callInstall = () => {\r\n\t\tif (this.fallback) {\r\n\t\t\tthis.toggleHowTo.handleEvent();\r\n\t\t\tsetTimeout(() => this.setupAppearence(true), 210);\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.install.handleEvent();\r\n\t}\r\n\r\n\tprivate _callHide = () => {\r\n\t\tthis.hideDialog();\r\n\t\tthis.setupAppearence();\r\n\t}\r\n\r\n\tprivate bindedElement: {\r\n\t\ttouchElement: HTMLElement,\r\n\t\tlistener: any }| null = null;\r\n\tprivate readonly _saveBodyStyle = document.body.style.overscrollBehaviorY;\r\n\tprivate dragMobileSheet = (element: HTMLElement | null | undefined, touchTargetElement: HTMLElement | undefined, infoElement: HTMLElement | undefined) => {\r\n\t\tif (!element || !touchTargetElement || !infoElement)\r\n\t\t\treturn null;\r\n\r\n\t\tlet dragOffset = 0;\r\n\t\tconst bounceOffset = 35;\r\n\t\t\r\n\t\tconst bottomSize = infoElement.offsetHeight + infoElement.offsetTop;\r\n\r\n\t\tconst getYCoord = (e: MouseEvent | TouchEvent): number => {\r\n\t\t\treturn (e as MouseEvent).clientY || ((e as TouchEvent).changedTouches && (e as TouchEvent).changedTouches.length? (e as TouchEvent).changedTouches[0].clientY : 0);\r\n\t\t}\r\n\r\n\t\tconst dragMouseDown = (e: MouseEvent | TouchEvent) => {\r\n\t\t\twindow.addEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.addEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.addEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.addEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tdragOffset = getYCoord(e) - touchTargetElement.getBoundingClientRect().top;\r\n\r\n\t\t\tdocument.body.style.overscrollBehaviorY = 'none';\r\n\t\t}\r\n\t\tconst dragMouseUp = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tdocument.body.style.overscrollBehaviorY = this._saveBodyStyle;\r\n\r\n\t\t\tif (!this.disableClose && getYCoord(e) >= window.innerHeight - 25) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight + 50, true);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (window.innerHeight - getYCoord(e) > element.clientHeight / 2.5) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - element.clientHeight);\r\n\t\t\t\t\r\n\t\t\t\ttry {\r\n\t\t\t\t\t!this.howToRequested && Utils.eventGallery((this.getRootNode() as ShadowRoot).host);\r\n\t\t\t\t} catch (e) {}\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - bottomSize - bounceOffset);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dragMouseMove = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tconst currentY = getYCoord(e);\r\n\r\n\t\t\tif (this.disableClose && window.innerHeight - currentY < 70) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (currentY <= (window.innerHeight - element.clientHeight + dragOffset)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`none`\r\n\t\t\t)\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"--translateY\",\r\n\t\t\t\t`translateY(${currentY - dragOffset}px)`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst closeDragElement = (e: MouseEvent | TouchEvent, toPoint?: number, hideDialog?: boolean) => {\r\n\t\t\twindow.removeEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.removeEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.removeEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.removeEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tif (window.innerWidth >= 768)\r\n\t\t\t\treturn\r\n\r\n\t\t\tif (!toPoint && getYCoord(e) >= window.innerHeight - bottomSize)\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(calc(100vh - ${bottomSize}px))`\r\n\t\t\t\t);\r\n\t\t\telse\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(${(toPoint || getYCoord(e)) + bounceOffset}px)`\r\n\t\t\t\t);\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s`\r\n\t\t\t);\r\n\r\n\t\t\tif (hideDialog){\r\n\t\t\t\ttouchTargetElement.removeEventListener('mousedown', dragMouseDown);\r\n\t\t\t\ttouchTargetElement.removeEventListener('touchstart', dragMouseDown);\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\tthis._callHide,\r\n\t\t\t\t\t250\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ttouchTargetElement.addEventListener('mousedown', dragMouseDown);\r\n\t\ttouchTargetElement.addEventListener('touchstart', dragMouseDown, {passive: false});\r\n\r\n\t\tcloseDragElement(new MouseEvent('mouseup'), window.innerHeight - bottomSize - bounceOffset);\r\n\r\n\t\treturn {\r\n\t\t\ttouchElement: touchTargetElement,\r\n\t\t\tlistener: dragMouseDown\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupAppearence = (fullOpen?: boolean) => {\r\n\t\tif (this.bindedElement) {\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('mousedown', this.bindedElement.listener);\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('touchstart', this.bindedElement.listener);\r\n\t\t}\r\n\t\t\r\n\t\tthis.bindedElement = this.dragMobileSheet(\r\n\t\t\tthis.parentElement,\r\n\t\t\tthis.shadowRoot?.querySelector('.dialog-body .touch-header') as HTMLElement,\r\n\t\t\tthis.shadowRoot?.querySelector(`.dialog-body ${fullOpen? '.how-to-body': '.body-header'}`) as HTMLElement);\r\n\t}\r\n\tprivate _init = () => {\r\n\t\tthis.setupAppearence();\r\n\r\n\t\twindow.addEventListener('resize', () => this.setupAppearence());\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tthis._init();\r\n return;\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(this.props.name, this.props.description, this.props.icon, this._callInstall, this.fallback, this.howToRequested)}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,\"Segoe UI\",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#eee;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}`;\n ","import {css} from 'lit'; export default css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,\"Segoe UI\";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon description\" \"welcome welcome\" \"how-to how-to\" \"gallery gallery\" \"button button\";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-inline-end:7px;margin-top:7px;margin-inline-start:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-inline-end:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-inline-end:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;padding:0;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:start;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;grid-template-columns:unset;gap:unset;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:start}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-inline-end:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:start}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon\" \"description\" \"welcome\" \"how-to\" \"gallery\" \"button\";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-inline-end:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-inline-end:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop pwa-gallery{margin:0 -10px}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;\n ","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\nimport { ManifestScreenshot } from '../../types/types';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, install: any, toggleGallery: any, galleryRequested: boolean, toggleHowTo: any, howToRequested: boolean, isAndroidFallback: boolean, isRTL: boolean = false) => {\r\n const installDialogClasses = () => { return {available: installAvailable, gallery: galleryRequested }};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n ${!disableClose? html`` : ''}\r\n
\r\n
${location.hostname}
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n ${!disableDescription? \r\n html`
${installDescription? installDescription: `${msg('This site has app functionality.')} ${msg('Install it on your device for extensive experience and easy access.')}`}
` \r\n : ''}\r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n ${screenshotsAvailable? html``:''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n ${screenshotsAvailable? html``: ''}\r\n \r\n
\r\n
`;\r\n};\r\nexport default template;\r\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, howToForApple: any, isDesktop: boolean, howToRequested: boolean, toggleGallery: any, galleryRequested: boolean, isRTL: boolean = false) => {\r\n const installDialogClassesApple = () => { return {available: installAvailable, 'how-to': howToRequested, gallery: galleryRequested, desktop: isDesktop}};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, PropertyValues, html } from 'lit';\r\nimport { localized } from '@lit/localize';\r\nimport { property, state, customElement } from 'lit/decorators.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { changeLocale, isRTL } from './localization';\r\n\r\nimport { IRelatedApp, Manifest, IWindow, PWAInstallAttributes } from './types/types';\r\n\r\nimport PWAGalleryElement from './gallery';\r\nimport PWABottomSheetElement from './templates/chrome/bottom-sheet';\r\n\r\nimport Utils from './utils';\r\n\r\ndeclare const window: IWindow;\r\n\r\nimport styles from './templates/chrome/styles.scss';\r\nimport stylesCommon from './templates/chrome/styles-common.scss'\r\nimport stylesApple from './templates/apple/styles-apple.scss';\r\n\r\nimport template from './templates/chrome/template';\r\nimport templateApple from './templates/apple/template-apple';\r\n\r\n/**\r\n * @event {CustomEvent} pwa-install-success-event - App install success (Chromium/Android only)\r\n * @event {CustomEvent} pwa-install-fail-event - App install failed (Chromium/Android only)\r\n * @event {CustomEvent} pwa-user-choice-result-event - dismissed, accepted\r\n * @event {CustomEvent} pwa-install-available-event - App install available\r\n * @event {CustomEvent} pwa-install-how-to-event - App install instruction showed\r\n * @event {CustomEvent} pwa-install-gallery-event - App install gallery showed\r\n */\r\n@localized()\r\n@customElement('pwa-install')\r\nexport class PWAInstallElement extends LitElement {\r\n\t@property({attribute: 'manifest-url'}) manifestUrl = '/manifest.json';\r\n\t@property() icon = '';\r\n\t@property() name = '';\r\n\t@property() description = '';\r\n\t@property({attribute: 'install-description'}) installDescription = '';\r\n\t@property({attribute: 'disable-install-description', type: Boolean}) disableDescription = false;\r\n\t@property({attribute: 'disable-screenshots', type: Boolean}) disableScreenshots = false;\r\n\t@property({attribute: 'disable-screenshots-apple', type: Boolean}) disableScreenshotsApple = false;\r\n\t@property({attribute: 'disable-screenshots-chrome', type: Boolean}) disableScreenshotsChrome = false;\r\n\t@property({attribute: 'manual-apple', type: Boolean}) manualApple = false;\r\n\t@property({attribute: 'manual-chrome', type: Boolean}) manualChrome = false;\r\n\t@property({attribute: 'disable-chrome', type: Boolean}) disableChrome = false;\r\n\t@property({attribute: 'disable-close', type: Boolean}) disableClose = false;\r\n\t@property({attribute: 'disable-android-fallback', type: Boolean}) disableFallback = false;\r\n\t@property({attribute: 'use-local-storage', type: Boolean}) useLocalStorage = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn [ styles, stylesCommon, stylesApple ];\r\n\t}\r\n\r\n\t@state() externalPromptEvent: BeforeInstallPromptEvent | null = null;\r\n\r\n\tpublic platforms: BeforeInstallPromptEvent['platforms'] = [];\r\n\tpublic userChoiceResult = '';\r\n\r\n\tpublic isDialogHidden: boolean = Utils.getStorageFlag('pwa-hide-install');\r\n\tpublic isInstallAvailable = false;\r\n\tpublic isAppleMobilePlatform = false;\r\n\tpublic isAppleDesktopPlatform = false;\r\n\tpublic isAndroidFallback = false;\r\n\tpublic isAndroid = false;\r\n\tpublic isUnderStandaloneMode = false;\r\n\tpublic isRelatedAppsInstalled = false;\r\n\r\n\t/** @internal */\r\n\tprivate _isRTL = false;\r\n\r\n\t/** @internal */\r\n\tprivate _manifest: Manifest = new Manifest();\r\n\t/** @internal */\r\n\tprivate _howToRequested = false;\r\n\t/** @internal */\r\n\tprivate _galleryRequested = false;\r\n\t/** @internal */\r\n\tprivate _install = {\r\n\t\thandleEvent: () => {\r\n\t\t\tif (window.defferedPromptEvent) {\r\n\t\t\t\tthis.hideDialog();\r\n\t\t\t\twindow.defferedPromptEvent.prompt();\r\n\t\t\t\twindow.defferedPromptEvent.userChoice\r\n\t\t\t\t\t.then((choiceResult: PromptResponseObject) => {\r\n\t\t\t\t\t\tthis.userChoiceResult = choiceResult.outcome;\r\n\t\t\t\t\t\tUtils.eventUserChoiceResult(this, this.userChoiceResult);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tUtils.eventInstalledFail(this);\r\n\t\t\t\t\t});\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\tpublic install = () => {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis._howToRequested = true;\r\n\t\t\tthis.requestUpdate();\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._install.handleEvent();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialog = {\r\n\t\thandleEvent: () => {\r\n\t\t\tthis.isDialogHidden = true;\r\n\t\t\tUtils.setStorageFlag('pwa-hide-install', true, this.useLocalStorage);\r\n\t\t\tthis.requestUpdate();\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialogUser = () => {\r\n\t\tUtils.eventUserChoiceResult(this, 'dismissed');\r\n\t\tthis.userChoiceResult = 'dismissed';\r\n\t\tthis.hideDialog();\r\n\t}\r\n\tpublic hideDialog = () => {\r\n\t\tthis._hideDialog.handleEvent();\r\n\t}\r\n\tpublic showDialog = (forced = false) => {\r\n\t\tthis.isDialogHidden = false;\r\n\t\tif (forced)\r\n\t\t\tthis.isInstallAvailable = true;\r\n\t\tUtils.setStorageFlag('pwa-hide-install', false, this.useLocalStorage);\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tpublic getInstalledRelatedApps = async (): Promise => {\r\n\t\treturn await Utils.getInstalledRelatedApps();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _toggleHowTo = {\r\n handleEvent: () => {\r\n\t\t\tthis._howToRequested = !this._howToRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._galleryRequested = false;\r\n\t\t\tthis.requestUpdate();\r\n\r\n\t\t\tif (this._howToRequested) {\r\n\t\t\t\tUtils.eventInstallHowTo(this);\r\n\t\t\t}\t\t\t\t\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate _toggleGallery = {\r\n handleEvent: () => {\r\n\t\t\tthis._galleryRequested = !this._galleryRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._howToRequested = false;\r\n\r\n\t\t\tthis._galleryRequested && Utils.eventGallery(this);\r\n\r\n\t\t\tthis.requestUpdate();\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate async _checkPlatform() {\r\n\t\tthis.isUnderStandaloneMode = Utils.isStandalone();\r\n\t\tthis.isRelatedAppsInstalled = await Utils.isRelatedAppsInstalled();\r\n\t\tthis.isAppleMobilePlatform = Utils.isAppleMobile();\r\n\t\tthis.isAppleDesktopPlatform = Utils.isAppleDesktop();\r\n\t\tthis.isAndroidFallback = Utils.isAndroidFallback();\r\n\t\tthis.isAndroid = Utils.isAndroid();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _checkInstallAvailable() {\r\n\t\tif (this.isUnderStandaloneMode)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis.manualApple && this.hideDialog();\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t},\r\n\t\t\t\t1000\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet _promptTriggered = false;\r\n\t\tif (!this.disableChrome && window.BeforeInstallPromptEvent) {\r\n\t\t\tthis.manualChrome && this.hideDialog();\r\n\t\t\tconst _promptHandler = (e: BeforeInstallPromptEvent) => {\r\n\t\t\t\twindow.defferedPromptEvent = e;\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.platforms = e.platforms;\r\n\r\n\t\t\t\tif (this.isRelatedAppsInstalled) {\r\n\t\t\t\t\tthis.isInstallAvailable = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userChoiceResult === 'accepted'){\r\n\t\t\t\t\tthis.isDialogHidden = true;\r\n\t\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t_promptTriggered = true;\r\n\t\t\t\tthis.isAndroidFallback = false;\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t\tif (this.externalPromptEvent != null)\r\n\t\t\t\tsetTimeout(() => _promptHandler(this.externalPromptEvent!), 300);\r\n\t\t\telse\r\n\t\t\t\twindow.addEventListener('beforeinstallprompt', _promptHandler);\r\n\t\t}\r\n\t\t\r\n\t\tif (!this.disableFallback && this.isAndroid && !_promptTriggered) {\r\n\t\t\t// browsers without BeforeInstallPromptEvent\r\n\t\t\tif (this.isAndroidFallback) {\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t1000\r\n\t\t\t\t);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t// trying to fix browsers like Opera with BeforeInstallPromptEvent not working\r\n\t\t\tif ('userActivation' in navigator && !this.isRelatedAppsInstalled) {\r\n\t\t\t\tconst _activation = navigator.userActivation;\r\n\t\t\t\tconst _activationHandler = setInterval(() => {\r\n\t\t\t\t\tif (_activation.isActive || _activation.hasBeenActive) {\r\n\t\t\t\t\t\tif (!_promptTriggered) {\r\n\t\t\t\t\t\t\tthis.isAndroidFallback = true;\r\n\t\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\t\tthis.requestUpdate();\r\n\t\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tclearInterval(_activationHandler);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 1000);\r\n\t\t\t\tsetTimeout(() => clearInterval(_activationHandler), 30000);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _init = async () => {\r\n\t\twindow.defferedPromptEvent = null;\r\n\r\n\t\tawait this._checkPlatform();\r\n\t\tthis._checkInstallAvailable();\r\n\r\n\t\tif ('onappinstalled' in window)\r\n\t\t\twindow.addEventListener('appinstalled', (e) => {\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t\tthis.isInstallAvailable = false;\r\n\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t});\r\n\r\n\t\tObject.assign(this, await Utils.fetchAndProcessManifest(this.manifestUrl, this.icon, this.name, this.description));\r\n\t};\r\n\t/** @internal */\r\n\tprivate _requestUpdate = () => {\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tasync connectedCallback() {\r\n\t\tawait changeLocale(navigator.language);\r\n\t\tthis._isRTL = isRTL();\r\n\t\tthis._init();\r\n\t\tPWAGalleryElement.finalized;\r\n\t\tPWABottomSheetElement.finalized;\r\n\t\tsuper.connectedCallback();\r\n\t}\r\n\twillUpdate(changedProperties: PropertyValues) {\r\n\t\tif (this.externalPromptEvent && changedProperties.has('externalPromptEvent') && typeof this.externalPromptEvent == 'object') {\r\n\t\t this._init();\r\n\t\t}\r\n\t}\r\n\r\n\t// firstUpdated() {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\trender() {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform)\r\n\t\t\treturn html`${templateApple(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsApple,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._toggleHowTo,\r\n\t\t\t\tthis.isAppleDesktopPlatform,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested,\r\n\t\t\t\tthis._isRTL\r\n\t\t\t)}`;\r\n\t\telse\r\n\t\t\treturn html`${template(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsChrome,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._install,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested,\r\n\t\t\t\tthis._toggleHowTo,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis.isAndroidFallback,\r\n\t\t\t\tthis._isRTL\r\n\t\t\t)}`;\r\n\t}\r\n}\r\n\r\nexport { PWAInstallAttributes };\r\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { updateWhenLocaleChanges } from './localized-controller.js';\n/**\n * Class decorator to enable re-rendering the given LitElement whenever a new\n * active locale has loaded.\n *\n * See also {@link updateWhenLocaleChanges} for the same functionality without\n * the use of decorators.\n *\n * When using lit-localize in transform mode, applications of this decorator are\n * removed.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {customElement} from 'lit/decorators.js';\n * import {msg, localized} from '@lit/localize';\n *\n * @localized()\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nexport const localized = () => (clazz, _context) => {\n clazz.addInitializer(updateWhenLocaleChanges);\n return clazz;\n};\n//# sourceMappingURL=localized-decorator.js.map"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","y","x","d","__WEBPACK_EXTERNAL_MODULE_lit__","joinStringsAndValues","strings","values","valueOrder","concat","i","length","defaultMsg","template","isStrTagged","val","msg","installed","LOCALE_STATUS_EVENT","LocalizeController","constructor","host","this","__litLocalizeEventHandler","event","detail","status","requestUpdate","hostConnected","window","addEventListener","hostDisconnected","removeEventListener","updateWhenLocaleChanges","addController","Deferred","settled","promise","Promise","resolve","reject","_resolve","_reject","error","hl","toString","generateMsgId","isHtmlTagged","str","t0","v0","t1","v1","t2","v2","t3","v3","charCodeAt","fnv1a64","join","expressionOrders","WeakMap","hashCache","Map","runtimeMsg","templates","options","id","undefined","set","generateId","localized","order","map","dispatchStatusEvent","dispatchEvent","CustomEvent","loadingLocale","sourceLocale","validLocales","loadLocale","activeLocale","loading","requestId","getLocale","setLocale","newLocale","Error","has","thisRequestId","then","mod","readyLocale","err","errorLocale","errorMessage","__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__","targetLocales","localizedTemplates","config","async","lang","impl","_installMsgImplementation","Set","add","Manifest","icons","src","screenshots","short_name","name","description","css","_eventDispatcher","_element","message","Utils","isAppleMobile","includes","navigator","platform","userAgent","match","maxTouchPoints","isAppleDesktop","toLowerCase","version","exec","parseInt","audioCheck","document","createElement","canPlayType","webGLCheck","OffscreenCanvas","getContext","isAndroid","isAndroidFallback","deviceFormFactor","matchMedia","matches","isStandalone","standalone","getInstalledRelatedApps","relatedApps","e","isRelatedAppsInstalled","setStorageFlag","persistent","localStorage","setItem","sessionStorage","getStorageFlag","getItem","eventInstalledSuccess","eventInstalledFail","eventUserChoiceResult","eventInstallAvailable","eventInstallHowTo","eventGallery","normalizeManifestAssetUrls","manifest","manifestUrl","normalizedManifestUrl","URL","location","href","forEach","asset","fetchAndProcessManifest","icon","_manifest","_json","_response","fetch","json","ok","keys","theme","scrollToNextPage","scrollToPrevPage","html","PWAGalleryElement","LitElement","rtl","getScrollElements","gallery","shadowRoot","querySelector","galleryScroller","galleryItems","Array","from","querySelectorAll","scroller","items","findCurrentItem","scrollLeft","find","item","offsetWidth","offsetLeft","scrollToPage","direction","scrollData","currentItem","targetIndex","indexOf","scrollIntoView","behavior","block","inline","_init","styles","firstUpdated","_tools","setTimeout","scrollTo","top","left","connectedCallback","super","render","property","type","Boolean","customElement","__WEBPACK_EXTERNAL_MODULE_lit_directives_class_map_js_2f88e643__","install","fallback","howToRequested","PWABottomSheetElement","props","handleEvent","hideDialog","disableClose","toggleHowTo","_callInstall","setupAppearence","_callHide","bindedElement","_saveBodyStyle","body","style","overscrollBehaviorY","dragMobileSheet","element","touchTargetElement","infoElement","dragOffset","bottomSize","offsetHeight","offsetTop","getYCoord","clientY","changedTouches","dragMouseDown","dragMouseUp","dragMouseMove","preventDefault","getBoundingClientRect","innerHeight","closeDragElement","clientHeight","getRootNode","currentY","setProperty","toPoint","innerWidth","passive","MouseEvent","touchElement","listener","fullOpen","parentElement","installDescription","disableDescription","disableScreenshots","installAvailable","toggleGallery","galleryRequested","isRTL","installDialogClasses","available","screenshotsAvailable","howToForApple","isDesktop","desktop","PWAInstallElement","disableScreenshotsApple","disableScreenshotsChrome","manualApple","manualChrome","disableChrome","disableFallback","useLocalStorage","externalPromptEvent","platforms","userChoiceResult","isDialogHidden","isInstallAvailable","isAppleMobilePlatform","isAppleDesktopPlatform","isUnderStandaloneMode","_isRTL","_howToRequested","_galleryRequested","_install","defferedPromptEvent","prompt","userChoice","choiceResult","outcome","catch","_hideDialog","_hideDialogUser","showDialog","forced","_toggleHowTo","_toggleGallery","_checkPlatform","_checkInstallAvailable","assign","_requestUpdate","_promptTriggered","BeforeInstallPromptEvent","_promptHandler","_activation","userActivation","_activationHandler","setInterval","isActive","hasBeenActive","clearInterval","slice","changeLocale","language","finalized","willUpdate","changedProperties","attribute","state","clazz","_context","addInitializer"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/react-legacy/pwa-install.react-legacy.js.map b/dist/react-legacy/pwa-install.react-legacy.js.map index 1b0e48a..02b0259 100644 --- a/dist/react-legacy/pwa-install.react-legacy.js.map +++ b/dist/react-legacy/pwa-install.react-legacy.js.map @@ -1 +1 @@ -{"version":3,"file":"pwa-install.react-legacy.js","mappings":"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","sources":["webpack://@khmyznikov/pwa-install/webpack/bootstrap","webpack://@khmyznikov/pwa-install/webpack/runtime/define property getters","webpack://@khmyznikov/pwa-install/webpack/runtime/hasOwnProperty shorthand","webpack://@khmyznikov/pwa-install/webpack/runtime/make namespace object","webpack://@khmyznikov/pwa-install/external module \"lit\"","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/str-tag.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/default-msg.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/init/install.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/locale-status-event.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/localized-controller.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/deferred.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/fnv1a64.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/id-generation.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/runtime-msg.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/init/runtime.js","webpack://@khmyznikov/pwa-install/external module \"lit/decorators.js\"","webpack://@khmyznikov/pwa-install/./src/localization/locale-codes.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ru.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/tr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/de.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/es.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/nl.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/el.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/fr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/sr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/pl.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/uk.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/zh-HK.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/zh-CN.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/it.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/cs.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/no.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/pt.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ja.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/sv.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ko.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/km.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/fa.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/da.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/vi.ts","webpack://@khmyznikov/pwa-install/./src/localization/index.ts","webpack://@khmyznikov/pwa-install/./src/types/types.ts","webpack://@khmyznikov/pwa-install/./src/gallery/styles-gallery.scss","webpack://@khmyznikov/pwa-install/./src/utils.ts","webpack://@khmyznikov/pwa-install/./src/gallery/template-gallery.ts","webpack://@khmyznikov/pwa-install/./src/gallery/index.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/styles-common.scss","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/styles-bottom-sheet.scss","webpack://@khmyznikov/pwa-install/external module \"lit/directives/class-map.js\"","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/template-bottom-sheet.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/index.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/styles.scss","webpack://@khmyznikov/pwa-install/./src/templates/apple/styles-apple.scss","webpack://@khmyznikov/pwa-install/./src/templates/chrome/template.ts","webpack://@khmyznikov/pwa-install/./src/templates/apple/template-apple.ts","webpack://@khmyznikov/pwa-install/./src/index.ts","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/localized-decorator.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/react/create-component.js","webpack://@khmyznikov/pwa-install/external module \"react\"","webpack://@khmyznikov/pwa-install/./src/react-legacy/pwa-install.react-legacy.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"LitElement\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.LitElement), [\"css\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.css), [\"html\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.html) });","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Tag that allows expressions to be used in localized non-HTML template\n * strings.\n *\n * Example: msg(str`Hello ${this.user}!`);\n *\n * The Lit html tag can also be used for this purpose, but HTML will need to be\n * escaped, and there is a small overhead for HTML parsing.\n *\n * Untagged template strings with expressions aren't supported by lit-localize\n * because they don't allow for values to be captured at runtime.\n */\nconst _str = (strings, ...values) => ({\n strTag: true,\n strings,\n values,\n});\nexport const str = _str;\nexport const isStrTagged = (val) => typeof val !== 'string' && 'strTag' in val;\n/**\n * Render the result of a `str` tagged template to a string. Note we don't need\n * to do this for Lit templates, since Lit itself handles rendering.\n */\nexport const joinStringsAndValues = (strings, values, valueOrder) => {\n let concat = strings[0];\n for (let i = 1; i < strings.length; i++) {\n concat += values[valueOrder ? valueOrder[i - 1] : i - 1];\n concat += strings[i];\n }\n return concat;\n};\n//# sourceMappingURL=str-tag.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { isStrTagged, joinStringsAndValues } from './str-tag.js';\n/**\n * Default identity msg implementation. Simply returns the input template with\n * no awareness of translations. If the template is str-tagged, returns it in\n * string form.\n */\nexport const defaultMsg = ((template) => isStrTagged(template)\n ? joinStringsAndValues(template.strings, template.values)\n : template);\n//# sourceMappingURL=default-msg.js.map","import { defaultMsg } from '../internal/default-msg.js';\n/**\n * Make a string or lit-html template localizable.\n *\n * @param template A string, a lit-html template, or a function that returns\n * either a string or lit-html template.\n * @param options Optional configuration object with the following properties:\n * - id: Optional project-wide unique identifier for this template. If\n * omitted, an id will be automatically generated from the template strings.\n * - desc: Optional description\n */\nexport let msg = defaultMsg;\nlet installed = false;\n/**\n * Internal only. Do not use this function.\n *\n * Installs an implementation of the msg function to replace the default\n * identity function. Throws if called more than once.\n *\n * @internal\n */\nexport function _installMsgImplementation(impl) {\n if (installed) {\n throw new Error('lit-localize can only be configured once');\n }\n msg = impl;\n installed = true;\n}\n//# sourceMappingURL=install.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Name of the event dispatched to `window` whenever a locale change starts,\n * finishes successfully, or fails. Only relevant to runtime mode.\n *\n * The `detail` of this event is an object with a `status` string that can be:\n * \"loading\", \"ready\", or \"error\", along with the relevant locale code, and\n * error message if applicable.\n *\n * You can listen for this event to know when your application should be\n * re-rendered following a locale change. See also the Localized mixin, which\n * automatically re-renders LitElement classes using this event.\n */\nexport const LOCALE_STATUS_EVENT = 'lit-localize-status';\n//# sourceMappingURL=locale-status-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { LOCALE_STATUS_EVENT } from './locale-status-event.js';\nclass LocalizeController {\n constructor(host) {\n this.__litLocalizeEventHandler = (event) => {\n if (event.detail.status === 'ready') {\n this.host.requestUpdate();\n }\n };\n this.host = host;\n }\n hostConnected() {\n window.addEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n hostDisconnected() {\n window.removeEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n}\n/**\n * Re-render the given LitElement whenever a new active locale has loaded.\n *\n * See also {@link localized} for the same functionality as a decorator.\n *\n * When using lit-localize in transform mode, calls to this function are\n * replaced with undefined.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {msg, updateWhenLocaleChanges} from '@lit/localize';\n *\n * class MyElement extends LitElement {\n * constructor() {\n * super();\n * updateWhenLocaleChanges(this);\n * }\n *\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nconst _updateWhenLocaleChanges = (host) => host.addController(new LocalizeController(host));\nexport const updateWhenLocaleChanges = _updateWhenLocaleChanges;\n//# sourceMappingURL=localized-controller.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport class Deferred {\n constructor() {\n this.settled = false;\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n resolve(value) {\n this.settled = true;\n this._resolve(value);\n }\n reject(error) {\n this.settled = true;\n this._reject(error);\n }\n}\n//# sourceMappingURL=deferred.js.map","/**\n * @license\n * Copyright 2014 Travis Webb\n * SPDX-License-Identifier: MIT\n */\n// This module is derived from the file:\n// https://github.com/tjwebb/fnv-plus/blob/1e2ce68a07cb7dd4c3c85364f3d8d96c95919474/index.js#L309\n//\n// Changes:\n// - Only the _hash64_1a_fast function is included.\n// - Removed loop unrolling.\n// - Converted to TypeScript ES module.\n// - var -> let/const\n//\n// TODO(aomarks) Upstream improvements to https://github.com/tjwebb/fnv-plus/.\nconst hl = [];\nfor (let i = 0; i < 256; i++) {\n hl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n}\n/**\n * Perform a FNV-1A 64-bit hash of the given string (as UTF-16 code units), and\n * return a hexadecimal digest (left zero padded to 16 characters).\n *\n * @see {@link http://tools.ietf.org/html/draft-eastlake-fnv-06}\n */\nexport function fnv1a64(str) {\n let t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n for (let i = 0; i < str.length; i++) {\n v0 ^= str.charCodeAt(i);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = (t3 + (t2 >>> 16)) & 65535;\n v2 = t2 & 65535;\n }\n return (hl[v3 >> 8] +\n hl[v3 & 255] +\n hl[v2 >> 8] +\n hl[v2 & 255] +\n hl[v1 >> 8] +\n hl[v1 & 255] +\n hl[v0 >> 8] +\n hl[v0 & 255]);\n}\n//# sourceMappingURL=fnv1a64.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { fnv1a64 } from './fnv1a64.js';\n/**\n * Delimiter used between each template string component before hashing. Used to\n * prevent e.g. \"foobar\" and \"foo${baz}bar\" from sharing a hash.\n *\n * This is the \"record separator\" ASCII character.\n */\nexport const HASH_DELIMITER = '\\x1e';\n/**\n * Id prefix on html-tagged templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst HTML_PREFIX = 'h';\n/**\n * Id prefix on plain string templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst STRING_PREFIX = 's';\n/**\n * Generate a unique ID for a lit-localize message.\n *\n * Example:\n * Template: html`Hello ${who}!`\n * Params: [\"Hello \", \"!\"], true\n * Output: h82ccc38d4d46eaa9\n *\n * The ID is constructed as:\n *\n * [0] Kind of template: [h]tml or [s]tring.\n * [1,16] 64-bit FNV-1a hash hex digest of the template strings, as UTF-16\n * code points, delineated by an ASCII \"record separator\" character.\n *\n * We choose FNV-1a because:\n *\n * 1. It's pretty fast (e.g. much faster than SHA-1).\n * 2. It's pretty small (0.25 KiB minified + brotli).\n * 3. We don't require cryptographic security, and 64 bits should give\n * sufficient collision resistance for any one application. Worst\n * case, we will always detect collisions during analysis.\n * 4. We can't use Web Crypto API (e.g. SHA-1), because it's asynchronous.\n * 5. It's a well known non-cryptographic hash with implementations in many\n * languages.\n * 6. There was an existing JavaScript implementation that doesn't require\n * BigInt, for IE11 compatibility.\n */\nexport function generateMsgId(strings, isHtmlTagged) {\n return ((isHtmlTagged ? HTML_PREFIX : STRING_PREFIX) +\n fnv1a64(typeof strings === 'string' ? strings : strings.join(HASH_DELIMITER)));\n}\n//# sourceMappingURL=id-generation.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { defaultMsg } from './default-msg.js';\nimport { joinStringsAndValues } from './str-tag.js';\nimport { generateMsgId } from './id-generation.js';\nconst expressionOrders = new WeakMap();\nconst hashCache = new Map();\nexport function runtimeMsg(templates, template, options) {\n if (templates) {\n const id = options?.id ?? generateId(template);\n const localized = templates[id];\n if (localized) {\n if (typeof localized === 'string') {\n // E.g. \"Hello World!\"\n return localized;\n }\n else if ('strTag' in localized) {\n // E.g. str`Hello ${name}!`\n //\n // Localized templates have ${number} in place of real template\n // expressions. They can't have real template values, because the\n // variable scope would be wrong. The number tells us the index of the\n // source value to substitute in its place, because expressions can be\n // moved to a different position during translation.\n return joinStringsAndValues(localized.strings, \n // Cast `template` because its type wasn't automatically narrowed (but\n // we know it must be the same type as `localized`).\n template.values, localized.values);\n }\n else {\n // E.g. html`Hello ${name}!`\n //\n // We have to keep our own mapping of expression ordering because we do\n // an in-place update of `values`, and otherwise we'd lose ordering for\n // subsequent renders.\n let order = expressionOrders.get(localized);\n if (order === undefined) {\n order = localized.values;\n expressionOrders.set(localized, order);\n }\n return {\n ...localized,\n values: order.map((i) => template.values[i]),\n };\n }\n }\n }\n return defaultMsg(template);\n}\nfunction generateId(template) {\n const strings = typeof template === 'string' ? template : template.strings;\n let id = hashCache.get(strings);\n if (id === undefined) {\n id = generateMsgId(strings, typeof template !== 'string' && !('strTag' in template));\n hashCache.set(strings, id);\n }\n return id;\n}\n//# sourceMappingURL=runtime-msg.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { Deferred } from '../internal/deferred.js';\nimport { LOCALE_STATUS_EVENT } from '../internal/locale-status-event.js';\nimport { runtimeMsg } from '../internal/runtime-msg.js';\nimport { _installMsgImplementation } from './install.js';\n/**\n * Dispatch a \"lit-localize-status\" event to `window` with the given detail.\n */\nfunction dispatchStatusEvent(detail) {\n window.dispatchEvent(new CustomEvent(LOCALE_STATUS_EVENT, { detail }));\n}\nlet activeLocale = '';\nlet loadingLocale;\nlet sourceLocale;\nlet validLocales;\nlet loadLocale;\nlet templates;\nlet loading = new Deferred();\n// The loading promise must be initially resolved, because that's what we should\n// return if the user immediately calls setLocale(sourceLocale).\nloading.resolve();\nlet requestId = 0;\n/**\n * Set configuration parameters for lit-localize when in runtime mode. Returns\n * an object with functions:\n *\n * - `getLocale`: Return the active locale code.\n * - `setLocale`: Set the active locale code.\n *\n * Throws if called more than once.\n */\nexport const configureLocalization = (config) => {\n _installMsgImplementation(((template, options) => runtimeMsg(templates, template, options)));\n activeLocale = sourceLocale = config.sourceLocale;\n validLocales = new Set(config.targetLocales);\n validLocales.add(config.sourceLocale);\n loadLocale = config.loadLocale;\n return { getLocale, setLocale };\n};\n/**\n * Return the active locale code.\n */\nconst getLocale = () => {\n return activeLocale;\n};\n/**\n * Set the active locale code, and begin loading templates for that locale using\n * the `loadLocale` function that was passed to `configureLocalization`. Returns\n * a promise that resolves when the next locale is ready to be rendered.\n *\n * Note that if a second call to `setLocale` is made while the first requested\n * locale is still loading, then the second call takes precedence, and the\n * promise returned from the first call will resolve when second locale is\n * ready. If you need to know whether a particular locale was loaded, check\n * `getLocale` after the promise resolves.\n *\n * Throws if the given locale is not contained by the configured `sourceLocale`\n * or `targetLocales`.\n */\nconst setLocale = (newLocale) => {\n if (newLocale === (loadingLocale ?? activeLocale)) {\n return loading.promise;\n }\n if (!validLocales || !loadLocale) {\n throw new Error('Internal error');\n }\n if (!validLocales.has(newLocale)) {\n throw new Error('Invalid locale code');\n }\n requestId++;\n const thisRequestId = requestId;\n loadingLocale = newLocale;\n if (loading.settled) {\n loading = new Deferred();\n }\n dispatchStatusEvent({ status: 'loading', loadingLocale: newLocale });\n const localePromise = newLocale === sourceLocale\n ? // We could switch to the source locale synchronously, but we prefer to\n // queue it on a microtask so that switching locales is consistently\n // asynchronous.\n Promise.resolve({ templates: undefined })\n : loadLocale(newLocale);\n localePromise.then((mod) => {\n if (requestId === thisRequestId) {\n activeLocale = newLocale;\n loadingLocale = undefined;\n templates = mod.templates;\n dispatchStatusEvent({ status: 'ready', readyLocale: newLocale });\n loading.resolve();\n }\n // Else another locale was requested in the meantime. Don't resolve or\n // reject, because the newer load call is going to use the same promise.\n // Note the user can call getLocale() after the promise resolves if they\n // need to check if the locale is still the one they expected to load.\n }, (err) => {\n if (requestId === thisRequestId) {\n dispatchStatusEvent({\n status: 'error',\n errorLocale: newLocale,\n errorMessage: err.toString(),\n });\n loading.reject(err);\n }\n });\n return loading.promise;\n};\n//# sourceMappingURL=runtime.js.map","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"customElement\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.customElement), [\"property\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.property), [\"state\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.state) });","// Do not modify this file by hand!\n// Re-generate this file by running lit-localize.\n\n/**\n * The locale code that templates in this source code are written in.\n */\nexport const sourceLocale = `en`;\n\n/**\n * The other locale codes that this application is localized into. Sorted\n * lexicographically.\n */\nexport const targetLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `es`,\n `fa`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `vi`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n\n/**\n * All valid project locale codes. Sorted lexicographically.\n */\nexport const allLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `en`,\n `es`,\n `fa`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `vi`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Откройте меню вашего браузера`,\n's182ab2d6c997515f': `Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.`,\n's1b9047d53d9f9d22': `2) Нажать \"Поделиться\"`,\n's2d90afa5dcca2c0e': `3) Прокрутите вниз до \"Добавить на главный экран\"`,\n's37a9e8aec5713460': `Подробнее`,\n's4593f304dac8848c': `2) Нажмите \"Добавить на главный экран\"`,\n's54cfbb14f46396d4': `1) Откройте в вашем основном браузере`,\n's6196153c4b0c1ea0': `Установить`,\n's922329d6f6213590': `Добавить в Dock`,\n'sa5ef80b4bb9b39f8': `Свернуть`,\n'sa7551383d1897fcc': `2) Нажмите \"Добавить в Dock\"`,\n'sba52286c21552a4e': `Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.`,\n'sc79fd7641eb9a975': `Спрятать Инструкцию`,\n'scdaf4bbff76674c8': `На экран «Домой»`,\n'se740f75b95a51807': `Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.`,\n'sfea652f6580ff086': `Этот веб-сайт имеет функционал приложения.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Tarayıcı menünüzü açın`,\n's182ab2d6c997515f': `Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.`,\n's1b9047d53d9f9d22': `2) Gezinme çubuğunda Paylaş'a basın`,\n's2d90afa5dcca2c0e': `3) \"Ana Ekrana Ekle\" seçeneğine kadar aşağı kaydırın`,\n's37a9e8aec5713460': `Daha Fazla`,\n's4593f304dac8848c': `2) \"Ana Ekrana Ekle\"ye dokunun`,\n's54cfbb14f46396d4': `1) Ana tarayıcınızda açın`,\n's6196153c4b0c1ea0': `Yükle`,\n's922329d6f6213590': `Dock’a Ekle`,\n'sa5ef80b4bb9b39f8': `Küçült`,\n'sa7551383d1897fcc': `2) Dock’a ekleye basın`,\n'sba52286c21552a4e': `Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.`,\n'sc79fd7641eb9a975': `Talimatları gizle`,\n'scdaf4bbff76674c8': `Ana Ekrana Ekle`,\n'se740f75b95a51807': `Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.`,\n'sfea652f6580ff086': `Bu site uygulama işlevselliğine sahiptir.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Öffnen Sie das Menü Ihres Browsers`,\n's182ab2d6c997515f': `Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n's1b9047d53d9f9d22': `2) Drücken Sie auf Teilen in der Navigationsleiste`,\n's2d90afa5dcca2c0e': `3) Scrollen Sie nach unten zu \"Zum Startbildschirm hinzufügen\"`,\n's37a9e8aec5713460': `Mehr`,\n's4593f304dac8848c': `2) Tippen Sie auf \"Zum Startbildschirm hinzufügen\"`,\n's54cfbb14f46396d4': `1) Öffnen Sie es in Ihrem Hauptbrowser`,\n's6196153c4b0c1ea0': `Installieren`,\n's922329d6f6213590': `Zum Dock hinzufügen`,\n'sa5ef80b4bb9b39f8': `Weniger`,\n'sa7551383d1897fcc': `2) Drücken Sie auf Zum Dock hinzufügen`,\n'sba52286c21552a4e': `Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.`,\n'sc79fd7641eb9a975': `Anleitung ausblenden`,\n'scdaf4bbff76674c8': `Hinzufügen zum Startbildschirm`,\n'se740f75b95a51807': `Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n'sfea652f6580ff086': `Diese Website verfügt über App-Funktionalität.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Abre el menú de tu navegador`,\n's182ab2d6c997515f': `Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.`,\n's1b9047d53d9f9d22': `2) Presionar Compartir en la barra de direcciones`,\n's2d90afa5dcca2c0e': `3) Desplázate hacia abajo hasta \"Añadir a pantalla de inicio\"`,\n's37a9e8aec5713460': `Más`,\n's4593f304dac8848c': `2) Toca \"Añadir a pantalla de inicio\"`,\n's54cfbb14f46396d4': `1) Abre en tu navegador principal`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Añadir al Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Presionar Añadir al Dock`,\n'sba52286c21552a4e': `Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.`,\n'sc79fd7641eb9a975': `Esconder instrucciones`,\n'scdaf4bbff76674c8': `Añadir a pantalla de inicio`,\n'se740f75b95a51807': `Añádelo a tu Dock para una experiencia amplia y acceso fácil.`,\n'sfea652f6580ff086': `Este sitio tiene funcionalidad de aplicación.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Open je browsermenu`,\n's182ab2d6c997515f': `Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.`,\n's1b9047d53d9f9d22': `2) Druk op delen in de navigatiebalk`,\n's2d90afa5dcca2c0e': `3) Scrol naar beneden naar \"Toevoegen aan startscherm\"`,\n's37a9e8aec5713460': `Meer`,\n's4593f304dac8848c': `2) Tik op \"Toevoegen aan startscherm\"`,\n's54cfbb14f46396d4': `1) Open in je hoofdprogramma`,\n's6196153c4b0c1ea0': `Installeren`,\n's922329d6f6213590': `Toevoegen aan Dock`,\n'sa5ef80b4bb9b39f8': `Minder`,\n'sa7551383d1897fcc': `2) Druk op Toevoegen aan Dock`,\n'sba52286c21552a4e': `Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.`,\n'sc79fd7641eb9a975': `Instructie verbergen`,\n'scdaf4bbff76674c8': `Toevoegen aan het startscherm`,\n'se740f75b95a51807': `Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.`,\n'sfea652f6580ff086': `Deze site heeft app-functionaliteit.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Ανοίξτε το μενού του περιηγητή σας`,\n's182ab2d6c997515f': `Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n's1b9047d53d9f9d22': `2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης`,\n's2d90afa5dcca2c0e': `3) Κάντε κύλιση προς τα κάτω στο \"Προσθήκη στην οθόνη Αφετηρίας\"`,\n's37a9e8aec5713460': `Περισσότερα`,\n's4593f304dac8848c': `2) Πατήστε \"Προσθήκη στην οθόνη Αφετηρίας\"`,\n's54cfbb14f46396d4': `1) Ανοίξτε στον κύριο περιηγητή σας`,\n's6196153c4b0c1ea0': `Εγκατάσταση`,\n's922329d6f6213590': `Προσθήκη στην Πρόσβαση`,\n'sa5ef80b4bb9b39f8': `Λιγότερα`,\n'sa7551383d1897fcc': `2) Πατήστε Προσθήκη στην Πρόσβαση`,\n'sba52286c21552a4e': `Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sc79fd7641eb9a975': `Απόκρυψη Οδηγιών`,\n'scdaf4bbff76674c8': `Προσθήκη στην Οθόνη Αφετηρίας`,\n'se740f75b95a51807': `Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sfea652f6580ff086': `Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Ouvrez le menu de votre navigateur`,\n's182ab2d6c997515f': `Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.`,\n's1b9047d53d9f9d22': `2) Appuyez sur Partager dans la barre de navigation`,\n's2d90afa5dcca2c0e': `3) Faites défiler vers le bas jusqu'à \"Ajouter à l'écran d'accueil\"`,\n's37a9e8aec5713460': `Plus`,\n's4593f304dac8848c': `2) Touchez \"Ajouter à l'écran d'accueil\"`,\n's54cfbb14f46396d4': `1) Ouvrir dans votre navigateur principal`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Ajouter au Dock`,\n'sa5ef80b4bb9b39f8': `Moins`,\n'sa7551383d1897fcc': `2) Appuyez sur Ajouter au Dock`,\n'sba52286c21552a4e': `Installez-le sur votre appareil pour une expérience complète et un accès facile.`,\n'sc79fd7641eb9a975': `Masquer les instructions`,\n'scdaf4bbff76674c8': `Ajouter à l'écran d'accueil`,\n'se740f75b95a51807': `Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.`,\n'sfea652f6580ff086': `Ce site possède des fonctionnalités d'application.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Отворите мени вашег прегледача`,\n's182ab2d6c997515f': `Додајте га на Home Screen за широке могућности и лак приступ.`,\n's1b9047d53d9f9d22': `2) Притисните Share у навигационој траци`,\n's2d90afa5dcca2c0e': `3) Померите се надоле до \"Add to Home Screen\"`,\n's37a9e8aec5713460': `Више`,\n's4593f304dac8848c': `2) Додирните \"Add to Home Screen\"`,\n's54cfbb14f46396d4': `1) Отворите у вашем главном прегледачу`,\n's6196153c4b0c1ea0': `Инсталирај`,\n'sa5ef80b4bb9b39f8': `Мање`,\n'sa7551383d1897fcc': `3) Притисните Add to Dock`,\n'sba52286c21552a4e': `Инсталирајте га на вашем уређају за широке могућности и лак приступ.`,\n'sc79fd7641eb9a975': `Сакриј упутство`,\n'se740f75b95a51807': `Додајте га у вашу Dock за широке могућности и лак приступ.`,\n'sfea652f6580ff086': `Овај сајт има функционалност апликације.`,\n's922329d6f6213590': `Add to Dock`,\n'scdaf4bbff76674c8': `Add to Home Screen`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Otwórz menu przeglądarki`,\n's182ab2d6c997515f': `Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n's1b9047d53d9f9d22': `2) Wybierz \"Udostępnij\"`,\n's2d90afa5dcca2c0e': `3) Przewiń w dół do opcji \"Dodaj do Ekranu Głównego\"`,\n's37a9e8aec5713460': `Więcej`,\n's4593f304dac8848c': `2) Naciśnij \"Dodaj do Ekranu Głównego\"`,\n's54cfbb14f46396d4': `1) Otwórz w swojej głównej przeglądarce`,\n's6196153c4b0c1ea0': `Zainstaluj`,\n's922329d6f6213590': `Dodaj do Docka`,\n'sa5ef80b4bb9b39f8': `Mniej`,\n'sa7551383d1897fcc': `2) Wybierz \"Dodaj do Docka\"`,\n'sba52286c21552a4e': `Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sc79fd7641eb9a975': `Ukryj instrukcję`,\n'scdaf4bbff76674c8': `Dodaj do Ekranu Głównego`,\n'se740f75b95a51807': `Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sfea652f6580ff086': `Ta strona posiada funkcje aplikacji.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Відкрити меню браузера`,\n's182ab2d6c997515f': `Додайте на Домашній екран для зручного доступу та ширших можливостей.`,\n's1b9047d53d9f9d22': `2) Натиснути «Поділитися»`,\n's2d90afa5dcca2c0e': `3) Прокрутіть вниз до «На Початковий экран»`,\n's37a9e8aec5713460': `Детальніше`,\n's4593f304dac8848c': `2) Натиснути «На Початковий экран»`,\n's54cfbb14f46396d4': `1) Відкрити у вашому основному браузері`,\n's6196153c4b0c1ea0': `Встановити`,\n's922329d6f6213590': `Додати на Dock`,\n'sa5ef80b4bb9b39f8': `Згорнути`,\n'sa7551383d1897fcc': `2) Натиснути «Додати на Dock»`,\n'sba52286c21552a4e': `Встановіть на ваш пристрій для зручного доступу та ширших можливостей.`,\n'sc79fd7641eb9a975': `Сховати Інструкцію`,\n'scdaf4bbff76674c8': `На Початковий экран`,\n'se740f75b95a51807': `Додайте на панель Dock для зручного доступу та ширших можливостей.`,\n'sfea652f6580ff086': `Цей сайт має функції додатку.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 打開您的瀏覽器菜單`,\n's182ab2d6c997515f': `將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。`,\n's1b9047d53d9f9d22': `2) 點擊列表上的分享按鈕`,\n's2d90afa5dcca2c0e': `3) 向下滾動到「添加到主屏幕」`,\n's37a9e8aec5713460': `詳細資訊`,\n's4593f304dac8848c': `2) 點擊「添加到主屏幕」`,\n's54cfbb14f46396d4': `1) 在您的主要瀏覽器中打開`,\n's6196153c4b0c1ea0': `安裝`,\n's922329d6f6213590': `添加到Dock欄`,\n'sa5ef80b4bb9b39f8': `簡短資訊`,\n'sa7551383d1897fcc': `2) 點選添加到Dock欄`,\n'sba52286c21552a4e': `在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。`,\n'sc79fd7641eb9a975': `隱藏安裝流程`,\n'scdaf4bbff76674c8': `將App加入主畫面`,\n'se740f75b95a51807': `將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。`,\n'sfea652f6580ff086': `此網站具有應用程式功能。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 打开浏览器菜单`,\n's182ab2d6c997515f': `将其添加到主屏幕,以享受更丰富的体验并便于访问。`,\n's1b9047d53d9f9d22': `2) 点击导航栏中的“分享”按钮`,\n's2d90afa5dcca2c0e': `3) 向下滚动至“添加到主屏幕”`,\n's37a9e8aec5713460': `更多`,\n's4593f304dac8848c': `2) 轻触“添加到主屏幕”`,\n's54cfbb14f46396d4': `1) 在您的主浏览器中打开`,\n's6196153c4b0c1ea0': `安装`,\n's922329d6f6213590': `添加到程序坞`,\n'sa5ef80b4bb9b39f8': `收起`,\n'sa7551383d1897fcc': `2) 点击“添加到程序坞”`,\n'sba52286c21552a4e': `在您的设备上安装,以享受更丰富的体验并便于访问。`,\n'sc79fd7641eb9a975': `隐藏安装步骤`,\n'scdaf4bbff76674c8': `添加到主屏幕`,\n'se740f75b95a51807': `将其添加到您的程序坞,以享受更全面的体验并便于访问。`,\n'sfea652f6580ff086': `此网站具备 App 功能特性。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Apri il menu del tuo browser`,\n's182ab2d6c997515f': `Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.`,\n's1b9047d53d9f9d22': `2) Premi Condividi nella barra di navigazione`,\n's2d90afa5dcca2c0e': `3) Scorri verso il basso fino a \"Aggiungi alla schermata principale\"`,\n's37a9e8aec5713460': `Più`,\n's4593f304dac8848c': `2) Tocca \"Aggiungi alla schermata principale\"`,\n's54cfbb14f46396d4': `1) Apri nel tuo browser principale`,\n's6196153c4b0c1ea0': `Installa`,\n's922329d6f6213590': `Aggiungi al Dock`,\n'sa5ef80b4bb9b39f8': `Meno`,\n'sa7551383d1897fcc': `2) Premi Aggiungi al Dock`,\n'sba52286c21552a4e': `Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.`,\n'sc79fd7641eb9a975': `Nascondi istruzioni`,\n'scdaf4bbff76674c8': `Aggiungi alla schermata principale`,\n'se740f75b95a51807': `Aggiungilo al Dock per un'esperienza più completa e un accesso facile.`,\n'sfea652f6580ff086': `Questo sito ha funzionalità di app.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Otevřete nabídku prohlížeče`,\n's182ab2d6c997515f': `Přidejte jej na plochu pro rozšířené využití a snadný přístup.`,\n's1b9047d53d9f9d22': `2) Stiskněte tlačítko Sdílet na navigačním panelu`,\n's2d90afa5dcca2c0e': `3) Projděte dolů k \"Přidat na plochu\"`,\n's37a9e8aec5713460': `Více`,\n's4593f304dac8848c': `2) Klepněte na \"Přidat na plochu\"`,\n's54cfbb14f46396d4': `1) Otevřete v hlavním prohlížeči`,\n's6196153c4b0c1ea0': `Nainstalovat`,\n's922329d6f6213590': `Přidat do Docku`,\n'sa5ef80b4bb9b39f8': `Méně`,\n'sa7551383d1897fcc': `2) Stiskněte Přidat do Docku`,\n'sba52286c21552a4e': `Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.`,\n'sc79fd7641eb9a975': `Skrýt instrukce`,\n'scdaf4bbff76674c8': `Přidat na plochu`,\n'se740f75b95a51807': `Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.`,\n'sfea652f6580ff086': `Tento web má funkce aplikace.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Åpne menyen i nettleseren din`,\n's182ab2d6c997515f': `Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.`,\n's1b9047d53d9f9d22': `2) Trykk på Del-knappen i navigasjonslinjen`,\n's2d90afa5dcca2c0e': `3) Rull ned til «Legg til på Hjem-skjerm»`,\n's37a9e8aec5713460': `Mer`,\n's4593f304dac8848c': `2) Trykk på \"Legg til på Hjem-skjerm\"`,\n's54cfbb14f46396d4': `1) Åpne i hovednettleseren din`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Legg til i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Velg Legg til i Dock`,\n'sba52286c21552a4e': `Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sc79fd7641eb9a975': `Skjul instruksjoner`,\n'scdaf4bbff76674c8': `Legg til på Hjem-skjerm`,\n'se740f75b95a51807': `Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sfea652f6580ff086': `Denne siden har app-funksjonalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Abra o menu do seu navegador`,\n's182ab2d6c997515f': `Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.`,\n's1b9047d53d9f9d22': `2) Pressione Compartilhar na barra de endereço`,\n's2d90afa5dcca2c0e': `3) Role para baixo até \"Adicionar à Tela de Início\"`,\n's37a9e8aec5713460': `Mais`,\n's4593f304dac8848c': `2) Toque em \"Adicionar à Tela de Início\"`,\n's54cfbb14f46396d4': `1) Abra no seu navegador principal`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Adicionar ao Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Pressione Adicionar ao Dock`,\n'sba52286c21552a4e': `Instale no dispositivo para uma melhor experiência e mais fácil acesso.`,\n'sc79fd7641eb9a975': `Ocultar Instruções`,\n'scdaf4bbff76674c8': `Adicionar à Tela de Início`,\n'se740f75b95a51807': `Adicione ao Dock para uma melhor experiência e mais fácil acesso.`,\n'sfea652f6580ff086': `Este site possui funcionalidade de aplicativo.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) ブラウザメニューを開く`,\n's182ab2d6c997515f': `ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。`,\n's1b9047d53d9f9d22': `2) ナビゲーションバーで共有を押す`,\n's2d90afa5dcca2c0e': `3) 「ホーム画面に追加」までスクロールする`,\n's37a9e8aec5713460': `展開`,\n's4593f304dac8848c': `2) 「ホーム画面に追加」をタップする`,\n's54cfbb14f46396d4': `1) メインブラウザで開く`,\n's6196153c4b0c1ea0': `インストール`,\n's922329d6f6213590': `Dockに追加`,\n'sa5ef80b4bb9b39f8': `折りたたむ`,\n'sa7551383d1897fcc': `2) 「Dockに追加」を押す`,\n'sba52286c21552a4e': `デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。`,\n'sc79fd7641eb9a975': `説明を非表示`,\n'scdaf4bbff76674c8': `ホーム画面に追加`,\n'se740f75b95a51807': `ドックに追加して、幅広い体験と簡単なアクセスを実現してください。`,\n'sfea652f6580ff086': `このサイトはアプリ機能があります。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Öppna din webbläsares meny`,\n's182ab2d6c997515f': `Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.`,\n's1b9047d53d9f9d22': `2) Tryck på Dela-knappen i verktygsfältet`,\n's2d90afa5dcca2c0e': `3) Scrolla ner till \"Lägg till på hemskärmen\"`,\n's37a9e8aec5713460': `Mer`,\n's4593f304dac8848c': `2) Tryck på \"Lägg till på hemskärmen\"`,\n's54cfbb14f46396d4': `1) Öppna i din huvudsakliga webbläsare`,\n's6196153c4b0c1ea0': `Installera`,\n's922329d6f6213590': `Lägg till i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Välj Lägg till i Dock`,\n'sba52286c21552a4e': `Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sc79fd7641eb9a975': `Göm instruktioner`,\n'scdaf4bbff76674c8': `Lägg till på hemskärmen`,\n'se740f75b95a51807': `Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sfea652f6580ff086': `Denna webbsajt har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 브라우저 메뉴 열기`,\n's182ab2d6c997515f': `더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.`,\n's1b9047d53d9f9d22': `2) 내비게이션 바에서 공유 버튼 누르기`,\n's2d90afa5dcca2c0e': `3) \"홈 화면에 추가\"로 스크롤하기`,\n's37a9e8aec5713460': `더보기`,\n's4593f304dac8848c': `2) \"홈 화면에 추가\" 탭하기`,\n's54cfbb14f46396d4': `1) 주 브라우저에서 열기`,\n's6196153c4b0c1ea0': `설치`,\n's922329d6f6213590': `Dock에 추가`,\n'sa5ef80b4bb9b39f8': `닫기`,\n'sa7551383d1897fcc': `2) Dock에 추가 버튼 누르기`,\n'sba52286c21552a4e': `더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.`,\n'sc79fd7641eb9a975': `안내 숨기기`,\n'scdaf4bbff76674c8': `홈 화면에 추가`,\n'se740f75b95a51807': `더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.`,\n'sfea652f6580ff086': `이 사이트는 앱 기능을 가지고 있습니다.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) បើកម៉ឺនុយកម្មវិធីរុករករបស់អ្នក`,\n's182ab2d6c997515f': `បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n's1b9047d53d9f9d22': `2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ`,\n's2d90afa5dcca2c0e': `3) អូសចុះទៅកាន់ \"បន្ថែមទៅផ្ទាំងអេក្រង់ដើម\"`,\n's37a9e8aec5713460': `បង្ហាញបន្ថែម`,\n's4593f304dac8848c': `2) ចុចលើ \"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម\"`,\n's54cfbb14f46396d4': `1) បើកនៅក្នុងកម្មវិធីរុករកសំខាន់របស់អ្នក`,\n's6196153c4b0c1ea0': `តំឡើង`,\n's922329d6f6213590': `បន្ថែមទៅកាន់ Dock`,\n'sa5ef80b4bb9b39f8': `បង្ហាញតិច`,\n'sa7551383d1897fcc': `2) ចុចលើ បន្ថែមទៅកាន់ Dock`,\n'sba52286c21552a4e': `តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sc79fd7641eb9a975': `បិទការណែនាំ`,\n'scdaf4bbff76674c8': `បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n'se740f75b95a51807': `បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sfea652f6580ff086': `គេហទំព័រនេះមានមុខងារជាកម្មវិធី។`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `۱) مرورگر خود را باز کنید`,\n's182ab2d6c997515f': `برای تجربه گسترده و دسترسی آسان آن را به صفحه اصلی خود اضافه کنید.`,\n's1b9047d53d9f9d22': `۱)در نوار پایین دکمه (Share) را بزنید`,\n's2d90afa5dcca2c0e': `۳) به پایین اسکرول کنید تا به \"Add to Home Screen\" برسید`,\n's37a9e8aec5713460': `بیشتر`,\n's4593f304dac8848c': `۲) روی \"Add to Home screen\" ضربه بزنید`,\n's54cfbb14f46396d4': `۱) در مرورگر اصلی خود باز کنید`,\n's6196153c4b0c1ea0': `نصب`,\n's922329d6f6213590': `افزودن به (Dock)`,\n'sa5ef80b4bb9b39f8': `کمتر`,\n'sa7551383d1897fcc': `۲) (Add to Dock) را انتخاب کنید `,\n'sba52286c21552a4e': `برای تجربه گسترده و دسترسی آسان آن را بر روی دستگاه خود نصب کنید.`,\n'sc79fd7641eb9a975': ` مخفی کردن مراحل`,\n'scdaf4bbff76674c8': `افزودن به (Home Screen)`,\n'se740f75b95a51807': `برای تجربه گسترده و دسترسی آسان آن را به Dock خود اضافه کنید.`,\n'sfea652f6580ff086': ` این سایت دارای قابلیت اپلیکیشن است. `,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Åbn din browsermenu`,\n's182ab2d6c997515f': `Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.`,\n's1b9047d53d9f9d22': `2) Tryk på Del-knappen i navigationslinjen`,\n's2d90afa5dcca2c0e': `3) Rul ned til \"Tilføj til hjemmeskærm\"`,\n's37a9e8aec5713460': `Mere`,\n's4593f304dac8848c': `2) Tryk på \"Tilføj til hjemmeskærm\"`,\n's54cfbb14f46396d4': `1) Åbn i din primære browser`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Tilføj til Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Vælg Tilføj til Dock`,\n'sba52286c21552a4e': `Installer den på din enhed for en bedre oplevelse og nem adgang.`,\n'sc79fd7641eb9a975': `Skjul instruktion`,\n'scdaf4bbff76674c8': `Tilføj til hjemmeskærm`,\n'se740f75b95a51807': `Tilføj den til din Dock for en bedre oplevelse og nem adgang.`,\n'sfea652f6580ff086': `Denne side har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Mở menu trình duyệt của bạn`,\n's182ab2d6c997515f': `Thêm nó vào màn hình chính của bạn để có trải nghiệm phong phú hơn và truy cập dễ dàng hơn.`,\n's1b9047d53d9f9d22': `2) Nhấp vào nút \"Chia sẻ\" trên thanh điều hướng`,\n's2d90afa5dcca2c0e': `3) Kéo đến mục \"Thêm vào Màn hình chính\"`,\n's37a9e8aec5713460': `Thêm`,\n's4593f304dac8848c': `2) Nhấn vào \"Thêm vào Màn hình chính\"`,\n's54cfbb14f46396d4': `1) Mở trình duyệt chính của bạn`,\n's6196153c4b0c1ea0': `Cài đặt`,\n's922329d6f6213590': `Thêm vào Dock`,\n'sa5ef80b4bb9b39f8': `Thu gọn`,\n'sa7551383d1897fcc': `2) Nhấp vào \"Thêm vào Dock\"`,\n'sba52286c21552a4e': `Cài đặt trên thiết bị của bạn để có trải nghiệm phong phú hơn và truy cập dễ dàng.`,\n'sc79fd7641eb9a975': `Ẩn các bước cài đặt`,\n'scdaf4bbff76674c8': `Thêm vào màn hình chính`,\n'se740f75b95a51807': `Thêm nó vào Dock của bạn để có trải nghiệm toàn diện hơn và truy cập dễ dàng hơn.`,\n'sfea652f6580ff086': `Trang web này có cả chức năng đặc trưng ứng dụng.`,\n };\n ","import { configureLocalization } from '@lit/localize';\r\nimport {\r\n sourceLocale,\r\n targetLocales,\r\n} from './locale-codes';\r\n\r\nimport * as ru from './locales/ru';\r\nimport * as tr from './locales/tr';\r\nimport * as de from \"./locales/de\";\r\nimport * as es from \"./locales/es\";\r\nimport * as nl from \"./locales/nl\";\r\nimport * as el from \"./locales/el\";\r\nimport * as fr from \"./locales/fr\";\r\nimport * as sr from \"./locales/sr\";\r\nimport * as pl from \"./locales/pl\";\r\nimport * as uk from \"./locales/uk\";\r\nimport * as zhHK from \"./locales/zh-HK\";\r\nimport * as zhCN from \"./locales/zh-CN\";\r\nimport * as it from \"./locales/it\";\r\nimport * as cs from \"./locales/cs\";\r\nimport * as no from \"./locales/no\";\r\nimport * as pt from \"./locales/pt\";\r\nimport * as ja from \"./locales/ja\";\r\nimport * as sv from \"./locales/sv\";\r\nimport * as ko from \"./locales/ko\";\r\nimport * as km from \"./locales/km\";\r\nimport * as fa from \"./locales/fa\";\r\nimport * as da from \"./locales/da\";\r\nimport * as vi from \"./locales/vi\";\r\n\r\nconst localizedTemplates = new Map([\r\n ['ru', ru],\r\n ['tr', tr],\r\n ['de', de],\r\n ['es', es],\r\n ['nl', nl],\r\n ['el', el],\r\n ['fr', fr],\r\n ['sr', sr],\r\n ['pl', pl],\r\n ['uk', uk],\r\n ['zh-HK', zhHK],\r\n ['zh-CN', zhCN],\r\n ['it', it],\r\n ['cs', cs],\r\n ['no', no], // + nb\r\n ['pt', pt],\r\n ['ja', ja],\r\n ['sv', sv],\r\n ['ko', ko],\r\n ['km', km],\r\n ['fa', fa],\r\n ['da', da],\r\n ['vi', vi],\r\n])\r\n\r\nexport const { getLocale, setLocale } = configureLocalization({\r\n sourceLocale,\r\n targetLocales,\r\n // @ts-ignore\r\n loadLocale: async (lang: string) => localizedTemplates.get(lang)\r\n});\r\n\r\nexport const changeLocale = async (lang: string) => {\r\n // Norwegian Bokmål is same as Norwegian\r\n switch (lang.slice(0, 2)) {\r\n case 'nb':\r\n lang = 'no';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // Fallback to simplified Chinese\r\n switch (lang) {\r\n case 'zh':\r\n case 'zh-TW':\r\n lang = 'zh-CN';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n try {\r\n if (localizedTemplates.get(lang))\r\n await setLocale(lang);\r\n else\r\n await setLocale(lang.slice(0, 2));\r\n }\r\n catch {\r\n console.warn(`pwa-install: translation error - unsupported locale: ${lang}`);\r\n }\r\n};\r\n\r\nexport const isRTL = () => {\r\n let locale = getLocale();\r\n return ['ar', 'he', 'fa', 'ur'].includes(getLocale());\r\n}\r\n","import { ImageResource } from 'web-app-manifest';\r\n\r\nexport interface IRelatedApp {\r\n id: string,\r\n platform: string,\r\n url: string\r\n}\r\n\r\nexport interface IWindow extends Window {\r\n defferedPromptEvent: BeforeInstallPromptEvent | null;\r\n BeforeInstallPromptEvent: BeforeInstallPromptEvent;\r\n}\r\n\r\ntype Booleanish = 'true' | 'false';\r\n\r\nexport interface PWAInstallAttributes {\r\n ['manual-apple']?: Booleanish;\r\n ['manual-chrome']?: Booleanish;\r\n ['disable-chrome']?: Booleanish;\r\n ['install-description']?: string;\r\n ['disable-install-description']?: Booleanish;\r\n ['manifest-url']?: string;\r\n name?: string;\r\n description?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ManifestScreenshot extends ImageResource {\r\n label?: string;\r\n platform?: string;\r\n form_factor?: \"wide\" | \"narrow\";\r\n}\r\n\r\nexport class Manifest {\r\n constructor() {\r\n this.icons = [{ src: '' }];\r\n this.screenshots = undefined;\r\n this.short_name = 'PWA';\r\n this.name = 'Progressive web application';\r\n this.description = 'Progressive web application';\r\n }\r\n short_name: string;\r\n icons: ImageResource[];\r\n screenshots?: ManifestScreenshot[];\r\n name: string;\r\n description: string;\r\n}\r\n","import {css} from 'lit'; export default css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-inline-start:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-inline-end:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px;margin:0 auto}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-inline-start:7px}.gallery.apple_mobile .btn.prev svg{margin-inline-start:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`;\n ","import { WebAppManifest } from 'web-app-manifest';\r\nimport { IRelatedApp, Manifest } from './types/types';\r\n\r\nconst _eventDispatcher = (_element: Element, name: string, message: string) => {\r\n const event = new CustomEvent(name, {\r\n detail: {\r\n message\r\n }\r\n });\r\n _element.dispatchEvent(event);\r\n}\r\nexport default class Utils {\r\n static isAppleMobile(): boolean {\r\n\t\tif (\r\n (\r\n ['iPhone', 'iPad', 'iPod'].includes(navigator.platform) ||\r\n (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2)\r\n )\r\n && ('serviceWorker' in navigator)\r\n )\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static isAppleDesktop(): boolean {\r\n // check if it's a mac\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n if (navigator.maxTouchPoints || !userAgent.match(/macintosh/))\r\n return false;\r\n // check safari version >= 17\r\n const version = /version\\/(\\d{2})\\./.exec(userAgent)\r\n if (!version || !version[1] || !(parseInt(version[1]) >= 17))\r\n return false;\r\n // hacky way to detect Sonoma\r\n const audioCheck = document.createElement('audio').canPlayType('audio/wav; codecs=\"1\"') ? true : false;\r\n const webGLCheck = new OffscreenCanvas(1, 1).getContext('webgl') ? true : false;\r\n\r\n return audioCheck && webGLCheck;\r\n }\r\n\r\n static isAndroid(): boolean {\r\n if (navigator.userAgent.toLowerCase().match(/android/))\r\n return true;\r\n return false;\r\n }\r\n\r\n static isAndroidFallback(): boolean {\r\n if (this.isAndroid() && !('BeforeInstallPromptEvent' in window))\r\n return true;\r\n return false;\r\n }\r\n\r\n static deviceFormFactor(): 'narrow' | 'wide' {\r\n return window.matchMedia('(orientation: portrait)').matches? 'narrow' : 'wide';\r\n }\r\n \r\n static isStandalone() {\r\n\t\tif (window.matchMedia('(display-mode: standalone)').matches || ('standalone' in navigator && (navigator as any).standalone === true))\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static async getInstalledRelatedApps(): Promise {\r\n if ('getInstalledRelatedApps' in navigator)\r\n try{\r\n return await (navigator as any).getInstalledRelatedApps().then((relatedApps: IRelatedApp[]) => {\r\n return relatedApps;\r\n });\r\n } catch (e) {}\r\n \r\n return [];\r\n }\r\n \r\n static async isRelatedAppsInstalled(): Promise {\r\n const _relatedApps = await this.getInstalledRelatedApps();\r\n return _relatedApps.length? true : false;\r\n }\r\n\r\n static setStorageFlag(name: string, value:boolean, persistent: boolean = false) {\r\n try {\r\n if (persistent)\r\n localStorage.setItem(name, value.toString());\r\n else\r\n sessionStorage.setItem(name, value.toString());\r\n } catch (e) {}\r\n }\r\n static getStorageFlag(name: string): boolean {\r\n try {\r\n return sessionStorage.getItem(name) === 'true' || localStorage.getItem(name) === 'true';\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n static eventInstalledSuccess(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-success-event', 'App install success (Chromium/Android only)');\r\n }\r\n static eventInstalledFail(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-fail-event', 'App install failed (Chromium/Android only)');\r\n }\r\n static eventUserChoiceResult(_element: Element, message: string) {\r\n _eventDispatcher(_element, 'pwa-user-choice-result-event', message);\r\n }\r\n static eventInstallAvailable(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-available-event', 'App install available');\r\n }\r\n static eventInstallHowTo(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-how-to-event', 'App install instruction showed');\r\n }\r\n static eventGallery(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-gallery-event', 'App install gallery showed');\r\n }\r\n\r\n static normalizeManifestAssetUrls(manifest: WebAppManifest, manifestUrl: string) {\r\n const normalizedManifestUrl = new URL(manifestUrl, document.location.href);\r\n [...manifest.icons || [], ...manifest.screenshots || []].forEach(asset => {\r\n asset.src = new URL(asset.src, normalizedManifestUrl).href;\r\n })\r\n }\r\n\r\n static async fetchAndProcessManifest(manifestUrl: string, icon: string, name: string, description: string): Promise<{_manifest: WebAppManifest, icon: string, name: string, description: string}> {\r\n let _manifest: WebAppManifest = new Manifest();\r\n let _json: WebAppManifest | null = null;\r\n try{\r\n\t\t\tconst _response = await fetch(manifestUrl);\r\n\t\t\t_json = await _response.json() as WebAppManifest;\r\n\t\t\tif (!_response.ok || !_json || !Object.keys(_json))\r\n\t\t\t\tthrow new Error('Manifest not found');\r\n\t\t\tthis.normalizeManifestAssetUrls(_json, manifestUrl);\r\n } \r\n catch(e) {} \r\n\r\n icon = icon || (_json?.icons?.length ? _json?.icons![0].src : _manifest.icons?.[0].src) || '';\r\n name = name || (_json? _json['short_name']: _manifest['short_name']) || '';\r\n description = description || _json?.description || _manifest.description || '';\r\n\t\t_manifest = _json || _manifest;\r\n \r\n return {\r\n _manifest,\r\n icon,\r\n name,\r\n description\r\n }\r\n }\r\n}","import { html } from 'lit';\r\nimport Utils from '../utils';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nconst template = (screenshots: ManifestScreenshot[], theme: string, scrollToNextPage: any, scrollToPrevPage: any) => {\r\n\r\n return html`\r\n ${screenshots? html`\r\n
\r\n
\r\n
\r\n ${screenshots.filter(screenshot => !screenshot.form_factor || screenshot.form_factor === Utils.deviceFormFactor()).map(screenshot => html`${screenshot.label || \"\"}`)}\r\n
\r\n
\r\n \r\n ${theme != 'default'?\r\n html``\r\n :\r\n html``\r\n }\r\n \r\n \r\n ${theme != 'default'?\r\n html`\r\n \r\n `\r\n :\r\n html`\r\n \r\n \r\n \r\n `\r\n }\r\n \r\n
`\r\n : ''}`;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nimport styles from './styles-gallery.scss';\r\nimport template from './template-gallery';\r\n\r\n@customElement('pwa-gallery')\r\nexport default class PWAGalleryElement extends LitElement {\r\n\t@property({ type: Array }) screenshots: ManifestScreenshot[] = [];\r\n\t@property() theme: 'default' | 'apple_desktop' | 'apple_mobile' = 'default';\r\n\t@property({ type: Boolean }) rtl: boolean = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tprivate getScrollElements = () => {\r\n\t\tconst gallery = this.shadowRoot?.querySelector('#paginated_gallery') as HTMLElement | null;\r\n\t\tif (!gallery) return;\r\n\t\t\r\n\t\tconst galleryScroller = gallery.querySelector('.gallery_scroller') as HTMLElement | null;\r\n\t\tif (!galleryScroller) return;\r\n\t\r\n\t\tconst galleryItems = Array.from(galleryScroller.querySelectorAll('img')) as HTMLElement[];\r\n\t\tif (galleryItems.length === 0) return;\r\n\t\r\n\t\treturn {\r\n\t\t\tscroller: galleryScroller,\r\n\t\t\titems: galleryItems\r\n\t\t};\r\n\t};\r\n\t\r\n\tprivate findCurrentItem = (scroller: HTMLElement, items: HTMLElement[]): HTMLElement | null => {\r\n\t\tconst scrollLeft = scroller.scrollLeft * (this.rtl? -1 : 1);\r\n\t \t// Find the item closest to the center of the viewport.\r\n\t\treturn items.find((item) => (item.offsetWidth + item.offsetLeft * (this.rtl? -1 : 1)) >= scrollLeft + (item.offsetWidth / 2.5)) || null;\r\n\t};\r\n\t\r\n\tprivate scrollToPage = (direction: 'next' | 'prev') => {\r\n\t\tconst scrollData = this.getScrollElements();\r\n\t\tif (!scrollData) return;\r\n\t\r\n\t\tconst { scroller, items } = scrollData;\r\n\t\tconst currentItem = this.findCurrentItem(scroller, items);\r\n\t\tif (!currentItem) return;\r\n\t\r\n\t\tconst currentIndex = items.indexOf(currentItem);\r\n\t\tconst offset = (direction === 'next' ? 1 : -1) * (this.rtl? -1 : 1) ;\r\n\t\tconst targetIndex = currentIndex + offset;\r\n\t\t\r\n\t\tif (targetIndex >= 0 && targetIndex < items.length) {\r\n\t\t\titems[targetIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\r\n\t\t}\r\n\t};\r\n\t\r\n\tpublic scrollToNextPage = () => {\r\n\t\tthis.scrollToPage('next');\r\n\t};\r\n\t\r\n\tpublic scrollToPrevPage = () => {\r\n\t\tthis.scrollToPage('prev');\r\n\t};\r\n\r\n\r\n\tprivate _init = () => {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tconst _tools = this.getScrollElements();\r\n\t\tif (_tools)\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\t_tools.scroller.scrollTo({\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t300\r\n\t\t\t)\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\tthis._init();\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(\r\n this.screenshots,\r\n\t\t\tthis.theme,\r\n\t\t\tthis.scrollToNextPage,\r\n\t\t\tthis.scrollToPrevPage\r\n )}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`.dialog-body .icon{display:flex;align-items:flex-start}.dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}.dialog-body .about{display:grid;grid-template-rows:30px auto}.dialog-body .about .hostname,.dialog-body .about .name{padding:0 5px;overflow:hidden}.dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}.dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}.dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:start;word-break:break-all;white-space:nowrap}.dialog-body .about+hr{margin-top:10px}.dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:start}.dialog-body .app-description{font-size:13px;margin-bottom:10px}.dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}.dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}.dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}.dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.dialog-body .install-description{font-size:14px}.dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}.dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}.dialog-body .action-buttons .primary{grid-column-start:2}.dialog-body .material-button{--text-color-primary:#eee;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#eee;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,\"Segoe UI\",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}.dialog-body .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}.dialog-body .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}.dialog-body .material-button.secondary::after,.dialog-body .material-button.secondary::before{background-color:var(--background-color-primary)}.dialog-body .material-button.secondary:active,.dialog-body .material-button.secondary:hover{box-shadow:none}.dialog-body .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-inline-end:0;margin-inline-start:auto;padding:0;border-radius:50%}.dialog-body .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}.dialog-body .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}.dialog-body .material-button.secondary.close::before{border-radius:50%}.dialog-body .material-button::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}.dialog-body .material-button::after{content:\"\";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}.dialog-body .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.dialog-body .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}.dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}@media(prefers-color-scheme:dark){.dialog-body .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(hover:none)and (pointer:coarse){.dialog-body .description::-webkit-scrollbar{display:none}}`;\n ","import {css} from 'lit'; export default css`:host{grid-template-columns:1fr}:host .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}:host .touch-header:active{cursor:grabbing}:host .touch-header::before{content:\"\";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}:host .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}:host .body-header .install{text-transform:capitalize;height:40px;min-width:50px;padding:0 23px;align-items:center;display:inline-flex;-webkit-tap-highlight-color:transparent;transition:min-width .2s,color .2s,background-color .2s,border-color .2s}:host .body-header .install .button-text,:host .body-header .install svg{margin:0 auto}:host .body-header .install .check-icon{display:none}:host .body-header .about{grid-template-rows:auto auto;grid-gap:6px}:host .body-header .about .name{padding:0;line-height:20px;font-size:16px}:host .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}:host .body-header .icon .icon-image{margin:0;width:45px;height:45px}:host .how-to-body{display:flex;flex-direction:column;gap:15px;max-height:0;overflow:hidden;padding:0 20px;opacity:0}:host .how-to-body .description-step{display:flex;gap:15px;margin-inline-start:2.5px;align-items:center}:host .how-to-body .description-step .svg-wrap{display:flex;align-items:center;width:40px;height:40px;background-color:var(--touch-header-color);border-radius:50%}:host .how-to-body .description-step .svg-wrap svg{fill:var(--text-color-normal);margin:0 auto}:host .how-to-body .description-step .svg-wrap.add-icon svg{padding-right:1px}:host .how-to .description,:host .how-to ::slotted(pwa-gallery){max-height:0;padding-top:0;padding-bottom:0;overflow:hidden;opacity:0}:host .how-to .how-to-body{max-height:600px;padding-top:18px;padding-bottom:18px;opacity:1}:host .how-to .install{min-width:40px;padding:0;background:rgba(0,0,0,0);color:var(--text-color-normal);box-shadow:none;border:1px solid}:host .how-to .install .check-icon{display:inline;fill:var(--text-color-normal)}:host .how-to .install .button-text{display:none}:host .description{padding:15px 20px;margin:0;-webkit-line-clamp:6;max-height:150px;opacity:1}:host ::slotted(pwa-gallery){display:block;max-height:600px;padding-bottom:15px;opacity:1;transition:max-height 1.5s,opacity .8s,padding 1.5s}:host .description,:host .how-to-body{transition:max-height .2s,opacity .15s,padding .2s}:host .material-button{border-radius:20px}`;\n ","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"classMap\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_directives_class_map_js_2f88e643__.classMap) });","import { html } from 'lit';\r\nimport { msg } from '@lit/localize';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\n\r\nconst fallbackClass = (isAndroidFallback: boolean = false, howToRequested: boolean = false) => {\r\n return {fallback: isAndroidFallback, 'how-to': howToRequested};\r\n}\r\n\r\nconst template = (name: string, description: string, icon: string, install: any, fallback?: boolean, howToRequested?: boolean) => {\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${location.hostname}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${msg('1) Open your browser menu')}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${msg('2) Tap \"Add to Home screen\"')}
\r\n
\r\n
\r\n ${description ? html `
${description}
`: ''}\r\n \r\n
\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\n\r\nimport stylesCommon from '../styles-common.scss'\r\nimport styles from './styles-bottom-sheet.scss';\r\n\r\n// import TouchDragListener from \"./touch-listener\";\r\n\r\ntype IProps = {\r\n name: string,\r\n description: string,\r\n icon: string\r\n}\r\n\r\nimport template from './template-bottom-sheet';\r\nimport Utils from '../../../utils';\r\n\r\n@customElement('pwa-bottom-sheet')\r\nexport default class PWABottomSheetElement extends LitElement {\r\n\tstatic get styles() {\r\n\t\treturn [stylesCommon, styles];\r\n\t}\r\n\r\n\t@property({type: Object}) props: IProps = {\r\n name: '',\r\n description: '',\r\n icon: ''\r\n };\r\n @property({type: Object}) install = {handleEvent: () => {}};\r\n\t@property() hideDialog = () => {};\r\n\t@property({type: Boolean}) disableClose = false;\r\n\r\n\t@property({type: Boolean}) fallback = false;\r\n\t@property({type: Boolean}) howToRequested = false;\r\n\t@property({type: Object}) toggleHowTo = {handleEvent: () => {}};\r\n\r\n\tprivate _callInstall = () => {\r\n\t\tif (this.fallback) {\r\n\t\t\tthis.toggleHowTo.handleEvent();\r\n\t\t\tsetTimeout(() => this.setupAppearence(true), 210);\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.install.handleEvent();\r\n\t}\r\n\r\n\tprivate _callHide = () => {\r\n\t\tthis.hideDialog();\r\n\t\tthis.setupAppearence();\r\n\t}\r\n\r\n\tprivate bindedElement: {\r\n\t\ttouchElement: HTMLElement,\r\n\t\tlistener: any }| null = null;\r\n\tprivate readonly _saveBodyStyle = document.body.style.overscrollBehaviorY;\r\n\tprivate dragMobileSheet = (element: HTMLElement | null | undefined, touchTargetElement: HTMLElement | undefined, infoElement: HTMLElement | undefined) => {\r\n\t\tif (!element || !touchTargetElement || !infoElement)\r\n\t\t\treturn null;\r\n\r\n\t\tlet dragOffset = 0;\r\n\t\tconst bounceOffset = 35;\r\n\t\t\r\n\t\tconst bottomSize = infoElement.offsetHeight + infoElement.offsetTop;\r\n\r\n\t\tconst getYCoord = (e: MouseEvent | TouchEvent): number => {\r\n\t\t\treturn (e as MouseEvent).clientY || ((e as TouchEvent).changedTouches && (e as TouchEvent).changedTouches.length? (e as TouchEvent).changedTouches[0].clientY : 0);\r\n\t\t}\r\n\r\n\t\tconst dragMouseDown = (e: MouseEvent | TouchEvent) => {\r\n\t\t\twindow.addEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.addEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.addEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.addEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tdragOffset = getYCoord(e) - touchTargetElement.getBoundingClientRect().top;\r\n\r\n\t\t\tdocument.body.style.overscrollBehaviorY = 'none';\r\n\t\t}\r\n\t\tconst dragMouseUp = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tdocument.body.style.overscrollBehaviorY = this._saveBodyStyle;\r\n\r\n\t\t\tif (!this.disableClose && getYCoord(e) >= window.innerHeight - 25) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight + 50, true);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (window.innerHeight - getYCoord(e) > element.clientHeight / 2.5) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - element.clientHeight);\r\n\t\t\t\t\r\n\t\t\t\ttry {\r\n\t\t\t\t\t!this.howToRequested && Utils.eventGallery((this.getRootNode() as ShadowRoot).host);\r\n\t\t\t\t} catch (e) {}\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - bottomSize - bounceOffset);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dragMouseMove = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tconst currentY = getYCoord(e);\r\n\r\n\t\t\tif (this.disableClose && window.innerHeight - currentY < 70) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (currentY <= (window.innerHeight - element.clientHeight + dragOffset)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`none`\r\n\t\t\t)\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"--translateY\",\r\n\t\t\t\t`translateY(${currentY - dragOffset}px)`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst closeDragElement = (e: MouseEvent | TouchEvent, toPoint?: number, hideDialog?: boolean) => {\r\n\t\t\twindow.removeEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.removeEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.removeEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.removeEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tif (window.innerWidth >= 768)\r\n\t\t\t\treturn\r\n\r\n\t\t\tif (!toPoint && getYCoord(e) >= window.innerHeight - bottomSize)\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(calc(100vh - ${bottomSize}px))`\r\n\t\t\t\t);\r\n\t\t\telse\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(${(toPoint || getYCoord(e)) + bounceOffset}px)`\r\n\t\t\t\t);\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s`\r\n\t\t\t);\r\n\r\n\t\t\tif (hideDialog){\r\n\t\t\t\ttouchTargetElement.removeEventListener('mousedown', dragMouseDown);\r\n\t\t\t\ttouchTargetElement.removeEventListener('touchstart', dragMouseDown);\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\tthis._callHide,\r\n\t\t\t\t\t250\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ttouchTargetElement.addEventListener('mousedown', dragMouseDown);\r\n\t\ttouchTargetElement.addEventListener('touchstart', dragMouseDown, {passive: false});\r\n\r\n\t\tcloseDragElement(new MouseEvent('mouseup'), window.innerHeight - bottomSize - bounceOffset);\r\n\r\n\t\treturn {\r\n\t\t\ttouchElement: touchTargetElement,\r\n\t\t\tlistener: dragMouseDown\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupAppearence = (fullOpen?: boolean) => {\r\n\t\tif (this.bindedElement) {\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('mousedown', this.bindedElement.listener);\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('touchstart', this.bindedElement.listener);\r\n\t\t}\r\n\t\t\r\n\t\tthis.bindedElement = this.dragMobileSheet(\r\n\t\t\tthis.parentElement,\r\n\t\t\tthis.shadowRoot?.querySelector('.dialog-body .touch-header') as HTMLElement,\r\n\t\t\tthis.shadowRoot?.querySelector(`.dialog-body ${fullOpen? '.how-to-body': '.body-header'}`) as HTMLElement);\r\n\t}\r\n\tprivate _init = () => {\r\n\t\tthis.setupAppearence();\r\n\r\n\t\twindow.addEventListener('resize', () => this.setupAppearence());\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tthis._init();\r\n return;\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(this.props.name, this.props.description, this.props.icon, this._callInstall, this.fallback, this.howToRequested)}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,\"Segoe UI\",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#eee;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}`;\n ","import {css} from 'lit'; export default css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,\"Segoe UI\";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon description\" \"welcome welcome\" \"how-to how-to\" \"gallery gallery\" \"button button\";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-inline-end:7px;margin-top:7px;margin-inline-start:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-inline-end:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-inline-end:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;padding:0;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:start;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;grid-template-columns:unset;gap:unset;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:start}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-inline-end:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:start}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon\" \"description\" \"welcome\" \"how-to\" \"gallery\" \"button\";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-inline-end:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-inline-end:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop pwa-gallery{margin:0 -10px}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;\n ","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\nimport { ManifestScreenshot } from '../../types/types';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, install: any, toggleGallery: any, galleryRequested: boolean, toggleHowTo: any, howToRequested: boolean, isAndroidFallback: boolean, isRTL: boolean = false) => {\r\n const installDialogClasses = () => { return {available: installAvailable, gallery: galleryRequested }};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n ${!disableClose? html`` : ''}\r\n
\r\n
${location.hostname}
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n ${!disableDescription? \r\n html`
${installDescription? installDescription: `${msg('This site has app functionality.')} ${msg('Install it on your device for extensive experience and easy access.')}`}
` \r\n : ''}\r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n ${screenshotsAvailable? html``:''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n ${screenshotsAvailable? html``: ''}\r\n \r\n
\r\n
`;\r\n};\r\nexport default template;\r\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, howToForApple: any, isDesktop: boolean, howToRequested: boolean, toggleGallery: any, galleryRequested: boolean, isRTL: boolean = false) => {\r\n const installDialogClassesApple = () => { return {available: installAvailable, 'how-to': howToRequested, gallery: galleryRequested, desktop: isDesktop}};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, PropertyValues, html } from 'lit';\r\nimport { localized } from '@lit/localize';\r\nimport { property, state, customElement } from 'lit/decorators.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { changeLocale, isRTL } from './localization';\r\n\r\nimport { IRelatedApp, Manifest, IWindow, PWAInstallAttributes } from './types/types';\r\n\r\nimport PWAGalleryElement from './gallery';\r\nimport PWABottomSheetElement from './templates/chrome/bottom-sheet';\r\n\r\nimport Utils from './utils';\r\n\r\ndeclare const window: IWindow;\r\n\r\nimport styles from './templates/chrome/styles.scss';\r\nimport stylesCommon from './templates/chrome/styles-common.scss'\r\nimport stylesApple from './templates/apple/styles-apple.scss';\r\n\r\nimport template from './templates/chrome/template';\r\nimport templateApple from './templates/apple/template-apple';\r\n\r\n/**\r\n * @event {CustomEvent} pwa-install-success-event - App install success (Chromium/Android only)\r\n * @event {CustomEvent} pwa-install-fail-event - App install failed (Chromium/Android only)\r\n * @event {CustomEvent} pwa-user-choice-result-event - dismissed, accepted\r\n * @event {CustomEvent} pwa-install-available-event - App install available\r\n * @event {CustomEvent} pwa-install-how-to-event - App install instruction showed\r\n * @event {CustomEvent} pwa-install-gallery-event - App install gallery showed\r\n */\r\n@localized()\r\n@customElement('pwa-install')\r\nexport class PWAInstallElement extends LitElement {\r\n\t@property({attribute: 'manifest-url'}) manifestUrl = '/manifest.json';\r\n\t@property() icon = '';\r\n\t@property() name = '';\r\n\t@property() description = '';\r\n\t@property({attribute: 'install-description'}) installDescription = '';\r\n\t@property({attribute: 'disable-install-description', type: Boolean}) disableDescription = false;\r\n\t@property({attribute: 'disable-screenshots', type: Boolean}) disableScreenshots = false;\r\n\t@property({attribute: 'disable-screenshots-apple', type: Boolean}) disableScreenshotsApple = false;\r\n\t@property({attribute: 'disable-screenshots-chrome', type: Boolean}) disableScreenshotsChrome = false;\r\n\t@property({attribute: 'manual-apple', type: Boolean}) manualApple = false;\r\n\t@property({attribute: 'manual-chrome', type: Boolean}) manualChrome = false;\r\n\t@property({attribute: 'disable-chrome', type: Boolean}) disableChrome = false;\r\n\t@property({attribute: 'disable-close', type: Boolean}) disableClose = false;\r\n\t@property({attribute: 'disable-android-fallback', type: Boolean}) disableFallback = false;\r\n\t@property({attribute: 'use-local-storage', type: Boolean}) useLocalStorage = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn [ styles, stylesCommon, stylesApple ];\r\n\t}\r\n\r\n\t@state() externalPromptEvent: BeforeInstallPromptEvent | null = null;\r\n\r\n\tpublic platforms: BeforeInstallPromptEvent['platforms'] = [];\r\n\tpublic userChoiceResult = '';\r\n\r\n\tpublic isDialogHidden: boolean = Utils.getStorageFlag('pwa-hide-install');\r\n\tpublic isInstallAvailable = false;\r\n\tpublic isAppleMobilePlatform = false;\r\n\tpublic isAppleDesktopPlatform = false;\r\n\tpublic isAndroidFallback = false;\r\n\tpublic isAndroid = false;\r\n\tpublic isUnderStandaloneMode = false;\r\n\tpublic isRelatedAppsInstalled = false;\r\n\r\n\t/** @internal */\r\n\tprivate _isRTL = false;\r\n\r\n\t/** @internal */\r\n\tprivate _manifest: Manifest = new Manifest();\r\n\t/** @internal */\r\n\tprivate _howToRequested = false;\r\n\t/** @internal */\r\n\tprivate _galleryRequested = false;\r\n\t/** @internal */\r\n\tprivate _install = {\r\n\t\thandleEvent: () => {\r\n\t\t\tif (window.defferedPromptEvent) {\r\n\t\t\t\tthis.hideDialog();\r\n\t\t\t\twindow.defferedPromptEvent.prompt();\r\n\t\t\t\twindow.defferedPromptEvent.userChoice\r\n\t\t\t\t\t.then((choiceResult: PromptResponseObject) => {\r\n\t\t\t\t\t\tthis.userChoiceResult = choiceResult.outcome;\r\n\t\t\t\t\t\tUtils.eventUserChoiceResult(this, this.userChoiceResult);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tUtils.eventInstalledFail(this);\r\n\t\t\t\t\t});\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\tpublic install = () => {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis._howToRequested = true;\r\n\t\t\tthis.requestUpdate();\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._install.handleEvent();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialog = {\r\n\t\thandleEvent: () => {\r\n\t\t\tthis.isDialogHidden = true;\r\n\t\t\tUtils.setStorageFlag('pwa-hide-install', true, this.useLocalStorage);\r\n\t\t\tthis.requestUpdate();\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialogUser = () => {\r\n\t\tUtils.eventUserChoiceResult(this, 'dismissed');\r\n\t\tthis.userChoiceResult = 'dismissed';\r\n\t\tthis.hideDialog();\r\n\t}\r\n\tpublic hideDialog = () => {\r\n\t\tthis._hideDialog.handleEvent();\r\n\t}\r\n\tpublic showDialog = (forced = false) => {\r\n\t\tthis.isDialogHidden = false;\r\n\t\tif (forced)\r\n\t\t\tthis.isInstallAvailable = true;\r\n\t\tUtils.setStorageFlag('pwa-hide-install', false, this.useLocalStorage);\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tpublic getInstalledRelatedApps = async (): Promise => {\r\n\t\treturn await Utils.getInstalledRelatedApps();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _toggleHowTo = {\r\n handleEvent: () => {\r\n\t\t\tthis._howToRequested = !this._howToRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._galleryRequested = false;\r\n\t\t\tthis.requestUpdate();\r\n\r\n\t\t\tif (this._howToRequested) {\r\n\t\t\t\tUtils.eventInstallHowTo(this);\r\n\t\t\t}\t\t\t\t\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate _toggleGallery = {\r\n handleEvent: () => {\r\n\t\t\tthis._galleryRequested = !this._galleryRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._howToRequested = false;\r\n\r\n\t\t\tthis._galleryRequested && Utils.eventGallery(this);\r\n\r\n\t\t\tthis.requestUpdate();\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate async _checkPlatform() {\r\n\t\tthis.isUnderStandaloneMode = Utils.isStandalone();\r\n\t\tthis.isRelatedAppsInstalled = await Utils.isRelatedAppsInstalled();\r\n\t\tthis.isAppleMobilePlatform = Utils.isAppleMobile();\r\n\t\tthis.isAppleDesktopPlatform = Utils.isAppleDesktop();\r\n\t\tthis.isAndroidFallback = Utils.isAndroidFallback();\r\n\t\tthis.isAndroid = Utils.isAndroid();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _checkInstallAvailable() {\r\n\t\tif (this.isUnderStandaloneMode)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis.manualApple && this.hideDialog();\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t},\r\n\t\t\t\t1000\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet _promptTriggered = false;\r\n\t\tif (!this.disableChrome && window.BeforeInstallPromptEvent) {\r\n\t\t\tthis.manualChrome && this.hideDialog();\r\n\t\t\tconst _promptHandler = (e: BeforeInstallPromptEvent) => {\r\n\t\t\t\twindow.defferedPromptEvent = e;\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.platforms = e.platforms;\r\n\r\n\t\t\t\tif (this.isRelatedAppsInstalled) {\r\n\t\t\t\t\tthis.isInstallAvailable = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userChoiceResult === 'accepted'){\r\n\t\t\t\t\tthis.isDialogHidden = true;\r\n\t\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t_promptTriggered = true;\r\n\t\t\t\tthis.isAndroidFallback = false;\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t\tif (this.externalPromptEvent != null)\r\n\t\t\t\tsetTimeout(() => _promptHandler(this.externalPromptEvent!), 300);\r\n\t\t\telse\r\n\t\t\t\twindow.addEventListener('beforeinstallprompt', _promptHandler);\r\n\t\t}\r\n\t\t\r\n\t\tif (!this.disableFallback && this.isAndroid && !_promptTriggered) {\r\n\t\t\t// browsers without BeforeInstallPromptEvent\r\n\t\t\tif (this.isAndroidFallback) {\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t1000\r\n\t\t\t\t);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t// trying to fix browsers like Opera with BeforeInstallPromptEvent not working\r\n\t\t\tif ('userActivation' in navigator && !this.isRelatedAppsInstalled) {\r\n\t\t\t\tconst _activation = navigator.userActivation;\r\n\t\t\t\tconst _activationHandler = setInterval(() => {\r\n\t\t\t\t\tif (_activation.isActive || _activation.hasBeenActive) {\r\n\t\t\t\t\t\tif (!_promptTriggered) {\r\n\t\t\t\t\t\t\tthis.isAndroidFallback = true;\r\n\t\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\t\tthis.requestUpdate();\r\n\t\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tclearInterval(_activationHandler);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 1000);\r\n\t\t\t\tsetTimeout(() => clearInterval(_activationHandler), 30000);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _init = async () => {\r\n\t\twindow.defferedPromptEvent = null;\r\n\r\n\t\tawait this._checkPlatform();\r\n\t\tthis._checkInstallAvailable();\r\n\r\n\t\tif ('onappinstalled' in window)\r\n\t\t\twindow.addEventListener('appinstalled', (e) => {\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t\tthis.isInstallAvailable = false;\r\n\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t});\r\n\r\n\t\tObject.assign(this, await Utils.fetchAndProcessManifest(this.manifestUrl, this.icon, this.name, this.description));\r\n\t};\r\n\t/** @internal */\r\n\tprivate _requestUpdate = () => {\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tasync connectedCallback() {\r\n\t\tawait changeLocale(navigator.language);\r\n\t\tthis._isRTL = isRTL();\r\n\t\tthis._init();\r\n\t\tPWAGalleryElement.finalized;\r\n\t\tPWABottomSheetElement.finalized;\r\n\t\tsuper.connectedCallback();\r\n\t}\r\n\twillUpdate(changedProperties: PropertyValues) {\r\n\t\tif (this.externalPromptEvent && changedProperties.has('externalPromptEvent') && typeof this.externalPromptEvent == 'object') {\r\n\t\t this._init();\r\n\t\t}\r\n\t}\r\n\r\n\t// firstUpdated() {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\trender() {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform)\r\n\t\t\treturn html`${templateApple(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsApple,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._toggleHowTo,\r\n\t\t\t\tthis.isAppleDesktopPlatform,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested,\r\n\t\t\t\tthis._isRTL\r\n\t\t\t)}`;\r\n\t\telse\r\n\t\t\treturn html`${template(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsChrome,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._install,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested,\r\n\t\t\t\tthis._toggleHowTo,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis.isAndroidFallback,\r\n\t\t\t\tthis._isRTL\r\n\t\t\t)}`;\r\n\t}\r\n}\r\n\r\nexport { PWAInstallAttributes };\r\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { updateWhenLocaleChanges } from './localized-controller.js';\n/**\n * Class decorator to enable re-rendering the given LitElement whenever a new\n * active locale has loaded.\n *\n * See also {@link updateWhenLocaleChanges} for the same functionality without\n * the use of decorators.\n *\n * When using lit-localize in transform mode, applications of this decorator are\n * removed.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {customElement} from 'lit/decorators.js';\n * import {msg, localized} from '@lit/localize';\n *\n * @localized()\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nexport const localized = () => (clazz, _context) => {\n clazz.addInitializer(updateWhenLocaleChanges);\n return clazz;\n};\n//# sourceMappingURL=localized-decorator.js.map","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=new Set([\"children\",\"localName\",\"ref\",\"style\",\"className\"]),n=new WeakMap,t=(e,t,o,l,a)=>{const s=a?.[t];void 0===s?(e[t]=o,null==o&&t in HTMLElement.prototype&&e.removeAttribute(t)):o!==l&&((e,t,o)=>{let l=n.get(e);void 0===l&&n.set(e,l=new Map);let a=l.get(t);void 0!==o?void 0===a?(l.set(t,a={handleEvent:o}),e.addEventListener(t,a)):a.handleEvent=o:void 0!==a&&(l.delete(t),e.removeEventListener(t,a))})(e,s,o)},o=({react:n,tagName:o,elementClass:l,events:a,displayName:s})=>{const c=new Set(Object.keys(a??{})),r=n.forwardRef(((s,r)=>{const i=n.useRef(new Map),d=n.useRef(null),f={},u={};for(const[n,t]of Object.entries(s))e.has(n)?f[\"className\"===n?\"class\":n]=t:c.has(n)||n in l.prototype?u[n]=t:f[n]=t;return n.useLayoutEffect((()=>{if(null===d.current)return;const e=new Map;for(const n in u)t(d.current,n,s[n],i.current.get(n),a),i.current.delete(n),e.set(n,s[n]);for(const[e,n]of i.current)t(d.current,e,void 0,n,a);i.current=e})),n.useLayoutEffect((()=>{d.current?.removeAttribute(\"defer-hydration\")}),[]),f.suppressHydrationWarning=!0,n.createElement(o,{...f,ref:n.useCallback((e=>{d.current=e,\"function\"==typeof r?r(e):null!==r&&(r.current=e)}),[r])})}));return r.displayName=s??l.name,r};export{o as createComponent};\n//# sourceMappingURL=create-component.js.map\n","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => (__WEBPACK_EXTERNAL_MODULE_react__[\"default\"]) });","\r\nimport { PWAInstallElement } from '../index';\r\nimport { createComponent, ReactWebComponent } from '@lit/react';\r\nimport react from 'react';\r\n\r\nconst PWAInstall = createComponent({\r\n\treact,\r\n\ttagName: 'pwa-install',\r\n\telementClass: PWAInstallElement,\r\n\tevents: {\r\n\t onPwaInstallSuccessEvent: 'pwa-install-success-event',\r\n\t onPwaInstallFailEvent: 'pwa-install-fail-event',\r\n\t onPwaUserChoiceResultEvent: 'pwa-user-choice-result-event',\r\n\t onPwaInstallAvailableEvent: 'pwa-install-available-event',\r\n\t onPwaInstallHowToEvent: 'pwa-install-how-to-event',\r\n\t onPwaInstallGalleryEvent: 'pwa-install-gallery-event'\r\n\t}\r\n});\r\n\r\nexport default PWAInstall;"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","y","x","d","__WEBPACK_EXTERNAL_MODULE_lit__","joinStringsAndValues","strings","values","valueOrder","concat","i","length","defaultMsg","template","isStrTagged","val","msg","installed","LOCALE_STATUS_EVENT","LocalizeController","constructor","host","this","__litLocalizeEventHandler","event","detail","status","requestUpdate","hostConnected","window","addEventListener","hostDisconnected","removeEventListener","updateWhenLocaleChanges","addController","Deferred","settled","promise","Promise","resolve","reject","_resolve","_reject","error","hl","toString","generateMsgId","isHtmlTagged","str","t0","v0","t1","v1","t2","v2","t3","v3","charCodeAt","fnv1a64","join","expressionOrders","WeakMap","hashCache","Map","runtimeMsg","templates","options","id","undefined","set","generateId","localized","order","map","dispatchStatusEvent","dispatchEvent","CustomEvent","loadingLocale","sourceLocale","validLocales","loadLocale","activeLocale","loading","requestId","getLocale","setLocale","newLocale","Error","has","thisRequestId","then","mod","readyLocale","err","errorLocale","errorMessage","__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__","targetLocales","localizedTemplates","config","async","lang","impl","_installMsgImplementation","Set","add","Manifest","icons","src","screenshots","short_name","name","description","css","_eventDispatcher","_element","message","Utils","isAppleMobile","includes","navigator","platform","userAgent","match","maxTouchPoints","isAppleDesktop","toLowerCase","version","exec","parseInt","audioCheck","document","createElement","canPlayType","webGLCheck","OffscreenCanvas","getContext","isAndroid","isAndroidFallback","deviceFormFactor","matchMedia","matches","isStandalone","standalone","getInstalledRelatedApps","relatedApps","e","isRelatedAppsInstalled","setStorageFlag","persistent","localStorage","setItem","sessionStorage","getStorageFlag","getItem","eventInstalledSuccess","eventInstalledFail","eventUserChoiceResult","eventInstallAvailable","eventInstallHowTo","eventGallery","normalizeManifestAssetUrls","manifest","manifestUrl","normalizedManifestUrl","URL","location","href","forEach","asset","fetchAndProcessManifest","icon","_manifest","_json","_response","fetch","json","ok","keys","theme","scrollToNextPage","scrollToPrevPage","html","PWAGalleryElement","LitElement","rtl","getScrollElements","gallery","shadowRoot","querySelector","galleryScroller","galleryItems","Array","from","querySelectorAll","scroller","items","findCurrentItem","scrollLeft","find","item","offsetWidth","offsetLeft","scrollToPage","direction","scrollData","currentItem","targetIndex","indexOf","scrollIntoView","behavior","block","inline","_init","styles","firstUpdated","_tools","setTimeout","scrollTo","top","left","connectedCallback","super","render","property","type","Boolean","customElement","__WEBPACK_EXTERNAL_MODULE_lit_directives_class_map_js_2f88e643__","install","fallback","howToRequested","PWABottomSheetElement","props","handleEvent","hideDialog","disableClose","toggleHowTo","_callInstall","setupAppearence","_callHide","bindedElement","_saveBodyStyle","body","style","overscrollBehaviorY","dragMobileSheet","element","touchTargetElement","infoElement","dragOffset","bottomSize","offsetHeight","offsetTop","getYCoord","clientY","changedTouches","dragMouseDown","dragMouseUp","dragMouseMove","preventDefault","getBoundingClientRect","innerHeight","closeDragElement","clientHeight","getRootNode","currentY","setProperty","toPoint","innerWidth","passive","MouseEvent","touchElement","listener","fullOpen","parentElement","installDescription","disableDescription","disableScreenshots","installAvailable","toggleGallery","galleryRequested","isRTL","installDialogClasses","available","screenshotsAvailable","howToForApple","isDesktop","desktop","PWAInstallElement","disableScreenshotsApple","disableScreenshotsChrome","manualApple","manualChrome","disableChrome","disableFallback","useLocalStorage","externalPromptEvent","platforms","userChoiceResult","isDialogHidden","isInstallAvailable","isAppleMobilePlatform","isAppleDesktopPlatform","isUnderStandaloneMode","_isRTL","_howToRequested","_galleryRequested","_install","defferedPromptEvent","prompt","userChoice","choiceResult","outcome","catch","_hideDialog","_hideDialogUser","showDialog","forced","_toggleHowTo","_toggleGallery","_checkPlatform","_checkInstallAvailable","assign","_requestUpdate","_promptTriggered","BeforeInstallPromptEvent","_promptHandler","_activation","userActivation","_activationHandler","setInterval","isActive","hasBeenActive","clearInterval","slice","changeLocale","language","finalized","willUpdate","changedProperties","attribute","state","clazz","_context","addInitializer","n","t","l","a","s","HTMLElement","removeAttribute","delete","__WEBPACK_EXTERNAL_MODULE_react__","PWAInstall","react","tagName","elementClass","events","displayName","c","r","forwardRef","useRef","f","u","entries","useLayoutEffect","current","suppressHydrationWarning","ref","useCallback","onPwaInstallSuccessEvent","onPwaInstallFailEvent","onPwaUserChoiceResultEvent","onPwaInstallAvailableEvent","onPwaInstallHowToEvent","onPwaInstallGalleryEvent"],"sourceRoot":""} +{"version":3,"file":"pwa-install.react-legacy.js","mappings":"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","sources":["webpack://@khmyznikov/pwa-install/webpack/bootstrap","webpack://@khmyznikov/pwa-install/webpack/runtime/define property getters","webpack://@khmyznikov/pwa-install/webpack/runtime/hasOwnProperty shorthand","webpack://@khmyznikov/pwa-install/webpack/runtime/make namespace object","webpack://@khmyznikov/pwa-install/external module \"lit\"","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/str-tag.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/default-msg.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/init/install.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/locale-status-event.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/localized-controller.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/deferred.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/fnv1a64.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/id-generation.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/runtime-msg.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/init/runtime.js","webpack://@khmyznikov/pwa-install/external module \"lit/decorators.js\"","webpack://@khmyznikov/pwa-install/./src/localization/locale-codes.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ru.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/tr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/de.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/es.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/nl.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/el.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/fr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/sr.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/pl.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/uk.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/zh-HK.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/zh-CN.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/it.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/cs.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/no.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/pt.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ja.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/sv.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/ko.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/km.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/fa.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/da.ts","webpack://@khmyznikov/pwa-install/./src/localization/locales/vi.ts","webpack://@khmyznikov/pwa-install/./src/localization/index.ts","webpack://@khmyznikov/pwa-install/./src/types/types.ts","webpack://@khmyznikov/pwa-install/./src/gallery/styles-gallery.scss","webpack://@khmyznikov/pwa-install/./src/utils.ts","webpack://@khmyznikov/pwa-install/./src/gallery/template-gallery.ts","webpack://@khmyznikov/pwa-install/./src/gallery/index.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/styles-common.scss","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/styles-bottom-sheet.scss","webpack://@khmyznikov/pwa-install/external module \"lit/directives/class-map.js\"","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/template-bottom-sheet.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/bottom-sheet/index.ts","webpack://@khmyznikov/pwa-install/./src/templates/chrome/styles.scss","webpack://@khmyznikov/pwa-install/./src/templates/apple/styles-apple.scss","webpack://@khmyznikov/pwa-install/./src/templates/chrome/template.ts","webpack://@khmyznikov/pwa-install/./src/templates/apple/template-apple.ts","webpack://@khmyznikov/pwa-install/./src/index.ts","webpack://@khmyznikov/pwa-install/./node_modules/@lit/localize/internal/localized-decorator.js","webpack://@khmyznikov/pwa-install/./node_modules/@lit/react/create-component.js","webpack://@khmyznikov/pwa-install/external module \"react\"","webpack://@khmyznikov/pwa-install/./src/react-legacy/pwa-install.react-legacy.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"LitElement\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.LitElement), [\"css\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.css), [\"html\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit__.html) });","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Tag that allows expressions to be used in localized non-HTML template\n * strings.\n *\n * Example: msg(str`Hello ${this.user}!`);\n *\n * The Lit html tag can also be used for this purpose, but HTML will need to be\n * escaped, and there is a small overhead for HTML parsing.\n *\n * Untagged template strings with expressions aren't supported by lit-localize\n * because they don't allow for values to be captured at runtime.\n */\nconst _str = (strings, ...values) => ({\n strTag: true,\n strings,\n values,\n});\nexport const str = _str;\nexport const isStrTagged = (val) => typeof val !== 'string' && 'strTag' in val;\n/**\n * Render the result of a `str` tagged template to a string. Note we don't need\n * to do this for Lit templates, since Lit itself handles rendering.\n */\nexport const joinStringsAndValues = (strings, values, valueOrder) => {\n let concat = strings[0];\n for (let i = 1; i < strings.length; i++) {\n concat += values[valueOrder ? valueOrder[i - 1] : i - 1];\n concat += strings[i];\n }\n return concat;\n};\n//# sourceMappingURL=str-tag.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { isStrTagged, joinStringsAndValues } from './str-tag.js';\n/**\n * Default identity msg implementation. Simply returns the input template with\n * no awareness of translations. If the template is str-tagged, returns it in\n * string form.\n */\nexport const defaultMsg = ((template) => isStrTagged(template)\n ? joinStringsAndValues(template.strings, template.values)\n : template);\n//# sourceMappingURL=default-msg.js.map","import { defaultMsg } from '../internal/default-msg.js';\n/**\n * Make a string or lit-html template localizable.\n *\n * @param template A string, a lit-html template, or a function that returns\n * either a string or lit-html template.\n * @param options Optional configuration object with the following properties:\n * - id: Optional project-wide unique identifier for this template. If\n * omitted, an id will be automatically generated from the template strings.\n * - desc: Optional description\n */\nexport let msg = defaultMsg;\nlet installed = false;\n/**\n * Internal only. Do not use this function.\n *\n * Installs an implementation of the msg function to replace the default\n * identity function. Throws if called more than once.\n *\n * @internal\n */\nexport function _installMsgImplementation(impl) {\n if (installed) {\n throw new Error('lit-localize can only be configured once');\n }\n msg = impl;\n installed = true;\n}\n//# sourceMappingURL=install.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Name of the event dispatched to `window` whenever a locale change starts,\n * finishes successfully, or fails. Only relevant to runtime mode.\n *\n * The `detail` of this event is an object with a `status` string that can be:\n * \"loading\", \"ready\", or \"error\", along with the relevant locale code, and\n * error message if applicable.\n *\n * You can listen for this event to know when your application should be\n * re-rendered following a locale change. See also the Localized mixin, which\n * automatically re-renders LitElement classes using this event.\n */\nexport const LOCALE_STATUS_EVENT = 'lit-localize-status';\n//# sourceMappingURL=locale-status-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { LOCALE_STATUS_EVENT } from './locale-status-event.js';\nclass LocalizeController {\n constructor(host) {\n this.__litLocalizeEventHandler = (event) => {\n if (event.detail.status === 'ready') {\n this.host.requestUpdate();\n }\n };\n this.host = host;\n }\n hostConnected() {\n window.addEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n hostDisconnected() {\n window.removeEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n}\n/**\n * Re-render the given LitElement whenever a new active locale has loaded.\n *\n * See also {@link localized} for the same functionality as a decorator.\n *\n * When using lit-localize in transform mode, calls to this function are\n * replaced with undefined.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {msg, updateWhenLocaleChanges} from '@lit/localize';\n *\n * class MyElement extends LitElement {\n * constructor() {\n * super();\n * updateWhenLocaleChanges(this);\n * }\n *\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nconst _updateWhenLocaleChanges = (host) => host.addController(new LocalizeController(host));\nexport const updateWhenLocaleChanges = _updateWhenLocaleChanges;\n//# sourceMappingURL=localized-controller.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport class Deferred {\n constructor() {\n this.settled = false;\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n resolve(value) {\n this.settled = true;\n this._resolve(value);\n }\n reject(error) {\n this.settled = true;\n this._reject(error);\n }\n}\n//# sourceMappingURL=deferred.js.map","/**\n * @license\n * Copyright 2014 Travis Webb\n * SPDX-License-Identifier: MIT\n */\n// This module is derived from the file:\n// https://github.com/tjwebb/fnv-plus/blob/1e2ce68a07cb7dd4c3c85364f3d8d96c95919474/index.js#L309\n//\n// Changes:\n// - Only the _hash64_1a_fast function is included.\n// - Removed loop unrolling.\n// - Converted to TypeScript ES module.\n// - var -> let/const\n//\n// TODO(aomarks) Upstream improvements to https://github.com/tjwebb/fnv-plus/.\nconst hl = [];\nfor (let i = 0; i < 256; i++) {\n hl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n}\n/**\n * Perform a FNV-1A 64-bit hash of the given string (as UTF-16 code units), and\n * return a hexadecimal digest (left zero padded to 16 characters).\n *\n * @see {@link http://tools.ietf.org/html/draft-eastlake-fnv-06}\n */\nexport function fnv1a64(str) {\n let t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n for (let i = 0; i < str.length; i++) {\n v0 ^= str.charCodeAt(i);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = (t3 + (t2 >>> 16)) & 65535;\n v2 = t2 & 65535;\n }\n return (hl[v3 >> 8] +\n hl[v3 & 255] +\n hl[v2 >> 8] +\n hl[v2 & 255] +\n hl[v1 >> 8] +\n hl[v1 & 255] +\n hl[v0 >> 8] +\n hl[v0 & 255]);\n}\n//# sourceMappingURL=fnv1a64.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { fnv1a64 } from './fnv1a64.js';\n/**\n * Delimiter used between each template string component before hashing. Used to\n * prevent e.g. \"foobar\" and \"foo${baz}bar\" from sharing a hash.\n *\n * This is the \"record separator\" ASCII character.\n */\nexport const HASH_DELIMITER = '\\x1e';\n/**\n * Id prefix on html-tagged templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst HTML_PREFIX = 'h';\n/**\n * Id prefix on plain string templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst STRING_PREFIX = 's';\n/**\n * Generate a unique ID for a lit-localize message.\n *\n * Example:\n * Template: html`Hello ${who}!`\n * Params: [\"Hello \", \"!\"], true\n * Output: h82ccc38d4d46eaa9\n *\n * The ID is constructed as:\n *\n * [0] Kind of template: [h]tml or [s]tring.\n * [1,16] 64-bit FNV-1a hash hex digest of the template strings, as UTF-16\n * code points, delineated by an ASCII \"record separator\" character.\n *\n * We choose FNV-1a because:\n *\n * 1. It's pretty fast (e.g. much faster than SHA-1).\n * 2. It's pretty small (0.25 KiB minified + brotli).\n * 3. We don't require cryptographic security, and 64 bits should give\n * sufficient collision resistance for any one application. Worst\n * case, we will always detect collisions during analysis.\n * 4. We can't use Web Crypto API (e.g. SHA-1), because it's asynchronous.\n * 5. It's a well known non-cryptographic hash with implementations in many\n * languages.\n * 6. There was an existing JavaScript implementation that doesn't require\n * BigInt, for IE11 compatibility.\n */\nexport function generateMsgId(strings, isHtmlTagged) {\n return ((isHtmlTagged ? HTML_PREFIX : STRING_PREFIX) +\n fnv1a64(typeof strings === 'string' ? strings : strings.join(HASH_DELIMITER)));\n}\n//# sourceMappingURL=id-generation.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { defaultMsg } from './default-msg.js';\nimport { joinStringsAndValues } from './str-tag.js';\nimport { generateMsgId } from './id-generation.js';\nconst expressionOrders = new WeakMap();\nconst hashCache = new Map();\nexport function runtimeMsg(templates, template, options) {\n if (templates) {\n const id = options?.id ?? generateId(template);\n const localized = templates[id];\n if (localized) {\n if (typeof localized === 'string') {\n // E.g. \"Hello World!\"\n return localized;\n }\n else if ('strTag' in localized) {\n // E.g. str`Hello ${name}!`\n //\n // Localized templates have ${number} in place of real template\n // expressions. They can't have real template values, because the\n // variable scope would be wrong. The number tells us the index of the\n // source value to substitute in its place, because expressions can be\n // moved to a different position during translation.\n return joinStringsAndValues(localized.strings, \n // Cast `template` because its type wasn't automatically narrowed (but\n // we know it must be the same type as `localized`).\n template.values, localized.values);\n }\n else {\n // E.g. html`Hello ${name}!`\n //\n // We have to keep our own mapping of expression ordering because we do\n // an in-place update of `values`, and otherwise we'd lose ordering for\n // subsequent renders.\n let order = expressionOrders.get(localized);\n if (order === undefined) {\n order = localized.values;\n expressionOrders.set(localized, order);\n }\n return {\n ...localized,\n values: order.map((i) => template.values[i]),\n };\n }\n }\n }\n return defaultMsg(template);\n}\nfunction generateId(template) {\n const strings = typeof template === 'string' ? template : template.strings;\n let id = hashCache.get(strings);\n if (id === undefined) {\n id = generateMsgId(strings, typeof template !== 'string' && !('strTag' in template));\n hashCache.set(strings, id);\n }\n return id;\n}\n//# sourceMappingURL=runtime-msg.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { Deferred } from '../internal/deferred.js';\nimport { LOCALE_STATUS_EVENT } from '../internal/locale-status-event.js';\nimport { runtimeMsg } from '../internal/runtime-msg.js';\nimport { _installMsgImplementation } from './install.js';\n/**\n * Dispatch a \"lit-localize-status\" event to `window` with the given detail.\n */\nfunction dispatchStatusEvent(detail) {\n window.dispatchEvent(new CustomEvent(LOCALE_STATUS_EVENT, { detail }));\n}\nlet activeLocale = '';\nlet loadingLocale;\nlet sourceLocale;\nlet validLocales;\nlet loadLocale;\nlet templates;\nlet loading = new Deferred();\n// The loading promise must be initially resolved, because that's what we should\n// return if the user immediately calls setLocale(sourceLocale).\nloading.resolve();\nlet requestId = 0;\n/**\n * Set configuration parameters for lit-localize when in runtime mode. Returns\n * an object with functions:\n *\n * - `getLocale`: Return the active locale code.\n * - `setLocale`: Set the active locale code.\n *\n * Throws if called more than once.\n */\nexport const configureLocalization = (config) => {\n _installMsgImplementation(((template, options) => runtimeMsg(templates, template, options)));\n activeLocale = sourceLocale = config.sourceLocale;\n validLocales = new Set(config.targetLocales);\n validLocales.add(config.sourceLocale);\n loadLocale = config.loadLocale;\n return { getLocale, setLocale };\n};\n/**\n * Return the active locale code.\n */\nconst getLocale = () => {\n return activeLocale;\n};\n/**\n * Set the active locale code, and begin loading templates for that locale using\n * the `loadLocale` function that was passed to `configureLocalization`. Returns\n * a promise that resolves when the next locale is ready to be rendered.\n *\n * Note that if a second call to `setLocale` is made while the first requested\n * locale is still loading, then the second call takes precedence, and the\n * promise returned from the first call will resolve when second locale is\n * ready. If you need to know whether a particular locale was loaded, check\n * `getLocale` after the promise resolves.\n *\n * Throws if the given locale is not contained by the configured `sourceLocale`\n * or `targetLocales`.\n */\nconst setLocale = (newLocale) => {\n if (newLocale === (loadingLocale ?? activeLocale)) {\n return loading.promise;\n }\n if (!validLocales || !loadLocale) {\n throw new Error('Internal error');\n }\n if (!validLocales.has(newLocale)) {\n throw new Error('Invalid locale code');\n }\n requestId++;\n const thisRequestId = requestId;\n loadingLocale = newLocale;\n if (loading.settled) {\n loading = new Deferred();\n }\n dispatchStatusEvent({ status: 'loading', loadingLocale: newLocale });\n const localePromise = newLocale === sourceLocale\n ? // We could switch to the source locale synchronously, but we prefer to\n // queue it on a microtask so that switching locales is consistently\n // asynchronous.\n Promise.resolve({ templates: undefined })\n : loadLocale(newLocale);\n localePromise.then((mod) => {\n if (requestId === thisRequestId) {\n activeLocale = newLocale;\n loadingLocale = undefined;\n templates = mod.templates;\n dispatchStatusEvent({ status: 'ready', readyLocale: newLocale });\n loading.resolve();\n }\n // Else another locale was requested in the meantime. Don't resolve or\n // reject, because the newer load call is going to use the same promise.\n // Note the user can call getLocale() after the promise resolves if they\n // need to check if the locale is still the one they expected to load.\n }, (err) => {\n if (requestId === thisRequestId) {\n dispatchStatusEvent({\n status: 'error',\n errorLocale: newLocale,\n errorMessage: err.toString(),\n });\n loading.reject(err);\n }\n });\n return loading.promise;\n};\n//# sourceMappingURL=runtime.js.map","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"customElement\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.customElement), [\"property\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.property), [\"state\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__.state) });","// Do not modify this file by hand!\n// Re-generate this file by running lit-localize.\n\n/**\n * The locale code that templates in this source code are written in.\n */\nexport const sourceLocale = `en`;\n\n/**\n * The other locale codes that this application is localized into. Sorted\n * lexicographically.\n */\nexport const targetLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `es`,\n `fa`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `vi`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n\n/**\n * All valid project locale codes. Sorted lexicographically.\n */\nexport const allLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `en`,\n `es`,\n `fa`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `vi`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Откройте меню вашего браузера`,\n's182ab2d6c997515f': `Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.`,\n's1b9047d53d9f9d22': `2) Нажать \"Поделиться\"`,\n's2d90afa5dcca2c0e': `3) Прокрутите вниз до \"Добавить на главный экран\"`,\n's37a9e8aec5713460': `Подробнее`,\n's4593f304dac8848c': `2) Нажмите \"Добавить на главный экран\"`,\n's54cfbb14f46396d4': `1) Откройте в вашем основном браузере`,\n's6196153c4b0c1ea0': `Установить`,\n's922329d6f6213590': `Добавить в Dock`,\n'sa5ef80b4bb9b39f8': `Свернуть`,\n'sa7551383d1897fcc': `2) Нажмите \"Добавить в Dock\"`,\n'sba52286c21552a4e': `Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.`,\n'sc79fd7641eb9a975': `Спрятать Инструкцию`,\n'scdaf4bbff76674c8': `На экран «Домой»`,\n'se740f75b95a51807': `Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.`,\n'sfea652f6580ff086': `Этот веб-сайт имеет функционал приложения.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Tarayıcı menünüzü açın`,\n's182ab2d6c997515f': `Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.`,\n's1b9047d53d9f9d22': `2) Gezinme çubuğunda Paylaş'a basın`,\n's2d90afa5dcca2c0e': `3) \"Ana Ekrana Ekle\" seçeneğine kadar aşağı kaydırın`,\n's37a9e8aec5713460': `Daha Fazla`,\n's4593f304dac8848c': `2) \"Ana Ekrana Ekle\"ye dokunun`,\n's54cfbb14f46396d4': `1) Ana tarayıcınızda açın`,\n's6196153c4b0c1ea0': `Yükle`,\n's922329d6f6213590': `Dock’a Ekle`,\n'sa5ef80b4bb9b39f8': `Küçült`,\n'sa7551383d1897fcc': `2) Dock’a ekleye basın`,\n'sba52286c21552a4e': `Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.`,\n'sc79fd7641eb9a975': `Talimatları gizle`,\n'scdaf4bbff76674c8': `Ana Ekrana Ekle`,\n'se740f75b95a51807': `Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.`,\n'sfea652f6580ff086': `Bu site uygulama işlevselliğine sahiptir.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Öffnen Sie das Menü Ihres Browsers`,\n's182ab2d6c997515f': `Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n's1b9047d53d9f9d22': `2) Drücken Sie auf Teilen in der Navigationsleiste`,\n's2d90afa5dcca2c0e': `3) Scrollen Sie nach unten zu \"Zum Startbildschirm hinzufügen\"`,\n's37a9e8aec5713460': `Mehr`,\n's4593f304dac8848c': `2) Tippen Sie auf \"Zum Startbildschirm hinzufügen\"`,\n's54cfbb14f46396d4': `1) Öffnen Sie es in Ihrem Hauptbrowser`,\n's6196153c4b0c1ea0': `Installieren`,\n's922329d6f6213590': `Zum Dock hinzufügen`,\n'sa5ef80b4bb9b39f8': `Weniger`,\n'sa7551383d1897fcc': `2) Drücken Sie auf Zum Dock hinzufügen`,\n'sba52286c21552a4e': `Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.`,\n'sc79fd7641eb9a975': `Anleitung ausblenden`,\n'scdaf4bbff76674c8': `Hinzufügen zum Startbildschirm`,\n'se740f75b95a51807': `Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n'sfea652f6580ff086': `Diese Website verfügt über App-Funktionalität.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Abre el menú de tu navegador`,\n's182ab2d6c997515f': `Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.`,\n's1b9047d53d9f9d22': `2) Presionar Compartir en la barra de direcciones`,\n's2d90afa5dcca2c0e': `3) Desplázate hacia abajo hasta \"Añadir a pantalla de inicio\"`,\n's37a9e8aec5713460': `Más`,\n's4593f304dac8848c': `2) Toca \"Añadir a pantalla de inicio\"`,\n's54cfbb14f46396d4': `1) Abre en tu navegador principal`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Añadir al Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Presionar Añadir al Dock`,\n'sba52286c21552a4e': `Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.`,\n'sc79fd7641eb9a975': `Esconder instrucciones`,\n'scdaf4bbff76674c8': `Añadir a pantalla de inicio`,\n'se740f75b95a51807': `Añádelo a tu Dock para una experiencia amplia y acceso fácil.`,\n'sfea652f6580ff086': `Este sitio tiene funcionalidad de aplicación.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Open je browsermenu`,\n's182ab2d6c997515f': `Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.`,\n's1b9047d53d9f9d22': `2) Druk op delen in de navigatiebalk`,\n's2d90afa5dcca2c0e': `3) Scrol naar beneden naar \"Toevoegen aan startscherm\"`,\n's37a9e8aec5713460': `Meer`,\n's4593f304dac8848c': `2) Tik op \"Toevoegen aan startscherm\"`,\n's54cfbb14f46396d4': `1) Open in je hoofdprogramma`,\n's6196153c4b0c1ea0': `Installeren`,\n's922329d6f6213590': `Toevoegen aan Dock`,\n'sa5ef80b4bb9b39f8': `Minder`,\n'sa7551383d1897fcc': `2) Druk op Toevoegen aan Dock`,\n'sba52286c21552a4e': `Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.`,\n'sc79fd7641eb9a975': `Instructie verbergen`,\n'scdaf4bbff76674c8': `Toevoegen aan het startscherm`,\n'se740f75b95a51807': `Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.`,\n'sfea652f6580ff086': `Deze site heeft app-functionaliteit.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Ανοίξτε το μενού του περιηγητή σας`,\n's182ab2d6c997515f': `Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n's1b9047d53d9f9d22': `2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης`,\n's2d90afa5dcca2c0e': `3) Κάντε κύλιση προς τα κάτω στο \"Προσθήκη στην οθόνη Αφετηρίας\"`,\n's37a9e8aec5713460': `Περισσότερα`,\n's4593f304dac8848c': `2) Πατήστε \"Προσθήκη στην οθόνη Αφετηρίας\"`,\n's54cfbb14f46396d4': `1) Ανοίξτε στον κύριο περιηγητή σας`,\n's6196153c4b0c1ea0': `Εγκατάσταση`,\n's922329d6f6213590': `Προσθήκη στην Πρόσβαση`,\n'sa5ef80b4bb9b39f8': `Λιγότερα`,\n'sa7551383d1897fcc': `2) Πατήστε Προσθήκη στην Πρόσβαση`,\n'sba52286c21552a4e': `Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sc79fd7641eb9a975': `Απόκρυψη Οδηγιών`,\n'scdaf4bbff76674c8': `Προσθήκη στην Οθόνη Αφετηρίας`,\n'se740f75b95a51807': `Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sfea652f6580ff086': `Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Ouvrez le menu de votre navigateur`,\n's182ab2d6c997515f': `Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.`,\n's1b9047d53d9f9d22': `2) Appuyez sur Partager dans la barre de navigation`,\n's2d90afa5dcca2c0e': `3) Faites défiler vers le bas jusqu'à \"Ajouter à l'écran d'accueil\"`,\n's37a9e8aec5713460': `Plus`,\n's4593f304dac8848c': `2) Touchez \"Ajouter à l'écran d'accueil\"`,\n's54cfbb14f46396d4': `1) Ouvrir dans votre navigateur principal`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Ajouter au Dock`,\n'sa5ef80b4bb9b39f8': `Moins`,\n'sa7551383d1897fcc': `2) Appuyez sur Ajouter au Dock`,\n'sba52286c21552a4e': `Installez-le sur votre appareil pour une expérience complète et un accès facile.`,\n'sc79fd7641eb9a975': `Masquer les instructions`,\n'scdaf4bbff76674c8': `Ajouter à l'écran d'accueil`,\n'se740f75b95a51807': `Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.`,\n'sfea652f6580ff086': `Ce site possède des fonctionnalités d'application.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Отворите мени вашег прегледача`,\n's182ab2d6c997515f': `Додајте га на Home Screen за широке могућности и лак приступ.`,\n's1b9047d53d9f9d22': `2) Притисните Share у навигационој траци`,\n's2d90afa5dcca2c0e': `3) Померите се надоле до \"Add to Home Screen\"`,\n's37a9e8aec5713460': `Више`,\n's4593f304dac8848c': `2) Додирните \"Add to Home Screen\"`,\n's54cfbb14f46396d4': `1) Отворите у вашем главном прегледачу`,\n's6196153c4b0c1ea0': `Инсталирај`,\n'sa5ef80b4bb9b39f8': `Мање`,\n'sa7551383d1897fcc': `3) Притисните Add to Dock`,\n'sba52286c21552a4e': `Инсталирајте га на вашем уређају за широке могућности и лак приступ.`,\n'sc79fd7641eb9a975': `Сакриј упутство`,\n'se740f75b95a51807': `Додајте га у вашу Dock за широке могућности и лак приступ.`,\n'sfea652f6580ff086': `Овај сајт има функционалност апликације.`,\n's922329d6f6213590': `Add to Dock`,\n'scdaf4bbff76674c8': `Add to Home Screen`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Otwórz menu przeglądarki`,\n's182ab2d6c997515f': `Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n's1b9047d53d9f9d22': `2) Wybierz \"Udostępnij\"`,\n's2d90afa5dcca2c0e': `3) Przewiń w dół do opcji \"Dodaj do Ekranu Głównego\"`,\n's37a9e8aec5713460': `Więcej`,\n's4593f304dac8848c': `2) Naciśnij \"Dodaj do Ekranu Głównego\"`,\n's54cfbb14f46396d4': `1) Otwórz w swojej głównej przeglądarce`,\n's6196153c4b0c1ea0': `Zainstaluj`,\n's922329d6f6213590': `Dodaj do Docka`,\n'sa5ef80b4bb9b39f8': `Mniej`,\n'sa7551383d1897fcc': `2) Wybierz \"Dodaj do Docka\"`,\n'sba52286c21552a4e': `Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sc79fd7641eb9a975': `Ukryj instrukcję`,\n'scdaf4bbff76674c8': `Dodaj do Ekranu Głównego`,\n'se740f75b95a51807': `Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sfea652f6580ff086': `Ta strona posiada funkcje aplikacji.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Відкрити меню браузера`,\n's182ab2d6c997515f': `Додайте на Домашній екран для зручного доступу та ширших можливостей.`,\n's1b9047d53d9f9d22': `2) Натиснути «Поділитися»`,\n's2d90afa5dcca2c0e': `3) Прокрутіть вниз до «На Початковий экран»`,\n's37a9e8aec5713460': `Детальніше`,\n's4593f304dac8848c': `2) Натиснути «На Початковий экран»`,\n's54cfbb14f46396d4': `1) Відкрити у вашому основному браузері`,\n's6196153c4b0c1ea0': `Встановити`,\n's922329d6f6213590': `Додати на Dock`,\n'sa5ef80b4bb9b39f8': `Згорнути`,\n'sa7551383d1897fcc': `2) Натиснути «Додати на Dock»`,\n'sba52286c21552a4e': `Встановіть на ваш пристрій для зручного доступу та ширших можливостей.`,\n'sc79fd7641eb9a975': `Сховати Інструкцію`,\n'scdaf4bbff76674c8': `На Початковий экран`,\n'se740f75b95a51807': `Додайте на панель Dock для зручного доступу та ширших можливостей.`,\n'sfea652f6580ff086': `Цей сайт має функції додатку.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 打開您的瀏覽器菜單`,\n's182ab2d6c997515f': `將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。`,\n's1b9047d53d9f9d22': `2) 點擊列表上的分享按鈕`,\n's2d90afa5dcca2c0e': `3) 向下滾動到「添加到主屏幕」`,\n's37a9e8aec5713460': `詳細資訊`,\n's4593f304dac8848c': `2) 點擊「添加到主屏幕」`,\n's54cfbb14f46396d4': `1) 在您的主要瀏覽器中打開`,\n's6196153c4b0c1ea0': `安裝`,\n's922329d6f6213590': `添加到Dock欄`,\n'sa5ef80b4bb9b39f8': `簡短資訊`,\n'sa7551383d1897fcc': `2) 點選添加到Dock欄`,\n'sba52286c21552a4e': `在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。`,\n'sc79fd7641eb9a975': `隱藏安裝流程`,\n'scdaf4bbff76674c8': `將App加入主畫面`,\n'se740f75b95a51807': `將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。`,\n'sfea652f6580ff086': `此網站具有應用程式功能。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 打开浏览器菜单`,\n's182ab2d6c997515f': `将其添加到主屏幕,以享受更丰富的体验并便于访问。`,\n's1b9047d53d9f9d22': `2) 点击导航栏中的“分享”按钮`,\n's2d90afa5dcca2c0e': `3) 向下滚动至“添加到主屏幕”`,\n's37a9e8aec5713460': `更多`,\n's4593f304dac8848c': `2) 轻触“添加到主屏幕”`,\n's54cfbb14f46396d4': `1) 在您的主浏览器中打开`,\n's6196153c4b0c1ea0': `安装`,\n's922329d6f6213590': `添加到程序坞`,\n'sa5ef80b4bb9b39f8': `收起`,\n'sa7551383d1897fcc': `2) 点击“添加到程序坞”`,\n'sba52286c21552a4e': `在您的设备上安装,以享受更丰富的体验并便于访问。`,\n'sc79fd7641eb9a975': `隐藏安装步骤`,\n'scdaf4bbff76674c8': `添加到主屏幕`,\n'se740f75b95a51807': `将其添加到您的程序坞,以享受更全面的体验并便于访问。`,\n'sfea652f6580ff086': `此网站具备 App 功能特性。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Apri il menu del tuo browser`,\n's182ab2d6c997515f': `Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.`,\n's1b9047d53d9f9d22': `2) Premi Condividi nella barra di navigazione`,\n's2d90afa5dcca2c0e': `3) Scorri verso il basso fino a \"Aggiungi alla schermata principale\"`,\n's37a9e8aec5713460': `Più`,\n's4593f304dac8848c': `2) Tocca \"Aggiungi alla schermata principale\"`,\n's54cfbb14f46396d4': `1) Apri nel tuo browser principale`,\n's6196153c4b0c1ea0': `Installa`,\n's922329d6f6213590': `Aggiungi al Dock`,\n'sa5ef80b4bb9b39f8': `Meno`,\n'sa7551383d1897fcc': `2) Premi Aggiungi al Dock`,\n'sba52286c21552a4e': `Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.`,\n'sc79fd7641eb9a975': `Nascondi istruzioni`,\n'scdaf4bbff76674c8': `Aggiungi alla schermata principale`,\n'se740f75b95a51807': `Aggiungilo al Dock per un'esperienza più completa e un accesso facile.`,\n'sfea652f6580ff086': `Questo sito ha funzionalità di app.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Otevřete nabídku prohlížeče`,\n's182ab2d6c997515f': `Přidejte jej na plochu pro rozšířené využití a snadný přístup.`,\n's1b9047d53d9f9d22': `2) Stiskněte tlačítko Sdílet na navigačním panelu`,\n's2d90afa5dcca2c0e': `3) Projděte dolů k \"Přidat na plochu\"`,\n's37a9e8aec5713460': `Více`,\n's4593f304dac8848c': `2) Klepněte na \"Přidat na plochu\"`,\n's54cfbb14f46396d4': `1) Otevřete v hlavním prohlížeči`,\n's6196153c4b0c1ea0': `Nainstalovat`,\n's922329d6f6213590': `Přidat do Docku`,\n'sa5ef80b4bb9b39f8': `Méně`,\n'sa7551383d1897fcc': `2) Stiskněte Přidat do Docku`,\n'sba52286c21552a4e': `Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.`,\n'sc79fd7641eb9a975': `Skrýt instrukce`,\n'scdaf4bbff76674c8': `Přidat na plochu`,\n'se740f75b95a51807': `Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.`,\n'sfea652f6580ff086': `Tento web má funkce aplikace.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Åpne menyen i nettleseren din`,\n's182ab2d6c997515f': `Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.`,\n's1b9047d53d9f9d22': `2) Trykk på Del-knappen i navigasjonslinjen`,\n's2d90afa5dcca2c0e': `3) Rull ned til «Legg til på Hjem-skjerm»`,\n's37a9e8aec5713460': `Mer`,\n's4593f304dac8848c': `2) Trykk på \"Legg til på Hjem-skjerm\"`,\n's54cfbb14f46396d4': `1) Åpne i hovednettleseren din`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Legg til i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Velg Legg til i Dock`,\n'sba52286c21552a4e': `Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sc79fd7641eb9a975': `Skjul instruksjoner`,\n'scdaf4bbff76674c8': `Legg til på Hjem-skjerm`,\n'se740f75b95a51807': `Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sfea652f6580ff086': `Denne siden har app-funksjonalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Abra o menu do seu navegador`,\n's182ab2d6c997515f': `Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.`,\n's1b9047d53d9f9d22': `2) Pressione Compartilhar na barra de endereço`,\n's2d90afa5dcca2c0e': `3) Role para baixo até \"Adicionar à Tela de Início\"`,\n's37a9e8aec5713460': `Mais`,\n's4593f304dac8848c': `2) Toque em \"Adicionar à Tela de Início\"`,\n's54cfbb14f46396d4': `1) Abra no seu navegador principal`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Adicionar ao Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Pressione Adicionar ao Dock`,\n'sba52286c21552a4e': `Instale no dispositivo para uma melhor experiência e mais fácil acesso.`,\n'sc79fd7641eb9a975': `Ocultar Instruções`,\n'scdaf4bbff76674c8': `Adicionar à Tela de Início`,\n'se740f75b95a51807': `Adicione ao Dock para uma melhor experiência e mais fácil acesso.`,\n'sfea652f6580ff086': `Este site possui funcionalidade de aplicativo.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) ブラウザメニューを開く`,\n's182ab2d6c997515f': `ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。`,\n's1b9047d53d9f9d22': `2) ナビゲーションバーで共有を押す`,\n's2d90afa5dcca2c0e': `3) 「ホーム画面に追加」までスクロールする`,\n's37a9e8aec5713460': `展開`,\n's4593f304dac8848c': `2) 「ホーム画面に追加」をタップする`,\n's54cfbb14f46396d4': `1) メインブラウザで開く`,\n's6196153c4b0c1ea0': `インストール`,\n's922329d6f6213590': `Dockに追加`,\n'sa5ef80b4bb9b39f8': `折りたたむ`,\n'sa7551383d1897fcc': `2) 「Dockに追加」を押す`,\n'sba52286c21552a4e': `デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。`,\n'sc79fd7641eb9a975': `説明を非表示`,\n'scdaf4bbff76674c8': `ホーム画面に追加`,\n'se740f75b95a51807': `ドックに追加して、幅広い体験と簡単なアクセスを実現してください。`,\n'sfea652f6580ff086': `このサイトはアプリ機能があります。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Öppna din webbläsares meny`,\n's182ab2d6c997515f': `Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.`,\n's1b9047d53d9f9d22': `2) Tryck på Dela-knappen i verktygsfältet`,\n's2d90afa5dcca2c0e': `3) Scrolla ner till \"Lägg till på hemskärmen\"`,\n's37a9e8aec5713460': `Mer`,\n's4593f304dac8848c': `2) Tryck på \"Lägg till på hemskärmen\"`,\n's54cfbb14f46396d4': `1) Öppna i din huvudsakliga webbläsare`,\n's6196153c4b0c1ea0': `Installera`,\n's922329d6f6213590': `Lägg till i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Välj Lägg till i Dock`,\n'sba52286c21552a4e': `Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sc79fd7641eb9a975': `Göm instruktioner`,\n'scdaf4bbff76674c8': `Lägg till på hemskärmen`,\n'se740f75b95a51807': `Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sfea652f6580ff086': `Denna webbsajt har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 브라우저 메뉴 열기`,\n's182ab2d6c997515f': `더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.`,\n's1b9047d53d9f9d22': `2) 내비게이션 바에서 공유 버튼 누르기`,\n's2d90afa5dcca2c0e': `3) \"홈 화면에 추가\"로 스크롤하기`,\n's37a9e8aec5713460': `더보기`,\n's4593f304dac8848c': `2) \"홈 화면에 추가\" 탭하기`,\n's54cfbb14f46396d4': `1) 주 브라우저에서 열기`,\n's6196153c4b0c1ea0': `설치`,\n's922329d6f6213590': `Dock에 추가`,\n'sa5ef80b4bb9b39f8': `닫기`,\n'sa7551383d1897fcc': `2) Dock에 추가 버튼 누르기`,\n'sba52286c21552a4e': `더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.`,\n'sc79fd7641eb9a975': `안내 숨기기`,\n'scdaf4bbff76674c8': `홈 화면에 추가`,\n'se740f75b95a51807': `더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.`,\n'sfea652f6580ff086': `이 사이트는 앱 기능을 가지고 있습니다.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) បើកម៉ឺនុយកម្មវិធីរុករករបស់អ្នក`,\n's182ab2d6c997515f': `បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n's1b9047d53d9f9d22': `2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ`,\n's2d90afa5dcca2c0e': `3) អូសចុះទៅកាន់ \"បន្ថែមទៅផ្ទាំងអេក្រង់ដើម\"`,\n's37a9e8aec5713460': `បង្ហាញបន្ថែម`,\n's4593f304dac8848c': `2) ចុចលើ \"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម\"`,\n's54cfbb14f46396d4': `1) បើកនៅក្នុងកម្មវិធីរុករកសំខាន់របស់អ្នក`,\n's6196153c4b0c1ea0': `តំឡើង`,\n's922329d6f6213590': `បន្ថែមទៅកាន់ Dock`,\n'sa5ef80b4bb9b39f8': `បង្ហាញតិច`,\n'sa7551383d1897fcc': `2) ចុចលើ បន្ថែមទៅកាន់ Dock`,\n'sba52286c21552a4e': `តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sc79fd7641eb9a975': `បិទការណែនាំ`,\n'scdaf4bbff76674c8': `បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n'se740f75b95a51807': `បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sfea652f6580ff086': `គេហទំព័រនេះមានមុខងារជាកម្មវិធី។`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `۱) مرورگر خود را باز کنید`,\n's182ab2d6c997515f': `برای تجربه گسترده و دسترسی آسان آن را به صفحه اصلی خود اضافه کنید.`,\n's1b9047d53d9f9d22': `۱)در نوار پایین دکمه (Share) را بزنید`,\n's2d90afa5dcca2c0e': `۳) به پایین اسکرول کنید تا به \"Add to Home Screen\" برسید`,\n's37a9e8aec5713460': `بیشتر`,\n's4593f304dac8848c': `۲) روی \"Add to Home screen\" ضربه بزنید`,\n's54cfbb14f46396d4': `۱) در مرورگر اصلی خود باز کنید`,\n's6196153c4b0c1ea0': `نصب`,\n's922329d6f6213590': `افزودن به (Dock)`,\n'sa5ef80b4bb9b39f8': `کمتر`,\n'sa7551383d1897fcc': `۲) (Add to Dock) را انتخاب کنید `,\n'sba52286c21552a4e': `برای تجربه گسترده و دسترسی آسان آن را بر روی دستگاه خود نصب کنید.`,\n'sc79fd7641eb9a975': ` مخفی کردن مراحل`,\n'scdaf4bbff76674c8': `افزودن به (Home Screen)`,\n'se740f75b95a51807': `برای تجربه گسترده و دسترسی آسان آن را به Dock خود اضافه کنید.`,\n'sfea652f6580ff086': ` این سایت دارای قابلیت اپلیکیشن است. `,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Åbn din browsermenu`,\n's182ab2d6c997515f': `Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.`,\n's1b9047d53d9f9d22': `2) Tryk på Del-knappen i navigationslinjen`,\n's2d90afa5dcca2c0e': `3) Rul ned til \"Tilføj til hjemmeskærm\"`,\n's37a9e8aec5713460': `Mere`,\n's4593f304dac8848c': `2) Tryk på \"Tilføj til hjemmeskærm\"`,\n's54cfbb14f46396d4': `1) Åbn i din primære browser`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Tilføj til Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Vælg Tilføj til Dock`,\n'sba52286c21552a4e': `Installer den på din enhed for en bedre oplevelse og nem adgang.`,\n'sc79fd7641eb9a975': `Skjul instruktion`,\n'scdaf4bbff76674c8': `Tilføj til hjemmeskærm`,\n'se740f75b95a51807': `Tilføj den til din Dock for en bedre oplevelse og nem adgang.`,\n'sfea652f6580ff086': `Denne side har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Mở menu trình duyệt của bạn`,\n's182ab2d6c997515f': `Thêm nó vào màn hình chính của bạn để có trải nghiệm phong phú hơn và truy cập dễ dàng hơn.`,\n's1b9047d53d9f9d22': `2) Nhấp vào nút \"Chia sẻ\" trên thanh điều hướng`,\n's2d90afa5dcca2c0e': `3) Kéo đến mục \"Thêm vào Màn hình chính\"`,\n's37a9e8aec5713460': `Thêm`,\n's4593f304dac8848c': `2) Nhấn vào \"Thêm vào Màn hình chính\"`,\n's54cfbb14f46396d4': `1) Mở trình duyệt chính của bạn`,\n's6196153c4b0c1ea0': `Cài đặt`,\n's922329d6f6213590': `Thêm vào Dock`,\n'sa5ef80b4bb9b39f8': `Thu gọn`,\n'sa7551383d1897fcc': `2) Nhấp vào \"Thêm vào Dock\"`,\n'sba52286c21552a4e': `Cài đặt trên thiết bị của bạn để có trải nghiệm phong phú hơn và truy cập dễ dàng.`,\n'sc79fd7641eb9a975': `Ẩn các bước cài đặt`,\n'scdaf4bbff76674c8': `Thêm vào màn hình chính`,\n'se740f75b95a51807': `Thêm nó vào Dock của bạn để có trải nghiệm toàn diện hơn và truy cập dễ dàng hơn.`,\n'sfea652f6580ff086': `Trang web này có cả chức năng đặc trưng ứng dụng.`,\n };\n ","import { configureLocalization } from '@lit/localize';\r\nimport {\r\n sourceLocale,\r\n targetLocales,\r\n} from './locale-codes';\r\n\r\nimport * as ru from './locales/ru';\r\nimport * as tr from './locales/tr';\r\nimport * as de from \"./locales/de\";\r\nimport * as es from \"./locales/es\";\r\nimport * as nl from \"./locales/nl\";\r\nimport * as el from \"./locales/el\";\r\nimport * as fr from \"./locales/fr\";\r\nimport * as sr from \"./locales/sr\";\r\nimport * as pl from \"./locales/pl\";\r\nimport * as uk from \"./locales/uk\";\r\nimport * as zhHK from \"./locales/zh-HK\";\r\nimport * as zhCN from \"./locales/zh-CN\";\r\nimport * as it from \"./locales/it\";\r\nimport * as cs from \"./locales/cs\";\r\nimport * as no from \"./locales/no\";\r\nimport * as pt from \"./locales/pt\";\r\nimport * as ja from \"./locales/ja\";\r\nimport * as sv from \"./locales/sv\";\r\nimport * as ko from \"./locales/ko\";\r\nimport * as km from \"./locales/km\";\r\nimport * as fa from \"./locales/fa\";\r\nimport * as da from \"./locales/da\";\r\nimport * as vi from \"./locales/vi\";\r\n\r\nconst localizedTemplates = new Map([\r\n ['ru', ru],\r\n ['tr', tr],\r\n ['de', de],\r\n ['es', es],\r\n ['nl', nl],\r\n ['el', el],\r\n ['fr', fr],\r\n ['sr', sr],\r\n ['pl', pl],\r\n ['uk', uk],\r\n ['zh-HK', zhHK],\r\n ['zh-CN', zhCN],\r\n ['it', it],\r\n ['cs', cs],\r\n ['no', no], // + nb\r\n ['pt', pt],\r\n ['ja', ja],\r\n ['sv', sv],\r\n ['ko', ko],\r\n ['km', km],\r\n ['fa', fa],\r\n ['da', da],\r\n ['vi', vi],\r\n])\r\n\r\nexport const { getLocale, setLocale } = configureLocalization({\r\n sourceLocale,\r\n targetLocales,\r\n // @ts-ignore\r\n loadLocale: async (lang: string) => localizedTemplates.get(lang)\r\n});\r\n\r\nexport const changeLocale = async (lang: string) => {\r\n // Norwegian Bokmål is same as Norwegian\r\n switch (lang.slice(0, 2)) {\r\n case 'nb':\r\n lang = 'no';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // Fallback to simplified Chinese\r\n switch (lang) {\r\n case 'zh':\r\n case 'zh-TW':\r\n lang = 'zh-CN';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n try {\r\n if (localizedTemplates.get(lang))\r\n await setLocale(lang);\r\n else\r\n await setLocale(lang.slice(0, 2));\r\n }\r\n catch {\r\n console.warn(`pwa-install: translation error - unsupported locale: ${lang}`);\r\n }\r\n};\r\n\r\nexport const isRTL = () => {\r\n let locale = getLocale();\r\n return ['ar', 'he', 'fa', 'ur'].includes(getLocale());\r\n}\r\n","import { ImageResource } from 'web-app-manifest';\r\n\r\nexport interface IRelatedApp {\r\n id: string,\r\n platform: string,\r\n url: string\r\n}\r\n\r\nexport interface IWindow extends Window {\r\n defferedPromptEvent: BeforeInstallPromptEvent | null;\r\n BeforeInstallPromptEvent: BeforeInstallPromptEvent;\r\n}\r\n\r\ntype Booleanish = 'true' | 'false';\r\n\r\nexport interface PWAInstallAttributes {\r\n ['manual-apple']?: Booleanish;\r\n ['manual-chrome']?: Booleanish;\r\n ['disable-chrome']?: Booleanish;\r\n ['install-description']?: string;\r\n ['disable-install-description']?: Booleanish;\r\n ['manifest-url']?: string;\r\n name?: string;\r\n description?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ManifestScreenshot extends ImageResource {\r\n label?: string;\r\n platform?: string;\r\n form_factor?: \"wide\" | \"narrow\";\r\n}\r\n\r\nexport class Manifest {\r\n constructor() {\r\n this.icons = [{ src: '' }];\r\n this.screenshots = undefined;\r\n this.short_name = 'PWA';\r\n this.name = 'Progressive web application';\r\n this.description = 'Progressive web application';\r\n }\r\n short_name: string;\r\n icons: ImageResource[];\r\n screenshots?: ManifestScreenshot[];\r\n name: string;\r\n description: string;\r\n}\r\n","import {css} from 'lit'; export default css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-inline-start:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-inline-end:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px;margin:0 auto}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-inline-start:7px}.gallery.apple_mobile .btn.prev svg{margin-inline-start:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`;\n ","import { WebAppManifest } from 'web-app-manifest';\r\nimport { IRelatedApp, Manifest } from './types/types';\r\n\r\nconst _eventDispatcher = (_element: Element, name: string, message: string) => {\r\n const event = new CustomEvent(name, {\r\n detail: {\r\n message\r\n }\r\n });\r\n _element.dispatchEvent(event);\r\n}\r\nexport default class Utils {\r\n static isAppleMobile(): boolean {\r\n\t\tif (\r\n (\r\n ['iPhone', 'iPad', 'iPod'].includes(navigator.platform) ||\r\n (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2)\r\n )\r\n && ('serviceWorker' in navigator)\r\n )\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static isAppleDesktop(): boolean {\r\n // check if it's a mac\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n if (navigator.maxTouchPoints || !userAgent.match(/macintosh/))\r\n return false;\r\n // check safari version >= 17\r\n const version = /version\\/(\\d{2})\\./.exec(userAgent)\r\n if (!version || !version[1] || !(parseInt(version[1]) >= 17))\r\n return false;\r\n // hacky way to detect Sonoma\r\n const audioCheck = document.createElement('audio').canPlayType('audio/wav; codecs=\"1\"') ? true : false;\r\n const webGLCheck = new OffscreenCanvas(1, 1).getContext('webgl') ? true : false;\r\n\r\n return audioCheck && webGLCheck;\r\n }\r\n\r\n static isAndroid(): boolean {\r\n if (navigator.userAgent.toLowerCase().match(/android/))\r\n return true;\r\n return false;\r\n }\r\n\r\n static isAndroidFallback(): boolean {\r\n if (this.isAndroid() && !('BeforeInstallPromptEvent' in window))\r\n return true;\r\n return false;\r\n }\r\n\r\n static deviceFormFactor(): 'narrow' | 'wide' {\r\n return window.matchMedia('(orientation: portrait)').matches? 'narrow' : 'wide';\r\n }\r\n \r\n static isStandalone() {\r\n\t\tif (window.matchMedia('(display-mode: standalone)').matches || ('standalone' in navigator && (navigator as any).standalone === true))\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static async getInstalledRelatedApps(): Promise {\r\n if ('getInstalledRelatedApps' in navigator)\r\n try{\r\n return await (navigator as any).getInstalledRelatedApps().then((relatedApps: IRelatedApp[]) => {\r\n return relatedApps;\r\n });\r\n } catch (e) {}\r\n \r\n return [];\r\n }\r\n \r\n static async isRelatedAppsInstalled(): Promise {\r\n const _relatedApps = await this.getInstalledRelatedApps();\r\n return _relatedApps.length? true : false;\r\n }\r\n\r\n static setStorageFlag(name: string, value:boolean, persistent: boolean = false) {\r\n try {\r\n if (persistent)\r\n localStorage.setItem(name, value.toString());\r\n else\r\n sessionStorage.setItem(name, value.toString());\r\n } catch (e) {}\r\n }\r\n static getStorageFlag(name: string): boolean {\r\n try {\r\n return sessionStorage.getItem(name) === 'true' || localStorage.getItem(name) === 'true';\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n static eventInstalledSuccess(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-success-event', 'App install success (Chromium/Android only)');\r\n }\r\n static eventInstalledFail(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-fail-event', 'App install failed (Chromium/Android only)');\r\n }\r\n static eventUserChoiceResult(_element: Element, message: string) {\r\n _eventDispatcher(_element, 'pwa-user-choice-result-event', message);\r\n }\r\n static eventInstallAvailable(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-available-event', 'App install available');\r\n }\r\n static eventInstallHowTo(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-how-to-event', 'App install instruction showed');\r\n }\r\n static eventGallery(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-gallery-event', 'App install gallery showed');\r\n }\r\n\r\n static normalizeManifestAssetUrls(manifest: WebAppManifest, manifestUrl: string) {\r\n const normalizedManifestUrl = new URL(manifestUrl, document.location.href);\r\n [...manifest.icons || [], ...manifest.screenshots || []].forEach(asset => {\r\n asset.src = new URL(asset.src, normalizedManifestUrl).href;\r\n })\r\n }\r\n\r\n static async fetchAndProcessManifest(manifestUrl: string, icon: string, name: string, description: string): Promise<{_manifest: WebAppManifest, icon: string, name: string, description: string}> {\r\n let _manifest: WebAppManifest = new Manifest();\r\n let _json: WebAppManifest | null = null;\r\n try{\r\n\t\t\tconst _response = await fetch(manifestUrl);\r\n\t\t\t_json = await _response.json() as WebAppManifest;\r\n\t\t\tif (!_response.ok || !_json || !Object.keys(_json))\r\n\t\t\t\tthrow new Error('Manifest not found');\r\n\t\t\tthis.normalizeManifestAssetUrls(_json, manifestUrl);\r\n } \r\n catch(e) {} \r\n\r\n icon = icon || (_json?.icons?.length ? _json?.icons![0].src : _manifest.icons?.[0].src) || '';\r\n name = name || (_json? _json['short_name']: _manifest['short_name']) || '';\r\n description = description || _json?.description || _manifest.description || '';\r\n\t\t_manifest = _json || _manifest;\r\n \r\n return {\r\n _manifest,\r\n icon,\r\n name,\r\n description\r\n }\r\n }\r\n}","import { html } from 'lit';\r\nimport Utils from '../utils';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nconst template = (screenshots: ManifestScreenshot[], theme: string, scrollToNextPage: any, scrollToPrevPage: any) => {\r\n\r\n return html`\r\n ${screenshots? html`\r\n
\r\n
\r\n
\r\n ${screenshots.filter(screenshot => !screenshot.form_factor || screenshot.form_factor === Utils.deviceFormFactor()).map(screenshot => html`${screenshot.label || \"\"}`)}\r\n
\r\n
\r\n \r\n ${theme != 'default'?\r\n html``\r\n :\r\n html``\r\n }\r\n \r\n \r\n ${theme != 'default'?\r\n html`\r\n \r\n `\r\n :\r\n html`\r\n \r\n \r\n \r\n `\r\n }\r\n \r\n
`\r\n : ''}`;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nimport styles from './styles-gallery.scss';\r\nimport template from './template-gallery';\r\n\r\n@customElement('pwa-gallery')\r\nexport default class PWAGalleryElement extends LitElement {\r\n\t@property({ type: Array }) screenshots: ManifestScreenshot[] = [];\r\n\t@property() theme: 'default' | 'apple_desktop' | 'apple_mobile' = 'default';\r\n\t@property({ type: Boolean }) rtl: boolean = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tprivate getScrollElements = () => {\r\n\t\tconst gallery = this.shadowRoot?.querySelector('#paginated_gallery') as HTMLElement | null;\r\n\t\tif (!gallery) return;\r\n\t\t\r\n\t\tconst galleryScroller = gallery.querySelector('.gallery_scroller') as HTMLElement | null;\r\n\t\tif (!galleryScroller) return;\r\n\t\r\n\t\tconst galleryItems = Array.from(galleryScroller.querySelectorAll('img')) as HTMLElement[];\r\n\t\tif (galleryItems.length === 0) return;\r\n\t\r\n\t\treturn {\r\n\t\t\tscroller: galleryScroller,\r\n\t\t\titems: galleryItems\r\n\t\t};\r\n\t};\r\n\t\r\n\tprivate findCurrentItem = (scroller: HTMLElement, items: HTMLElement[]): HTMLElement | null => {\r\n\t\tconst scrollLeft = scroller.scrollLeft * (this.rtl? -1 : 1);\r\n\t \t// Find the item closest to the center of the viewport.\r\n\t\treturn items.find((item) => (item.offsetWidth + item.offsetLeft * (this.rtl? -1 : 1)) >= scrollLeft + (item.offsetWidth / 2.5)) || null;\r\n\t};\r\n\t\r\n\tprivate scrollToPage = (direction: 'next' | 'prev') => {\r\n\t\tconst scrollData = this.getScrollElements();\r\n\t\tif (!scrollData) return;\r\n\t\r\n\t\tconst { scroller, items } = scrollData;\r\n\t\tconst currentItem = this.findCurrentItem(scroller, items);\r\n\t\tif (!currentItem) return;\r\n\t\r\n\t\tconst currentIndex = items.indexOf(currentItem);\r\n\t\tconst offset = (direction === 'next' ? 1 : -1) * (this.rtl? -1 : 1) ;\r\n\t\tconst targetIndex = currentIndex + offset;\r\n\t\t\r\n\t\tif (targetIndex >= 0 && targetIndex < items.length) {\r\n\t\t\titems[targetIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\r\n\t\t}\r\n\t};\r\n\t\r\n\tpublic scrollToNextPage = () => {\r\n\t\tthis.scrollToPage('next');\r\n\t};\r\n\t\r\n\tpublic scrollToPrevPage = () => {\r\n\t\tthis.scrollToPage('prev');\r\n\t};\r\n\r\n\r\n\tprivate _init = () => {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tconst _tools = this.getScrollElements();\r\n\t\tif (_tools)\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\t_tools.scroller.scrollTo({\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t300\r\n\t\t\t)\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\tthis._init();\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(\r\n this.screenshots,\r\n\t\t\tthis.theme,\r\n\t\t\tthis.scrollToNextPage,\r\n\t\t\tthis.scrollToPrevPage\r\n )}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`.dialog-body .icon{display:flex;align-items:flex-start}.dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}.dialog-body .about{display:grid;grid-template-rows:30px auto}.dialog-body .about .hostname,.dialog-body .about .name{padding:0 5px;overflow:hidden}.dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}.dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}.dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:start;word-break:break-all;white-space:nowrap}.dialog-body .about+hr{margin-top:10px}.dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:start}.dialog-body .app-description{font-size:13px;margin-bottom:10px}.dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}.dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}.dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}.dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.dialog-body .install-description{font-size:14px}.dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}.dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}.dialog-body .action-buttons .primary{grid-column-start:2}.dialog-body .material-button{--text-color-primary:#eee;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#eee;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,\"Segoe UI\",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}.dialog-body .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}.dialog-body .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}.dialog-body .material-button.secondary::after,.dialog-body .material-button.secondary::before{background-color:var(--background-color-primary)}.dialog-body .material-button.secondary:active,.dialog-body .material-button.secondary:hover{box-shadow:none}.dialog-body .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-inline-end:0;margin-inline-start:auto;padding:0;border-radius:50%}.dialog-body .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}.dialog-body .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}.dialog-body .material-button.secondary.close::before{border-radius:50%}.dialog-body .material-button::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}.dialog-body .material-button::after{content:\"\";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}.dialog-body .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.dialog-body .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}.dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}@media(prefers-color-scheme:dark){.dialog-body .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(hover:none)and (pointer:coarse){.dialog-body .description::-webkit-scrollbar{display:none}}`;\n ","import {css} from 'lit'; export default css`:host{grid-template-columns:1fr}:host .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}:host .touch-header:active{cursor:grabbing}:host .touch-header::before{content:\"\";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}:host .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}:host .body-header .install{text-transform:capitalize;height:40px;min-width:50px;padding:0 23px;align-items:center;display:inline-flex;-webkit-tap-highlight-color:transparent;transition:min-width .2s,color .2s,background-color .2s,border-color .2s}:host .body-header .install .button-text,:host .body-header .install svg{margin:0 auto}:host .body-header .install .check-icon{display:none}:host .body-header .about{grid-template-rows:auto auto;grid-gap:6px}:host .body-header .about .name{padding:0;line-height:20px;font-size:16px}:host .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}:host .body-header .icon .icon-image{margin:0;width:45px;height:45px}:host .how-to-body{display:flex;flex-direction:column;gap:15px;max-height:0;overflow:hidden;padding:0 20px;opacity:0}:host .how-to-body .description-step{display:flex;gap:15px;margin-inline-start:2.5px;align-items:center}:host .how-to-body .description-step .svg-wrap{display:flex;align-items:center;width:40px;height:40px;background-color:var(--touch-header-color);border-radius:50%}:host .how-to-body .description-step .svg-wrap svg{fill:var(--text-color-normal);margin:0 auto}:host .how-to-body .description-step .svg-wrap.add-icon svg{padding-right:1px}:host .how-to .description,:host .how-to ::slotted(pwa-gallery){max-height:0;padding-top:0;padding-bottom:0;overflow:hidden;opacity:0}:host .how-to .how-to-body{max-height:600px;padding-top:18px;padding-bottom:18px;opacity:1}:host .how-to .install{min-width:40px;padding:0;background:rgba(0,0,0,0);color:var(--text-color-normal);box-shadow:none;border:1px solid}:host .how-to .install .check-icon{display:inline;fill:var(--text-color-normal)}:host .how-to .install .button-text{display:none}:host .description{padding:15px 20px;margin:0;-webkit-line-clamp:6;max-height:150px;opacity:1}:host ::slotted(pwa-gallery){display:block;max-height:600px;padding-bottom:15px;opacity:1;transition:max-height 1.5s,opacity .8s,padding 1.5s}:host .description,:host .how-to-body{transition:max-height .2s,opacity .15s,padding .2s}:host .material-button{border-radius:20px}`;\n ","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"classMap\"]: () => (__WEBPACK_EXTERNAL_MODULE_lit_directives_class_map_js_2f88e643__.classMap) });","import { html } from 'lit';\r\nimport { msg } from '@lit/localize';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\n\r\nconst fallbackClass = (isAndroidFallback: boolean = false, howToRequested: boolean = false) => {\r\n return {fallback: isAndroidFallback, 'how-to': howToRequested};\r\n}\r\n\r\nconst template = (name: string, description: string, icon: string, install: any, fallback?: boolean, howToRequested?: boolean) => {\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${location.hostname}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${msg('1) Open your browser menu')}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${msg('2) Tap \"Add to Home screen\"')}
\r\n
\r\n
\r\n ${description ? html `
${description}
`: ''}\r\n \r\n
\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\n\r\nimport stylesCommon from '../styles-common.scss'\r\nimport styles from './styles-bottom-sheet.scss';\r\n\r\n// import TouchDragListener from \"./touch-listener\";\r\n\r\ntype IProps = {\r\n name: string,\r\n description: string,\r\n icon: string\r\n}\r\n\r\nimport template from './template-bottom-sheet';\r\nimport Utils from '../../../utils';\r\n\r\n@customElement('pwa-bottom-sheet')\r\nexport default class PWABottomSheetElement extends LitElement {\r\n\tstatic get styles() {\r\n\t\treturn [stylesCommon, styles];\r\n\t}\r\n\r\n\t@property({type: Object}) props: IProps = {\r\n name: '',\r\n description: '',\r\n icon: ''\r\n };\r\n @property({type: Object}) install = {handleEvent: () => {}};\r\n\t@property() hideDialog = () => {};\r\n\t@property({type: Boolean}) disableClose = false;\r\n\r\n\t@property({type: Boolean}) fallback = false;\r\n\t@property({type: Boolean}) howToRequested = false;\r\n\t@property({type: Object}) toggleHowTo = {handleEvent: () => {}};\r\n\r\n\tprivate _callInstall = () => {\r\n\t\tif (this.fallback) {\r\n\t\t\tthis.toggleHowTo.handleEvent();\r\n\t\t\tsetTimeout(() => this.setupAppearence(true), 210);\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.install.handleEvent();\r\n\t}\r\n\r\n\tprivate _callHide = () => {\r\n\t\tthis.hideDialog();\r\n\t\tthis.setupAppearence();\r\n\t}\r\n\r\n\tprivate bindedElement: {\r\n\t\ttouchElement: HTMLElement,\r\n\t\tlistener: any }| null = null;\r\n\tprivate readonly _saveBodyStyle = document.body.style.overscrollBehaviorY;\r\n\tprivate dragMobileSheet = (element: HTMLElement | null | undefined, touchTargetElement: HTMLElement | undefined, infoElement: HTMLElement | undefined) => {\r\n\t\tif (!element || !touchTargetElement || !infoElement)\r\n\t\t\treturn null;\r\n\r\n\t\tlet dragOffset = 0;\r\n\t\tconst bounceOffset = 35;\r\n\t\t\r\n\t\tconst bottomSize = infoElement.offsetHeight + infoElement.offsetTop;\r\n\r\n\t\tconst getYCoord = (e: MouseEvent | TouchEvent): number => {\r\n\t\t\treturn (e as MouseEvent).clientY || ((e as TouchEvent).changedTouches && (e as TouchEvent).changedTouches.length? (e as TouchEvent).changedTouches[0].clientY : 0);\r\n\t\t}\r\n\r\n\t\tconst dragMouseDown = (e: MouseEvent | TouchEvent) => {\r\n\t\t\twindow.addEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.addEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.addEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.addEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tdragOffset = getYCoord(e) - touchTargetElement.getBoundingClientRect().top;\r\n\r\n\t\t\tdocument.body.style.overscrollBehaviorY = 'none';\r\n\t\t}\r\n\t\tconst dragMouseUp = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tdocument.body.style.overscrollBehaviorY = this._saveBodyStyle;\r\n\r\n\t\t\tif (!this.disableClose && getYCoord(e) >= window.innerHeight - 25) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight + 50, true);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (window.innerHeight - getYCoord(e) > element.clientHeight / 2.5) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - element.clientHeight);\r\n\t\t\t\t\r\n\t\t\t\ttry {\r\n\t\t\t\t\t!this.howToRequested && Utils.eventGallery((this.getRootNode() as ShadowRoot).host);\r\n\t\t\t\t} catch (e) {}\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - bottomSize - bounceOffset);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dragMouseMove = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tconst currentY = getYCoord(e);\r\n\r\n\t\t\tif (this.disableClose && window.innerHeight - currentY < 70) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (currentY <= (window.innerHeight - element.clientHeight + dragOffset)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`none`\r\n\t\t\t)\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"--translateY\",\r\n\t\t\t\t`translateY(${currentY - dragOffset}px)`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst closeDragElement = (e: MouseEvent | TouchEvent, toPoint?: number, hideDialog?: boolean) => {\r\n\t\t\twindow.removeEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.removeEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.removeEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.removeEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tif (window.innerWidth >= 768)\r\n\t\t\t\treturn\r\n\r\n\t\t\tif (!toPoint && getYCoord(e) >= window.innerHeight - bottomSize)\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(calc(100vh - ${bottomSize}px))`\r\n\t\t\t\t);\r\n\t\t\telse\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(${(toPoint || getYCoord(e)) + bounceOffset}px)`\r\n\t\t\t\t);\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s`\r\n\t\t\t);\r\n\r\n\t\t\tif (hideDialog){\r\n\t\t\t\ttouchTargetElement.removeEventListener('mousedown', dragMouseDown);\r\n\t\t\t\ttouchTargetElement.removeEventListener('touchstart', dragMouseDown);\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\tthis._callHide,\r\n\t\t\t\t\t250\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ttouchTargetElement.addEventListener('mousedown', dragMouseDown);\r\n\t\ttouchTargetElement.addEventListener('touchstart', dragMouseDown, {passive: false});\r\n\r\n\t\tcloseDragElement(new MouseEvent('mouseup'), window.innerHeight - bottomSize - bounceOffset);\r\n\r\n\t\treturn {\r\n\t\t\ttouchElement: touchTargetElement,\r\n\t\t\tlistener: dragMouseDown\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupAppearence = (fullOpen?: boolean) => {\r\n\t\tif (this.bindedElement) {\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('mousedown', this.bindedElement.listener);\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('touchstart', this.bindedElement.listener);\r\n\t\t}\r\n\t\t\r\n\t\tthis.bindedElement = this.dragMobileSheet(\r\n\t\t\tthis.parentElement,\r\n\t\t\tthis.shadowRoot?.querySelector('.dialog-body .touch-header') as HTMLElement,\r\n\t\t\tthis.shadowRoot?.querySelector(`.dialog-body ${fullOpen? '.how-to-body': '.body-header'}`) as HTMLElement);\r\n\t}\r\n\tprivate _init = () => {\r\n\t\tthis.setupAppearence();\r\n\r\n\t\twindow.addEventListener('resize', () => this.setupAppearence());\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tthis._init();\r\n return;\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(this.props.name, this.props.description, this.props.icon, this._callInstall, this.fallback, this.howToRequested)}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,\"Segoe UI\",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#eee;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}`;\n ","import {css} from 'lit'; export default css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,\"Segoe UI\";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon description\" \"welcome welcome\" \"how-to how-to\" \"gallery gallery\" \"button button\";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-inline-end:7px;margin-top:7px;margin-inline-start:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-inline-end:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-inline-end:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;padding:0;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:start;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;grid-template-columns:unset;gap:unset;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:start}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-inline-end:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:start}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon\" \"description\" \"welcome\" \"how-to\" \"gallery\" \"button\";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-inline-end:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-inline-end:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop pwa-gallery{margin:0 -10px}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;\n ","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\nimport { ManifestScreenshot } from '../../types/types';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, install: any, toggleGallery: any, galleryRequested: boolean, toggleHowTo: any, howToRequested: boolean, isAndroidFallback: boolean, isRTL: boolean = false) => {\r\n const installDialogClasses = () => { return {available: installAvailable, gallery: galleryRequested }};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n ${!disableClose? html`` : ''}\r\n
\r\n
${location.hostname}
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n ${!disableDescription? \r\n html`
${installDescription? installDescription: `${msg('This site has app functionality.')} ${msg('Install it on your device for extensive experience and easy access.')}`}
` \r\n : ''}\r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n ${screenshotsAvailable? html``:''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n ${screenshotsAvailable? html``: ''}\r\n \r\n
\r\n
`;\r\n};\r\nexport default template;\r\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, howToForApple: any, isDesktop: boolean, howToRequested: boolean, toggleGallery: any, galleryRequested: boolean, isRTL: boolean = false) => {\r\n const installDialogClassesApple = () => { return {available: installAvailable, 'how-to': howToRequested, gallery: galleryRequested, desktop: isDesktop}};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, PropertyValues, html } from 'lit';\r\nimport { localized } from '@lit/localize';\r\nimport { property, state, customElement } from 'lit/decorators.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { changeLocale, isRTL } from './localization';\r\n\r\nimport { IRelatedApp, Manifest, IWindow, PWAInstallAttributes } from './types/types';\r\n\r\nimport PWAGalleryElement from './gallery';\r\nimport PWABottomSheetElement from './templates/chrome/bottom-sheet';\r\n\r\nimport Utils from './utils';\r\n\r\ndeclare const window: IWindow;\r\n\r\nimport styles from './templates/chrome/styles.scss';\r\nimport stylesCommon from './templates/chrome/styles-common.scss'\r\nimport stylesApple from './templates/apple/styles-apple.scss';\r\n\r\nimport template from './templates/chrome/template';\r\nimport templateApple from './templates/apple/template-apple';\r\n\r\n/**\r\n * @event {CustomEvent} pwa-install-success-event - App install success (Chromium/Android only)\r\n * @event {CustomEvent} pwa-install-fail-event - App install failed (Chromium/Android only)\r\n * @event {CustomEvent} pwa-user-choice-result-event - dismissed, accepted\r\n * @event {CustomEvent} pwa-install-available-event - App install available\r\n * @event {CustomEvent} pwa-install-how-to-event - App install instruction showed\r\n * @event {CustomEvent} pwa-install-gallery-event - App install gallery showed\r\n */\r\n@localized()\r\n@customElement('pwa-install')\r\nexport class PWAInstallElement extends LitElement {\r\n\t@property({attribute: 'manifest-url'}) manifestUrl = '/manifest.json';\r\n\t@property() icon = '';\r\n\t@property() name = '';\r\n\t@property() description = '';\r\n\t@property({attribute: 'install-description'}) installDescription = '';\r\n\t@property({attribute: 'disable-install-description', type: Boolean}) disableDescription = false;\r\n\t@property({attribute: 'disable-screenshots', type: Boolean}) disableScreenshots = false;\r\n\t@property({attribute: 'disable-screenshots-apple', type: Boolean}) disableScreenshotsApple = false;\r\n\t@property({attribute: 'disable-screenshots-chrome', type: Boolean}) disableScreenshotsChrome = false;\r\n\t@property({attribute: 'manual-apple', type: Boolean}) manualApple = false;\r\n\t@property({attribute: 'manual-chrome', type: Boolean}) manualChrome = false;\r\n\t@property({attribute: 'disable-chrome', type: Boolean}) disableChrome = false;\r\n\t@property({attribute: 'disable-close', type: Boolean}) disableClose = false;\r\n\t@property({attribute: 'disable-android-fallback', type: Boolean}) disableFallback = false;\r\n\t@property({attribute: 'use-local-storage', type: Boolean}) useLocalStorage = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn [ styles, stylesCommon, stylesApple ];\r\n\t}\r\n\r\n\t@state() externalPromptEvent: BeforeInstallPromptEvent | null = null;\r\n\r\n\tpublic platforms: BeforeInstallPromptEvent['platforms'] = [];\r\n\tpublic userChoiceResult = '';\r\n\r\n\tpublic isDialogHidden: boolean = Utils.getStorageFlag('pwa-hide-install');\r\n\tpublic isInstallAvailable = false;\r\n\tpublic isAppleMobilePlatform = false;\r\n\tpublic isAppleDesktopPlatform = false;\r\n\tpublic isAndroidFallback = false;\r\n\tpublic isAndroid = false;\r\n\tpublic isUnderStandaloneMode = false;\r\n\tpublic isRelatedAppsInstalled = false;\r\n\r\n\t/** @internal */\r\n\tprivate _isRTL = false;\r\n\r\n\t/** @internal */\r\n\tprivate _manifest: Manifest = new Manifest();\r\n\t/** @internal */\r\n\tprivate _howToRequested = false;\r\n\t/** @internal */\r\n\tprivate _galleryRequested = false;\r\n\t/** @internal */\r\n\tprivate _install = {\r\n\t\thandleEvent: () => {\r\n\t\t\tif (window.defferedPromptEvent) {\r\n\t\t\t\tthis.hideDialog();\r\n\t\t\t\twindow.defferedPromptEvent.prompt();\r\n\t\t\t\twindow.defferedPromptEvent.userChoice\r\n\t\t\t\t\t.then((choiceResult: PromptResponseObject) => {\r\n\t\t\t\t\t\tthis.userChoiceResult = choiceResult.outcome;\r\n\t\t\t\t\t\tUtils.eventUserChoiceResult(this, this.userChoiceResult);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tUtils.eventInstalledFail(this);\r\n\t\t\t\t\t});\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\tpublic install = () => {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis._howToRequested = true;\r\n\t\t\tthis.requestUpdate();\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._install.handleEvent();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialog = {\r\n\t\thandleEvent: () => {\r\n\t\t\tthis.isDialogHidden = true;\r\n\t\t\tUtils.setStorageFlag('pwa-hide-install', true, this.useLocalStorage);\r\n\t\t\tthis.requestUpdate();\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialogUser = () => {\r\n\t\tUtils.eventUserChoiceResult(this, 'dismissed');\r\n\t\tthis.userChoiceResult = 'dismissed';\r\n\t\tthis.hideDialog();\r\n\t}\r\n\tpublic hideDialog = () => {\r\n\t\tthis._hideDialog.handleEvent();\r\n\t}\r\n\tpublic showDialog = (forced = false) => {\r\n\t\tthis.isDialogHidden = false;\r\n\t\tif (forced)\r\n\t\t\tthis.isInstallAvailable = true;\r\n\t\tUtils.setStorageFlag('pwa-hide-install', false, this.useLocalStorage);\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tpublic getInstalledRelatedApps = async (): Promise => {\r\n\t\treturn await Utils.getInstalledRelatedApps();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _toggleHowTo = {\r\n handleEvent: () => {\r\n\t\t\tthis._howToRequested = !this._howToRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._galleryRequested = false;\r\n\t\t\tthis.requestUpdate();\r\n\r\n\t\t\tif (this._howToRequested) {\r\n\t\t\t\tUtils.eventInstallHowTo(this);\r\n\t\t\t}\t\t\t\t\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate _toggleGallery = {\r\n handleEvent: () => {\r\n\t\t\tthis._galleryRequested = !this._galleryRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._howToRequested = false;\r\n\r\n\t\t\tthis._galleryRequested && Utils.eventGallery(this);\r\n\r\n\t\t\tthis.requestUpdate();\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate async _checkPlatform() {\r\n\t\tthis.isUnderStandaloneMode = Utils.isStandalone();\r\n\t\tthis.isRelatedAppsInstalled = await Utils.isRelatedAppsInstalled();\r\n\t\tthis.isAppleMobilePlatform = Utils.isAppleMobile();\r\n\t\tthis.isAppleDesktopPlatform = Utils.isAppleDesktop();\r\n\t\tthis.isAndroidFallback = Utils.isAndroidFallback();\r\n\t\tthis.isAndroid = Utils.isAndroid();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _checkInstallAvailable() {\r\n\t\tif (this.isUnderStandaloneMode)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis.manualApple && this.hideDialog();\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t},\r\n\t\t\t\t1000\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet _promptTriggered = false;\r\n\t\tif (!this.disableChrome && window.BeforeInstallPromptEvent) {\r\n\t\t\tthis.manualChrome && this.hideDialog();\r\n\t\t\tconst _promptHandler = (e: BeforeInstallPromptEvent) => {\r\n\t\t\t\twindow.defferedPromptEvent = e;\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.platforms = e.platforms;\r\n\r\n\t\t\t\tif (this.isRelatedAppsInstalled) {\r\n\t\t\t\t\tthis.isInstallAvailable = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userChoiceResult === 'accepted'){\r\n\t\t\t\t\tthis.isDialogHidden = true;\r\n\t\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t_promptTriggered = true;\r\n\t\t\t\tthis.isAndroidFallback = false;\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t\tif (this.externalPromptEvent != null)\r\n\t\t\t\tsetTimeout(() => _promptHandler(this.externalPromptEvent!), 300);\r\n\t\t\telse\r\n\t\t\t\twindow.addEventListener('beforeinstallprompt', _promptHandler);\r\n\t\t}\r\n\t\t\r\n\t\tif (!this.disableFallback && this.isAndroid && !_promptTriggered) {\r\n\t\t\t// browsers without BeforeInstallPromptEvent\r\n\t\t\tif (this.isAndroidFallback) {\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t1000\r\n\t\t\t\t);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t// trying to fix browsers like Opera with BeforeInstallPromptEvent not working\r\n\t\t\tif ('userActivation' in navigator && !this.isRelatedAppsInstalled) {\r\n\t\t\t\tconst _activation = navigator.userActivation;\r\n\t\t\t\tconst _activationHandler = setInterval(() => {\r\n\t\t\t\t\tif (_activation.isActive || _activation.hasBeenActive) {\r\n\t\t\t\t\t\tif (!_promptTriggered) {\r\n\t\t\t\t\t\t\tthis.isAndroidFallback = true;\r\n\t\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\t\tthis.requestUpdate();\r\n\t\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tclearInterval(_activationHandler);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 1000);\r\n\t\t\t\tsetTimeout(() => clearInterval(_activationHandler), 30000);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _init = async () => {\r\n\t\twindow.defferedPromptEvent = null;\r\n\r\n\t\tawait this._checkPlatform();\r\n\t\tthis._checkInstallAvailable();\r\n\r\n\t\tif ('onappinstalled' in window)\r\n\t\t\twindow.addEventListener('appinstalled', (e) => {\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t\tthis.isInstallAvailable = false;\r\n\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t});\r\n\r\n\t\tObject.assign(this, await Utils.fetchAndProcessManifest(this.manifestUrl, this.icon, this.name, this.description));\r\n\t};\r\n\t/** @internal */\r\n\tprivate _requestUpdate = () => {\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tasync connectedCallback() {\r\n\t\tawait changeLocale(navigator.language);\r\n\t\tthis._isRTL = isRTL();\r\n\t\tthis._init();\r\n\t\tPWAGalleryElement.finalized;\r\n\t\tPWABottomSheetElement.finalized;\r\n\t\tsuper.connectedCallback();\r\n\t}\r\n\twillUpdate(changedProperties: PropertyValues) {\r\n\t\tif (this.externalPromptEvent && changedProperties.has('externalPromptEvent') && typeof this.externalPromptEvent == 'object') {\r\n\t\t this._init();\r\n\t\t}\r\n\t}\r\n\r\n\t// firstUpdated() {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\trender() {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform)\r\n\t\t\treturn html`${templateApple(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsApple,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._toggleHowTo,\r\n\t\t\t\tthis.isAppleDesktopPlatform,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested,\r\n\t\t\t\tthis._isRTL\r\n\t\t\t)}`;\r\n\t\telse\r\n\t\t\treturn html`${template(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsChrome,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._install,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested,\r\n\t\t\t\tthis._toggleHowTo,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis.isAndroidFallback,\r\n\t\t\t\tthis._isRTL\r\n\t\t\t)}`;\r\n\t}\r\n}\r\n\r\nexport { PWAInstallAttributes };\r\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { updateWhenLocaleChanges } from './localized-controller.js';\n/**\n * Class decorator to enable re-rendering the given LitElement whenever a new\n * active locale has loaded.\n *\n * See also {@link updateWhenLocaleChanges} for the same functionality without\n * the use of decorators.\n *\n * When using lit-localize in transform mode, applications of this decorator are\n * removed.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {customElement} from 'lit/decorators.js';\n * import {msg, localized} from '@lit/localize';\n *\n * @localized()\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nexport const localized = () => (clazz, _context) => {\n clazz.addInitializer(updateWhenLocaleChanges);\n return clazz;\n};\n//# sourceMappingURL=localized-decorator.js.map","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=new Set([\"children\",\"localName\",\"ref\",\"style\",\"className\"]),n=new WeakMap,t=(e,t,o,l,a)=>{const s=a?.[t];void 0===s?(e[t]=o,null==o&&t in HTMLElement.prototype&&e.removeAttribute(t)):o!==l&&((e,t,o)=>{let l=n.get(e);void 0===l&&n.set(e,l=new Map);let a=l.get(t);void 0!==o?void 0===a?(l.set(t,a={handleEvent:o}),e.addEventListener(t,a)):a.handleEvent=o:void 0!==a&&(l.delete(t),e.removeEventListener(t,a))})(e,s,o)},o=({react:n,tagName:o,elementClass:l,events:a,displayName:s})=>{const c=new Set(Object.keys(a??{})),r=n.forwardRef(((s,r)=>{const i=n.useRef(new Map),d=n.useRef(null),f={},u={};for(const[n,t]of Object.entries(s))e.has(n)?f[\"className\"===n?\"class\":n]=t:c.has(n)||n in l.prototype?u[n]=t:f[n]=t;return n.useLayoutEffect((()=>{if(null===d.current)return;const e=new Map;for(const n in u)t(d.current,n,s[n],i.current.get(n),a),i.current.delete(n),e.set(n,s[n]);for(const[e,n]of i.current)t(d.current,e,void 0,n,a);i.current=e})),n.useLayoutEffect((()=>{d.current?.removeAttribute(\"defer-hydration\")}),[]),f.suppressHydrationWarning=!0,n.createElement(o,{...f,ref:n.useCallback((e=>{d.current=e,\"function\"==typeof r?r(e):null!==r&&(r.current=e)}),[r])})}));return r.displayName=s??l.name,r};export{o as createComponent};\n//# sourceMappingURL=create-component.js.map\n","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => (__WEBPACK_EXTERNAL_MODULE_react__[\"default\"]) });","\r\nimport { PWAInstallElement } from '../index';\r\nimport { createComponent, ReactWebComponent } from '@lit/react';\r\nimport react from 'react';\r\n\r\nconst PWAInstall = createComponent({\r\n\treact,\r\n\ttagName: 'pwa-install',\r\n\telementClass: PWAInstallElement,\r\n\tevents: {\r\n\t onPwaInstallSuccessEvent: 'pwa-install-success-event',\r\n\t onPwaInstallFailEvent: 'pwa-install-fail-event',\r\n\t onPwaUserChoiceResultEvent: 'pwa-user-choice-result-event',\r\n\t onPwaInstallAvailableEvent: 'pwa-install-available-event',\r\n\t onPwaInstallHowToEvent: 'pwa-install-how-to-event',\r\n\t onPwaInstallGalleryEvent: 'pwa-install-gallery-event'\r\n\t}\r\n});\r\n\r\nexport default PWAInstall;"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","y","x","d","__WEBPACK_EXTERNAL_MODULE_lit__","joinStringsAndValues","strings","values","valueOrder","concat","i","length","defaultMsg","template","isStrTagged","val","msg","installed","LOCALE_STATUS_EVENT","LocalizeController","constructor","host","this","__litLocalizeEventHandler","event","detail","status","requestUpdate","hostConnected","window","addEventListener","hostDisconnected","removeEventListener","updateWhenLocaleChanges","addController","Deferred","settled","promise","Promise","resolve","reject","_resolve","_reject","error","hl","toString","generateMsgId","isHtmlTagged","str","t0","v0","t1","v1","t2","v2","t3","v3","charCodeAt","fnv1a64","join","expressionOrders","WeakMap","hashCache","Map","runtimeMsg","templates","options","id","undefined","set","generateId","localized","order","map","dispatchStatusEvent","dispatchEvent","CustomEvent","loadingLocale","sourceLocale","validLocales","loadLocale","activeLocale","loading","requestId","getLocale","setLocale","newLocale","Error","has","thisRequestId","then","mod","readyLocale","err","errorLocale","errorMessage","__WEBPACK_EXTERNAL_MODULE_lit_decorators_js_226d44c5__","targetLocales","localizedTemplates","config","async","lang","impl","_installMsgImplementation","Set","add","Manifest","icons","src","screenshots","short_name","name","description","css","_eventDispatcher","_element","message","Utils","isAppleMobile","includes","navigator","platform","userAgent","match","maxTouchPoints","isAppleDesktop","toLowerCase","version","exec","parseInt","audioCheck","document","createElement","canPlayType","webGLCheck","OffscreenCanvas","getContext","isAndroid","isAndroidFallback","deviceFormFactor","matchMedia","matches","isStandalone","standalone","getInstalledRelatedApps","relatedApps","e","isRelatedAppsInstalled","setStorageFlag","persistent","localStorage","setItem","sessionStorage","getStorageFlag","getItem","eventInstalledSuccess","eventInstalledFail","eventUserChoiceResult","eventInstallAvailable","eventInstallHowTo","eventGallery","normalizeManifestAssetUrls","manifest","manifestUrl","normalizedManifestUrl","URL","location","href","forEach","asset","fetchAndProcessManifest","icon","_manifest","_json","_response","fetch","json","ok","keys","theme","scrollToNextPage","scrollToPrevPage","html","PWAGalleryElement","LitElement","rtl","getScrollElements","gallery","shadowRoot","querySelector","galleryScroller","galleryItems","Array","from","querySelectorAll","scroller","items","findCurrentItem","scrollLeft","find","item","offsetWidth","offsetLeft","scrollToPage","direction","scrollData","currentItem","targetIndex","indexOf","scrollIntoView","behavior","block","inline","_init","styles","firstUpdated","_tools","setTimeout","scrollTo","top","left","connectedCallback","super","render","property","type","Boolean","customElement","__WEBPACK_EXTERNAL_MODULE_lit_directives_class_map_js_2f88e643__","install","fallback","howToRequested","PWABottomSheetElement","props","handleEvent","hideDialog","disableClose","toggleHowTo","_callInstall","setupAppearence","_callHide","bindedElement","_saveBodyStyle","body","style","overscrollBehaviorY","dragMobileSheet","element","touchTargetElement","infoElement","dragOffset","bottomSize","offsetHeight","offsetTop","getYCoord","clientY","changedTouches","dragMouseDown","dragMouseUp","dragMouseMove","preventDefault","getBoundingClientRect","innerHeight","closeDragElement","clientHeight","getRootNode","currentY","setProperty","toPoint","innerWidth","passive","MouseEvent","touchElement","listener","fullOpen","parentElement","installDescription","disableDescription","disableScreenshots","installAvailable","toggleGallery","galleryRequested","isRTL","installDialogClasses","available","screenshotsAvailable","howToForApple","isDesktop","desktop","PWAInstallElement","disableScreenshotsApple","disableScreenshotsChrome","manualApple","manualChrome","disableChrome","disableFallback","useLocalStorage","externalPromptEvent","platforms","userChoiceResult","isDialogHidden","isInstallAvailable","isAppleMobilePlatform","isAppleDesktopPlatform","isUnderStandaloneMode","_isRTL","_howToRequested","_galleryRequested","_install","defferedPromptEvent","prompt","userChoice","choiceResult","outcome","catch","_hideDialog","_hideDialogUser","showDialog","forced","_toggleHowTo","_toggleGallery","_checkPlatform","_checkInstallAvailable","assign","_requestUpdate","_promptTriggered","BeforeInstallPromptEvent","_promptHandler","_activation","userActivation","_activationHandler","setInterval","isActive","hasBeenActive","clearInterval","slice","changeLocale","language","finalized","willUpdate","changedProperties","attribute","state","clazz","_context","addInitializer","n","t","l","a","s","HTMLElement","removeAttribute","delete","__WEBPACK_EXTERNAL_MODULE_react__","PWAInstall","react","tagName","elementClass","events","displayName","c","r","forwardRef","useRef","f","u","entries","useLayoutEffect","current","suppressHydrationWarning","ref","useCallback","onPwaInstallSuccessEvent","onPwaInstallFailEvent","onPwaUserChoiceResultEvent","onPwaInstallAvailableEvent","onPwaInstallHowToEvent","onPwaInstallGalleryEvent"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/umd/pwa-install.umd.js.map b/dist/umd/pwa-install.umd.js.map index d6d5e5e..0d0c3f2 100644 --- a/dist/umd/pwa-install.umd.js.map +++ b/dist/umd/pwa-install.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"pwa-install.umd.js","mappings":"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","sources":["webpack://PWAInstallComponent/webpack/universalModuleDefinition","webpack://PWAInstallComponent/external umd \"lit\"","webpack://PWAInstallComponent/external umd \"lit/decorators.js\"","webpack://PWAInstallComponent/external umd \"lit/directives/class-map.js\"","webpack://PWAInstallComponent/webpack/bootstrap","webpack://PWAInstallComponent/webpack/runtime/define property getters","webpack://PWAInstallComponent/webpack/runtime/hasOwnProperty shorthand","webpack://PWAInstallComponent/webpack/runtime/make namespace object","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/str-tag.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/default-msg.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/init/install.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/locale-status-event.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/localized-controller.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/deferred.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/fnv1a64.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/id-generation.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/runtime-msg.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/init/runtime.js","webpack://PWAInstallComponent/./src/localization/locale-codes.ts","webpack://PWAInstallComponent/./src/localization/locales/ru.ts","webpack://PWAInstallComponent/./src/localization/locales/tr.ts","webpack://PWAInstallComponent/./src/localization/locales/de.ts","webpack://PWAInstallComponent/./src/localization/locales/es.ts","webpack://PWAInstallComponent/./src/localization/locales/nl.ts","webpack://PWAInstallComponent/./src/localization/locales/el.ts","webpack://PWAInstallComponent/./src/localization/locales/fr.ts","webpack://PWAInstallComponent/./src/localization/locales/sr.ts","webpack://PWAInstallComponent/./src/localization/locales/pl.ts","webpack://PWAInstallComponent/./src/localization/locales/uk.ts","webpack://PWAInstallComponent/./src/localization/locales/zh-HK.ts","webpack://PWAInstallComponent/./src/localization/locales/zh-CN.ts","webpack://PWAInstallComponent/./src/localization/locales/it.ts","webpack://PWAInstallComponent/./src/localization/locales/cs.ts","webpack://PWAInstallComponent/./src/localization/locales/no.ts","webpack://PWAInstallComponent/./src/localization/locales/pt.ts","webpack://PWAInstallComponent/./src/localization/locales/ja.ts","webpack://PWAInstallComponent/./src/localization/locales/sv.ts","webpack://PWAInstallComponent/./src/localization/locales/ko.ts","webpack://PWAInstallComponent/./src/localization/locales/km.ts","webpack://PWAInstallComponent/./src/localization/locales/fa.ts","webpack://PWAInstallComponent/./src/localization/locales/da.ts","webpack://PWAInstallComponent/./src/localization/locales/vi.ts","webpack://PWAInstallComponent/./src/localization/index.ts","webpack://PWAInstallComponent/./src/types/types.ts","webpack://PWAInstallComponent/./src/gallery/styles-gallery.scss","webpack://PWAInstallComponent/./src/utils.ts","webpack://PWAInstallComponent/./src/gallery/template-gallery.ts","webpack://PWAInstallComponent/./src/gallery/index.ts","webpack://PWAInstallComponent/./src/templates/chrome/styles-common.scss","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/styles-bottom-sheet.scss","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/template-bottom-sheet.ts","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/index.ts","webpack://PWAInstallComponent/./src/templates/chrome/styles.scss","webpack://PWAInstallComponent/./src/templates/apple/styles-apple.scss","webpack://PWAInstallComponent/./src/templates/chrome/template.ts","webpack://PWAInstallComponent/./src/templates/apple/template-apple.ts","webpack://PWAInstallComponent/./src/index.ts","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/localized-decorator.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"lit\"), require(\"lit/decorators.js\"), require(\"lit/directives/class-map.js\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"lit\", \"lit/decorators.js\", \"lit/directives/class-map.js\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PWAInstallComponent\"] = factory(require(\"lit\"), require(\"lit/decorators.js\"), require(\"lit/directives/class-map.js\"));\n\telse\n\t\troot[\"PWAInstallComponent\"] = factory(root[\"lit\"], root[\"lit/decorators.js\"], root[\"lit/directives/class-map.js\"]);\n})(globalThis, (__WEBPACK_EXTERNAL_MODULE__161__, __WEBPACK_EXTERNAL_MODULE__429__, __WEBPACK_EXTERNAL_MODULE__125__) => {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__161__;","module.exports = __WEBPACK_EXTERNAL_MODULE__429__;","module.exports = __WEBPACK_EXTERNAL_MODULE__125__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Tag that allows expressions to be used in localized non-HTML template\n * strings.\n *\n * Example: msg(str`Hello ${this.user}!`);\n *\n * The Lit html tag can also be used for this purpose, but HTML will need to be\n * escaped, and there is a small overhead for HTML parsing.\n *\n * Untagged template strings with expressions aren't supported by lit-localize\n * because they don't allow for values to be captured at runtime.\n */\nconst _str = (strings, ...values) => ({\n strTag: true,\n strings,\n values,\n});\nexport const str = _str;\nexport const isStrTagged = (val) => typeof val !== 'string' && 'strTag' in val;\n/**\n * Render the result of a `str` tagged template to a string. Note we don't need\n * to do this for Lit templates, since Lit itself handles rendering.\n */\nexport const joinStringsAndValues = (strings, values, valueOrder) => {\n let concat = strings[0];\n for (let i = 1; i < strings.length; i++) {\n concat += values[valueOrder ? valueOrder[i - 1] : i - 1];\n concat += strings[i];\n }\n return concat;\n};\n//# sourceMappingURL=str-tag.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { isStrTagged, joinStringsAndValues } from './str-tag.js';\n/**\n * Default identity msg implementation. Simply returns the input template with\n * no awareness of translations. If the template is str-tagged, returns it in\n * string form.\n */\nexport const defaultMsg = ((template) => isStrTagged(template)\n ? joinStringsAndValues(template.strings, template.values)\n : template);\n//# sourceMappingURL=default-msg.js.map","import { defaultMsg } from '../internal/default-msg.js';\n/**\n * Make a string or lit-html template localizable.\n *\n * @param template A string, a lit-html template, or a function that returns\n * either a string or lit-html template.\n * @param options Optional configuration object with the following properties:\n * - id: Optional project-wide unique identifier for this template. If\n * omitted, an id will be automatically generated from the template strings.\n * - desc: Optional description\n */\nexport let msg = defaultMsg;\nlet installed = false;\n/**\n * Internal only. Do not use this function.\n *\n * Installs an implementation of the msg function to replace the default\n * identity function. Throws if called more than once.\n *\n * @internal\n */\nexport function _installMsgImplementation(impl) {\n if (installed) {\n throw new Error('lit-localize can only be configured once');\n }\n msg = impl;\n installed = true;\n}\n//# sourceMappingURL=install.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Name of the event dispatched to `window` whenever a locale change starts,\n * finishes successfully, or fails. Only relevant to runtime mode.\n *\n * The `detail` of this event is an object with a `status` string that can be:\n * \"loading\", \"ready\", or \"error\", along with the relevant locale code, and\n * error message if applicable.\n *\n * You can listen for this event to know when your application should be\n * re-rendered following a locale change. See also the Localized mixin, which\n * automatically re-renders LitElement classes using this event.\n */\nexport const LOCALE_STATUS_EVENT = 'lit-localize-status';\n//# sourceMappingURL=locale-status-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { LOCALE_STATUS_EVENT } from './locale-status-event.js';\nclass LocalizeController {\n constructor(host) {\n this.__litLocalizeEventHandler = (event) => {\n if (event.detail.status === 'ready') {\n this.host.requestUpdate();\n }\n };\n this.host = host;\n }\n hostConnected() {\n window.addEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n hostDisconnected() {\n window.removeEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n}\n/**\n * Re-render the given LitElement whenever a new active locale has loaded.\n *\n * See also {@link localized} for the same functionality as a decorator.\n *\n * When using lit-localize in transform mode, calls to this function are\n * replaced with undefined.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {msg, updateWhenLocaleChanges} from '@lit/localize';\n *\n * class MyElement extends LitElement {\n * constructor() {\n * super();\n * updateWhenLocaleChanges(this);\n * }\n *\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nconst _updateWhenLocaleChanges = (host) => host.addController(new LocalizeController(host));\nexport const updateWhenLocaleChanges = _updateWhenLocaleChanges;\n//# sourceMappingURL=localized-controller.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport class Deferred {\n constructor() {\n this.settled = false;\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n resolve(value) {\n this.settled = true;\n this._resolve(value);\n }\n reject(error) {\n this.settled = true;\n this._reject(error);\n }\n}\n//# sourceMappingURL=deferred.js.map","/**\n * @license\n * Copyright 2014 Travis Webb\n * SPDX-License-Identifier: MIT\n */\n// This module is derived from the file:\n// https://github.com/tjwebb/fnv-plus/blob/1e2ce68a07cb7dd4c3c85364f3d8d96c95919474/index.js#L309\n//\n// Changes:\n// - Only the _hash64_1a_fast function is included.\n// - Removed loop unrolling.\n// - Converted to TypeScript ES module.\n// - var -> let/const\n//\n// TODO(aomarks) Upstream improvements to https://github.com/tjwebb/fnv-plus/.\nconst hl = [];\nfor (let i = 0; i < 256; i++) {\n hl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n}\n/**\n * Perform a FNV-1A 64-bit hash of the given string (as UTF-16 code units), and\n * return a hexadecimal digest (left zero padded to 16 characters).\n *\n * @see {@link http://tools.ietf.org/html/draft-eastlake-fnv-06}\n */\nexport function fnv1a64(str) {\n let t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n for (let i = 0; i < str.length; i++) {\n v0 ^= str.charCodeAt(i);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = (t3 + (t2 >>> 16)) & 65535;\n v2 = t2 & 65535;\n }\n return (hl[v3 >> 8] +\n hl[v3 & 255] +\n hl[v2 >> 8] +\n hl[v2 & 255] +\n hl[v1 >> 8] +\n hl[v1 & 255] +\n hl[v0 >> 8] +\n hl[v0 & 255]);\n}\n//# sourceMappingURL=fnv1a64.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { fnv1a64 } from './fnv1a64.js';\n/**\n * Delimiter used between each template string component before hashing. Used to\n * prevent e.g. \"foobar\" and \"foo${baz}bar\" from sharing a hash.\n *\n * This is the \"record separator\" ASCII character.\n */\nexport const HASH_DELIMITER = '\\x1e';\n/**\n * Id prefix on html-tagged templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst HTML_PREFIX = 'h';\n/**\n * Id prefix on plain string templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst STRING_PREFIX = 's';\n/**\n * Generate a unique ID for a lit-localize message.\n *\n * Example:\n * Template: html`Hello ${who}!`\n * Params: [\"Hello \", \"!\"], true\n * Output: h82ccc38d4d46eaa9\n *\n * The ID is constructed as:\n *\n * [0] Kind of template: [h]tml or [s]tring.\n * [1,16] 64-bit FNV-1a hash hex digest of the template strings, as UTF-16\n * code points, delineated by an ASCII \"record separator\" character.\n *\n * We choose FNV-1a because:\n *\n * 1. It's pretty fast (e.g. much faster than SHA-1).\n * 2. It's pretty small (0.25 KiB minified + brotli).\n * 3. We don't require cryptographic security, and 64 bits should give\n * sufficient collision resistance for any one application. Worst\n * case, we will always detect collisions during analysis.\n * 4. We can't use Web Crypto API (e.g. SHA-1), because it's asynchronous.\n * 5. It's a well known non-cryptographic hash with implementations in many\n * languages.\n * 6. There was an existing JavaScript implementation that doesn't require\n * BigInt, for IE11 compatibility.\n */\nexport function generateMsgId(strings, isHtmlTagged) {\n return ((isHtmlTagged ? HTML_PREFIX : STRING_PREFIX) +\n fnv1a64(typeof strings === 'string' ? strings : strings.join(HASH_DELIMITER)));\n}\n//# sourceMappingURL=id-generation.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { defaultMsg } from './default-msg.js';\nimport { joinStringsAndValues } from './str-tag.js';\nimport { generateMsgId } from './id-generation.js';\nconst expressionOrders = new WeakMap();\nconst hashCache = new Map();\nexport function runtimeMsg(templates, template, options) {\n if (templates) {\n const id = options?.id ?? generateId(template);\n const localized = templates[id];\n if (localized) {\n if (typeof localized === 'string') {\n // E.g. \"Hello World!\"\n return localized;\n }\n else if ('strTag' in localized) {\n // E.g. str`Hello ${name}!`\n //\n // Localized templates have ${number} in place of real template\n // expressions. They can't have real template values, because the\n // variable scope would be wrong. The number tells us the index of the\n // source value to substitute in its place, because expressions can be\n // moved to a different position during translation.\n return joinStringsAndValues(localized.strings, \n // Cast `template` because its type wasn't automatically narrowed (but\n // we know it must be the same type as `localized`).\n template.values, localized.values);\n }\n else {\n // E.g. html`Hello ${name}!`\n //\n // We have to keep our own mapping of expression ordering because we do\n // an in-place update of `values`, and otherwise we'd lose ordering for\n // subsequent renders.\n let order = expressionOrders.get(localized);\n if (order === undefined) {\n order = localized.values;\n expressionOrders.set(localized, order);\n }\n return {\n ...localized,\n values: order.map((i) => template.values[i]),\n };\n }\n }\n }\n return defaultMsg(template);\n}\nfunction generateId(template) {\n const strings = typeof template === 'string' ? template : template.strings;\n let id = hashCache.get(strings);\n if (id === undefined) {\n id = generateMsgId(strings, typeof template !== 'string' && !('strTag' in template));\n hashCache.set(strings, id);\n }\n return id;\n}\n//# sourceMappingURL=runtime-msg.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { Deferred } from '../internal/deferred.js';\nimport { LOCALE_STATUS_EVENT } from '../internal/locale-status-event.js';\nimport { runtimeMsg } from '../internal/runtime-msg.js';\nimport { _installMsgImplementation } from './install.js';\n/**\n * Dispatch a \"lit-localize-status\" event to `window` with the given detail.\n */\nfunction dispatchStatusEvent(detail) {\n window.dispatchEvent(new CustomEvent(LOCALE_STATUS_EVENT, { detail }));\n}\nlet activeLocale = '';\nlet loadingLocale;\nlet sourceLocale;\nlet validLocales;\nlet loadLocale;\nlet templates;\nlet loading = new Deferred();\n// The loading promise must be initially resolved, because that's what we should\n// return if the user immediately calls setLocale(sourceLocale).\nloading.resolve();\nlet requestId = 0;\n/**\n * Set configuration parameters for lit-localize when in runtime mode. Returns\n * an object with functions:\n *\n * - `getLocale`: Return the active locale code.\n * - `setLocale`: Set the active locale code.\n *\n * Throws if called more than once.\n */\nexport const configureLocalization = (config) => {\n _installMsgImplementation(((template, options) => runtimeMsg(templates, template, options)));\n activeLocale = sourceLocale = config.sourceLocale;\n validLocales = new Set(config.targetLocales);\n validLocales.add(config.sourceLocale);\n loadLocale = config.loadLocale;\n return { getLocale, setLocale };\n};\n/**\n * Return the active locale code.\n */\nconst getLocale = () => {\n return activeLocale;\n};\n/**\n * Set the active locale code, and begin loading templates for that locale using\n * the `loadLocale` function that was passed to `configureLocalization`. Returns\n * a promise that resolves when the next locale is ready to be rendered.\n *\n * Note that if a second call to `setLocale` is made while the first requested\n * locale is still loading, then the second call takes precedence, and the\n * promise returned from the first call will resolve when second locale is\n * ready. If you need to know whether a particular locale was loaded, check\n * `getLocale` after the promise resolves.\n *\n * Throws if the given locale is not contained by the configured `sourceLocale`\n * or `targetLocales`.\n */\nconst setLocale = (newLocale) => {\n if (newLocale === (loadingLocale ?? activeLocale)) {\n return loading.promise;\n }\n if (!validLocales || !loadLocale) {\n throw new Error('Internal error');\n }\n if (!validLocales.has(newLocale)) {\n throw new Error('Invalid locale code');\n }\n requestId++;\n const thisRequestId = requestId;\n loadingLocale = newLocale;\n if (loading.settled) {\n loading = new Deferred();\n }\n dispatchStatusEvent({ status: 'loading', loadingLocale: newLocale });\n const localePromise = newLocale === sourceLocale\n ? // We could switch to the source locale synchronously, but we prefer to\n // queue it on a microtask so that switching locales is consistently\n // asynchronous.\n Promise.resolve({ templates: undefined })\n : loadLocale(newLocale);\n localePromise.then((mod) => {\n if (requestId === thisRequestId) {\n activeLocale = newLocale;\n loadingLocale = undefined;\n templates = mod.templates;\n dispatchStatusEvent({ status: 'ready', readyLocale: newLocale });\n loading.resolve();\n }\n // Else another locale was requested in the meantime. Don't resolve or\n // reject, because the newer load call is going to use the same promise.\n // Note the user can call getLocale() after the promise resolves if they\n // need to check if the locale is still the one they expected to load.\n }, (err) => {\n if (requestId === thisRequestId) {\n dispatchStatusEvent({\n status: 'error',\n errorLocale: newLocale,\n errorMessage: err.toString(),\n });\n loading.reject(err);\n }\n });\n return loading.promise;\n};\n//# sourceMappingURL=runtime.js.map","// Do not modify this file by hand!\n// Re-generate this file by running lit-localize.\n\n/**\n * The locale code that templates in this source code are written in.\n */\nexport const sourceLocale = `en`;\n\n/**\n * The other locale codes that this application is localized into. Sorted\n * lexicographically.\n */\nexport const targetLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `es`,\n `fa`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `vi`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n\n/**\n * All valid project locale codes. Sorted lexicographically.\n */\nexport const allLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `en`,\n `es`,\n `fa`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `vi`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Откройте меню вашего браузера`,\n's182ab2d6c997515f': `Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.`,\n's1b9047d53d9f9d22': `2) Нажать \"Поделиться\"`,\n's2d90afa5dcca2c0e': `3) Прокрутите вниз до \"Добавить на главный экран\"`,\n's37a9e8aec5713460': `Подробнее`,\n's4593f304dac8848c': `2) Нажмите \"Добавить на главный экран\"`,\n's54cfbb14f46396d4': `1) Откройте в вашем основном браузере`,\n's6196153c4b0c1ea0': `Установить`,\n's922329d6f6213590': `Добавить в Dock`,\n'sa5ef80b4bb9b39f8': `Свернуть`,\n'sa7551383d1897fcc': `2) Нажмите \"Добавить в Dock\"`,\n'sba52286c21552a4e': `Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.`,\n'sc79fd7641eb9a975': `Спрятать Инструкцию`,\n'scdaf4bbff76674c8': `На экран «Домой»`,\n'se740f75b95a51807': `Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.`,\n'sfea652f6580ff086': `Этот веб-сайт имеет функционал приложения.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Tarayıcı menünüzü açın`,\n's182ab2d6c997515f': `Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.`,\n's1b9047d53d9f9d22': `2) Gezinme çubuğunda Paylaş'a basın`,\n's2d90afa5dcca2c0e': `3) \"Ana Ekrana Ekle\" seçeneğine kadar aşağı kaydırın`,\n's37a9e8aec5713460': `Daha Fazla`,\n's4593f304dac8848c': `2) \"Ana Ekrana Ekle\"ye dokunun`,\n's54cfbb14f46396d4': `1) Ana tarayıcınızda açın`,\n's6196153c4b0c1ea0': `Yükle`,\n's922329d6f6213590': `Dock’a Ekle`,\n'sa5ef80b4bb9b39f8': `Küçült`,\n'sa7551383d1897fcc': `2) Dock’a ekleye basın`,\n'sba52286c21552a4e': `Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.`,\n'sc79fd7641eb9a975': `Talimatları gizle`,\n'scdaf4bbff76674c8': `Ana Ekrana Ekle`,\n'se740f75b95a51807': `Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.`,\n'sfea652f6580ff086': `Bu site uygulama işlevselliğine sahiptir.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Öffnen Sie das Menü Ihres Browsers`,\n's182ab2d6c997515f': `Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n's1b9047d53d9f9d22': `2) Drücken Sie auf Teilen in der Navigationsleiste`,\n's2d90afa5dcca2c0e': `3) Scrollen Sie nach unten zu \"Zum Startbildschirm hinzufügen\"`,\n's37a9e8aec5713460': `Mehr`,\n's4593f304dac8848c': `2) Tippen Sie auf \"Zum Startbildschirm hinzufügen\"`,\n's54cfbb14f46396d4': `1) Öffnen Sie es in Ihrem Hauptbrowser`,\n's6196153c4b0c1ea0': `Installieren`,\n's922329d6f6213590': `Zum Dock hinzufügen`,\n'sa5ef80b4bb9b39f8': `Weniger`,\n'sa7551383d1897fcc': `2) Drücken Sie auf Zum Dock hinzufügen`,\n'sba52286c21552a4e': `Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.`,\n'sc79fd7641eb9a975': `Anleitung ausblenden`,\n'scdaf4bbff76674c8': `Hinzufügen zum Startbildschirm`,\n'se740f75b95a51807': `Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n'sfea652f6580ff086': `Diese Website verfügt über App-Funktionalität.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Abre el menú de tu navegador`,\n's182ab2d6c997515f': `Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.`,\n's1b9047d53d9f9d22': `2) Presionar Compartir en la barra de direcciones`,\n's2d90afa5dcca2c0e': `3) Desplázate hacia abajo hasta \"Añadir a pantalla de inicio\"`,\n's37a9e8aec5713460': `Más`,\n's4593f304dac8848c': `2) Toca \"Añadir a pantalla de inicio\"`,\n's54cfbb14f46396d4': `1) Abre en tu navegador principal`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Añadir al Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Presionar Añadir al Dock`,\n'sba52286c21552a4e': `Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.`,\n'sc79fd7641eb9a975': `Esconder instrucciones`,\n'scdaf4bbff76674c8': `Añadir a pantalla de inicio`,\n'se740f75b95a51807': `Añádelo a tu Dock para una experiencia amplia y acceso fácil.`,\n'sfea652f6580ff086': `Este sitio tiene funcionalidad de aplicación.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Open je browsermenu`,\n's182ab2d6c997515f': `Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.`,\n's1b9047d53d9f9d22': `2) Druk op delen in de navigatiebalk`,\n's2d90afa5dcca2c0e': `3) Scrol naar beneden naar \"Toevoegen aan startscherm\"`,\n's37a9e8aec5713460': `Meer`,\n's4593f304dac8848c': `2) Tik op \"Toevoegen aan startscherm\"`,\n's54cfbb14f46396d4': `1) Open in je hoofdprogramma`,\n's6196153c4b0c1ea0': `Installeren`,\n's922329d6f6213590': `Toevoegen aan Dock`,\n'sa5ef80b4bb9b39f8': `Minder`,\n'sa7551383d1897fcc': `2) Druk op Toevoegen aan Dock`,\n'sba52286c21552a4e': `Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.`,\n'sc79fd7641eb9a975': `Instructie verbergen`,\n'scdaf4bbff76674c8': `Toevoegen aan het startscherm`,\n'se740f75b95a51807': `Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.`,\n'sfea652f6580ff086': `Deze site heeft app-functionaliteit.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Ανοίξτε το μενού του περιηγητή σας`,\n's182ab2d6c997515f': `Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n's1b9047d53d9f9d22': `2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης`,\n's2d90afa5dcca2c0e': `3) Κάντε κύλιση προς τα κάτω στο \"Προσθήκη στην οθόνη Αφετηρίας\"`,\n's37a9e8aec5713460': `Περισσότερα`,\n's4593f304dac8848c': `2) Πατήστε \"Προσθήκη στην οθόνη Αφετηρίας\"`,\n's54cfbb14f46396d4': `1) Ανοίξτε στον κύριο περιηγητή σας`,\n's6196153c4b0c1ea0': `Εγκατάσταση`,\n's922329d6f6213590': `Προσθήκη στην Πρόσβαση`,\n'sa5ef80b4bb9b39f8': `Λιγότερα`,\n'sa7551383d1897fcc': `2) Πατήστε Προσθήκη στην Πρόσβαση`,\n'sba52286c21552a4e': `Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sc79fd7641eb9a975': `Απόκρυψη Οδηγιών`,\n'scdaf4bbff76674c8': `Προσθήκη στην Οθόνη Αφετηρίας`,\n'se740f75b95a51807': `Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sfea652f6580ff086': `Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Ouvrez le menu de votre navigateur`,\n's182ab2d6c997515f': `Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.`,\n's1b9047d53d9f9d22': `2) Appuyez sur Partager dans la barre de navigation`,\n's2d90afa5dcca2c0e': `3) Faites défiler vers le bas jusqu'à \"Ajouter à l'écran d'accueil\"`,\n's37a9e8aec5713460': `Plus`,\n's4593f304dac8848c': `2) Touchez \"Ajouter à l'écran d'accueil\"`,\n's54cfbb14f46396d4': `1) Ouvrir dans votre navigateur principal`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Ajouter au Dock`,\n'sa5ef80b4bb9b39f8': `Moins`,\n'sa7551383d1897fcc': `2) Appuyez sur Ajouter au Dock`,\n'sba52286c21552a4e': `Installez-le sur votre appareil pour une expérience complète et un accès facile.`,\n'sc79fd7641eb9a975': `Masquer les instructions`,\n'scdaf4bbff76674c8': `Ajouter à l'écran d'accueil`,\n'se740f75b95a51807': `Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.`,\n'sfea652f6580ff086': `Ce site possède des fonctionnalités d'application.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Отворите мени вашег прегледача`,\n's182ab2d6c997515f': `Додајте га на Home Screen за широке могућности и лак приступ.`,\n's1b9047d53d9f9d22': `2) Притисните Share у навигационој траци`,\n's2d90afa5dcca2c0e': `3) Померите се надоле до \"Add to Home Screen\"`,\n's37a9e8aec5713460': `Више`,\n's4593f304dac8848c': `2) Додирните \"Add to Home Screen\"`,\n's54cfbb14f46396d4': `1) Отворите у вашем главном прегледачу`,\n's6196153c4b0c1ea0': `Инсталирај`,\n'sa5ef80b4bb9b39f8': `Мање`,\n'sa7551383d1897fcc': `3) Притисните Add to Dock`,\n'sba52286c21552a4e': `Инсталирајте га на вашем уређају за широке могућности и лак приступ.`,\n'sc79fd7641eb9a975': `Сакриј упутство`,\n'se740f75b95a51807': `Додајте га у вашу Dock за широке могућности и лак приступ.`,\n'sfea652f6580ff086': `Овај сајт има функционалност апликације.`,\n's922329d6f6213590': `Add to Dock`,\n'scdaf4bbff76674c8': `Add to Home Screen`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Otwórz menu przeglądarki`,\n's182ab2d6c997515f': `Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n's1b9047d53d9f9d22': `2) Wybierz \"Udostępnij\"`,\n's2d90afa5dcca2c0e': `3) Przewiń w dół do opcji \"Dodaj do Ekranu Głównego\"`,\n's37a9e8aec5713460': `Więcej`,\n's4593f304dac8848c': `2) Naciśnij \"Dodaj do Ekranu Głównego\"`,\n's54cfbb14f46396d4': `1) Otwórz w swojej głównej przeglądarce`,\n's6196153c4b0c1ea0': `Zainstaluj`,\n's922329d6f6213590': `Dodaj do Docka`,\n'sa5ef80b4bb9b39f8': `Mniej`,\n'sa7551383d1897fcc': `2) Wybierz \"Dodaj do Docka\"`,\n'sba52286c21552a4e': `Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sc79fd7641eb9a975': `Ukryj instrukcję`,\n'scdaf4bbff76674c8': `Dodaj do Ekranu Głównego`,\n'se740f75b95a51807': `Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sfea652f6580ff086': `Ta strona posiada funkcje aplikacji.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Відкрити меню браузера`,\n's182ab2d6c997515f': `Додайте на Домашній екран для зручного доступу та ширших можливостей.`,\n's1b9047d53d9f9d22': `2) Натиснути «Поділитися»`,\n's2d90afa5dcca2c0e': `3) Прокрутіть вниз до «На Початковий экран»`,\n's37a9e8aec5713460': `Детальніше`,\n's4593f304dac8848c': `2) Натиснути «На Початковий экран»`,\n's54cfbb14f46396d4': `1) Відкрити у вашому основному браузері`,\n's6196153c4b0c1ea0': `Встановити`,\n's922329d6f6213590': `Додати на Dock`,\n'sa5ef80b4bb9b39f8': `Згорнути`,\n'sa7551383d1897fcc': `2) Натиснути «Додати на Dock»`,\n'sba52286c21552a4e': `Встановіть на ваш пристрій для зручного доступу та ширших можливостей.`,\n'sc79fd7641eb9a975': `Сховати Інструкцію`,\n'scdaf4bbff76674c8': `На Початковий экран`,\n'se740f75b95a51807': `Додайте на панель Dock для зручного доступу та ширших можливостей.`,\n'sfea652f6580ff086': `Цей сайт має функції додатку.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 打開您的瀏覽器菜單`,\n's182ab2d6c997515f': `將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。`,\n's1b9047d53d9f9d22': `2) 點擊列表上的分享按鈕`,\n's2d90afa5dcca2c0e': `3) 向下滾動到「添加到主屏幕」`,\n's37a9e8aec5713460': `詳細資訊`,\n's4593f304dac8848c': `2) 點擊「添加到主屏幕」`,\n's54cfbb14f46396d4': `1) 在您的主要瀏覽器中打開`,\n's6196153c4b0c1ea0': `安裝`,\n's922329d6f6213590': `添加到Dock欄`,\n'sa5ef80b4bb9b39f8': `簡短資訊`,\n'sa7551383d1897fcc': `2) 點選添加到Dock欄`,\n'sba52286c21552a4e': `在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。`,\n'sc79fd7641eb9a975': `隱藏安裝流程`,\n'scdaf4bbff76674c8': `將App加入主畫面`,\n'se740f75b95a51807': `將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。`,\n'sfea652f6580ff086': `此網站具有應用程式功能。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 打开浏览器菜单`,\n's182ab2d6c997515f': `将其添加到主屏幕,以享受更丰富的体验并便于访问。`,\n's1b9047d53d9f9d22': `2) 点击导航栏中的“分享”按钮`,\n's2d90afa5dcca2c0e': `3) 向下滚动至“添加到主屏幕”`,\n's37a9e8aec5713460': `更多`,\n's4593f304dac8848c': `2) 轻触“添加到主屏幕”`,\n's54cfbb14f46396d4': `1) 在您的主浏览器中打开`,\n's6196153c4b0c1ea0': `安装`,\n's922329d6f6213590': `添加到程序坞`,\n'sa5ef80b4bb9b39f8': `收起`,\n'sa7551383d1897fcc': `2) 点击“添加到程序坞”`,\n'sba52286c21552a4e': `在您的设备上安装,以享受更丰富的体验并便于访问。`,\n'sc79fd7641eb9a975': `隐藏安装步骤`,\n'scdaf4bbff76674c8': `添加到主屏幕`,\n'se740f75b95a51807': `将其添加到您的程序坞,以享受更全面的体验并便于访问。`,\n'sfea652f6580ff086': `此网站具备 App 功能特性。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Apri il menu del tuo browser`,\n's182ab2d6c997515f': `Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.`,\n's1b9047d53d9f9d22': `2) Premi Condividi nella barra di navigazione`,\n's2d90afa5dcca2c0e': `3) Scorri verso il basso fino a \"Aggiungi alla schermata principale\"`,\n's37a9e8aec5713460': `Più`,\n's4593f304dac8848c': `2) Tocca \"Aggiungi alla schermata principale\"`,\n's54cfbb14f46396d4': `1) Apri nel tuo browser principale`,\n's6196153c4b0c1ea0': `Installa`,\n's922329d6f6213590': `Aggiungi al Dock`,\n'sa5ef80b4bb9b39f8': `Meno`,\n'sa7551383d1897fcc': `2) Premi Aggiungi al Dock`,\n'sba52286c21552a4e': `Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.`,\n'sc79fd7641eb9a975': `Nascondi istruzioni`,\n'scdaf4bbff76674c8': `Aggiungi alla schermata principale`,\n'se740f75b95a51807': `Aggiungilo al Dock per un'esperienza più completa e un accesso facile.`,\n'sfea652f6580ff086': `Questo sito ha funzionalità di app.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Otevřete nabídku prohlížeče`,\n's182ab2d6c997515f': `Přidejte jej na plochu pro rozšířené využití a snadný přístup.`,\n's1b9047d53d9f9d22': `2) Stiskněte tlačítko Sdílet na navigačním panelu`,\n's2d90afa5dcca2c0e': `3) Projděte dolů k \"Přidat na plochu\"`,\n's37a9e8aec5713460': `Více`,\n's4593f304dac8848c': `2) Klepněte na \"Přidat na plochu\"`,\n's54cfbb14f46396d4': `1) Otevřete v hlavním prohlížeči`,\n's6196153c4b0c1ea0': `Nainstalovat`,\n's922329d6f6213590': `Přidat do Docku`,\n'sa5ef80b4bb9b39f8': `Méně`,\n'sa7551383d1897fcc': `2) Stiskněte Přidat do Docku`,\n'sba52286c21552a4e': `Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.`,\n'sc79fd7641eb9a975': `Skrýt instrukce`,\n'scdaf4bbff76674c8': `Přidat na plochu`,\n'se740f75b95a51807': `Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.`,\n'sfea652f6580ff086': `Tento web má funkce aplikace.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Åpne menyen i nettleseren din`,\n's182ab2d6c997515f': `Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.`,\n's1b9047d53d9f9d22': `2) Trykk på Del-knappen i navigasjonslinjen`,\n's2d90afa5dcca2c0e': `3) Rull ned til «Legg til på Hjem-skjerm»`,\n's37a9e8aec5713460': `Mer`,\n's4593f304dac8848c': `2) Trykk på \"Legg til på Hjem-skjerm\"`,\n's54cfbb14f46396d4': `1) Åpne i hovednettleseren din`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Legg til i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Velg Legg til i Dock`,\n'sba52286c21552a4e': `Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sc79fd7641eb9a975': `Skjul instruksjoner`,\n'scdaf4bbff76674c8': `Legg til på Hjem-skjerm`,\n'se740f75b95a51807': `Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sfea652f6580ff086': `Denne siden har app-funksjonalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Abra o menu do seu navegador`,\n's182ab2d6c997515f': `Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.`,\n's1b9047d53d9f9d22': `2) Pressione Compartilhar na barra de endereço`,\n's2d90afa5dcca2c0e': `3) Role para baixo até \"Adicionar à Tela de Início\"`,\n's37a9e8aec5713460': `Mais`,\n's4593f304dac8848c': `2) Toque em \"Adicionar à Tela de Início\"`,\n's54cfbb14f46396d4': `1) Abra no seu navegador principal`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Adicionar ao Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Pressione Adicionar ao Dock`,\n'sba52286c21552a4e': `Instale no dispositivo para uma melhor experiência e mais fácil acesso.`,\n'sc79fd7641eb9a975': `Ocultar Instruções`,\n'scdaf4bbff76674c8': `Adicionar à Tela de Início`,\n'se740f75b95a51807': `Adicione ao Dock para uma melhor experiência e mais fácil acesso.`,\n'sfea652f6580ff086': `Este site possui funcionalidade de aplicativo.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) ブラウザメニューを開く`,\n's182ab2d6c997515f': `ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。`,\n's1b9047d53d9f9d22': `2) ナビゲーションバーで共有を押す`,\n's2d90afa5dcca2c0e': `3) 「ホーム画面に追加」までスクロールする`,\n's37a9e8aec5713460': `展開`,\n's4593f304dac8848c': `2) 「ホーム画面に追加」をタップする`,\n's54cfbb14f46396d4': `1) メインブラウザで開く`,\n's6196153c4b0c1ea0': `インストール`,\n's922329d6f6213590': `Dockに追加`,\n'sa5ef80b4bb9b39f8': `折りたたむ`,\n'sa7551383d1897fcc': `2) 「Dockに追加」を押す`,\n'sba52286c21552a4e': `デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。`,\n'sc79fd7641eb9a975': `説明を非表示`,\n'scdaf4bbff76674c8': `ホーム画面に追加`,\n'se740f75b95a51807': `ドックに追加して、幅広い体験と簡単なアクセスを実現してください。`,\n'sfea652f6580ff086': `このサイトはアプリ機能があります。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Öppna din webbläsares meny`,\n's182ab2d6c997515f': `Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.`,\n's1b9047d53d9f9d22': `2) Tryck på Dela-knappen i verktygsfältet`,\n's2d90afa5dcca2c0e': `3) Scrolla ner till \"Lägg till på hemskärmen\"`,\n's37a9e8aec5713460': `Mer`,\n's4593f304dac8848c': `2) Tryck på \"Lägg till på hemskärmen\"`,\n's54cfbb14f46396d4': `1) Öppna i din huvudsakliga webbläsare`,\n's6196153c4b0c1ea0': `Installera`,\n's922329d6f6213590': `Lägg till i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Välj Lägg till i Dock`,\n'sba52286c21552a4e': `Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sc79fd7641eb9a975': `Göm instruktioner`,\n'scdaf4bbff76674c8': `Lägg till på hemskärmen`,\n'se740f75b95a51807': `Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sfea652f6580ff086': `Denna webbsajt har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 브라우저 메뉴 열기`,\n's182ab2d6c997515f': `더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.`,\n's1b9047d53d9f9d22': `2) 내비게이션 바에서 공유 버튼 누르기`,\n's2d90afa5dcca2c0e': `3) \"홈 화면에 추가\"로 스크롤하기`,\n's37a9e8aec5713460': `더보기`,\n's4593f304dac8848c': `2) \"홈 화면에 추가\" 탭하기`,\n's54cfbb14f46396d4': `1) 주 브라우저에서 열기`,\n's6196153c4b0c1ea0': `설치`,\n's922329d6f6213590': `Dock에 추가`,\n'sa5ef80b4bb9b39f8': `닫기`,\n'sa7551383d1897fcc': `2) Dock에 추가 버튼 누르기`,\n'sba52286c21552a4e': `더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.`,\n'sc79fd7641eb9a975': `안내 숨기기`,\n'scdaf4bbff76674c8': `홈 화면에 추가`,\n'se740f75b95a51807': `더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.`,\n'sfea652f6580ff086': `이 사이트는 앱 기능을 가지고 있습니다.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) បើកម៉ឺនុយកម្មវិធីរុករករបស់អ្នក`,\n's182ab2d6c997515f': `បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n's1b9047d53d9f9d22': `2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ`,\n's2d90afa5dcca2c0e': `3) អូសចុះទៅកាន់ \"បន្ថែមទៅផ្ទាំងអេក្រង់ដើម\"`,\n's37a9e8aec5713460': `បង្ហាញបន្ថែម`,\n's4593f304dac8848c': `2) ចុចលើ \"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម\"`,\n's54cfbb14f46396d4': `1) បើកនៅក្នុងកម្មវិធីរុករកសំខាន់របស់អ្នក`,\n's6196153c4b0c1ea0': `តំឡើង`,\n's922329d6f6213590': `បន្ថែមទៅកាន់ Dock`,\n'sa5ef80b4bb9b39f8': `បង្ហាញតិច`,\n'sa7551383d1897fcc': `2) ចុចលើ បន្ថែមទៅកាន់ Dock`,\n'sba52286c21552a4e': `តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sc79fd7641eb9a975': `បិទការណែនាំ`,\n'scdaf4bbff76674c8': `បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n'se740f75b95a51807': `បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sfea652f6580ff086': `គេហទំព័រនេះមានមុខងារជាកម្មវិធី។`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `۱) مرورگر خود را باز کنید`,\n's182ab2d6c997515f': `برای تجربه گسترده و دسترسی آسان آن را به صفحه اصلی خود اضافه کنید.`,\n's1b9047d53d9f9d22': `۱)در نوار پایین دکمه (Share) را بزنید`,\n's2d90afa5dcca2c0e': `۳) به پایین اسکرول کنید تا به \"Add to Home Screen\" برسید`,\n's37a9e8aec5713460': `بیشتر`,\n's4593f304dac8848c': `۲) روی \"Add to Home screen\" ضربه بزنید`,\n's54cfbb14f46396d4': `۱) در مرورگر اصلی خود باز کنید`,\n's6196153c4b0c1ea0': `نصب`,\n's922329d6f6213590': `افزودن به (Dock)`,\n'sa5ef80b4bb9b39f8': `کمتر`,\n'sa7551383d1897fcc': `۲) (Add to Dock) را انتخاب کنید `,\n'sba52286c21552a4e': `برای تجربه گسترده و دسترسی آسان آن را بر روی دستگاه خود نصب کنید.`,\n'sc79fd7641eb9a975': ` مخفی کردن مراحل`,\n'scdaf4bbff76674c8': `افزودن به (Home Screen)`,\n'se740f75b95a51807': `برای تجربه گسترده و دسترسی آسان آن را به Dock خود اضافه کنید.`,\n'sfea652f6580ff086': ` این سایت دارای قابلیت اپلیکیشن است. `,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Åbn din browsermenu`,\n's182ab2d6c997515f': `Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.`,\n's1b9047d53d9f9d22': `2) Tryk på Del-knappen i navigationslinjen`,\n's2d90afa5dcca2c0e': `3) Rul ned til \"Tilføj til hjemmeskærm\"`,\n's37a9e8aec5713460': `Mere`,\n's4593f304dac8848c': `2) Tryk på \"Tilføj til hjemmeskærm\"`,\n's54cfbb14f46396d4': `1) Åbn i din primære browser`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Tilføj til Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Vælg Tilføj til Dock`,\n'sba52286c21552a4e': `Installer den på din enhed for en bedre oplevelse og nem adgang.`,\n'sc79fd7641eb9a975': `Skjul instruktion`,\n'scdaf4bbff76674c8': `Tilføj til hjemmeskærm`,\n'se740f75b95a51807': `Tilføj den til din Dock for en bedre oplevelse og nem adgang.`,\n'sfea652f6580ff086': `Denne side har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Mở menu trình duyệt của bạn`,\n's182ab2d6c997515f': `Thêm nó vào màn hình chính của bạn để có trải nghiệm phong phú hơn và truy cập dễ dàng hơn.`,\n's1b9047d53d9f9d22': `2) Nhấp vào nút \"Chia sẻ\" trên thanh điều hướng`,\n's2d90afa5dcca2c0e': `3) Kéo đến mục \"Thêm vào Màn hình chính\"`,\n's37a9e8aec5713460': `Thêm`,\n's4593f304dac8848c': `2) Nhấn vào \"Thêm vào Màn hình chính\"`,\n's54cfbb14f46396d4': `1) Mở trình duyệt chính của bạn`,\n's6196153c4b0c1ea0': `Cài đặt`,\n's922329d6f6213590': `Thêm vào Dock`,\n'sa5ef80b4bb9b39f8': `Thu gọn`,\n'sa7551383d1897fcc': `2) Nhấp vào \"Thêm vào Dock\"`,\n'sba52286c21552a4e': `Cài đặt trên thiết bị của bạn để có trải nghiệm phong phú hơn và truy cập dễ dàng.`,\n'sc79fd7641eb9a975': `Ẩn các bước cài đặt`,\n'scdaf4bbff76674c8': `Thêm vào màn hình chính`,\n'se740f75b95a51807': `Thêm nó vào Dock của bạn để có trải nghiệm toàn diện hơn và truy cập dễ dàng hơn.`,\n'sfea652f6580ff086': `Trang web này có cả chức năng đặc trưng ứng dụng.`,\n };\n ","import { configureLocalization } from '@lit/localize';\r\nimport {\r\n sourceLocale,\r\n targetLocales,\r\n} from './locale-codes';\r\n\r\nimport * as ru from './locales/ru';\r\nimport * as tr from './locales/tr';\r\nimport * as de from \"./locales/de\";\r\nimport * as es from \"./locales/es\";\r\nimport * as nl from \"./locales/nl\";\r\nimport * as el from \"./locales/el\";\r\nimport * as fr from \"./locales/fr\";\r\nimport * as sr from \"./locales/sr\";\r\nimport * as pl from \"./locales/pl\";\r\nimport * as uk from \"./locales/uk\";\r\nimport * as zhHK from \"./locales/zh-HK\";\r\nimport * as zhCN from \"./locales/zh-CN\";\r\nimport * as it from \"./locales/it\";\r\nimport * as cs from \"./locales/cs\";\r\nimport * as no from \"./locales/no\";\r\nimport * as pt from \"./locales/pt\";\r\nimport * as ja from \"./locales/ja\";\r\nimport * as sv from \"./locales/sv\";\r\nimport * as ko from \"./locales/ko\";\r\nimport * as km from \"./locales/km\";\r\nimport * as fa from \"./locales/fa\";\r\nimport * as da from \"./locales/da\";\r\nimport * as vi from \"./locales/vi\";\r\n\r\nconst localizedTemplates = new Map([\r\n ['ru', ru],\r\n ['tr', tr],\r\n ['de', de],\r\n ['es', es],\r\n ['nl', nl],\r\n ['el', el],\r\n ['fr', fr],\r\n ['sr', sr],\r\n ['pl', pl],\r\n ['uk', uk],\r\n ['zh-HK', zhHK],\r\n ['zh-CN', zhCN],\r\n ['it', it],\r\n ['cs', cs],\r\n ['no', no], // + nb\r\n ['pt', pt],\r\n ['ja', ja],\r\n ['sv', sv],\r\n ['ko', ko],\r\n ['km', km],\r\n ['fa', fa],\r\n ['da', da],\r\n ['vi', vi],\r\n])\r\n\r\nexport const { getLocale, setLocale } = configureLocalization({\r\n sourceLocale,\r\n targetLocales,\r\n // @ts-ignore\r\n loadLocale: async (lang: string) => localizedTemplates.get(lang)\r\n});\r\n\r\nexport const changeLocale = async (lang: string) => {\r\n // Norwegian Bokmål is same as Norwegian\r\n switch (lang.slice(0, 2)) {\r\n case 'nb':\r\n lang = 'no';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // Fallback to simplified Chinese\r\n switch (lang) {\r\n case 'zh':\r\n case 'zh-TW':\r\n lang = 'zh-CN';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n try {\r\n if (localizedTemplates.get(lang))\r\n await setLocale(lang);\r\n else\r\n await setLocale(lang.slice(0, 2));\r\n }\r\n catch {\r\n console.warn(`pwa-install: translation error - unsupported locale: ${lang}`);\r\n }\r\n};\r\n\r\nexport const isRTL = () => {\r\n let locale = getLocale();\r\n return ['ar', 'he', 'fa', 'ur'].includes(getLocale());\r\n}\r\n","import { ImageResource } from 'web-app-manifest';\r\n\r\nexport interface IRelatedApp {\r\n id: string,\r\n platform: string,\r\n url: string\r\n}\r\n\r\nexport interface IWindow extends Window {\r\n defferedPromptEvent: BeforeInstallPromptEvent | null;\r\n BeforeInstallPromptEvent: BeforeInstallPromptEvent;\r\n}\r\n\r\ntype Booleanish = 'true' | 'false';\r\n\r\nexport interface PWAInstallAttributes {\r\n ['manual-apple']?: Booleanish;\r\n ['manual-chrome']?: Booleanish;\r\n ['disable-chrome']?: Booleanish;\r\n ['install-description']?: string;\r\n ['disable-install-description']?: Booleanish;\r\n ['manifest-url']?: string;\r\n name?: string;\r\n description?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ManifestScreenshot extends ImageResource {\r\n label?: string;\r\n platform?: string;\r\n form_factor?: \"wide\" | \"narrow\";\r\n}\r\n\r\nexport class Manifest {\r\n constructor() {\r\n this.icons = [{ src: '' }];\r\n this.screenshots = undefined;\r\n this.short_name = 'PWA';\r\n this.name = 'Progressive web application';\r\n this.description = 'Progressive web application';\r\n }\r\n short_name: string;\r\n icons: ImageResource[];\r\n screenshots?: ManifestScreenshot[];\r\n name: string;\r\n description: string;\r\n}\r\n","import {css} from 'lit'; export default css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-inline-start:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-inline-end:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px;margin:0 auto}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-inline-start:7px}.gallery.apple_mobile .btn.prev svg{margin-inline-start:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`;\n ","import { WebAppManifest } from 'web-app-manifest';\r\nimport { IRelatedApp, Manifest } from './types/types';\r\n\r\nconst _eventDispatcher = (_element: Element, name: string, message: string) => {\r\n const event = new CustomEvent(name, {\r\n detail: {\r\n message\r\n }\r\n });\r\n _element.dispatchEvent(event);\r\n}\r\nexport default class Utils {\r\n static isAppleMobile(): boolean {\r\n\t\tif (\r\n (\r\n ['iPhone', 'iPad', 'iPod'].includes(navigator.platform) ||\r\n (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2)\r\n )\r\n && ('serviceWorker' in navigator)\r\n )\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static isAppleDesktop(): boolean {\r\n // check if it's a mac\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n if (navigator.maxTouchPoints || !userAgent.match(/macintosh/))\r\n return false;\r\n // check safari version >= 17\r\n const version = /version\\/(\\d{2})\\./.exec(userAgent)\r\n if (!version || !version[1] || !(parseInt(version[1]) >= 17))\r\n return false;\r\n // hacky way to detect Sonoma\r\n const audioCheck = document.createElement('audio').canPlayType('audio/wav; codecs=\"1\"') ? true : false;\r\n const webGLCheck = new OffscreenCanvas(1, 1).getContext('webgl') ? true : false;\r\n\r\n return audioCheck && webGLCheck;\r\n }\r\n\r\n static isAndroid(): boolean {\r\n if (navigator.userAgent.toLowerCase().match(/android/))\r\n return true;\r\n return false;\r\n }\r\n\r\n static isAndroidFallback(): boolean {\r\n if (this.isAndroid() && !('BeforeInstallPromptEvent' in window))\r\n return true;\r\n return false;\r\n }\r\n\r\n static deviceFormFactor(): 'narrow' | 'wide' {\r\n return window.matchMedia('(orientation: portrait)').matches? 'narrow' : 'wide';\r\n }\r\n \r\n static isStandalone() {\r\n\t\tif (window.matchMedia('(display-mode: standalone)').matches || ('standalone' in navigator && (navigator as any).standalone === true))\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static async getInstalledRelatedApps(): Promise {\r\n if ('getInstalledRelatedApps' in navigator)\r\n try{\r\n return await (navigator as any).getInstalledRelatedApps().then((relatedApps: IRelatedApp[]) => {\r\n return relatedApps;\r\n });\r\n } catch (e) {}\r\n \r\n return [];\r\n }\r\n \r\n static async isRelatedAppsInstalled(): Promise {\r\n const _relatedApps = await this.getInstalledRelatedApps();\r\n return _relatedApps.length? true : false;\r\n }\r\n\r\n static setStorageFlag(name: string, value:boolean, persistent: boolean = false) {\r\n try {\r\n if (persistent)\r\n localStorage.setItem(name, value.toString());\r\n else\r\n sessionStorage.setItem(name, value.toString());\r\n } catch (e) {}\r\n }\r\n static getStorageFlag(name: string): boolean {\r\n try {\r\n return sessionStorage.getItem(name) === 'true' || localStorage.getItem(name) === 'true';\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n static eventInstalledSuccess(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-success-event', 'App install success (Chromium/Android only)');\r\n }\r\n static eventInstalledFail(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-fail-event', 'App install failed (Chromium/Android only)');\r\n }\r\n static eventUserChoiceResult(_element: Element, message: string) {\r\n _eventDispatcher(_element, 'pwa-user-choice-result-event', message);\r\n }\r\n static eventInstallAvailable(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-available-event', 'App install available');\r\n }\r\n static eventInstallHowTo(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-how-to-event', 'App install instruction showed');\r\n }\r\n static eventGallery(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-gallery-event', 'App install gallery showed');\r\n }\r\n\r\n static normalizeManifestAssetUrls(manifest: WebAppManifest, manifestUrl: string) {\r\n const normalizedManifestUrl = new URL(manifestUrl, document.location.href);\r\n [...manifest.icons || [], ...manifest.screenshots || []].forEach(asset => {\r\n asset.src = new URL(asset.src, normalizedManifestUrl).href;\r\n })\r\n }\r\n\r\n static async fetchAndProcessManifest(manifestUrl: string, icon: string, name: string, description: string): Promise<{_manifest: WebAppManifest, icon: string, name: string, description: string}> {\r\n let _manifest: WebAppManifest = new Manifest();\r\n let _json: WebAppManifest | null = null;\r\n try{\r\n\t\t\tconst _response = await fetch(manifestUrl);\r\n\t\t\t_json = await _response.json() as WebAppManifest;\r\n\t\t\tif (!_response.ok || !_json || !Object.keys(_json))\r\n\t\t\t\tthrow new Error('Manifest not found');\r\n\t\t\tthis.normalizeManifestAssetUrls(_json, manifestUrl);\r\n } \r\n catch(e) {} \r\n\r\n icon = icon || (_json?.icons?.length ? _json?.icons![0].src : _manifest.icons?.[0].src) || '';\r\n name = name || (_json? _json['short_name']: _manifest['short_name']) || '';\r\n description = description || _json?.description || _manifest.description || '';\r\n\t\t_manifest = _json || _manifest;\r\n \r\n return {\r\n _manifest,\r\n icon,\r\n name,\r\n description\r\n }\r\n }\r\n}","import { html } from 'lit';\r\nimport Utils from '../utils';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nconst template = (screenshots: ManifestScreenshot[], theme: string, scrollToNextPage: any, scrollToPrevPage: any) => {\r\n\r\n return html`\r\n ${screenshots? html`\r\n
\r\n
\r\n
\r\n ${screenshots.filter(screenshot => !screenshot.form_factor || screenshot.form_factor === Utils.deviceFormFactor()).map(screenshot => html`${screenshot.label || \"\"}`)}\r\n
\r\n
\r\n \r\n ${theme != 'default'?\r\n html``\r\n :\r\n html``\r\n }\r\n \r\n \r\n ${theme != 'default'?\r\n html`\r\n \r\n `\r\n :\r\n html`\r\n \r\n \r\n \r\n `\r\n }\r\n \r\n
`\r\n : ''}`;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nimport styles from './styles-gallery.scss';\r\nimport template from './template-gallery';\r\n\r\n@customElement('pwa-gallery')\r\nexport default class PWAGalleryElement extends LitElement {\r\n\t@property({ type: Array }) screenshots: ManifestScreenshot[] = [];\r\n\t@property() theme: 'default' | 'apple_desktop' | 'apple_mobile' = 'default';\r\n\t@property({ type: Boolean }) rtl: boolean = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tprivate getScrollElements = () => {\r\n\t\tconst gallery = this.shadowRoot?.querySelector('#paginated_gallery') as HTMLElement | null;\r\n\t\tif (!gallery) return;\r\n\t\t\r\n\t\tconst galleryScroller = gallery.querySelector('.gallery_scroller') as HTMLElement | null;\r\n\t\tif (!galleryScroller) return;\r\n\t\r\n\t\tconst galleryItems = Array.from(galleryScroller.querySelectorAll('img')) as HTMLElement[];\r\n\t\tif (galleryItems.length === 0) return;\r\n\t\r\n\t\treturn {\r\n\t\t\tscroller: galleryScroller,\r\n\t\t\titems: galleryItems\r\n\t\t};\r\n\t};\r\n\t\r\n\tprivate findCurrentItem = (scroller: HTMLElement, items: HTMLElement[]): HTMLElement | null => {\r\n\t\tconst scrollLeft = scroller.scrollLeft * (this.rtl? -1 : 1);\r\n\t \t// Find the item closest to the center of the viewport.\r\n\t\treturn items.find((item) => (item.offsetWidth + item.offsetLeft * (this.rtl? -1 : 1)) >= scrollLeft + (item.offsetWidth / 2.5)) || null;\r\n\t};\r\n\t\r\n\tprivate scrollToPage = (direction: 'next' | 'prev') => {\r\n\t\tconst scrollData = this.getScrollElements();\r\n\t\tif (!scrollData) return;\r\n\t\r\n\t\tconst { scroller, items } = scrollData;\r\n\t\tconst currentItem = this.findCurrentItem(scroller, items);\r\n\t\tif (!currentItem) return;\r\n\t\r\n\t\tconst currentIndex = items.indexOf(currentItem);\r\n\t\tconst offset = (direction === 'next' ? 1 : -1) * (this.rtl? -1 : 1) ;\r\n\t\tconst targetIndex = currentIndex + offset;\r\n\t\t\r\n\t\tif (targetIndex >= 0 && targetIndex < items.length) {\r\n\t\t\titems[targetIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\r\n\t\t}\r\n\t};\r\n\t\r\n\tpublic scrollToNextPage = () => {\r\n\t\tthis.scrollToPage('next');\r\n\t};\r\n\t\r\n\tpublic scrollToPrevPage = () => {\r\n\t\tthis.scrollToPage('prev');\r\n\t};\r\n\r\n\r\n\tprivate _init = () => {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tconst _tools = this.getScrollElements();\r\n\t\tif (_tools)\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\t_tools.scroller.scrollTo({\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t300\r\n\t\t\t)\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\tthis._init();\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(\r\n this.screenshots,\r\n\t\t\tthis.theme,\r\n\t\t\tthis.scrollToNextPage,\r\n\t\t\tthis.scrollToPrevPage\r\n )}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`.dialog-body .icon{display:flex;align-items:flex-start}.dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}.dialog-body .about{display:grid;grid-template-rows:30px auto}.dialog-body .about .hostname,.dialog-body .about .name{padding:0 5px;overflow:hidden}.dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}.dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}.dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:start;word-break:break-all;white-space:nowrap}.dialog-body .about+hr{margin-top:10px}.dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:start}.dialog-body .app-description{font-size:13px;margin-bottom:10px}.dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}.dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}.dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}.dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.dialog-body .install-description{font-size:14px}.dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}.dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}.dialog-body .action-buttons .primary{grid-column-start:2}.dialog-body .material-button{--text-color-primary:#eee;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#eee;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,\"Segoe UI\",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}.dialog-body .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}.dialog-body .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}.dialog-body .material-button.secondary::after,.dialog-body .material-button.secondary::before{background-color:var(--background-color-primary)}.dialog-body .material-button.secondary:active,.dialog-body .material-button.secondary:hover{box-shadow:none}.dialog-body .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-inline-end:0;margin-inline-start:auto;padding:0;border-radius:50%}.dialog-body .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}.dialog-body .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}.dialog-body .material-button.secondary.close::before{border-radius:50%}.dialog-body .material-button::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}.dialog-body .material-button::after{content:\"\";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}.dialog-body .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.dialog-body .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}.dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}@media(prefers-color-scheme:dark){.dialog-body .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(hover:none)and (pointer:coarse){.dialog-body .description::-webkit-scrollbar{display:none}}`;\n ","import {css} from 'lit'; export default css`:host{grid-template-columns:1fr}:host .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}:host .touch-header:active{cursor:grabbing}:host .touch-header::before{content:\"\";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}:host .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}:host .body-header .install{text-transform:capitalize;height:40px;min-width:50px;padding:0 23px;align-items:center;display:inline-flex;-webkit-tap-highlight-color:transparent;transition:min-width .2s,color .2s,background-color .2s,border-color .2s}:host .body-header .install .button-text,:host .body-header .install svg{margin:0 auto}:host .body-header .install .check-icon{display:none}:host .body-header .about{grid-template-rows:auto auto;grid-gap:6px}:host .body-header .about .name{padding:0;line-height:20px;font-size:16px}:host .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}:host .body-header .icon .icon-image{margin:0;width:45px;height:45px}:host .how-to-body{display:flex;flex-direction:column;gap:15px;max-height:0;overflow:hidden;padding:0 20px;opacity:0}:host .how-to-body .description-step{display:flex;gap:15px;margin-inline-start:2.5px;align-items:center}:host .how-to-body .description-step .svg-wrap{display:flex;align-items:center;width:40px;height:40px;background-color:var(--touch-header-color);border-radius:50%}:host .how-to-body .description-step .svg-wrap svg{fill:var(--text-color-normal);margin:0 auto}:host .how-to-body .description-step .svg-wrap.add-icon svg{padding-right:1px}:host .how-to .description,:host .how-to ::slotted(pwa-gallery){max-height:0;padding-top:0;padding-bottom:0;overflow:hidden;opacity:0}:host .how-to .how-to-body{max-height:600px;padding-top:18px;padding-bottom:18px;opacity:1}:host .how-to .install{min-width:40px;padding:0;background:rgba(0,0,0,0);color:var(--text-color-normal);box-shadow:none;border:1px solid}:host .how-to .install .check-icon{display:inline;fill:var(--text-color-normal)}:host .how-to .install .button-text{display:none}:host .description{padding:15px 20px;margin:0;-webkit-line-clamp:6;max-height:150px;opacity:1}:host ::slotted(pwa-gallery){display:block;max-height:600px;padding-bottom:15px;opacity:1;transition:max-height 1.5s,opacity .8s,padding 1.5s}:host .description,:host .how-to-body{transition:max-height .2s,opacity .15s,padding .2s}:host .material-button{border-radius:20px}`;\n ","import { html } from 'lit';\r\nimport { msg } from '@lit/localize';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\n\r\nconst fallbackClass = (isAndroidFallback: boolean = false, howToRequested: boolean = false) => {\r\n return {fallback: isAndroidFallback, 'how-to': howToRequested};\r\n}\r\n\r\nconst template = (name: string, description: string, icon: string, install: any, fallback?: boolean, howToRequested?: boolean) => {\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${location.hostname}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${msg('1) Open your browser menu')}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${msg('2) Tap \"Add to Home screen\"')}
\r\n
\r\n
\r\n ${description ? html `
${description}
`: ''}\r\n \r\n
\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\n\r\nimport stylesCommon from '../styles-common.scss'\r\nimport styles from './styles-bottom-sheet.scss';\r\n\r\n// import TouchDragListener from \"./touch-listener\";\r\n\r\ntype IProps = {\r\n name: string,\r\n description: string,\r\n icon: string\r\n}\r\n\r\nimport template from './template-bottom-sheet';\r\nimport Utils from '../../../utils';\r\n\r\n@customElement('pwa-bottom-sheet')\r\nexport default class PWABottomSheetElement extends LitElement {\r\n\tstatic get styles() {\r\n\t\treturn [stylesCommon, styles];\r\n\t}\r\n\r\n\t@property({type: Object}) props: IProps = {\r\n name: '',\r\n description: '',\r\n icon: ''\r\n };\r\n @property({type: Object}) install = {handleEvent: () => {}};\r\n\t@property() hideDialog = () => {};\r\n\t@property({type: Boolean}) disableClose = false;\r\n\r\n\t@property({type: Boolean}) fallback = false;\r\n\t@property({type: Boolean}) howToRequested = false;\r\n\t@property({type: Object}) toggleHowTo = {handleEvent: () => {}};\r\n\r\n\tprivate _callInstall = () => {\r\n\t\tif (this.fallback) {\r\n\t\t\tthis.toggleHowTo.handleEvent();\r\n\t\t\tsetTimeout(() => this.setupAppearence(true), 210);\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.install.handleEvent();\r\n\t}\r\n\r\n\tprivate _callHide = () => {\r\n\t\tthis.hideDialog();\r\n\t\tthis.setupAppearence();\r\n\t}\r\n\r\n\tprivate bindedElement: {\r\n\t\ttouchElement: HTMLElement,\r\n\t\tlistener: any }| null = null;\r\n\tprivate readonly _saveBodyStyle = document.body.style.overscrollBehaviorY;\r\n\tprivate dragMobileSheet = (element: HTMLElement | null | undefined, touchTargetElement: HTMLElement | undefined, infoElement: HTMLElement | undefined) => {\r\n\t\tif (!element || !touchTargetElement || !infoElement)\r\n\t\t\treturn null;\r\n\r\n\t\tlet dragOffset = 0;\r\n\t\tconst bounceOffset = 35;\r\n\t\t\r\n\t\tconst bottomSize = infoElement.offsetHeight + infoElement.offsetTop;\r\n\r\n\t\tconst getYCoord = (e: MouseEvent | TouchEvent): number => {\r\n\t\t\treturn (e as MouseEvent).clientY || ((e as TouchEvent).changedTouches && (e as TouchEvent).changedTouches.length? (e as TouchEvent).changedTouches[0].clientY : 0);\r\n\t\t}\r\n\r\n\t\tconst dragMouseDown = (e: MouseEvent | TouchEvent) => {\r\n\t\t\twindow.addEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.addEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.addEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.addEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tdragOffset = getYCoord(e) - touchTargetElement.getBoundingClientRect().top;\r\n\r\n\t\t\tdocument.body.style.overscrollBehaviorY = 'none';\r\n\t\t}\r\n\t\tconst dragMouseUp = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tdocument.body.style.overscrollBehaviorY = this._saveBodyStyle;\r\n\r\n\t\t\tif (!this.disableClose && getYCoord(e) >= window.innerHeight - 25) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight + 50, true);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (window.innerHeight - getYCoord(e) > element.clientHeight / 2.5) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - element.clientHeight);\r\n\t\t\t\t\r\n\t\t\t\ttry {\r\n\t\t\t\t\t!this.howToRequested && Utils.eventGallery((this.getRootNode() as ShadowRoot).host);\r\n\t\t\t\t} catch (e) {}\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - bottomSize - bounceOffset);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dragMouseMove = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tconst currentY = getYCoord(e);\r\n\r\n\t\t\tif (this.disableClose && window.innerHeight - currentY < 70) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (currentY <= (window.innerHeight - element.clientHeight + dragOffset)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`none`\r\n\t\t\t)\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"--translateY\",\r\n\t\t\t\t`translateY(${currentY - dragOffset}px)`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst closeDragElement = (e: MouseEvent | TouchEvent, toPoint?: number, hideDialog?: boolean) => {\r\n\t\t\twindow.removeEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.removeEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.removeEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.removeEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tif (window.innerWidth >= 768)\r\n\t\t\t\treturn\r\n\r\n\t\t\tif (!toPoint && getYCoord(e) >= window.innerHeight - bottomSize)\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(calc(100vh - ${bottomSize}px))`\r\n\t\t\t\t);\r\n\t\t\telse\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(${(toPoint || getYCoord(e)) + bounceOffset}px)`\r\n\t\t\t\t);\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s`\r\n\t\t\t);\r\n\r\n\t\t\tif (hideDialog){\r\n\t\t\t\ttouchTargetElement.removeEventListener('mousedown', dragMouseDown);\r\n\t\t\t\ttouchTargetElement.removeEventListener('touchstart', dragMouseDown);\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\tthis._callHide,\r\n\t\t\t\t\t250\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ttouchTargetElement.addEventListener('mousedown', dragMouseDown);\r\n\t\ttouchTargetElement.addEventListener('touchstart', dragMouseDown, {passive: false});\r\n\r\n\t\tcloseDragElement(new MouseEvent('mouseup'), window.innerHeight - bottomSize - bounceOffset);\r\n\r\n\t\treturn {\r\n\t\t\ttouchElement: touchTargetElement,\r\n\t\t\tlistener: dragMouseDown\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupAppearence = (fullOpen?: boolean) => {\r\n\t\tif (this.bindedElement) {\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('mousedown', this.bindedElement.listener);\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('touchstart', this.bindedElement.listener);\r\n\t\t}\r\n\t\t\r\n\t\tthis.bindedElement = this.dragMobileSheet(\r\n\t\t\tthis.parentElement,\r\n\t\t\tthis.shadowRoot?.querySelector('.dialog-body .touch-header') as HTMLElement,\r\n\t\t\tthis.shadowRoot?.querySelector(`.dialog-body ${fullOpen? '.how-to-body': '.body-header'}`) as HTMLElement);\r\n\t}\r\n\tprivate _init = () => {\r\n\t\tthis.setupAppearence();\r\n\r\n\t\twindow.addEventListener('resize', () => this.setupAppearence());\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tthis._init();\r\n return;\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(this.props.name, this.props.description, this.props.icon, this._callInstall, this.fallback, this.howToRequested)}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,\"Segoe UI\",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#eee;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}`;\n ","import {css} from 'lit'; export default css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,\"Segoe UI\";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon description\" \"welcome welcome\" \"how-to how-to\" \"gallery gallery\" \"button button\";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-inline-end:7px;margin-top:7px;margin-inline-start:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-inline-end:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-inline-end:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;padding:0;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:start;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;grid-template-columns:unset;gap:unset;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:start}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-inline-end:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:start}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon\" \"description\" \"welcome\" \"how-to\" \"gallery\" \"button\";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-inline-end:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-inline-end:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop pwa-gallery{margin:0 -10px}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;\n ","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\nimport { ManifestScreenshot } from '../../types/types';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, install: any, toggleGallery: any, galleryRequested: boolean, toggleHowTo: any, howToRequested: boolean, isAndroidFallback: boolean, isRTL: boolean = false) => {\r\n const installDialogClasses = () => { return {available: installAvailable, gallery: galleryRequested }};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n ${!disableClose? html`` : ''}\r\n
\r\n
${location.hostname}
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n ${!disableDescription? \r\n html`
${installDescription? installDescription: `${msg('This site has app functionality.')} ${msg('Install it on your device for extensive experience and easy access.')}`}
` \r\n : ''}\r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n ${screenshotsAvailable? html``:''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n ${screenshotsAvailable? html``: ''}\r\n \r\n
\r\n
`;\r\n};\r\nexport default template;\r\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, howToForApple: any, isDesktop: boolean, howToRequested: boolean, toggleGallery: any, galleryRequested: boolean, isRTL: boolean = false) => {\r\n const installDialogClassesApple = () => { return {available: installAvailable, 'how-to': howToRequested, gallery: galleryRequested, desktop: isDesktop}};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, PropertyValues, html } from 'lit';\r\nimport { localized } from '@lit/localize';\r\nimport { property, state, customElement } from 'lit/decorators.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { changeLocale, isRTL } from './localization';\r\n\r\nimport { IRelatedApp, Manifest, IWindow, PWAInstallAttributes } from './types/types';\r\n\r\nimport PWAGalleryElement from './gallery';\r\nimport PWABottomSheetElement from './templates/chrome/bottom-sheet';\r\n\r\nimport Utils from './utils';\r\n\r\ndeclare const window: IWindow;\r\n\r\nimport styles from './templates/chrome/styles.scss';\r\nimport stylesCommon from './templates/chrome/styles-common.scss'\r\nimport stylesApple from './templates/apple/styles-apple.scss';\r\n\r\nimport template from './templates/chrome/template';\r\nimport templateApple from './templates/apple/template-apple';\r\n\r\n/**\r\n * @event {CustomEvent} pwa-install-success-event - App install success (Chromium/Android only)\r\n * @event {CustomEvent} pwa-install-fail-event - App install failed (Chromium/Android only)\r\n * @event {CustomEvent} pwa-user-choice-result-event - dismissed, accepted\r\n * @event {CustomEvent} pwa-install-available-event - App install available\r\n * @event {CustomEvent} pwa-install-how-to-event - App install instruction showed\r\n * @event {CustomEvent} pwa-install-gallery-event - App install gallery showed\r\n */\r\n@localized()\r\n@customElement('pwa-install')\r\nexport class PWAInstallElement extends LitElement {\r\n\t@property({attribute: 'manifest-url'}) manifestUrl = '/manifest.json';\r\n\t@property() icon = '';\r\n\t@property() name = '';\r\n\t@property() description = '';\r\n\t@property({attribute: 'install-description'}) installDescription = '';\r\n\t@property({attribute: 'disable-install-description', type: Boolean}) disableDescription = false;\r\n\t@property({attribute: 'disable-screenshots', type: Boolean}) disableScreenshots = false;\r\n\t@property({attribute: 'disable-screenshots-apple', type: Boolean}) disableScreenshotsApple = false;\r\n\t@property({attribute: 'disable-screenshots-chrome', type: Boolean}) disableScreenshotsChrome = false;\r\n\t@property({attribute: 'manual-apple', type: Boolean}) manualApple = false;\r\n\t@property({attribute: 'manual-chrome', type: Boolean}) manualChrome = false;\r\n\t@property({attribute: 'disable-chrome', type: Boolean}) disableChrome = false;\r\n\t@property({attribute: 'disable-close', type: Boolean}) disableClose = false;\r\n\t@property({attribute: 'disable-android-fallback', type: Boolean}) disableFallback = false;\r\n\t@property({attribute: 'use-local-storage', type: Boolean}) useLocalStorage = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn [ styles, stylesCommon, stylesApple ];\r\n\t}\r\n\r\n\t@state() externalPromptEvent: BeforeInstallPromptEvent | null = null;\r\n\r\n\tpublic platforms: BeforeInstallPromptEvent['platforms'] = [];\r\n\tpublic userChoiceResult = '';\r\n\r\n\tpublic isDialogHidden: boolean = Utils.getStorageFlag('pwa-hide-install');\r\n\tpublic isInstallAvailable = false;\r\n\tpublic isAppleMobilePlatform = false;\r\n\tpublic isAppleDesktopPlatform = false;\r\n\tpublic isAndroidFallback = false;\r\n\tpublic isAndroid = false;\r\n\tpublic isUnderStandaloneMode = false;\r\n\tpublic isRelatedAppsInstalled = false;\r\n\r\n\t/** @internal */\r\n\tprivate _isRTL = false;\r\n\r\n\t/** @internal */\r\n\tprivate _manifest: Manifest = new Manifest();\r\n\t/** @internal */\r\n\tprivate _howToRequested = false;\r\n\t/** @internal */\r\n\tprivate _galleryRequested = false;\r\n\t/** @internal */\r\n\tprivate _install = {\r\n\t\thandleEvent: () => {\r\n\t\t\tif (window.defferedPromptEvent) {\r\n\t\t\t\tthis.hideDialog();\r\n\t\t\t\twindow.defferedPromptEvent.prompt();\r\n\t\t\t\twindow.defferedPromptEvent.userChoice\r\n\t\t\t\t\t.then((choiceResult: PromptResponseObject) => {\r\n\t\t\t\t\t\tthis.userChoiceResult = choiceResult.outcome;\r\n\t\t\t\t\t\tUtils.eventUserChoiceResult(this, this.userChoiceResult);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tUtils.eventInstalledFail(this);\r\n\t\t\t\t\t});\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\tpublic install = () => {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis._howToRequested = true;\r\n\t\t\tthis.requestUpdate();\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._install.handleEvent();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialog = {\r\n\t\thandleEvent: () => {\r\n\t\t\tthis.isDialogHidden = true;\r\n\t\t\tUtils.setStorageFlag('pwa-hide-install', true, this.useLocalStorage);\r\n\t\t\tthis.requestUpdate();\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialogUser = () => {\r\n\t\tUtils.eventUserChoiceResult(this, 'dismissed');\r\n\t\tthis.userChoiceResult = 'dismissed';\r\n\t\tthis.hideDialog();\r\n\t}\r\n\tpublic hideDialog = () => {\r\n\t\tthis._hideDialog.handleEvent();\r\n\t}\r\n\tpublic showDialog = (forced = false) => {\r\n\t\tthis.isDialogHidden = false;\r\n\t\tif (forced)\r\n\t\t\tthis.isInstallAvailable = true;\r\n\t\tUtils.setStorageFlag('pwa-hide-install', false, this.useLocalStorage);\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tpublic getInstalledRelatedApps = async (): Promise => {\r\n\t\treturn await Utils.getInstalledRelatedApps();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _toggleHowTo = {\r\n handleEvent: () => {\r\n\t\t\tthis._howToRequested = !this._howToRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._galleryRequested = false;\r\n\t\t\tthis.requestUpdate();\r\n\r\n\t\t\tif (this._howToRequested) {\r\n\t\t\t\tUtils.eventInstallHowTo(this);\r\n\t\t\t}\t\t\t\t\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate _toggleGallery = {\r\n handleEvent: () => {\r\n\t\t\tthis._galleryRequested = !this._galleryRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._howToRequested = false;\r\n\r\n\t\t\tthis._galleryRequested && Utils.eventGallery(this);\r\n\r\n\t\t\tthis.requestUpdate();\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate async _checkPlatform() {\r\n\t\tthis.isUnderStandaloneMode = Utils.isStandalone();\r\n\t\tthis.isRelatedAppsInstalled = await Utils.isRelatedAppsInstalled();\r\n\t\tthis.isAppleMobilePlatform = Utils.isAppleMobile();\r\n\t\tthis.isAppleDesktopPlatform = Utils.isAppleDesktop();\r\n\t\tthis.isAndroidFallback = Utils.isAndroidFallback();\r\n\t\tthis.isAndroid = Utils.isAndroid();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _checkInstallAvailable() {\r\n\t\tif (this.isUnderStandaloneMode)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis.manualApple && this.hideDialog();\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t},\r\n\t\t\t\t1000\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet _promptTriggered = false;\r\n\t\tif (!this.disableChrome && window.BeforeInstallPromptEvent) {\r\n\t\t\tthis.manualChrome && this.hideDialog();\r\n\t\t\tconst _promptHandler = (e: BeforeInstallPromptEvent) => {\r\n\t\t\t\twindow.defferedPromptEvent = e;\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.platforms = e.platforms;\r\n\r\n\t\t\t\tif (this.isRelatedAppsInstalled) {\r\n\t\t\t\t\tthis.isInstallAvailable = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userChoiceResult === 'accepted'){\r\n\t\t\t\t\tthis.isDialogHidden = true;\r\n\t\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t_promptTriggered = true;\r\n\t\t\t\tthis.isAndroidFallback = false;\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t\tif (this.externalPromptEvent != null)\r\n\t\t\t\tsetTimeout(() => _promptHandler(this.externalPromptEvent!), 300);\r\n\t\t\telse\r\n\t\t\t\twindow.addEventListener('beforeinstallprompt', _promptHandler);\r\n\t\t}\r\n\t\t\r\n\t\tif (!this.disableFallback && this.isAndroid && !_promptTriggered) {\r\n\t\t\t// browsers without BeforeInstallPromptEvent\r\n\t\t\tif (this.isAndroidFallback) {\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t1000\r\n\t\t\t\t);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t// trying to fix browsers like Opera with BeforeInstallPromptEvent not working\r\n\t\t\tif ('userActivation' in navigator && !this.isRelatedAppsInstalled) {\r\n\t\t\t\tconst _activation = navigator.userActivation;\r\n\t\t\t\tconst _activationHandler = setInterval(() => {\r\n\t\t\t\t\tif (_activation.isActive || _activation.hasBeenActive) {\r\n\t\t\t\t\t\tif (!_promptTriggered) {\r\n\t\t\t\t\t\t\tthis.isAndroidFallback = true;\r\n\t\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\t\tthis.requestUpdate();\r\n\t\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tclearInterval(_activationHandler);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 1000);\r\n\t\t\t\tsetTimeout(() => clearInterval(_activationHandler), 30000);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _init = async () => {\r\n\t\twindow.defferedPromptEvent = null;\r\n\r\n\t\tawait this._checkPlatform();\r\n\t\tthis._checkInstallAvailable();\r\n\r\n\t\tif ('onappinstalled' in window)\r\n\t\t\twindow.addEventListener('appinstalled', (e) => {\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t\tthis.isInstallAvailable = false;\r\n\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t});\r\n\r\n\t\tObject.assign(this, await Utils.fetchAndProcessManifest(this.manifestUrl, this.icon, this.name, this.description));\r\n\t};\r\n\t/** @internal */\r\n\tprivate _requestUpdate = () => {\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tasync connectedCallback() {\r\n\t\tawait changeLocale(navigator.language);\r\n\t\tthis._isRTL = isRTL();\r\n\t\tthis._init();\r\n\t\tPWAGalleryElement.finalized;\r\n\t\tPWABottomSheetElement.finalized;\r\n\t\tsuper.connectedCallback();\r\n\t}\r\n\twillUpdate(changedProperties: PropertyValues) {\r\n\t\tif (this.externalPromptEvent && changedProperties.has('externalPromptEvent') && typeof this.externalPromptEvent == 'object') {\r\n\t\t this._init();\r\n\t\t}\r\n\t}\r\n\r\n\t// firstUpdated() {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\trender() {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform)\r\n\t\t\treturn html`${templateApple(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsApple,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._toggleHowTo,\r\n\t\t\t\tthis.isAppleDesktopPlatform,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested,\r\n\t\t\t\tthis._isRTL\r\n\t\t\t)}`;\r\n\t\telse\r\n\t\t\treturn html`${template(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsChrome,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._install,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested,\r\n\t\t\t\tthis._toggleHowTo,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis.isAndroidFallback,\r\n\t\t\t\tthis._isRTL\r\n\t\t\t)}`;\r\n\t}\r\n}\r\n\r\nexport { PWAInstallAttributes };\r\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { updateWhenLocaleChanges } from './localized-controller.js';\n/**\n * Class decorator to enable re-rendering the given LitElement whenever a new\n * active locale has loaded.\n *\n * See also {@link updateWhenLocaleChanges} for the same functionality without\n * the use of decorators.\n *\n * When using lit-localize in transform mode, applications of this decorator are\n * removed.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {customElement} from 'lit/decorators.js';\n * import {msg, localized} from '@lit/localize';\n *\n * @localized()\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nexport const localized = () => (clazz, _context) => {\n clazz.addInitializer(updateWhenLocaleChanges);\n return clazz;\n};\n//# sourceMappingURL=localized-decorator.js.map"],"names":["root","factory","exports","module","require","define","amd","globalThis","__WEBPACK_EXTERNAL_MODULE__161__","__WEBPACK_EXTERNAL_MODULE__429__","__WEBPACK_EXTERNAL_MODULE__125__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","joinStringsAndValues","strings","values","valueOrder","concat","i","length","defaultMsg","template","isStrTagged","val","msg","installed","LOCALE_STATUS_EVENT","LocalizeController","constructor","host","this","__litLocalizeEventHandler","event","detail","status","requestUpdate","hostConnected","window","addEventListener","hostDisconnected","removeEventListener","updateWhenLocaleChanges","addController","Deferred","settled","promise","Promise","resolve","reject","_resolve","_reject","error","hl","toString","generateMsgId","isHtmlTagged","str","t0","v0","t1","v1","t2","v2","t3","v3","charCodeAt","fnv1a64","join","expressionOrders","WeakMap","hashCache","Map","runtimeMsg","templates","options","id","set","generateId","localized","order","map","dispatchStatusEvent","dispatchEvent","CustomEvent","loadingLocale","sourceLocale","validLocales","loadLocale","activeLocale","loading","requestId","getLocale","setLocale","newLocale","Error","has","thisRequestId","then","mod","readyLocale","err","errorLocale","errorMessage","targetLocales","localizedTemplates","config","async","lang","impl","_installMsgImplementation","Set","add","Manifest","icons","src","screenshots","short_name","name","description","css","_eventDispatcher","_element","message","Utils","isAppleMobile","includes","navigator","platform","userAgent","match","maxTouchPoints","isAppleDesktop","toLowerCase","version","exec","parseInt","audioCheck","document","createElement","canPlayType","webGLCheck","OffscreenCanvas","getContext","isAndroid","isAndroidFallback","deviceFormFactor","matchMedia","matches","isStandalone","standalone","getInstalledRelatedApps","relatedApps","e","isRelatedAppsInstalled","setStorageFlag","persistent","localStorage","setItem","sessionStorage","getStorageFlag","getItem","eventInstalledSuccess","eventInstalledFail","eventUserChoiceResult","eventInstallAvailable","eventInstallHowTo","eventGallery","normalizeManifestAssetUrls","manifest","manifestUrl","normalizedManifestUrl","URL","location","href","forEach","asset","fetchAndProcessManifest","icon","_manifest","_json","_response","fetch","json","ok","keys","theme","scrollToNextPage","scrollToPrevPage","html","PWAGalleryElement","LitElement","rtl","getScrollElements","gallery","shadowRoot","querySelector","galleryScroller","galleryItems","Array","from","querySelectorAll","scroller","items","findCurrentItem","scrollLeft","find","item","offsetWidth","offsetLeft","scrollToPage","direction","scrollData","currentItem","targetIndex","indexOf","scrollIntoView","behavior","block","inline","_init","styles","firstUpdated","_tools","setTimeout","scrollTo","top","left","connectedCallback","super","render","property","type","Boolean","customElement","install","fallback","howToRequested","PWABottomSheetElement","props","handleEvent","hideDialog","disableClose","toggleHowTo","_callInstall","setupAppearence","_callHide","bindedElement","_saveBodyStyle","body","style","overscrollBehaviorY","dragMobileSheet","element","touchTargetElement","infoElement","dragOffset","bottomSize","offsetHeight","offsetTop","getYCoord","clientY","changedTouches","dragMouseDown","dragMouseUp","dragMouseMove","preventDefault","getBoundingClientRect","innerHeight","closeDragElement","clientHeight","getRootNode","currentY","setProperty","toPoint","innerWidth","passive","MouseEvent","touchElement","listener","fullOpen","parentElement","installDescription","disableDescription","disableScreenshots","installAvailable","toggleGallery","galleryRequested","isRTL","installDialogClasses","available","screenshotsAvailable","howToForApple","isDesktop","desktop","PWAInstallElement","disableScreenshotsApple","disableScreenshotsChrome","manualApple","manualChrome","disableChrome","disableFallback","useLocalStorage","externalPromptEvent","platforms","userChoiceResult","isDialogHidden","isInstallAvailable","isAppleMobilePlatform","isAppleDesktopPlatform","isUnderStandaloneMode","_isRTL","_howToRequested","_galleryRequested","_install","defferedPromptEvent","prompt","userChoice","choiceResult","outcome","catch","_hideDialog","_hideDialogUser","showDialog","forced","_toggleHowTo","_toggleGallery","_checkPlatform","_checkInstallAvailable","assign","_requestUpdate","_promptTriggered","BeforeInstallPromptEvent","_promptHandler","_activation","userActivation","_activationHandler","setInterval","isActive","hasBeenActive","clearInterval","slice","changeLocale","language","finalized","willUpdate","changedProperties","attribute","state","clazz","_context","addInitializer"],"sourceRoot":""} +{"version":3,"file":"pwa-install.umd.js","mappings":"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","sources":["webpack://PWAInstallComponent/webpack/universalModuleDefinition","webpack://PWAInstallComponent/external umd \"lit\"","webpack://PWAInstallComponent/external umd \"lit/decorators.js\"","webpack://PWAInstallComponent/external umd \"lit/directives/class-map.js\"","webpack://PWAInstallComponent/webpack/bootstrap","webpack://PWAInstallComponent/webpack/runtime/define property getters","webpack://PWAInstallComponent/webpack/runtime/hasOwnProperty shorthand","webpack://PWAInstallComponent/webpack/runtime/make namespace object","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/str-tag.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/default-msg.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/init/install.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/locale-status-event.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/localized-controller.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/deferred.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/fnv1a64.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/id-generation.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/runtime-msg.js","webpack://PWAInstallComponent/./node_modules/@lit/localize/init/runtime.js","webpack://PWAInstallComponent/./src/localization/locale-codes.ts","webpack://PWAInstallComponent/./src/localization/locales/ru.ts","webpack://PWAInstallComponent/./src/localization/locales/tr.ts","webpack://PWAInstallComponent/./src/localization/locales/de.ts","webpack://PWAInstallComponent/./src/localization/locales/es.ts","webpack://PWAInstallComponent/./src/localization/locales/nl.ts","webpack://PWAInstallComponent/./src/localization/locales/el.ts","webpack://PWAInstallComponent/./src/localization/locales/fr.ts","webpack://PWAInstallComponent/./src/localization/locales/sr.ts","webpack://PWAInstallComponent/./src/localization/locales/pl.ts","webpack://PWAInstallComponent/./src/localization/locales/uk.ts","webpack://PWAInstallComponent/./src/localization/locales/zh-HK.ts","webpack://PWAInstallComponent/./src/localization/locales/zh-CN.ts","webpack://PWAInstallComponent/./src/localization/locales/it.ts","webpack://PWAInstallComponent/./src/localization/locales/cs.ts","webpack://PWAInstallComponent/./src/localization/locales/no.ts","webpack://PWAInstallComponent/./src/localization/locales/pt.ts","webpack://PWAInstallComponent/./src/localization/locales/ja.ts","webpack://PWAInstallComponent/./src/localization/locales/sv.ts","webpack://PWAInstallComponent/./src/localization/locales/ko.ts","webpack://PWAInstallComponent/./src/localization/locales/km.ts","webpack://PWAInstallComponent/./src/localization/locales/fa.ts","webpack://PWAInstallComponent/./src/localization/locales/da.ts","webpack://PWAInstallComponent/./src/localization/locales/vi.ts","webpack://PWAInstallComponent/./src/localization/index.ts","webpack://PWAInstallComponent/./src/types/types.ts","webpack://PWAInstallComponent/./src/gallery/styles-gallery.scss","webpack://PWAInstallComponent/./src/utils.ts","webpack://PWAInstallComponent/./src/gallery/template-gallery.ts","webpack://PWAInstallComponent/./src/gallery/index.ts","webpack://PWAInstallComponent/./src/templates/chrome/styles-common.scss","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/styles-bottom-sheet.scss","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/template-bottom-sheet.ts","webpack://PWAInstallComponent/./src/templates/chrome/bottom-sheet/index.ts","webpack://PWAInstallComponent/./src/templates/chrome/styles.scss","webpack://PWAInstallComponent/./src/templates/apple/styles-apple.scss","webpack://PWAInstallComponent/./src/templates/chrome/template.ts","webpack://PWAInstallComponent/./src/templates/apple/template-apple.ts","webpack://PWAInstallComponent/./src/index.ts","webpack://PWAInstallComponent/./node_modules/@lit/localize/internal/localized-decorator.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"lit\"), require(\"lit/decorators.js\"), require(\"lit/directives/class-map.js\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"lit\", \"lit/decorators.js\", \"lit/directives/class-map.js\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PWAInstallComponent\"] = factory(require(\"lit\"), require(\"lit/decorators.js\"), require(\"lit/directives/class-map.js\"));\n\telse\n\t\troot[\"PWAInstallComponent\"] = factory(root[\"lit\"], root[\"lit/decorators.js\"], root[\"lit/directives/class-map.js\"]);\n})(globalThis, (__WEBPACK_EXTERNAL_MODULE__161__, __WEBPACK_EXTERNAL_MODULE__429__, __WEBPACK_EXTERNAL_MODULE__125__) => {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__161__;","module.exports = __WEBPACK_EXTERNAL_MODULE__429__;","module.exports = __WEBPACK_EXTERNAL_MODULE__125__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Tag that allows expressions to be used in localized non-HTML template\n * strings.\n *\n * Example: msg(str`Hello ${this.user}!`);\n *\n * The Lit html tag can also be used for this purpose, but HTML will need to be\n * escaped, and there is a small overhead for HTML parsing.\n *\n * Untagged template strings with expressions aren't supported by lit-localize\n * because they don't allow for values to be captured at runtime.\n */\nconst _str = (strings, ...values) => ({\n strTag: true,\n strings,\n values,\n});\nexport const str = _str;\nexport const isStrTagged = (val) => typeof val !== 'string' && 'strTag' in val;\n/**\n * Render the result of a `str` tagged template to a string. Note we don't need\n * to do this for Lit templates, since Lit itself handles rendering.\n */\nexport const joinStringsAndValues = (strings, values, valueOrder) => {\n let concat = strings[0];\n for (let i = 1; i < strings.length; i++) {\n concat += values[valueOrder ? valueOrder[i - 1] : i - 1];\n concat += strings[i];\n }\n return concat;\n};\n//# sourceMappingURL=str-tag.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { isStrTagged, joinStringsAndValues } from './str-tag.js';\n/**\n * Default identity msg implementation. Simply returns the input template with\n * no awareness of translations. If the template is str-tagged, returns it in\n * string form.\n */\nexport const defaultMsg = ((template) => isStrTagged(template)\n ? joinStringsAndValues(template.strings, template.values)\n : template);\n//# sourceMappingURL=default-msg.js.map","import { defaultMsg } from '../internal/default-msg.js';\n/**\n * Make a string or lit-html template localizable.\n *\n * @param template A string, a lit-html template, or a function that returns\n * either a string or lit-html template.\n * @param options Optional configuration object with the following properties:\n * - id: Optional project-wide unique identifier for this template. If\n * omitted, an id will be automatically generated from the template strings.\n * - desc: Optional description\n */\nexport let msg = defaultMsg;\nlet installed = false;\n/**\n * Internal only. Do not use this function.\n *\n * Installs an implementation of the msg function to replace the default\n * identity function. Throws if called more than once.\n *\n * @internal\n */\nexport function _installMsgImplementation(impl) {\n if (installed) {\n throw new Error('lit-localize can only be configured once');\n }\n msg = impl;\n installed = true;\n}\n//# sourceMappingURL=install.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * Name of the event dispatched to `window` whenever a locale change starts,\n * finishes successfully, or fails. Only relevant to runtime mode.\n *\n * The `detail` of this event is an object with a `status` string that can be:\n * \"loading\", \"ready\", or \"error\", along with the relevant locale code, and\n * error message if applicable.\n *\n * You can listen for this event to know when your application should be\n * re-rendered following a locale change. See also the Localized mixin, which\n * automatically re-renders LitElement classes using this event.\n */\nexport const LOCALE_STATUS_EVENT = 'lit-localize-status';\n//# sourceMappingURL=locale-status-event.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { LOCALE_STATUS_EVENT } from './locale-status-event.js';\nclass LocalizeController {\n constructor(host) {\n this.__litLocalizeEventHandler = (event) => {\n if (event.detail.status === 'ready') {\n this.host.requestUpdate();\n }\n };\n this.host = host;\n }\n hostConnected() {\n window.addEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n hostDisconnected() {\n window.removeEventListener(LOCALE_STATUS_EVENT, this.__litLocalizeEventHandler);\n }\n}\n/**\n * Re-render the given LitElement whenever a new active locale has loaded.\n *\n * See also {@link localized} for the same functionality as a decorator.\n *\n * When using lit-localize in transform mode, calls to this function are\n * replaced with undefined.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {msg, updateWhenLocaleChanges} from '@lit/localize';\n *\n * class MyElement extends LitElement {\n * constructor() {\n * super();\n * updateWhenLocaleChanges(this);\n * }\n *\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nconst _updateWhenLocaleChanges = (host) => host.addController(new LocalizeController(host));\nexport const updateWhenLocaleChanges = _updateWhenLocaleChanges;\n//# sourceMappingURL=localized-controller.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nexport class Deferred {\n constructor() {\n this.settled = false;\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n resolve(value) {\n this.settled = true;\n this._resolve(value);\n }\n reject(error) {\n this.settled = true;\n this._reject(error);\n }\n}\n//# sourceMappingURL=deferred.js.map","/**\n * @license\n * Copyright 2014 Travis Webb\n * SPDX-License-Identifier: MIT\n */\n// This module is derived from the file:\n// https://github.com/tjwebb/fnv-plus/blob/1e2ce68a07cb7dd4c3c85364f3d8d96c95919474/index.js#L309\n//\n// Changes:\n// - Only the _hash64_1a_fast function is included.\n// - Removed loop unrolling.\n// - Converted to TypeScript ES module.\n// - var -> let/const\n//\n// TODO(aomarks) Upstream improvements to https://github.com/tjwebb/fnv-plus/.\nconst hl = [];\nfor (let i = 0; i < 256; i++) {\n hl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n}\n/**\n * Perform a FNV-1A 64-bit hash of the given string (as UTF-16 code units), and\n * return a hexadecimal digest (left zero padded to 16 characters).\n *\n * @see {@link http://tools.ietf.org/html/draft-eastlake-fnv-06}\n */\nexport function fnv1a64(str) {\n let t0 = 0, v0 = 0x2325, t1 = 0, v1 = 0x8422, t2 = 0, v2 = 0x9ce4, t3 = 0, v3 = 0xcbf2;\n for (let i = 0; i < str.length; i++) {\n v0 ^= str.charCodeAt(i);\n t0 = v0 * 435;\n t1 = v1 * 435;\n t2 = v2 * 435;\n t3 = v3 * 435;\n t2 += v0 << 8;\n t3 += v1 << 8;\n t1 += t0 >>> 16;\n v0 = t0 & 65535;\n t2 += t1 >>> 16;\n v1 = t1 & 65535;\n v3 = (t3 + (t2 >>> 16)) & 65535;\n v2 = t2 & 65535;\n }\n return (hl[v3 >> 8] +\n hl[v3 & 255] +\n hl[v2 >> 8] +\n hl[v2 & 255] +\n hl[v1 >> 8] +\n hl[v1 & 255] +\n hl[v0 >> 8] +\n hl[v0 & 255]);\n}\n//# sourceMappingURL=fnv1a64.js.map","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { fnv1a64 } from './fnv1a64.js';\n/**\n * Delimiter used between each template string component before hashing. Used to\n * prevent e.g. \"foobar\" and \"foo${baz}bar\" from sharing a hash.\n *\n * This is the \"record separator\" ASCII character.\n */\nexport const HASH_DELIMITER = '\\x1e';\n/**\n * Id prefix on html-tagged templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst HTML_PREFIX = 'h';\n/**\n * Id prefix on plain string templates to distinguish e.g. `x` from\n * html`x`.\n */\nconst STRING_PREFIX = 's';\n/**\n * Generate a unique ID for a lit-localize message.\n *\n * Example:\n * Template: html`Hello ${who}!`\n * Params: [\"Hello \", \"!\"], true\n * Output: h82ccc38d4d46eaa9\n *\n * The ID is constructed as:\n *\n * [0] Kind of template: [h]tml or [s]tring.\n * [1,16] 64-bit FNV-1a hash hex digest of the template strings, as UTF-16\n * code points, delineated by an ASCII \"record separator\" character.\n *\n * We choose FNV-1a because:\n *\n * 1. It's pretty fast (e.g. much faster than SHA-1).\n * 2. It's pretty small (0.25 KiB minified + brotli).\n * 3. We don't require cryptographic security, and 64 bits should give\n * sufficient collision resistance for any one application. Worst\n * case, we will always detect collisions during analysis.\n * 4. We can't use Web Crypto API (e.g. SHA-1), because it's asynchronous.\n * 5. It's a well known non-cryptographic hash with implementations in many\n * languages.\n * 6. There was an existing JavaScript implementation that doesn't require\n * BigInt, for IE11 compatibility.\n */\nexport function generateMsgId(strings, isHtmlTagged) {\n return ((isHtmlTagged ? HTML_PREFIX : STRING_PREFIX) +\n fnv1a64(typeof strings === 'string' ? strings : strings.join(HASH_DELIMITER)));\n}\n//# sourceMappingURL=id-generation.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { defaultMsg } from './default-msg.js';\nimport { joinStringsAndValues } from './str-tag.js';\nimport { generateMsgId } from './id-generation.js';\nconst expressionOrders = new WeakMap();\nconst hashCache = new Map();\nexport function runtimeMsg(templates, template, options) {\n if (templates) {\n const id = options?.id ?? generateId(template);\n const localized = templates[id];\n if (localized) {\n if (typeof localized === 'string') {\n // E.g. \"Hello World!\"\n return localized;\n }\n else if ('strTag' in localized) {\n // E.g. str`Hello ${name}!`\n //\n // Localized templates have ${number} in place of real template\n // expressions. They can't have real template values, because the\n // variable scope would be wrong. The number tells us the index of the\n // source value to substitute in its place, because expressions can be\n // moved to a different position during translation.\n return joinStringsAndValues(localized.strings, \n // Cast `template` because its type wasn't automatically narrowed (but\n // we know it must be the same type as `localized`).\n template.values, localized.values);\n }\n else {\n // E.g. html`Hello ${name}!`\n //\n // We have to keep our own mapping of expression ordering because we do\n // an in-place update of `values`, and otherwise we'd lose ordering for\n // subsequent renders.\n let order = expressionOrders.get(localized);\n if (order === undefined) {\n order = localized.values;\n expressionOrders.set(localized, order);\n }\n return {\n ...localized,\n values: order.map((i) => template.values[i]),\n };\n }\n }\n }\n return defaultMsg(template);\n}\nfunction generateId(template) {\n const strings = typeof template === 'string' ? template : template.strings;\n let id = hashCache.get(strings);\n if (id === undefined) {\n id = generateMsgId(strings, typeof template !== 'string' && !('strTag' in template));\n hashCache.set(strings, id);\n }\n return id;\n}\n//# sourceMappingURL=runtime-msg.js.map","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { Deferred } from '../internal/deferred.js';\nimport { LOCALE_STATUS_EVENT } from '../internal/locale-status-event.js';\nimport { runtimeMsg } from '../internal/runtime-msg.js';\nimport { _installMsgImplementation } from './install.js';\n/**\n * Dispatch a \"lit-localize-status\" event to `window` with the given detail.\n */\nfunction dispatchStatusEvent(detail) {\n window.dispatchEvent(new CustomEvent(LOCALE_STATUS_EVENT, { detail }));\n}\nlet activeLocale = '';\nlet loadingLocale;\nlet sourceLocale;\nlet validLocales;\nlet loadLocale;\nlet templates;\nlet loading = new Deferred();\n// The loading promise must be initially resolved, because that's what we should\n// return if the user immediately calls setLocale(sourceLocale).\nloading.resolve();\nlet requestId = 0;\n/**\n * Set configuration parameters for lit-localize when in runtime mode. Returns\n * an object with functions:\n *\n * - `getLocale`: Return the active locale code.\n * - `setLocale`: Set the active locale code.\n *\n * Throws if called more than once.\n */\nexport const configureLocalization = (config) => {\n _installMsgImplementation(((template, options) => runtimeMsg(templates, template, options)));\n activeLocale = sourceLocale = config.sourceLocale;\n validLocales = new Set(config.targetLocales);\n validLocales.add(config.sourceLocale);\n loadLocale = config.loadLocale;\n return { getLocale, setLocale };\n};\n/**\n * Return the active locale code.\n */\nconst getLocale = () => {\n return activeLocale;\n};\n/**\n * Set the active locale code, and begin loading templates for that locale using\n * the `loadLocale` function that was passed to `configureLocalization`. Returns\n * a promise that resolves when the next locale is ready to be rendered.\n *\n * Note that if a second call to `setLocale` is made while the first requested\n * locale is still loading, then the second call takes precedence, and the\n * promise returned from the first call will resolve when second locale is\n * ready. If you need to know whether a particular locale was loaded, check\n * `getLocale` after the promise resolves.\n *\n * Throws if the given locale is not contained by the configured `sourceLocale`\n * or `targetLocales`.\n */\nconst setLocale = (newLocale) => {\n if (newLocale === (loadingLocale ?? activeLocale)) {\n return loading.promise;\n }\n if (!validLocales || !loadLocale) {\n throw new Error('Internal error');\n }\n if (!validLocales.has(newLocale)) {\n throw new Error('Invalid locale code');\n }\n requestId++;\n const thisRequestId = requestId;\n loadingLocale = newLocale;\n if (loading.settled) {\n loading = new Deferred();\n }\n dispatchStatusEvent({ status: 'loading', loadingLocale: newLocale });\n const localePromise = newLocale === sourceLocale\n ? // We could switch to the source locale synchronously, but we prefer to\n // queue it on a microtask so that switching locales is consistently\n // asynchronous.\n Promise.resolve({ templates: undefined })\n : loadLocale(newLocale);\n localePromise.then((mod) => {\n if (requestId === thisRequestId) {\n activeLocale = newLocale;\n loadingLocale = undefined;\n templates = mod.templates;\n dispatchStatusEvent({ status: 'ready', readyLocale: newLocale });\n loading.resolve();\n }\n // Else another locale was requested in the meantime. Don't resolve or\n // reject, because the newer load call is going to use the same promise.\n // Note the user can call getLocale() after the promise resolves if they\n // need to check if the locale is still the one they expected to load.\n }, (err) => {\n if (requestId === thisRequestId) {\n dispatchStatusEvent({\n status: 'error',\n errorLocale: newLocale,\n errorMessage: err.toString(),\n });\n loading.reject(err);\n }\n });\n return loading.promise;\n};\n//# sourceMappingURL=runtime.js.map","// Do not modify this file by hand!\n// Re-generate this file by running lit-localize.\n\n/**\n * The locale code that templates in this source code are written in.\n */\nexport const sourceLocale = `en`;\n\n/**\n * The other locale codes that this application is localized into. Sorted\n * lexicographically.\n */\nexport const targetLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `es`,\n `fa`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `vi`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n\n/**\n * All valid project locale codes. Sorted lexicographically.\n */\nexport const allLocales = [\n `cs`,\n `da`,\n `de`,\n `el`,\n `en`,\n `es`,\n `fa`,\n `fr`,\n `it`,\n `ja`,\n `km`,\n `ko`,\n `nl`,\n `no`,\n `pl`,\n `pt`,\n `ru`,\n `sr`,\n `sv`,\n `tr`,\n `uk`,\n `vi`,\n `zh-CN`,\n `zh-HK`,\n] as const;\n","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Откройте меню вашего браузера`,\n's182ab2d6c997515f': `Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.`,\n's1b9047d53d9f9d22': `2) Нажать \"Поделиться\"`,\n's2d90afa5dcca2c0e': `3) Прокрутите вниз до \"Добавить на главный экран\"`,\n's37a9e8aec5713460': `Подробнее`,\n's4593f304dac8848c': `2) Нажмите \"Добавить на главный экран\"`,\n's54cfbb14f46396d4': `1) Откройте в вашем основном браузере`,\n's6196153c4b0c1ea0': `Установить`,\n's922329d6f6213590': `Добавить в Dock`,\n'sa5ef80b4bb9b39f8': `Свернуть`,\n'sa7551383d1897fcc': `2) Нажмите \"Добавить в Dock\"`,\n'sba52286c21552a4e': `Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.`,\n'sc79fd7641eb9a975': `Спрятать Инструкцию`,\n'scdaf4bbff76674c8': `На экран «Домой»`,\n'se740f75b95a51807': `Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.`,\n'sfea652f6580ff086': `Этот веб-сайт имеет функционал приложения.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Tarayıcı menünüzü açın`,\n's182ab2d6c997515f': `Daha iyi bir deneyim ve kolay erişim için Ana Ekranınıza ekleyin.`,\n's1b9047d53d9f9d22': `2) Gezinme çubuğunda Paylaş'a basın`,\n's2d90afa5dcca2c0e': `3) \"Ana Ekrana Ekle\" seçeneğine kadar aşağı kaydırın`,\n's37a9e8aec5713460': `Daha Fazla`,\n's4593f304dac8848c': `2) \"Ana Ekrana Ekle\"ye dokunun`,\n's54cfbb14f46396d4': `1) Ana tarayıcınızda açın`,\n's6196153c4b0c1ea0': `Yükle`,\n's922329d6f6213590': `Dock’a Ekle`,\n'sa5ef80b4bb9b39f8': `Küçült`,\n'sa7551383d1897fcc': `2) Dock’a ekleye basın`,\n'sba52286c21552a4e': `Daha iyi bir deneyim ve kolay erişim için cihazınıza yükleyin.`,\n'sc79fd7641eb9a975': `Talimatları gizle`,\n'scdaf4bbff76674c8': `Ana Ekrana Ekle`,\n'se740f75b95a51807': `Daha iyi bir deneyim ve kolay erişim için Dock’a ekleyin.`,\n'sfea652f6580ff086': `Bu site uygulama işlevselliğine sahiptir.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Öffnen Sie das Menü Ihres Browsers`,\n's182ab2d6c997515f': `Fügen Sie es zu Ihrem Startbildschirm hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n's1b9047d53d9f9d22': `2) Drücken Sie auf Teilen in der Navigationsleiste`,\n's2d90afa5dcca2c0e': `3) Scrollen Sie nach unten zu \"Zum Startbildschirm hinzufügen\"`,\n's37a9e8aec5713460': `Mehr`,\n's4593f304dac8848c': `2) Tippen Sie auf \"Zum Startbildschirm hinzufügen\"`,\n's54cfbb14f46396d4': `1) Öffnen Sie es in Ihrem Hauptbrowser`,\n's6196153c4b0c1ea0': `Installieren`,\n's922329d6f6213590': `Zum Dock hinzufügen`,\n'sa5ef80b4bb9b39f8': `Weniger`,\n'sa7551383d1897fcc': `2) Drücken Sie auf Zum Dock hinzufügen`,\n'sba52286c21552a4e': `Installieren Sie es auf Ihrem Gerät für eine umfassende Erfahrung und einen leichten Zugriff.`,\n'sc79fd7641eb9a975': `Anleitung ausblenden`,\n'scdaf4bbff76674c8': `Hinzufügen zum Startbildschirm`,\n'se740f75b95a51807': `Fügen Sie es zu Ihrem Dock hinzu, um eine umfassende Erfahrung und einen leichten Zugriff zu erhalten.`,\n'sfea652f6580ff086': `Diese Website verfügt über App-Funktionalität.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Abre el menú de tu navegador`,\n's182ab2d6c997515f': `Añádelo a tu pantalla de inicio para una experiencia amplia y acceso fácil.`,\n's1b9047d53d9f9d22': `2) Presionar Compartir en la barra de direcciones`,\n's2d90afa5dcca2c0e': `3) Desplázate hacia abajo hasta \"Añadir a pantalla de inicio\"`,\n's37a9e8aec5713460': `Más`,\n's4593f304dac8848c': `2) Toca \"Añadir a pantalla de inicio\"`,\n's54cfbb14f46396d4': `1) Abre en tu navegador principal`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Añadir al Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Presionar Añadir al Dock`,\n'sba52286c21552a4e': `Instálalo en tu dispositivo para una experiencia amplia y acceso fácil.`,\n'sc79fd7641eb9a975': `Esconder instrucciones`,\n'scdaf4bbff76674c8': `Añadir a pantalla de inicio`,\n'se740f75b95a51807': `Añádelo a tu Dock para una experiencia amplia y acceso fácil.`,\n'sfea652f6580ff086': `Este sitio tiene funcionalidad de aplicación.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Open je browsermenu`,\n's182ab2d6c997515f': `Voeg het toe aan je startscherm voor een uitgebreide ervaring en gemakkelijke toegang.`,\n's1b9047d53d9f9d22': `2) Druk op delen in de navigatiebalk`,\n's2d90afa5dcca2c0e': `3) Scrol naar beneden naar \"Toevoegen aan startscherm\"`,\n's37a9e8aec5713460': `Meer`,\n's4593f304dac8848c': `2) Tik op \"Toevoegen aan startscherm\"`,\n's54cfbb14f46396d4': `1) Open in je hoofdprogramma`,\n's6196153c4b0c1ea0': `Installeren`,\n's922329d6f6213590': `Toevoegen aan Dock`,\n'sa5ef80b4bb9b39f8': `Minder`,\n'sa7551383d1897fcc': `2) Druk op Toevoegen aan Dock`,\n'sba52286c21552a4e': `Installeer het op je apparaat voor een uitgebreide ervaring en gemakkelijke toegang.`,\n'sc79fd7641eb9a975': `Instructie verbergen`,\n'scdaf4bbff76674c8': `Toevoegen aan het startscherm`,\n'se740f75b95a51807': `Voeg het toe aan je Dock voor een uitgebreide ervaring en makkelijke toegang.`,\n'sfea652f6580ff086': `Deze site heeft app-functionaliteit.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Ανοίξτε το μενού του περιηγητή σας`,\n's182ab2d6c997515f': `Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n's1b9047d53d9f9d22': `2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης`,\n's2d90afa5dcca2c0e': `3) Κάντε κύλιση προς τα κάτω στο \"Προσθήκη στην οθόνη Αφετηρίας\"`,\n's37a9e8aec5713460': `Περισσότερα`,\n's4593f304dac8848c': `2) Πατήστε \"Προσθήκη στην οθόνη Αφετηρίας\"`,\n's54cfbb14f46396d4': `1) Ανοίξτε στον κύριο περιηγητή σας`,\n's6196153c4b0c1ea0': `Εγκατάσταση`,\n's922329d6f6213590': `Προσθήκη στην Πρόσβαση`,\n'sa5ef80b4bb9b39f8': `Λιγότερα`,\n'sa7551383d1897fcc': `2) Πατήστε Προσθήκη στην Πρόσβαση`,\n'sba52286c21552a4e': `Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sc79fd7641eb9a975': `Απόκρυψη Οδηγιών`,\n'scdaf4bbff76674c8': `Προσθήκη στην Οθόνη Αφετηρίας`,\n'se740f75b95a51807': `Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.`,\n'sfea652f6580ff086': `Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Ouvrez le menu de votre navigateur`,\n's182ab2d6c997515f': `Ajoutez-le à votre écran d'accueil pour une expérience étendue et un accès facile.`,\n's1b9047d53d9f9d22': `2) Appuyez sur Partager dans la barre de navigation`,\n's2d90afa5dcca2c0e': `3) Faites défiler vers le bas jusqu'à \"Ajouter à l'écran d'accueil\"`,\n's37a9e8aec5713460': `Plus`,\n's4593f304dac8848c': `2) Touchez \"Ajouter à l'écran d'accueil\"`,\n's54cfbb14f46396d4': `1) Ouvrir dans votre navigateur principal`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Ajouter au Dock`,\n'sa5ef80b4bb9b39f8': `Moins`,\n'sa7551383d1897fcc': `2) Appuyez sur Ajouter au Dock`,\n'sba52286c21552a4e': `Installez-le sur votre appareil pour une expérience complète et un accès facile.`,\n'sc79fd7641eb9a975': `Masquer les instructions`,\n'scdaf4bbff76674c8': `Ajouter à l'écran d'accueil`,\n'se740f75b95a51807': `Ajoutez-le à votre Dock pour une expérience étendue et un accès facile.`,\n'sfea652f6580ff086': `Ce site possède des fonctionnalités d'application.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Отворите мени вашег прегледача`,\n's182ab2d6c997515f': `Додајте га на Home Screen за широке могућности и лак приступ.`,\n's1b9047d53d9f9d22': `2) Притисните Share у навигационој траци`,\n's2d90afa5dcca2c0e': `3) Померите се надоле до \"Add to Home Screen\"`,\n's37a9e8aec5713460': `Више`,\n's4593f304dac8848c': `2) Додирните \"Add to Home Screen\"`,\n's54cfbb14f46396d4': `1) Отворите у вашем главном прегледачу`,\n's6196153c4b0c1ea0': `Инсталирај`,\n'sa5ef80b4bb9b39f8': `Мање`,\n'sa7551383d1897fcc': `3) Притисните Add to Dock`,\n'sba52286c21552a4e': `Инсталирајте га на вашем уређају за широке могућности и лак приступ.`,\n'sc79fd7641eb9a975': `Сакриј упутство`,\n'se740f75b95a51807': `Додајте га у вашу Dock за широке могућности и лак приступ.`,\n'sfea652f6580ff086': `Овај сајт има функционалност апликације.`,\n's922329d6f6213590': `Add to Dock`,\n'scdaf4bbff76674c8': `Add to Home Screen`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Otwórz menu przeglądarki`,\n's182ab2d6c997515f': `Dodaj do swojego Ekranu Głównego, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n's1b9047d53d9f9d22': `2) Wybierz \"Udostępnij\"`,\n's2d90afa5dcca2c0e': `3) Przewiń w dół do opcji \"Dodaj do Ekranu Głównego\"`,\n's37a9e8aec5713460': `Więcej`,\n's4593f304dac8848c': `2) Naciśnij \"Dodaj do Ekranu Głównego\"`,\n's54cfbb14f46396d4': `1) Otwórz w swojej głównej przeglądarce`,\n's6196153c4b0c1ea0': `Zainstaluj`,\n's922329d6f6213590': `Dodaj do Docka`,\n'sa5ef80b4bb9b39f8': `Mniej`,\n'sa7551383d1897fcc': `2) Wybierz \"Dodaj do Docka\"`,\n'sba52286c21552a4e': `Zainstaluj na swoim urządzeniu, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sc79fd7641eb9a975': `Ukryj instrukcję`,\n'scdaf4bbff76674c8': `Dodaj do Ekranu Głównego`,\n'se740f75b95a51807': `Dodaj do swojego Docka, aby uzyskać bogate doświadczenie i łatwy dostęp.`,\n'sfea652f6580ff086': `Ta strona posiada funkcje aplikacji.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Відкрити меню браузера`,\n's182ab2d6c997515f': `Додайте на Домашній екран для зручного доступу та ширших можливостей.`,\n's1b9047d53d9f9d22': `2) Натиснути «Поділитися»`,\n's2d90afa5dcca2c0e': `3) Прокрутіть вниз до «На Початковий экран»`,\n's37a9e8aec5713460': `Детальніше`,\n's4593f304dac8848c': `2) Натиснути «На Початковий экран»`,\n's54cfbb14f46396d4': `1) Відкрити у вашому основному браузері`,\n's6196153c4b0c1ea0': `Встановити`,\n's922329d6f6213590': `Додати на Dock`,\n'sa5ef80b4bb9b39f8': `Згорнути`,\n'sa7551383d1897fcc': `2) Натиснути «Додати на Dock»`,\n'sba52286c21552a4e': `Встановіть на ваш пристрій для зручного доступу та ширших можливостей.`,\n'sc79fd7641eb9a975': `Сховати Інструкцію`,\n'scdaf4bbff76674c8': `На Початковий экран`,\n'se740f75b95a51807': `Додайте на панель Dock для зручного доступу та ширших можливостей.`,\n'sfea652f6580ff086': `Цей сайт має функції додатку.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 打開您的瀏覽器菜單`,\n's182ab2d6c997515f': `將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。`,\n's1b9047d53d9f9d22': `2) 點擊列表上的分享按鈕`,\n's2d90afa5dcca2c0e': `3) 向下滾動到「添加到主屏幕」`,\n's37a9e8aec5713460': `詳細資訊`,\n's4593f304dac8848c': `2) 點擊「添加到主屏幕」`,\n's54cfbb14f46396d4': `1) 在您的主要瀏覽器中打開`,\n's6196153c4b0c1ea0': `安裝`,\n's922329d6f6213590': `添加到Dock欄`,\n'sa5ef80b4bb9b39f8': `簡短資訊`,\n'sa7551383d1897fcc': `2) 點選添加到Dock欄`,\n'sba52286c21552a4e': `在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。`,\n'sc79fd7641eb9a975': `隱藏安裝流程`,\n'scdaf4bbff76674c8': `將App加入主畫面`,\n'se740f75b95a51807': `將其加入你的Dock欄,以獲得更豐富的體驗和便捷訪問。`,\n'sfea652f6580ff086': `此網站具有應用程式功能。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 打开浏览器菜单`,\n's182ab2d6c997515f': `将其添加到主屏幕,以享受更丰富的体验并便于访问。`,\n's1b9047d53d9f9d22': `2) 点击导航栏中的“分享”按钮`,\n's2d90afa5dcca2c0e': `3) 向下滚动至“添加到主屏幕”`,\n's37a9e8aec5713460': `更多`,\n's4593f304dac8848c': `2) 轻触“添加到主屏幕”`,\n's54cfbb14f46396d4': `1) 在您的主浏览器中打开`,\n's6196153c4b0c1ea0': `安装`,\n's922329d6f6213590': `添加到程序坞`,\n'sa5ef80b4bb9b39f8': `收起`,\n'sa7551383d1897fcc': `2) 点击“添加到程序坞”`,\n'sba52286c21552a4e': `在您的设备上安装,以享受更丰富的体验并便于访问。`,\n'sc79fd7641eb9a975': `隐藏安装步骤`,\n'scdaf4bbff76674c8': `添加到主屏幕`,\n'se740f75b95a51807': `将其添加到您的程序坞,以享受更全面的体验并便于访问。`,\n'sfea652f6580ff086': `此网站具备 App 功能特性。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Apri il menu del tuo browser`,\n's182ab2d6c997515f': `Aggiungilo alla schermata principale per un'esperienza più completa e un accesso facile.`,\n's1b9047d53d9f9d22': `2) Premi Condividi nella barra di navigazione`,\n's2d90afa5dcca2c0e': `3) Scorri verso il basso fino a \"Aggiungi alla schermata principale\"`,\n's37a9e8aec5713460': `Più`,\n's4593f304dac8848c': `2) Tocca \"Aggiungi alla schermata principale\"`,\n's54cfbb14f46396d4': `1) Apri nel tuo browser principale`,\n's6196153c4b0c1ea0': `Installa`,\n's922329d6f6213590': `Aggiungi al Dock`,\n'sa5ef80b4bb9b39f8': `Meno`,\n'sa7551383d1897fcc': `2) Premi Aggiungi al Dock`,\n'sba52286c21552a4e': `Installalo sul tuo dispositivo per un'esperienza più completa e un accesso facile.`,\n'sc79fd7641eb9a975': `Nascondi istruzioni`,\n'scdaf4bbff76674c8': `Aggiungi alla schermata principale`,\n'se740f75b95a51807': `Aggiungilo al Dock per un'esperienza più completa e un accesso facile.`,\n'sfea652f6580ff086': `Questo sito ha funzionalità di app.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Otevřete nabídku prohlížeče`,\n's182ab2d6c997515f': `Přidejte jej na plochu pro rozšířené využití a snadný přístup.`,\n's1b9047d53d9f9d22': `2) Stiskněte tlačítko Sdílet na navigačním panelu`,\n's2d90afa5dcca2c0e': `3) Projděte dolů k \"Přidat na plochu\"`,\n's37a9e8aec5713460': `Více`,\n's4593f304dac8848c': `2) Klepněte na \"Přidat na plochu\"`,\n's54cfbb14f46396d4': `1) Otevřete v hlavním prohlížeči`,\n's6196153c4b0c1ea0': `Nainstalovat`,\n's922329d6f6213590': `Přidat do Docku`,\n'sa5ef80b4bb9b39f8': `Méně`,\n'sa7551383d1897fcc': `2) Stiskněte Přidat do Docku`,\n'sba52286c21552a4e': `Nainstalujte si jej na své zařízení pro rozšířené využití a snadný přístup.`,\n'sc79fd7641eb9a975': `Skrýt instrukce`,\n'scdaf4bbff76674c8': `Přidat na plochu`,\n'se740f75b95a51807': `Přidejte jej do svého Docku pro rozšířené využití a snadný přístup.`,\n'sfea652f6580ff086': `Tento web má funkce aplikace.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Åpne menyen i nettleseren din`,\n's182ab2d6c997515f': `Legg den til på Hjem-skjermen din for å få en bedre brukeropplevelse og raskere tilgang.`,\n's1b9047d53d9f9d22': `2) Trykk på Del-knappen i navigasjonslinjen`,\n's2d90afa5dcca2c0e': `3) Rull ned til «Legg til på Hjem-skjerm»`,\n's37a9e8aec5713460': `Mer`,\n's4593f304dac8848c': `2) Trykk på \"Legg til på Hjem-skjerm\"`,\n's54cfbb14f46396d4': `1) Åpne i hovednettleseren din`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Legg til i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Velg Legg til i Dock`,\n'sba52286c21552a4e': `Installer den på enheten din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sc79fd7641eb9a975': `Skjul instruksjoner`,\n'scdaf4bbff76674c8': `Legg til på Hjem-skjerm`,\n'se740f75b95a51807': `Legg den til i Docken din for å få en bedre brukeropplevelse og raskere tilgang.`,\n'sfea652f6580ff086': `Denne siden har app-funksjonalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Abra o menu do seu navegador`,\n's182ab2d6c997515f': `Adicione à Tela de Início para uma melhor experiência e mais fácil acesso.`,\n's1b9047d53d9f9d22': `2) Pressione Compartilhar na barra de endereço`,\n's2d90afa5dcca2c0e': `3) Role para baixo até \"Adicionar à Tela de Início\"`,\n's37a9e8aec5713460': `Mais`,\n's4593f304dac8848c': `2) Toque em \"Adicionar à Tela de Início\"`,\n's54cfbb14f46396d4': `1) Abra no seu navegador principal`,\n's6196153c4b0c1ea0': `Instalar`,\n's922329d6f6213590': `Adicionar ao Dock`,\n'sa5ef80b4bb9b39f8': `Menos`,\n'sa7551383d1897fcc': `2) Pressione Adicionar ao Dock`,\n'sba52286c21552a4e': `Instale no dispositivo para uma melhor experiência e mais fácil acesso.`,\n'sc79fd7641eb9a975': `Ocultar Instruções`,\n'scdaf4bbff76674c8': `Adicionar à Tela de Início`,\n'se740f75b95a51807': `Adicione ao Dock para uma melhor experiência e mais fácil acesso.`,\n'sfea652f6580ff086': `Este site possui funcionalidade de aplicativo.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) ブラウザメニューを開く`,\n's182ab2d6c997515f': `ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。`,\n's1b9047d53d9f9d22': `2) ナビゲーションバーで共有を押す`,\n's2d90afa5dcca2c0e': `3) 「ホーム画面に追加」までスクロールする`,\n's37a9e8aec5713460': `展開`,\n's4593f304dac8848c': `2) 「ホーム画面に追加」をタップする`,\n's54cfbb14f46396d4': `1) メインブラウザで開く`,\n's6196153c4b0c1ea0': `インストール`,\n's922329d6f6213590': `Dockに追加`,\n'sa5ef80b4bb9b39f8': `折りたたむ`,\n'sa7551383d1897fcc': `2) 「Dockに追加」を押す`,\n'sba52286c21552a4e': `デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。`,\n'sc79fd7641eb9a975': `説明を非表示`,\n'scdaf4bbff76674c8': `ホーム画面に追加`,\n'se740f75b95a51807': `ドックに追加して、幅広い体験と簡単なアクセスを実現してください。`,\n'sfea652f6580ff086': `このサイトはアプリ機能があります。`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Öppna din webbläsares meny`,\n's182ab2d6c997515f': `Lägg till på hemskärmen för att få en bättre användarupplevelse och enklare åtkomst.`,\n's1b9047d53d9f9d22': `2) Tryck på Dela-knappen i verktygsfältet`,\n's2d90afa5dcca2c0e': `3) Scrolla ner till \"Lägg till på hemskärmen\"`,\n's37a9e8aec5713460': `Mer`,\n's4593f304dac8848c': `2) Tryck på \"Lägg till på hemskärmen\"`,\n's54cfbb14f46396d4': `1) Öppna i din huvudsakliga webbläsare`,\n's6196153c4b0c1ea0': `Installera`,\n's922329d6f6213590': `Lägg till i Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Välj Lägg till i Dock`,\n'sba52286c21552a4e': `Installera den på din enhet för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sc79fd7641eb9a975': `Göm instruktioner`,\n'scdaf4bbff76674c8': `Lägg till på hemskärmen`,\n'se740f75b95a51807': `Lägg till i Dock för att få en bättre användarupplevelse och enklare åtkomst.`,\n'sfea652f6580ff086': `Denna webbsajt har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) 브라우저 메뉴 열기`,\n's182ab2d6c997515f': `더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.`,\n's1b9047d53d9f9d22': `2) 내비게이션 바에서 공유 버튼 누르기`,\n's2d90afa5dcca2c0e': `3) \"홈 화면에 추가\"로 스크롤하기`,\n's37a9e8aec5713460': `더보기`,\n's4593f304dac8848c': `2) \"홈 화면에 추가\" 탭하기`,\n's54cfbb14f46396d4': `1) 주 브라우저에서 열기`,\n's6196153c4b0c1ea0': `설치`,\n's922329d6f6213590': `Dock에 추가`,\n'sa5ef80b4bb9b39f8': `닫기`,\n'sa7551383d1897fcc': `2) Dock에 추가 버튼 누르기`,\n'sba52286c21552a4e': `더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.`,\n'sc79fd7641eb9a975': `안내 숨기기`,\n'scdaf4bbff76674c8': `홈 화면에 추가`,\n'se740f75b95a51807': `더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.`,\n'sfea652f6580ff086': `이 사이트는 앱 기능을 가지고 있습니다.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) បើកម៉ឺនុយកម្មវិធីរុករករបស់អ្នក`,\n's182ab2d6c997515f': `បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n's1b9047d53d9f9d22': `2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ`,\n's2d90afa5dcca2c0e': `3) អូសចុះទៅកាន់ \"បន្ថែមទៅផ្ទាំងអេក្រង់ដើម\"`,\n's37a9e8aec5713460': `បង្ហាញបន្ថែម`,\n's4593f304dac8848c': `2) ចុចលើ \"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម\"`,\n's54cfbb14f46396d4': `1) បើកនៅក្នុងកម្មវិធីរុករកសំខាន់របស់អ្នក`,\n's6196153c4b0c1ea0': `តំឡើង`,\n's922329d6f6213590': `បន្ថែមទៅកាន់ Dock`,\n'sa5ef80b4bb9b39f8': `បង្ហាញតិច`,\n'sa7551383d1897fcc': `2) ចុចលើ បន្ថែមទៅកាន់ Dock`,\n'sba52286c21552a4e': `តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sc79fd7641eb9a975': `បិទការណែនាំ`,\n'scdaf4bbff76674c8': `បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម`,\n'se740f75b95a51807': `បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។`,\n'sfea652f6580ff086': `គេហទំព័រនេះមានមុខងារជាកម្មវិធី។`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `۱) مرورگر خود را باز کنید`,\n's182ab2d6c997515f': `برای تجربه گسترده و دسترسی آسان آن را به صفحه اصلی خود اضافه کنید.`,\n's1b9047d53d9f9d22': `۱)در نوار پایین دکمه (Share) را بزنید`,\n's2d90afa5dcca2c0e': `۳) به پایین اسکرول کنید تا به \"Add to Home Screen\" برسید`,\n's37a9e8aec5713460': `بیشتر`,\n's4593f304dac8848c': `۲) روی \"Add to Home screen\" ضربه بزنید`,\n's54cfbb14f46396d4': `۱) در مرورگر اصلی خود باز کنید`,\n's6196153c4b0c1ea0': `نصب`,\n's922329d6f6213590': `افزودن به (Dock)`,\n'sa5ef80b4bb9b39f8': `کمتر`,\n'sa7551383d1897fcc': `۲) (Add to Dock) را انتخاب کنید `,\n'sba52286c21552a4e': `برای تجربه گسترده و دسترسی آسان آن را بر روی دستگاه خود نصب کنید.`,\n'sc79fd7641eb9a975': ` مخفی کردن مراحل`,\n'scdaf4bbff76674c8': `افزودن به (Home Screen)`,\n'se740f75b95a51807': `برای تجربه گسترده و دسترسی آسان آن را به Dock خود اضافه کنید.`,\n'sfea652f6580ff086': ` این سایت دارای قابلیت اپلیکیشن است. `,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Åbn din browsermenu`,\n's182ab2d6c997515f': `Tilføj den til din hjemmeskærm for en bedre oplevelse og nem adgang.`,\n's1b9047d53d9f9d22': `2) Tryk på Del-knappen i navigationslinjen`,\n's2d90afa5dcca2c0e': `3) Rul ned til \"Tilføj til hjemmeskærm\"`,\n's37a9e8aec5713460': `Mere`,\n's4593f304dac8848c': `2) Tryk på \"Tilføj til hjemmeskærm\"`,\n's54cfbb14f46396d4': `1) Åbn i din primære browser`,\n's6196153c4b0c1ea0': `Installer`,\n's922329d6f6213590': `Tilføj til Dock`,\n'sa5ef80b4bb9b39f8': `Mindre`,\n'sa7551383d1897fcc': `2) Vælg Tilføj til Dock`,\n'sba52286c21552a4e': `Installer den på din enhed for en bedre oplevelse og nem adgang.`,\n'sc79fd7641eb9a975': `Skjul instruktion`,\n'scdaf4bbff76674c8': `Tilføj til hjemmeskærm`,\n'se740f75b95a51807': `Tilføj den til din Dock for en bedre oplevelse og nem adgang.`,\n'sfea652f6580ff086': `Denne side har app-funktionalitet.`,\n };\n ","\n // Do not modify this file by hand!\n // Re-generate this file by running lit-localize\n\n \n \n\n /* eslint-disable no-irregular-whitespace */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export const templates = {\n 's1488e73779d7682f': `1) Mở menu trình duyệt của bạn`,\n's182ab2d6c997515f': `Thêm nó vào màn hình chính của bạn để có trải nghiệm phong phú hơn và truy cập dễ dàng hơn.`,\n's1b9047d53d9f9d22': `2) Nhấp vào nút \"Chia sẻ\" trên thanh điều hướng`,\n's2d90afa5dcca2c0e': `3) Kéo đến mục \"Thêm vào Màn hình chính\"`,\n's37a9e8aec5713460': `Thêm`,\n's4593f304dac8848c': `2) Nhấn vào \"Thêm vào Màn hình chính\"`,\n's54cfbb14f46396d4': `1) Mở trình duyệt chính của bạn`,\n's6196153c4b0c1ea0': `Cài đặt`,\n's922329d6f6213590': `Thêm vào Dock`,\n'sa5ef80b4bb9b39f8': `Thu gọn`,\n'sa7551383d1897fcc': `2) Nhấp vào \"Thêm vào Dock\"`,\n'sba52286c21552a4e': `Cài đặt trên thiết bị của bạn để có trải nghiệm phong phú hơn và truy cập dễ dàng.`,\n'sc79fd7641eb9a975': `Ẩn các bước cài đặt`,\n'scdaf4bbff76674c8': `Thêm vào màn hình chính`,\n'se740f75b95a51807': `Thêm nó vào Dock của bạn để có trải nghiệm toàn diện hơn và truy cập dễ dàng hơn.`,\n'sfea652f6580ff086': `Trang web này có cả chức năng đặc trưng ứng dụng.`,\n };\n ","import { configureLocalization } from '@lit/localize';\r\nimport {\r\n sourceLocale,\r\n targetLocales,\r\n} from './locale-codes';\r\n\r\nimport * as ru from './locales/ru';\r\nimport * as tr from './locales/tr';\r\nimport * as de from \"./locales/de\";\r\nimport * as es from \"./locales/es\";\r\nimport * as nl from \"./locales/nl\";\r\nimport * as el from \"./locales/el\";\r\nimport * as fr from \"./locales/fr\";\r\nimport * as sr from \"./locales/sr\";\r\nimport * as pl from \"./locales/pl\";\r\nimport * as uk from \"./locales/uk\";\r\nimport * as zhHK from \"./locales/zh-HK\";\r\nimport * as zhCN from \"./locales/zh-CN\";\r\nimport * as it from \"./locales/it\";\r\nimport * as cs from \"./locales/cs\";\r\nimport * as no from \"./locales/no\";\r\nimport * as pt from \"./locales/pt\";\r\nimport * as ja from \"./locales/ja\";\r\nimport * as sv from \"./locales/sv\";\r\nimport * as ko from \"./locales/ko\";\r\nimport * as km from \"./locales/km\";\r\nimport * as fa from \"./locales/fa\";\r\nimport * as da from \"./locales/da\";\r\nimport * as vi from \"./locales/vi\";\r\n\r\nconst localizedTemplates = new Map([\r\n ['ru', ru],\r\n ['tr', tr],\r\n ['de', de],\r\n ['es', es],\r\n ['nl', nl],\r\n ['el', el],\r\n ['fr', fr],\r\n ['sr', sr],\r\n ['pl', pl],\r\n ['uk', uk],\r\n ['zh-HK', zhHK],\r\n ['zh-CN', zhCN],\r\n ['it', it],\r\n ['cs', cs],\r\n ['no', no], // + nb\r\n ['pt', pt],\r\n ['ja', ja],\r\n ['sv', sv],\r\n ['ko', ko],\r\n ['km', km],\r\n ['fa', fa],\r\n ['da', da],\r\n ['vi', vi],\r\n])\r\n\r\nexport const { getLocale, setLocale } = configureLocalization({\r\n sourceLocale,\r\n targetLocales,\r\n // @ts-ignore\r\n loadLocale: async (lang: string) => localizedTemplates.get(lang)\r\n});\r\n\r\nexport const changeLocale = async (lang: string) => {\r\n // Norwegian Bokmål is same as Norwegian\r\n switch (lang.slice(0, 2)) {\r\n case 'nb':\r\n lang = 'no';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // Fallback to simplified Chinese\r\n switch (lang) {\r\n case 'zh':\r\n case 'zh-TW':\r\n lang = 'zh-CN';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n try {\r\n if (localizedTemplates.get(lang))\r\n await setLocale(lang);\r\n else\r\n await setLocale(lang.slice(0, 2));\r\n }\r\n catch {\r\n console.warn(`pwa-install: translation error - unsupported locale: ${lang}`);\r\n }\r\n};\r\n\r\nexport const isRTL = () => {\r\n let locale = getLocale();\r\n return ['ar', 'he', 'fa', 'ur'].includes(getLocale());\r\n}\r\n","import { ImageResource } from 'web-app-manifest';\r\n\r\nexport interface IRelatedApp {\r\n id: string,\r\n platform: string,\r\n url: string\r\n}\r\n\r\nexport interface IWindow extends Window {\r\n defferedPromptEvent: BeforeInstallPromptEvent | null;\r\n BeforeInstallPromptEvent: BeforeInstallPromptEvent;\r\n}\r\n\r\ntype Booleanish = 'true' | 'false';\r\n\r\nexport interface PWAInstallAttributes {\r\n ['manual-apple']?: Booleanish;\r\n ['manual-chrome']?: Booleanish;\r\n ['disable-chrome']?: Booleanish;\r\n ['install-description']?: string;\r\n ['disable-install-description']?: Booleanish;\r\n ['manifest-url']?: string;\r\n name?: string;\r\n description?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface ManifestScreenshot extends ImageResource {\r\n label?: string;\r\n platform?: string;\r\n form_factor?: \"wide\" | \"narrow\";\r\n}\r\n\r\nexport class Manifest {\r\n constructor() {\r\n this.icons = [{ src: '' }];\r\n this.screenshots = undefined;\r\n this.short_name = 'PWA';\r\n this.name = 'Progressive web application';\r\n this.description = 'Progressive web application';\r\n }\r\n short_name: string;\r\n icons: ImageResource[];\r\n screenshots?: ManifestScreenshot[];\r\n name: string;\r\n description: string;\r\n}\r\n","import {css} from 'lit'; export default css`.gallery{position:relative;--scrollbar-background-color:#fff;--scrollbar-thumb-color:rgb(146, 146, 146);--scrollbar-thumb-hover-color:rgb(100, 100, 100);--nav-btn-background-color:#fff;--nav-btn-fill-color:#141414}.gallery .gallery_scroller{scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;padding:10px 13px;padding-bottom:10px;margin:0 10px;-webkit-overflow-scrolling:touch}.gallery .gallery_scroller img{border-radius:6px;max-height:min(45vh,500px);box-shadow:0 3px 10px 0 rgba(0,0,0,.15);scroll-snap-align:center;scroll-snap-stop:always;position:relative}.gallery .gallery_scroller img+img{margin-inline-start:15px}.gallery .gallery_scroller::-webkit-scrollbar{width:4px;height:2px}.gallery .gallery_scroller::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:4px}.gallery .gallery_scroller::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.gallery .gallery_scroller::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.gallery .gallery_scroller .scroller_wrap{display:flex;flex-direction:row;padding-inline-end:13px}.gallery .btn{position:absolute;display:flex;align-items:center;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);height:30px;width:30px;border-radius:50%;background-color:var(--nav-btn-background-color);box-shadow:rgba(0,0,0,.3) 2px 4px 4px 1px;background-repeat:no-repeat;opacity:.8;z-index:1}.gallery .btn.prev{left:5px}.gallery .btn.prev svg{margin-left:4px}.gallery .btn.next{right:5px}.gallery .btn.next svg{transform:rotate(180deg);margin-left:6px}.gallery .btn:hover{box-shadow:rgba(0,0,0,.5) 2px 4px 4px 1px;cursor:pointer;opacity:1}.gallery .btn svg{width:20px;height:20px;margin:0 auto}.gallery .btn svg path{fill:var(--nav-btn-fill-color)}.gallery.apple_desktop{--scrollbar-background-color:rgba(0, 0, 0, 0.1);--scrollbar-thumb-color:rgb(100, 100, 100);--scrollbar-thumb-hover-color:rgba(0, 0, 0, 0.85)}.gallery.apple_desktop .gallery_scroller{margin:0;padding-top:15px}.gallery.apple_desktop .btn{height:26px;width:26px;box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:hover{box-shadow:rgba(0,0,0,.3) 0 2px 2px 1px}.gallery.apple_desktop .btn:active{filter:brightness(95%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(110%)}.gallery.apple_desktop .btn svg{width:12px;height:auto;opacity:1}.gallery.apple_desktop .btn svg{margin-inline-start:7px}.gallery.apple_mobile .btn.prev svg{margin-inline-start:7px}.gallery.apple_mobile .btn svg{width:16px;height:auto}.gallery.apple_desktop .btn,.gallery.apple_mobile .btn{opacity:1}@media(hover:none)and (pointer:coarse){.gallery .btn.next,.gallery .btn.prev{display:none}.gallery_scroller::-webkit-scrollbar{display:none}}@media(prefers-color-scheme:dark){.gallery{--scrollbar-background-color:#424242;--nav-btn-background-color:#555555;--nav-btn-fill-color:#fff}.gallery.apple_desktop{--scrollbar-thumb-color:var(--nav-btn-fill-color);--scrollbar-background-color:var(--nav-btn-background-color);--scrollbar-thumb-hover-color:var(--nav-btn-fill-color)}.gallery.apple_desktop .btn:active{filter:brightness(110%)}.gallery.apple_desktop .btn:active .svg{filter:brightness(90%)}}`;\n ","import { WebAppManifest } from 'web-app-manifest';\r\nimport { IRelatedApp, Manifest } from './types/types';\r\n\r\nconst _eventDispatcher = (_element: Element, name: string, message: string) => {\r\n const event = new CustomEvent(name, {\r\n detail: {\r\n message\r\n }\r\n });\r\n _element.dispatchEvent(event);\r\n}\r\nexport default class Utils {\r\n static isAppleMobile(): boolean {\r\n\t\tif (\r\n (\r\n ['iPhone', 'iPad', 'iPod'].includes(navigator.platform) ||\r\n (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2)\r\n )\r\n && ('serviceWorker' in navigator)\r\n )\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static isAppleDesktop(): boolean {\r\n // check if it's a mac\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n if (navigator.maxTouchPoints || !userAgent.match(/macintosh/))\r\n return false;\r\n // check safari version >= 17\r\n const version = /version\\/(\\d{2})\\./.exec(userAgent)\r\n if (!version || !version[1] || !(parseInt(version[1]) >= 17))\r\n return false;\r\n // hacky way to detect Sonoma\r\n const audioCheck = document.createElement('audio').canPlayType('audio/wav; codecs=\"1\"') ? true : false;\r\n const webGLCheck = new OffscreenCanvas(1, 1).getContext('webgl') ? true : false;\r\n\r\n return audioCheck && webGLCheck;\r\n }\r\n\r\n static isAndroid(): boolean {\r\n if (navigator.userAgent.toLowerCase().match(/android/))\r\n return true;\r\n return false;\r\n }\r\n\r\n static isAndroidFallback(): boolean {\r\n if (this.isAndroid() && !('BeforeInstallPromptEvent' in window))\r\n return true;\r\n return false;\r\n }\r\n\r\n static deviceFormFactor(): 'narrow' | 'wide' {\r\n return window.matchMedia('(orientation: portrait)').matches? 'narrow' : 'wide';\r\n }\r\n \r\n static isStandalone() {\r\n\t\tif (window.matchMedia('(display-mode: standalone)').matches || ('standalone' in navigator && (navigator as any).standalone === true))\r\n\t\t\treturn true;\r\n\t\treturn false;\r\n }\r\n\r\n static async getInstalledRelatedApps(): Promise {\r\n if ('getInstalledRelatedApps' in navigator)\r\n try{\r\n return await (navigator as any).getInstalledRelatedApps().then((relatedApps: IRelatedApp[]) => {\r\n return relatedApps;\r\n });\r\n } catch (e) {}\r\n \r\n return [];\r\n }\r\n \r\n static async isRelatedAppsInstalled(): Promise {\r\n const _relatedApps = await this.getInstalledRelatedApps();\r\n return _relatedApps.length? true : false;\r\n }\r\n\r\n static setStorageFlag(name: string, value:boolean, persistent: boolean = false) {\r\n try {\r\n if (persistent)\r\n localStorage.setItem(name, value.toString());\r\n else\r\n sessionStorage.setItem(name, value.toString());\r\n } catch (e) {}\r\n }\r\n static getStorageFlag(name: string): boolean {\r\n try {\r\n return sessionStorage.getItem(name) === 'true' || localStorage.getItem(name) === 'true';\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n static eventInstalledSuccess(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-success-event', 'App install success (Chromium/Android only)');\r\n }\r\n static eventInstalledFail(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-fail-event', 'App install failed (Chromium/Android only)');\r\n }\r\n static eventUserChoiceResult(_element: Element, message: string) {\r\n _eventDispatcher(_element, 'pwa-user-choice-result-event', message);\r\n }\r\n static eventInstallAvailable(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-available-event', 'App install available');\r\n }\r\n static eventInstallHowTo(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-how-to-event', 'App install instruction showed');\r\n }\r\n static eventGallery(_element: Element) {\r\n _eventDispatcher(_element, 'pwa-install-gallery-event', 'App install gallery showed');\r\n }\r\n\r\n static normalizeManifestAssetUrls(manifest: WebAppManifest, manifestUrl: string) {\r\n const normalizedManifestUrl = new URL(manifestUrl, document.location.href);\r\n [...manifest.icons || [], ...manifest.screenshots || []].forEach(asset => {\r\n asset.src = new URL(asset.src, normalizedManifestUrl).href;\r\n })\r\n }\r\n\r\n static async fetchAndProcessManifest(manifestUrl: string, icon: string, name: string, description: string): Promise<{_manifest: WebAppManifest, icon: string, name: string, description: string}> {\r\n let _manifest: WebAppManifest = new Manifest();\r\n let _json: WebAppManifest | null = null;\r\n try{\r\n\t\t\tconst _response = await fetch(manifestUrl);\r\n\t\t\t_json = await _response.json() as WebAppManifest;\r\n\t\t\tif (!_response.ok || !_json || !Object.keys(_json))\r\n\t\t\t\tthrow new Error('Manifest not found');\r\n\t\t\tthis.normalizeManifestAssetUrls(_json, manifestUrl);\r\n } \r\n catch(e) {} \r\n\r\n icon = icon || (_json?.icons?.length ? _json?.icons![0].src : _manifest.icons?.[0].src) || '';\r\n name = name || (_json? _json['short_name']: _manifest['short_name']) || '';\r\n description = description || _json?.description || _manifest.description || '';\r\n\t\t_manifest = _json || _manifest;\r\n \r\n return {\r\n _manifest,\r\n icon,\r\n name,\r\n description\r\n }\r\n }\r\n}","import { html } from 'lit';\r\nimport Utils from '../utils';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nconst template = (screenshots: ManifestScreenshot[], theme: string, scrollToNextPage: any, scrollToPrevPage: any) => {\r\n\r\n return html`\r\n ${screenshots? html`\r\n
\r\n
\r\n
\r\n ${screenshots.filter(screenshot => !screenshot.form_factor || screenshot.form_factor === Utils.deviceFormFactor()).map(screenshot => html`${screenshot.label || \"\"}`)}\r\n
\r\n
\r\n \r\n ${theme != 'default'?\r\n html``\r\n :\r\n html``\r\n }\r\n \r\n \r\n ${theme != 'default'?\r\n html`\r\n \r\n `\r\n :\r\n html`\r\n \r\n \r\n \r\n `\r\n }\r\n \r\n
`\r\n : ''}`;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\nimport { ManifestScreenshot } from '../types/types';\r\n\r\nimport styles from './styles-gallery.scss';\r\nimport template from './template-gallery';\r\n\r\n@customElement('pwa-gallery')\r\nexport default class PWAGalleryElement extends LitElement {\r\n\t@property({ type: Array }) screenshots: ManifestScreenshot[] = [];\r\n\t@property() theme: 'default' | 'apple_desktop' | 'apple_mobile' = 'default';\r\n\t@property({ type: Boolean }) rtl: boolean = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn styles;\r\n\t}\r\n\r\n\tprivate getScrollElements = () => {\r\n\t\tconst gallery = this.shadowRoot?.querySelector('#paginated_gallery') as HTMLElement | null;\r\n\t\tif (!gallery) return;\r\n\t\t\r\n\t\tconst galleryScroller = gallery.querySelector('.gallery_scroller') as HTMLElement | null;\r\n\t\tif (!galleryScroller) return;\r\n\t\r\n\t\tconst galleryItems = Array.from(galleryScroller.querySelectorAll('img')) as HTMLElement[];\r\n\t\tif (galleryItems.length === 0) return;\r\n\t\r\n\t\treturn {\r\n\t\t\tscroller: galleryScroller,\r\n\t\t\titems: galleryItems\r\n\t\t};\r\n\t};\r\n\t\r\n\tprivate findCurrentItem = (scroller: HTMLElement, items: HTMLElement[]): HTMLElement | null => {\r\n\t\tconst scrollLeft = scroller.scrollLeft * (this.rtl? -1 : 1);\r\n\t \t// Find the item closest to the center of the viewport.\r\n\t\treturn items.find((item) => (item.offsetWidth + item.offsetLeft * (this.rtl? -1 : 1)) >= scrollLeft + (item.offsetWidth / 2.5)) || null;\r\n\t};\r\n\t\r\n\tprivate scrollToPage = (direction: 'next' | 'prev') => {\r\n\t\tconst scrollData = this.getScrollElements();\r\n\t\tif (!scrollData) return;\r\n\t\r\n\t\tconst { scroller, items } = scrollData;\r\n\t\tconst currentItem = this.findCurrentItem(scroller, items);\r\n\t\tif (!currentItem) return;\r\n\t\r\n\t\tconst currentIndex = items.indexOf(currentItem);\r\n\t\tconst offset = (direction === 'next' ? 1 : -1) * (this.rtl? -1 : 1) ;\r\n\t\tconst targetIndex = currentIndex + offset;\r\n\t\t\r\n\t\tif (targetIndex >= 0 && targetIndex < items.length) {\r\n\t\t\titems[targetIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\r\n\t\t}\r\n\t};\r\n\t\r\n\tpublic scrollToNextPage = () => {\r\n\t\tthis.scrollToPage('next');\r\n\t};\r\n\t\r\n\tpublic scrollToPrevPage = () => {\r\n\t\tthis.scrollToPage('prev');\r\n\t};\r\n\r\n\r\n\tprivate _init = () => {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tconst _tools = this.getScrollElements();\r\n\t\tif (_tools)\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\t_tools.scroller.scrollTo({\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t300\r\n\t\t\t)\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\tthis._init();\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(\r\n this.screenshots,\r\n\t\t\tthis.theme,\r\n\t\t\tthis.scrollToNextPage,\r\n\t\t\tthis.scrollToPrevPage\r\n )}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`.dialog-body .icon{display:flex;align-items:flex-start}.dialog-body .icon .icon-image{width:48px;height:48px;margin:0 auto;margin-top:10px;border-radius:6px}.dialog-body .about{display:grid;grid-template-rows:30px auto}.dialog-body .about .hostname,.dialog-body .about .name{padding:0 5px;overflow:hidden}.dialog-body .about .name{font-weight:500;font-size:18px;line-height:24px;margin-top:5px;align-items:flex-start;display:flex}.dialog-body .about .name label{text-overflow:ellipsis;word-break:break-all;white-space:nowrap;overflow:hidden}.dialog-body .about .hostname{font-size:13px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;text-align:start;word-break:break-all;white-space:nowrap}.dialog-body .about+hr{margin-top:10px}.dialog-body .description{font-weight:400;line-height:20px;grid-column:1/3;padding:0 6px;margin:10px 5px 5px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;max-height:115px;overflow:hidden;overflow-y:auto;text-overflow:ellipsis;text-align:start}.dialog-body .app-description{font-size:13px;margin-bottom:10px}.dialog-body .app-description::-webkit-scrollbar{width:4px;height:4px}.dialog-body .app-description::-webkit-scrollbar-thumb{background:#929292;border-radius:4px}.dialog-body .app-description::-webkit-scrollbar-thumb:hover{background:#646464}.dialog-body .app-description::-webkit-scrollbar-track{background:var(--scrollbar-background-color);border-radius:4px}.dialog-body .install-description{font-size:14px}.dialog-body hr{height:1px;width:100%;grid-column:1/3;background-color:var(--border-bottom-color);border:none;margin:0}.dialog-body .action-buttons{display:grid;grid-template-columns:50% auto;grid-column-start:1;grid-column-end:3;gap:10px;padding:10px 10px}.dialog-body .action-buttons .primary{grid-column-start:2}.dialog-body .material-button{--text-color-primary:#eee;--text-color-secondary:#374fc6;--background-color-primary:#374fc6;--background-color-ripple:#eee;position:relative;display:inline-block;box-sizing:border-box;border:none;border-radius:6px;padding:0 16px;min-width:64px;height:36px;vertical-align:middle;text-align:center;text-overflow:ellipsis;text-transform:uppercase;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);font-family:Roboto,\"Segoe UI\",BlinkMacSystemFont,system-ui,-apple-system;font-size:14px;font-weight:500;line-height:37px;overflow:hidden;outline:0;cursor:pointer;transition:box-shadow .2s}.dialog-body .material-button.primary{color:var(--text-color-primary);background-color:var(--background-color-primary)}.dialog-body .material-button.secondary{background-color:rgba(0,0,0,0);color:var(--text-color-secondary);box-shadow:none}.dialog-body .material-button.secondary::after,.dialog-body .material-button.secondary::before{background-color:var(--background-color-primary)}.dialog-body .material-button.secondary:active,.dialog-body .material-button.secondary:hover{box-shadow:none}.dialog-body .material-button.secondary.close{height:26px;min-width:26px;line-height:0;margin-inline-end:0;margin-inline-start:auto;padding:0;border-radius:50%}.dialog-body .material-button.secondary.close svg{width:16px;fill:var(--text-color-secondary)}.dialog-body .material-button.secondary.close::after{width:25px;height:25px;border-radius:50%}.dialog-body .material-button.secondary.close::before{border-radius:50%}.dialog-body .material-button::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--background-color-ripple);opacity:0;transition:opacity .2s}.dialog-body .material-button::after{content:\"\";position:absolute;left:50%;top:50%;border-radius:50%;padding:50%;width:32px;height:32px;background-color:var(--background-color-ripple);opacity:0;transform:translate(-50%,-50%) scale(1);transition:opacity 1s,transform .5s}.dialog-body .material-button:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.dialog-body .material-button:active::after{opacity:.32;transform:translate(-50%,-50%) scale(0);transition:transform 0s}.dialog-body pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}@media(prefers-color-scheme:dark){.dialog-body .material-button{--text-color-primary:#1B222C;--text-color-secondary:#a7c7fa;--background-color-primary:#a7c7fa}}@media(hover:none)and (pointer:coarse){.dialog-body .description::-webkit-scrollbar{display:none}}`;\n ","import {css} from 'lit'; export default css`:host{grid-template-columns:1fr}:host .touch-header{height:30px;width:100%;padding-top:10px;box-sizing:border-box;cursor:grab}:host .touch-header:active{cursor:grabbing}:host .touch-header::before{content:\"\";width:40px;height:5px;border-radius:3px;background:var(--touch-header-color);margin:0 auto;display:block}:host .body-header{display:grid;grid-template-columns:max-content 1fr max-content;grid-gap:15px;padding:18px 20px;padding-top:0;border-bottom:1px solid var(--border-bottom-color)}:host .body-header .install{text-transform:capitalize;height:40px;min-width:50px;padding:0 23px;align-items:center;display:inline-flex;-webkit-tap-highlight-color:transparent;transition:min-width .2s,color .2s,background-color .2s,border-color .2s}:host .body-header .install .button-text,:host .body-header .install svg{margin:0 auto}:host .body-header .install .check-icon{display:none}:host .body-header .about{grid-template-rows:auto auto;grid-gap:6px}:host .body-header .about .name{padding:0;line-height:20px;font-size:16px}:host .body-header .about .hostname{font-size:14px;font-weight:400;opacity:.7;line-height:14px;overflow-x:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;padding:0}:host .body-header .icon .icon-image{margin:0;width:45px;height:45px}:host .how-to-body{display:flex;flex-direction:column;gap:15px;max-height:0;overflow:hidden;padding:0 20px;opacity:0}:host .how-to-body .description-step{display:flex;gap:15px;margin-inline-start:2.5px;align-items:center}:host .how-to-body .description-step .svg-wrap{display:flex;align-items:center;width:40px;height:40px;background-color:var(--touch-header-color);border-radius:50%}:host .how-to-body .description-step .svg-wrap svg{fill:var(--text-color-normal);margin:0 auto}:host .how-to-body .description-step .svg-wrap.add-icon svg{padding-right:1px}:host .how-to .description,:host .how-to ::slotted(pwa-gallery){max-height:0;padding-top:0;padding-bottom:0;overflow:hidden;opacity:0}:host .how-to .how-to-body{max-height:600px;padding-top:18px;padding-bottom:18px;opacity:1}:host .how-to .install{min-width:40px;padding:0;background:rgba(0,0,0,0);color:var(--text-color-normal);box-shadow:none;border:1px solid}:host .how-to .install .check-icon{display:inline;fill:var(--text-color-normal)}:host .how-to .install .button-text{display:none}:host .description{padding:15px 20px;margin:0;-webkit-line-clamp:6;max-height:150px;opacity:1}:host ::slotted(pwa-gallery){display:block;max-height:600px;padding-bottom:15px;opacity:1;transition:max-height 1.5s,opacity .8s,padding 1.5s}:host .description,:host .how-to-body{transition:max-height .2s,opacity .15s,padding .2s}:host .material-button{border-radius:20px}`;\n ","import { html } from 'lit';\r\nimport { msg } from '@lit/localize';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\n\r\nconst fallbackClass = (isAndroidFallback: boolean = false, howToRequested: boolean = false) => {\r\n return {fallback: isAndroidFallback, 'how-to': howToRequested};\r\n}\r\n\r\nconst template = (name: string, description: string, icon: string, install: any, fallback?: boolean, howToRequested?: boolean) => {\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${location.hostname}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${msg('1) Open your browser menu')}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
${msg('2) Tap \"Add to Home screen\"')}
\r\n
\r\n
\r\n ${description ? html `
${description}
`: ''}\r\n \r\n
\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, html } from 'lit';\r\nimport { property, customElement } from 'lit/decorators.js';\r\n\r\nimport stylesCommon from '../styles-common.scss'\r\nimport styles from './styles-bottom-sheet.scss';\r\n\r\n// import TouchDragListener from \"./touch-listener\";\r\n\r\ntype IProps = {\r\n name: string,\r\n description: string,\r\n icon: string\r\n}\r\n\r\nimport template from './template-bottom-sheet';\r\nimport Utils from '../../../utils';\r\n\r\n@customElement('pwa-bottom-sheet')\r\nexport default class PWABottomSheetElement extends LitElement {\r\n\tstatic get styles() {\r\n\t\treturn [stylesCommon, styles];\r\n\t}\r\n\r\n\t@property({type: Object}) props: IProps = {\r\n name: '',\r\n description: '',\r\n icon: ''\r\n };\r\n @property({type: Object}) install = {handleEvent: () => {}};\r\n\t@property() hideDialog = () => {};\r\n\t@property({type: Boolean}) disableClose = false;\r\n\r\n\t@property({type: Boolean}) fallback = false;\r\n\t@property({type: Boolean}) howToRequested = false;\r\n\t@property({type: Object}) toggleHowTo = {handleEvent: () => {}};\r\n\r\n\tprivate _callInstall = () => {\r\n\t\tif (this.fallback) {\r\n\t\t\tthis.toggleHowTo.handleEvent();\r\n\t\t\tsetTimeout(() => this.setupAppearence(true), 210);\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.install.handleEvent();\r\n\t}\r\n\r\n\tprivate _callHide = () => {\r\n\t\tthis.hideDialog();\r\n\t\tthis.setupAppearence();\r\n\t}\r\n\r\n\tprivate bindedElement: {\r\n\t\ttouchElement: HTMLElement,\r\n\t\tlistener: any }| null = null;\r\n\tprivate readonly _saveBodyStyle = document.body.style.overscrollBehaviorY;\r\n\tprivate dragMobileSheet = (element: HTMLElement | null | undefined, touchTargetElement: HTMLElement | undefined, infoElement: HTMLElement | undefined) => {\r\n\t\tif (!element || !touchTargetElement || !infoElement)\r\n\t\t\treturn null;\r\n\r\n\t\tlet dragOffset = 0;\r\n\t\tconst bounceOffset = 35;\r\n\t\t\r\n\t\tconst bottomSize = infoElement.offsetHeight + infoElement.offsetTop;\r\n\r\n\t\tconst getYCoord = (e: MouseEvent | TouchEvent): number => {\r\n\t\t\treturn (e as MouseEvent).clientY || ((e as TouchEvent).changedTouches && (e as TouchEvent).changedTouches.length? (e as TouchEvent).changedTouches[0].clientY : 0);\r\n\t\t}\r\n\r\n\t\tconst dragMouseDown = (e: MouseEvent | TouchEvent) => {\r\n\t\t\twindow.addEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.addEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.addEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.addEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tdragOffset = getYCoord(e) - touchTargetElement.getBoundingClientRect().top;\r\n\r\n\t\t\tdocument.body.style.overscrollBehaviorY = 'none';\r\n\t\t}\r\n\t\tconst dragMouseUp = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tdocument.body.style.overscrollBehaviorY = this._saveBodyStyle;\r\n\r\n\t\t\tif (!this.disableClose && getYCoord(e) >= window.innerHeight - 25) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight + 50, true);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (window.innerHeight - getYCoord(e) > element.clientHeight / 2.5) {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - element.clientHeight);\r\n\t\t\t\t\r\n\t\t\t\ttry {\r\n\t\t\t\t\t!this.howToRequested && Utils.eventGallery((this.getRootNode() as ShadowRoot).host);\r\n\t\t\t\t} catch (e) {}\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcloseDragElement(e, window.innerHeight - bottomSize - bounceOffset);\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst dragMouseMove = (e: MouseEvent | TouchEvent) => {\r\n\t\t\tconst currentY = getYCoord(e);\r\n\r\n\t\t\tif (this.disableClose && window.innerHeight - currentY < 70) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (currentY <= (window.innerHeight - element.clientHeight + dragOffset)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`none`\r\n\t\t\t)\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"--translateY\",\r\n\t\t\t\t`translateY(${currentY - dragOffset}px)`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst closeDragElement = (e: MouseEvent | TouchEvent, toPoint?: number, hideDialog?: boolean) => {\r\n\t\t\twindow.removeEventListener('mouseup', dragMouseUp);\r\n\t\t\twindow.removeEventListener('mousemove', dragMouseMove);\r\n\t\t\twindow.removeEventListener('touchend', dragMouseUp);\r\n\t\t\twindow.removeEventListener('touchmove', dragMouseMove);\r\n\r\n\t\t\tif (window.innerWidth >= 768)\r\n\t\t\t\treturn\r\n\r\n\t\t\tif (!toPoint && getYCoord(e) >= window.innerHeight - bottomSize)\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(calc(100vh - ${bottomSize}px))`\r\n\t\t\t\t);\r\n\t\t\telse\r\n\t\t\t\telement.style.setProperty(\r\n\t\t\t\t\t\"--translateY\",\r\n\t\t\t\t\t`translateY(${(toPoint || getYCoord(e)) + bounceOffset}px)`\r\n\t\t\t\t);\r\n\r\n\t\t\telement.style.setProperty(\r\n\t\t\t\t\"transition\",\r\n\t\t\t\t`transform 500ms cubic-bezier(0.4, 0, 0, 1) 0s`\r\n\t\t\t);\r\n\r\n\t\t\tif (hideDialog){\r\n\t\t\t\ttouchTargetElement.removeEventListener('mousedown', dragMouseDown);\r\n\t\t\t\ttouchTargetElement.removeEventListener('touchstart', dragMouseDown);\r\n\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\tthis._callHide,\r\n\t\t\t\t\t250\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ttouchTargetElement.addEventListener('mousedown', dragMouseDown);\r\n\t\ttouchTargetElement.addEventListener('touchstart', dragMouseDown, {passive: false});\r\n\r\n\t\tcloseDragElement(new MouseEvent('mouseup'), window.innerHeight - bottomSize - bounceOffset);\r\n\r\n\t\treturn {\r\n\t\t\ttouchElement: touchTargetElement,\r\n\t\t\tlistener: dragMouseDown\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupAppearence = (fullOpen?: boolean) => {\r\n\t\tif (this.bindedElement) {\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('mousedown', this.bindedElement.listener);\r\n\t\t\tthis.bindedElement.touchElement.removeEventListener('touchstart', this.bindedElement.listener);\r\n\t\t}\r\n\t\t\r\n\t\tthis.bindedElement = this.dragMobileSheet(\r\n\t\t\tthis.parentElement,\r\n\t\t\tthis.shadowRoot?.querySelector('.dialog-body .touch-header') as HTMLElement,\r\n\t\t\tthis.shadowRoot?.querySelector(`.dialog-body ${fullOpen? '.how-to-body': '.body-header'}`) as HTMLElement);\r\n\t}\r\n\tprivate _init = () => {\r\n\t\tthis.setupAppearence();\r\n\r\n\t\twindow.addEventListener('resize', () => this.setupAppearence());\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tfirstUpdated () {\r\n\t\tthis._init();\r\n return;\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t}\r\n\r\n\trender() {\r\n return html`${template(this.props.name, this.props.description, this.props.icon, this._callInstall, this.fallback, this.howToRequested)}`;\r\n\t}\r\n}\r\n","import {css} from 'lit'; export default css`#pwa-install-element{-webkit-user-select:none;user-select:none}#pwa-install-element .install-dialog{--text-color-normal:#212121;--background-color:#fff;--border-bottom-color:#DBDCDE;--scrollbar-background-color:#fff;font-family:Roboto,\"Segoe UI\",system-ui;position:fixed;display:inline-block;opacity:0;visibility:hidden;z-index:2147483001}#pwa-install-element .install-dialog.chrome{max-width:380px;width:90%;min-height:90px;margin:0 auto;right:150px;left:auto;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .3));font-size:15px;color:var(--text-color-normal);border-radius:8px;top:-100px;transition:top .5s ease-in-out,opacity .8s ease-in-out,max-height .35s ease-in-out}#pwa-install-element .install-dialog.chrome.available{opacity:1;top:28px;visibility:visible}#pwa-install-element .install-dialog.chrome .dialog-body{display:grid;grid-template-columns:70px 1fr}#pwa-install-element .install-dialog.chrome.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.mobile{--touch-header-color:#DBDCE0;top:0;max-width:414px;width:100%;bottom:auto;left:0;right:0;transition:none;transform:translateY(100vh);border-radius:0;border-top-left-radius:15px;border-top-right-radius:15px;padding-bottom:35px}#pwa-install-element .install-dialog.mobile.available{--translateY:translateY(calc(100vh - 85px));opacity:1;top:0;visibility:visible;transform:var(--translateY)}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog{--text-color-normal:#eee;--background-color:#1e1e1e;--border-bottom-color:#404140;--scrollbar-background-color:#424242}#pwa-install-element .install-dialog.mobile{--touch-header-color:#3f403f}}@media(max-width:767px)and (min-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:inline-block}#pwa-install-element .install-dialog.chrome{display:none}}@media(min-width:768px),(max-height:495px){#pwa-install-element .install-dialog.chrome.mobile{display:none}#pwa-install-element .install-dialog.chrome{display:inline-block}}@media(max-height:420px){#pwa-install-element .install-dialog.chrome .dialog-body .description{-webkit-line-clamp:3;max-height:70px}}`;\n ","import {css} from 'lit'; export default css`#pwa-install-element .install-dialog.apple{--text-color-normal:#333;--text-color-description:#333;--background-color:rgba(255, 255, 255, 0.8);--text-color-button:#fff;--background-color-button:#fff;--background-color-button-active:#DBDAE0;--border-bottom-color:rgba(0, 0, 0, 0.1);--icon-how-to-color:#527AFB;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont,Roboto,\"Segoe UI\";max-width:380px;width:auto;margin:0 auto;right:0;left:0;font-size:15px;color:var(--text-color-normal);bottom:0;transition:transform .4s cubic-bezier(.33,1,.66,1),opacity .5s cubic-bezier(1,0,1,-2),border .35s ease-in-out;overflow:hidden;pointer-events:none;opacity:0;visibility:visible;transform:translateY(100%);will-change:opacity,transform}#pwa-install-element .install-dialog.apple.dialog-body{display:grid;grid-template-columns:95px 1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon description\" \"welcome welcome\" \"how-to how-to\" \"gallery gallery\" \"button button\";border-radius:10px;border-bottom:1px solid transparent;background-color:var(--background-color);filter:drop-shadow(0 5px 15px rgba(0, 0, 0, .5));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#pwa-install-element .install-dialog.apple.dialog-body .icon{display:flex;align-items:center;grid-area:icon;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.dialog-body .icon .icon-image{width:64px;height:64px;margin:0 auto;border-radius:6px}#pwa-install-element .install-dialog.apple.dialog-body .close{height:26px;min-width:26px;line-height:0;margin-inline-end:7px;margin-top:7px;margin-inline-start:auto;padding:0;border-radius:50%;opacity:.5;outline:0;color:var(--text-color-normal);border:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:opacity .2s ease-in-out,background-color .2s ease-in-out;grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .close svg{fill:var(--text-color-normal);width:18px}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .close:hover{opacity:1;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple.dialog-body .about{display:grid;grid-template-rows:35px 60px;border-bottom:1px solid var(--border-bottom-color);grid-area:description}#pwa-install-element .install-dialog.apple.dialog-body .about .description,#pwa-install-element .install-dialog.apple.dialog-body .about .name{padding-inline-end:15px;overflow:hidden}#pwa-install-element .install-dialog.apple.dialog-body .about .name{font-weight:600;padding-top:10px;padding-inline-end:10px;line-height:22px;align-items:flex-start;display:flex}#pwa-install-element .install-dialog.apple.dialog-body .about .description{font-size:12px;line-height:15px;padding:0;margin-bottom:15px;overflow-y:auto;color:var(--text-color-description)}#pwa-install-element .install-dialog.apple.dialog-body .welcome-to-install{font-size:15px;grid-area:welcome;text-align:start;font-weight:400;padding:15px;width:auto;border-bottom:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple .action-buttons{grid-area:button;grid-column-start:1;grid-column-end:3;grid-template-columns:unset;gap:unset;padding:15px}#pwa-install-element .install-dialog.apple .dialog-button{display:grid;height:50px;width:100%;line-height:50px;border-radius:8px;color:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button{border:none;outline:0;font-family:system-ui,-apple-system,HelveticaNeue,BlinkMacSystemFont;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:400;font-size:17px;padding:0;margin:0;background-color:var(--background-color-button)}#pwa-install-element .install-dialog.apple .dialog-button.button.install{padding:0 15px;text-align:start}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text{opacity:0;display:flex;align-items:center;justify-content:space-between;transition:opacity .4s ease-in-out .1s;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text>svg{flex-shrink:0;width:20px}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.show{opacity:1;visibility:visible;width:auto;height:auto}#pwa-install-element .install-dialog.apple .dialog-button.button.install .button-text.hide{opacity:0;position:absolute;width:0;height:0;visibility:hidden}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery{display:flex;align-items:center;min-width:50px;width:auto;margin-inline-end:15px}#pwa-install-element .install-dialog.apple .dialog-button.button.gallery #pwa-gallery{margin:0 auto;width:23px;fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .dialog-button.button:active{background-color:var(--background-color-button-active)}#pwa-install-element .install-dialog.apple .how-to-body{opacity:0;max-height:0;overflow:hidden;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;grid-area:how-to}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description{display:grid;-webkit-user-select:none;user-select:none;grid-auto-columns:1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;padding:15px;padding-bottom:0}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step{display:inline-flex;flex-direction:row;gap:15px;align-items:center;font-size:14px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap{position:relative;display:inline-flex;flex-shrink:0;color:var(--icon-how-to-color);width:50px;height:50px;align-items:center;border-radius:6px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari,#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin:0 auto}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{margin-bottom:4px;transform:scale(.9)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{transform:scale(.8);fill:var(--text-color-normal)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap #pwa-safari{transform:scale(.92)}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .svg-wrap .step-count{position:absolute;line-height:12px;top:3px;left:4px}#pwa-install-element .install-dialog.apple .how-to-body .how-to-description .description-step .step-text{font-weight:600;text-align:start}#pwa-install-element .install-dialog.apple pwa-gallery{grid-column:1/3;max-height:0;opacity:0;transition:opacity ease-in-out .5s,max-height .5s ease-in-out;overflow:hidden}#pwa-install-element .install-dialog.apple pwa-gallery+.action-buttons{display:flex}#pwa-install-element .install-dialog.apple.available{opacity:1;pointer-events:unset;transform:translateY(0);transition:transform .5s cubic-bezier(.33,1,.66,1),border .35s ease-in-out}#pwa-install-element .install-dialog.apple.gallery pwa-gallery{transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out;max-height:70vh;opacity:1}#pwa-install-element .install-dialog.apple.how-to .dialog-body{border-bottom:1px solid #e0e0e0}#pwa-install-element .install-dialog.apple.how-to .how-to-body{opacity:1;max-height:400px;overflow-y:auto;transition:opacity .3s ease-in-out .2s,max-height .5s ease-in-out}#pwa-install-element .install-dialog.apple.desktop{--text-color-normal:rgba(0, 0, 0, 0.85);--text-color-description:rgba(0, 0, 0, 0.85);--icon-how-to-color:rgba(0, 0, 0, 0.50);--background-color:rgb(246 246 246 / 85%);--background-color-button:#c6c1c6;--background-color-button-active:linear-gradient(0deg, rgba(64,121,250,1) 0%, rgba(84,144,251,1) 100%);--border-bottom-color:rgb(185 185 185);grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"icon\" \"description\" \"welcome\" \"how-to\" \"gallery\" \"button\";gap:0;column-gap:0;padding:16px;max-width:260px;background:var(--background-color);border:1px solid var(--border-bottom-color)}#pwa-install-element .install-dialog.apple.desktop .icon{height:64px;padding-bottom:16px}#pwa-install-element .install-dialog.apple.desktop .icon .icon-image{border-radius:10px;width:52px;height:52px;filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}#pwa-install-element .install-dialog.apple.desktop .close{grid-area:icon;background:var(--background-color-button);opacity:1;height:20px;min-width:20px;margin-inline-end:-5px;margin-top:-5px}#pwa-install-element .install-dialog.apple.desktop .close svg{width:14px}#pwa-install-element .install-dialog.apple.desktop .about{display:flex;flex-direction:column;align-items:center}#pwa-install-element .install-dialog.apple.desktop .about .name{font-size:13px;line-height:16px;font-weight:700;padding:0}#pwa-install-element .install-dialog.apple.desktop .about .description{padding:16px 0;margin:0;padding-top:10px;border-bottom:1px solid var(--border-bottom-color);min-width:100%}#pwa-install-element .install-dialog.apple.desktop .about .description,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{text-align:center;font-size:11px;line-height:14px}#pwa-install-element .install-dialog.apple.desktop .about,#pwa-install-element .install-dialog.apple.desktop .icon,#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{border:none}#pwa-install-element .install-dialog.apple.desktop .welcome-to-install{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons{padding:0;padding-top:16px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button{font-size:13px;font-weight:400;padding:6px 8px;border-radius:6px;height:auto;line-height:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install{color:#fff;background:var(--background-color-button-active);transition:background .3s ease-in-out .1s,color .3s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.install svg{transform:none;width:18px}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery{width:30px;min-width:30px;margin-inline-end:10px;background:var(--background-color-button)}#pwa-install-element .install-dialog.apple.desktop .action-buttons .dialog-button.button.gallery #pwa-gallery{width:14px;transition:transform .4s ease-in-out}#pwa-install-element .install-dialog.apple.desktop .close:active,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.desktop .close:active .button-text,#pwa-install-element .install-dialog.apple.desktop .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description{padding:0;padding-top:16px;grid-template-rows:1fr 1fr}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step{font-size:12px;gap:16px}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap{width:32px;height:32px;color:var(--icon-how-to-color)}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-share{width:16px;margin-bottom:2px;transform:none}#pwa-install-element .install-dialog.apple.desktop .how-to-body .how-to-description .description-step .svg-wrap #pwa-add{width:18px;transform:none}#pwa-install-element .install-dialog.apple.desktop pwa-gallery{margin:0 -10px}#pwa-install-element .install-dialog.apple.desktop.gallery #pwa-gallery{transform:rotate(180deg)}#pwa-install-element .install-dialog.apple.desktop.how-to .action-buttons .dialog-button.button.install{color:var(--text-color-normal);background:var(--background-color-button)}@media(min-width:667px){#pwa-install-element .install-dialog.apple{top:0;bottom:unset;transform:translateY(calc(-100% - 40px));right:28px;left:auto}#pwa-install-element .install-dialog.apple.available{top:28px;bottom:auto;max-height:calc(95vh - 28px)}}@media(min-width:667px)and (max-width:1366px){#pwa-install-element .install-dialog.apple{right:max(28px,env(safe-area-inset-right,28px));left:auto}}@media(max-width:666px){#pwa-install-element .install-dialog.apple .description-step .step-text{font-size:13px}#pwa-install-element .install-dialog.apple.available{bottom:20px;max-height:calc(85vh - 20px)}#pwa-install-element .install-dialog.apple.dialog-body{filter:drop-shadow(rgba(0, 0, 0, .5) 0 0 15px)}}@media(max-width:428px){#pwa-install-element .install-dialog.apple.dialog-body{max-width:100vw;filter:drop-shadow(rgba(0, 0, 0, .5) 0 -5px 10px);border-bottom-left-radius:0;border-bottom-right-radius:0}#pwa-install-element .install-dialog.apple.dialog-body .action-buttons{padding-bottom:max(15px,env(safe-area-inset-bottom))}#pwa-install-element .install-dialog.apple.dialog-body.available{bottom:0;max-height:85vh}}@media(max-height:548px){#pwa-install-element .install-dialog.apple.dialog-body.available{overflow-y:auto;max-height:calc(90vh - 28px - env(safe-area-inset-bottom,0px))}}@media(max-height:600px){#pwa-install-element .install-dialog.apple pwa-gallery{overflow-y:auto}}@media(prefers-color-scheme:dark){#pwa-install-element .install-dialog.apple.dialog-body{--text-color-normal:#fff;--text-color-description:#9E9AA1;--background-color:rgb(25 25 25 / 90%);--background-color-button:#353535;--background-color-button-active:#454545;--border-bottom-color:#353535}#pwa-install-element .install-dialog.apple.dialog-body .close:active,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active{filter:brightness(105%)}#pwa-install-element .install-dialog.apple.dialog-body .close:active .button-text,#pwa-install-element .install-dialog.apple.dialog-body .dialog-button.button:active .button-text{filter:brightness(90%)}#pwa-install-element .install-dialog.apple.dialog-body.desktop{--text-color-description:var(--text-color-normal);--icon-how-to-color:#bcb8b6;--background-color:rgb(45 45 45 / 90%);--border-bottom-color:#5b5b5b;--background-color-button:#6d6765;--background-color-button-active:linear-gradient(0deg, rgba(59,108,200,1) 0%, rgba(66,123,250,1) 100%);outline:1px solid #1c1c1c;color-scheme:dark}}`;\n ","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\nimport { ManifestScreenshot } from '../../types/types';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, install: any, toggleGallery: any, galleryRequested: boolean, toggleHowTo: any, howToRequested: boolean, isAndroidFallback: boolean, isRTL: boolean = false) => {\r\n const installDialogClasses = () => { return {available: installAvailable, gallery: galleryRequested }};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n
\r\n
\r\n
\r\n
\r\n \"icon\"\r\n
\r\n
\r\n
\r\n \r\n ${!disableClose? html`` : ''}\r\n
\r\n
${location.hostname}
\r\n \r\n
\r\n ${description ? html `
${description}
`: ''}\r\n ${!disableDescription? \r\n html`
${installDescription? installDescription: `${msg('This site has app functionality.')} ${msg('Install it on your device for extensive experience and easy access.')}`}
` \r\n : ''}\r\n ${screenshotsAvailable? html``: ''}\r\n
\r\n ${screenshotsAvailable? html``:''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n ${screenshotsAvailable? html``: ''}\r\n \r\n
\r\n
`;\r\n};\r\nexport default template;\r\n","import { html } from 'lit';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { msg } from '@lit/localize';\r\n\r\nconst template = (name: string, description: string, installDescription: string, disableDescription: boolean, disableScreenshots: boolean, disableClose: boolean, icon: string, manifest: WebAppManifest, installAvailable: any, hideDialog: any, howToForApple: any, isDesktop: boolean, howToRequested: boolean, toggleGallery: any, galleryRequested: boolean, isRTL: boolean = false) => {\r\n const installDialogClassesApple = () => { return {available: installAvailable, 'how-to': howToRequested, gallery: galleryRequested, desktop: isDesktop}};\r\n const screenshotsAvailable = !disableScreenshots && manifest.screenshots && manifest.screenshots.length;\r\n\r\n return html`\r\n `;\r\n};\r\nexport default template;\r\n","import { LitElement, PropertyValues, html } from 'lit';\r\nimport { localized } from '@lit/localize';\r\nimport { property, state, customElement } from 'lit/decorators.js';\r\nimport { WebAppManifest } from 'web-app-manifest';\r\nimport { changeLocale, isRTL } from './localization';\r\n\r\nimport { IRelatedApp, Manifest, IWindow, PWAInstallAttributes } from './types/types';\r\n\r\nimport PWAGalleryElement from './gallery';\r\nimport PWABottomSheetElement from './templates/chrome/bottom-sheet';\r\n\r\nimport Utils from './utils';\r\n\r\ndeclare const window: IWindow;\r\n\r\nimport styles from './templates/chrome/styles.scss';\r\nimport stylesCommon from './templates/chrome/styles-common.scss'\r\nimport stylesApple from './templates/apple/styles-apple.scss';\r\n\r\nimport template from './templates/chrome/template';\r\nimport templateApple from './templates/apple/template-apple';\r\n\r\n/**\r\n * @event {CustomEvent} pwa-install-success-event - App install success (Chromium/Android only)\r\n * @event {CustomEvent} pwa-install-fail-event - App install failed (Chromium/Android only)\r\n * @event {CustomEvent} pwa-user-choice-result-event - dismissed, accepted\r\n * @event {CustomEvent} pwa-install-available-event - App install available\r\n * @event {CustomEvent} pwa-install-how-to-event - App install instruction showed\r\n * @event {CustomEvent} pwa-install-gallery-event - App install gallery showed\r\n */\r\n@localized()\r\n@customElement('pwa-install')\r\nexport class PWAInstallElement extends LitElement {\r\n\t@property({attribute: 'manifest-url'}) manifestUrl = '/manifest.json';\r\n\t@property() icon = '';\r\n\t@property() name = '';\r\n\t@property() description = '';\r\n\t@property({attribute: 'install-description'}) installDescription = '';\r\n\t@property({attribute: 'disable-install-description', type: Boolean}) disableDescription = false;\r\n\t@property({attribute: 'disable-screenshots', type: Boolean}) disableScreenshots = false;\r\n\t@property({attribute: 'disable-screenshots-apple', type: Boolean}) disableScreenshotsApple = false;\r\n\t@property({attribute: 'disable-screenshots-chrome', type: Boolean}) disableScreenshotsChrome = false;\r\n\t@property({attribute: 'manual-apple', type: Boolean}) manualApple = false;\r\n\t@property({attribute: 'manual-chrome', type: Boolean}) manualChrome = false;\r\n\t@property({attribute: 'disable-chrome', type: Boolean}) disableChrome = false;\r\n\t@property({attribute: 'disable-close', type: Boolean}) disableClose = false;\r\n\t@property({attribute: 'disable-android-fallback', type: Boolean}) disableFallback = false;\r\n\t@property({attribute: 'use-local-storage', type: Boolean}) useLocalStorage = false;\r\n\r\n\tstatic get styles() {\r\n\t\treturn [ styles, stylesCommon, stylesApple ];\r\n\t}\r\n\r\n\t@state() externalPromptEvent: BeforeInstallPromptEvent | null = null;\r\n\r\n\tpublic platforms: BeforeInstallPromptEvent['platforms'] = [];\r\n\tpublic userChoiceResult = '';\r\n\r\n\tpublic isDialogHidden: boolean = Utils.getStorageFlag('pwa-hide-install');\r\n\tpublic isInstallAvailable = false;\r\n\tpublic isAppleMobilePlatform = false;\r\n\tpublic isAppleDesktopPlatform = false;\r\n\tpublic isAndroidFallback = false;\r\n\tpublic isAndroid = false;\r\n\tpublic isUnderStandaloneMode = false;\r\n\tpublic isRelatedAppsInstalled = false;\r\n\r\n\t/** @internal */\r\n\tprivate _isRTL = false;\r\n\r\n\t/** @internal */\r\n\tprivate _manifest: Manifest = new Manifest();\r\n\t/** @internal */\r\n\tprivate _howToRequested = false;\r\n\t/** @internal */\r\n\tprivate _galleryRequested = false;\r\n\t/** @internal */\r\n\tprivate _install = {\r\n\t\thandleEvent: () => {\r\n\t\t\tif (window.defferedPromptEvent) {\r\n\t\t\t\tthis.hideDialog();\r\n\t\t\t\twindow.defferedPromptEvent.prompt();\r\n\t\t\t\twindow.defferedPromptEvent.userChoice\r\n\t\t\t\t\t.then((choiceResult: PromptResponseObject) => {\r\n\t\t\t\t\t\tthis.userChoiceResult = choiceResult.outcome;\r\n\t\t\t\t\t\tUtils.eventUserChoiceResult(this, this.userChoiceResult);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tUtils.eventInstalledFail(this);\r\n\t\t\t\t\t});\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\tpublic install = () => {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis._howToRequested = true;\r\n\t\t\tthis.requestUpdate();\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis._install.handleEvent();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialog = {\r\n\t\thandleEvent: () => {\r\n\t\t\tthis.isDialogHidden = true;\r\n\t\t\tUtils.setStorageFlag('pwa-hide-install', true, this.useLocalStorage);\r\n\t\t\tthis.requestUpdate();\r\n\t\t},\r\n\t\tpassive: true\r\n\t}\r\n\t/** @internal */\r\n\tprivate _hideDialogUser = () => {\r\n\t\tUtils.eventUserChoiceResult(this, 'dismissed');\r\n\t\tthis.userChoiceResult = 'dismissed';\r\n\t\tthis.hideDialog();\r\n\t}\r\n\tpublic hideDialog = () => {\r\n\t\tthis._hideDialog.handleEvent();\r\n\t}\r\n\tpublic showDialog = (forced = false) => {\r\n\t\tthis.isDialogHidden = false;\r\n\t\tif (forced)\r\n\t\t\tthis.isInstallAvailable = true;\r\n\t\tUtils.setStorageFlag('pwa-hide-install', false, this.useLocalStorage);\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tpublic getInstalledRelatedApps = async (): Promise => {\r\n\t\treturn await Utils.getInstalledRelatedApps();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _toggleHowTo = {\r\n handleEvent: () => {\r\n\t\t\tthis._howToRequested = !this._howToRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._galleryRequested = false;\r\n\t\t\tthis.requestUpdate();\r\n\r\n\t\t\tif (this._howToRequested) {\r\n\t\t\t\tUtils.eventInstallHowTo(this);\r\n\t\t\t}\t\t\t\t\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate _toggleGallery = {\r\n handleEvent: () => {\r\n\t\t\tthis._galleryRequested = !this._galleryRequested;\r\n\t\t\tif (this._howToRequested && this._galleryRequested)\r\n\t\t\t\tthis._howToRequested = false;\r\n\r\n\t\t\tthis._galleryRequested && Utils.eventGallery(this);\r\n\r\n\t\t\tthis.requestUpdate();\r\n },\r\n passive: true\r\n }\r\n\t/** @internal */\r\n\tprivate async _checkPlatform() {\r\n\t\tthis.isUnderStandaloneMode = Utils.isStandalone();\r\n\t\tthis.isRelatedAppsInstalled = await Utils.isRelatedAppsInstalled();\r\n\t\tthis.isAppleMobilePlatform = Utils.isAppleMobile();\r\n\t\tthis.isAppleDesktopPlatform = Utils.isAppleDesktop();\r\n\t\tthis.isAndroidFallback = Utils.isAndroidFallback();\r\n\t\tthis.isAndroid = Utils.isAndroid();\r\n\t}\r\n\t/** @internal */\r\n\tprivate _checkInstallAvailable() {\r\n\t\tif (this.isUnderStandaloneMode)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform) {\r\n\t\t\tthis.manualApple && this.hideDialog();\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t},\r\n\t\t\t\t1000\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet _promptTriggered = false;\r\n\t\tif (!this.disableChrome && window.BeforeInstallPromptEvent) {\r\n\t\t\tthis.manualChrome && this.hideDialog();\r\n\t\t\tconst _promptHandler = (e: BeforeInstallPromptEvent) => {\r\n\t\t\t\twindow.defferedPromptEvent = e;\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tthis.platforms = e.platforms;\r\n\r\n\t\t\t\tif (this.isRelatedAppsInstalled) {\r\n\t\t\t\t\tthis.isInstallAvailable = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.userChoiceResult === 'accepted'){\r\n\t\t\t\t\tthis.isDialogHidden = true;\r\n\t\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t_promptTriggered = true;\r\n\t\t\t\tthis.isAndroidFallback = false;\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t\tif (this.externalPromptEvent != null)\r\n\t\t\t\tsetTimeout(() => _promptHandler(this.externalPromptEvent!), 300);\r\n\t\t\telse\r\n\t\t\t\twindow.addEventListener('beforeinstallprompt', _promptHandler);\r\n\t\t}\r\n\t\t\r\n\t\tif (!this.disableFallback && this.isAndroid && !_promptTriggered) {\r\n\t\t\t// browsers without BeforeInstallPromptEvent\r\n\t\t\tif (this.isAndroidFallback) {\r\n\t\t\t\tsetTimeout(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t},\r\n\t\t\t\t\t1000\r\n\t\t\t\t);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t// trying to fix browsers like Opera with BeforeInstallPromptEvent not working\r\n\t\t\tif ('userActivation' in navigator && !this.isRelatedAppsInstalled) {\r\n\t\t\t\tconst _activation = navigator.userActivation;\r\n\t\t\t\tconst _activationHandler = setInterval(() => {\r\n\t\t\t\t\tif (_activation.isActive || _activation.hasBeenActive) {\r\n\t\t\t\t\t\tif (!_promptTriggered) {\r\n\t\t\t\t\t\t\tthis.isAndroidFallback = true;\r\n\t\t\t\t\t\t\tthis.isInstallAvailable = true;\r\n\t\t\t\t\t\t\tthis.requestUpdate();\r\n\t\t\t\t\t\t\tUtils.eventInstallAvailable(this);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tclearInterval(_activationHandler);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 1000);\r\n\t\t\t\tsetTimeout(() => clearInterval(_activationHandler), 30000);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/** @internal */\r\n\tprivate _init = async () => {\r\n\t\twindow.defferedPromptEvent = null;\r\n\r\n\t\tawait this._checkPlatform();\r\n\t\tthis._checkInstallAvailable();\r\n\r\n\t\tif ('onappinstalled' in window)\r\n\t\t\twindow.addEventListener('appinstalled', (e) => {\r\n\t\t\t\twindow.defferedPromptEvent = null;\r\n\t\t\t\tthis.isInstallAvailable = false;\r\n\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t\tUtils.eventInstalledSuccess(this);\r\n\t\t\t});\r\n\r\n\t\tObject.assign(this, await Utils.fetchAndProcessManifest(this.manifestUrl, this.icon, this.name, this.description));\r\n\t};\r\n\t/** @internal */\r\n\tprivate _requestUpdate = () => {\r\n\t\tthis.requestUpdate();\r\n\t}\r\n\r\n\tasync connectedCallback() {\r\n\t\tawait changeLocale(navigator.language);\r\n\t\tthis._isRTL = isRTL();\r\n\t\tthis._init();\r\n\t\tPWAGalleryElement.finalized;\r\n\t\tPWABottomSheetElement.finalized;\r\n\t\tsuper.connectedCallback();\r\n\t}\r\n\twillUpdate(changedProperties: PropertyValues) {\r\n\t\tif (this.externalPromptEvent && changedProperties.has('externalPromptEvent') && typeof this.externalPromptEvent == 'object') {\r\n\t\t this._init();\r\n\t\t}\r\n\t}\r\n\r\n\t// firstUpdated() {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\trender() {\r\n\t\tif (this.isAppleMobilePlatform || this.isAppleDesktopPlatform)\r\n\t\t\treturn html`${templateApple(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsApple,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._toggleHowTo,\r\n\t\t\t\tthis.isAppleDesktopPlatform,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested,\r\n\t\t\t\tthis._isRTL\r\n\t\t\t)}`;\r\n\t\telse\r\n\t\t\treturn html`${template(\r\n\t\t\t\tthis.name, \r\n\t\t\t\tthis.description, \r\n\t\t\t\tthis.installDescription,\r\n\t\t\t\tthis.disableDescription,\r\n\t\t\t\tthis.disableScreenshots || this.disableScreenshotsChrome,\r\n\t\t\t\tthis.disableClose,\r\n\t\t\t\tthis.icon, \r\n\t\t\t\tthis._manifest,\r\n\t\t\t\tthis.isInstallAvailable && !this.isDialogHidden,\r\n\t\t\t\tthis._hideDialogUser,\r\n\t\t\t\tthis._install,\r\n\t\t\t\tthis._toggleGallery,\r\n\t\t\t\tthis._galleryRequested,\r\n\t\t\t\tthis._toggleHowTo,\r\n\t\t\t\tthis._howToRequested,\r\n\t\t\t\tthis.isAndroidFallback,\r\n\t\t\t\tthis._isRTL\r\n\t\t\t)}`;\r\n\t}\r\n}\r\n\r\nexport { PWAInstallAttributes };\r\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport { updateWhenLocaleChanges } from './localized-controller.js';\n/**\n * Class decorator to enable re-rendering the given LitElement whenever a new\n * active locale has loaded.\n *\n * See also {@link updateWhenLocaleChanges} for the same functionality without\n * the use of decorators.\n *\n * When using lit-localize in transform mode, applications of this decorator are\n * removed.\n *\n * Usage:\n *\n * import {LitElement, html} from 'lit';\n * import {customElement} from 'lit/decorators.js';\n * import {msg, localized} from '@lit/localize';\n *\n * @localized()\n * @customElement('my-element')\n * class MyElement extends LitElement {\n * render() {\n * return html`${msg('Hello World')}`;\n * }\n * }\n */\nexport const localized = () => (clazz, _context) => {\n clazz.addInitializer(updateWhenLocaleChanges);\n return clazz;\n};\n//# sourceMappingURL=localized-decorator.js.map"],"names":["root","factory","exports","module","require","define","amd","globalThis","__WEBPACK_EXTERNAL_MODULE__161__","__WEBPACK_EXTERNAL_MODULE__429__","__WEBPACK_EXTERNAL_MODULE__125__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","joinStringsAndValues","strings","values","valueOrder","concat","i","length","defaultMsg","template","isStrTagged","val","msg","installed","LOCALE_STATUS_EVENT","LocalizeController","constructor","host","this","__litLocalizeEventHandler","event","detail","status","requestUpdate","hostConnected","window","addEventListener","hostDisconnected","removeEventListener","updateWhenLocaleChanges","addController","Deferred","settled","promise","Promise","resolve","reject","_resolve","_reject","error","hl","toString","generateMsgId","isHtmlTagged","str","t0","v0","t1","v1","t2","v2","t3","v3","charCodeAt","fnv1a64","join","expressionOrders","WeakMap","hashCache","Map","runtimeMsg","templates","options","id","set","generateId","localized","order","map","dispatchStatusEvent","dispatchEvent","CustomEvent","loadingLocale","sourceLocale","validLocales","loadLocale","activeLocale","loading","requestId","getLocale","setLocale","newLocale","Error","has","thisRequestId","then","mod","readyLocale","err","errorLocale","errorMessage","targetLocales","localizedTemplates","config","async","lang","impl","_installMsgImplementation","Set","add","Manifest","icons","src","screenshots","short_name","name","description","css","_eventDispatcher","_element","message","Utils","isAppleMobile","includes","navigator","platform","userAgent","match","maxTouchPoints","isAppleDesktop","toLowerCase","version","exec","parseInt","audioCheck","document","createElement","canPlayType","webGLCheck","OffscreenCanvas","getContext","isAndroid","isAndroidFallback","deviceFormFactor","matchMedia","matches","isStandalone","standalone","getInstalledRelatedApps","relatedApps","e","isRelatedAppsInstalled","setStorageFlag","persistent","localStorage","setItem","sessionStorage","getStorageFlag","getItem","eventInstalledSuccess","eventInstalledFail","eventUserChoiceResult","eventInstallAvailable","eventInstallHowTo","eventGallery","normalizeManifestAssetUrls","manifest","manifestUrl","normalizedManifestUrl","URL","location","href","forEach","asset","fetchAndProcessManifest","icon","_manifest","_json","_response","fetch","json","ok","keys","theme","scrollToNextPage","scrollToPrevPage","html","PWAGalleryElement","LitElement","rtl","getScrollElements","gallery","shadowRoot","querySelector","galleryScroller","galleryItems","Array","from","querySelectorAll","scroller","items","findCurrentItem","scrollLeft","find","item","offsetWidth","offsetLeft","scrollToPage","direction","scrollData","currentItem","targetIndex","indexOf","scrollIntoView","behavior","block","inline","_init","styles","firstUpdated","_tools","setTimeout","scrollTo","top","left","connectedCallback","super","render","property","type","Boolean","customElement","install","fallback","howToRequested","PWABottomSheetElement","props","handleEvent","hideDialog","disableClose","toggleHowTo","_callInstall","setupAppearence","_callHide","bindedElement","_saveBodyStyle","body","style","overscrollBehaviorY","dragMobileSheet","element","touchTargetElement","infoElement","dragOffset","bottomSize","offsetHeight","offsetTop","getYCoord","clientY","changedTouches","dragMouseDown","dragMouseUp","dragMouseMove","preventDefault","getBoundingClientRect","innerHeight","closeDragElement","clientHeight","getRootNode","currentY","setProperty","toPoint","innerWidth","passive","MouseEvent","touchElement","listener","fullOpen","parentElement","installDescription","disableDescription","disableScreenshots","installAvailable","toggleGallery","galleryRequested","isRTL","installDialogClasses","available","screenshotsAvailable","howToForApple","isDesktop","desktop","PWAInstallElement","disableScreenshotsApple","disableScreenshotsChrome","manualApple","manualChrome","disableChrome","disableFallback","useLocalStorage","externalPromptEvent","platforms","userChoiceResult","isDialogHidden","isInstallAvailable","isAppleMobilePlatform","isAppleDesktopPlatform","isUnderStandaloneMode","_isRTL","_howToRequested","_galleryRequested","_install","defferedPromptEvent","prompt","userChoice","choiceResult","outcome","catch","_hideDialog","_hideDialogUser","showDialog","forced","_toggleHowTo","_toggleGallery","_checkPlatform","_checkInstallAvailable","assign","_requestUpdate","_promptTriggered","BeforeInstallPromptEvent","_promptHandler","_activation","userActivation","_activationHandler","setInterval","isActive","hasBeenActive","clearInterval","slice","changeLocale","language","finalized","willUpdate","changedProperties","attribute","state","clazz","_context","addInitializer"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/service-worker.js b/docs/service-worker.js index 6b60ab2..81909cc 100644 --- a/docs/service-worker.js +++ b/docs/service-worker.js @@ -1 +1 @@ -var cacheName="PWAinstallDemo-12.2.2025/12:54:12",filesToCache=["/pwa-install/","manifest.json"];function sendMessage(e,n){return new Promise((function(t,s){var a=new MessageChannel;e.postMessage(n,[a.port2])}))}function sendMessageToAll(e,n){clients.matchAll().then((t=>{t.forEach((n=>{sendMessage(n,e)})),n&&"function"==typeof n&&n()}))}self.addEventListener("install",(function(e){e.waitUntil(caches.open(cacheName).then((function(e){return e.addAll(filesToCache)}))),self.skipWaiting()})),self.addEventListener("activate",(function(e){return e.waitUntil(caches.keys().then((function(e){return Promise.all(e.map((function(e){if(e!==cacheName)return sendMessageToAll("NEW_VERSION"),caches.delete(e)})))}))),self.clients.claim()})),self.addEventListener("fetch",(function(e){e.respondWith(caches.match(e.request,{ignoreSearch:!0}).then((function(n){return n||fetch(e.request)})))})),self.addEventListener("message",(e=>{e&&e.data&&e.data.message})); +var cacheName="PWAinstallDemo-12.2.2025/14:57:41",filesToCache=["/pwa-install/","manifest.json"];function sendMessage(e,n){return new Promise((function(t,s){var a=new MessageChannel;e.postMessage(n,[a.port2])}))}function sendMessageToAll(e,n){clients.matchAll().then((t=>{t.forEach((n=>{sendMessage(n,e)})),n&&"function"==typeof n&&n()}))}self.addEventListener("install",(function(e){e.waitUntil(caches.open(cacheName).then((function(e){return e.addAll(filesToCache)}))),self.skipWaiting()})),self.addEventListener("activate",(function(e){return e.waitUntil(caches.keys().then((function(e){return Promise.all(e.map((function(e){if(e!==cacheName)return sendMessageToAll("NEW_VERSION"),caches.delete(e)})))}))),self.clients.claim()})),self.addEventListener("fetch",(function(e){e.respondWith(caches.match(e.request,{ignoreSearch:!0}).then((function(n){return n||fetch(e.request)})))})),self.addEventListener("message",(e=>{e&&e.data&&e.data.message})); \ No newline at end of file diff --git a/package.json b/package.json index cf5280b..4fad836 100644 --- a/package.json +++ b/package.json @@ -35,11 +35,14 @@ } }, "files": [ - "dist" + "dist/*", + "docs/index.html", + "src/utils.ts", + "scr/types/*" ], "scripts": { - "build": "npm run localize:extract && npm run localize:build && npm run build:noloc && npm run cem:analyze && node ./scripts/postbuild.mjs", - "build:noloc": "webpack --config webpack/webpack.prod.js --mode=production && webpack --config webpack/webpack.prod.module.js --mode=production && webpack --config webpack/webpack.prod.umd.js --mode=production && npx webpack --config webpack/webpack.prod.react.js --mode=production && npm run cem:analyze", + "build": "npm run localize:extract && npm run localize:build && npm run build:noloc && npm run cem:analyze", + "build:noloc": "webpack --config webpack/webpack.prod.js --mode=production && webpack --config webpack/webpack.prod.module.js --mode=production && webpack --config webpack/webpack.prod.umd.js --mode=production && npx webpack --config webpack/webpack.prod.react.js --mode=production && npm run cem:analyze && node ./scripts/postbuild.mjs", "localize:extract": "lit-localize extract", "localize:build": "lit-localize build", "cem:analyze": "cem analyze",