@tma.js/sdk 1.5.2 → 2.0.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 (255) hide show
  1. package/dist/dts/bridge/events/event-emitter/createMiniAppsEventEmitter.d.ts +15 -0
  2. package/dist/dts/bridge/events/event-emitter/singleton.d.ts +8 -0
  3. package/dist/dts/bridge/events/event-handlers/cleanupEventHandlers.d.ts +4 -0
  4. package/dist/dts/bridge/events/event-handlers/defineEventHandlers.d.ts +6 -0
  5. package/dist/dts/bridge/events/event-handlers/emitMiniAppsEvent.d.ts +9 -0
  6. package/dist/dts/bridge/events/{off.d.ts → listening/off.d.ts} +3 -2
  7. package/dist/dts/bridge/events/listening/on.d.ts +12 -0
  8. package/dist/dts/bridge/events/listening/subscribe.d.ts +9 -0
  9. package/dist/dts/bridge/events/listening/unsubscribe.d.ts +7 -0
  10. package/dist/dts/bridge/events/types.d.ts +294 -2
  11. package/dist/dts/bridge/methods/createPostEvent.d.ts +7 -4
  12. package/dist/dts/bridge/methods/postEvent.d.ts +24 -15
  13. package/dist/dts/bridge/methods/{custom-methods.d.ts → types/custom-methods.d.ts} +2 -1
  14. package/dist/dts/bridge/methods/types/index.d.ts +4 -0
  15. package/dist/dts/bridge/methods/{methods.d.ts → types/methods.d.ts} +70 -17
  16. package/dist/dts/{globals.d.ts → bridge/target-origin.d.ts} +0 -9
  17. package/dist/dts/bridge/{invokeCustomMethod.d.ts → utils/invokeCustomMethod.d.ts} +7 -2
  18. package/dist/dts/bridge/utils/request.d.ts +35 -0
  19. package/dist/dts/classes/State/State.d.ts +46 -0
  20. package/dist/dts/classes/State/types.d.ts +29 -0
  21. package/dist/dts/classes/WithStateUtils.d.ts +18 -0
  22. package/dist/dts/classes/WithSupports.d.ts +19 -0
  23. package/dist/dts/classes/WithSupportsAndStateUtils.d.ts +24 -0
  24. package/dist/dts/classes/WithSupportsAndTrackableState.d.ts +16 -0
  25. package/dist/dts/classes/WithTrackableState.d.ts +16 -0
  26. package/dist/dts/classnames/mergeClassNames.d.ts +2 -1
  27. package/dist/dts/colors/isRGB.d.ts +2 -1
  28. package/dist/dts/colors/isRGBShort.d.ts +2 -1
  29. package/dist/dts/colors/toRGB.d.ts +2 -1
  30. package/dist/dts/components/BackButton/BackButton.d.ts +41 -0
  31. package/dist/dts/components/BackButton/initBackButton.d.ts +7 -0
  32. package/dist/dts/components/BackButton/types.d.ts +25 -0
  33. package/dist/dts/components/BiometryManager/BiometryManager.d.ts +61 -0
  34. package/dist/dts/components/BiometryManager/formatEvent.d.ts +34 -0
  35. package/dist/dts/components/BiometryManager/initBiometryManager.d.ts +7 -0
  36. package/dist/dts/components/BiometryManager/requestBiometryInfo.d.ts +8 -0
  37. package/dist/dts/components/BiometryManager/types.d.ts +40 -0
  38. package/dist/dts/components/ClosingBehavior/ClosingBehavior.d.ts +26 -0
  39. package/dist/dts/components/ClosingBehavior/initClosingBehavior.d.ts +7 -0
  40. package/dist/dts/components/{closing-behavior → ClosingBehavior}/types.d.ts +14 -1
  41. package/dist/dts/components/{cloud-storage → CloudStorage}/CloudStorage.d.ts +11 -11
  42. package/dist/dts/components/CloudStorage/initCloudStorage.d.ts +7 -0
  43. package/dist/dts/components/{haptic-feedback → HapticFeedback}/HapticFeedback.d.ts +9 -13
  44. package/dist/dts/components/HapticFeedback/initHapticFeedback.d.ts +7 -0
  45. package/dist/dts/components/{init-data → InitData}/InitData.d.ts +4 -2
  46. package/dist/dts/components/InitData/initInitData.d.ts +7 -0
  47. package/dist/dts/components/{init-data → InitData}/parseInitData.d.ts +2 -1
  48. package/dist/dts/components/InitData/parsers/chat.d.ts +3 -0
  49. package/dist/dts/components/InitData/parsers/initData.d.ts +7 -0
  50. package/dist/dts/components/InitData/parsers/user.d.ts +3 -0
  51. package/dist/dts/components/{init-data → InitData}/types.d.ts +2 -3
  52. package/dist/dts/components/Invoice/Invoice.d.ts +31 -0
  53. package/dist/dts/components/Invoice/initInvoice.d.ts +7 -0
  54. package/dist/dts/components/{invoice → Invoice}/types.d.ts +14 -1
  55. package/dist/dts/components/MainButton/MainButton.d.ts +106 -0
  56. package/dist/dts/components/MainButton/initMainButton.d.ts +7 -0
  57. package/dist/dts/components/MainButton/types.d.ts +40 -0
  58. package/dist/dts/components/{mini-app → MiniApp}/MiniApp.d.ts +29 -43
  59. package/dist/dts/components/MiniApp/initMiniApp.d.ts +7 -0
  60. package/dist/dts/components/MiniApp/parsing/contact.d.ts +7 -0
  61. package/dist/dts/components/MiniApp/types.d.ts +53 -0
  62. package/dist/dts/components/Popup/Popup.d.ts +30 -0
  63. package/dist/dts/components/Popup/initPopup.d.ts +7 -0
  64. package/dist/dts/components/{popup → Popup}/preparePopupParams.d.ts +3 -2
  65. package/dist/dts/components/{popup → Popup}/types.d.ts +2 -1
  66. package/dist/dts/components/QRScanner/QRScanner.d.ts +28 -0
  67. package/dist/dts/components/QRScanner/initQRScanner.d.ts +7 -0
  68. package/dist/dts/components/{qr-scanner → QRScanner}/types.d.ts +14 -1
  69. package/dist/dts/components/SettingsButton/SettingsButton.d.ts +37 -0
  70. package/dist/dts/components/SettingsButton/initSettingsButton.d.ts +7 -0
  71. package/dist/dts/components/{settings-button → SettingsButton}/types.d.ts +18 -3
  72. package/dist/dts/components/ThemeParams/ThemeParams.d.ts +53 -0
  73. package/dist/dts/components/ThemeParams/initThemeParams.d.ts +7 -0
  74. package/dist/dts/components/ThemeParams/keys.d.ts +11 -0
  75. package/dist/dts/components/{theme-params → ThemeParams/parsing}/parseThemeParams.d.ts +2 -1
  76. package/dist/dts/components/{theme-params → ThemeParams/parsing}/serializeThemeParams.d.ts +2 -1
  77. package/dist/dts/components/ThemeParams/parsing/themeParams.d.ts +4 -0
  78. package/dist/dts/components/ThemeParams/requestThemeParams.d.ts +8 -0
  79. package/dist/dts/components/ThemeParams/types.d.ts +29 -0
  80. package/dist/dts/components/{utils → Utils}/Utils.d.ts +10 -12
  81. package/dist/dts/components/Utils/initUtils.d.ts +7 -0
  82. package/dist/dts/components/Viewport/Viewport.d.ts +77 -0
  83. package/dist/dts/components/Viewport/initViewport.d.ts +8 -0
  84. package/dist/dts/components/Viewport/initViewportFromRequest.d.ts +10 -0
  85. package/dist/dts/components/{viewport → Viewport}/requestViewport.d.ts +3 -2
  86. package/dist/dts/components/Viewport/types.d.ts +35 -0
  87. package/dist/dts/css-vars/bindMiniAppCSSVars.d.ts +29 -0
  88. package/dist/dts/css-vars/bindThemeParamsCSSVars.d.ts +29 -0
  89. package/dist/dts/css-vars/bindViewportCSSVars.d.ts +32 -0
  90. package/dist/dts/{css → css-vars}/setCSSVar.d.ts +1 -1
  91. package/dist/dts/debug/debug.d.ts +14 -0
  92. package/dist/dts/{bridge/env → env}/hasExternalNotify.d.ts +5 -7
  93. package/dist/dts/{bridge/env → env}/hasWebviewProxy.d.ts +5 -7
  94. package/dist/dts/env/initWeb.d.ts +11 -0
  95. package/dist/dts/env/isSSR.d.ts +4 -0
  96. package/dist/dts/{misc → env}/isTMA.d.ts +1 -1
  97. package/dist/dts/errors/SDKError.d.ts +9 -0
  98. package/dist/dts/errors/createError.d.ts +10 -0
  99. package/dist/dts/errors/errors.d.ts +53 -0
  100. package/dist/dts/errors/isSDKError.d.ts +7 -0
  101. package/dist/dts/errors/isSDKErrorOfType.d.ts +8 -0
  102. package/dist/dts/{event-emitter → events/event-emitter}/EventEmitter.d.ts +20 -30
  103. package/dist/dts/{event-emitter → events/event-emitter}/types.d.ts +10 -9
  104. package/dist/dts/events/onWindow.d.ts +10 -0
  105. package/dist/dts/events/types.d.ts +6 -0
  106. package/dist/dts/index.d.ts +113 -92
  107. package/dist/dts/index.low-level.d.ts +41 -0
  108. package/dist/dts/launch-params/parseLaunchParams.d.ts +2 -1
  109. package/dist/dts/launch-params/retrieveFromLocation.d.ts +2 -1
  110. package/dist/dts/launch-params/retrieveFromPerformance.d.ts +3 -3
  111. package/dist/dts/launch-params/{storage.d.ts → retrieveFromStorage.d.ts} +2 -6
  112. package/dist/dts/launch-params/retrieveFromUrl.d.ts +2 -1
  113. package/dist/dts/launch-params/retrieveLaunchParams.d.ts +2 -1
  114. package/dist/dts/launch-params/saveToStorage.d.ts +7 -0
  115. package/dist/dts/launch-params/serializeLaunchParams.d.ts +2 -1
  116. package/dist/dts/launch-params/types.d.ts +12 -13
  117. package/dist/dts/logger/Logger.d.ts +9 -18
  118. package/dist/dts/misc/createComponentInitFn/createComponentInitFn.d.ts +15 -0
  119. package/dist/dts/misc/createComponentInitFn/types.d.ts +47 -0
  120. package/dist/dts/misc/createSingleton.d.ts +15 -0
  121. package/dist/dts/misc/objectFromKeys.d.ts +6 -0
  122. package/dist/dts/navigation/BasicNavigator/BasicNavigator.d.ts +118 -0
  123. package/dist/dts/navigation/BasicNavigator/prepareItem.d.ts +8 -0
  124. package/dist/dts/navigation/BasicNavigator/types.d.ts +37 -0
  125. package/dist/dts/navigation/BrowserNavigator/BrowserNavigator.d.ts +198 -0
  126. package/dist/dts/navigation/BrowserNavigator/basicItemToBrowser.d.ts +7 -0
  127. package/dist/dts/navigation/BrowserNavigator/createBrowserNavigatorFromLocation.d.ts +4 -0
  128. package/dist/dts/navigation/BrowserNavigator/prepareItem.d.ts +25 -0
  129. package/dist/dts/navigation/BrowserNavigator/types.d.ts +63 -0
  130. package/dist/dts/navigation/createSafeURL.d.ts +7 -0
  131. package/dist/dts/navigation/getHash.d.ts +2 -1
  132. package/dist/dts/navigation/getPathname.d.ts +7 -0
  133. package/dist/dts/navigation/initNavigator.d.ts +9 -0
  134. package/dist/dts/navigation/urlToPath.d.ts +7 -0
  135. package/dist/dts/parsing/ArrayParser/ArrayParser.d.ts +17 -0
  136. package/dist/dts/parsing/ArrayParser/types.d.ts +12 -0
  137. package/dist/dts/parsing/ValueParser/ValueParser.d.ts +17 -0
  138. package/dist/dts/parsing/{ValueParser.d.ts → ValueParser/types.d.ts} +6 -14
  139. package/dist/dts/parsing/createTypeError.d.ts +6 -0
  140. package/dist/dts/parsing/createValueParserGenerator.d.ts +3 -2
  141. package/dist/dts/parsing/parseBySchema.d.ts +2 -1
  142. package/dist/dts/parsing/parsers/array.d.ts +3 -2
  143. package/dist/dts/parsing/parsers/boolean.d.ts +2 -1
  144. package/dist/dts/parsing/parsers/date.d.ts +2 -1
  145. package/dist/dts/parsing/parsers/json.d.ts +3 -2
  146. package/dist/dts/parsing/parsers/number.d.ts +2 -1
  147. package/dist/dts/parsing/parsers/rgb.d.ts +3 -2
  148. package/dist/dts/parsing/parsers/searchParams.d.ts +3 -2
  149. package/dist/dts/parsing/parsers/string.d.ts +2 -1
  150. package/dist/dts/{init/creators → request-id}/createRequestIdGenerator.d.ts +3 -2
  151. package/dist/dts/{types/request-id.d.ts → request-id/types.d.ts} +1 -1
  152. package/dist/dts/storage/storage.d.ts +42 -0
  153. package/dist/dts/supports/createSupportsFn.d.ts +12 -0
  154. package/dist/dts/supports/{createSupportsParamFunc.d.ts → createSupportsParamFn.d.ts} +5 -4
  155. package/dist/dts/supports/supports.d.ts +3 -2
  156. package/dist/dts/supports/types.d.ts +1 -1
  157. package/dist/dts/timeout/createTimeoutError.d.ts +7 -0
  158. package/dist/dts/timeout/sleep.d.ts +1 -1
  159. package/dist/dts/timeout/withTimeout.d.ts +1 -2
  160. package/dist/dts/types/index.d.ts +6 -0
  161. package/dist/dts/types/methods.d.ts +2 -1
  162. package/dist/dts/types/misc.d.ts +12 -0
  163. package/dist/dts/types/utils.d.ts +16 -0
  164. package/dist/dts/version/compareVersions.d.ts +2 -1
  165. package/dist/index.cjs +2 -1
  166. package/dist/index.cjs.map +1 -0
  167. package/dist/index.iife.js +2 -1
  168. package/dist/index.iife.js.map +1 -0
  169. package/dist/index.js +2998 -0
  170. package/dist/index.js.map +1 -0
  171. package/dist/index.low-level.iife.js +2 -0
  172. package/dist/index.low-level.iife.js.map +1 -0
  173. package/package.json +7 -9
  174. package/dist/dts/bridge/errors/MethodUnsupportedError.d.ts +0 -8
  175. package/dist/dts/bridge/errors/ParameterUnsupportedError.d.ts +0 -8
  176. package/dist/dts/bridge/events/createEmitter.d.ts +0 -6
  177. package/dist/dts/bridge/events/events.d.ts +0 -140
  178. package/dist/dts/bridge/events/on.d.ts +0 -9
  179. package/dist/dts/bridge/events/onTelegramEvent.d.ts +0 -7
  180. package/dist/dts/bridge/events/once.d.ts +0 -8
  181. package/dist/dts/bridge/events/parsers/clipboardTextReceived.d.ts +0 -13
  182. package/dist/dts/bridge/events/parsers/customMethodInvoked.d.ts +0 -16
  183. package/dist/dts/bridge/events/parsers/invoiceClosed.d.ts +0 -12
  184. package/dist/dts/bridge/events/parsers/phoneRequested.d.ts +0 -8
  185. package/dist/dts/bridge/events/parsers/popupClosed.d.ts +0 -8
  186. package/dist/dts/bridge/events/parsers/qrTextReceived.d.ts +0 -7
  187. package/dist/dts/bridge/events/parsers/theme-changed.d.ts +0 -42
  188. package/dist/dts/bridge/events/parsers/viewportChanged.d.ts +0 -19
  189. package/dist/dts/bridge/events/parsers/writeAccessRequested.d.ts +0 -8
  190. package/dist/dts/bridge/events/singletonEmitter.d.ts +0 -6
  191. package/dist/dts/bridge/events/subscribe.d.ts +0 -8
  192. package/dist/dts/bridge/events/unsubscribe.d.ts +0 -6
  193. package/dist/dts/bridge/request.d.ts +0 -54
  194. package/dist/dts/components/back-button/BackButton.d.ts +0 -47
  195. package/dist/dts/components/back-button/types.d.ts +0 -10
  196. package/dist/dts/components/closing-behavior/ClosingBehavior.d.ts +0 -39
  197. package/dist/dts/components/init-data/chatParser.d.ts +0 -6
  198. package/dist/dts/components/init-data/initDataParser.d.ts +0 -6
  199. package/dist/dts/components/init-data/userParser.d.ts +0 -6
  200. package/dist/dts/components/invoice/Invoice.d.ts +0 -47
  201. package/dist/dts/components/main-button/MainButton.d.ts +0 -104
  202. package/dist/dts/components/main-button/types.d.ts +0 -20
  203. package/dist/dts/components/mini-app/contactParser.d.ts +0 -2
  204. package/dist/dts/components/mini-app/types.d.ts +0 -32
  205. package/dist/dts/components/popup/Popup.d.ts +0 -48
  206. package/dist/dts/components/qr-scanner/QRScanner.d.ts +0 -44
  207. package/dist/dts/components/settings-button/SettingsButton.d.ts +0 -42
  208. package/dist/dts/components/theme-params/ThemeParams.d.ts +0 -66
  209. package/dist/dts/components/theme-params/keys.d.ts +0 -11
  210. package/dist/dts/components/theme-params/requestThemeParams.d.ts +0 -7
  211. package/dist/dts/components/theme-params/themeParamsParser.d.ts +0 -3
  212. package/dist/dts/components/theme-params/types.d.ts +0 -14
  213. package/dist/dts/components/viewport/Viewport.d.ts +0 -90
  214. package/dist/dts/components/viewport/isStableViewportPlatform.d.ts +0 -7
  215. package/dist/dts/components/viewport/types.d.ts +0 -18
  216. package/dist/dts/components/viewport/utils.d.ts +0 -5
  217. package/dist/dts/css/bindMiniAppCSSVars.d.ts +0 -16
  218. package/dist/dts/css/bindThemeCSSVars.d.ts +0 -12
  219. package/dist/dts/css/bindViewportCSSVars.d.ts +0 -20
  220. package/dist/dts/init/catchCustomStyles.d.ts +0 -4
  221. package/dist/dts/init/creators/createBackButton.d.ts +0 -10
  222. package/dist/dts/init/creators/createClosingBehavior.d.ts +0 -9
  223. package/dist/dts/init/creators/createMainButton.d.ts +0 -12
  224. package/dist/dts/init/creators/createMiniApp.d.ts +0 -16
  225. package/dist/dts/init/creators/createSettingsButton.d.ts +0 -10
  226. package/dist/dts/init/creators/createThemeParams.d.ts +0 -7
  227. package/dist/dts/init/creators/createViewport.d.ts +0 -11
  228. package/dist/dts/init/css/processCSSVarsOption.d.ts +0 -12
  229. package/dist/dts/init/init.d.ts +0 -9
  230. package/dist/dts/init/types.d.ts +0 -85
  231. package/dist/dts/launch-params/launchParamsParser.d.ts +0 -6
  232. package/dist/dts/launch-params/retrieveLaunchData.d.ts +0 -7
  233. package/dist/dts/navigation/HashNavigator/HashNavigator.d.ts +0 -46
  234. package/dist/dts/navigation/HashNavigator/types.d.ts +0 -33
  235. package/dist/dts/navigation/Navigator/Navigator.d.ts +0 -104
  236. package/dist/dts/navigation/Navigator/types.d.ts +0 -44
  237. package/dist/dts/parsing/ArrayValueParser.d.ts +0 -18
  238. package/dist/dts/parsing/ParseError.d.ts +0 -22
  239. package/dist/dts/parsing/ParseSchemaFieldError.d.ts +0 -17
  240. package/dist/dts/parsing/unexpectedTypeError.d.ts +0 -4
  241. package/dist/dts/state/State.d.ts +0 -28
  242. package/dist/dts/state/types.d.ts +0 -27
  243. package/dist/dts/storage.d.ts +0 -50
  244. package/dist/dts/supports/createSupportsFunc.d.ts +0 -10
  245. package/dist/dts/timeout/TimeoutError.d.ts +0 -3
  246. package/dist/dts/timeout/isTimeoutError.d.ts +0 -6
  247. package/dist/index.mjs +0 -2813
  248. /package/dist/dts/bridge/methods/{haptic.d.ts → types/haptic.d.ts} +0 -0
  249. /package/dist/dts/bridge/methods/{popup.d.ts → types/popup.d.ts} +0 -0
  250. /package/dist/dts/bridge/{captureSameReq.d.ts → utils/captureSameReq.d.ts} +0 -0
  251. /package/dist/dts/{misc → env}/isIframe.d.ts +0 -0
  252. /package/dist/dts/navigation/{HashNavigator/drop.d.ts → drop.d.ts} +0 -0
  253. /package/dist/dts/{misc → navigation}/getFirstNavigationEntry.d.ts +0 -0
  254. /package/dist/dts/navigation/{HashNavigator/go.d.ts → go.d.ts} +0 -0
  255. /package/dist/dts/{misc → navigation}/isPageReload.d.ts +0 -0
@@ -1 +1,2 @@
1
- var ir=Object.defineProperty;var or=(o,b,q)=>b in o?ir(o,b,{enumerable:!0,configurable:!0,writable:!0,value:q}):o[b]=q;var a=(o,b,q)=>(or(o,typeof b!="symbol"?b+"":b,q),q);this.tmajs=this.tmajs||{};this.tmajs.sdk=function(o){"use strict";class b{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 q="https://web.telegram.org";const R=new b("[SDK]",!1);function at(r){if(r){R.enable();return}R.disable()}function ct(r){q=r}function ht(){return q}function re(){try{return window.self!==window.top}catch{return!0}}function L(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)}function ut(r){return"external"in r&&L(r.external)&&"notify"in r.external&&typeof r.external.notify=="function"}function pt(r){return"TelegramWebviewProxy"in r&&L(r.TelegramWebviewProxy)&&"postEvent"in r.TelegramWebviewProxy&&typeof r.TelegramWebviewProxy.postEvent=="function"}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=ht()}=s;if(R.log(`Calling method "${r}"`,n),re()){window.parent.postMessage(JSON.stringify({eventType:r,eventData:n}),i);return}if(ut(window)){window.external.notify(JSON.stringify({eventType:r,eventData:n}));return}if(pt(window)){window.TelegramWebviewProxy.postEvent(r,JSON.stringify(n));return}throw new Error("Unable to determine current environment and possible way to send event.")}function Ce(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),h=parseInt(s[i]||"0",10);if(c!==h)return c>h?1:-1}return 0}function A(r,e){return Ce(r,e)<=0}function T(r,e,t){if(typeof t=="string"){if(r==="web_app_open_link"&&e==="try_instant_view")return A("6.4",t);if(r==="web_app_set_header_color"&&e==="color")return A("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 A("6.1",e);case"web_app_open_popup":return A("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 A("6.4",e);case"web_app_switch_inline_query":return A("6.7",e);case"web_app_invoke_custom_method":case"web_app_request_write_access":case"web_app_request_phone":return A("6.9",e);case"web_app_setup_settings_button":return A("6.10",e);default: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 J extends Error{constructor(e,t,s){super(`Parameter "${t}" in method "${e}" is unsupported in the Mini Apps version ${s}.`),Object.setPrototypeOf(this,J.prototype)}}function ve(r){return(e,t)=>{if(!T(e,r))throw new z(e,r);if(L(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&&!T(e,s,r))throw new J(e,s,r)}return f(e,t)}}function Pe(r){return({req_id:e})=>e===r}class W 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,W.prototype),this.type=n}}class M extends Error{constructor(e,{cause:t,type:s}={}){super(`Unable to parse field "${e}"${s?` as ${s}`:""}`,{cause:t}),Object.setPrototypeOf(this,M.prototype)}}function Se(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:l}=n;i=n.from||s,c=typeof l=="function"?l:l.parse.bind(l)}let h;const p=e(i);try{h=c(p)}catch(l){throw l instanceof W?new M(i,{type:l.type,cause:l}):new M(i,{cause:l})}h!==void 0&&(t[s]=h)}return t}function B(){return new TypeError("Value has unexpected type")}function se(r){let e=r;if(typeof e=="string"&&(e=JSON.parse(e)),typeof e!="object"||e===null||Array.isArray(e))throw B();return e}class Q{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 W(e,{type:this.type,cause:t})}}optional(){return this.isOptional=!0,this}}function g(r,e){return new Q(t=>{const s=se(t);return Se(r,n=>s[n])},!1,e)}function $(r,e){return()=>new Q(r,!1,e)}const u=$(r=>{if(typeof r=="string"||typeof r=="number")return r.toString();throw B()},"string");function ke(r){return g({eventType:u(),eventData:e=>e}).parse(r)}function lt(r,e){window.dispatchEvent(new MessageEvent("message",{data:JSON.stringify({eventType:r,eventData:e}),source:window.parent}))}function dt(){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]=lt;return}s in t||(t[s]={}),t=t[s]})})}function ft(r){dt(),window.addEventListener("message",e=>{if(e.source===window.parent)try{const{eventType:t,eventData:s}=ke(e.data);r(t,s)}catch{}})}function gt(){return g({req_id:u(),data:r=>r===null?r:u().optional().parse(r)})}function wt(){return g({req_id:u(),result:r=>r,error:u().optional()})}function _t(){return g({slug:u(),status:u()})}function bt(){return g({status:u()})}function mt(){return g({button_id:r=>r==null?void 0:u().parse(r)})}function yt(){return g({data:u().optional()})}function Z(r){return/^#[\da-f]{6}$/i.test(r)}function qe(r){return/^#[\da-f]{3}$/i.test(r)}function ne(r){const e=r.replace(/\s/g,"").toLowerCase();if(Z(e))return e;if(qe(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},"#")}const ie=$(r=>ne(u().parse(r)),"rgb");function Et(){return g({theme_params:r=>{const e=ie().optional();return Object.entries(se(r)).reduce((t,[s,n])=>(t[s]=e.parse(n),t),{})}})}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"),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");function Ct(){return g({height:V(),width:r=>r==null?window.innerWidth:V().parse(r),is_state_stable:P(),is_expanded:P()})}function vt(){return g({status:u()})}class _{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}}}function Pt(){const r=new _,e=(t,...s)=>{R.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})}),ft((t,s)=>{R.log("Received raw event:",t,s);try{switch(t){case"viewport_changed":return e(t,Ct().parse(s));case"theme_changed":return e(t,Et().parse(s));case"popup_closed":return s==null?e(t,{}):e(t,mt().parse(s));case"set_custom_style":return e(t,u().parse(s));case"qr_text_received":return e(t,yt().parse(s));case"clipboard_text_received":return e(t,gt().parse(s));case"invoice_closed":return e(t,_t().parse(s));case"phone_requested":return e("phone_requested",bt().parse(s));case"custom_method_invoked":return e("custom_method_invoked",wt().parse(s));case"write_access_requested":return e("write_access_requested",vt().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){R.error("Error processing event:",n)}}),r}const oe="telegram-mini-apps-cached-emitter";function U(){const r=window;return r[oe]===void 0&&(r[oe]=Pt()),r[oe]}function I(r,e){U().off(r,e)}function m(r,e){return U().on(r,e),()=>I(r,e)}class G extends Error{constructor(e){super(`Async call timeout exceeded. Timeout: ${e}`),Object.setPrototypeOf(this,G.prototype)}}function St(r){return new Promise((e,t)=>{setTimeout(t,r,new G(r))})}function ae(r,e){return Promise.race([typeof r=="function"?r():r,St(e)])}async function y(r,e,t){let s;const n=new Promise(v=>{s=v}),i=e?{...t,event:e,method:r}:r,{method:c,event:h,capture:p,postEvent:l=f,timeout:w}=i,C=(Array.isArray(h)?h:[h]).map(v=>m(v,d=>(!p||p(d))&&s(d)));try{return l(c,i.params),await(w?ae(n,w):n)}finally{C.forEach(v=>v())}}async function D(r,e,t,s={}){const{result:n,error:i}=await y("web_app_invoke_custom_method","custom_method_invoked",{...s,params:{method:r,params:e,req_id:t},capture:Pe(t)});if(i)throw new Error(i);return n}function kt(r,e){return U().once(r,e),()=>I(r,e)}function Ae(r){U().unsubscribe(r)}function qt(r){return U().subscribe(r),()=>Ae(r)}function K(r,e){return r+(r.length&&e.length?` ${e}`:e)}function ce(...r){return r.reduce((e,t)=>typeof t=="string"?K(e,t):L(t)?K(e,Object.entries(t).reduce((s,n)=>n[1]?K(s,n[0]):s,"")):Array.isArray(t)?K(e,ce(...t)):e,"")}function At(...r){return r.reduce((e,t)=>(L(t)&&Object.entries(t).forEach(([s,n])=>{const i=ce(e[s],n);i.length>0&&(e[s]=i)}),e),{})}function he(r){const e=ne(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}class E{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]}}function S(r,e){return t=>T(e[t],r)}class Ve{constructor(e,t,s=f){a(this,"ee",new _);a(this,"state");a(this,"on",(e,t)=>e==="click"?m("back_button_pressed",t):this.ee.on(e,t));a(this,"off",(e,t)=>e==="click"?I("back_button_pressed",t):this.ee.off(e,t));a(this,"supports");this.postEvent=s,this.state=new E({isVisible:e},this.ee),this.supports=S(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}}class Re{constructor(e,t=f){a(this,"ee",new _);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 E({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 Vt(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 Rt extends Q{constructor(t,s,n){super(Vt,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 Te(r){return new Rt(e=>e,!1,r)}function Ie(r,e){return r.reduce((t,s)=>(t[s]=e,t),{})}class Le{constructor(e,t,s=f){a(this,"supports");this.createRequestId=t,this.postEvent=s,this.supports=S(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 D("deleteStorageValues",{keys:s},this.createRequestId(),{...t,postEvent:this.postEvent})}async getKeys(e={}){const t=await D("getStorageKeys",{},this.createRequestId(),{...e,postEvent:this.postEvent});return Te().of(u()).parse(t)}async get(e,t={}){const s=Array.isArray(e)?e:[e];if(s.length===0)return Ie(s,"");const n=g(Ie(s,u())),i=await D("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 D("saveStorageValue",{key:e,value:t},this.createRequestId(),{...s,postEvent:this.postEvent})}}class Be{constructor(e,t=f){a(this,"supports");this.postEvent=t,this.supports=S(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 $e(){return g({id:V(),type:u(),title:u(),photoUrl:{type:u().optional(),from:"photo_url"},username:u().optional()},"Chat")}class De{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 ue(){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:V(),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")}const pe=$(r=>r instanceof Date?r:new Date(V().parse(r)*1e3),"Date");function Y(r,e){return new Q(t=>{if(typeof t!="string"&&!(t instanceof URLSearchParams))throw B();const s=typeof t=="string"?new URLSearchParams(t):t;return Se(r,n=>{const i=s.get(n);return i===null?void 0:i})},!1,e)}function le(){return Y({authDate:{type:pe(),from:"auth_date"},canSendAfter:{type:V().optional(),from:"can_send_after"},chat:$e().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:ue().optional(),startParam:{type:u().optional(),from:"start_param"},user:ue().optional()},"InitData")}function Tt(r){return le().parse(r)}function It(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 Oe{constructor(e,t=f){a(this,"ee",new _);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 E({isOpened:!1},this.ee),this.supports=S(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?It(e):e;this.isOpened=!0;try{return(await y("web_app_open_invoice","invoice_closed",{params:{slug:s},postEvent:this.postEvent,capture(i){return s===i.slug}})).status}finally{this.isOpened=!1}}}class Ne{constructor(e){a(this,"ee",new _);a(this,"state");a(this,"postEvent");a(this,"on",(e,t)=>e==="click"?m("main_button_pressed",t):this.ee.on(e,t));a(this,"off",(e,t)=>e==="click"?I("main_button_pressed",t):this.ee.off(e,t));const{postEvent:t=f,text:s,textColor:n,backgroundColor:i,isEnabled:c,isVisible:h,isLoaderVisible:p}=e;this.postEvent=t,this.state=new E({backgroundColor:i,isEnabled:c,isVisible:h,isLoaderVisible:p,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}}const Lt=Y({contact:g({userId:{type:V(),from:"user_id"},phoneNumber:{type:u(),from:"phone_number"},firstName:{type:u(),from:"first_name"},lastName:{type:u().optional(),from:"last_name"}}),authDate:{type:pe(),from:"auth_date"},hash:u()});function He(r,e){return t=>{const[s,n]=e[t];return T(s,n,r)}}function Bt(r){return new Promise(e=>{setTimeout(e,r)})}class We{constructor(e){a(this,"ee",new _);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=f,headerColor:s,backgroundColor:n,version:i,botInline:c,createRequestId:h}=e,p=S(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=h,this.supports=l=>!(!p(l)||l==="switchInlineQuery"&&!c),this.state=new E({backgroundColor:n,headerColor:s},this.ee),this.supportsParam=He(i,{"setHeaderColor.color":["web_app_set_header_color","color"]})}async getRequestedContact(){return D("getRequestedContact",{},this.createRequestId(),{postEvent:this.postEvent,timeout:1e4}).then(e=>Lt.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 he(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 ae(async()=>{for(;Date.now()<s;){try{return await this.getRequestedContact()}catch{}await Bt(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,y("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,y("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",Z(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 $t(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 h=i.text.trim();if(h.length===0||h.length>64){const p=i.type||"default";throw new Error(`Button text with type "${p}" has incorrect size: ${i.text.length}`)}return{...i,text:h,id:c}}return{...i,id:c}}),{title:t,message:e,buttons:n}}class Me{constructor(e,t=f){a(this,"ee",new _);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 E({isOpened:!1},this.ee),this.supports=S(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,y("web_app_open_popup","popup_closed",{postEvent:this.postEvent,params:$t(e)}).then(({button_id:t=null})=>t).finally(()=>{this.isOpened=!1})}}class Ue{constructor(e,t=f){a(this,"ee",new _);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 E({isOpened:!1},this.ee),this.supports=S(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 y("web_app_open_scan_qr_popup",["qr_text_received","scan_qr_popup_closed"],{postEvent:this.postEvent,params:{text:e}});return typeof t=="object"&&typeof t.data=="string"?t.data:null}finally{this.isOpened=!1}}}class Ge{constructor(e,t,s=f){a(this,"ee",new _);a(this,"state");a(this,"on",(e,t)=>e==="click"?m("settings_button_pressed",t):this.ee.on(e,t));a(this,"off",(e,t)=>e==="click"?I("settings_button_pressed",t):this.ee.off(e,t));a(this,"supports");this.postEvent=s,this.state=new E({isVisible:e},this.ee),this.supports=S(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 Dt(r){return r.replace(/(^|_)bg/,(e,t)=>`${t}background`).replace(/_([a-z])/g,(e,t)=>t.toUpperCase())}function Ot(r){return r.replace(/[A-Z]/g,e=>`_${e.toLowerCase()}`).replace(/(^|_)background/,(e,t)=>`${t}bg`)}const de=$(r=>{const e=ie().optional();return Object.entries(se(r)).reduce((t,[s,n])=>(t[Dt(s)]=e.parse(n),t),{})},"ThemeParams");function fe(r){return de().parse(r)}function Nt(r){return y("web_app_request_theme","theme_changed",r).then(fe)}function je(r){return JSON.stringify(Object.entries(r).reduce((e,[t,s])=>(s&&(e[Ot(t)]=s),e),{}))}class xe{constructor(e){a(this,"ee",new _);a(this,"state");a(this,"on",this.ee.on.bind(this.ee));a(this,"off",this.ee.off.bind(this.ee));this.state=new E(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||he(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(fe(e.theme_params))})}get subtitleTextColor(){return this.get("subtitleTextColor")}get textColor(){return this.get("textColor")}}class Fe{constructor(e,t,s=f){a(this,"supports");a(this,"supportsParam");this.version=e,this.createRequestId=t,this.postEvent=s,this.supports=S(e,{readTextFromClipboard:"web_app_read_text_from_clipboard"}),this.supportsParam=He(e,{"openLink.tryInstantView":["web_app_open_link","try_instant_view"]})}openLink(e,t){const s=new URL(e,window.location.href).toString();if(!T("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(!T("web_app_open_tg_link",this.version)){window.location.href=e;return}this.postEvent("web_app_open_tg_link",{path_full:s+n})}async readTextFromClipboard(){const e=this.createRequestId(),{data:t=null}=await y("web_app_read_text_from_clipboard","clipboard_text_received",{postEvent:this.postEvent,params:{req_id:e},capture:Pe(e)});return t}}function ze(r){return["macos","tdesktop","unigram","web","weba"].includes(r)}async function ge(r){const e=await y("web_app_request_viewport","viewport_changed",r);return{height:e.height,width:e.width,isExpanded:e.is_expanded,isStateStable:e.is_state_stable}}function j(r){return r<0?0:r}class Je{constructor(e){a(this,"ee",new _);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=f}=e;this.postEvent=c,this.state=new E({height:j(t),isExpanded:s,stableHeight:j(i),width:j(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 m("viewport_changed",e=>{const{height:t,width:s,is_expanded:n,is_state_stable:i}=e,c={height:j(t),isExpanded:n,width:j(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,e){document.documentElement.style.setProperty(r,e)}function Qe(r,e){const t=()=>{k("--tg-background-color",r.backgroundColor)},s=()=>{const{backgroundColor:n,secondaryBackgroundColor:i}=e;if(Z(r.headerColor)){k("--tg-header-color",r.headerColor);return}if(r.headerColor==="bg_color"&&n){k("--tg-header-color",n);return}r.headerColor==="secondary_bg_color"&&i&&k("--tg-header-color",i)};e.on("change",s),r.on("change:backgroundColor",t),r.on("change:headerColor",s),t(),s()}function Ze(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()}`);k(`--tg-theme-${i}`,n)}})};r.on("change",e),e()}function we(r){const e=()=>k("--tg-viewport-height",`${r.height}px`),t=()=>k("--tg-viewport-width",`${r.width}px`),s=()=>k("--tg-viewport-stable-height",`${r.stableHeight}px`);r.on("change:height",e),r.on("change:width",t),r.on("change:stableHeight",s),e(),t(),s()}function Ht(){const r=document.createElement("style");r.id="telegram-custom-styles",document.head.appendChild(r),m("set_custom_style",e=>{r.innerHTML=e})}function Ke(r){return`telegram-mini-apps-${r}`}function O(r,e){sessionStorage.setItem(Ke(r),JSON.stringify(e))}function N(r){const e=sessionStorage.getItem(Ke(r));return e?JSON.parse(e):null}function Wt(r,e,t){const{isVisible:s=!1}=r?N("back-button")||{}:{},n=new Ve(s,e,t);return n.on("change",()=>{O("back-button",{isVisible:n.isVisible})}),n}function Mt(r,e){const{isConfirmationNeeded:t=!1}=r?N("closing-behavior")||{}:{},s=new Re(t,e);return s.on("change",()=>O("closing-behavior",{isConfirmationNeeded:s.isConfirmationNeeded})),s}function Ut(r,e,t,s){const{backgroundColor:n=e,isEnabled:i=!1,isVisible:c=!1,isLoaderVisible:h=!1,textColor:p=t,text:l=""}=r?N("main-button")||{}:{},w=new Ne({backgroundColor:n,isEnabled:i,isLoaderVisible:h,isVisible:c,postEvent:s,text:l,textColor:p}),C=()=>O("main-button",{backgroundColor:w.backgroundColor,isEnabled:w.isEnabled,isLoaderVisible:w.isLoaderVisible,isVisible:w.isVisible,text:w.text,textColor:w.textColor});return w.on("change",C),w}function Gt(r,e,t,s,n,i){const{backgroundColor:c=e,headerColor:h="bg_color"}=r?N("mini-app")||{}:{},p=new We({headerColor:h,backgroundColor:c,version:t,botInline:s,createRequestId:n,postEvent:i}),l=()=>O("mini-app",{backgroundColor:p.backgroundColor,headerColor:p.headerColor});return p.on("change",l),p}function jt(){let r=0;return()=>(r+=1,r.toString())}function xt(r,e,t){const{isVisible:s=!1}=r?N("settings-button")||{}:{},n=new Ge(s,e,t);return n.on("change",()=>{O("settings-button",{isVisible:n.isVisible})}),n}function Ft(r){const e=new xe(r);return e.listen(),e}function X(r){const e=new Je(r);return e.on("change",()=>O("viewport",{height:e.height,isExpanded:e.isExpanded,stableHeight:e.stableHeight,width:e.width})),e.listen(),e}function zt(r,e,t,s){const n=r?N("viewport"):null;if(n)return X({...n,postEvent:t});if(ze(e))return X({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:h,...p})=>X({...p,height:c,stableHeight:h?c:0}));const i=X({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 Jt(r){return typeof r=="object"?r:r?{themeParams:!0,viewport:!0,miniApp:!0}:{}}function Ye(r,e,t,s){const n=Jt(r);n.miniApp&&Qe(e,t),n.themeParams&&Ze(t),n.viewport&&(s instanceof Promise?s.then(we):we(s))}function Xe(){return Y({botInline:{type:P().optional(),from:"tgWebAppBotInline"},initData:{type:le().optional(),from:"tgWebAppData"},initDataRaw:{type:u().optional(),from:"tgWebAppData"},platform:{type:u(),from:"tgWebAppPlatform"},showSettings:{type:P().optional(),from:"tgWebAppShowSettings"},startParam:{type:u().optional(),from:"tgWebAppStartParam"},themeParams:{type:de(),from:"tgWebAppThemeParams"},version:{type:u(),from:"tgWebAppVersion"}},"LaunchParams")}function _e(r){return Xe().parse(r)}function et(r){return _e(r.replace(/^[^?#]*[?#]/,"").replace(/[?#]/g,"&"))}function Qt(){return et(window.location.href)}function tt(){return performance.getEntriesByType("navigation")[0]}function Zt(){const r=tt();if(!r)throw new Error("Unable to get first navigation entry.");return et(r.name)}function rt(r){const{initDataRaw:e,themeParams:t,platform:s,version:n,showSettings:i,startParam:c,botInline:h}=r,p=new URLSearchParams;return e&&p.set("tgWebAppData",e),p.set("tgWebAppPlatform",s),p.set("tgWebAppThemeParams",je(t)),p.set("tgWebAppVersion",n),c&&p.set("tgWebAppStartParam",n),typeof i=="boolean"&&p.set("tgWebAppShowSettings",i?"1":"0"),typeof h=="boolean"&&p.set("tgWebAppBotInline",h?"1":"0"),p.toString()}const st="telegram-mini-apps-launch-params";function Kt(){return _e(sessionStorage.getItem(st)||"")}function Yt(r){sessionStorage.setItem(st,rt(r))}function ee(){const r=[];for(const e of[Qt,Zt,Kt])try{const t=e();return Yt(t),t}catch(t){r.push(t)}throw R.error("Unable to extract launch parameters. Received errors:",r),new Error("Unable to retrieve launch parameters from any known source.")}function be(){var r;return((r=tt())==null?void 0:r.type)==="reload"}function Xt(r={}){const{async:e=!1,complete:t=e,cssVars:s=!1,acceptCustomStyles:n=!1}=r;try{const{initData:i,initDataRaw:c,version:h,platform:p,themeParams:l,botInline:w=!1}=ee(),C=be(),v=jt(),d=ve(h);re()&&(n&&Ht(),d("iframe_ready",{reload_supported:!0}),m("reload_iframe",()=>{d("iframe_will_reload"),window.location.reload()}));const H={backButton:Wt(C,h,d),closingBehavior:Mt(C,d),cloudStorage:new Le(h,v,d),createRequestId:v,hapticFeedback:new Be(h,d),invoice:new Oe(h,d),mainButton:Ut(C,l.buttonColor||"#000000",l.buttonTextColor||"#ffffff",d),miniApp:Gt(C,l.backgroundColor||"#ffffff",h,w,v,d),popup:new Me(h,d),postEvent:d,qrScanner:new Ue(h,d),settingsButton:xt(C,h,d),themeParams:Ft(l),utils:new Fe(h,v,d),...i?{initData:new De(i),initDataRaw:c}:{}},te=zt(C,p,d,t);return te instanceof Promise||t?Promise.resolve(te).then(ot=>(Ye(s,H.miniApp,H.themeParams,ot),{...H,viewport:ot})):(Ye(s,H.miniApp,H.themeParams,te),{...H,viewport:te})}catch(i){if(t)return Promise.reject(i);throw i}}function er(){return{launchParams:ee(),isPageReload:be()}}function tr(){try{return ee(),!0}catch{return!1}}function rr(r){const e=r.match(/#(.+)/);return e?e[1]:null}async function x(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 sr(){if(window.history.length<=1||(window.history.pushState(null,""),await x(1-window.history.length)))return;let e=await x(-1);for(;e;)e=await x(-1)}function F(r,e){return r.startsWith(e)?r:`${e}${r}`}class nt{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:h})=>{if(!i.startsWith("/")&&i.length>0)throw new Error('Pathname should start with "/"');return{pathname:F(i,"/"),search:c?F(c,"?"):"",hash:h?F(h,"#"):""}}),this.logger=new b(`[${n}]`,s)}formatEntry(e){let t;if(typeof e=="string")t=e;else{const{pathname:c="",search:h,hash:p}=e;t=c+(h?F(h,"?"):"")+(p?F(p,"#"):"")}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 it=0,me=1,ye=2;class Ee extends nt{constructor(t,s,n={}){super(t,s,{...n,loggerPrefix:"HashNavigator"});a(this,"ee",new _);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===it){this.logger.log("Void reached. Moving history forward"),window.history.forward();return}if(t===me)return this.back();if(t===ye)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 Ee([{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 sr(),f("web_app_setup_back_button",{is_visible:this.canGoBack}),this.canGoBack&&this.canGoForward?(this.logger.log("Setting up history: [<-, *, ->]"),window.history.replaceState(me,""),window.history.pushState(null,"",t),window.history.pushState(ye,""),await x(-1)):this.canGoBack?(this.logger.log("Setting up history: [<-, *]"),window.history.replaceState(me,""),window.history.pushState(null,"",t)):this.canGoForward?(this.logger.log("Setting up history: [*, ->]"),window.history.replaceState(null,t),window.history.pushState(ye,""),await x(-1)):(this.logger.log("Setting up history: [~, *]"),window.history.replaceState(it,""),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),I("back_button_pressed",this.back))}}function nr(r){return r instanceof G}return o.BackButton=Ve,o.ClosingBehavior=Re,o.CloudStorage=Le,o.HapticFeedback=Be,o.HashNavigator=Ee,o.InitData=De,o.Invoice=Oe,o.MainButton=Ne,o.MethodUnsupportedError=z,o.MiniApp=We,o.Navigator=nt,o.ParameterUnsupportedError=J,o.ParseError=W,o.ParseSchemaFieldError=M,o.Popup=Me,o.QRScanner=Ue,o.SettingsButton=Ge,o.ThemeParams=xe,o.TimeoutError=G,o.Utils=Fe,o.Viewport=Je,o.array=Te,o.bindMiniAppCSSVars=Qe,o.bindThemeCSSVars=Ze,o.bindViewportCSSVars=we,o.boolean=P,o.chatParser=$e,o.classNames=ce,o.compareVersions=Ce,o.createPostEvent=ve,o.date=pe,o.getHash=rr,o.init=Xt,o.initDataParser=le,o.invokeCustomMethod=D,o.isColorDark=he,o.isIframe=re,o.isPageReload=be,o.isRGB=Z,o.isRGBShort=qe,o.isRecord=L,o.isStableViewportPlatform=ze,o.isTMA=tr,o.isTimeoutError=nr,o.json=g,o.launchParamsParser=Xe,o.mergeClassNames=At,o.number=V,o.off=I,o.on=m,o.once=kt,o.parseInitData=Tt,o.parseLaunchParams=_e,o.parseMessage=ke,o.parseThemeParams=fe,o.postEvent=f,o.request=y,o.requestThemeParams=Nt,o.requestViewport=ge,o.retrieveLaunchData=er,o.retrieveLaunchParams=ee,o.rgb=ie,o.searchParams=Y,o.serializeLaunchParams=rt,o.serializeThemeParams=je,o.setCSSVar=k,o.setDebug=at,o.setTargetOrigin=ct,o.string=u,o.subscribe=qt,o.supports=T,o.themeParamsParser=de,o.toRGB=ne,o.unsubscribe=Ae,o.userParser=ue,o.withTimeout=ae,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),o}({});
1
+ var As=Object.defineProperty;var Is=(r,b,w)=>b in r?As(r,b,{enumerable:!0,configurable:!0,writable:!0,value:w}):r[b]=w;var h=(r,b,w)=>(Is(r,typeof b!="symbol"?b+"":b,w),w);this.tmajs=this.tmajs||{};this.tmajs.sdk=function(r){"use strict";function b(e,t){let s;const n=()=>{s!==void 0&&t&&t(s),s=void 0};return[()=>s===void 0?s=e(n):s,n]}function w(e){const t=j(),{count:s}=t;t.unsubscribe(e),s&&!t.count&&De()}function yt(e){return j().subscribe(e),()=>w(e)}class Ee{constructor(t,s={}){this.scope=t,this.options=s}print(t,...s){const n=new Date,i=Intl.DateTimeFormat("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3,timeZone:"UTC"}).format(n),{textColor:o,bgColor:a}=this.options,c="font-weight: bold;padding: 0 5px;border-radius:5px";console[t](`%c${i}%c / %c${this.scope}`,`${c};background-color: lightblue;color:black`,"",`${c};${o?`color:${o};`:""}${a?`background-color:${a}`:""}`,...s)}error(...t){this.print("error",...t)}log(...t){this.print("log",...t)}}const U=new Ee("SDK",{bgColor:"forestgreen",textColor:"white"});let z=!1;const Et=({event:e,args:[t]})=>{U.log("Event received:",t===void 0?{name:e}:{name:e,data:t})};function ve(e){z!==e&&(z=e,e?yt(Et):w(Et))}function Re(...e){z&&U.log(...e)}class N{constructor(){h(this,"listeners",new Map);h(this,"listenersCount",0);h(this,"subscribeListeners",[])}clear(){this.listeners.clear(),this.subscribeListeners=[]}get count(){return this.listenersCount+this.subscribeListeners.length}emit(t,...s){this.subscribeListeners.forEach(i=>i({event:t,args:s})),(this.listeners.get(t)||[]).forEach(([i,o])=>{i(...s),o&&this.off(t,i)})}on(t,s,n){let i=this.listeners.get(t);return i||this.listeners.set(t,i=[]),i.push([s,n]),this.listenersCount+=1,()=>this.off(t,s)}off(t,s){const n=this.listeners.get(t)||[];for(let i=0;i<n.length;i+=1)if(s===n[i][0]){n.splice(i,1),this.listenersCount-=1;return}}subscribe(t){return this.subscribeListeners.push(t),()=>this.unsubscribe(t)}unsubscribe(t){for(let s=0;s<this.subscribeListeners.length;s+=1)if(this.subscribeListeners[s]===t){this.subscribeListeners.splice(s,1);return}}}function J(e,t,s){return window.addEventListener(e,t,s),()=>window.removeEventListener(e,t,s)}class q extends Error{constructor(t,s,n){super(s,{cause:n}),this.type=t,Object.setPrototypeOf(this,q.prototype)}}function l(e,t,s){return new q(e,t,s)}const vt="ERR_METHOD_UNSUPPORTED",Rt="ERR_METHOD_PARAMETER_UNSUPPORTED",St="ERR_UNKNOWN_ENV",Pt="ERR_INVOKE_CUSTOM_METHOD_RESPONSE",Tt="ERR_TIMED_OUT",Ct="ERR_UNEXPECTED_TYPE",Q="ERR_PARSE",At="ERR_NAVIGATION_LIST_EMPTY",It="ERR_NAVIGATION_CURSOR_INVALID",Se="ERR_NAVIGATION_ITEM_INVALID",H="ERR_SSR_INIT",Nt="ERR_SSR_POST_EVENT",qt="ERR_INVALID_PATH_BASE";function P(){return l(Ct,"Value has unexpected type")}class W{constructor(t,s,n){this.parser=t,this.isOptional=s,this.type=n}parse(t){if(!(this.isOptional&&t===void 0))try{return this.parser(t)}catch(s){throw l(Q,`Unable to parse value${this.type?` as ${this.type}`:""}`,s)}}optional(){return this.isOptional=!0,this}}function T(e,t){return()=>new W(e,!1,t)}const y=T(e=>{if(typeof e=="boolean")return e;const t=String(e);if(t==="1"||t==="true")return!0;if(t==="0"||t==="false")return!1;throw P()},"boolean");function kt(e,t){const s={};for(const n in e){const i=e[n];if(!i)continue;let o,a;if(typeof i=="function"||"parse"in i)o=n,a=typeof i=="function"?i:i.parse.bind(i);else{const{type:c}=i;o=i.from||n,a=typeof c=="function"?c:c.parse.bind(c)}try{const c=a(t(o));c!==void 0&&(s[n]=c)}catch(c){throw l(Q,`Unable to parse field "${n}"`,c)}}return s}function Y(e){let t=e;if(typeof t=="string"&&(t=JSON.parse(t)),typeof t!="object"||t===null||Array.isArray(t))throw P();return t}function d(e,t){return new W(s=>{const n=Y(s);return kt(e,i=>n[i])},!1,t)}const R=T(e=>{if(typeof e=="number")return e;if(typeof e=="string"){const t=Number(e);if(!Number.isNaN(t))return t}throw P()},"number");function G(e){return/^#[\da-f]{6}$/i.test(e)}function Dt(e){return/^#[\da-f]{3}$/i.test(e)}function K(e){const t=e.replace(/\s/g,"").toLowerCase();if(G(t))return t;if(Dt(t)){let n="#";for(let i=0;i<3;i+=1)n+=t[1+i].repeat(2);return n}const s=t.match(/^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)$/)||t.match(/^rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),\d{1,3}\)$/);if(!s)throw new Error(`Value "${e}" does not satisfy any of known RGB formats.`);return s.slice(1).reduce((n,i)=>{const o=parseInt(i,10).toString(16);return n+(o.length===1?"0":"")+o},"#")}const u=T(e=>{if(typeof e=="string"||typeof e=="number")return e.toString();throw P()},"string"),X=T(e=>K(u().parse(e)),"rgb");function Pe(e){return d({eventType:u(),eventData:t=>t}).parse(e)}function Te(){["TelegramGameProxy_receiveEvent","TelegramGameProxy","Telegram"].forEach(e=>{delete window[e]})}function Ce(e,t){window.dispatchEvent(new MessageEvent("message",{data:JSON.stringify({eventType:e,eventData:t}),source:window.parent}))}function Ae(){[["TelegramGameProxy_receiveEvent"],["TelegramGameProxy","receiveEvent"],["Telegram","WebView","receiveEvent"]].forEach(e=>{let t=window;e.forEach((s,n,i)=>{if(n===i.length-1){t[s]=Ce;return}s in t||(t[s]={}),t=t[s]})})}const Ie=d({button_id:e=>e==null?void 0:u().parse(e)}),Ne={clipboard_text_received:d({req_id:u(),data:e=>e===null?e:u().optional().parse(e)}),custom_method_invoked:d({req_id:u(),result:e=>e,error:u().optional()}),invoice_closed:d({slug:u(),status:u()}),phone_requested:d({status:u()}),popup_closed:{parse:e=>Ie.parse(e??{})},qr_text_received:d({data:u().optional()}),theme_changed:d({theme_params:e=>{const t=X().optional();return Object.entries(Y(e)).reduce((s,[n,i])=>(s[n]=t.parse(i),s),{})}}),viewport_changed:d({height:R(),width:e=>e==null?window.innerWidth:R().parse(e),is_state_stable:y(),is_expanded:y()}),write_access_requested:d({status:u()})};function qe(){const e=new N;Ae();let t=[Te,J("resize",()=>{e.emit("viewport_changed",{width:window.innerWidth,height:window.innerHeight,is_state_stable:!0,is_expanded:!0})}),J("message",s=>{if(s.source!==window.parent)return;let n;try{n=Pe(s.data)}catch{return}const{eventType:i,eventData:o}=n,a=Ne[i];try{const c=a?a.parse(o):o;e.emit(...c?[i,c]:[i])}catch(c){U.error(`An error occurred processing the "${i}" event from the Telegram application. Please, file an issue here: https://github.com/Telegram-Mini-Apps/tma.js/issues/new/choose`,n,c)}}),()=>e.clear()];return[e,()=>{t.forEach(s=>s()),t=[]}]}const[ke,De]=b(e=>{const[t,s]=qe(),n=t.off.bind(t);return t.off=(i,o)=>{const{count:a}=t;n(i,o),a&&!t.count&&e()},[t,s]},([,e])=>e());function j(){return ke()[0]}function k(e,t){j().off(e,t)}function m(e,t,s){return j().on(e,t,s)}function D(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Vt(e,t){const s=e.split("."),n=t.split("."),i=Math.max(s.length,n.length);for(let o=0;o<i;o+=1){const a=parseInt(s[o]||"0",10),c=parseInt(n[o]||"0",10);if(a!==c)return a>c?1:-1}return 0}function E(e,t){return Vt(e,t)<=0}function S(e,t,s){if(typeof s=="string"){if(e==="web_app_open_link"&&t==="try_instant_view")return E("6.4",s);if(e==="web_app_set_header_color"&&t==="color")return E("6.9",s)}switch(e){case"web_app_open_tg_link":case"web_app_open_invoice":case"web_app_setup_back_button":case"web_app_set_background_color":case"web_app_set_header_color":case"web_app_trigger_haptic_feedback":return E("6.1",t);case"web_app_open_popup":return E("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 E("6.4",t);case"web_app_switch_inline_query":return E("6.7",t);case"web_app_invoke_custom_method":case"web_app_request_write_access":case"web_app_request_phone":return E("6.9",t);case"web_app_setup_settings_button":return E("6.10",t);case"web_app_biometry_get_info":case"web_app_biometry_open_settings":case"web_app_biometry_request_access":case"web_app_biometry_request_auth":case"web_app_biometry_update_token":return E("7.2",t);default:return["iframe_ready","iframe_will_reload","web_app_close","web_app_data_send","web_app_expand","web_app_open_link","web_app_ready","web_app_request_theme","web_app_request_viewport","web_app_setup_main_button","web_app_setup_closing_behavior"].includes(e)}}function Ve(e){return"external"in e&&D(e.external)&&"notify"in e.external&&typeof e.external.notify=="function"}function Me(e){return"TelegramWebviewProxy"in e&&D(e.TelegramWebviewProxy)&&"postEvent"in e.TelegramWebviewProxy&&typeof e.TelegramWebviewProxy.postEvent=="function"}function Mt(){try{return window.self!==window.top}catch{return!0}}let Bt="https://web.telegram.org";function Be(e){Bt=e}function Ot(){return Bt}function C(e,t,s){let n={},i;t===void 0&&s===void 0?n={}:t!==void 0&&s!==void 0?(n=s,i=t):t!==void 0&&("targetOrigin"in t?n=t:i=t);const{targetOrigin:o=Ot()}=n;if(Re("Posting event:",i?{event:e,data:i}:{event:e}),Mt()){window.parent.postMessage(JSON.stringify({eventType:e,eventData:i}),o);return}if(Ve(window)){window.external.notify(JSON.stringify({eventType:e,eventData:i}));return}if(Me(window)){window.TelegramWebviewProxy.postEvent(e,JSON.stringify(i));return}throw l(St,"Unable to determine current environment and possible way to send event. You are probably trying to use Mini Apps method outside of Telegram application environment.")}function Lt(e){return(t,s)=>{if(!S(t,e))throw l(vt,`Method "${t}" is unsupported in Mini Apps version ${e}`);if(D(s)){let n;if(t==="web_app_open_link"&&"try_instant_view"in s?n="try_instant_view":t==="web_app_set_header_color"&&"color"in s&&(n="color"),n&&!S(t,n,e))throw l(Rt,`Parameter "${n}" of "${t}" method is unsupported in Mini Apps version ${e}`)}return C(t,s)}}function Z(e){return({req_id:t})=>t===e}function $t(e){return l(Tt,`Timeout reached: ${e}ms`)}function tt(e,t){return Promise.race([typeof e=="function"?e():e,new Promise((s,n)=>{setTimeout(()=>{n($t(t))},t)})])}async function _(e){let t;const s=new Promise(g=>{t=g}),{method:n,event:i,capture:o,postEvent:a=C,timeout:c}=e,p=(Array.isArray(i)?i:[i]).map(g=>m(g,ye=>(!o||o(ye))&&t(ye)));try{return a(n,e.params),await(c?tt(s,c):s)}finally{p.forEach(g=>g())}}async function A(e,t,s,n={}){const{result:i,error:o}=await _({...n,method:"web_app_invoke_custom_method",event:"custom_method_invoked",params:{method:e,params:t,req_id:s},capture:Z(s)});if(o)throw l(Pt,o);return i}function x(...e){return e.map(t=>{if(typeof t=="string")return t;if(D(t))return x(Object.entries(t).map(s=>s[1]&&s[0]));if(Array.isArray(t))return x(...t)}).filter(Boolean).join(" ")}function Oe(...e){return e.reduce((t,s)=>(D(s)&&Object.entries(s).forEach(([n,i])=>{const o=x(t[n],i);o.length&&(t[n]=o)}),t),{})}function et(e){const t=K(e);return Math.sqrt([.299,.587,.114].reduce((s,n,i)=>{const o=parseInt(t.slice(1+i*2,1+(i+1)*2),16);return s+o*o*n},0))<120}class Le{constructor(t){h(this,"ee",new N);h(this,"on",this.ee.on.bind(this.ee));h(this,"off",this.ee.off.bind(this.ee));this.state=t}clone(){return{...this.state}}set(t,s){Object.entries(typeof t=="string"?{[t]:s}:t).reduce((i,[o,a])=>this.state[o]===a||a===void 0?i:(this.state[o]=a,this.ee.emit(`change:${o}`,a),!0),!1)&&this.ee.emit("change",this.state)}get(t){return this.state[t]}}class st{constructor(t){h(this,"state");h(this,"get");h(this,"set");h(this,"clone");this.state=new Le(t),this.set=this.state.set.bind(this.state),this.get=this.state.get.bind(this.state),this.clone=this.state.clone.bind(this.state)}}function Ut(e,t){return s=>S(t[s],e)}class nt extends st{constructor(s,n,i){super(s);h(this,"supports");this.supports=Ut(n,i)}}class Ht extends nt{constructor(s,n,i){super({isVisible:s},n,{show:"web_app_setup_back_button",hide:"web_app_setup_back_button"});h(this,"on",(s,n)=>s==="click"?m("back_button_pressed",n):this.state.on(s,n));h(this,"off",(s,n)=>s==="click"?k("back_button_pressed",n):this.state.off(s,n));this.postEvent=i}set isVisible(s){this.set("isVisible",s),this.postEvent("web_app_setup_back_button",{is_visible:s})}get isVisible(){return this.get("isVisible")}hide(){this.isVisible=!1}show(){this.isVisible=!0}}function I(){return typeof window>"u"}const it=T(e=>e instanceof Date?e:new Date(R().parse(e)*1e3),"Date");function F(e,t){return new W(s=>{if(typeof s!="string"&&!(s instanceof URLSearchParams))throw P();const n=typeof s=="string"?new URLSearchParams(s):s;return kt(e,i=>{const o=n.get(i);return o===null?void 0:o})},!1,t)}const $e=d({id:R(),type:u(),title:u(),photoUrl:{type:u().optional(),from:"photo_url"},username:u().optional()},"Chat").optional(),Wt=d({addedToAttachmentMenu:{type:y().optional(),from:"added_to_attachment_menu"},allowsWriteToPm:{type:y().optional(),from:"allows_write_to_pm"},firstName:{type:u(),from:"first_name"},id:R(),isBot:{type:y().optional(),from:"is_bot"},isPremium:{type:y().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").optional();function Gt(){return F({authDate:{type:it(),from:"auth_date"},canSendAfter:{type:R().optional(),from:"can_send_after"},chat:$e,chatInstance:{type:u().optional(),from:"chat_instance"},chatType:{type:u().optional(),from:"chat_type"},hash:u(),queryId:{type:u().optional(),from:"query_id"},receiver:Wt,startParam:{type:u().optional(),from:"start_param"},user:Wt},"InitData")}function Ue(e){return e.replace(/_[a-z]/g,t=>t[1].toUpperCase())}function He(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}const jt=T(e=>{const t=X().optional();return Object.entries(Y(e)).reduce((s,[n,i])=>(s[Ue(n)]=t.parse(i),s),{})},"ThemeParams");function rt(e){return F({botInline:{type:y().optional(),from:"tgWebAppBotInline"},initData:{type:Gt().optional(),from:"tgWebAppData"},initDataRaw:{type:u().optional(),from:"tgWebAppData"},platform:{type:u(),from:"tgWebAppPlatform"},showSettings:{type:y().optional(),from:"tgWebAppShowSettings"},startParam:{type:u().optional(),from:"tgWebAppStartParam"},themeParams:{type:jt(),from:"tgWebAppThemeParams"},version:{type:u(),from:"tgWebAppVersion"}}).parse(e)}function xt(e){return rt(e.replace(/^[^?#]*[?#]/,"").replace(/[?#]/g,"&"))}function We(){return xt(window.location.href)}function Ft(){return performance.getEntriesByType("navigation")[0]}function Ge(){const e=Ft();if(!e)throw new Error("Unable to get first navigation entry.");return xt(e.name)}function zt(e){return`tma.js/${e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}`}function Jt(e,t){sessionStorage.setItem(zt(e),JSON.stringify(t))}function Qt(e){const t=sessionStorage.getItem(zt(e));try{return t?JSON.parse(t):void 0}catch{}}function je(){return rt(Qt("launchParams")||"")}function Yt(e){return JSON.stringify(Object.fromEntries(Object.entries(e).map(([t,s])=>[He(t),s])))}function Kt(e){const{initDataRaw:t,themeParams:s,platform:n,version:i,showSettings:o,startParam:a,botInline:c}=e,p=new URLSearchParams;return p.set("tgWebAppPlatform",n),p.set("tgWebAppThemeParams",Yt(s)),p.set("tgWebAppVersion",i),t&&p.set("tgWebAppData",t),a&&p.set("tgWebAppStartParam",a),typeof o=="boolean"&&p.set("tgWebAppShowSettings",o?"1":"0"),typeof c=="boolean"&&p.set("tgWebAppBotInline",c?"1":"0"),p.toString()}function xe(e){Jt("launchParams",Kt(e))}function Xt(){for(const e of[We,Ge,je])try{const t=e();return xe(t),t}catch{}throw new Error("Unable to retrieve launch parameters from any known source.")}function ot(){const e=Ft();return!!(e&&e.type==="reload")}function Fe(){let e=0;return()=>(e+=1).toString()}const[ze]=b(Fe);function f(e,t){return({ssr:s}={})=>{let n;if(I()){if(!s)throw l(H,"ssr.options must be specified to initialize component on the server side");n=s}else n=Xt();const i={...n,postEvent:"version"in n?Lt(n.version):()=>{throw l(Nt,"postEvent function is forbidden to be called on the server side.")},createRequestId:ze()};if(I()||typeof e=="function")return typeof e=="function"?e(i):t(i);const o=t({...i,state:ot()?Qt(e):void 0}),a=c=>(c.on("change",p=>{Jt(e,p)}),c);return o instanceof Promise?o.then(a):a(o)}}const Je=f("backButton",({postEvent:e,version:t,state:s={isVisible:!1}})=>new Ht(s.isVisible,t,e));class V extends nt{constructor(){super(...arguments);h(this,"on",this.state.on.bind(this.state));h(this,"off",this.state.off.bind(this.state))}}function Zt(e){const t=e.available?e:{available:!1,device_id:"",token_saved:!1,access_requested:!1,access_granted:!1,type:""};return{available:!0,type:t.type,deviceId:t.device_id,tokenSaved:t.token_saved,accessRequested:t.access_requested,accessGranted:t.access_granted}}class at extends V{constructor({postEvent:s,version:n,...i}){super(i,n,{auth:"web_app_biometry_request_auth",openSettings:"web_app_biometry_open_settings",requestAccess:"web_app_biometry_request_access",updateToken:"web_app_biometry_update_token"});h(this,"postEvent");h(this,"authPromise");h(this,"accessPromise");this.postEvent=s}get available(){return this.get("available")}get accessGranted(){return this.get("accessGranted")}get accessRequested(){return this.get("accessRequested")}async authenticate({reason:s,...n}){return this.authPromise||(this.authPromise=_({...n,method:"web_app_biometry_request_auth",event:"biometry_auth_requested",postEvent:this.postEvent,params:{reason:(s||"").trim()}}).then(({token:i})=>i).finally(()=>this.authPromise=void 0)),this.authPromise}get deviceId(){return this.get("deviceId")}openSettings(){this.postEvent("web_app_biometry_open_settings")}requestAccess({reason:s,...n}={}){return this.accessPromise||(this.accessPromise=_({...n,postEvent:this.postEvent,method:"web_app_biometry_request_access",event:"biometry_info_received",params:{reason:s||""}}).then(i=>{const o=Zt(i);return this.set(o),o.accessGranted}).finally(()=>this.accessPromise=void 0)),this.accessPromise}get biometryType(){return this.get("biometryType")}get tokenSaved(){return this.get("tokenSaved")}async updateToken({token:s,...n}={}){return["removed","updated"].includes((await _({...n,postEvent:this.postEvent,method:"web_app_biometry_update_token",event:"biometry_token_updated",params:{token:s||""}})).status)}}async function te(e){return Zt(await _({...e||{},method:"web_app_biometry_get_info",event:"biometry_info_received"}))}const Qe=f("biometryManager",async({postEvent:e,version:t,state:s})=>{if(s)return new at({...s,version:t,postEvent:e});if(I())throw l(H,"BiometryManager cannot be instantiated on the server side without passing the ssr.state object.");return new at({...await te({timeout:1e3}),version:t,postEvent:e})});class ct extends st{constructor(){super(...arguments);h(this,"on",this.state.on.bind(this.state));h(this,"off",this.state.off.bind(this.state))}}class ee extends ct{constructor(t,s){super({isConfirmationNeeded:t}),this.postEvent=s}set isConfirmationNeeded(t){this.set("isConfirmationNeeded",t),this.postEvent("web_app_setup_closing_behavior",{need_confirmation:t})}get isConfirmationNeeded(){return this.get("isConfirmationNeeded")}disableConfirmation(){this.isConfirmationNeeded=!1}enableConfirmation(){this.isConfirmationNeeded=!0}}const Ye=f("closingBehavior",({postEvent:e,state:t={isConfirmationNeeded:!1}})=>new ee(t.isConfirmationNeeded,e));class ht{constructor(t,s){h(this,"supports");this.supports=Ut(t,s)}}function Ke(e){if(Array.isArray(e))return e;if(typeof e=="string")try{const t=JSON.parse(e);if(Array.isArray(t))return t}catch{}throw P()}class Xe extends W{constructor(s,n,i){super(Ke,n,i);h(this,"itemParser");this.itemParser=typeof s=="function"?s:s.parse.bind(s)}parse(s){const n=super.parse(s);return n===void 0?n:n.map(this.itemParser)}of(s){return this.itemParser=typeof s=="function"?s:s.parse.bind(s),this}}function se(e){return new Xe(t=>t,!1,e)}function ne(e,t){return Object.fromEntries(e.map(s=>[s,t]))}class ie extends ht{constructor(t,s,n){super(t,{delete:"web_app_invoke_custom_method",get:"web_app_invoke_custom_method",getKeys:"web_app_invoke_custom_method",set:"web_app_invoke_custom_method"}),this.createRequestId=s,this.postEvent=n}async delete(t,s={}){const n=Array.isArray(t)?t:[t];n.length&&await A("deleteStorageValues",{keys:n},this.createRequestId(),{...s,postEvent:this.postEvent})}async getKeys(t={}){return se().of(u()).parse(await A("getStorageKeys",{},this.createRequestId(),{...t,postEvent:this.postEvent}))}async get(t,s={}){const n=Array.isArray(t)?t:[t];if(!n.length)return ne(n,"");const i=await A("getStorageValues",{keys:n},this.createRequestId(),{...s,postEvent:this.postEvent}),o=d(ne(n,u()),"CloudStorageData").parse(i);return Array.isArray(t)?o:o[t]}async set(t,s,n={}){await A("saveStorageValue",{key:t,value:s},this.createRequestId(),{...n,postEvent:this.postEvent})}}const Ze=f(({createRequestId:e,postEvent:t,version:s})=>new ie(s,e,t));class re extends ht{constructor(t,s){super(t,{impactOccurred:"web_app_trigger_haptic_feedback",notificationOccurred:"web_app_trigger_haptic_feedback",selectionChanged:"web_app_trigger_haptic_feedback"}),this.postEvent=s}impactOccurred(t){this.postEvent("web_app_trigger_haptic_feedback",{type:"impact",impact_style:t})}notificationOccurred(t){this.postEvent("web_app_trigger_haptic_feedback",{type:"notification",notification_type:t})}selectionChanged(){this.postEvent("web_app_trigger_haptic_feedback",{type:"selection_change"})}}const ts=f(({version:e,postEvent:t})=>new re(e,t));class oe{constructor(t){this.initData=t}get authDate(){return this.initData.authDate}get canSendAfter(){return this.initData.canSendAfter}get canSendAfterDate(){const{canSendAfter:t}=this;return t?new Date(this.authDate.getTime()+t*1e3):void 0}get chat(){return this.initData.chat}get chatType(){return this.initData.chatType}get chatInstance(){return this.initData.chatInstance}get hash(){return this.initData.hash}get queryId(){return this.initData.queryId}get receiver(){return this.initData.receiver}get startParam(){return this.initData.startParam}get user(){return this.initData.user}}const es=f(({initData:e})=>e?new oe(e):void 0);function ss(e){return Gt().parse(e)}class ae extends V{constructor(t,s,n){super({isOpened:t},s,{open:"web_app_open_invoice"}),this.postEvent=n}set isOpened(t){this.set("isOpened",t)}get isOpened(){return this.get("isOpened")}async open(t,s){if(this.isOpened)throw new Error("Invoice is already opened");let n;if(!s)n=t;else{const{hostname:i,pathname:o}=new URL(t,window.location.href);if(i!=="t.me")throw new Error(`Incorrect hostname: ${i}`);const a=o.match(/^\/(\$|invoice\/)([A-Za-z0-9\-_=]+)$/);if(!a)throw new Error('Link pathname has incorrect format. Expected to receive "/invoice/{slug}" or "/${slug}"');[,,n]=a}this.isOpened=!0;try{return(await _({method:"web_app_open_invoice",event:"invoice_closed",params:{slug:n},postEvent:this.postEvent,capture(o){return n===o.slug}})).status}finally{this.isOpened=!1}}}const ns=f(({version:e,postEvent:t})=>new ae(!1,e,t));class ce extends st{constructor({postEvent:s,...n}){super(n);h(this,"postEvent");h(this,"on",(s,n)=>s==="click"?m("main_button_pressed",n):this.state.on(s,n));h(this,"off",(s,n)=>s==="click"?k("main_button_pressed",n):this.state.off(s,n));this.postEvent=s}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(s){this.setParams({isEnabled:s})}get isEnabled(){return this.get("isEnabled")}set isLoaderVisible(s){this.setParams({isLoaderVisible:s})}get isLoaderVisible(){return this.get("isLoaderVisible")}set isVisible(s){this.setParams({isVisible:s})}get isVisible(){return this.get("isVisible")}get backgroundColor(){return this.get("backgroundColor")}get text(){return this.get("text")}get textColor(){return this.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(s){return this.setParams({text:s})}setTextColor(s){return this.setParams({textColor:s})}setBackgroundColor(s){return this.setParams({backgroundColor:s})}setParams(s){return this.set(s),this.commit(),this}}const is=f("mainButton",({postEvent:e,themeParams:t,state:s={isVisible:!1,isEnabled:!1,text:"",isLoaderVisible:!1,textColor:t.buttonTextColor||"#ffffff",backgroundColor:t.buttonColor||"#000000"}})=>new ce({...s,postEvent:e}));function rs(){return F({contact:d({userId:{type:R(),from:"user_id"},phoneNumber:{type:u(),from:"phone_number"},firstName:{type:u(),from:"first_name"},lastName:{type:u().optional(),from:"last_name"}}),authDate:{type:it(),from:"auth_date"},hash:u()},"RequestedContact")}function he(e,t){return s=>{const[n,i]=t[s];return S(n,i,e)}}function os(e){return new Promise(t=>{setTimeout(t,e)})}class ue extends V{constructor({postEvent:s,createRequestId:n,version:i,botInline:o,...a}){super(a,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"});h(this,"botInline");h(this,"postEvent");h(this,"createRequestId");h(this,"requestPhoneAccessPromise");h(this,"requestWriteAccessPromise");h(this,"supportsParam");this.createRequestId=n,this.postEvent=s,this.botInline=o;const c=this.supports.bind(this);this.supports=p=>c(p)?p!=="switchInlineQuery"||o:!1,this.supportsParam=he(i,{"setHeaderColor.color":["web_app_set_header_color","color"]})}async getRequestedContact({timeout:s=1e4}={}){return rs().parse(await A("getRequestedContact",{},this.createRequestId(),{postEvent:this.postEvent,timeout:s}))}get bgColor(){return this.get("bgColor")}close(){this.postEvent("web_app_close")}get headerColor(){return this.get("headerColor")}get isBotInline(){return this.botInline}get isDark(){return et(this.bgColor)}ready(){this.postEvent("web_app_ready")}async requestContact({timeout:s=5e3}={}){try{return await this.getRequestedContact()}catch{}if(await this.requestPhoneAccess()!=="sent")throw new Error("Access denied.");const i=Date.now()+s;let o=50;return tt(async()=>{for(;Date.now()<i;){try{return await this.getRequestedContact()}catch{}await os(o),o+=50}throw $t(s)},s)}async requestPhoneAccess(s={}){return this.requestPhoneAccessPromise||(this.requestPhoneAccessPromise=_({...s,method:"web_app_request_phone",event:"phone_requested",postEvent:this.postEvent}).then(({status:n})=>n).finally(()=>this.requestPhoneAccessPromise=void 0)),this.requestPhoneAccessPromise}async requestWriteAccess(s={}){return this.requestWriteAccessPromise||(this.requestWriteAccessPromise=_({...s,method:"web_app_request_write_access",event:"write_access_requested",postEvent:this.postEvent}).then(({status:n})=>n).finally(()=>this.requestWriteAccessPromise=void 0)),this.requestWriteAccessPromise}sendData(s){const{size:n}=new Blob([s]);if(!n||n>4096)throw new Error(`Passed data has incorrect size: ${n}`);this.postEvent("web_app_data_send",{data:s})}setHeaderColor(s){this.postEvent("web_app_set_header_color",G(s)?{color:s}:{color_key:s}),this.set("headerColor",s)}setBgColor(s){this.postEvent("web_app_set_background_color",{color:s}),this.set("bgColor",s)}switchInlineQuery(s,n=[]){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:s,chat_types:n})}}const as=f("miniApp",({themeParams:e,botInline:t=!1,state:s={bgColor:e.bgColor||"#ffffff",headerColor:e.headerBgColor||"#000000"},...n})=>new ue({...n,...s,botInline:t}));function cs(e){const t=e.message.trim(),s=(e.title||"").trim(),n=e.buttons||[];let i;if(s.length>64)throw new Error(`Title has incorrect size: ${s.length}`);if(!t.length||t.length>256)throw new Error(`Message has incorrect size: ${t.length}`);if(n.length>3)throw new Error(`Buttons have incorrect size: ${n.length}`);return n.length?i=n.map(o=>{const{id:a=""}=o;if(a.length>64)throw new Error(`Button ID has incorrect size: ${a}`);if(!o.type||o.type==="default"||o.type==="destructive"){const c=o.text.trim();if(!c.length||c.length>64){const p=o.type||"default";throw new Error(`Button text with type "${p}" has incorrect size: ${o.text.length}`)}return{...o,text:c,id:a}}return{...o,id:a}}):i=[{type:"close",id:""}],{title:s,message:t,buttons:i}}class pe extends V{constructor(t,s,n){super({isOpened:t},s,{open:"web_app_open_popup"}),this.postEvent=n}set isOpened(t){this.set("isOpened",t)}get isOpened(){return this.get("isOpened")}async open(t){if(this.isOpened)throw new Error("Popup is already opened.");this.isOpened=!0;try{const{button_id:s=null}=await _({event:"popup_closed",method:"web_app_open_popup",postEvent:this.postEvent,params:cs(t)});return s}finally{this.isOpened=!1}}}const hs=f(({postEvent:e,version:t})=>new pe(!1,t,e));class le extends V{constructor(t,s,n){super({isOpened:t},s,{close:"web_app_close_scan_qr_popup",open:"web_app_open_scan_qr_popup"}),this.postEvent=n}close(){this.postEvent("web_app_close_scan_qr_popup"),this.isOpened=!1}set isOpened(t){this.set("isOpened",t)}get isOpened(){return this.get("isOpened")}async open(t){if(this.isOpened)throw new Error("QR scanner is already opened.");this.isOpened=!0;try{return(await _({method:"web_app_open_scan_qr_popup",event:["qr_text_received","scan_qr_popup_closed"],postEvent:this.postEvent,params:{text:t}})||{}).data||null}finally{this.isOpened=!1}}}const us=f(({version:e,postEvent:t})=>new le(!1,e,t));class de extends nt{constructor(s,n,i){super({isVisible:s},n,{show:"web_app_setup_settings_button",hide:"web_app_setup_settings_button"});h(this,"on",(s,n)=>s==="click"?m("settings_button_pressed",n):this.state.on(s,n));h(this,"off",(s,n)=>s==="click"?k("settings_button_pressed",n):this.state.off(s,n));this.postEvent=i}set isVisible(s){this.set("isVisible",s),this.postEvent("web_app_setup_settings_button",{is_visible:s})}get isVisible(){return this.get("isVisible")}hide(){this.isVisible=!1}show(){this.isVisible=!0}}const ps=f("settingsButton",({version:e,postEvent:t,state:s={isVisible:!1}})=>new de(s.isVisible,e,t));function ut(e){return jt().parse(e)}class _e extends ct{get accentTextColor(){return this.get("accentTextColor")}get bgColor(){return this.get("bgColor")}get buttonColor(){return this.get("buttonColor")}get buttonTextColor(){return this.get("buttonTextColor")}get destructiveTextColor(){return this.get("destructiveTextColor")}getState(){return this.clone()}get headerBgColor(){return this.get("headerBgColor")}get hintColor(){return this.get("hintColor")}get isDark(){return!this.bgColor||et(this.bgColor)}get linkColor(){return this.get("linkColor")}get secondaryBgColor(){return this.get("secondaryBgColor")}get sectionBgColor(){return this.get("sectionBgColor")}get sectionHeaderTextColor(){return this.get("sectionHeaderTextColor")}listen(){return m("theme_changed",t=>{this.set(ut(t.theme_params))})}get subtitleTextColor(){return this.get("subtitleTextColor")}get textColor(){return this.get("textColor")}}const ls=f("themeParams",({themeParams:e,state:t=e})=>{const s=new _e(t);return I()||s.listen(),s});function ds(e={}){return _({...e,method:"web_app_request_theme",event:"theme_changed"}).then(ut)}class fe extends ht{constructor(s,n,i){super(s,{readTextFromClipboard:"web_app_read_text_from_clipboard"});h(this,"supportsParam");this.version=s,this.createRequestId=n,this.postEvent=i,this.supportsParam=he(s,{"openLink.tryInstantView":["web_app_open_link","try_instant_view"]})}openLink(s,n){const i=new URL(s,window.location.href).toString();if(!S("web_app_open_link",this.version)){window.open(i,"_blank");return}this.postEvent("web_app_open_link",{url:i,...typeof n=="boolean"?{try_instant_view:n}:{}})}openTelegramLink(s){const{hostname:n,pathname:i,search:o}=new URL(s,window.location.href);if(n!=="t.me")throw new Error(`URL has not allowed hostname: ${n}. Only "t.me" is allowed`);if(!S("web_app_open_tg_link",this.version)){window.location.href=s;return}this.postEvent("web_app_open_tg_link",{path_full:i+o})}async readTextFromClipboard(){const s=this.createRequestId(),{data:n=null}=await _({method:"web_app_read_text_from_clipboard",event:"clipboard_text_received",postEvent:this.postEvent,params:{req_id:s},capture:Z(s)});return n}}const _s=f(({version:e,postEvent:t,createRequestId:s})=>new fe(e,s,t));async function pt(e={}){const{is_expanded:t,is_state_stable:s,...n}=await _({...e,method:"web_app_request_viewport",event:"viewport_changed"});return{...n,isExpanded:t,isStateStable:s}}function M(e){return e<0?0:e}class lt extends ct{constructor({postEvent:s,stableHeight:n,height:i,width:o,isExpanded:a}){super({height:M(i),isExpanded:a,stableHeight:M(n),width:M(o)});h(this,"postEvent");this.postEvent=s}async sync(s){const{isStateStable:n,...i}=await pt(s);this.set({...i,stableHeight:n?i.height:this.get("stableHeight")})}get height(){return this.get("height")}get stableHeight(){return this.get("stableHeight")}listen(){return m("viewport_changed",s=>{const{height:n,width:i,is_expanded:o,is_state_stable:a}=s,c=M(n);this.set({height:c,isExpanded:o,width:M(i),...a?{stableHeight:c}:{}})})}get isExpanded(){return this.get("isExpanded")}get width(){return this.get("width")}expand(){this.postEvent("web_app_expand"),this.set("isExpanded",!0)}get isStable(){return this.stableHeight===this.height}}async function fs(e,t={}){const{height:s,width:n,isExpanded:i,isStateStable:o}=await pt({...t,postEvent:e});return new lt({postEvent:e,height:s,width:n,isExpanded:i,stableHeight:o?s:0})}function gs({state:e,platform:t,postEvent:s}){let n=!1,i=0,o=0,a=0;return e?(n=e.isExpanded,i=e.height,o=e.width,a=e.stableHeight):["macos","tdesktop","unigram","webk","weba","web"].includes(t)&&(n=!0,i=window.innerHeight,o=window.innerWidth,a=window.innerHeight),new lt({postEvent:s,height:i,width:o,stableHeight:a,isExpanded:n})}const bs=f("viewport",async e=>{if(I()&&!e.state)throw l(H,"Viewport cannot be instantiated on the server side without passing the ssr.state object.");let t=gs(e);return I()||(t.width===0&&await fs(e.postEvent,{timeout:1e3}).then(s=>t=s).catch(s=>U.error("Unable to sync viewport state",s)),t.listen()),t});function v(e,t){document.documentElement.style.setProperty(e,t)}function ms(e,t,s){s||(s=c=>`--tg-${c}-color`);const n=s("header"),i=s("bg"),o=()=>{const{headerColor:c}=e;if(G(c))v(n,c);else{const{bgColor:p,secondaryBgColor:g}=t;c==="bg_color"&&p?v(n,p):c==="secondary_bg_color"&&g&&v(n,g)}v(i,e.bgColor)},a=[t.on("change",o),e.on("change",o)];return o(),()=>a.forEach(c=>c())}function ws(e,t){t||(t=n=>`--tg-theme-${n.replace(/[A-Z]/g,i=>`-${i.toLowerCase()}`)}`);const s=()=>{Object.entries(e.getState()).forEach(([n,i])=>{i&&v(t(n),i)})};return s(),e.on("change",s)}function ys(e,t){t||(t=g=>`--tg-viewport-${g}`);const[s,n,i]=["height","width","stable-height"].map(g=>t(g)),o=()=>v(s,`${e.height}px`),a=()=>v(n,`${e.width}px`),c=()=>v(i,`${e.stableHeight}px`),p=[e.on("change:height",o),e.on("change:width",a),e.on("change:stableHeight",c)];return o(),a(),c(),()=>p.forEach(g=>g())}function Es(e=!0){const t=[m("reload_iframe",()=>{C("iframe_will_reload"),window.location.reload()})],s=()=>t.forEach(n=>n());if(e){const n=document.createElement("style");n.id="telegram-custom-styles",document.head.appendChild(n),t.push(m("set_custom_style",i=>{n.innerHTML=i}),()=>document.head.removeChild(n))}return C("iframe_ready",{reload_supported:!0}),s}async function vs(){try{return await _({method:"web_app_request_theme",event:"theme_changed",timeout:100}),!0}catch{return!1}}function ge(e){return e instanceof q}function Rs(e,t){return ge(e)&&e.type===t}function dt(e,t){let s,n,i;return typeof e=="string"?s=e:(s=e.pathname===void 0?t:e.pathname,n=e.params,i=e.id),Object.freeze({id:i||(Math.random()*2**14|0).toString(16),pathname:s,params:n})}class be{constructor(t,s,n=C){h(this,"history");h(this,"ee",new N);h(this,"attached",!1);h(this,"back",()=>this.go(-1));h(this,"on",this.ee.on.bind(this.ee));h(this,"off",this.ee.off.bind(this.ee));if(this._index=s,this.postEvent=n,t.length===0)throw l(At,"History should not be empty.");if(s<0||s>=t.length)throw l(It,"Index should not be zero and higher or equal than history size.");this.history=t.map(i=>dt(i,""))}attach(){this.attached||(this.attached=!0,this.sync(),m("back_button_pressed",this.back))}get current(){return this.history[this.index]}detach(){this.attached=!1,k("back_button_pressed",this.back)}forward(){this.go(1)}go(t,s){const n=this.index+t,i=Math.min(Math.max(0,n),this.history.length-1);(n===i||s)&&this.replaceAndMove(i,this.history[i])}goTo(t,s){this.go(t-this.index,s)}get hasPrev(){return this.index>0}get hasNext(){return this.index!==this.history.length-1}get index(){return this._index}push(t){this.hasNext&&this.history.splice(this.index+1),this.replaceAndMove(this.index+1,dt(t,this.current.pathname))}replace(t){this.replaceAndMove(this.index,dt(t,this.current.pathname))}replaceAndMove(t,s){const n=t-this.index;if(!n&&this.current===s)return;const i=this.current;if(this.index!==t){const o=this._index;this._index=t,this.attached&&o>0!=t>0&&this.sync()}this.history[t]=s,this.ee.emit("change",{navigator:this,from:i,to:this.current,delta:n})}sync(){this.postEvent("web_app_setup_back_button",{is_visible:!!this.index})}}function _t({params:e,...t}){return{...e||{hash:"",search:""},...t}}function B(e,t){return e.startsWith(t)?e:`${t}${e}`}function O(e){return new URL(typeof e=="string"?e:`${e.pathname||""}${B(e.search||"","?")}${B(e.hash||"","#")}`,"http://a")}function L(e){const t=typeof e=="string"?e.startsWith("/"):!!(e.pathname&&e.pathname.startsWith("/")),s=O(e);return`${t?s.pathname:s.pathname.slice(1)}${s.search}${s.hash}`}function ft(e,t,s){let n,i;typeof e=="string"?n=e:(n=L(e),s=e.state,i=e.id);const{pathname:o,search:a,hash:c}=new URL(n,`http://a${B(t,"/")}`);return{id:i,pathname:o,params:{hash:c,search:a,state:s}}}async function $(e){return e===0?!0:Promise.race([new Promise(t=>{const s=J("popstate",()=>{s(),t(!0)});window.history.go(e)}),new Promise(t=>{setTimeout(t,50,!1)})])}async function Ss(){if(window.history.length<=1||(window.history.pushState(null,""),await $(1-window.history.length)))return;let t=await $(-1);for(;t;)t=await $(-1)}function gt(e){return O(e).pathname}const me=0,bt=1,mt=2;class wt{constructor(t,s,{postEvent:n,hashMode:i,base:o}={}){h(this,"navigator");h(this,"ee",new N);h(this,"hashMode");h(this,"base");h(this,"attached",!1);h(this,"onPopState",({state:t})=>{if(t===null)return this.push(this.parsePath(window.location.href));t===me?window.history.forward():t===bt&&this.back(),t===mt&&this.forward()});h(this,"onNavigatorChange",async({to:t,from:s,delta:n})=>{this.attached&&await this.syncHistory(),this.ee.emit("change",{delta:n,from:_t(s),to:_t(t),navigator:this})});h(this,"on",this.ee.on.bind(this.ee));h(this,"off",this.ee.off.bind(this.ee));this.navigator=new be(t.map(a=>ft(a,"/")),s,n),this.navigator.on("change",this.onNavigatorChange),this.hashMode=i,this.base=gt(o||"")}async attach(){this.attached||(this.attached=!0,this.navigator.attach(),window.addEventListener("popstate",this.onPopState),await this.syncHistory())}back(){this.navigator.back()}detach(){this.attached=!1,this.navigator.detach(),window.removeEventListener("popstate",this.onPopState)}forward(){return this.navigator.forward()}get index(){return this.navigator.index}get id(){return this.navigator.current.id}go(t,s){return this.navigator.go(t,s)}goTo(t,s){this.navigator.goTo(t,s)}get hash(){return(this.navigator.current.params||{}).hash||""}get hasPrev(){return this.navigator.hasPrev}get hasNext(){return this.navigator.hasNext}get history(){return this.navigator.history.map(_t)}get path(){return L(this)}get pathname(){return this.navigator.current.pathname}parsePath(t){let s=O(t);return this.hashMode&&(s=O(s.hash.slice(1))),{pathname:s.pathname,search:s.search,hash:s.hash}}push(t,s){const n=ft(t,this.path),{state:i=s}=n.params;this.navigator.push({...n,params:{...n.params,state:i}})}replace(t,s){const n=ft(t,this.path),{state:i=s}=n.params;this.navigator.replace({...n,params:{...n.params,state:i}})}renderPath(t){const s=(this.base.length===1?"":this.base)+B(L(t),"/");return this.hashMode?B(s.slice(1),this.hashMode==="default"?"#":"#/"):s}async syncHistory(){window.removeEventListener("popstate",this.onPopState);const{state:t}=this,s=this.renderPath(this);await Ss(),this.hasPrev&&this.hasNext?(window.history.replaceState(bt,""),window.history.pushState(t,"",s),window.history.pushState(mt,""),await $(-1)):this.hasPrev?(window.history.replaceState(bt,""),window.history.pushState(t,"",s)):this.hasNext?(window.history.replaceState(t,s),window.history.pushState(mt,""),await $(-1)):(window.history.replaceState(me,""),window.history.pushState(t,"",s)),window.addEventListener("popstate",this.onPopState)}get search(){return(this.navigator.current.params||{}).search||""}get state(){return(this.navigator.current.params||{}).state}}function we(e){e||(e={});const{href:t,hash:s}=window.location;let n=L(e.hashMode?s.includes("?")?s.slice(1):`?${s.slice(1)}`:t);const i=e.base?gt(e.base):void 0;if(i){if(!n.startsWith(i))throw l(qt,`Path "${n}" expected to be starting with "${i}"`);n=n.slice(i.length)}return new wt([n],0,e)}function Ps(e){const t=e.match(/#(.+)/);return t?t[1]:null}function Ts(e,t){if(ot()){const s=sessionStorage.getItem(e);if(s)try{const{index:n,history:i}=JSON.parse(s);return new wt(i,n,t)}catch(n){console.error("Unable to restore hash navigator state.",n)}}return we(t)}function Cs(e,t){const s=Ts(e,t),n=()=>sessionStorage.setItem(e,JSON.stringify({index:s.index,history:s.history}));return s.on("change",n),n(),s}return r.BackButton=Ht,r.BasicNavigator=be,r.BiometryManager=at,r.BrowserNavigator=wt,r.ClosingBehavior=ee,r.CloudStorage=ie,r.ERR_INVALID_PATH_BASE=qt,r.ERR_INVOKE_CUSTOM_METHOD_RESPONSE=Pt,r.ERR_METHOD_PARAMETER_UNSUPPORTED=Rt,r.ERR_METHOD_UNSUPPORTED=vt,r.ERR_NAVIGATION_HISTORY_EMPTY=At,r.ERR_NAVIGATION_INDEX_INVALID=It,r.ERR_NAVIGATION_ITEM_INVALID=Se,r.ERR_PARSE=Q,r.ERR_SSR_INIT=H,r.ERR_SSR_POST_EVENT=Nt,r.ERR_TIMED_OUT=Tt,r.ERR_UNEXPECTED_TYPE=Ct,r.ERR_UNKNOWN_ENV=St,r.EventEmitter=N,r.HapticFeedback=re,r.InitData=oe,r.Invoice=ae,r.MainButton=ce,r.MiniApp=ue,r.Popup=pe,r.QRScanner=le,r.SDKError=q,r.SettingsButton=de,r.ThemeParams=_e,r.Utils=fe,r.Viewport=lt,r.array=se,r.bindMiniAppCSSVars=ms,r.bindThemeParamsCSSVars=ws,r.bindViewportCSSVars=ys,r.boolean=y,r.captureSameReq=Z,r.classNames=x,r.compareVersions=Vt,r.createBrowserNavigatorFromLocation=we,r.createPostEvent=Lt,r.createSafeURL=O,r.date=it,r.getHash=Ps,r.getPathname=gt,r.initBackButton=Je,r.initBiometryManager=Qe,r.initClosingBehavior=Ye,r.initCloudStorage=Ze,r.initHapticFeedback=ts,r.initInitData=es,r.initInvoice=ns,r.initMainButton=is,r.initMiniApp=as,r.initNavigator=Cs,r.initPopup=hs,r.initQRScanner=us,r.initSettingsButton=ps,r.initThemeParams=ls,r.initUtils=_s,r.initViewport=bs,r.initWeb=Es,r.invokeCustomMethod=A,r.isColorDark=et,r.isIframe=Mt,r.isPageReload=ot,r.isRGB=G,r.isRGBShort=Dt,r.isSDKError=ge,r.isSDKErrorOfType=Rs,r.isTMA=vs,r.json=d,r.mergeClassNames=Oe,r.number=R,r.off=k,r.on=m,r.parseInitData=ss,r.parseLaunchParams=rt,r.parseThemeParams=ut,r.postEvent=C,r.request=_,r.requestBiometryInfo=te,r.requestThemeParams=ds,r.requestViewport=pt,r.retrieveLaunchParams=Xt,r.rgb=X,r.searchParams=F,r.serializeLaunchParams=Kt,r.serializeThemeParams=Yt,r.setCSSVar=v,r.setDebug=ve,r.setTargetOrigin=Be,r.string=u,r.subscribe=yt,r.supports=S,r.targetOrigin=Ot,r.toRGB=K,r.unsubscribe=w,r.urlToPath=L,r.withTimeout=tt,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),r}({});
2
+ //# sourceMappingURL=index.iife.js.map