"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const qt=require("react/jsx-runtime"),l=require("react");var Vs=Object.defineProperty,Ms=(e,t,s)=>t in e?Vs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,c=(e,t,s)=>(Ms(e,typeof t!="symbol"?t+"":t,s),s);function Dt(e,t){let s;const n=()=>{s!==void 0&&t&&t(s),s=void 0};return[()=>s===void 0?s=e(n):s,n]}function ct(e){const t=z(),{count:s}=t;t.unsubscribe(e),s&&!t.count&&Ks()}function Vt(e){return z().subscribe(e),()=>ct(e)}class Ns{constructor(t,s={}){this.scope=t,this.options=s}print(t,...s){const n=new Date,i=Intl.DateTimeFormat("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3,timeZone:"UTC"}).format(n),{textColor:r,bgColor:o}=this.options,a="font-weight: bold;padding: 0 5px;border-radius:5px";console[t](`%c${i}%c / %c${this.scope}`,`${a};background-color: lightblue;color:black`,"",`${a};${r?`color:${r};`:""}${o?`background-color:${o}`:""}`,...s)}error(...t){this.print("error",...t)}log(...t){this.print("log",...t)}}const ht=new Ns("SDK",{bgColor:"forestgreen",textColor:"white"});let rt=!1;const At=({name:e,payload:t})=>{ht.log("Event received:",t?{name:e,payload:t}:{name:e})};function Mt(e){rt!==e&&(rt=e,e?Vt(At):ct(At))}function Ls(...e){rt&&ht.log(...e)}class I{constructor(){c(this,"listeners",new Map),c(this,"listenersCount",0),c(this,"subscribeListeners",[])}clear(){this.listeners.clear(),this.subscribeListeners=[]}get count(){return this.listenersCount+this.subscribeListeners.length}emit(t,...s){this.subscribeListeners.forEach(n=>n({event:t,args:s})),(this.listeners.get(t)||[]).forEach(([n,i])=>{n(...s),i&&this.off(t,n)})}on(t,s,n){let i=this.listeners.get(t);return i||this.listeners.set(t,i=[]),i.push([s,n]),this.listenersCount+=1,()=>this.off(t,s)}off(t,s){const n=this.listeners.get(t)||[];for(let i=0;ithis.unsubscribe(t)}unsubscribe(t){for(let s=0;swindow.removeEventListener(e,t,s)}function pt(...e){let t=!1;const s=e.flat(1);return[n=>!t&&s.push(n),()=>{t||(t=!0,s.forEach(n=>n()))},t]}class H extends Error{constructor(t,s,n){super(s,{cause:n}),this.type=t,Object.setPrototypeOf(this,H.prototype)}}function m(e,t,s){return new H(e,t,s)}const Nt="ERR_METHOD_UNSUPPORTED",Lt="ERR_METHOD_PARAMETER_UNSUPPORTED",$t="ERR_UNKNOWN_ENV",Ht="ERR_INVOKE_CUSTOM_METHOD_RESPONSE",Ut="ERR_TIMED_OUT",Wt="ERR_UNEXPECTED_TYPE",ut="ERR_PARSE",Ft="ERR_NAVIGATION_LIST_EMPTY",jt="ERR_NAVIGATION_CURSOR_INVALID",$s="ERR_NAVIGATION_ITEM_INVALID",Hs="ERR_SSR_INIT",Gt="ERR_INVALID_PATH_BASE";function T(){return m(Wt,"Value has unexpected type")}class K{constructor(t,s,n){this.parser=t,this.isOptional=s,this.type=n}parse(t){if(!(this.isOptional&&t===void 0))try{return this.parser(t)}catch(s){throw m(ut,`Unable to parse value${this.type?` as ${this.type}`:""}`,s)}}optional(){return this.isOptional=!0,this}}function O(e,t){return()=>new K(e,!1,t)}const R=O(e=>{if(typeof e=="boolean")return e;const t=String(e);if(t==="1"||t==="true")return!0;if(t==="0"||t==="false")return!1;throw T()},"boolean");function Kt(e,t){const s={};for(const n in e){const i=e[n];if(!i)continue;let r,o;if(typeof i=="function"||"parse"in i)r=n,o=typeof i=="function"?i:i.parse.bind(i);else{const{type:a}=i;r=i.from||n,o=typeof a=="function"?a:a.parse.bind(a)}try{const a=o(t(r));a!==void 0&&(s[n]=a)}catch(a){throw m(ut,`Unable to parse field "${n}"`,a)}}return s}function zt(e){let t=e;if(typeof t=="string"&&(t=JSON.parse(t)),typeof t!="object"||t===null||Array.isArray(t))throw T();return t}function y(e,t){return new K(s=>{const n=zt(s);return Kt(e,i=>n[i])},!1,t)}const P=O(e=>{if(typeof e=="number")return e;if(typeof e=="string"){const t=Number(e);if(!Number.isNaN(t))return t}throw T()},"number"),p=O(e=>{if(typeof e=="string"||typeof e=="number")return e.toString();throw T()},"string");function Jt(e){return y({eventType:p(),eventData:t=>t}).parse(e)}function Us(){["CyberFlowGameProxy_receiveEvent","CyberFlowGameProxy","CyberFlow"].forEach(e=>{delete window[e]})}function at(e,t){window.dispatchEvent(new MessageEvent("message",{data:JSON.stringify({eventType:e,eventData:t}),source:window.parent}))}function Ws(){[["CyberFlowGameProxy_receiveEvent"],["CyberFlowGameProxy","receiveEvent"],["CyberFlow","WebView","receiveEvent"]].forEach(e=>{let t=window;e.forEach((s,n,i)=>{if(n===i.length-1){t[s]=at;return}s in t||(t[s]={}),t=t[s]})})}const Fs={clipboard_text_received:y({req_id:p(),data:e=>e===null?e:p().optional().parse(e)}),custom_method_invoked:y({req_id:p(),result:e=>e,error:p().optional()}),popup_closed:{parse(e){return y({button_id:t=>t==null?void 0:p().parse(t)}).parse(e??{})}},viewport_changed:y({height:P(),width:e=>e==null?window.innerWidth:P().parse(e),is_state_stable:R(),is_expanded:R()})};function js(){const e=new I,t=new I;t.subscribe(n=>{e.emit("event",{name:n.event,payload:n.args[0]})}),Ws();const[,s]=pt(Us,ot("resize",()=>{t.emit("viewport_changed",{width:window.innerWidth,height:window.innerHeight,is_state_stable:!0,is_expanded:!0})}),ot("message",n=>{if(n.source!==window.parent)return;let i;try{i=Jt(n.data)}catch{return}const{eventType:r,eventData:o}=i,a=Fs[r];try{const h=a?a.parse(o):o;t.emit(...h?[r,h]:[r])}catch(h){ht.error(`An error occurred processing the "${r}" event from the Cyberflow application. Please, file an issue here: https://github.com/cyberFlowTech/cyberflow-apps/issues/new/choose`,i,h)}}),()=>e.clear(),()=>t.clear());return[{on:t.on.bind(t),off:t.off.bind(t),subscribe(n){return e.on("event",n)},unsubscribe(n){e.off("event",n)},get count(){return t.count+e.count}},s]}const[Gs,Ks]=Dt(e=>{const[t,s]=js(),n=t.off.bind(t);return t.off=(i,r)=>{const{count:o}=t;n(i,r),o&&!t.count&&e()},[t,s]},([,e])=>e());function z(){return Gs()[0]}function U(e,t){z().off(e,t)}function E(e,t,s){return z().on(e,t,s)}function W(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Qt(e,t){const s=e.split("."),n=t.split("."),i=Math.max(s.length,n.length);for(let r=0;ra?1:-1}return 0}function b(e,t){return Qt(e,t)<=0}function C(e,t,s){if(typeof s=="string"){if(e==="web_app_open_link"){if(t==="try_instant_view")return b("6.4",s);if(t==="try_browser")return b("7.6",s)}if(e==="web_app_set_header_color"&&t==="color")return b("6.9",s);if(e==="web_app_close"&&t==="return_back")return b("7.6",s)}switch(e){case"web_app_open_tg_link":case"web_app_open_invoice":case"web_app_setup_back_button":case"web_app_set_background_color":case"web_app_set_header_color":case"web_app_trigger_haptic_feedback":return b("6.1",t);case"web_app_open_popup":return b("6.2",t);case"web_app_close_scan_qr_popup":case"web_app_open_scan_qr_popup":case"web_app_read_text_from_clipboard":return b("6.4",t);case"web_app_switch_inline_query":return b("6.7",t);case"web_app_invoke_custom_method":case"web_app_request_write_access":case"web_app_request_phone":return b("6.9",t);case"web_app_setup_settings_button":return b("6.10",t);case"web_app_biometry_get_info":case"web_app_biometry_open_settings":case"web_app_biometry_request_access":case"web_app_biometry_request_auth":case"web_app_biometry_update_token":return b("7.2",t);case"web_app_setup_swipe_behavior":return b("7.7",t);default:return["iframe_ready","iframe_will_reload","web_app_close","web_app_data_send","web_app_expand","web_app_open_link","web_app_ready","web_app_request_theme","web_app_request_viewport","web_app_setup_main_button","web_app_setup_closing_behavior"].includes(e)}}function Yt(e){return"external"in e&&W(e.external)&&"notify"in e.external&&typeof e.external.notify=="function"}function Zt(e){return"CyberFlowWebviewProxy"in e&&W(e.CyberFlowWebviewProxy)&&"postEvent"in e.CyberFlowWebviewProxy&&typeof e.CyberFlowWebviewProxy.postEvent=="function"}function J(){try{return window.self!==window.top}catch{return!0}}const zs="https://web.cyberflow.social";let Xt=zs;function Js(e){Xt=e}function te(){return Xt}function A(e,t,s){let n={},i;if(!t&&!s?n={}:t&&s?(n=s,i=t):t&&("targetOrigin"in t?n=t:i=t),Ls("Posting event:",i?{event:e,data:i}:{event:e}),J())return window.parent.postMessage(JSON.stringify({eventType:e,eventData:i}),n.targetOrigin||te());if(Yt(window)){window.external.notify(JSON.stringify({eventType:e,eventData:i}));return}if(Zt(window)){window.CyberFlowWebviewProxy.postEvent(e,JSON.stringify(i));return}throw m($t,"Unable to determine current environment and possible way to send event. You are probably trying to use Mini Apps method outside the Cyberflow application environment.")}function ee(e){return(t,s)=>{if(!C(t,e))throw m(Nt,`Method "${t}" is unsupported in Mini Apps version ${e}`);if(W(s)&&t==="web_app_set_header_color"&&"color"in s&&!C(t,"color",e))throw m(Lt,`Parameter "color" of "${t}" method is unsupported in Mini Apps version ${e}`);return A(t,s)}}function lt(e){return({req_id:t})=>t===e}function se(e){return m(Ut,`Timeout reached: ${e}ms`)}function dt(e,t){return Promise.race([typeof e=="function"?e():e,new Promise((s,n)=>{setTimeout(()=>{n(se(t))},t)})])}async function f(e){let t;const s=new Promise(a=>t=a),{event:n,capture:i,timeout:r}=e,[,o]=pt((Array.isArray(n)?n:[n]).map(a=>E(a,h=>{(!i||(Array.isArray(n)?i({event:a,payload:h}):i(h)))&&t(h)})));try{return(e.postEvent||A)(e.method,e.params),await(r?dt(s,r):s)}finally{o()}}async function k(e,t,s,n={}){const{result:i,error:r}=await f({...n,method:"web_app_invoke_custom_method",event:"custom_method_invoked",params:{method:e,params:t,req_id:s},capture:lt(s)});if(r)throw m(Ht,r);return i}function j(...e){return e.map(t=>{if(typeof t=="string")return t;if(W(t))return j(Object.entries(t).map(s=>s[1]&&s[0]));if(Array.isArray(t))return j(...t)}).filter(Boolean).join(" ")}function Qs(...e){return e.reduce((t,s)=>(W(s)&&Object.entries(s).forEach(([n,i])=>{const r=j(t[n],i);r.length&&(t[n]=r)}),t),{})}function Q(e){return/^#[\da-f]{6}$/i.test(e)}function ne(e){return/^#[\da-f]{3}$/i.test(e)}function wt(e){const t=e.replace(/\s/g,"").toLowerCase();if(Q(t))return t;if(ne(t)){let n="#";for(let i=0;i<3;i+=1)n+=t[1+i].repeat(2);return n}const s=t.match(/^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)$/)||t.match(/^rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),\d{1,3}\)$/);if(!s)throw new Error(`Value "${e}" does not satisfy any of known RGB formats.`);return s.slice(1).reduce((n,i)=>{const r=parseInt(i,10).toString(16);return n+(r.length===1?"0":"")+r},"#")}function _t(e){const t=wt(e);return Math.sqrt([.299,.587,.114].reduce((s,n,i)=>{const r=parseInt(t.slice(1+i*2,1+(i+1)*2),16);return s+r*r*n},0))<120}class Ys{constructor(t){c(this,"ee",new I),c(this,"on",this.ee.on.bind(this.ee)),c(this,"off",this.ee.off.bind(this.ee)),this.state=t}clone(){return{...this.state}}set(t,s){Object.entries(typeof t=="string"?{[t]:s}:t).reduce((n,[i,r])=>this.state[i]===r||r===void 0?n:(this.state[i]=r,this.ee.emit(`change:${i}`,r),!0),!1)&&this.ee.emit("change",this.state)}get(t){return this.state[t]}}class ft{constructor(t){c(this,"state"),c(this,"get"),c(this,"set"),c(this,"clone"),this.state=new Ys(t),this.set=this.state.set.bind(this.state),this.get=this.state.get.bind(this.state),this.clone=this.state.clone.bind(this.state)}}function ie(e,t){return s=>C(t[s],e)}class gt extends ft{constructor(t,s,n){super(t),c(this,"supports"),this.supports=ie(s,n)}}class re extends gt{constructor(t,s,n){super({isVisible:t},s,{show:"web_app_setup_back_button",hide:"web_app_setup_back_button"}),c(this,"on",(i,r)=>i==="click"?E("back_button_pressed",r):this.state.on(i,r)),c(this,"off",(i,r)=>i==="click"?U("back_button_pressed",r):this.state.off(i,r)),this.postEvent=n}set isVisible(t){this.set("isVisible",t),this.postEvent("web_app_setup_back_button",{is_visible:t})}get isVisible(){return this.get("isVisible")}hide(){this.isVisible=!1}show(){this.isVisible=!0}}const bt=O(e=>e instanceof Date?e:new Date(P().parse(e)*1e3),"Date");function Y(e,t){return new K(s=>{if(typeof s!="string"&&!(s instanceof URLSearchParams))throw T();const n=typeof s=="string"?new URLSearchParams(s):s;return Kt(e,i=>{const r=n.get(i);return r===null?void 0:r})},!1,t)}const Zs=y({id:P(),type:p(),title:p(),photoUrl:{type:p().optional(),from:"photo_url"},username:p().optional()},"Chat").optional(),Bt=y({addedToAttachmentMenu:{type:R().optional(),from:"added_to_attachment_menu"},allowsWriteToPm:{type:R().optional(),from:"allows_write_to_pm"},firstName:{type:p(),from:"first_name"},id:P(),isBot:{type:R().optional(),from:"is_bot"},isPremium:{type:R().optional(),from:"is_premium"},languageCode:{type:p().optional(),from:"language_code"},lastName:{type:p().optional(),from:"last_name"},photoUrl:{type:p().optional(),from:"photo_url"},username:p().optional()},"User").optional();function oe(){return Y({authDate:{type:bt(),from:"auth_date"},canSendAfter:{type:P().optional(),from:"can_send_after"},chat:Zs,chatInstance:{type:p().optional(),from:"chat_instance"},chatType:{type:p().optional(),from:"chat_type"},hash:p(),queryId:{type:p().optional(),from:"query_id"},receiver:Bt,startParam:{type:p().optional(),from:"start_param"},user:Bt},"InitData")}const ae=O(e=>wt(p().parse(e)),"rgb");function Xs(e){return e.replace(/_[a-z]/g,t=>t[1].toUpperCase())}function tn(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}const ce=O(e=>{const t=ae().optional();return Object.entries(zt(e)).reduce((s,[n,i])=>(s[Xs(n)]=t.parse(i),s),{})},"ThemeParams");function Z(e){return Y({botInline:{type:R().optional(),from:"tgWebAppBotInline"},initData:{type:oe().optional(),from:"tgWebAppData"},initDataRaw:{type:p().optional(),from:"tgWebAppData"},platform:{type:p(),from:"tgWebAppPlatform"},showSettings:{type:R().optional(),from:"tgWebAppShowSettings"},startParam:{type:p().optional(),from:"tgWebAppStartParam"},themeParams:{type:ce(),from:"tgWebAppThemeParams"},version:{type:p(),from:"tgWebAppVersion"}}).parse(e)}function he(e){return Z(e.replace(/^[^?#]*[?#]/,"").replace(/[?#]/g,"&"))}function en(){return he(window.location.href)}function pe(){return performance.getEntriesByType("navigation")[0]}function sn(){const e=pe();if(!e)throw new Error("Unable to get first navigation entry.");return he(e.name)}function ue(e){return`cyberflow-apps/${e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}`}function le(e,t){sessionStorage.setItem(ue(e),JSON.stringify(t))}function de(e){const t=sessionStorage.getItem(ue(e));try{return t?JSON.parse(t):void 0}catch{}}function nn(){return Z(de("launchParams")||"")}function mt(e){return JSON.stringify(Object.fromEntries(Object.entries(e).map(([t,s])=>[tn(t),s])))}function we(e){const{initDataRaw:t,themeParams:s,platform:n,version:i,showSettings:r,startParam:o,botInline:a}=e,h=new URLSearchParams;return h.set("tgWebAppPlatform",n),h.set("tgWebAppThemeParams",mt(s)),h.set("tgWebAppVersion",i),t&&h.set("tgWebAppData",t),o&&h.set("tgWebAppStartParam",o),typeof r=="boolean"&&h.set("tgWebAppShowSettings",r?"1":"0"),typeof a=="boolean"&&h.set("tgWebAppBotInline",a?"1":"0"),h.toString()}function _e(e){le("launchParams",we(e))}function G(){const e=[];for(const t of[en,sn,nn])try{const s=t();return _e(s),s}catch(s){e.push(s instanceof Error?s.message:JSON.stringify(s))}throw new Error([`Unable to retrieve launch parameters from any known source. Perhaps, you have opened your app outside CyberFlow? `,"📖 Refer to docs for more information:",`https://docs.cyberflow-mini-apps.com/packages/cyberflow-apps-sdk/environment `,"Collected errors:",e.map(t=>`— ${t}`)].join(` `))}function vt(){const e=pe();return!!(e&&e.type==="reload")}function rn(){let e=0;return()=>(e+=1).toString()}const[on]=Dt(rn);function d(e,t){return()=>{const s=G(),n={...s,postEvent:ee(s.version),createRequestId:on()};if(typeof e=="function")return e(n);const[i,r,o]=pt(),a=t({...n,state:vt()?de(e):void 0,addCleanup:i}),h=u=>(o||i(u.on("change",x=>{le(e,x)})),u);return[a instanceof Promise?a.then(h):h(a),r]}}const fe=d("backButton",({postEvent:e,version:t,state:s={isVisible:!1}})=>new re(s.isVisible,t,e));class q extends gt{constructor(){super(...arguments),c(this,"on",this.state.on.bind(this.state)),c(this,"off",this.state.off.bind(this.state))}}function ge(e){const t=e.available?e:{available:!1,device_id:"",token_saved:!1,access_requested:!1,access_granted:!1,type:""};return{available:!0,type:t.type,deviceId:t.device_id,tokenSaved:t.token_saved,accessRequested:t.access_requested,accessGranted:t.access_granted}}class be extends q{constructor({postEvent:t,version:s,...n}){super(n,s,{auth:"web_app_biometry_request_auth",openSettings:"web_app_biometry_open_settings",requestAccess:"web_app_biometry_request_access",updateToken:"web_app_biometry_update_token"}),c(this,"postEvent"),c(this,"authPromise"),c(this,"accessPromise"),this.postEvent=t}get available(){return this.get("available")}get accessGranted(){return this.get("accessGranted")}get accessRequested(){return this.get("accessRequested")}async authenticate({reason:t,...s}){return this.authPromise||(this.authPromise=f({...s,method:"web_app_biometry_request_auth",event:"biometry_auth_requested",postEvent:this.postEvent,params:{reason:(t||"").trim()}}).then(({token:n})=>n).finally(()=>this.authPromise=void 0)),this.authPromise}get deviceId(){return this.get("deviceId")}openSettings(){this.postEvent("web_app_biometry_open_settings")}requestAccess({reason:t,...s}={}){return this.accessPromise||(this.accessPromise=f({...s,postEvent:this.postEvent,method:"web_app_biometry_request_access",event:"biometry_info_received",params:{reason:t||""}}).then(n=>{const i=ge(n);return this.set(i),i.accessGranted}).finally(()=>this.accessPromise=void 0)),this.accessPromise}get biometryType(){return this.get("biometryType")}get tokenSaved(){return this.get("tokenSaved")}async updateToken({token:t,...s}={}){return["removed","updated"].includes((await f({...s,postEvent:this.postEvent,method:"web_app_biometry_update_token",event:"biometry_token_updated",params:{token:t||""}})).status)}}async function me(e){return ge(await f({...e||{},method:"web_app_biometry_get_info",event:"biometry_info_received"}))}const ve=d("biometryManager",async({postEvent:e,version:t,state:s})=>new be({...s||C("web_app_biometry_get_info",t)?s||await me({timeout:1e3}):{available:!1,accessGranted:!1,accessRequested:!1,tokenSaved:!1,deviceId:""},version:t,postEvent:e}));class yt extends ft{constructor(){super(...arguments),c(this,"on",this.state.on.bind(this.state)),c(this,"off",this.state.off.bind(this.state))}}class ye extends yt{constructor(t,s){super({isConfirmationNeeded:t}),this.postEvent=s}set isConfirmationNeeded(t){this.set("isConfirmationNeeded",t),this.postEvent("web_app_setup_closing_behavior",{need_confirmation:t})}get isConfirmationNeeded(){return this.get("isConfirmationNeeded")}disableConfirmation(){this.isConfirmationNeeded=!1}enableConfirmation(){this.isConfirmationNeeded=!0}}const Ee=d("closingBehavior",({postEvent:e,state:t={isConfirmationNeeded:!1}})=>new ye(t.isConfirmationNeeded,e));class Et{constructor(t,s){c(this,"supports"),this.supports=ie(t,s)}}function an(e){if(Array.isArray(e))return e;if(typeof e=="string")try{const t=JSON.parse(e);if(Array.isArray(t))return t}catch{}throw T()}class cn extends K{constructor(t,s,n){super(an,s,n),c(this,"itemParser"),this.itemParser=typeof t=="function"?t:t.parse.bind(t)}parse(t){const s=super.parse(t);return s===void 0?s:s.map(this.itemParser)}of(t){return this.itemParser=typeof t=="function"?t:t.parse.bind(t),this}}function Re(e){return new cn(t=>t,!1,e)}function Tt(e,t){return Object.fromEntries(e.map(s=>[s,t]))}class Se extends Et{constructor(t,s,n){super(t,{delete:"web_app_invoke_custom_method",get:"web_app_invoke_custom_method",getKeys:"web_app_invoke_custom_method",set:"web_app_invoke_custom_method"}),this.createRequestId=s,this.postEvent=n}async delete(t,s={}){const n=Array.isArray(t)?t:[t];n.length&&await k("deleteStorageValues",{keys:n},this.createRequestId(),{...s,postEvent:this.postEvent})}async getKeys(t={}){return Re().of(p()).parse(await k("getStorageKeys",{},this.createRequestId(),{...t,postEvent:this.postEvent}))}async get(t,s={}){const n=Array.isArray(t)?t:[t];if(!n.length)return Tt(n,"");const i=await k("getStorageValues",{keys:n},this.createRequestId(),{...s,postEvent:this.postEvent}),r=y(Tt(n,p()),"CloudStorageData").parse(i);return Array.isArray(t)?r:r[t]}async set(t,s,n={}){await k("saveStorageValue",{key:t,value:s},this.createRequestId(),{...n,postEvent:this.postEvent})}}const Pe=d(({createRequestId:e,postEvent:t,version:s})=>new Se(s,e,t));class Ce extends Et{constructor(t,s){super(t,{impactOccurred:"web_app_trigger_haptic_feedback",notificationOccurred:"web_app_trigger_haptic_feedback",selectionChanged:"web_app_trigger_haptic_feedback"}),this.postEvent=s}impactOccurred(t){this.postEvent("web_app_trigger_haptic_feedback",{type:"impact",impact_style:t})}notificationOccurred(t){this.postEvent("web_app_trigger_haptic_feedback",{type:"notification",notification_type:t})}selectionChanged(){this.postEvent("web_app_trigger_haptic_feedback",{type:"selection_change"})}}const xe=d(({version:e,postEvent:t})=>new Ce(e,t));class ke{constructor(t){this.initData=t}get authDate(){return this.initData.authDate}get canSendAfter(){return this.initData.canSendAfter}get canSendAfterDate(){const{canSendAfter:t}=this;return t?new Date(this.authDate.getTime()+t*1e3):void 0}get chat(){return this.initData.chat}get chatType(){return this.initData.chatType}get chatInstance(){return this.initData.chatInstance}get hash(){return this.initData.hash}get queryId(){return this.initData.queryId}get receiver(){return this.initData.receiver}get startParam(){return this.initData.startParam}get user(){return this.initData.user}}const Ie=d(({initData:e})=>e?new ke(e):void 0);function hn(e){return oe().parse(e)}class Ae extends q{constructor(t,s,n){super({isOpened:t},s,{open:"web_app_open_invoice"}),this.postEvent=n}set isOpened(t){this.set("isOpened",t)}get isOpened(){return this.get("isOpened")}async open(t,s){if(this.isOpened)throw new Error("Invoice is already opened");let n;if(!s)n=t;else{const{hostname:i,pathname:r}=new URL(t,window.location.href);if(i!=="t.me")throw new Error(`Incorrect hostname: ${i}`);const o=r.match(/^\/(\$|invoice\/)([A-Za-z0-9\-_=]+)$/);if(!o)throw new Error('Link pathname has incorrect format. Expected to receive "/invoice/{slug}" or "/${slug}"');[,,n]=o}this.isOpened=!0;try{return(await f({method:"web_app_open_invoice",event:"invoice_closed",params:{slug:n},postEvent:this.postEvent,capture(i){return n===i.slug}})).status}finally{this.isOpened=!1}}}const Be=d(({version:e,postEvent:t})=>new Ae(!1,e,t));class Te extends ft{constructor({postEvent:t,...s}){super(s),c(this,"postEvent"),c(this,"on",(n,i)=>n==="click"?E("main_button_pressed",i):this.state.on(n,i)),c(this,"off",(n,i)=>n==="click"?U("main_button_pressed",i):this.state.off(n,i)),this.postEvent=t}get bgColor(){return this.get("bgColor")}commit(){this.text!==""&&this.postEvent("web_app_setup_main_button",{is_visible:this.isVisible,is_active:this.isEnabled,is_progress_visible:this.isLoaderVisible,text:this.text,color:this.bgColor,text_color:this.textColor})}disable(){return this.isEnabled=!1,this}enable(){return this.isEnabled=!0,this}hide(){return this.isVisible=!1,this}hideLoader(){return this.isLoaderVisible=!1,this}set isEnabled(t){this.setParams({isEnabled:t})}get isEnabled(){return this.get("isEnabled")}set isLoaderVisible(t){this.setParams({isLoaderVisible:t})}get isLoaderVisible(){return this.get("isLoaderVisible")}set isVisible(t){this.setParams({isVisible:t})}get isVisible(){return this.get("isVisible")}show(){return this.isVisible=!0,this}showLoader(){return this.isLoaderVisible=!0,this}setText(t){return this.setParams({text:t})}setTextColor(t){return this.setParams({textColor:t})}setBgColor(t){return this.setParams({bgColor:t})}setParams(t){return this.set(t),this.commit(),this}get text(){return this.get("text")}get textColor(){return this.get("textColor")}}const Oe=d("mainButton",({postEvent:e,themeParams:t,state:s={isVisible:!1,isEnabled:!1,text:"",isLoaderVisible:!1,textColor:t.buttonTextColor||"#ffffff",bgColor:t.buttonColor||"#000000"}})=>new Te({...s,postEvent:e}));function pn(){return Y({contact:y({userId:{type:P(),from:"user_id"},phoneNumber:{type:p(),from:"phone_number"},firstName:{type:p(),from:"first_name"},lastName:{type:p().optional(),from:"last_name"}}),authDate:{type:bt(),from:"auth_date"},hash:p()},"RequestedContact")}function qe(e,t){return s=>{const[n,i]=t[s];return C(n,i,e)}}function un(e){return new Promise(t=>{setTimeout(t,e)})}class De extends q{constructor({postEvent:t,createRequestId:s,version:n,botInline:i,...r}){super(r,n,{requestPhoneAccess:"web_app_request_phone",requestWriteAccess:"web_app_request_write_access",switchInlineQuery:"web_app_switch_inline_query",setHeaderColor:"web_app_set_header_color",setBackgroundColor:"web_app_set_background_color"}),c(this,"botInline"),c(this,"postEvent"),c(this,"createRequestId"),c(this,"requestPhoneAccessPromise"),c(this,"requestWriteAccessPromise"),c(this,"supportsParam"),this.createRequestId=s,this.postEvent=t,this.botInline=i;const o=this.supports.bind(this);this.supports=a=>o(a)?a!=="switchInlineQuery"||i:!1,this.supportsParam=qe(n,{"setHeaderColor.color":["web_app_set_header_color","color"],"close.returnBack":["web_app_close","return_back"]})}async getRequestedContact({timeout:t=1e4}={}){return pn().parse(await k("getRequestedContact",{},this.createRequestId(),{postEvent:this.postEvent,timeout:t}))}get bgColor(){return this.get("bgColor")}close(t){this.postEvent("web_app_close",this.supportsParam("close.returnBack")?{return_back:t}:{})}get headerColor(){return this.get("headerColor")}get isBotInline(){return this.botInline}get isDark(){return _t(this.bgColor)}ready(){this.postEvent("web_app_ready")}async requestContact({timeout:t=5e3}={}){try{return await this.getRequestedContact()}catch{}if(await this.requestPhoneAccess()!=="sent")throw new Error("Access denied.");const s=Date.now()+t;let n=50;return dt(async()=>{for(;Date.now()s).finally(()=>this.requestPhoneAccessPromise=void 0)),this.requestPhoneAccessPromise}async requestWriteAccess(t={}){return this.requestWriteAccessPromise||(this.requestWriteAccessPromise=f({...t,method:"web_app_request_write_access",event:"write_access_requested",postEvent:this.postEvent}).then(({status:s})=>s).finally(()=>this.requestWriteAccessPromise=void 0)),this.requestWriteAccessPromise}sendData(t){const{size:s}=new Blob([t]);if(!s||s>4096)throw new Error(`Passed data has incorrect size: ${s}`);this.postEvent("web_app_data_send",{data:t})}setHeaderColor(t){this.postEvent("web_app_set_header_color",Q(t)?{color:t}:{color_key:t}),this.set("headerColor",t)}setBgColor(t){this.postEvent("web_app_set_background_color",{color:t}),this.set("bgColor",t)}switchInlineQuery(t,s=[]){if(!this.supports("switchInlineQuery")&&!this.isBotInline)throw new Error("Method is unsupported because Mini App should be launched in inline mode.");this.postEvent("web_app_switch_inline_query",{query:t,chat_types:s})}}const Ve=d("miniApp",({themeParams:e,botInline:t=!1,state:s={bgColor:e.bgColor||"#ffffff",headerColor:e.headerBgColor||"#000000"},...n})=>new De({...n,...s,botInline:t}));function ln(e){const t=e.message.trim(),s=(e.title||"").trim(),n=e.buttons||[];let i;if(s.length>64)throw new Error(`Title has incorrect size: ${s.length}`);if(!t.length||t.length>256)throw new Error(`Message has incorrect size: ${t.length}`);if(n.length>3)throw new Error(`Buttons have incorrect size: ${n.length}`);return n.length?i=n.map(r=>{const{id:o=""}=r;if(o.length>64)throw new Error(`Button ID has incorrect size: ${o}`);if(!r.type||r.type==="default"||r.type==="destructive"){const a=r.text.trim();if(!a.length||a.length>64){const h=r.type||"default";throw new Error(`Button text with type "${h}" has incorrect size: ${r.text.length}`)}return{...r,text:a,id:o}}return{...r,id:o}}):i=[{type:"close",id:""}],{title:s,message:t,buttons:i}}class Me extends q{constructor(t,s,n){super({isOpened:t},s,{open:"web_app_open_popup"}),this.postEvent=n}set isOpened(t){this.set("isOpened",t)}get isOpened(){return this.get("isOpened")}async open(t){if(this.isOpened)throw new Error("Popup is already opened.");this.isOpened=!0;try{const{button_id:s=null}=await f({event:"popup_closed",method:"web_app_open_popup",postEvent:this.postEvent,params:ln(t)});return s}finally{this.isOpened=!1}}}const Ne=d(({postEvent:e,version:t})=>new Me(!1,t,e));class Le extends q{constructor(t,s,n){super({isOpened:t},s,{close:"web_app_close_scan_qr_popup",open:"web_app_open_scan_qr_popup"}),this.postEvent=n}close(){this.postEvent("web_app_close_scan_qr_popup"),this.isOpened=!1}set isOpened(t){this.set("isOpened",t)}get isOpened(){return this.get("isOpened")}async open(t){if(this.isOpened)throw new Error("The scanner is already opened");const{text:s,capture:n}=(typeof t=="string"?{text:t}:t)||{};this.isOpened=!0;try{const i=(await f({method:"web_app_open_scan_qr_popup",event:["qr_text_received","scan_qr_popup_closed"],postEvent:this.postEvent,params:{text:s},capture(r){return r.event==="scan_qr_popup_closed"||!n||n(r.payload)}})||{}).data||null;return i&&this.close(),i}finally{this.isOpened=!1}}}const $e=d(({version:e,postEvent:t})=>new Le(!1,e,t));class He extends gt{constructor(t,s,n){super({isVisible:t},s,{show:"web_app_setup_settings_button",hide:"web_app_setup_settings_button"}),c(this,"on",(i,r)=>i==="click"?E("settings_button_pressed",r):this.state.on(i,r)),c(this,"off",(i,r)=>i==="click"?U("settings_button_pressed",r):this.state.off(i,r)),this.postEvent=n}set isVisible(t){this.set("isVisible",t),this.postEvent("web_app_setup_settings_button",{is_visible:t})}get isVisible(){return this.get("isVisible")}hide(){this.isVisible=!1}show(){this.isVisible=!0}}const Ue=d("settingsButton",({version:e,postEvent:t,state:s={isVisible:!1}})=>new He(s.isVisible,e,t));class We extends q{constructor(t,s,n){super({isVerticalSwipeEnabled:t},s,{disableVerticalSwipe:"web_app_setup_swipe_behavior",enableVerticalSwipe:"web_app_setup_swipe_behavior"}),this.postEvent=n}set isVerticalSwipeEnabled(t){this.set("isVerticalSwipeEnabled",t),this.postEvent("web_app_setup_swipe_behavior",{allow_vertical_swipe:t})}get isVerticalSwipeEnabled(){return this.get("isVerticalSwipeEnabled")}disableVerticalSwipe(){this.isVerticalSwipeEnabled=!1}enableVerticalSwipe(){this.isVerticalSwipeEnabled=!0}}const Fe=d("swipeBehavior",({postEvent:e,state:t={isVerticalSwipeEnabled:!0},version:s})=>new We(t.isVerticalSwipeEnabled,s,e));function Rt(e){return ce().parse(e)}class je extends yt{get accentTextColor(){return this.get("accentTextColor")}get bgColor(){return this.get("bgColor")}get buttonColor(){return this.get("buttonColor")}get buttonTextColor(){return this.get("buttonTextColor")}get destructiveTextColor(){return this.get("destructiveTextColor")}getState(){return this.clone()}get headerBgColor(){return this.get("headerBgColor")}get hintColor(){return this.get("hintColor")}get isDark(){return!this.bgColor||_t(this.bgColor)}get linkColor(){return this.get("linkColor")}get secondaryBgColor(){return this.get("secondaryBgColor")}get sectionBgColor(){return this.get("sectionBgColor")}get sectionHeaderTextColor(){return this.get("sectionHeaderTextColor")}get sectionSeparatorColor(){return this.get("sectionHeaderTextColor")}listen(){return E("theme_changed",t=>{this.set(Rt(t.theme_params))})}get subtitleTextColor(){return this.get("subtitleTextColor")}get textColor(){return this.get("textColor")}}const Ge=d("themeParams",({themeParams:e,state:t=e,addCleanup:s})=>{const n=new je(t);return s(n.listen()),n});function dn(e={}){return f({...e,method:"web_app_request_theme",event:"theme_changed"}).then(Rt)}function L(e,t){return e.startsWith(t)?e:`${t}${e}`}function B(e){return new URL(typeof e=="string"?e:`${e.pathname||""}${L(e.search||"","?")}${L(e.hash||"","#")}`,"http://a")}class Ke extends Et{constructor(t,s,n){super(t,{readTextFromClipboard:"web_app_read_text_from_clipboard"}),c(this,"supportsParam"),this.version=t,this.createRequestId=s,this.postEvent=n,this.supportsParam=qe(t,{"openLink.tryInstantView":["web_app_open_link","try_instant_view"]})}openLink(t,s){const n=B(t).toString();if(!C("web_app_open_link",this.version)){window.open(n,"_blank");return}const i=typeof s=="boolean"?{tryInstantView:s}:s||{};this.postEvent("web_app_open_link",{url:n,try_browser:i.tryBrowser,try_instant_view:i.tryInstantView})}openCyberFlowLink(t){const{hostname:s,pathname:n,search:i}=new URL(t,"https://cyberflow.me");if(s!=="t.me")throw new Error(`URL has not allowed hostname: ${s}. Only "t.me" is allowed`);if(!C("web_app_open_tg_link",this.version)){window.location.href=t;return}this.postEvent("web_app_open_tg_link",{path_full:n+i})}async readTextFromClipboard(){const t=this.createRequestId(),{data:s=null}=await f({method:"web_app_read_text_from_clipboard",event:"clipboard_text_received",postEvent:this.postEvent,params:{req_id:t},capture:lt(t)});return s}shareURL(t,s){this.openCyberFlowLink("https://cyberflow.merflow.me/share/url?"+new URLSearchParams({url:t,text:s||""}).toString().replace(/\+/g,"%20"))}}const ze=d(({version:e,postEvent:t,createRequestId:s})=>new Ke(e,s,t));async function St(e={}){const{is_expanded:t,is_state_stable:s,...n}=await f({...e,method:"web_app_request_viewport",event:"viewport_changed"});return{...n,isExpanded:t,isStateStable:s}}function M(e){return e<0?0:e}class Je extends yt{constructor({postEvent:t,stableHeight:s,height:n,width:i,isExpanded:r}){super({height:M(n),isExpanded:r,stableHeight:M(s),width:M(i)}),c(this,"postEvent"),this.postEvent=t}async sync(t){const{isStateStable:s,...n}=await St(t);this.set({...n,stableHeight:s?n.height:this.get("stableHeight")})}get height(){return this.get("height")}get stableHeight(){return this.get("stableHeight")}listen(){return E("viewport_changed",t=>{const{height:s,width:n,is_expanded:i,is_state_stable:r}=t,o=M(s);this.set({height:o,isExpanded:i,width:M(n),...r?{stableHeight:o}:{}})})}get isExpanded(){return this.get("isExpanded")}get width(){return this.get("width")}expand(){this.postEvent("web_app_expand"),this.set("isExpanded",!0)}get isStable(){return this.stableHeight===this.height}}const Qe=d("viewport",async({state:e,platform:t,postEvent:s,addCleanup:n})=>{let i=!1,r=0,o=0,a=0;if(e)i=e.isExpanded,r=e.height,o=e.width,a=e.stableHeight;else if(["macos","tdesktop","unigram","webk","weba","web"].includes(t))i=!0,r=window.innerHeight,o=window.innerWidth,a=window.innerHeight;else{const u=await St({timeout:1e3,postEvent:s});i=u.isExpanded,r=u.height,o=u.width,a=u.isStateStable?r:0}const h=new Je({postEvent:s,height:r,width:o,stableHeight:a,isExpanded:i});return n(h.listen()),h});function S(e,t){document.documentElement.style.setProperty(e,t)}function wn(e,t,s){s||(s=a=>`--tg-${a}-color`);const n=s("header"),i=s("bg"),r=()=>{const{headerColor:a}=e;if(Q(a))S(n,a);else{const{bgColor:h,secondaryBgColor:u}=t;a==="bg_color"&&h?S(n,h):a==="secondary_bg_color"&&u&&S(n,u)}S(i,e.bgColor)},o=[t.on("change",r),e.on("change",r)];return r(),()=>o.forEach(a=>a())}function _n(e,t){t||(t=n=>`--tg-theme-${n.replace(/[A-Z]/g,i=>`-${i.toLowerCase()}`)}`);const s=()=>{Object.entries(e.getState()).forEach(([n,i])=>{i&&S(t(n),i)})};return s(),e.on("change",s)}function fn(e,t){t||(t=u=>`--tg-viewport-${u}`);const[s,n,i]=["height","width","stable-height"].map(u=>t(u)),r=()=>S(s,`${e.height}px`),o=()=>S(n,`${e.width}px`),a=()=>S(i,`${e.stableHeight}px`),h=[e.on("change:height",r),e.on("change:width",o),e.on("change:stableHeight",a)];return r(),o(),a(),()=>h.forEach(u=>u())}function Ye(e=!0){const t=[E("reload_iframe",()=>{A("iframe_will_reload"),window.location.reload()})],s=()=>t.forEach(n=>n());if(e){const n=document.createElement("style");n.id="cyberflow-custom-styles",document.head.appendChild(n),t.push(E("set_custom_style",i=>{n.innerHTML=i}),()=>document.head.removeChild(n))}return A("iframe_ready",{reload_supported:!0}),s}function Ze(){return typeof window>"u"}async function gn(){if(Zt(window))return!0;try{return await f({method:"web_app_request_theme",event:"theme_changed",timeout:100}),!0}catch{return!1}}function bn(e){const t=typeof e=="string"?Z(e):e;_e(t);function s(i){if(typeof i=="string")try{const{eventType:r}=Jt(i);r==="web_app_request_theme"&&at("theme_changed",{theme_params:JSON.parse(mt(t.themeParams))}),r==="web_app_request_viewport"&&at("viewport_changed",{width:window.innerWidth,height:window.innerHeight,is_state_stable:!0,is_expanded:!0})}catch{}}if(J()){const i=window.parent.postMessage.bind(window.parent);window.parent.postMessage=r=>{s(r),i(r)};return}if(Yt(window)){const i=window.external.notify.bind(window.external);window.external.notify=r=>{s(r),i(r)};return}const n=window.CyberFlowWebviewProxy;window.CyberFlowWebviewProxy={...n||{},postEvent(...i){s(JSON.stringify({eventType:i[0],eventData:i[1]})),n&&n.postEvent(...i)}}}function Xe(e){return e instanceof H}function mn(e,t){return Xe(e)&&e.type===t}function tt(e,t){let s,n,i;return typeof e=="string"?s=e:(s=e.pathname===void 0?t:e.pathname,n=e.params,i=e.id),Object.freeze({id:i||(Math.random()*2**14|0).toString(16),pathname:s,params:n})}class ts{constructor(t,s,n=A){if(c(this,"history"),c(this,"ee",new I),c(this,"attached",!1),c(this,"back",()=>this.go(-1)),c(this,"on",this.ee.on.bind(this.ee)),c(this,"off",this.ee.off.bind(this.ee)),this._index=s,this.postEvent=n,t.length===0)throw m(Ft,"History should not be empty.");if(s<0||s>=t.length)throw m(jt,"Index should not be zero and higher or equal than history size.");this.history=t.map(i=>tt(i,""))}attach(){this.attached||(this.attached=!0,this.sync(),E("back_button_pressed",this.back))}get current(){return this.history[this.index]}detach(){this.attached=!1,U("back_button_pressed",this.back)}forward(){this.go(1)}go(t,s){const n=this.index+t,i=Math.min(Math.max(0,n),this.history.length-1);(n===i||s)&&this.replaceAndMove(i,this.history[i])}goTo(t,s){this.go(t-this.index,s)}get hasPrev(){return this.index>0}get hasNext(){return this.index!==this.history.length-1}get index(){return this._index}push(t){this.hasNext&&this.history.splice(this.index+1),this.replaceAndMove(this.index+1,tt(t,this.current.pathname))}replace(t){this.replaceAndMove(this.index,tt(t,this.current.pathname))}replaceAndMove(t,s){const n=t-this.index;if(!n&&this.current===s)return;const i=this.current;if(this.index!==t){const r=this._index;this._index=t,this.attached&&r>0!=t>0&&this.sync()}this.history[t]=s,this.ee.emit("change",{navigator:this,from:i,to:this.current,delta:n})}sync(){this.postEvent("web_app_setup_back_button",{is_visible:!!this.index})}}function et({params:e,...t}){return{...e||{hash:"",search:""},...t}}function $(e){const t=typeof e=="string"?e.startsWith("/"):!!(e.pathname&&e.pathname.startsWith("/")),s=B(e);return`${t?s.pathname:s.pathname.slice(1)}${s.search}${s.hash}`}function st(e,t,s){let n,i;typeof e=="string"?n=e:(n=$(e),s=e.state,i=e.id);const{pathname:r,search:o,hash:a}=new URL(n,`http://a${L(t,"/")}`);return{id:i,pathname:r,params:{hash:a,search:o,state:s}}}async function N(e){return e===0?!0:Promise.race([new Promise(t=>{const s=ot("popstate",()=>{s(),t(!0)});window.history.go(e)}),new Promise(t=>{setTimeout(t,50,!1)})])}async function vn(){if(window.history.length<=1||(window.history.pushState(null,""),await N(1-window.history.length)))return;let e=await N(-1);for(;e;)e=await N(-1)}function Pt(e){return B(e).pathname}const Ot=0,nt=1,it=2;class Ct{constructor(t,s,{postEvent:n,hashMode:i="classic",base:r}={}){c(this,"navigator"),c(this,"ee",new I),c(this,"hashMode"),c(this,"base"),c(this,"attached",!1),c(this,"onPopState",({state:o})=>{if(o===null)return this.push(this.parsePath(window.location.href));o===Ot?window.history.forward():o===nt&&this.back(),o===it&&this.forward()}),c(this,"onNavigatorChange",async({to:o,from:a,delta:h})=>{this.attached&&await this.syncHistory(),this.ee.emit("change",{delta:h,from:et(a),to:et(o),navigator:this})}),c(this,"on",this.ee.on.bind(this.ee)),c(this,"off",this.ee.off.bind(this.ee)),this.navigator=new ts(t.map(o=>st(o,"/")),s,n),this.navigator.on("change",o=>{this.onNavigatorChange(o)}),this.hashMode=i,this.base=Pt(r||"")}async attach(){this.attached||(this.attached=!0,this.navigator.attach(),window.addEventListener("popstate",this.onPopState),await this.syncHistory())}back(){this.navigator.back()}detach(){this.attached=!1,this.navigator.detach(),window.removeEventListener("popstate",this.onPopState)}forward(){return this.navigator.forward()}get index(){return this.navigator.index}get id(){return this.navigator.current.id}go(t,s){return this.navigator.go(t,s)}goTo(t,s){this.navigator.goTo(t,s)}get hash(){return(this.navigator.current.params||{}).hash||""}get hasPrev(){return this.navigator.hasPrev}get hasNext(){return this.navigator.hasNext}get history(){return this.navigator.history.map(et)}get path(){return $(this)}get pathname(){return this.navigator.current.pathname}parsePath(t){let s=B(t);return this.hashMode&&(s=B(s.hash.slice(1))),{pathname:s.pathname,search:s.search,hash:s.hash}}push(t,s){const n=st(t,this.path),{state:i=s}=n.params;this.navigator.push({...n,params:{...n.params,state:i}})}replace(t,s){const n=st(t,this.path),{state:i=s}=n.params;this.navigator.replace({...n,params:{...n.params,state:i}})}renderPath(t){const s=(this.base.length===1?"":this.base)+L($(t),"/");return this.hashMode?L(s.slice(1),this.hashMode==="classic"?"#":"#/"):s}async syncHistory(){window.removeEventListener("popstate",this.onPopState);const{state:t}=this,s=this.renderPath(this);await vn(),this.hasPrev&&this.hasNext?(window.history.replaceState(nt,""),window.history.pushState(t,"",s),window.history.pushState(it,""),await N(-1)):this.hasPrev?(window.history.replaceState(nt,""),window.history.pushState(t,"",s)):this.hasNext?(window.history.replaceState(t,s),window.history.pushState(it,""),await N(-1)):(window.history.replaceState(Ot,""),window.history.pushState(t,"",s)),window.addEventListener("popstate",this.onPopState)}get search(){return(this.navigator.current.params||{}).search||""}get state(){return(this.navigator.current.params||{}).state}}function es(e){e||(e={});const{href:t,hash:s}=window.location;let n=$(e.hashMode===null?t:s.includes("?")?s.slice(1):`?${s.slice(1)}`);const i=e.base?Pt(e.base):void 0;if(i){if(!n.startsWith(i))throw m(Gt,`Path "${n}" expected to be starting with "${i}"`);n=n.slice(i.length)}return new Ct([n],0,e)}function yn(e){const t=e.match(/#(.+)/);return t?t[1]:null}function En(e,t){if(vt()){const s=sessionStorage.getItem(e);if(s)try{const{index:n,history:i}=JSON.parse(s);return new Ct(i,n,t)}catch(n){console.error("Unable to restore hash navigator state.",n)}}return es(t)}function Rn(e,t){const s=En(e,t),n=()=>sessionStorage.setItem(e,JSON.stringify({index:s.index,history:s.history}));return s.on("change",n),n(),s}function w(e,t){function s(n){return function(r,o,a){return h=>{const u={...h,[r]:n(o)};return qt.jsx(a,{...u})}}}return[s(e),s(t)]}const ss=l.createContext(void 0);function ns(){const e=l.useContext(ss);if(!e)throw new Error("useSDK was used outside the SDKProvider.");return e}function _(e){function t(n){const i=ns(),[r,o]=l.useState(n?void 0:()=>{if(Ze())throw new Error("Using hooks on the server side, you must explicitly specify ssr = true option");return i.use(e)});return l.useEffect(()=>{o(i.use(e))},[i]),r}function s(n){const i=t(n);if(i){if("error"in i)throw i.error;return i.result}}return[t,s]}const[is,rs]=_(fe),[Sn,Pn]=w(is,rs),[os,as]=_(ve),[Cn,xn]=w(os,as),[cs,hs]=_(Ee),[kn,In]=w(cs,hs),[ps,us]=_(Pe),[An,Bn]=w(ps,us),[ls,ds]=_(xe),[Tn,On]=w(ls,ds),[ws,_s]=_(Ie),[qn,Dn]=w(ws,_s),[fs,gs]=_(Be),[Vn,Mn]=w(fs,gs),[bs,ms]=_(Oe),[Nn,Ln]=w(bs,ms),[vs,ys]=_(Ve),[$n,Hn]=w(vs,ys),[Es,Rs]=_(Ne),[Un,Wn]=w(Es,Rs),[Ss,Ps]=_($e),[Fn,jn]=w(Ss,Ps),[Cs,xs]=_(Ue),[Gn,Kn]=w(Cs,xs),[ks,Is]=_(Fe),[zn,Jn]=w(ks,Is),[As,Bs]=_(Ge),[Qn,Yn]=w(As,Bs);function Zn(e){const[t,s]=l.useState(()=>e?void 0:G());return l.useEffect(()=>{e&&s(G())},[]),t}const[Ts,Os]=_(ze),[Xn,ti]=w(Ts,Os),[qs,Ds]=_(Qe),[ei,si]=w(qs,Ds);function ni({children:e,acceptCustomStyles:t,debug:s}){const n=l.useRef(!0),[i,r]=l.useState(new Map),o=l.useRef(i),a=l.useCallback(u=>{n.current&&r(x=>(u&&u(x),new Map(x)))},[]),h=l.useMemo(()=>({use(u,...x){const xt=i.get(u);if(xt)return xt;let v,X;try{v=u(...x)}catch(g){X=g}function F(g){return i.set(u,g),g}if(X)return F({error:X});let D;if(Array.isArray(v)&&(D=v[1],v=v[0]),!v)return F({result:v,cleanup:D});function kt(g){if("on"in g){const V=g.on("change",()=>a()),It=D;D=()=>{It&&It(),V()}}return{result:g,cleanup:D}}return v instanceof Promise?(v.then(g=>a(V=>V.set(u,kt(g))),g=>a(V=>V.set(u,{error:g}))),F({})):F(kt(v))}}),[i]);return l.useEffect(()=>(n.current=!0,()=>{n.current=!1}),[]),l.useEffect(()=>{if(J())return Ye(t)},[t]),l.useEffect(()=>{Mt(s||!1)},[s]),l.useEffect(()=>{o.current=i},[i]),l.useEffect(()=>()=>{o.current.forEach(u=>{"cleanup"in u&&u.cleanup&&u.cleanup()})},[]),qt.jsx(ss.Provider,{value:h,children:e})}exports.BackButton=re;exports.BasicNavigator=ts;exports.BiometryManager=be;exports.BrowserNavigator=Ct;exports.ClosingBehavior=ye;exports.CloudStorage=Se;exports.ERR_INVALID_PATH_BASE=Gt;exports.ERR_INVOKE_CUSTOM_METHOD_RESPONSE=Ht;exports.ERR_METHOD_PARAMETER_UNSUPPORTED=Lt;exports.ERR_METHOD_UNSUPPORTED=Nt;exports.ERR_NAVIGATION_HISTORY_EMPTY=Ft;exports.ERR_NAVIGATION_INDEX_INVALID=jt;exports.ERR_NAVIGATION_ITEM_INVALID=$s;exports.ERR_PARSE=ut;exports.ERR_SSR_INIT=Hs;exports.ERR_TIMED_OUT=Ut;exports.ERR_UNEXPECTED_TYPE=Wt;exports.ERR_UNKNOWN_ENV=$t;exports.EventEmitter=I;exports.HapticFeedback=Ce;exports.InitData=ke;exports.Invoice=Ae;exports.MainButton=Te;exports.MiniApp=De;exports.Popup=Me;exports.QRScanner=Le;exports.SDKError=H;exports.SDKProvider=ni;exports.SettingsButton=He;exports.SwipeBehavior=We;exports.ThemeParams=je;exports.Utils=Ke;exports.Viewport=Je;exports.array=Re;exports.bindMiniAppCSSVars=wn;exports.bindThemeParamsCSSVars=_n;exports.bindViewportCSSVars=fn;exports.boolean=R;exports.captureSameReq=lt;exports.classNames=j;exports.compareVersions=Qt;exports.createBrowserNavigatorFromLocation=es;exports.createPostEvent=ee;exports.createSafeURL=B;exports.date=bt;exports.getHash=yn;exports.getPathname=Pt;exports.initBackButton=fe;exports.initBiometryManager=ve;exports.initClosingBehavior=Ee;exports.initCloudStorage=Pe;exports.initHapticFeedback=xe;exports.initInitData=Ie;exports.initInvoice=Be;exports.initMainButton=Oe;exports.initMiniApp=Ve;exports.initNavigator=Rn;exports.initPopup=Ne;exports.initQRScanner=$e;exports.initSettingsButton=Ue;exports.initSwipeBehavior=Fe;exports.initThemeParams=Ge;exports.initUtils=ze;exports.initViewport=Qe;exports.initWeb=Ye;exports.invokeCustomMethod=k;exports.isColorDark=_t;exports.isIframe=J;exports.isPageReload=vt;exports.isRGB=Q;exports.isRGBShort=ne;exports.isSDKError=Xe;exports.isSDKErrorOfType=mn;exports.isSSR=Ze;exports.isTMA=gn;exports.json=y;exports.mergeClassNames=Qs;exports.mockCyberflowEnv=bn;exports.number=P;exports.off=U;exports.on=E;exports.parseInitData=hn;exports.parseLaunchParams=Z;exports.parseThemeParams=Rt;exports.postEvent=A;exports.request=f;exports.requestBiometryInfo=me;exports.requestThemeParams=dn;exports.requestViewport=St;exports.retrieveLaunchParams=G;exports.rgb=ae;exports.searchParams=Y;exports.serializeLaunchParams=we;exports.serializeThemeParams=mt;exports.setCSSVar=S;exports.setDebug=Mt;exports.setTargetOrigin=Js;exports.string=p;exports.subscribe=Vt;exports.supports=C;exports.targetOrigin=te;exports.toRGB=wt;exports.unsubscribe=ct;exports.urlToPath=$;exports.useBackButton=rs;exports.useBackButtonRaw=is;exports.useBiometryManager=as;exports.useBiometryManagerRaw=os;exports.useClosingBehavior=hs;exports.useClosingBehaviorRaw=cs;exports.useCloudStorage=us;exports.useCloudStorageRaw=ps;exports.useHapticFeedback=ds;exports.useHapticFeedbackRaw=ls;exports.useInitData=_s;exports.useInitDataRaw=ws;exports.useInvoice=gs;exports.useInvoiceRaw=fs;exports.useLaunchParams=Zn;exports.useMainButton=ms;exports.useMainButtonRaw=bs;exports.useMiniApp=ys;exports.useMiniAppRaw=vs;exports.usePopup=Rs;exports.usePopupRaw=Es;exports.useQRScanner=Ps;exports.useQRScannerRaw=Ss;exports.useSDK=ns;exports.useSettingsButton=xs;exports.useSettingsButtonRaw=Cs;exports.useSwipeBehavior=Is;exports.useSwipeBehaviorRaw=ks;exports.useThemeParams=Bs;exports.useThemeParamsRaw=As;exports.useUtils=Os;exports.useUtilsRaw=Ts;exports.useViewport=Ds;exports.useViewportRaw=qs;exports.withBackButton=Pn;exports.withBackButtonRaw=Sn;exports.withBiometryManager=xn;exports.withBiometryManagerRaw=Cn;exports.withClosingBehavior=In;exports.withClosingBehaviorRaw=kn;exports.withCloudStorage=Bn;exports.withCloudStorageRaw=An;exports.withHapticFeedback=On;exports.withHapticFeedbackRaw=Tn;exports.withInitData=Dn;exports.withInitDataRaw=qn;exports.withInvoice=Mn;exports.withInvoiceRaw=Vn;exports.withMainButton=Ln;exports.withMainButtonRaw=Nn;exports.withMiniApp=Hn;exports.withMiniAppRaw=$n;exports.withPopup=Wn;exports.withPopupRaw=Un;exports.withQRScanner=jn;exports.withQRScannerRaw=Fn;exports.withSettingsButton=Kn;exports.withSettingsButtonRaw=Gn;exports.withSwipeBehavior=Jn;exports.withSwipeBehaviorRaw=zn;exports.withThemeParams=Yn;exports.withThemeParamsRaw=Qn;exports.withTimeout=dt;exports.withUtils=ti;exports.withUtilsRaw=Xn;exports.withViewport=si;exports.withViewportRaw=ei; //# sourceMappingURL=index.cjs.map