@tma.js/sdk 1.0.2 → 1.2.0

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