UNPKG

@khmyznikov/pwa-install

Version:

PWA install dialog provide more convenience user experience and fix lack of native dialogs in some browsers.

1 lines 91.1 kB
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:()=>aa});var a={};e.r(a),e.d(a,{templates:()=>dt});var i={};e.r(i),e.d(i,{templates:()=>ct});var o={};e.r(o),e.d(o,{templates:()=>pt});var s={};e.r(s),e.d(s,{templates:()=>ht});var l={};e.r(l),e.d(l,{templates:()=>bt});var n={};e.r(n),e.d(n,{templates:()=>gt});var r={};e.r(r),e.d(r,{templates:()=>ut});var d={};e.r(d),e.d(d,{templates:()=>mt});var c={};e.r(c),e.d(c,{templates:()=>ft});var p={};e.r(p),e.d(p,{templates:()=>vt});var h={};e.r(h),e.d(h,{templates:()=>wt});var b={};e.r(b),e.d(b,{templates:()=>yt});var g={};e.r(g),e.d(g,{templates:()=>xt});var u={};e.r(u),e.d(u,{templates:()=>kt});var m={};e.r(m),e.d(m,{templates:()=>_t});var f={};e.r(f),e.d(f,{templates:()=>$t});var v={};e.r(v),e.d(v,{templates:()=>At});var w={};e.r(w),e.d(w,{templates:()=>St});var y={};e.r(y),e.d(y,{templates:()=>Et});var x={};e.r(x),e.d(x,{templates:()=>Dt});const k=globalThis,_=k.ShadowRoot&&(void 0===k.ShadyCSS||k.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,$=Symbol(),A=new WeakMap;class S{constructor(e,t,a){if(this._$cssResult$=!0,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=A.get(t)),void 0===e&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),a&&A.set(t,e))}return e}toString(){return this.cssText}}const E=(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 S(a,e,$)},D=(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=k.litNonce;void 0!==i&&t.setAttribute("nonce",i),t.textContent=a.cssText,e.appendChild(t)}},P=_?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t="";for(const a of e.cssRules)t+=a.cssText;return(e=>new S("string"==typeof e?e:e+"",void 0,$))(t)})(e):e,{is:j,defineProperty:z,getOwnPropertyDescriptor:C,getOwnPropertyNames:R,getOwnPropertySymbols:M,getPrototypeOf:T}=Object,I=globalThis,L=I.trustedTypes,U=L?L.emptyScript:"",O=I.reactiveElementPolyfillSupport,H=(e,t)=>e,B={toAttribute(e,t){switch(t){case Boolean:e=e?U: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}},N=(e,t)=>!j(e,t),q={attribute:!0,type:String,converter:B,reflect:!1,hasChanged:N};Symbol.metadata??=Symbol("metadata"),I.litPropertyMetadata??=new WeakMap;class W 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=q){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}=C(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)??q}static _$Ei(){if(this.hasOwnProperty(H("elementProperties")))return;const e=T(this);e.finalize(),void 0!==e.l&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(H("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(H("properties"))){const e=this.properties,t=[...R(e),...M(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(P(e))}else void 0!==e&&t.push(P(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 D(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:B).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:B;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??N)(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){}}W.elementStyles=[],W.shadowRootOptions={mode:"open"},W[H("elementProperties")]=new Map,W[H("finalized")]=new Map,O?.({ReactiveElement:W}),(I.reactiveElementVersions??=[]).push("2.0.4");const Z=globalThis,V=Z.trustedTypes,Y=V?V.createPolicy("lit-html",{createHTML:e=>e}):void 0,F="$lit$",G=`lit$${Math.random().toFixed(9).slice(2)}$`,J="?"+G,K=`<${J}>`,Q=document,X=()=>Q.createComment(""),ee=e=>null===e||"object"!=typeof e&&"function"!=typeof e,te=Array.isArray,ae=e=>te(e)||"function"==typeof e?.[Symbol.iterator],ie="[ \t\n\f\r]",oe=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,se=/-->/g,le=/>/g,ne=RegExp(`>|${ie}(?:([^\\s"'>=/]+)(${ie}*=${ie}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),re=/'/g,de=/"/g,ce=/^(?:script|style|textarea|title)$/i,pe=e=>(t,...a)=>({_$litType$:e,strings:t,values:a}),he=pe(1),be=(pe(2),pe(3),Symbol.for("lit-noChange")),ge=Symbol.for("lit-nothing"),ue=new WeakMap,me=Q.createTreeWalker(Q,129);function fe(e,t){if(!te(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==Y?Y.createHTML(t):t}const ve=(e,t)=>{const a=e.length-1,i=[];let o,s=2===t?"<svg>":3===t?"<math>":"",l=oe;for(let t=0;t<a;t++){const a=e[t];let n,r,d=-1,c=0;for(;c<a.length&&(l.lastIndex=c,r=l.exec(a),null!==r);)c=l.lastIndex,l===oe?"!--"===r[1]?l=se:void 0!==r[1]?l=le:void 0!==r[2]?(ce.test(r[2])&&(o=RegExp("</"+r[2],"g")),l=ne):void 0!==r[3]&&(l=ne):l===ne?">"===r[0]?(l=o??oe,d=-1):void 0===r[1]?d=-2:(d=l.lastIndex-r[2].length,n=r[1],l=void 0===r[3]?ne:'"'===r[3]?de:re):l===de||l===re?l=ne:l===se||l===le?l=oe:(l=ne,o=void 0);const p=l===ne&&e[t+1].startsWith("/>")?" ":"";s+=l===oe?a+K:d>=0?(i.push(n),a.slice(0,d)+F+a.slice(d)+G+p):a+G+(-2===d?t:p)}return[fe(e,s+(e[a]||"<?>")+(2===t?"</svg>":3===t?"</math>":"")),i]};class we{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]=ve(e,t);if(this.el=we.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.length<l;){if(1===i.nodeType){if(i.hasAttributes())for(const e of i.getAttributeNames())if(e.endsWith(F)){const t=d[s++],a=i.getAttribute(e).split(G),l=/([.?@])?(.*)/.exec(t);n.push({type:1,index:o,name:l[2],strings:a,ctor:"."===l[1]?$e:"?"===l[1]?Ae:"@"===l[1]?Se:_e}),i.removeAttribute(e)}else e.startsWith(G)&&(n.push({type:6,index:o}),i.removeAttribute(e));if(ce.test(i.tagName)){const e=i.textContent.split(G),t=e.length-1;if(t>0){i.textContent=V?V.emptyScript:"";for(let a=0;a<t;a++)i.append(e[a],X()),me.nextNode(),n.push({type:2,index:++o});i.append(e[t],X())}}}else if(8===i.nodeType)if(i.data===J)n.push({type:2,index:o});else{let e=-1;for(;-1!==(e=i.data.indexOf(G,e+1));)n.push({type:7,index:o}),e+=G.length-1}o++}}static createElement(e,t){const a=Q.createElement("template");return a.innerHTML=e,a}}function ye(e,t,a=e,i){if(t===be)return t;let o=void 0!==i?a.o?.[i]:a.l;const s=ee(t)?void 0:t._$litDirective$;return o?.constructor!==s&&(o?._$AO?.(!1),void 0===s?o=void 0:(o=new s(e),o._$AT(e,a,i)),void 0!==i?(a.o??=[])[i]=o:a.l=o),void 0!==o&&(t=ye(e,o._$AS(e,t.values),o,i)),t}class xe{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){const{el:{content:t},parts:a}=this._$AD,i=(e?.creationScope??Q).importNode(t,!0);me.currentNode=i;let o=me.nextNode(),s=0,l=0,n=a[0];for(;void 0!==n;){if(s===n.index){let t;2===n.type?t=new ke(o,o.nextSibling,this,e):1===n.type?t=new n.ctor(o,n.name,n.strings,this,e):6===n.type&&(t=new Ee(o,this,e)),this._$AV.push(t),n=a[++l]}s!==n?.index&&(o=me.nextNode(),s++)}return me.currentNode=Q,i}p(e){let t=0;for(const a of this._$AV)void 0!==a&&(void 0!==a.strings?(a._$AI(e,a,t),t+=a.strings.length-2):a._$AI(e[t])),t++}}class ke{get _$AU(){return this._$AM?._$AU??this.v}constructor(e,t,a,i){this.type=2,this._$AH=ge,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=a,this.options=i,this.v=i?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode;const t=this._$AM;return void 0!==t&&11===e?.nodeType&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=ye(this,e,t),ee(e)?e===ge||null==e||""===e?(this._$AH!==ge&&this._$AR(),this._$AH=ge):e!==this._$AH&&e!==be&&this._(e):void 0!==e._$litType$?this.$(e):void 0!==e.nodeType?this.T(e):ae(e)?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==ge&&ee(this._$AH)?this._$AA.nextSibling.data=e:this.T(Q.createTextNode(e)),this._$AH=e}$(e){const{values:t,_$litType$:a}=e,i="number"==typeof a?this._$AC(e):(void 0===a.el&&(a.el=we.createElement(fe(a.h,a.h[0]),this.options)),a);if(this._$AH?._$AD===i)this._$AH.p(t);else{const e=new xe(i,this),a=e.u(this.options);e.p(t),this.T(a),this._$AH=e}}_$AC(e){let t=ue.get(e.strings);return void 0===t&&ue.set(e.strings,t=new we(e)),t}k(e){te(this._$AH)||(this._$AH=[],this._$AR());const t=this._$AH;let a,i=0;for(const o of e)i===t.length?t.push(a=new ke(this.O(X()),this.O(X()),this,this.options)):a=t[i],a._$AI(o),i++;i<t.length&&(this._$AR(a&&a._$AB.nextSibling,i),t.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e&&e!==this._$AB;){const t=e.nextSibling;e.remove(),e=t}}setConnected(e){void 0===this._$AM&&(this.v=e,this._$AP?.(e))}}class _e{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,a,i,o){this.type=1,this._$AH=ge,this._$AN=void 0,this.element=e,this.name=t,this._$AM=i,this.options=o,a.length>2||""!==a[0]||""!==a[1]?(this._$AH=Array(a.length-1).fill(new String),this.strings=a):this._$AH=ge}_$AI(e,t=this,a,i){const o=this.strings;let s=!1;if(void 0===o)e=ye(this,e,t,0),s=!ee(e)||e!==this._$AH&&e!==be,s&&(this._$AH=e);else{const i=e;let l,n;for(e=o[0],l=0;l<o.length-1;l++)n=ye(this,i[a+l],t,l),n===be&&(n=this._$AH[l]),s||=!ee(n)||n!==this._$AH[l],n===ge?e=ge:e!==ge&&(e+=(n??"")+o[l+1]),this._$AH[l]=n}s&&!i&&this.j(e)}j(e){e===ge?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}}class $e extends _e{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===ge?void 0:e}}class Ae extends _e{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==ge)}}class Se extends _e{constructor(e,t,a,i,o){super(e,t,a,i,o),this.type=5}_$AI(e,t=this){if((e=ye(this,e,t,0)??ge)===be)return;const a=this._$AH,i=e===ge&&a!==ge||e.capture!==a.capture||e.once!==a.once||e.passive!==a.passive,o=e!==ge&&(a===ge||i);i&&this.element.removeEventListener(this.name,this,a),o&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){"function"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}}class Ee{constructor(e,t,a){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=a}get _$AU(){return this._$AM._$AU}_$AI(e){ye(this,e)}}const De=Z.litHtmlPolyfillSupport;De?.(we,ke),(Z.litHtmlVersions??=[]).push("3.2.0");class Pe extends W{constructor(){super(...arguments),this.renderOptions={host:this},this.o=void 0}createRenderRoot(){const e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){const t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this.o=((e,t,a)=>{const i=a?.renderBefore??t;let o=i._$litPart$;if(void 0===o){const e=a?.renderBefore??null;i._$litPart$=o=new ke(t.insertBefore(X(),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}}Pe._$litElement$=!0,Pe.finalized=!0,globalThis.litElementHydrateSupport?.({LitElement:Pe});const je=globalThis.litElementPolyfillSupport;je?.({LitElement:Pe});(globalThis.litElementVersions??=[]).push("4.1.0");const ze=(e,t,a)=>{let i=e[0];for(let o=1;o<e.length;o++)i+=t[a?a[o-1]:o-1],i+=e[o];return i},Ce=e=>{return"string"!=typeof(t=e)&&"strTag"in t?ze(e.strings,e.values):e;var t};let Re=Ce,Me=!1;const Te="lit-localize-status";class Ie{constructor(e){this.__litLocalizeEventHandler=e=>{"ready"===e.detail.status&&this.host.requestUpdate()},this.host=e}hostConnected(){window.addEventListener(Te,this.__litLocalizeEventHandler)}hostDisconnected(){window.removeEventListener(Te,this.__litLocalizeEventHandler)}}const Le=e=>e.addController(new Ie(e));class Ue{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 He="",Be="h",Ne="s";function qe(e,t){return(t?Be:Ne)+function(e){let t=0,a=8997,i=0,o=33826,s=0,l=40164,n=0,r=52210;for(let d=0;d<e.length;d++)a^=e.charCodeAt(d),t=435*a,i=435*o,s=435*l,n=435*r,s+=a<<8,n+=o<<8,i+=t>>>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(He))}const We=new WeakMap,Ze=new Map;function Ve(e,t,a){if(e){const i=a?.id??function(e){const t="string"==typeof e?e:e.strings;let a=Ze.get(t);void 0===a&&(a=qe(t,"string"!=typeof e&&!("strTag"in e)),Ze.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=We.get(o);return void 0===e&&(e=o.values,We.set(o,e)),{...o,values:e.map((e=>t.values[e]))}}}}return Ce(t)}function Ye(e){window.dispatchEvent(new CustomEvent(Te,{detail:e}))}let Fe,Ge,Je,Ke,Qe,Xe="",et=new Ue;et.resolve();let tt=0;const at=()=>Xe,it=e=>{if(e===(Fe??Xe))return et.promise;if(!Je||!Ke)throw Error("Internal error");if(!Je.has(e))throw Error("Invalid locale code");tt++;const t=tt;Fe=e,et.settled&&(et=new Ue),Ye({status:"loading",loadingLocale:e});return(e===Ge?Promise.resolve({templates:void 0}):Ke(e)).then((a=>{tt===t&&(Xe=e,Fe=void 0,Qe=a.templates,Ye({status:"ready",readyLocale:e}),et.resolve())}),(a=>{tt===t&&(Ye({status:"error",errorLocale:e,errorMessage:a.toString()}),et.reject(a))})),et.promise},ot=e=>(t,a)=>{void 0!==a?a.addInitializer((()=>{customElements.define(e,t)})):customElements.define(e,t)},st={attribute:!0,type:String,converter:B,reflect:!1,hasChanged:N},lt=(e=st,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 nt(e){return(t,a)=>"object"==typeof a?lt(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 rt=["cs","de","el","es","fr","it","ja","km","ko","nl","no","pl","pt","ru","sr","sv","tr","uk","zh","zh-CN"],dt={s182ab2d6c997515f:"Добавьте его на главный экран, чтобы получить дополнительные возможности и удобство использования.",s1b9047d53d9f9d22:'2) Нажать "Поделиться"',s37a9e8aec5713460:"Подробнее",s5c6aad7a7e4a1437:'3) Нажать "На экран «Домой»"',s6196153c4b0c1ea0:"Установить",s922329d6f6213590:"Добавить в Dock",sa5ef80b4bb9b39f8:"Свернуть",sa7551383d1897fcc:'2) Нажмите "Добавить в Dock"',sba52286c21552a4e:"Установите это на ваше устройство, чтобы получить дополнительные возможности и удобство использования.",sc79fd7641eb9a975:"Спрятать Инструкцию",scdaf4bbff76674c8:"На экран «Домой»",sdfe23506a3b0cdc8:"1) Открыть в Safari браузере",se740f75b95a51807:"Добавьте его в Dock, чтобы получить дополнительные возможности и удобство использования.",sfea652f6580ff086:"Этот веб-сайт имеет функционал приложения."},ct={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."},pt={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."},ht={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."},gt={s182ab2d6c997515f:"Προσθέστε το στην οθόνη Αφετηρίας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",s1b9047d53d9f9d22:"2) Πατήστε Κοινοποίηση στη γραμμή πλοήγησης",s37a9e8aec5713460:"Περισσότερα",s5c6aad7a7e4a1437:"3) Πατήστε Προσθήκη στην οθόνη Αφετηρίας",s6196153c4b0c1ea0:"Εγκατάσταση",s922329d6f6213590:"Προσθήκη στην Πρόσβαση",sa5ef80b4bb9b39f8:"Λιγότερα",sa7551383d1897fcc:"2) Πατήστε Προσθήκη στην Πρόσβαση",sba52286c21552a4e:"Εγκαταστήστε το στη συσκευή σας για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sc79fd7641eb9a975:"Απόκρυψη Οδηγιών",scdaf4bbff76674c8:"Προσθήκη στην Οθόνη Αφετηρίας",sdfe23506a3b0cdc8:"1) Ανοίξτε τον περιηγητή Safari",se740f75b95a51807:"Προσθέστε το στην Πρόσβαση για εκτεταμένη εμπειρία και εύκολη πρόσβαση.",sfea652f6580ff086:"Αυτός ο ιστότοπος έχει λειτουργική εφαρμογής."},ut={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"},ft={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."},vt={s182ab2d6c997515f:"Додайте на Домашній екран для зручного доступу та ширших можливостей.",s1b9047d53d9f9d22:"2) Натиснути «Поділитися»",s37a9e8aec5713460:"Детальніше",s5c6aad7a7e4a1437:"3) Натиснути «На Початковий екран»",s6196153c4b0c1ea0:"Встановити",s922329d6f6213590:"Додати на Dock",sa5ef80b4bb9b39f8:"Згорнути",sa7551383d1897fcc:"2) Натиснути «Додати на Dock»",sba52286c21552a4e:"Встановіть на ваш пристрій для зручного доступу та ширших можливостей.",sc79fd7641eb9a975:"Сховати Інструкцію",scdaf4bbff76674c8:"На Початковий экран",sdfe23506a3b0cdc8:"1) Відкрити в Safari браузері",se740f75b95a51807:"Додайте на панель Dock для зручного доступу та ширших можливостей.",sfea652f6580ff086:"Цей сайт має функції додатку."},wt={s182ab2d6c997515f:"將其加入主屏幕,以獲得更豐富的體驗和便捷訪問。",s1b9047d53d9f9d22:"2) 點擊列表上的分享按鈕",s37a9e8aec5713460:"詳細資訊",s5c6aad7a7e4a1437:"3) 點擊加入主畫面",s6196153c4b0c1ea0:"安裝",s922329d6f6213590:"添加到Dock欄",sa5ef80b4bb9b39f8:"簡短資訊",sa7551383d1897fcc:"2) 點選添加到Dock欄",sba52286c21552a4e:"在您的裝置上安裝它,以獲得更豐富的體驗和便捷訪問。",sc79fd7641eb9a975:"隱藏安裝流程",scdaf4bbff76674c8:"將App加入主畫面",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:"此网站具备app的功能性。"},xt={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."},kt={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."},$t={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."},At={s182ab2d6c997515f:"ホーム画面に追加して、幅広い体験と簡単なアクセスを実現してください。",s1b9047d53d9f9d22:"2) ナビゲーションバーで共有を押す",s37a9e8aec5713460:"展開",s5c6aad7a7e4a1437:"3) 「ホーム画面に追加」を押す",s6196153c4b0c1ea0:"インストール",s922329d6f6213590:"Dockに追加",sa5ef80b4bb9b39f8:"折りたたむ",sa7551383d1897fcc:"2) 「Dockに追加」を押す",sba52286c21552a4e:"デバイスにインストールすることで、より充実した体験と簡単なアクセスを実現できます。",sc79fd7641eb9a975:"説明を非表示",scdaf4bbff76674c8:"ホーム画面に追加",sdfe23506a3b0cdc8:"1) Safariで開く",se740f75b95a51807:"ドックに追加して、幅広い体験と簡単なアクセスを実現してください。",sfea652f6580ff086:"このサイトはアプリ機能があります。"},St={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."},Et={s182ab2d6c997515f:"더 많은 기능과 쉬운 접근을 위해 홈 화면에 추가해주세요.",s1b9047d53d9f9d22:"2) 내비게이션 바에서 공유 버튼 누르기",s37a9e8aec5713460:"더보기",s5c6aad7a7e4a1437:"3) 홈 화면에 추가 버튼 누르기",s6196153c4b0c1ea0:"설치",s922329d6f6213590:"Dock에 추가",sa5ef80b4bb9b39f8:"닫기",sa7551383d1897fcc:"2) Dock에 추가 버튼 누르기",sba52286c21552a4e:"더 많은 기능과 쉬운 접근을 위해 기기에 설치해주세요.",sc79fd7641eb9a975:"안내 숨기기",scdaf4bbff76674c8:"홈 화면에 추가",sdfe23506a3b0cdc8:"1) Safari 브라우저에서 열기",se740f75b95a51807:"더 많은 기능과 쉬운 접근을 위해 Dock에 추가해주세요.",sfea652f6580ff086:"이 사이트는 앱 기능을 가지고 있습니다."},Dt={s182ab2d6c997515f:"បន្ថែមវាទៅកាន់ផ្ទាំងអេក្រង់ដើមដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",s1b9047d53d9f9d22:"2) ចុចលើ ប៊ូតុងចែករំលែក នៅក្នុងរបារទិសដៅ",s37a9e8aec5713460:"បង្ហាញបន្ថែម",s5c6aad7a7e4a1437:"3) ចុចលើ បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",s6196153c4b0c1ea0:"តំឡើង",s922329d6f6213590:"បន្ថែមទៅកាន់ Dock",sa5ef80b4bb9b39f8:"បង្ហាញតិច",sa7551383d1897fcc:"2) ចុចលើ បន្ថែមទៅកាន់ Dock",sba52286c21552a4e:"តំឡើងវានៅលើឧបករណ៍របស់អ្នកដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sc79fd7641eb9a975:"បិទការណែនាំ",scdaf4bbff76674c8:"បន្ថែមទៅកាន់ផ្ទាំងអេក្រង់ដើម",sdfe23506a3b0cdc8:"1) បើកនៅក្នុងកម្មវិធី Safari",se740f75b95a51807:"បន្ថែមវាទៅកាន់ Dock ដើម្បីទទួលបាននូវបទពិសោធន៍កាន់តែល្អនិងងាយស្រួលប្រើ។",sfea652f6580ff086:"គេហទំព័រនេះមានមុខងារជាកម្មវិធី។"},Pt=new Map([["ru",a],["tr",i],["de",o],["es",s],["nl",l],["el",n],["fr",r],["sr",d],["pl",c],["uk",p],["zh",h],["zh-CN",b],["it",g],["cs",u],["no",m],["pt",f],["ja",v],["sv",w],["ko",y],["km",x]]),{getLocale:jt,setLocale:zt}=(Ct={sourceLocale:"en",targetLocales:rt,loadLocale:async e=>Pt.get(e)},function(e){if(Me)throw Error("lit-localize can only be configured once");Re=e,Me=!0}(((e,t)=>Ve(Qe,e,t))),Xe=Ge=Ct.sourceLocale,Je=new Set(Ct.targetLocales),Je.add(Ct.sourceLocale),Ke=Ct.loadLocale,{getLocale:at,setLocale:it});var Ct;class Rt{constructor(){this.icons=[{src:""}],this.screenshots=void 0,this.short_name="PWA",this.name="Progressive web application",this.description="Progressive web application"}}const Mt=E`.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%)}}`,Tt=(e,t,a,i)=>he`${e?he`<div id="paginated_gallery" class="gallery ${t}"><div class="gallery_scroller"><div class="scroller_wrap">${e.map((e=>he`<img draggable="false" src='${e.src}'>`))}</div></div><span class="btn prev" @click="${i}">${"default"!=t?he`<svg id="arrow-left" viewBox="0 0 23.023 18.518"><path fill="currentColor" d="M0 9.253c0 .305.134.586.378.818l8.106 8.093c.244.232.5.342.793.342.598 0 1.075-.44 1.075-1.05 0-.293-.11-.586-.306-.769l-2.734-2.783-4.834-4.407-.256.598 3.93.244h15.442c.635 0 1.075-.451 1.075-1.086s-.44-1.087-1.075-1.087H6.152l-3.93.245.256.61 4.834-4.419 2.734-2.783a1.09 1.09 0 0 0 .306-.77C10.352.44 9.875 0 9.277 0c-.293 0-.549.098-.818.366L.38 8.436c-.247.23-.38.511-.38.816Z"/></svg>`:he`<svg id="arrow-left" viewBox="0 0 96 96"><path d="M39.3756,48.0022l30.47-25.39a6.0035,6.0035,0,0,0-7.6878-9.223L26.1563,43.3906a6.0092,6.0092,0,0,0,0,9.2231L62.1578,82.615a6.0035,6.0035,0,0,0,7.6878-9.2231Z" fill="%23999" fill-rule="evenodd"/></svg>`}</span><span class="btn next" @click="${a}">${he`<svg height="15" width="15"><use href="#arrow-left"></use></svg>`}</span></div>`:""}`;var It=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},Lt=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Ut=class extends Pe{constructor(){super(...arguments),this.screenshots=[],this.theme="default",this.calcScrollSize=()=>{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"));if(!a)return;const i=a.find((e=>e.offsetWidth+e.offsetLeft>=t.scrollLeft));return i?{scroller:t,item:i}:void 0},this.scrollToNextPage=()=>{const e=this.calcScrollSize();e&&e.item.nextElementSibling&&e.scroller.scrollTo({top:0,left:e.scroller.scrollLeft+e.scroller.clientWidth+e.item.nextElementSibling.clientWidth/2,behavior:"smooth"})},this.scrollToPrevPage=()=>{const e=this.calcScrollSize();e&&e.item.previousElementSibling&&e.scroller.scrollTo({top:0,left:e.scroller.scrollLeft-e.scroller.clientWidth-e.item.previousElementSibling.clientWidth/2,behavior:"smooth"})},this._init=()=>{}}static get styles(){return Mt}firstUpdated(){const e=this.calcScrollSize();e&&setTimeout((()=>{e.scroller.scrollTo({top:0,left:0})}),300)}connectedCallback(){super.connectedCallback(),this._init()}render(){return he`${Tt(this.screenshots,this.theme,this.scrollToNextPage,this.scrollToPrevPage)}`}};It([nt(),Lt("design:type",Object)],Ut.prototype,"screenshots",void 0),It([nt(),Lt("design:type",String)],Ut.prototype,"theme",void 0),Ut=It([ot("pwa-gallery")],Ut);const Ot=Ut,Ht=(e,t,a,i)=>he`<div class="touch-header" id="touch-header"></div><div class="body-header"><div class="icon"><img src="${a}" alt="icon" class="icon-image"></div><div class="about"><div class="name"><label>${e}</label></div><div class="hostname">${location.hostname}</div></div><button class="material-button primary install" @click='${i}'>${Re("Install")}</button></div>${t?he`<div class="description">${t}</div>`:""}`,Bt=(e,t,a)=>{const i=new CustomEvent(t,{detail:{message:a}});e.dispatchEvent(i)};class Nt{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 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 eventInstalledSuccess(e){Bt(e,"pwa-install-success-event","App install success (Chromium/Android only)")}static eventInstalledFail(e){Bt(e,"pwa-install-fail-event","App install failed (Chromium/Android only)")}static eventUserChoiceResult(e,t){Bt(e,"pwa-user-choice-result-event",t)}static eventInstallAvailable(e){Bt(e,"pwa-install-available-event","App install available")}static eventInstallHowTo(e){Bt(e,"pwa-install-how-to-event","App install instruction showed")}static eventGallery(e){Bt(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}))}}var qt=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},Wt=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};let Zt=class extends Pe{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{Nt.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 he`${Ht(this.props.name,this.props.description,this.props.icon,this._callInstall)}`}};qt([nt({type:Object}),Wt("design:type",Object)],Zt.prototype,"props",void 0),qt([nt({type:Object}),Wt("design:type",Object)],Zt.prototype,"install",void 0),qt([nt(),Wt("design:type",Object)],Zt.prototype,"hideDialog",void 0),qt([nt(),Wt("design:type",Object)],Zt.prototype,"disableClose",void 0),Zt=qt([ot("pwa-bottom-sheet")],Zt);const Vt=Zt,Yt=E`#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