@tma.js/sdk 1.4.0 → 1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dts/bridge/index.d.ts +2 -1
- package/dist/dts/bridge/parseMessage.d.ts +18 -0
- package/dist/dts/index.d.ts +2 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.iife.js +1 -1
- package/dist/index.iife.js.map +1 -1
- package/dist/index.mjs +153 -139
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/bridge/__tests__/parseMessage.ts +23 -0
- package/src/bridge/events/onTelegramEvent.ts +2 -10
- package/src/bridge/index.ts +2 -1
- package/src/bridge/parseMessage.ts +28 -0
- package/src/index.ts +13 -0
- /package/dist/dts/bridge/{invoke-custom-method.d.ts → invokeCustomMethod.d.ts} +0 -0
- /package/src/bridge/{invoke-custom-method.ts → invokeCustomMethod.ts} +0 -0
package/dist/index.iife.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var ur=Object.defineProperty;var hr=(a,g,P)=>g in a?ur(a,g,{enumerable:!0,configurable:!0,writable:!0,value:P}):a[g]=P;var o=(a,g,P)=>(hr(a,typeof g!="symbol"?g+"":g,P),P);this.tmajs=this.tmajs||{};this.tmajs.sdk=function(a){"use strict";function g(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)}function P(){return performance.getEntriesByType("navigation")[0]||null}function st(){const r=P();return r?r.type==="reload":null}function B(){return new TypeError("Value has unexpected type")}class F extends Error{constructor(t,{cause:s,type:n}={}){super(`Unable to parse value${n?` as ${n}`:""}`,{cause:s});o(this,"type");this.value=t,Object.setPrototypeOf(this,F.prototype),this.type=n}}class z{constructor(e,t,s){this.parser=e,this.isOptional=t,this.type=s}parse(e){if(!(this.isOptional&&e===void 0))try{return this.parser(e)}catch(t){throw new F(e,{type:this.type,cause:t})}}optional(){return this.isOptional=!0,this}}function nt(r){if(Array.isArray(r))return r;if(typeof r=="string")try{const e=JSON.parse(r);if(Array.isArray(e))return e}catch{}throw B()}class it extends z{constructor(t,s,n){super(nt,s,n);o(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 $(r,e){return()=>new z(r,!1,e)}class J extends Error{constructor(e,{cause:t,type:s}={}){super(`Unable to parse field "${e}"${s?` as ${s}`:""}`,{cause:t}),Object.setPrototypeOf(this,J.prototype)}}function _e(r,e){const t={};for(const s in r){const n=r[s];if(!n)continue;let i,c;if(typeof n=="function"||"parse"in n)i=s,c=typeof n=="function"?n:n.parse.bind(n);else{const{type:p}=n;i=n.from||s,c=typeof p=="function"?p:p.parse.bind(p)}let u;const l=e(i);try{u=c(l)}catch(p){throw p instanceof F?new J(i,{type:p.type,cause:p}):new J(i,{cause:p})}u!==void 0&&(t[s]=u)}return t}function ot(r){return new it(e=>e,!1,r)}const S=$(r=>{if(typeof r=="boolean")return r;const e=String(r);if(e==="1"||e==="true")return!0;if(e==="0"||e==="false")return!1;throw B()},"boolean"),V=$(r=>{if(typeof r=="number")return r;if(typeof r=="string"){const e=Number(r);if(!Number.isNaN(e))return e}throw B()},"number"),be=$(r=>r instanceof Date?r:new Date(V().parse(r)*1e3),"Date");function X(r){let e=r;if(typeof e=="string"&&(e=JSON.parse(e)),typeof e!="object"||e===null||Array.isArray(e))throw B();return e}function w(r,e){return new z(t=>{const s=X(t);return _e(r,n=>s[n])},!1,e)}function ee(r){return/^#[\da-f]{6}$/i.test(r)}function me(r){return/^#[\da-f]{3}$/i.test(r)}function te(r){const e=r.replace(/\s/g,"").toLowerCase();if(ee(e))return e;if(me(e)){let s="#";for(let n=0;n<3;n+=1)s+=e[1+n].repeat(2);return s}const t=e.match(/^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)$/)||e.match(/^rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),\d{1,3}\)$/);if(t===null)throw new Error(`Value "${r}" does not satisfy any of known RGB formats.`);return t.slice(1).reduce((s,n)=>{const i=parseInt(n,10).toString(16);return s+(i.length===1?"0":"")+i},"#")}function re(r){const e=te(r);return Math.sqrt([.299,.587,.114].reduce((s,n,i)=>{const c=parseInt(e.slice(1+i*2,1+(i+1)*2),16);return s+c*c*n},0))<120}const h=$(r=>{if(typeof r=="string"||typeof r=="number")return r.toString();throw B()},"string"),ye=$(r=>te(h().parse(r)),"rgb");function se(r,e){return new z(t=>{if(typeof t!="string"&&!(t instanceof URLSearchParams))throw B();const s=typeof t=="string"?new URLSearchParams(t):t;return _e(r,n=>{const i=s.get(n);return i===null?void 0:i})},!1,e)}function Ee(){return w({id:V(),type:h(),title:h(),photoUrl:{type:h().optional(),from:"photo_url"},username:h().optional()},"Chat")}class Ce{constructor(e){this.initData=e}get authDate(){return this.initData.authDate}get canSendAfter(){return this.initData.canSendAfter}get canSendAfterDate(){const{canSendAfter:e}=this;return e===void 0?void 0:new Date(this.authDate.getTime()+e*1e3)}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}}function ne(){return w({addedToAttachmentMenu:{type:S().optional(),from:"added_to_attachment_menu"},allowsWriteToPm:{type:S().optional(),from:"allows_write_to_pm"},firstName:{type:h(),from:"first_name"},id:V(),isBot:{type:S().optional(),from:"is_bot"},isPremium:{type:S().optional(),from:"is_premium"},languageCode:{type:h().optional(),from:"language_code"},lastName:{type:h().optional(),from:"last_name"},photoUrl:{type:h().optional(),from:"photo_url"},username:h().optional()},"User")}function ie(){return se({authDate:{type:be(),from:"auth_date"},canSendAfter:{type:V().optional(),from:"can_send_after"},chat:Ee().optional(),chatInstance:{type:h().optional(),from:"chat_instance"},chatType:{type:h().optional(),from:"chat_type"},hash:h(),queryId:{type:h().optional(),from:"query_id"},receiver:ne().optional(),startParam:{type:h().optional(),from:"start_param"},user:ne().optional()},"InitData")}function at(r){return ie().parse(r)}function ct(r){return r.replace(/(^|_)bg/,(e,t)=>`${t}background`).replace(/_([a-z])/g,(e,t)=>t.toUpperCase())}function ut(r){return r.replace(/[A-Z]/g,e=>`_${e.toLowerCase()}`).replace(/(^|_)background/,(e,t)=>`${t}bg`)}const oe=$(r=>{const e=ye().optional();return Object.entries(X(r)).reduce((t,[s,n])=>(t[ct(s)]=e.parse(n),t),{})},"ThemeParams");function ae(r){return oe().parse(r)}function ht(r={}){return C("web_app_request_theme","theme_changed",r).then(ae)}function ve(r){return JSON.stringify(Object.entries(r).reduce((e,[t,s])=>(s&&(e[ut(t)]=s),e),{}))}class b{constructor(){o(this,"listeners",new Map);o(this,"subscribeListeners",[])}addListener(e,t,s){let n=this.listeners.get(e);return n||(n=[],this.listeners.set(e,n)),n.push([t,s]),()=>this.off(e,t)}emit(e,...t){this.subscribeListeners.forEach(n=>n(e,...t));const s=this.listeners.get(e);s&&s.forEach(([n,i],c)=>{n(...t),i&&s.splice(c,1)})}on(e,t){return this.addListener(e,t,!1)}once(e,t){return this.addListener(e,t,!0)}off(e,t){const s=this.listeners.get(e);if(s){for(let n=0;n<s.length;n+=1)if(t===s[n][0]){s.splice(n,1);return}}}subscribe(e){return this.subscribeListeners.push(e),()=>this.unsubscribe(e)}unsubscribe(e){for(let t=0;t<this.subscribeListeners.length;t+=1)if(this.subscribeListeners[t]===e){this.subscribeListeners.splice(t,1);return}}}class y{constructor(e,t){this.state=e,this.ee=t}internalSet(e,t){return this.state[e]===t||t===void 0?!1:(this.state[e]=t,this.ee.emit(`change:${e}`,t),!0)}clone(){return{...this.state}}set(e,t){let s=!1;if(typeof e=="string")s=this.internalSet(e,t);else for(const n in e)this.internalSet(n,e[n])&&(s=!0);s&&this.ee.emit("change")}get(e){return this.state[e]}}class Pe{constructor(e){o(this,"ee",new b);o(this,"state");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));this.state=new y(e,this.ee)}get accentTextColor(){return this.get("accentTextColor")}get backgroundColor(){return this.get("backgroundColor")}get buttonColor(){return this.get("buttonColor")}get buttonTextColor(){return this.get("buttonTextColor")}get destructiveTextColor(){return this.get("destructiveTextColor")}get(e){return this.state.get(e)}getState(){return this.state.clone()}get headerBackgroundColor(){return this.get("headerBackgroundColor")}get hintColor(){return this.get("hintColor")}get isDark(){return!this.backgroundColor||re(this.backgroundColor)}get linkColor(){return this.get("linkColor")}get secondaryBackgroundColor(){return this.get("secondaryBackgroundColor")}get sectionBackgroundColor(){return this.get("sectionBackgroundColor")}get sectionHeaderTextColor(){return this.get("sectionHeaderTextColor")}listen(){return E("theme_changed",e=>{this.state.set(ae(e.theme_params))})}get subtitleTextColor(){return this.get("subtitleTextColor")}get textColor(){return this.get("textColor")}}function ce(){return se({botInline:{type:S().optional(),from:"tgWebAppBotInline"},initData:{type:ie().optional(),from:"tgWebAppData"},initDataRaw:{type:h().optional(),from:"tgWebAppData"},platform:{type:h(),from:"tgWebAppPlatform"},showSettings:{type:S().optional(),from:"tgWebAppShowSettings"},startParam:{type:h().optional(),from:"tgWebAppStartParam"},themeParams:{type:oe(),from:"tgWebAppThemeParams"},version:{type:h(),from:"tgWebAppVersion"}},"LaunchParams")}function Se(r){return ce().parse(r)}function ke(r){const e=r.includes("?")?r.replace("#","&").slice(r.indexOf("?")+1):r.slice(r.indexOf("#")+1);return Se(e)}function pt(){return ke(window.location.href)}function lt(){const r=P();if(!r)throw new Error("Unable to get first navigation entry.");return ke(r.name)}function dt(){try{return lt()}catch{}try{return pt()}catch{}return null}function qe(r){const{initDataRaw:e,themeParams:t,platform:s,version:n,showSettings:i,botInline:c}=r,u=new URLSearchParams;return e&&u.set("tgWebAppData",e),u.set("tgWebAppPlatform",s),u.set("tgWebAppThemeParams",ve(t)),u.set("tgWebAppVersion",n),typeof i=="boolean"&&u.set("tgWebAppShowSettings",i?"1":"0"),typeof c=="boolean"&&u.set("tgWebAppBotInline",c?"1":"0"),u.toString()}const Ae="telegram-mini-apps-launch-params";function ft(){const r=sessionStorage.getItem(Ae);return r?ce().parse(r):null}function gt(r){sessionStorage.setItem(Ae,qe(r))}function wt(){try{return window.self!==window.top}catch{return!0}}function _t(){const r=ft(),e=dt(),t=st();if(r){if(e)return{launchParams:e,isPageReload:wt()?t||r.initDataRaw===e.initDataRaw:!0};if(t)return{launchParams:r,isPageReload:t};throw new Error("Unable to retrieve current launch parameters, which must exist.")}if(e)return{launchParams:e,isPageReload:!1};throw new Error("Unable to retrieve any launch parameters.")}const Re="tmajsLaunchData";function ue(){const r=window[Re];if(r)return r;const e=_t();return window[Re]=e,gt(e.launchParams),e}function bt(){try{return ue(),!0}catch{return!1}}function mt(r){return"external"in r&&g(r.external)&&"notify"in r.external&&typeof r.external.notify=="function"}function yt(r){return"TelegramWebviewProxy"in r&&g(r.TelegramWebviewProxy)&&"postEvent"in r.TelegramWebviewProxy&&typeof r.TelegramWebviewProxy.postEvent=="function"}function he(){try{return window.self!==window.top}catch{return!0}}class Q extends Error{constructor(e,t){super(`Method "${e}" is unsupported in the Mini Apps version ${t}.`),Object.setPrototypeOf(this,Q.prototype)}}class Z extends Error{constructor(e,t,s){super(`Parameter "${t}" in method "${e}" is unsupported in the Mini Apps version ${s}.`),Object.setPrototypeOf(this,Z.prototype)}}class Ve{constructor(e,t){this.prefix=e,this.enabled=t}print(e,...t){if(!this.enabled)return;const s=new Date,n=Intl.DateTimeFormat("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3,timeZone:"UTC"}).format(s);console[e](`[${n}]`,this.prefix,...t)}disable(){this.enabled=!1}error(...e){this.print("error",...e)}enable(){this.enabled=!0}log(...e){this.print("log",...e)}warn(...e){this.print("warn",...e)}}let Te="https://web.telegram.org";const D=new Ve("[SDK]",!1);function Et(r){if(r){D.enable();return}D.disable()}function Ct(r){Te=r}function vt(){return Te}const Pt=w({eventType:h(),eventData:r=>r});function St(r,e){window.dispatchEvent(new MessageEvent("message",{data:JSON.stringify({eventType:r,eventData:e})}))}function kt(){const r=window;"TelegramGameProxy_receiveEvent"in r||[["TelegramGameProxy_receiveEvent"],["TelegramGameProxy","receiveEvent"],["Telegram","WebView","receiveEvent"]].forEach(e=>{let t=r;e.forEach((s,n,i)=>{if(n===i.length-1){t[s]=St;return}s in t||(t[s]={}),t=t[s]})})}function qt(r){kt(),window.addEventListener("message",e=>{try{const{eventType:t,eventData:s}=Pt.parse(e.data);r(t,s)}catch{}})}function At(){return w({req_id:h(),data:r=>r===null?r:h().optional().parse(r)})}function Rt(){return w({req_id:h(),result:r=>r,error:h().optional()})}function Vt(){return w({slug:h(),status:h()})}function Tt(){return w({status:h()})}function It(){return w({button_id:r=>r==null?void 0:h().parse(r)})}function Lt(){return w({data:h().optional()})}function Bt(){return w({theme_params:r=>{const e=ye().optional();return Object.entries(X(r)).reduce((t,[s,n])=>(t[s]=e.parse(n),t),{})}})}function $t(){return w({height:V(),width:r=>r==null?window.innerWidth:V().parse(r),is_state_stable:S(),is_expanded:S()})}function Dt(){return w({status:h()})}function xt(){const r=new b,e=(t,...s)=>{D.log("Emitting processed event:",t,...s),r.emit(t,...s)};return window.addEventListener("resize",()=>{e("viewport_changed",{width:window.innerWidth,height:window.innerHeight,is_state_stable:!0,is_expanded:!0})}),qt((t,s)=>{D.log("Received raw event:",t,s);try{switch(t){case"viewport_changed":return e(t,$t().parse(s));case"theme_changed":return e(t,Bt().parse(s));case"popup_closed":return s==null?e(t,{}):e(t,It().parse(s));case"set_custom_style":return e(t,h().parse(s));case"qr_text_received":return e(t,Lt().parse(s));case"clipboard_text_received":return e(t,At().parse(s));case"invoice_closed":return e(t,Vt().parse(s));case"phone_requested":return e("phone_requested",Tt().parse(s));case"custom_method_invoked":return e("custom_method_invoked",Rt().parse(s));case"write_access_requested":return e("write_access_requested",Dt().parse(s));case"main_button_pressed":case"back_button_pressed":case"settings_button_pressed":case"scan_qr_popup_closed":case"reload_iframe":return e(t);default:return e(t,s)}}catch(n){D.error("Error processing event:",n)}}),r}const pe="telegram-mini-apps-cached-emitter";function H(){const r=window;return r[pe]===void 0&&(r[pe]=xt()),r[pe]}function T(r,e){H().off(r,e)}function E(r,e){return H().on(r,e),()=>T(r,e)}function Nt(r,e){return H().once(r,e),()=>T(r,e)}function Ie(r){H().unsubscribe(r)}function Ot(r){return H().subscribe(r),()=>Ie(r)}function Le(r,e){const t=r.split("."),s=e.split("."),n=Math.max(t.length,s.length);for(let i=0;i<n;i+=1){const c=parseInt(t[i]||"0",10),u=parseInt(s[i]||"0",10);if(c!==u)return c>u?1:-1}return 0}function k(r,e){return Le(r,e)<=0}function I(r,e,t){if(typeof t=="string"){if(r==="web_app_open_link"&&e==="try_instant_view")return k("6.4",t);if(r==="web_app_set_header_color"&&e==="color")return k("6.9",t)}switch(r){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 k("6.1",e);case"web_app_open_popup":return k("6.2",e);case"web_app_close_scan_qr_popup":case"web_app_open_scan_qr_popup":case"web_app_read_text_from_clipboard":return k("6.4",e);case"web_app_switch_inline_query":return k("6.7",e);case"web_app_invoke_custom_method":case"web_app_request_write_access":case"web_app_request_phone":return k("6.9",e);case"web_app_setup_settings_button":return k("6.10",e);default:return!0}}function v(r,e){return t=>I(e[t],r)}function Be(r,e){return t=>{const[s,n]=e[t];return I(s,n,r)}}function d(r,e,t){let s={},n;e===void 0&&t===void 0?s={}:e!==void 0&&t!==void 0?(s=t,n=e):e!==void 0&&("targetOrigin"in e?s=e:n=e);const{targetOrigin:i=vt()}=s;if(D.log(`Calling method "${r}"`,n),he()){window.parent.postMessage(JSON.stringify({eventType:r,eventData:n}),i);return}if(mt(window)){window.external.notify(JSON.stringify({eventType:r,eventData:n}));return}if(yt(window)){window.TelegramWebviewProxy.postEvent(r,JSON.stringify(n));return}throw new Error("Unable to determine current environment and possible way to send event.")}function $e(r){return(e,t)=>{if(!I(e,r))throw new Q(e,r);if(g(t)){let s;if(e==="web_app_open_link"&&"try_instant_view"in t?s="try_instant_view":e==="web_app_set_header_color"&&"color"in t&&(s="color"),s&&!I(e,s,r))throw new Z(e,s,r)}return d(e,t)}}class M extends Error{constructor(e){super(`Async call timeout exceeded. Timeout: ${e}`),Object.setPrototypeOf(this,M.prototype)}}function Wt(r){return r instanceof M}function Ht(r){return new Promise(e=>{setTimeout(e,r)})}function Mt(r){return new Promise((e,t)=>{setTimeout(t,r,new M(r))})}function le(r,e){return Promise.race([r(),Mt(e)])}function C(r,e,t,s){let n,i,c,u;typeof e=="string"||Array.isArray(e)?(c=Array.isArray(e)?e:[e],n=t):(i=e,c=Array.isArray(t)?t:[t],n=s),g(i)&&typeof i.req_id=="string"&&(u=i.req_id);const{postEvent:l=d,timeout:p}=n||{},_=n&&"capture"in n?n.capture:null,m=()=>new Promise((W,f)=>{const A=c.map(R=>E(R,Y=>{u&&(!g(Y)||Y.req_id!==u)||typeof _=="function"&&!_(Y)||(L(),W(Y))})),L=()=>A.forEach(R=>R());try{l(r,i)}catch(R){L(),f(R)}});return typeof p=="number"?le(m,p):m()}async function x(r,e,t,s={}){const{result:n,error:i}=await C("web_app_invoke_custom_method",{method:r,params:e,req_id:t},"custom_method_invoked",s);if(i)throw new Error(i);return n}class De{constructor(e,t,s=d){o(this,"ee",new b);o(this,"state");o(this,"on",(e,t)=>e==="click"?E("back_button_pressed",t):this.ee.on(e,t));o(this,"off",(e,t)=>e==="click"?T("back_button_pressed",t):this.ee.off(e,t));o(this,"supports");this.postEvent=s,this.state=new y({isVisible:e},this.ee),this.supports=v(t,{show:"web_app_setup_back_button",hide:"web_app_setup_back_button"})}set isVisible(e){this.state.set("isVisible",e),this.postEvent("web_app_setup_back_button",{is_visible:e})}get isVisible(){return this.state.get("isVisible")}hide(){this.isVisible=!1}show(){this.isVisible=!0}}function xe(r,e){return r+(r.length>0&&e.length>0?` ${e}`:e)}function Ne(...r){return r.reduce((e,t)=>{let s="";return typeof t=="string"?s=t:typeof t=="object"&&t!==null&&(s=Object.entries(t).reduce((n,[i,c])=>c?xe(n,i):n,"")),xe(e,s)},"")}function Ut(r){return typeof r=="object"&&r!==null&&!Array.isArray(null)}function jt(...r){return r.reduce((e,t)=>(Ut(t)&&Object.entries(t).forEach(([s,n])=>{const i=Ne(e[s],n);i.length>0&&(e[s]=i)}),e),{})}class Oe{constructor(e,t=d){o(this,"ee",new b);o(this,"state");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));this.postEvent=t,this.state=new y({isConfirmationNeeded:e},this.ee)}set isConfirmationNeeded(e){this.state.set("isConfirmationNeeded",e),this.postEvent("web_app_setup_closing_behavior",{need_confirmation:e})}get isConfirmationNeeded(){return this.state.get("isConfirmationNeeded")}disableConfirmation(){this.isConfirmationNeeded=!1}enableConfirmation(){this.isConfirmationNeeded=!0}}function We(r,e){return r.reduce((t,s)=>(t[s]=e,t),{})}class He{constructor(e,t,s=d){o(this,"supports");this.createRequestId=t,this.postEvent=s,this.supports=v(e,{delete:"web_app_invoke_custom_method",get:"web_app_invoke_custom_method",getKeys:"web_app_invoke_custom_method",set:"web_app_invoke_custom_method"})}async delete(e,t={}){const s=Array.isArray(e)?e:[e];s.length!==0&&await x("deleteStorageValues",{keys:s},this.createRequestId(),{...t,postEvent:this.postEvent})}async getKeys(e={}){const t=await x("getStorageKeys",{},this.createRequestId(),{...e,postEvent:this.postEvent});return ot().of(h()).parse(t)}async get(e,t={}){const s=Array.isArray(e)?e:[e];if(s.length===0)return We(s,"");const n=w(We(s,h())),i=await x("getStorageValues",{keys:s},this.createRequestId(),{...t,postEvent:this.postEvent}).then(c=>n.parse(c));return Array.isArray(e)?i:i[e]}async set(e,t,s={}){await x("saveStorageValue",{key:e,value:t},this.createRequestId(),{...s,postEvent:this.postEvent})}}class Me{constructor(e,t=d){o(this,"supports");this.postEvent=t,this.supports=v(e,{impactOccurred:"web_app_trigger_haptic_feedback",notificationOccurred:"web_app_trigger_haptic_feedback",selectionChanged:"web_app_trigger_haptic_feedback"})}impactOccurred(e){this.postEvent("web_app_trigger_haptic_feedback",{type:"impact",impact_style:e})}notificationOccurred(e){this.postEvent("web_app_trigger_haptic_feedback",{type:"notification",notification_type:e})}selectionChanged(){this.postEvent("web_app_trigger_haptic_feedback",{type:"selection_change"})}}function Gt(){const r=document.createElement("style");r.id="telegram-custom-styles",document.head.appendChild(r),E("set_custom_style",e=>{r.innerHTML=e})}function Ue(r){return`telegram-mini-apps-${r}`}function N(r,e){sessionStorage.setItem(Ue(r),JSON.stringify(e))}function O(r){const e=sessionStorage.getItem(Ue(r));return e?JSON.parse(e):null}function Ft(r,e,t){const{isVisible:s=!1}=r?O("back-button")||{}:{},n=new De(s,e,t);return n.on("change",()=>{N("back-button",{isVisible:n.isVisible})}),n}function zt(r,e){const{isConfirmationNeeded:t=!1}=r?O("closing-behavior")||{}:{},s=new Oe(t,e);return s.on("change",()=>N("closing-behavior",{isConfirmationNeeded:s.isConfirmationNeeded})),s}class je{constructor(e){o(this,"ee",new b);o(this,"state");o(this,"postEvent");o(this,"on",(e,t)=>e==="click"?E("main_button_pressed",t):this.ee.on(e,t));o(this,"off",(e,t)=>e==="click"?T("main_button_pressed",t):this.ee.off(e,t));const{postEvent:t=d,text:s,textColor:n,backgroundColor:i,isEnabled:c,isVisible:u,isLoaderVisible:l}=e;this.postEvent=t,this.state=new y({backgroundColor:i,isEnabled:c,isVisible:u,isLoaderVisible:l,text:s,textColor:n},this.ee)}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.backgroundColor,text_color:this.textColor})}set isEnabled(e){this.setParams({isEnabled:e})}get isEnabled(){return this.state.get("isEnabled")}set isLoaderVisible(e){this.setParams({isLoaderVisible:e})}get isLoaderVisible(){return this.state.get("isLoaderVisible")}set isVisible(e){this.setParams({isVisible:e})}get isVisible(){return this.state.get("isVisible")}get backgroundColor(){return this.state.get("backgroundColor")}get text(){return this.state.get("text")}get textColor(){return this.state.get("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}show(){return this.isVisible=!0,this}showLoader(){return this.isLoaderVisible=!0,this}setText(e){return this.setParams({text:e})}setTextColor(e){return this.setParams({textColor:e})}setBackgroundColor(e){return this.setParams({backgroundColor:e})}setParams(e){return this.state.set(e),this.commit(),this}}function Jt(r,e,t,s){const{backgroundColor:n=e,isEnabled:i=!1,isVisible:c=!1,isLoaderVisible:u=!1,textColor:l=t,text:p=""}=r?O("main-button")||{}:{},_=new je({backgroundColor:n,isEnabled:i,isLoaderVisible:u,isVisible:c,postEvent:s,text:p,textColor:l}),m=()=>N("main-button",{backgroundColor:_.backgroundColor,isEnabled:_.isEnabled,isLoaderVisible:_.isLoaderVisible,isVisible:_.isVisible,text:_.text,textColor:_.textColor});return _.on("change",m),_}const Qt=se({contact:w({userId:{type:V(),from:"user_id"},phoneNumber:{type:h(),from:"phone_number"},firstName:{type:h(),from:"first_name"},lastName:{type:h().optional(),from:"last_name"}}),authDate:{type:be(),from:"auth_date"},hash:h()});class Ge{constructor(e){o(this,"ee",new b);o(this,"state");o(this,"botInline");o(this,"postEvent");o(this,"createRequestId");o(this,"requestingPhoneAccess",!1);o(this,"requestingWriteAccess",!1);o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));o(this,"supports");o(this,"supportsParam");const{postEvent:t=d,headerColor:s,backgroundColor:n,version:i,botInline:c,createRequestId:u}=e,l=v(i,{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"});this.postEvent=t,this.botInline=c,this.createRequestId=u,this.supports=p=>!(!l(p)||p==="switchInlineQuery"&&!c),this.state=new y({backgroundColor:n,headerColor:s},this.ee),this.supportsParam=Be(i,{"setHeaderColor.color":["web_app_set_header_color","color"]})}async getRequestedContact(){return x("getRequestedContact",{},this.createRequestId(),{postEvent:this.postEvent,timeout:1e4}).then(e=>Qt.parse(e))}get backgroundColor(){return this.state.get("backgroundColor")}close(){this.postEvent("web_app_close")}get headerColor(){return this.state.get("headerColor")}get isBotInline(){return this.botInline}get isDark(){return re(this.backgroundColor)}get isRequestingPhoneAccess(){return this.requestingPhoneAccess}get isRequestingWriteAccess(){return this.requestingWriteAccess}ready(){this.postEvent("web_app_ready")}async requestContact({timeout:e=5e3}={}){try{return await this.getRequestedContact()}catch{}if(await this.requestPhoneAccess()!=="sent")throw new Error("Access denied.");const s=Date.now()+e;let n=50;return le(async()=>{for(;Date.now()<s;){try{return await this.getRequestedContact()}catch{}await Ht(n),n+=50}throw new Error("Unable to retrieve requested contact.")},e)}requestPhoneAccess(e={}){if(this.requestingPhoneAccess)throw new Error("Phone access is already being requested.");return this.requestingPhoneAccess=!0,C("web_app_request_phone","phone_requested",{...e,postEvent:this.postEvent}).then(t=>t.status).finally(()=>{this.requestingPhoneAccess=!1})}requestWriteAccess(e={}){if(this.requestingWriteAccess)throw new Error("Write access is already being requested.");return this.requestingWriteAccess=!0,C("web_app_request_write_access","write_access_requested",{...e,postEvent:this.postEvent}).then(t=>t.status).finally(()=>{this.requestingWriteAccess=!1})}sendData(e){const{size:t}=new Blob([e]);if(t===0||t>4096)throw new Error(`Passed data has incorrect size: ${t}`);this.postEvent("web_app_data_send",{data:e})}setHeaderColor(e){this.postEvent("web_app_set_header_color",ee(e)?{color:e}:{color_key:e}),this.state.set("headerColor",e)}setBackgroundColor(e){this.postEvent("web_app_set_background_color",{color:e}),this.state.set("backgroundColor",e)}switchInlineQuery(e,t=[]){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:e,chat_types:t})}}function Zt(r,e,t,s,n,i){const{backgroundColor:c=e,headerColor:u="bg_color"}=r?O("mini-app")||{}:{},l=new Ge({headerColor:u,backgroundColor:c,version:t,botInline:s,createRequestId:n,postEvent:i}),p=()=>N("mini-app",{backgroundColor:l.backgroundColor,headerColor:l.headerColor});return l.on("change",p),l}function Kt(){let r=0;return()=>(r+=1,r.toString())}class Fe{constructor(e,t,s=d){o(this,"ee",new b);o(this,"state");o(this,"on",(e,t)=>e==="click"?E("settings_button_pressed",t):this.ee.on(e,t));o(this,"off",(e,t)=>e==="click"?T("settings_button_pressed",t):this.ee.off(e,t));o(this,"supports");this.postEvent=s,this.state=new y({isVisible:e},this.ee),this.supports=v(t,{show:"web_app_setup_settings_button",hide:"web_app_setup_settings_button"})}set isVisible(e){this.state.set("isVisible",e),this.postEvent("web_app_setup_settings_button",{is_visible:e})}get isVisible(){return this.state.get("isVisible")}hide(){this.isVisible=!1}show(){this.isVisible=!0}}function Yt(r,e,t){const{isVisible:s=!1}=r?O("settings-button")||{}:{},n=new Fe(s,e,t);return n.on("change",()=>{N("settings-button",{isVisible:n.isVisible})}),n}function Xt(r){const e=new Pe(r);return e.listen(),e}function ze(r){return["macos","tdesktop","unigram","web","weba"].includes(r)}async function de(r){const e=await C("web_app_request_viewport","viewport_changed",r);return{height:e.height,width:e.width,isExpanded:e.is_expanded,isStateStable:e.is_state_stable}}function U(r){return r<0?0:r}class Je{constructor(e){o(this,"ee",new b);o(this,"state");o(this,"postEvent");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));const{height:t,isExpanded:s,width:n,stableHeight:i,postEvent:c=d}=e;this.postEvent=c,this.state=new y({height:U(t),isExpanded:s,stableHeight:U(i),width:U(n)},this.ee)}sync(e){return de(e).then(({height:t,isExpanded:s,width:n,isStateStable:i})=>{this.state.set({height:t,width:n,isExpanded:s,stableHeight:i?t:this.state.get("stableHeight")})})}get height(){return this.state.get("height")}get stableHeight(){return this.state.get("stableHeight")}listen(){return E("viewport_changed",e=>{const{height:t,width:s,is_expanded:n,is_state_stable:i}=e,c={height:U(t),isExpanded:n,width:U(s)};i&&(c.stableHeight=c.height),this.state.set(c)})}get isExpanded(){return this.state.get("isExpanded")}get width(){return this.state.get("width")}expand(){this.postEvent("web_app_expand"),this.state.set("isExpanded",!0)}get isStable(){return this.stableHeight===this.height}}function K(r){const e=new Je(r);return e.on("change",()=>N("viewport",{height:e.height,isExpanded:e.isExpanded,stableHeight:e.stableHeight,width:e.width})),e.listen(),e}function er(r,e,t,s){const n=r?O("viewport"):null;if(n)return K({...n,postEvent:t});if(ze(e))return K({height:window.innerHeight,isExpanded:!0,postEvent:t,stableHeight:window.innerHeight,width:window.innerWidth});if(s)return de({postEvent:t,timeout:5e3}).then(({height:c,isStateStable:u,...l})=>K({...l,height:c,stableHeight:u?c:0}));const i=K({width:0,height:0,isExpanded:!1,postEvent:t,stableHeight:0});return i.sync({postEvent:t,timeout:5e3}).catch(c=>{console.error("Unable to actualize viewport state",c)}),i}function q(r,e){document.documentElement.style.setProperty(r,e)}function tr(r,e){const t=()=>{q("--tg-background-color",r.backgroundColor)},s=()=>{const{backgroundColor:n,secondaryBackgroundColor:i}=e;r.headerColor==="bg_color"?n&&q("--tg-header-color",n):r.headerColor==="secondary_bg_color"?i&&q("--tg-header-color",i):q("--tg-header-color",r.headerColor)};e.on("change",s),r.on("change:backgroundColor",t),r.on("change:headerColor",s),t(),s()}function rr(r){const e=()=>{const t=r.getState();Object.entries(t).forEach(([s,n])=>{if(n){const i=s.replace(/[A-Z]/g,c=>`-${c.toLowerCase()}`);q(`--tg-theme-${i}`,n)}})};r.on("change",e),e()}function Qe(r){const e=()=>q("--tg-viewport-height",`${r.height}px`),t=()=>q("--tg-viewport-width",`${r.width}px`),s=()=>q("--tg-viewport-height",`${r.stableHeight}px`);r.on("change:height",e),r.on("change:width",t),r.on("change:stableHeight",s),e(),t(),s()}function sr(r){return typeof r=="object"?r:r?{themeParams:!0,viewport:!0,miniApp:!0}:{}}function Ze(r,e,t,s){const n=sr(r);n.miniApp&&tr(e,t),n.themeParams&&rr(t),n.viewport&&(s instanceof Promise?s.then(Qe):Qe(s))}function nr(r){const{hostname:e,pathname:t}=new URL(r,window.location.href);if(e!=="t.me")throw new Error(`Incorrect hostname: ${e}`);const s=t.match(/^\/(\$|invoice\/)([A-Za-z0-9\-_=]+)$/);if(s===null)throw new Error('Link pathname has incorrect format. Expected to receive "/invoice/{slug}" or "/${slug}"');return s[2]}class Ke{constructor(e,t=d){o(this,"ee",new b);o(this,"state");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));o(this,"supports");this.postEvent=t,this.state=new y({isOpened:!1},this.ee),this.supports=v(e,{open:"web_app_open_invoice"})}set isOpened(e){this.state.set("isOpened",e)}get isOpened(){return this.state.get("isOpened")}async open(e,t){if(this.isOpened)throw new Error("Invoice is already opened");const s=t?nr(e):e;this.isOpened=!0;try{return(await C("web_app_open_invoice",{slug:s},"invoice_closed",{postEvent:this.postEvent,capture(i){return s===i.slug}})).status}finally{this.isOpened=!1}}}function ir(r){const e=r.message.trim(),t=(r.title||"").trim(),s=r.buttons||[];let n;if(t.length>64)throw new Error(`Title has incorrect size: ${t.length}`);if(e.length===0||e.length>256)throw new Error(`Message has incorrect size: ${e.length}`);if(s.length>3)throw new Error(`Buttons have incorrect size: ${s.length}`);return s.length===0?n=[{type:"close",id:""}]:n=s.map(i=>{const{id:c=""}=i;if(c.length>64)throw new Error(`Button ID has incorrect size: ${c}`);if(i.type===void 0||i.type==="default"||i.type==="destructive"){const u=i.text.trim();if(u.length===0||u.length>64){const l=i.type||"default";throw new Error(`Button text with type "${l}" has incorrect size: ${i.text.length}`)}return{...i,text:u,id:c}}return{...i,id:c}}),{title:t,message:e,buttons:n}}class Ye{constructor(e,t=d){o(this,"ee",new b);o(this,"state");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));o(this,"supports");this.postEvent=t,this.state=new y({isOpened:!1},this.ee),this.supports=v(e,{open:"web_app_open_popup"})}set isOpened(e){this.state.set("isOpened",e)}get isOpened(){return this.state.get("isOpened")}open(e){if(this.isOpened)throw new Error("Popup is already opened.");return this.isOpened=!0,C("web_app_open_popup",ir(e),"popup_closed",{postEvent:this.postEvent}).then(({button_id:t=null})=>t).finally(()=>{this.isOpened=!1})}}class Xe{constructor(e,t=d){o(this,"ee",new b);o(this,"state");o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee));o(this,"supports");this.postEvent=t,this.state=new y({isOpened:!1},this.ee),this.supports=v(e,{close:"web_app_close_scan_qr_popup",open:"web_app_open_scan_qr_popup"})}close(){this.postEvent("web_app_close_scan_qr_popup"),this.isOpened=!1}set isOpened(e){this.state.set("isOpened",e)}get isOpened(){return this.state.get("isOpened")}async open(e){if(this.isOpened)throw new Error("QR scanner is already opened.");this.isOpened=!0;try{const t=await C("web_app_open_scan_qr_popup",{text:e},["qr_text_received","scan_qr_popup_closed"],{postEvent:this.postEvent});return typeof t=="object"&&typeof t.data=="string"?t.data:null}finally{this.isOpened=!1}}}class et{constructor(e,t,s=d){o(this,"supports");o(this,"supportsParam");this.version=e,this.createRequestId=t,this.postEvent=s,this.supports=v(e,{readTextFromClipboard:"web_app_read_text_from_clipboard"}),this.supportsParam=Be(e,{"openLink.tryInstantView":["web_app_open_link","try_instant_view"]})}openLink(e,t){const s=new URL(e,window.location.href).toString();if(!I("web_app_open_link",this.version)){window.open(s,"_blank");return}this.postEvent("web_app_open_link",{url:s,...typeof t=="boolean"?{try_instant_view:t}:{}})}openTelegramLink(e){const{hostname:t,pathname:s,search:n}=new URL(e,window.location.href);if(t!=="t.me")throw new Error(`URL has not allowed hostname: ${t}. Only "t.me" is allowed`);if(!I("web_app_open_tg_link",this.version)){window.location.href=e;return}this.postEvent("web_app_open_tg_link",{path_full:s+n})}readTextFromClipboard(){return C("web_app_read_text_from_clipboard",{req_id:this.createRequestId()},"clipboard_text_received",{postEvent:this.postEvent}).then(({data:e=null})=>e)}}function or(r={}){const{async:e=!1,complete:t=e,cssVars:s=!1,acceptCustomStyles:n=!1}=r;try{const{launchParams:{initData:i,initDataRaw:c,version:u,platform:l,themeParams:p,botInline:_=!1},isPageReload:m}=ue(),W=Kt(),f=$e(u);he()&&(n&&Gt(),f("iframe_ready",{reload_supported:!0}),E("reload_iframe",()=>window.location.reload()));const A={backButton:Ft(m,u,f),closingBehavior:zt(m,f),cloudStorage:new He(u,W,f),createRequestId:W,hapticFeedback:new Me(u,f),invoice:new Ke(u,f),mainButton:Jt(m,p.buttonColor||"#000000",p.buttonTextColor||"#ffffff",f),miniApp:Zt(m,p.backgroundColor||"#ffffff",u,_,W,f),popup:new Ye(u,f),postEvent:f,qrScanner:new Xe(u,f),settingsButton:Yt(m,u,f),themeParams:Xt(p),utils:new et(u,W,f),...i?{initData:new Ce(i),initDataRaw:c}:{}},L=er(m,l,f,t);return L instanceof Promise||t?Promise.resolve(L).then(R=>(Ze(s,A.miniApp,A.themeParams,R),{...A,viewport:R})):(Ze(s,A.miniApp,A.themeParams,L),{...A,viewport:L})}catch(i){if(t)return Promise.reject(i);throw i}}function j(r,e){return r.startsWith(e)?r:`${e}${r}`}function ar(r){const e=r.match(/#(.+)/);return e?e[1]:null}async function G(r){return r===0?!0:Promise.race([new Promise(e=>{window.addEventListener("popstate",function t(){window.removeEventListener("popstate",t),e(!0)}),window.history.go(r)}),new Promise(e=>{setTimeout(e,50,!1)})])}async function cr(){if(window.history.length<=1||(window.history.pushState(null,""),await G(1-window.history.length)))return;let e=await G(-1);for(;e;)e=await G(-1)}class tt{constructor(e,t,{debug:s=!1,loggerPrefix:n="Navigator"}){o(this,"logger");o(this,"entries");if(this.entriesCursor=t,e.length===0)throw new Error("Entries list should not be empty.");if(t>=e.length)throw new Error("Cursor should be less than entries count.");this.entries=e.map(({pathname:i="",search:c,hash:u})=>{if(!i.startsWith("/")&&i.length>0)throw new Error('Pathname should start with "/"');return{pathname:j(i,"/"),search:c?j(c,"?"):"",hash:u?j(u,"#"):""}}),this.logger=new Ve(`[${n}]`,s)}formatEntry(e){let t;if(typeof e=="string")t=e;else{const{pathname:c="",search:u,hash:l}=e;t=c+(u?j(u,"?"):"")+(l?j(l,"#"):"")}const{pathname:s,search:n,hash:i}=new URL(t,`https://localhost${this.path}`);return{pathname:s,search:n,hash:i}}get entry(){return this.entries[this.entriesCursor]}back(){return this.go(-1)}get cursor(){return this.entriesCursor}get canGoBack(){return this.entriesCursor>0}get canGoForward(){return this.entriesCursor!==this.entries.length-1}forward(){return this.go(1)}go(e){this.logger.log(`called go(${e})`);const t=Math.min(this.entries.length-1,Math.max(this.entriesCursor+e,0));if(this.entriesCursor===t)return this.performGo({updated:!1,delta:e});const s=this.entry;this.entriesCursor=t;const n=this.entry;return this.logger.log("State changed",{before:s,after:n}),this.performGo({updated:!0,delta:e,before:s,after:n})}getEntries(){return this.entries.map(e=>({...e}))}get hash(){return this.entry.hash}push(e){this.entriesCursor!==this.entries.length-1&&this.entries.splice(this.entriesCursor+1);const t=this.formatEntry(e),s=this.entry;this.entriesCursor+=1,this.entries[this.entriesCursor]=t;const n=this.entry;return this.logger.log("State changed",{before:s,after:n}),this.performPush({before:s,after:n})}get path(){return`${this.pathname}${this.search}${this.hash}`}get pathname(){return this.entry.pathname}replace(e){const t=this.formatEntry(e);if(this.search===t.search&&this.pathname===t.pathname&&this.hash===t.hash)return this.performReplace({updated:!1,entry:t});const s=this.entry;this.entries[this.entriesCursor]=t;const n=this.entry;return this.logger.log("State changed",{before:s,after:n}),this.performReplace({updated:!0,before:s,after:n})}get search(){return this.entry.search}}const rt=0,fe=1,ge=2;class we extends tt{constructor(t,s,n={}){super(t,s,{...n,loggerPrefix:"HashNavigator"});o(this,"ee",new b);o(this,"attached",!1);o(this,"onPopState",async({state:t})=>{if(this.logger.log('"popstate" event received. State:',t),t===null)return this.push(window.location.hash.slice(1));if(t===rt){this.logger.log("Void reached. Moving history forward"),window.history.forward();return}if(t===fe)return this.back();if(t===ge)return this.forward()});o(this,"back",()=>super.back());o(this,"on",this.ee.on.bind(this.ee));o(this,"off",this.ee.off.bind(this.ee))}static fromLocation(t){const{search:s,pathname:n,hash:i}=new URL(window.location.hash.slice(1),window.location.href);return new we([{search:s,pathname:n,hash:i}],0,t)}async performGo(t){t.updated&&(this.attached&&await this.syncHistory(),this.emitChanged(t.before,t.after))}async performPush({before:t,after:s}){this.attached&&await this.syncHistory(),this.emitChanged(t,s)}async performReplace(t){t.updated&&(this.attached&&window.history.replaceState(null,"",`#${this.path}`),this.emitChanged(t.before,t.after))}async syncHistory(){window.removeEventListener("popstate",this.onPopState);const t=`#${this.path}`;await cr(),d("web_app_setup_back_button",{is_visible:this.canGoBack}),this.canGoBack&&this.canGoForward?(this.logger.log("Setting up history: [<-, *, ->]"),window.history.replaceState(fe,""),window.history.pushState(null,"",t),window.history.pushState(ge,""),await G(-1)):this.canGoBack?(this.logger.log("Setting up history: [<-, *]"),window.history.replaceState(fe,""),window.history.pushState(null,"",t)):this.canGoForward?(this.logger.log("Setting up history: [*, ->]"),window.history.replaceState(null,t),window.history.pushState(ge,""),await G(-1)):(this.logger.log("Setting up history: [~, *]"),window.history.replaceState(rt,""),window.history.pushState(null,"",t)),window.addEventListener("popstate",this.onPopState)}emitChanged(t,s){this.ee.emit("change",{navigator:this,from:t,to:s})}async attach(){if(!this.attached)return this.logger.log("Attaching",this),this.attached=!0,E("back_button_pressed",this.back),this.syncHistory()}detach(){this.attached&&(this.logger.log("Detaching",this),this.attached=!1,window.removeEventListener("popstate",this.onPopState),T("back_button_pressed",this.back))}}return a.BackButton=De,a.ClosingBehavior=Oe,a.CloudStorage=He,a.HapticFeedback=Me,a.HashNavigator=we,a.InitData=Ce,a.Invoice=Ke,a.MainButton=je,a.MethodUnsupportedError=Q,a.MiniApp=Ge,a.Navigator=tt,a.ParameterUnsupportedError=Z,a.Popup=Ye,a.QRScanner=Xe,a.SettingsButton=Fe,a.ThemeParams=Pe,a.TimeoutError=M,a.Utils=et,a.Viewport=Je,a.chatParser=Ee,a.classNames=Ne,a.compareVersions=Le,a.createPostEvent=$e,a.getHash=ar,a.init=or,a.initDataParser=ie,a.invokeCustomMethod=x,a.isColorDark=re,a.isIframe=he,a.isRGB=ee,a.isRGBShort=me,a.isRecord=g,a.isStableViewportPlatform=ze,a.isTMA=bt,a.isTimeoutError=Wt,a.launchParamsParser=ce,a.mergeClassNames=jt,a.off=T,a.on=E,a.once=Nt,a.parseInitData=at,a.parseLaunchParams=Se,a.parseThemeParams=ae,a.postEvent=d,a.request=C,a.requestThemeParams=ht,a.requestViewport=de,a.retrieveLaunchData=ue,a.serializeLaunchParams=qe,a.serializeThemeParams=ve,a.setDebug=Et,a.setTargetOrigin=Ct,a.subscribe=Ot,a.supports=I,a.themeParamsParser=oe,a.toRGB=te,a.unsubscribe=Ie,a.userParser=ne,a.withTimeout=le,Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),a}({});
|
|
1
|
+
var hr=Object.defineProperty;var pr=(o,w,S)=>w in o?hr(o,w,{enumerable:!0,configurable:!0,writable:!0,value:S}):o[w]=S;var a=(o,w,S)=>(pr(o,typeof w!="symbol"?w+"":w,S),S);this.tmajs=this.tmajs||{};this.tmajs.sdk=function(o){"use strict";function w(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)}function S(){return performance.getEntriesByType("navigation")[0]||null}function it(){const r=S();return r?r.type==="reload":null}function B(){return new TypeError("Value has unexpected type")}class M extends Error{constructor(t,{cause:s,type:n}={}){super(`Unable to parse value${n?` as ${n}`:""}`,{cause:s});a(this,"type");this.value=t,Object.setPrototypeOf(this,M.prototype),this.type=n}}class J{constructor(e,t,s){this.parser=e,this.isOptional=t,this.type=s}parse(e){if(!(this.isOptional&&e===void 0))try{return this.parser(e)}catch(t){throw new M(e,{type:this.type,cause:t})}}optional(){return this.isOptional=!0,this}}function ot(r){if(Array.isArray(r))return r;if(typeof r=="string")try{const e=JSON.parse(r);if(Array.isArray(e))return e}catch{}throw B()}class at extends J{constructor(t,s,n){super(ot,s,n);a(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 $(r,e){return()=>new J(r,!1,e)}class x extends Error{constructor(e,{cause:t,type:s}={}){super(`Unable to parse field "${e}"${s?` as ${s}`:""}`,{cause:t}),Object.setPrototypeOf(this,x.prototype)}}function me(r,e){const t={};for(const s in r){const n=r[s];if(!n)continue;let i,c;if(typeof n=="function"||"parse"in n)i=s,c=typeof n=="function"?n:n.parse.bind(n);else{const{type:p}=n;i=n.from||s,c=typeof p=="function"?p:p.parse.bind(p)}let u;const l=e(i);try{u=c(l)}catch(p){throw p instanceof M?new x(i,{type:p.type,cause:p}):new x(i,{cause:p})}u!==void 0&&(t[s]=u)}return t}function ye(r){return new at(e=>e,!1,r)}const P=$(r=>{if(typeof r=="boolean")return r;const e=String(r);if(e==="1"||e==="true")return!0;if(e==="0"||e==="false")return!1;throw B()},"boolean"),k=$(r=>{if(typeof r=="number")return r;if(typeof r=="string"){const e=Number(r);if(!Number.isNaN(e))return e}throw B()},"number"),ee=$(r=>r instanceof Date?r:new Date(k().parse(r)*1e3),"Date");function te(r){let e=r;if(typeof e=="string"&&(e=JSON.parse(e)),typeof e!="object"||e===null||Array.isArray(e))throw B();return e}function g(r,e){return new J(t=>{const s=te(t);return me(r,n=>s[n])},!1,e)}function re(r){return/^#[\da-f]{6}$/i.test(r)}function Ee(r){return/^#[\da-f]{3}$/i.test(r)}function se(r){const e=r.replace(/\s/g,"").toLowerCase();if(re(e))return e;if(Ee(e)){let s="#";for(let n=0;n<3;n+=1)s+=e[1+n].repeat(2);return s}const t=e.match(/^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)$/)||e.match(/^rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),\d{1,3}\)$/);if(t===null)throw new Error(`Value "${r}" does not satisfy any of known RGB formats.`);return t.slice(1).reduce((s,n)=>{const i=parseInt(n,10).toString(16);return s+(i.length===1?"0":"")+i},"#")}function ne(r){const e=se(r);return Math.sqrt([.299,.587,.114].reduce((s,n,i)=>{const c=parseInt(e.slice(1+i*2,1+(i+1)*2),16);return s+c*c*n},0))<120}const h=$(r=>{if(typeof r=="string"||typeof r=="number")return r.toString();throw B()},"string"),ie=$(r=>se(h().parse(r)),"rgb");function Q(r,e){return new J(t=>{if(typeof t!="string"&&!(t instanceof URLSearchParams))throw B();const s=typeof t=="string"?new URLSearchParams(t):t;return me(r,n=>{const i=s.get(n);return i===null?void 0:i})},!1,e)}function Ce(){return g({id:k(),type:h(),title:h(),photoUrl:{type:h().optional(),from:"photo_url"},username:h().optional()},"Chat")}class Pe{constructor(e){this.initData=e}get authDate(){return this.initData.authDate}get canSendAfter(){return this.initData.canSendAfter}get canSendAfterDate(){const{canSendAfter:e}=this;return e===void 0?void 0:new Date(this.authDate.getTime()+e*1e3)}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}}function oe(){return g({addedToAttachmentMenu:{type:P().optional(),from:"added_to_attachment_menu"},allowsWriteToPm:{type:P().optional(),from:"allows_write_to_pm"},firstName:{type:h(),from:"first_name"},id:k(),isBot:{type:P().optional(),from:"is_bot"},isPremium:{type:P().optional(),from:"is_premium"},languageCode:{type:h().optional(),from:"language_code"},lastName:{type:h().optional(),from:"last_name"},photoUrl:{type:h().optional(),from:"photo_url"},username:h().optional()},"User")}function ae(){return Q({authDate:{type:ee(),from:"auth_date"},canSendAfter:{type:k().optional(),from:"can_send_after"},chat:Ce().optional(),chatInstance:{type:h().optional(),from:"chat_instance"},chatType:{type:h().optional(),from:"chat_type"},hash:h(),queryId:{type:h().optional(),from:"query_id"},receiver:oe().optional(),startParam:{type:h().optional(),from:"start_param"},user:oe().optional()},"InitData")}function ct(r){return ae().parse(r)}function ut(r){return r.replace(/(^|_)bg/,(e,t)=>`${t}background`).replace(/_([a-z])/g,(e,t)=>t.toUpperCase())}function ht(r){return r.replace(/[A-Z]/g,e=>`_${e.toLowerCase()}`).replace(/(^|_)background/,(e,t)=>`${t}bg`)}const ce=$(r=>{const e=ie().optional();return Object.entries(te(r)).reduce((t,[s,n])=>(t[ut(s)]=e.parse(n),t),{})},"ThemeParams");function ue(r){return ce().parse(r)}function pt(r={}){return C("web_app_request_theme","theme_changed",r).then(ue)}function ve(r){return JSON.stringify(Object.entries(r).reduce((e,[t,s])=>(s&&(e[ht(t)]=s),e),{}))}class b{constructor(){a(this,"listeners",new Map);a(this,"subscribeListeners",[])}addListener(e,t,s){let n=this.listeners.get(e);return n||(n=[],this.listeners.set(e,n)),n.push([t,s]),()=>this.off(e,t)}emit(e,...t){this.subscribeListeners.forEach(n=>n(e,...t));const s=this.listeners.get(e);s&&s.forEach(([n,i],c)=>{n(...t),i&&s.splice(c,1)})}on(e,t){return this.addListener(e,t,!1)}once(e,t){return this.addListener(e,t,!0)}off(e,t){const s=this.listeners.get(e);if(s){for(let n=0;n<s.length;n+=1)if(t===s[n][0]){s.splice(n,1);return}}}subscribe(e){return this.subscribeListeners.push(e),()=>this.unsubscribe(e)}unsubscribe(e){for(let t=0;t<this.subscribeListeners.length;t+=1)if(this.subscribeListeners[t]===e){this.subscribeListeners.splice(t,1);return}}}class y{constructor(e,t){this.state=e,this.ee=t}internalSet(e,t){return this.state[e]===t||t===void 0?!1:(this.state[e]=t,this.ee.emit(`change:${e}`,t),!0)}clone(){return{...this.state}}set(e,t){let s=!1;if(typeof e=="string")s=this.internalSet(e,t);else for(const n in e)this.internalSet(n,e[n])&&(s=!0);s&&this.ee.emit("change")}get(e){return this.state[e]}}class Se{constructor(e){a(this,"ee",new b);a(this,"state");a(this,"on",this.ee.on.bind(this.ee));a(this,"off",this.ee.off.bind(this.ee));this.state=new y(e,this.ee)}get accentTextColor(){return this.get("accentTextColor")}get backgroundColor(){return this.get("backgroundColor")}get buttonColor(){return this.get("buttonColor")}get buttonTextColor(){return this.get("buttonTextColor")}get destructiveTextColor(){return this.get("destructiveTextColor")}get(e){return this.state.get(e)}getState(){return this.state.clone()}get headerBackgroundColor(){return this.get("headerBackgroundColor")}get hintColor(){return this.get("hintColor")}get isDark(){return!this.backgroundColor||ne(this.backgroundColor)}get linkColor(){return this.get("linkColor")}get secondaryBackgroundColor(){return this.get("secondaryBackgroundColor")}get sectionBackgroundColor(){return this.get("sectionBackgroundColor")}get sectionHeaderTextColor(){return this.get("sectionHeaderTextColor")}listen(){return E("theme_changed",e=>{this.state.set(ue(e.theme_params))})}get subtitleTextColor(){return this.get("subtitleTextColor")}get textColor(){return this.get("textColor")}}function he(){return Q({botInline:{type:P().optional(),from:"tgWebAppBotInline"},initData:{type:ae().optional(),from:"tgWebAppData"},initDataRaw:{type:h().optional(),from:"tgWebAppData"},platform:{type:h(),from:"tgWebAppPlatform"},showSettings:{type:P().optional(),from:"tgWebAppShowSettings"},startParam:{type:h().optional(),from:"tgWebAppStartParam"},themeParams:{type:ce(),from:"tgWebAppThemeParams"},version:{type:h(),from:"tgWebAppVersion"}},"LaunchParams")}function ke(r){return he().parse(r)}function qe(r){const e=r.includes("?")?r.replace("#","&").slice(r.indexOf("?")+1):r.slice(r.indexOf("#")+1);return ke(e)}function lt(){return qe(window.location.href)}function dt(){const r=S();if(!r)throw new Error("Unable to get first navigation entry.");return qe(r.name)}function ft(){try{return dt()}catch{}try{return lt()}catch{}return null}function Ae(r){const{initDataRaw:e,themeParams:t,platform:s,version:n,showSettings:i,botInline:c}=r,u=new URLSearchParams;return e&&u.set("tgWebAppData",e),u.set("tgWebAppPlatform",s),u.set("tgWebAppThemeParams",ve(t)),u.set("tgWebAppVersion",n),typeof i=="boolean"&&u.set("tgWebAppShowSettings",i?"1":"0"),typeof c=="boolean"&&u.set("tgWebAppBotInline",c?"1":"0"),u.toString()}const Re="telegram-mini-apps-launch-params";function gt(){const r=sessionStorage.getItem(Re);return r?he().parse(r):null}function wt(r){sessionStorage.setItem(Re,Ae(r))}function _t(){try{return window.self!==window.top}catch{return!0}}function bt(){const r=gt(),e=ft(),t=it();if(r){if(e)return{launchParams:e,isPageReload:_t()?t||r.initDataRaw===e.initDataRaw:!0};if(t)return{launchParams:r,isPageReload:t};throw new Error("Unable to retrieve current launch parameters, which must exist.")}if(e)return{launchParams:e,isPageReload:!1};throw new Error("Unable to retrieve any launch parameters.")}const Ve="tmajsLaunchData";function pe(){const r=window[Ve];if(r)return r;const e=bt();return window[Ve]=e,wt(e.launchParams),e}function mt(){try{return pe(),!0}catch{return!1}}function yt(r){return"external"in r&&w(r.external)&&"notify"in r.external&&typeof r.external.notify=="function"}function Et(r){return"TelegramWebviewProxy"in r&&w(r.TelegramWebviewProxy)&&"postEvent"in r.TelegramWebviewProxy&&typeof r.TelegramWebviewProxy.postEvent=="function"}function le(){try{return window.self!==window.top}catch{return!0}}class Z extends Error{constructor(e,t){super(`Method "${e}" is unsupported in the Mini Apps version ${t}.`),Object.setPrototypeOf(this,Z.prototype)}}class K extends Error{constructor(e,t,s){super(`Parameter "${t}" in method "${e}" is unsupported in the Mini Apps version ${s}.`),Object.setPrototypeOf(this,K.prototype)}}class Te{constructor(e,t){this.prefix=e,this.enabled=t}print(e,...t){if(!this.enabled)return;const s=new Date,n=Intl.DateTimeFormat("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3,timeZone:"UTC"}).format(s);console[e](`[${n}]`,this.prefix,...t)}disable(){this.enabled=!1}error(...e){this.print("error",...e)}enable(){this.enabled=!0}log(...e){this.print("log",...e)}warn(...e){this.print("warn",...e)}}let Ie="https://web.telegram.org";const D=new Te("[SDK]",!1);function Ct(r){if(r){D.enable();return}D.disable()}function Pt(r){Ie=r}function vt(){return Ie}const St=g({eventType:h(),eventData:r=>r});function Le(r){return St.parse(r)}function kt(r,e){window.dispatchEvent(new MessageEvent("message",{data:JSON.stringify({eventType:r,eventData:e})}))}function qt(){const r=window;"TelegramGameProxy_receiveEvent"in r||[["TelegramGameProxy_receiveEvent"],["TelegramGameProxy","receiveEvent"],["Telegram","WebView","receiveEvent"]].forEach(e=>{let t=r;e.forEach((s,n,i)=>{if(n===i.length-1){t[s]=kt;return}s in t||(t[s]={}),t=t[s]})})}function At(r){qt(),window.addEventListener("message",e=>{try{const{eventType:t,eventData:s}=Le(e.data);r(t,s)}catch{}})}function Rt(){return g({req_id:h(),data:r=>r===null?r:h().optional().parse(r)})}function Vt(){return g({req_id:h(),result:r=>r,error:h().optional()})}function Tt(){return g({slug:h(),status:h()})}function It(){return g({status:h()})}function Lt(){return g({button_id:r=>r==null?void 0:h().parse(r)})}function Bt(){return g({data:h().optional()})}function $t(){return g({theme_params:r=>{const e=ie().optional();return Object.entries(te(r)).reduce((t,[s,n])=>(t[s]=e.parse(n),t),{})}})}function Dt(){return g({height:k(),width:r=>r==null?window.innerWidth:k().parse(r),is_state_stable:P(),is_expanded:P()})}function Nt(){return g({status:h()})}function Ot(){const r=new b,e=(t,...s)=>{D.log("Emitting processed event:",t,...s),r.emit(t,...s)};return window.addEventListener("resize",()=>{e("viewport_changed",{width:window.innerWidth,height:window.innerHeight,is_state_stable:!0,is_expanded:!0})}),At((t,s)=>{D.log("Received raw event:",t,s);try{switch(t){case"viewport_changed":return e(t,Dt().parse(s));case"theme_changed":return e(t,$t().parse(s));case"popup_closed":return s==null?e(t,{}):e(t,Lt().parse(s));case"set_custom_style":return e(t,h().parse(s));case"qr_text_received":return e(t,Bt().parse(s));case"clipboard_text_received":return e(t,Rt().parse(s));case"invoice_closed":return e(t,Tt().parse(s));case"phone_requested":return e("phone_requested",It().parse(s));case"custom_method_invoked":return e("custom_method_invoked",Vt().parse(s));case"write_access_requested":return e("write_access_requested",Nt().parse(s));case"main_button_pressed":case"back_button_pressed":case"settings_button_pressed":case"scan_qr_popup_closed":case"reload_iframe":return e(t);default:return e(t,s)}}catch(n){D.error("Error processing event:",n)}}),r}const de="telegram-mini-apps-cached-emitter";function U(){const r=window;return r[de]===void 0&&(r[de]=Ot()),r[de]}function T(r,e){U().off(r,e)}function E(r,e){return U().on(r,e),()=>T(r,e)}function Wt(r,e){return U().once(r,e),()=>T(r,e)}function Be(r){U().unsubscribe(r)}function Ht(r){return U().subscribe(r),()=>Be(r)}function $e(r,e){const t=r.split("."),s=e.split("."),n=Math.max(t.length,s.length);for(let i=0;i<n;i+=1){const c=parseInt(t[i]||"0",10),u=parseInt(s[i]||"0",10);if(c!==u)return c>u?1:-1}return 0}function q(r,e){return $e(r,e)<=0}function I(r,e,t){if(typeof t=="string"){if(r==="web_app_open_link"&&e==="try_instant_view")return q("6.4",t);if(r==="web_app_set_header_color"&&e==="color")return q("6.9",t)}switch(r){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 q("6.1",e);case"web_app_open_popup":return q("6.2",e);case"web_app_close_scan_qr_popup":case"web_app_open_scan_qr_popup":case"web_app_read_text_from_clipboard":return q("6.4",e);case"web_app_switch_inline_query":return q("6.7",e);case"web_app_invoke_custom_method":case"web_app_request_write_access":case"web_app_request_phone":return q("6.9",e);case"web_app_setup_settings_button":return q("6.10",e);default:return!0}}function v(r,e){return t=>I(e[t],r)}function De(r,e){return t=>{const[s,n]=e[t];return I(s,n,r)}}function d(r,e,t){let s={},n;e===void 0&&t===void 0?s={}:e!==void 0&&t!==void 0?(s=t,n=e):e!==void 0&&("targetOrigin"in e?s=e:n=e);const{targetOrigin:i=vt()}=s;if(D.log(`Calling method "${r}"`,n),le()){window.parent.postMessage(JSON.stringify({eventType:r,eventData:n}),i);return}if(yt(window)){window.external.notify(JSON.stringify({eventType:r,eventData:n}));return}if(Et(window)){window.TelegramWebviewProxy.postEvent(r,JSON.stringify(n));return}throw new Error("Unable to determine current environment and possible way to send event.")}function Ne(r){return(e,t)=>{if(!I(e,r))throw new Z(e,r);if(w(t)){let s;if(e==="web_app_open_link"&&"try_instant_view"in t?s="try_instant_view":e==="web_app_set_header_color"&&"color"in t&&(s="color"),s&&!I(e,s,r))throw new K(e,s,r)}return d(e,t)}}class j extends Error{constructor(e){super(`Async call timeout exceeded. Timeout: ${e}`),Object.setPrototypeOf(this,j.prototype)}}function Mt(r){return r instanceof j}function xt(r){return new Promise(e=>{setTimeout(e,r)})}function Ut(r){return new Promise((e,t)=>{setTimeout(t,r,new j(r))})}function fe(r,e){return Promise.race([r(),Ut(e)])}function C(r,e,t,s){let n,i,c,u;typeof e=="string"||Array.isArray(e)?(c=Array.isArray(e)?e:[e],n=t):(i=e,c=Array.isArray(t)?t:[t],n=s),w(i)&&typeof i.req_id=="string"&&(u=i.req_id);const{postEvent:l=d,timeout:p}=n||{},_=n&&"capture"in n?n.capture:null,m=()=>new Promise((H,f)=>{const R=c.map(V=>E(V,X=>{u&&(!w(X)||X.req_id!==u)||typeof _=="function"&&!_(X)||(L(),H(X))})),L=()=>R.forEach(V=>V());try{l(r,i)}catch(V){L(),f(V)}});return typeof p=="number"?fe(m,p):m()}async function N(r,e,t,s={}){const{result:n,error:i}=await C("web_app_invoke_custom_method",{method:r,params:e,req_id:t},"custom_method_invoked",s);if(i)throw new Error(i);return n}class Oe{constructor(e,t,s=d){a(this,"ee",new b);a(this,"state");a(this,"on",(e,t)=>e==="click"?E("back_button_pressed",t):this.ee.on(e,t));a(this,"off",(e,t)=>e==="click"?T("back_button_pressed",t):this.ee.off(e,t));a(this,"supports");this.postEvent=s,this.state=new y({isVisible:e},this.ee),this.supports=v(t,{show:"web_app_setup_back_button",hide:"web_app_setup_back_button"})}set isVisible(e){this.state.set("isVisible",e),this.postEvent("web_app_setup_back_button",{is_visible:e})}get isVisible(){return this.state.get("isVisible")}hide(){this.isVisible=!1}show(){this.isVisible=!0}}function We(r,e){return r+(r.length>0&&e.length>0?` ${e}`:e)}function He(...r){return r.reduce((e,t)=>{let s="";return typeof t=="string"?s=t:typeof t=="object"&&t!==null&&(s=Object.entries(t).reduce((n,[i,c])=>c?We(n,i):n,"")),We(e,s)},"")}function jt(r){return typeof r=="object"&&r!==null&&!Array.isArray(null)}function Gt(...r){return r.reduce((e,t)=>(jt(t)&&Object.entries(t).forEach(([s,n])=>{const i=He(e[s],n);i.length>0&&(e[s]=i)}),e),{})}class Me{constructor(e,t=d){a(this,"ee",new b);a(this,"state");a(this,"on",this.ee.on.bind(this.ee));a(this,"off",this.ee.off.bind(this.ee));this.postEvent=t,this.state=new y({isConfirmationNeeded:e},this.ee)}set isConfirmationNeeded(e){this.state.set("isConfirmationNeeded",e),this.postEvent("web_app_setup_closing_behavior",{need_confirmation:e})}get isConfirmationNeeded(){return this.state.get("isConfirmationNeeded")}disableConfirmation(){this.isConfirmationNeeded=!1}enableConfirmation(){this.isConfirmationNeeded=!0}}function xe(r,e){return r.reduce((t,s)=>(t[s]=e,t),{})}class Ue{constructor(e,t,s=d){a(this,"supports");this.createRequestId=t,this.postEvent=s,this.supports=v(e,{delete:"web_app_invoke_custom_method",get:"web_app_invoke_custom_method",getKeys:"web_app_invoke_custom_method",set:"web_app_invoke_custom_method"})}async delete(e,t={}){const s=Array.isArray(e)?e:[e];s.length!==0&&await N("deleteStorageValues",{keys:s},this.createRequestId(),{...t,postEvent:this.postEvent})}async getKeys(e={}){const t=await N("getStorageKeys",{},this.createRequestId(),{...e,postEvent:this.postEvent});return ye().of(h()).parse(t)}async get(e,t={}){const s=Array.isArray(e)?e:[e];if(s.length===0)return xe(s,"");const n=g(xe(s,h())),i=await N("getStorageValues",{keys:s},this.createRequestId(),{...t,postEvent:this.postEvent}).then(c=>n.parse(c));return Array.isArray(e)?i:i[e]}async set(e,t,s={}){await N("saveStorageValue",{key:e,value:t},this.createRequestId(),{...s,postEvent:this.postEvent})}}class je{constructor(e,t=d){a(this,"supports");this.postEvent=t,this.supports=v(e,{impactOccurred:"web_app_trigger_haptic_feedback",notificationOccurred:"web_app_trigger_haptic_feedback",selectionChanged:"web_app_trigger_haptic_feedback"})}impactOccurred(e){this.postEvent("web_app_trigger_haptic_feedback",{type:"impact",impact_style:e})}notificationOccurred(e){this.postEvent("web_app_trigger_haptic_feedback",{type:"notification",notification_type:e})}selectionChanged(){this.postEvent("web_app_trigger_haptic_feedback",{type:"selection_change"})}}function Ft(){const r=document.createElement("style");r.id="telegram-custom-styles",document.head.appendChild(r),E("set_custom_style",e=>{r.innerHTML=e})}function Ge(r){return`telegram-mini-apps-${r}`}function O(r,e){sessionStorage.setItem(Ge(r),JSON.stringify(e))}function W(r){const e=sessionStorage.getItem(Ge(r));return e?JSON.parse(e):null}function zt(r,e,t){const{isVisible:s=!1}=r?W("back-button")||{}:{},n=new Oe(s,e,t);return n.on("change",()=>{O("back-button",{isVisible:n.isVisible})}),n}function Jt(r,e){const{isConfirmationNeeded:t=!1}=r?W("closing-behavior")||{}:{},s=new Me(t,e);return s.on("change",()=>O("closing-behavior",{isConfirmationNeeded:s.isConfirmationNeeded})),s}class Fe{constructor(e){a(this,"ee",new b);a(this,"state");a(this,"postEvent");a(this,"on",(e,t)=>e==="click"?E("main_button_pressed",t):this.ee.on(e,t));a(this,"off",(e,t)=>e==="click"?T("main_button_pressed",t):this.ee.off(e,t));const{postEvent:t=d,text:s,textColor:n,backgroundColor:i,isEnabled:c,isVisible:u,isLoaderVisible:l}=e;this.postEvent=t,this.state=new y({backgroundColor:i,isEnabled:c,isVisible:u,isLoaderVisible:l,text:s,textColor:n},this.ee)}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.backgroundColor,text_color:this.textColor})}set isEnabled(e){this.setParams({isEnabled:e})}get isEnabled(){return this.state.get("isEnabled")}set isLoaderVisible(e){this.setParams({isLoaderVisible:e})}get isLoaderVisible(){return this.state.get("isLoaderVisible")}set isVisible(e){this.setParams({isVisible:e})}get isVisible(){return this.state.get("isVisible")}get backgroundColor(){return this.state.get("backgroundColor")}get text(){return this.state.get("text")}get textColor(){return this.state.get("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}show(){return this.isVisible=!0,this}showLoader(){return this.isLoaderVisible=!0,this}setText(e){return this.setParams({text:e})}setTextColor(e){return this.setParams({textColor:e})}setBackgroundColor(e){return this.setParams({backgroundColor:e})}setParams(e){return this.state.set(e),this.commit(),this}}function Qt(r,e,t,s){const{backgroundColor:n=e,isEnabled:i=!1,isVisible:c=!1,isLoaderVisible:u=!1,textColor:l=t,text:p=""}=r?W("main-button")||{}:{},_=new Fe({backgroundColor:n,isEnabled:i,isLoaderVisible:u,isVisible:c,postEvent:s,text:p,textColor:l}),m=()=>O("main-button",{backgroundColor:_.backgroundColor,isEnabled:_.isEnabled,isLoaderVisible:_.isLoaderVisible,isVisible:_.isVisible,text:_.text,textColor:_.textColor});return _.on("change",m),_}const Zt=Q({contact:g({userId:{type:k(),from:"user_id"},phoneNumber:{type:h(),from:"phone_number"},firstName:{type:h(),from:"first_name"},lastName:{type:h().optional(),from:"last_name"}}),authDate:{type:ee(),from:"auth_date"},hash:h()});class ze{constructor(e){a(this,"ee",new b);a(this,"state");a(this,"botInline");a(this,"postEvent");a(this,"createRequestId");a(this,"requestingPhoneAccess",!1);a(this,"requestingWriteAccess",!1);a(this,"on",this.ee.on.bind(this.ee));a(this,"off",this.ee.off.bind(this.ee));a(this,"supports");a(this,"supportsParam");const{postEvent:t=d,headerColor:s,backgroundColor:n,version:i,botInline:c,createRequestId:u}=e,l=v(i,{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"});this.postEvent=t,this.botInline=c,this.createRequestId=u,this.supports=p=>!(!l(p)||p==="switchInlineQuery"&&!c),this.state=new y({backgroundColor:n,headerColor:s},this.ee),this.supportsParam=De(i,{"setHeaderColor.color":["web_app_set_header_color","color"]})}async getRequestedContact(){return N("getRequestedContact",{},this.createRequestId(),{postEvent:this.postEvent,timeout:1e4}).then(e=>Zt.parse(e))}get backgroundColor(){return this.state.get("backgroundColor")}close(){this.postEvent("web_app_close")}get headerColor(){return this.state.get("headerColor")}get isBotInline(){return this.botInline}get isDark(){return ne(this.backgroundColor)}get isRequestingPhoneAccess(){return this.requestingPhoneAccess}get isRequestingWriteAccess(){return this.requestingWriteAccess}ready(){this.postEvent("web_app_ready")}async requestContact({timeout:e=5e3}={}){try{return await this.getRequestedContact()}catch{}if(await this.requestPhoneAccess()!=="sent")throw new Error("Access denied.");const s=Date.now()+e;let n=50;return fe(async()=>{for(;Date.now()<s;){try{return await this.getRequestedContact()}catch{}await xt(n),n+=50}throw new Error("Unable to retrieve requested contact.")},e)}requestPhoneAccess(e={}){if(this.requestingPhoneAccess)throw new Error("Phone access is already being requested.");return this.requestingPhoneAccess=!0,C("web_app_request_phone","phone_requested",{...e,postEvent:this.postEvent}).then(t=>t.status).finally(()=>{this.requestingPhoneAccess=!1})}requestWriteAccess(e={}){if(this.requestingWriteAccess)throw new Error("Write access is already being requested.");return this.requestingWriteAccess=!0,C("web_app_request_write_access","write_access_requested",{...e,postEvent:this.postEvent}).then(t=>t.status).finally(()=>{this.requestingWriteAccess=!1})}sendData(e){const{size:t}=new Blob([e]);if(t===0||t>4096)throw new Error(`Passed data has incorrect size: ${t}`);this.postEvent("web_app_data_send",{data:e})}setHeaderColor(e){this.postEvent("web_app_set_header_color",re(e)?{color:e}:{color_key:e}),this.state.set("headerColor",e)}setBackgroundColor(e){this.postEvent("web_app_set_background_color",{color:e}),this.state.set("backgroundColor",e)}switchInlineQuery(e,t=[]){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:e,chat_types:t})}}function Kt(r,e,t,s,n,i){const{backgroundColor:c=e,headerColor:u="bg_color"}=r?W("mini-app")||{}:{},l=new ze({headerColor:u,backgroundColor:c,version:t,botInline:s,createRequestId:n,postEvent:i}),p=()=>O("mini-app",{backgroundColor:l.backgroundColor,headerColor:l.headerColor});return l.on("change",p),l}function Yt(){let r=0;return()=>(r+=1,r.toString())}class Je{constructor(e,t,s=d){a(this,"ee",new b);a(this,"state");a(this,"on",(e,t)=>e==="click"?E("settings_button_pressed",t):this.ee.on(e,t));a(this,"off",(e,t)=>e==="click"?T("settings_button_pressed",t):this.ee.off(e,t));a(this,"supports");this.postEvent=s,this.state=new y({isVisible:e},this.ee),this.supports=v(t,{show:"web_app_setup_settings_button",hide:"web_app_setup_settings_button"})}set isVisible(e){this.state.set("isVisible",e),this.postEvent("web_app_setup_settings_button",{is_visible:e})}get isVisible(){return this.state.get("isVisible")}hide(){this.isVisible=!1}show(){this.isVisible=!0}}function Xt(r,e,t){const{isVisible:s=!1}=r?W("settings-button")||{}:{},n=new Je(s,e,t);return n.on("change",()=>{O("settings-button",{isVisible:n.isVisible})}),n}function er(r){const e=new Se(r);return e.listen(),e}function Qe(r){return["macos","tdesktop","unigram","web","weba"].includes(r)}async function ge(r){const e=await C("web_app_request_viewport","viewport_changed",r);return{height:e.height,width:e.width,isExpanded:e.is_expanded,isStateStable:e.is_state_stable}}function G(r){return r<0?0:r}class Ze{constructor(e){a(this,"ee",new b);a(this,"state");a(this,"postEvent");a(this,"on",this.ee.on.bind(this.ee));a(this,"off",this.ee.off.bind(this.ee));const{height:t,isExpanded:s,width:n,stableHeight:i,postEvent:c=d}=e;this.postEvent=c,this.state=new y({height:G(t),isExpanded:s,stableHeight:G(i),width:G(n)},this.ee)}sync(e){return ge(e).then(({height:t,isExpanded:s,width:n,isStateStable:i})=>{this.state.set({height:t,width:n,isExpanded:s,stableHeight:i?t:this.state.get("stableHeight")})})}get height(){return this.state.get("height")}get stableHeight(){return this.state.get("stableHeight")}listen(){return E("viewport_changed",e=>{const{height:t,width:s,is_expanded:n,is_state_stable:i}=e,c={height:G(t),isExpanded:n,width:G(s)};i&&(c.stableHeight=c.height),this.state.set(c)})}get isExpanded(){return this.state.get("isExpanded")}get width(){return this.state.get("width")}expand(){this.postEvent("web_app_expand"),this.state.set("isExpanded",!0)}get isStable(){return this.stableHeight===this.height}}function Y(r){const e=new Ze(r);return e.on("change",()=>O("viewport",{height:e.height,isExpanded:e.isExpanded,stableHeight:e.stableHeight,width:e.width})),e.listen(),e}function tr(r,e,t,s){const n=r?W("viewport"):null;if(n)return Y({...n,postEvent:t});if(Qe(e))return Y({height:window.innerHeight,isExpanded:!0,postEvent:t,stableHeight:window.innerHeight,width:window.innerWidth});if(s)return ge({postEvent:t,timeout:5e3}).then(({height:c,isStateStable:u,...l})=>Y({...l,height:c,stableHeight:u?c:0}));const i=Y({width:0,height:0,isExpanded:!1,postEvent:t,stableHeight:0});return i.sync({postEvent:t,timeout:5e3}).catch(c=>{console.error("Unable to actualize viewport state",c)}),i}function A(r,e){document.documentElement.style.setProperty(r,e)}function rr(r,e){const t=()=>{A("--tg-background-color",r.backgroundColor)},s=()=>{const{backgroundColor:n,secondaryBackgroundColor:i}=e;r.headerColor==="bg_color"?n&&A("--tg-header-color",n):r.headerColor==="secondary_bg_color"?i&&A("--tg-header-color",i):A("--tg-header-color",r.headerColor)};e.on("change",s),r.on("change:backgroundColor",t),r.on("change:headerColor",s),t(),s()}function sr(r){const e=()=>{const t=r.getState();Object.entries(t).forEach(([s,n])=>{if(n){const i=s.replace(/[A-Z]/g,c=>`-${c.toLowerCase()}`);A(`--tg-theme-${i}`,n)}})};r.on("change",e),e()}function Ke(r){const e=()=>A("--tg-viewport-height",`${r.height}px`),t=()=>A("--tg-viewport-width",`${r.width}px`),s=()=>A("--tg-viewport-height",`${r.stableHeight}px`);r.on("change:height",e),r.on("change:width",t),r.on("change:stableHeight",s),e(),t(),s()}function nr(r){return typeof r=="object"?r:r?{themeParams:!0,viewport:!0,miniApp:!0}:{}}function Ye(r,e,t,s){const n=nr(r);n.miniApp&&rr(e,t),n.themeParams&&sr(t),n.viewport&&(s instanceof Promise?s.then(Ke):Ke(s))}function ir(r){const{hostname:e,pathname:t}=new URL(r,window.location.href);if(e!=="t.me")throw new Error(`Incorrect hostname: ${e}`);const s=t.match(/^\/(\$|invoice\/)([A-Za-z0-9\-_=]+)$/);if(s===null)throw new Error('Link pathname has incorrect format. Expected to receive "/invoice/{slug}" or "/${slug}"');return s[2]}class Xe{constructor(e,t=d){a(this,"ee",new b);a(this,"state");a(this,"on",this.ee.on.bind(this.ee));a(this,"off",this.ee.off.bind(this.ee));a(this,"supports");this.postEvent=t,this.state=new y({isOpened:!1},this.ee),this.supports=v(e,{open:"web_app_open_invoice"})}set isOpened(e){this.state.set("isOpened",e)}get isOpened(){return this.state.get("isOpened")}async open(e,t){if(this.isOpened)throw new Error("Invoice is already opened");const s=t?ir(e):e;this.isOpened=!0;try{return(await C("web_app_open_invoice",{slug:s},"invoice_closed",{postEvent:this.postEvent,capture(i){return s===i.slug}})).status}finally{this.isOpened=!1}}}function or(r){const e=r.message.trim(),t=(r.title||"").trim(),s=r.buttons||[];let n;if(t.length>64)throw new Error(`Title has incorrect size: ${t.length}`);if(e.length===0||e.length>256)throw new Error(`Message has incorrect size: ${e.length}`);if(s.length>3)throw new Error(`Buttons have incorrect size: ${s.length}`);return s.length===0?n=[{type:"close",id:""}]:n=s.map(i=>{const{id:c=""}=i;if(c.length>64)throw new Error(`Button ID has incorrect size: ${c}`);if(i.type===void 0||i.type==="default"||i.type==="destructive"){const u=i.text.trim();if(u.length===0||u.length>64){const l=i.type||"default";throw new Error(`Button text with type "${l}" has incorrect size: ${i.text.length}`)}return{...i,text:u,id:c}}return{...i,id:c}}),{title:t,message:e,buttons:n}}class et{constructor(e,t=d){a(this,"ee",new b);a(this,"state");a(this,"on",this.ee.on.bind(this.ee));a(this,"off",this.ee.off.bind(this.ee));a(this,"supports");this.postEvent=t,this.state=new y({isOpened:!1},this.ee),this.supports=v(e,{open:"web_app_open_popup"})}set isOpened(e){this.state.set("isOpened",e)}get isOpened(){return this.state.get("isOpened")}open(e){if(this.isOpened)throw new Error("Popup is already opened.");return this.isOpened=!0,C("web_app_open_popup",or(e),"popup_closed",{postEvent:this.postEvent}).then(({button_id:t=null})=>t).finally(()=>{this.isOpened=!1})}}class tt{constructor(e,t=d){a(this,"ee",new b);a(this,"state");a(this,"on",this.ee.on.bind(this.ee));a(this,"off",this.ee.off.bind(this.ee));a(this,"supports");this.postEvent=t,this.state=new y({isOpened:!1},this.ee),this.supports=v(e,{close:"web_app_close_scan_qr_popup",open:"web_app_open_scan_qr_popup"})}close(){this.postEvent("web_app_close_scan_qr_popup"),this.isOpened=!1}set isOpened(e){this.state.set("isOpened",e)}get isOpened(){return this.state.get("isOpened")}async open(e){if(this.isOpened)throw new Error("QR scanner is already opened.");this.isOpened=!0;try{const t=await C("web_app_open_scan_qr_popup",{text:e},["qr_text_received","scan_qr_popup_closed"],{postEvent:this.postEvent});return typeof t=="object"&&typeof t.data=="string"?t.data:null}finally{this.isOpened=!1}}}class rt{constructor(e,t,s=d){a(this,"supports");a(this,"supportsParam");this.version=e,this.createRequestId=t,this.postEvent=s,this.supports=v(e,{readTextFromClipboard:"web_app_read_text_from_clipboard"}),this.supportsParam=De(e,{"openLink.tryInstantView":["web_app_open_link","try_instant_view"]})}openLink(e,t){const s=new URL(e,window.location.href).toString();if(!I("web_app_open_link",this.version)){window.open(s,"_blank");return}this.postEvent("web_app_open_link",{url:s,...typeof t=="boolean"?{try_instant_view:t}:{}})}openTelegramLink(e){const{hostname:t,pathname:s,search:n}=new URL(e,window.location.href);if(t!=="t.me")throw new Error(`URL has not allowed hostname: ${t}. Only "t.me" is allowed`);if(!I("web_app_open_tg_link",this.version)){window.location.href=e;return}this.postEvent("web_app_open_tg_link",{path_full:s+n})}readTextFromClipboard(){return C("web_app_read_text_from_clipboard",{req_id:this.createRequestId()},"clipboard_text_received",{postEvent:this.postEvent}).then(({data:e=null})=>e)}}function ar(r={}){const{async:e=!1,complete:t=e,cssVars:s=!1,acceptCustomStyles:n=!1}=r;try{const{launchParams:{initData:i,initDataRaw:c,version:u,platform:l,themeParams:p,botInline:_=!1},isPageReload:m}=pe(),H=Yt(),f=Ne(u);le()&&(n&&Ft(),f("iframe_ready",{reload_supported:!0}),E("reload_iframe",()=>window.location.reload()));const R={backButton:zt(m,u,f),closingBehavior:Jt(m,f),cloudStorage:new Ue(u,H,f),createRequestId:H,hapticFeedback:new je(u,f),invoice:new Xe(u,f),mainButton:Qt(m,p.buttonColor||"#000000",p.buttonTextColor||"#ffffff",f),miniApp:Kt(m,p.backgroundColor||"#ffffff",u,_,H,f),popup:new et(u,f),postEvent:f,qrScanner:new tt(u,f),settingsButton:Xt(m,u,f),themeParams:er(p),utils:new rt(u,H,f),...i?{initData:new Pe(i),initDataRaw:c}:{}},L=tr(m,l,f,t);return L instanceof Promise||t?Promise.resolve(L).then(V=>(Ye(s,R.miniApp,R.themeParams,V),{...R,viewport:V})):(Ye(s,R.miniApp,R.themeParams,L),{...R,viewport:L})}catch(i){if(t)return Promise.reject(i);throw i}}function F(r,e){return r.startsWith(e)?r:`${e}${r}`}function cr(r){const e=r.match(/#(.+)/);return e?e[1]:null}async function z(r){return r===0?!0:Promise.race([new Promise(e=>{window.addEventListener("popstate",function t(){window.removeEventListener("popstate",t),e(!0)}),window.history.go(r)}),new Promise(e=>{setTimeout(e,50,!1)})])}async function ur(){if(window.history.length<=1||(window.history.pushState(null,""),await z(1-window.history.length)))return;let e=await z(-1);for(;e;)e=await z(-1)}class st{constructor(e,t,{debug:s=!1,loggerPrefix:n="Navigator"}){a(this,"logger");a(this,"entries");if(this.entriesCursor=t,e.length===0)throw new Error("Entries list should not be empty.");if(t>=e.length)throw new Error("Cursor should be less than entries count.");this.entries=e.map(({pathname:i="",search:c,hash:u})=>{if(!i.startsWith("/")&&i.length>0)throw new Error('Pathname should start with "/"');return{pathname:F(i,"/"),search:c?F(c,"?"):"",hash:u?F(u,"#"):""}}),this.logger=new Te(`[${n}]`,s)}formatEntry(e){let t;if(typeof e=="string")t=e;else{const{pathname:c="",search:u,hash:l}=e;t=c+(u?F(u,"?"):"")+(l?F(l,"#"):"")}const{pathname:s,search:n,hash:i}=new URL(t,`https://localhost${this.path}`);return{pathname:s,search:n,hash:i}}get entry(){return this.entries[this.entriesCursor]}back(){return this.go(-1)}get cursor(){return this.entriesCursor}get canGoBack(){return this.entriesCursor>0}get canGoForward(){return this.entriesCursor!==this.entries.length-1}forward(){return this.go(1)}go(e){this.logger.log(`called go(${e})`);const t=Math.min(this.entries.length-1,Math.max(this.entriesCursor+e,0));if(this.entriesCursor===t)return this.performGo({updated:!1,delta:e});const s=this.entry;this.entriesCursor=t;const n=this.entry;return this.logger.log("State changed",{before:s,after:n}),this.performGo({updated:!0,delta:e,before:s,after:n})}getEntries(){return this.entries.map(e=>({...e}))}get hash(){return this.entry.hash}push(e){this.entriesCursor!==this.entries.length-1&&this.entries.splice(this.entriesCursor+1);const t=this.formatEntry(e),s=this.entry;this.entriesCursor+=1,this.entries[this.entriesCursor]=t;const n=this.entry;return this.logger.log("State changed",{before:s,after:n}),this.performPush({before:s,after:n})}get path(){return`${this.pathname}${this.search}${this.hash}`}get pathname(){return this.entry.pathname}replace(e){const t=this.formatEntry(e);if(this.search===t.search&&this.pathname===t.pathname&&this.hash===t.hash)return this.performReplace({updated:!1,entry:t});const s=this.entry;this.entries[this.entriesCursor]=t;const n=this.entry;return this.logger.log("State changed",{before:s,after:n}),this.performReplace({updated:!0,before:s,after:n})}get search(){return this.entry.search}}const nt=0,we=1,_e=2;class be extends st{constructor(t,s,n={}){super(t,s,{...n,loggerPrefix:"HashNavigator"});a(this,"ee",new b);a(this,"attached",!1);a(this,"onPopState",async({state:t})=>{if(this.logger.log('"popstate" event received. State:',t),t===null)return this.push(window.location.hash.slice(1));if(t===nt){this.logger.log("Void reached. Moving history forward"),window.history.forward();return}if(t===we)return this.back();if(t===_e)return this.forward()});a(this,"back",()=>super.back());a(this,"on",this.ee.on.bind(this.ee));a(this,"off",this.ee.off.bind(this.ee))}static fromLocation(t){const{search:s,pathname:n,hash:i}=new URL(window.location.hash.slice(1),window.location.href);return new be([{search:s,pathname:n,hash:i}],0,t)}async performGo(t){t.updated&&(this.attached&&await this.syncHistory(),this.emitChanged(t.before,t.after))}async performPush({before:t,after:s}){this.attached&&await this.syncHistory(),this.emitChanged(t,s)}async performReplace(t){t.updated&&(this.attached&&window.history.replaceState(null,"",`#${this.path}`),this.emitChanged(t.before,t.after))}async syncHistory(){window.removeEventListener("popstate",this.onPopState);const t=`#${this.path}`;await ur(),d("web_app_setup_back_button",{is_visible:this.canGoBack}),this.canGoBack&&this.canGoForward?(this.logger.log("Setting up history: [<-, *, ->]"),window.history.replaceState(we,""),window.history.pushState(null,"",t),window.history.pushState(_e,""),await z(-1)):this.canGoBack?(this.logger.log("Setting up history: [<-, *]"),window.history.replaceState(we,""),window.history.pushState(null,"",t)):this.canGoForward?(this.logger.log("Setting up history: [*, ->]"),window.history.replaceState(null,t),window.history.pushState(_e,""),await z(-1)):(this.logger.log("Setting up history: [~, *]"),window.history.replaceState(nt,""),window.history.pushState(null,"",t)),window.addEventListener("popstate",this.onPopState)}emitChanged(t,s){this.ee.emit("change",{navigator:this,from:t,to:s})}async attach(){if(!this.attached)return this.logger.log("Attaching",this),this.attached=!0,E("back_button_pressed",this.back),this.syncHistory()}detach(){this.attached&&(this.logger.log("Detaching",this),this.attached=!1,window.removeEventListener("popstate",this.onPopState),T("back_button_pressed",this.back))}}return o.BackButton=Oe,o.ClosingBehavior=Me,o.CloudStorage=Ue,o.HapticFeedback=je,o.HashNavigator=be,o.InitData=Pe,o.Invoice=Xe,o.MainButton=Fe,o.MethodUnsupportedError=Z,o.MiniApp=ze,o.Navigator=st,o.ParameterUnsupportedError=K,o.ParseError=M,o.ParseSchemaFieldError=x,o.Popup=et,o.QRScanner=tt,o.SettingsButton=Je,o.ThemeParams=Se,o.TimeoutError=j,o.Utils=rt,o.Viewport=Ze,o.array=ye,o.boolean=P,o.chatParser=Ce,o.classNames=He,o.compareVersions=$e,o.createPostEvent=Ne,o.date=ee,o.getHash=cr,o.init=ar,o.initDataParser=ae,o.invokeCustomMethod=N,o.isColorDark=ne,o.isIframe=le,o.isRGB=re,o.isRGBShort=Ee,o.isRecord=w,o.isStableViewportPlatform=Qe,o.isTMA=mt,o.isTimeoutError=Mt,o.json=g,o.launchParamsParser=he,o.mergeClassNames=Gt,o.number=k,o.off=T,o.on=E,o.once=Wt,o.parseInitData=ct,o.parseLaunchParams=ke,o.parseMessage=Le,o.parseThemeParams=ue,o.postEvent=d,o.request=C,o.requestThemeParams=pt,o.requestViewport=ge,o.retrieveLaunchData=pe,o.rgb=ie,o.searchParams=Q,o.serializeLaunchParams=Ae,o.serializeThemeParams=ve,o.setDebug=Ct,o.setTargetOrigin=Pt,o.string=h,o.subscribe=Ht,o.supports=I,o.themeParamsParser=ce,o.toRGB=se,o.unsubscribe=Be,o.userParser=oe,o.withTimeout=fe,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),o}({});
|
|
2
2
|
//# sourceMappingURL=index.iife.js.map
|