@apiteam/twa-bridge 8.0.10 → 8.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apiteam/twa-bridge",
3
- "version": "8.0.10",
3
+ "version": "8.0.12",
4
4
  "description": "Telegram bridge",
5
5
  "license": "MIT",
6
6
  "types": "index.ts",
package/solid/index.d.ts CHANGED
@@ -236,10 +236,21 @@ declare const MethodSendPreparedMessage = "web_app_send_prepared_message";
236
236
  declare const MethodSetEmojiStatus = "web_app_set_emoji_status";
237
237
  declare const MethodRequestEmojiStatusAccess = "web_app_request_emoji_status_access";
238
238
  declare const MethodRequestFileDownload = "web_app_request_file_download";
239
+ declare const MethodBiometryGetInfo = "web_app_biometry_get_info";
239
240
  declare const MethodBiometryOpenSettings = "web_app_biometry_open_settings";
240
241
  declare const MethodBiometryRequestAccess = "web_app_biometry_request_access";
241
242
  declare const MethodBiometryRequestAuth = "web_app_biometry_request_auth";
242
243
  declare const MethodBiometryUpdateToken = "web_app_biometry_update_token";
244
+ declare const MethodCheckLocation = "web_app_check_location";
245
+ declare const MethodOpenLocationSettings = "web_app_open_location_settings";
246
+ declare const MethodRequestLocation = "web_app_request_location";
247
+ declare const MethodStartAccelerometer = "web_app_start_accelerometer";
248
+ declare const MethodStartDeviceOrientation = "web_app_start_device_orientation";
249
+ declare const MethodStartGyroscope = "web_app_start_gyroscope";
250
+ declare const MethodStopAccelerometer = "web_app_stop_accelerometer";
251
+ declare const MethodStopDeviceOrientation = "web_app_stop_device_orientation";
252
+ declare const MethodStopGyroscope = "web_app_stop_gyroscope";
253
+ declare const MethodSetupSecondaryButton = "web_app_setup_secondary_button";
243
254
  declare enum Method {
244
255
  InvokeCustomMethod = "web_app_invoke_custom_method",
245
256
  OpenScanQrPopup = "web_app_open_scan_qr_popup",
@@ -786,4 +797,4 @@ interface ProviderTWA extends JSX.HTMLAttributes<HTMLDivElement> {
786
797
  }
787
798
  declare const ProviderTWA: Component<ProviderTWA>;
788
799
 
789
- export { ContextTwa, EventAccelerometerChanged, EventAccelerometerFailed, EventAccelerometerStarted, EventAccelerometerStopped, EventBackButtonPressed, EventBiometryAuthRequested, EventBiometryInfoReceived, EventBiometryTokenUpdated, EventClipboardTextReceived, EventContentSafeAreaChanged, EventCustomMethodInvoked, EventDeviceOrientationChanged, EventDeviceOrientationFailed, EventDeviceOrientationStarted, EventDeviceOrientationStopped, EventEmojiStatusAccessRequested, EventEmojiStatusFailed, EventEmojiStatusSet, EventFileDownloadRequested, EventFullscreenChanged, EventFullscreenFailed, EventGyroscopeChanged, EventGyroscopeFailed, EventGyroscopeStarted, EventGyroscopeStopped, EventHomeScreenAdded, EventHomeScreenChecked, EventHomeScreenFailed, EventInvoiceClosed, EventLocationChecked, EventLocationRequested, EventMainButtonPressed, EventPhoneRequested, EventPopupClosed, EventPreparedMessageFailed, EventPreparedMessageSent, EventQrTextReceived, EventReloadIframe, EventSafeAreaChanged, EventScanQrPopupClosed, EventSecondaryButtonPressed, EventSetCustomStyle, EventSettingsButtonPressed, EventThemeChanged, EventViewportChanged, EventVisibilityChanged, EventWriteAccessRequested, type EventsData, type GetInitData, Method, MethodAddToHomeScreen, MethodCheckHomeScreen, MethodClose, MethodCloseScanQrPopup, MethodDataSend, MethodExitFullscreen, MethodExpand, MethodIframeReady, MethodIframeWillReload, MethodInvokeCustomMethod, MethodOpenInvoice, MethodOpenLink, MethodOpenPopup, MethodOpenScanQrPopup, MethodOpenTgLink, MethodReadTextFromClipboard, MethodReady, MethodRequestContentSafeArea, MethodRequestEmojiStatusAccess, MethodRequestFileDownload, MethodRequestFullscreen, MethodRequestPhone, MethodRequestSafeArea, MethodRequestTheme, MethodRequestViewport, MethodRequestWriteAccess, MethodSendPreparedMessage, MethodSetBackgroundColor, MethodSetBottomBarColor, MethodSetEmojiStatus, MethodSetHeaderColor, MethodSetupBackButton, MethodSetupClosingBehavior, MethodSetupMainButton, MethodSetupSettingsButton, MethodSetupSwipeBehavior, MethodShareToStory, MethodSwitchInlineQuery, MethodToggleOrientationLock, MethodTriggerHapticFeedback, NOT_SUPPORTED, type PopupButton, ProviderTWA, type SenderData, TG_DESKTOP, TG_PHONE, TG_WEB, type ThemeParams, addToHomeScreen as bridgeAddToHomeScreen, BiometricManager as bridgeBiometricManager, checkHomeScreen as bridgeCheckHomeScreen, close as bridgeClose, closeScanQrPopup as bridgeCloseScanQrPopup, dataSend as bridgeDataSend, downloadFile as bridgeDownloadFile, expand as bridgeExpand, getInitData as bridgeGetInitData, getThemeParams as bridgeGetThemeParams, iframeReady as bridgeIframeReady, iframeWillReload as bridgeIframeWillReload, invokeCustomMethod as bridgeInvokeCustomMethod, openInvoice as bridgeOpenInvoice, openLink as bridgeOpenLink, openPopup as bridgeOpenPopup, openScanQrPopup as bridgeOpenScanQrPopup, openTgLink as bridgeOpenTgLink, readTextFromClipboard as bridgeReadTextFromClipboard, ready as bridgeReady, requestContentSafeAreaInset as bridgeRequestContentSafeAreaInset, requestEmojiStatus as bridgeRequestEmojiStatus, requestPhone as bridgeRequestPhone, requestSafeAreaInset as bridgeRequestSafeAreaInset, requestTheme as bridgeRequestTheme, requestViewport as bridgeRequestViewport, requestWriteAccess as bridgeRequestWriteAccess, sender as bridgeSend, sessionStorageGet as bridgeSessionStorageGet, sessionStorageSet as bridgeSessionStorageSet, setBackgroundColor as bridgeSetBackgroundColor, setBottomBarColor as bridgeSetBottomBarColor, setEmojiStatus as bridgeSetEmojiStatus, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupFullScreen as bridgeSetupFullScreen, setupMainButton as bridgeSetupMainButton, setupOrientation as bridgeSetupOrientation, setupSettingsButton as bridgeSetupSettingsButton, setupSwipeBehavior as bridgeSetupSwipeBehavior, shareMessage as bridgeShareMessage, shareToStory as bridgeShareToStory, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, createIsViewportChanged, debug, getAppData, getPlatform, listener, sender, supportAddToHomeScreen, supportBiometricManager, supportCheckHomeScreen, supportClose, supportCloseScanQrPopup, supportDataSend, supportDownloadFile, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestContentSafeAreaInset, supportRequestEmojiStatus, supportRequestPhone, supportRequestSafeAreaInset, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSessionStorageGet, supportSessionStorageSet, supportSetBackgroundColor, supportSetBottomBarColor, supportSetEmojiStatus, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupFullScreen, supportSetupMainButton, supportSetupOrientation, supportSetupSettingsButton, supportSetupSwipeBehavior, supportShareMessage, supportShareToStory, supportSwitchInlineQuery, supportTriggerHapticFeedback };
800
+ export { ContextTwa, EventAccelerometerChanged, EventAccelerometerFailed, EventAccelerometerStarted, EventAccelerometerStopped, EventBackButtonPressed, EventBiometryAuthRequested, EventBiometryInfoReceived, EventBiometryTokenUpdated, EventClipboardTextReceived, EventContentSafeAreaChanged, EventCustomMethodInvoked, EventDeviceOrientationChanged, EventDeviceOrientationFailed, EventDeviceOrientationStarted, EventDeviceOrientationStopped, EventEmojiStatusAccessRequested, EventEmojiStatusFailed, EventEmojiStatusSet, EventFileDownloadRequested, EventFullscreenChanged, EventFullscreenFailed, EventGyroscopeChanged, EventGyroscopeFailed, EventGyroscopeStarted, EventGyroscopeStopped, EventHomeScreenAdded, EventHomeScreenChecked, EventHomeScreenFailed, EventInvoiceClosed, EventLocationChecked, EventLocationRequested, EventMainButtonPressed, EventPhoneRequested, EventPopupClosed, EventPreparedMessageFailed, EventPreparedMessageSent, EventQrTextReceived, EventReloadIframe, EventSafeAreaChanged, EventScanQrPopupClosed, EventSecondaryButtonPressed, EventSetCustomStyle, EventSettingsButtonPressed, EventThemeChanged, EventViewportChanged, EventVisibilityChanged, EventWriteAccessRequested, type EventsData, type GetInitData, Method, MethodAddToHomeScreen, MethodBiometryGetInfo, MethodBiometryOpenSettings, MethodBiometryRequestAccess, MethodBiometryRequestAuth, MethodBiometryUpdateToken, MethodCheckHomeScreen, MethodCheckLocation, MethodClose, MethodCloseScanQrPopup, MethodDataSend, MethodExitFullscreen, MethodExpand, MethodIframeReady, MethodIframeWillReload, MethodInvokeCustomMethod, MethodOpenInvoice, MethodOpenLink, MethodOpenLocationSettings, MethodOpenPopup, MethodOpenScanQrPopup, MethodOpenTgLink, MethodReadTextFromClipboard, MethodReady, MethodRequestContentSafeArea, MethodRequestEmojiStatusAccess, MethodRequestFileDownload, MethodRequestFullscreen, MethodRequestLocation, MethodRequestPhone, MethodRequestSafeArea, MethodRequestTheme, MethodRequestViewport, MethodRequestWriteAccess, MethodSendPreparedMessage, MethodSetBackgroundColor, MethodSetBottomBarColor, MethodSetEmojiStatus, MethodSetHeaderColor, MethodSetupBackButton, MethodSetupClosingBehavior, MethodSetupMainButton, MethodSetupSecondaryButton, MethodSetupSettingsButton, MethodSetupSwipeBehavior, MethodShareToStory, MethodStartAccelerometer, MethodStartDeviceOrientation, MethodStartGyroscope, MethodStopAccelerometer, MethodStopDeviceOrientation, MethodStopGyroscope, MethodSwitchInlineQuery, MethodToggleOrientationLock, MethodTriggerHapticFeedback, NOT_SUPPORTED, type PopupButton, ProviderTWA, type SenderData, TG_DESKTOP, TG_PHONE, TG_WEB, type ThemeParams, addToHomeScreen as bridgeAddToHomeScreen, BiometricManager as bridgeBiometricManager, checkHomeScreen as bridgeCheckHomeScreen, close as bridgeClose, closeScanQrPopup as bridgeCloseScanQrPopup, dataSend as bridgeDataSend, downloadFile as bridgeDownloadFile, expand as bridgeExpand, getInitData as bridgeGetInitData, getThemeParams as bridgeGetThemeParams, iframeReady as bridgeIframeReady, iframeWillReload as bridgeIframeWillReload, invokeCustomMethod as bridgeInvokeCustomMethod, openInvoice as bridgeOpenInvoice, openLink as bridgeOpenLink, openPopup as bridgeOpenPopup, openScanQrPopup as bridgeOpenScanQrPopup, openTgLink as bridgeOpenTgLink, readTextFromClipboard as bridgeReadTextFromClipboard, ready as bridgeReady, requestContentSafeAreaInset as bridgeRequestContentSafeAreaInset, requestEmojiStatus as bridgeRequestEmojiStatus, requestPhone as bridgeRequestPhone, requestSafeAreaInset as bridgeRequestSafeAreaInset, requestTheme as bridgeRequestTheme, requestViewport as bridgeRequestViewport, requestWriteAccess as bridgeRequestWriteAccess, sender as bridgeSend, sessionStorageGet as bridgeSessionStorageGet, sessionStorageSet as bridgeSessionStorageSet, setBackgroundColor as bridgeSetBackgroundColor, setBottomBarColor as bridgeSetBottomBarColor, setEmojiStatus as bridgeSetEmojiStatus, setHeaderColor as bridgeSetHeaderColor, setupBackButton as bridgeSetupBackButton, setupClosingBehavior as bridgeSetupClosingBehavior, setupFullScreen as bridgeSetupFullScreen, setupMainButton as bridgeSetupMainButton, setupOrientation as bridgeSetupOrientation, setupSettingsButton as bridgeSetupSettingsButton, setupSwipeBehavior as bridgeSetupSwipeBehavior, shareMessage as bridgeShareMessage, shareToStory as bridgeShareToStory, switchInlineQuery as bridgeSwitchInlineQuery, triggerHapticFeedback as bridgeTriggerHapticFeedback, createIsViewportChanged, debug, getAppData, getPlatform, listener, sender, supportAddToHomeScreen, supportBiometricManager, supportCheckHomeScreen, supportClose, supportCloseScanQrPopup, supportDataSend, supportDownloadFile, supportExpand, supportIframeReady, supportIframeWillReload, supportInvokeCustomMethod, supportOpenInvoice, supportOpenLink, supportOpenPopup, supportOpenScanQrPopup, supportOpenTgLink, supportReadTextFromClipboard, supportReady, supportRequestContentSafeAreaInset, supportRequestEmojiStatus, supportRequestPhone, supportRequestSafeAreaInset, supportRequestTheme, supportRequestViewport, supportRequestWriteAccess, supportSessionStorageGet, supportSessionStorageSet, supportSetBackgroundColor, supportSetBottomBarColor, supportSetEmojiStatus, supportSetHeaderColor, supportSetupBackButton, supportSetupClosingBehavior, supportSetupFullScreen, supportSetupMainButton, supportSetupOrientation, supportSetupSettingsButton, supportSetupSwipeBehavior, supportShareMessage, supportShareToStory, supportSwitchInlineQuery, supportTriggerHapticFeedback };
package/solid/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("solid-js"),t=require("solid-js/store");const s=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)},o=(e,t)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:e,eventData:t}));else try{window.parent.postMessage(JSON.stringify({eventType:e,eventData:t}),"*")}catch(e){s("postMessage Iframe",10)}},r="web_app_invoke_custom_method",a="web_app_open_scan_qr_popup",n="web_app_read_text_from_clipboard",p="web_app_request_phone",i="web_app_close",d="web_app_close_scan_qr_popup",u="web_app_data_send",c="web_app_expand",_="iframe_ready",l="iframe_will_reload",x="web_app_open_invoice",g="web_app_open_link",m="web_app_open_popup",h="web_app_open_tg_link",S="web_app_ready",v="web_app_request_theme",b="web_app_request_viewport",w="web_app_request_write_access",f="web_app_set_background_color",y="web_app_set_header_color",q="web_app_set_bottom_bar_color",R="web_app_setup_back_button",B="web_app_setup_closing_behavior",k="web_app_setup_main_button",E="web_app_setup_settings_button",C="web_app_switch_inline_query",T="web_app_trigger_haptic_feedback",A="web_app_setup_swipe_behavior",M="web_app_share_to_story",P="web_app_request_safe_area",I="web_app_request_content_safe_area",O="web_app_request_fullscreen",F="web_app_exit_fullscreen",W="web_app_toggle_orientation_lock",L="web_app_add_to_home_screen",D="web_app_check_home_screen",j="web_app_send_prepared_message",H="web_app_set_emoji_status",G="web_app_request_emoji_status_access",Q="web_app_request_file_download",N="web_app_biometry_get_info",U="web_app_biometry_open_settings",V="web_app_biometry_request_access",$="web_app_biometry_request_auth",J="web_app_biometry_update_token";var z=(e=>(e[e.InvokeCustomMethod=r]="InvokeCustomMethod",e[e.OpenScanQrPopup=a]="OpenScanQrPopup",e[e.ReadTextFromClipboard=n]="ReadTextFromClipboard",e[e.RequestPhone=p]="RequestPhone",e[e.Close=i]="Close",e[e.CloseScanQrPopup=d]="CloseScanQrPopup",e[e.DataSend=u]="DataSend",e[e.Expand=c]="Expand",e[e.IframeReady=_]="IframeReady",e[e.IframeWillReload=l]="IframeWillReload",e[e.OpenInvoice=x]="OpenInvoice",e[e.OpenLink=g]="OpenLink",e[e.OpenPopup=m]="OpenPopup",e[e.OpenTgLink=h]="OpenTgLink",e[e.Ready=S]="Ready",e[e.RequestTheme=v]="RequestTheme",e[e.RequestViewport=b]="RequestViewport",e[e.RequestWriteAccess=w]="RequestWriteAccess",e[e.SetBackgroundColor=f]="SetBackgroundColor",e[e.SetHeaderColor=y]="SetHeaderColor",e[e.SetBottomBarColor=q]="SetBottomBarColor",e[e.SetupBackButton=R]="SetupBackButton",e[e.SetupClosingBehavior=B]="SetupClosingBehavior",e[e.SetupMainButton=k]="SetupMainButton",e[e.SetupSettingsButton=E]="SetupSettingsButton",e[e.SwitchInlineQuery=C]="SwitchInlineQuery",e[e.TriggerHapticFeedback=T]="TriggerHapticFeedback",e[e.SetupSwipeBehavior=A]="SetupSwipeBehavior",e[e.ShareToStory=M]="ShareToStory",e[e.RequestSafeArea=P]="RequestSafeArea",e[e.RequestContentSafeArea=I]="RequestContentSafeArea",e[e.RequestFullscreen=O]="RequestFullscreen",e[e.ExitFullscreen=F]="ExitFullscreen",e[e.ToggleOrientationLock=W]="ToggleOrientationLock",e[e.AddToHomeScreen=L]="AddToHomeScreen",e[e.CheckHomeScreen=D]="CheckHomeScreen",e[e.SendPreparedMessage=j]="SendPreparedMessage",e[e.SetEmojiStatus=H]="SetEmojiStatus",e[e.RequestEmojiStatusAccess=G]="RequestEmojiStatusAccess",e[e.RequestFileDownload=Q]="RequestFileDownload",e))(z||{});const K="clipboard_text_received",X="custom_method_invoked",Y="phone_requested",Z="popup_closed",ee="qr_text_received",te="scan_qr_popup_closed",se="theme_changed",oe="viewport_changed",re="write_access_requested",ae="prepared_message_sent",ne="prepared_message_failed",pe="emoji_status_set",ie="emoji_status_failed",de="emoji_status_access_requested",ue="file_download_requested",ce="biometry_auth_requested",_e="biometry_info_received",le="biometry_token_updated",xe="home_screen_checked",ge="web",me="phone",he="desktop",Se=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?me:["tdesktop","macos"].includes(t)?he:ge},ve="not_supported",be=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(Se())},we=()=>Math.random().toString(36).substring(3,9),fe=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),o=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((o<16?"0":"")+o.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},ye=e=>{const t=window.location.hash.slice(1),s=new URLSearchParams(t),o=JSON.parse(s.get("tgWebAppThemeParams")??""),r=e||o;for(var a of Object.keys(r)){var n=fe(r[a]);"string"==typeof n&&(r[a]=n)}return"#1c1c1d"==r?.bg_color&&r?.bg_color==r?.secondary_bg_color&&(r.secondary_bg_color="#2c2c2e"),r},qe=((e=new Map)=>({once:(t,s,o=e.get(t),r=e=>{s(e),o&&o.splice(o.indexOf(s)>>>0,1)})=>o?o.push(r):e.set(t,[r]),on:(t,s,o=e.get(t))=>o?o.push(s):e.set(t,[s]),off:(t,s,o=e.get(t))=>o&&s?o.splice(o.indexOf(s)>>>0,1):e.set(t,[]),emit:(t,s,o=e.get(t)||[])=>{for(const e of o)e(s)}}))();(()=>{function e(e,t){e===se&&(t.theme_params=ye(t.theme_params)),qe.emit(e,t),qe.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Re=(e,t)=>{qe.on(e,t)},Be=(e,t)=>{qe.off(e,t)},ke=(e,t)=>{qe.once(e,t)};var Ee=Object.freeze({__proto__:null,off:Be,on:Re,once:ke});const Ce=e=>Te()?(o(i,e),{status:!0}):(s(i,1),{status:ve}),Te=()=>be(0,[ge,he,me]),Ae=e=>Me()?(o(d,e),{status:!0}):(s(d,1),{status:ve}),Me=()=>be(6.4,[me]),Pe=e=>Ie()?(o(u,e),{status:!0}):(s(u,1),{status:ve}),Ie=()=>be(0,[ge,he,me]),Oe=e=>Fe()?(o(c,e),{status:!0}):(s(c,1),{status:ve}),Fe=()=>be(0,[me]),We=e=>Le()?(o(_,e),{status:!0}):(s(_,1),{status:ve}),Le=()=>be(0,[ge]),De=()=>je()?(o(_),{status:!0}):(s(_,1),{status:ve}),je=()=>be(0,[ge]),He=async e=>Ge()?(void 0===e.req_id&&(e.req_id=we()),o(r,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Be(X,o))};Re(X,o)}))):(s(r,1),{status:ve}),Ge=()=>be(6.9,[ge,he,me]),Qe=e=>Ne()?(o(x,e),{status:!0}):(s(x,1),{status:ve}),Ne=()=>be(6.1,[ge,he,me]),Ue=e=>Ve()?(o(g,e),{status:!0}):(s(g,1),{status:ve}),Ve=()=>be(6.4,[ge,he,me]),$e=async e=>Je()?(e.title.length>64&&s(m,3),e.message.length<1&&s(m,4),e.message.length>256&&s(m,5),e.buttons.length<1&&s(m,6),e.buttons.length>3&&s(m,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&s(m,8),o(m,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Be(Z,o)};Re(Z,o)}))):(s(m,1),{status:ve}),Je=()=>be(6.2,[ge,he,me]),ze=async e=>Ke()?(o(a,e),new Promise(((t,s)=>{ke(ee,(s=>{e.is_close&&Ae(),t({status:!0,data:s})})),ke(te,(()=>{t({status:"closed"})}))}))):(s(a,1),{status:ve}),Ke=()=>be(6.4,[me]),Xe=e=>{const t=function(e){try{return new URL(e)}catch(t){try{return new URL(e,"https://t.me")}catch(t){return e.startsWith("/")||(e="/"+e),new URL(e,"https://t.me")}}}(e.path_full);return e.path_full=t.pathname=t.search,Ye()?(o(h,e),{status:!0}):(s(h,1),{status:ve})},Ye=()=>be(7,[ge,he,me]);const Ze=async e=>et()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=we()),o(n,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),Be(K,o))};Re(K,o)}))):(s(n,1),{status:ve}),et=()=>be(6.4,[ge,he,me]),tt=e=>st()?(o(S,e),{status:!0}):(s(S,1),{status:ve}),st=()=>be(6.9,[ge,he,me]),ot=async()=>rt()?(o(p),new Promise(((e,t)=>{ke(Y,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(s(p,1),{status:ve}),rt=()=>be(6.9,[ge,he,me]),at=e=>nt()?(o(v,e),{status:!0}):(s(v,1),{status:ve}),nt=()=>be(0,[ge,he,me]),pt=e=>it()?(o(b,e),{status:!0}):(s(b,1),{status:ve}),it=()=>be(0,[ge,he,me]),dt=()=>new Promise(((e,t)=>{if(!ut())return s(w,1),void e({status:ve});const r=t=>{e({status:"allowed"===t.status}),Be(re,r)};Re(re,r),o(w)})),ut=()=>be(6.9,[ge,he,me]),ct=e=>_t()?(o(f,e),{status:!0}):(s(f,1),{status:ve}),_t=()=>be(6.1,[ge,he,me]),lt=e=>xt()?(o(y,e),{status:!0}):(s(y,1),{status:ve}),xt=()=>be(6.1,[ge,he,me]),gt=e=>mt()?(o(q,{color:e?.color||e?.color_key}),{status:!0}):(s(q,1),{status:ve}),mt=()=>be(7.1,[ge,he,me]),ht=e=>St()?(o(R,e),{status:!0}):(s(R,1),{status:ve}),St=()=>be(6.1,[ge,he,me]),vt=e=>bt()?(o(B,e),{status:!0}):(s(B,1),{status:ve}),bt=()=>be(6.2,[ge,he,me]),wt=e=>ft()?(o(k,e),{status:!0}):(s(k,1),{status:ve}),ft=()=>be(0,[ge,he,me]),yt=e=>qt()?(o(E,e),{status:!0}):(s(E,1),{status:ve}),qt=()=>be(6.1,[ge,he,me]),Rt=e=>Bt()?(e.query.length>256&&s(C,9),o(C,e),{status:!0}):(s(C,1),{status:ve}),Bt=()=>be(6.7,[ge,he,me]),kt=e=>Et()?(o(T,e),{status:!0}):(s(T,1),{status:ve}),Et=()=>be(6.1,[me]),Ct=e=>Tt()?(o(A,e),{status:!0}):(s(A,1),{status:ve}),Tt=()=>be(7.7,[ge,he,me]),At=()=>be(7.8,[ge,he,me]),Mt=()=>be(8,[he,me]),Pt=()=>be(8,[he,me]),It=()=>be(8,[ge,he,me]),Ot=()=>be(8,[ge,he,me]),Ft=()=>be(8,[ge,he,me]),Wt=()=>be(8,[ge,he,me]),Lt=()=>be(8,[ge,he,me]),Dt=()=>be(8,[ge,he,me]),jt=()=>be(8,[ge,he,me]),Ht=()=>be(8,[ge,he,me]),[Gt,Qt]=t.createStore({isInited:!1,isBiometricAvailable:!1,isAccessGranted:!1,isAccessRequested:!1,isBiometricTokenSaved:!1,biometricType:"unknown",deviceId:""}),Nt={isInited:Gt.isInited,isBiometricAvailable:Gt.isBiometricAvailable,isAccessGranted:Gt.isAccessGranted,isAccessRequested:Gt.isAccessRequested,isBiometricTokenSaved:Gt.isBiometricTokenSaved,biometricType:Gt.biometricType,deviceId:Gt.deviceId,init:()=>new Promise(((e,t)=>{if(!Ut())return s(N,1),void e({status:ve,data:void 0});const r=t=>{Vt(t),e({status:!0,data:Gt}),Be(_e,r)};Re(_e,r),o(N)})),requestAccess:e=>new Promise(((t,r)=>{if(!Ut())return s(V,1),void t({status:ve,data:void 0});if(e.reason&&e.reason.length>128)return console.error(`[${V}] Biometric reason is too long`,e.reason),void t({status:!1,data:void 0});const a=e=>{Vt(e),t({status:!0,data:Gt}),Be(_e,a)};Re(_e,a),o(V,e)})),authenticate:e=>new Promise(((t,r)=>{if(!Ut())return s($,1),void t({status:ve,data:void 0});if(!Gt.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void t({status:!1,data:void 0});if(!Gt.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void t({status:!1,data:void 0});const a=e=>{t({status:!0,data:e}),Be(ce,a)};Re(ce,a),o($,e)})),updateToken:e=>new Promise(((t,r)=>{if(!Ut())return s(J,1),void t({status:ve,data:void 0});if(!Gt.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void t({status:!1,data:void 0});if(!Gt.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void t({status:!1,data:void 0});const a=e=>{t({status:!0,data:e}),Be(le,a)};Re(le,a),o(J,e)})),openSettings:e=>Ut()?Gt.isBiometricAvailable?Gt.isAccessRequested?Gt.isAccessGranted?(console.warn("[Telegram.WebApp] Biometric access was granted by the user, no need to go to settings."),{status:!1}):(o(U,e),{status:!0}):(console.error("[Telegram.WebApp] Biometric access was not granted by the user."),{status:!1}):(console.error("[Telegram.WebApp] Biometrics is not available on this device."),{status:!1}):(s(U,1),{status:ve})},Ut=()=>be(7.2,[he,me,ge]),Vt=e=>{Qt(t.produce((t=>(e.available?(t.isBiometricAvailable=!0,t.biometricType=e.type||"",e.access_requested?(t.isAccessRequested=!0,t.isAccessGranted=!!e.access_granted,t.isBiometricTokenSaved=!!e.token_saved):(t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1)):(t.isBiometricAvailable=!1,t.biometricType="unknown",t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1),t.deviceId=e.device_id||"",t.isInited=!0,t))))},$t=e=>{Qt(t.produce((t=>(t.isBiometricAvailable&&t.isAccessRequested&&("updated"===e.status?t.isBiometricTokenSaved=!0:"removed"===e.status&&(t.isBiometricTokenSaved=!1)),t))))};e.onMount((()=>{Re(_e,Vt),Re(le,$t),e.onCleanup((()=>{Be(_e,Vt),Be(le,$t)}))}));const Jt=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void s("getInitData",2);const o=new URLSearchParams(t);let r={};return o.forEach(((e,t)=>{if(r[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{r[t]=JSON.parse(e)}catch{}})),r},zt=e.createContext({viewport:void 0,theme:void 0,init:void 0});exports.ContextTwa=zt,exports.EventAccelerometerChanged="accelerometer_changed",exports.EventAccelerometerFailed="accelerometer_failed",exports.EventAccelerometerStarted="accelerometer_started",exports.EventAccelerometerStopped="accelerometer_stopped",exports.EventBackButtonPressed="back_button_pressed",exports.EventBiometryAuthRequested=ce,exports.EventBiometryInfoReceived=_e,exports.EventBiometryTokenUpdated=le,exports.EventClipboardTextReceived=K,exports.EventContentSafeAreaChanged="content_safe_area_changed",exports.EventCustomMethodInvoked=X,exports.EventDeviceOrientationChanged="device_orientation_changed",exports.EventDeviceOrientationFailed="device_orientation_failed",exports.EventDeviceOrientationStarted="device_orientation_started",exports.EventDeviceOrientationStopped="device_orientation_stopped",exports.EventEmojiStatusAccessRequested=de,exports.EventEmojiStatusFailed=ie,exports.EventEmojiStatusSet=pe,exports.EventFileDownloadRequested=ue,exports.EventFullscreenChanged="fullscreen_changed",exports.EventFullscreenFailed="fullscreen_failed",exports.EventGyroscopeChanged="gyroscope_changed",exports.EventGyroscopeFailed="gyroscope_failed",exports.EventGyroscopeStarted="gyroscope_started",exports.EventGyroscopeStopped="gyroscope_stopped",exports.EventHomeScreenAdded="home_screen_added",exports.EventHomeScreenChecked=xe,exports.EventHomeScreenFailed="home_screen_failed",exports.EventInvoiceClosed="invoice_closed",exports.EventLocationChecked="location_checked",exports.EventLocationRequested="location_requested",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=Y,exports.EventPopupClosed=Z,exports.EventPreparedMessageFailed=ne,exports.EventPreparedMessageSent=ae,exports.EventQrTextReceived=ee,exports.EventReloadIframe="reload_iframe",exports.EventSafeAreaChanged="safe_area_changed",exports.EventScanQrPopupClosed=te,exports.EventSecondaryButtonPressed="secondary_button_pressed",exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=se,exports.EventViewportChanged=oe,exports.EventVisibilityChanged="visibility_changed",exports.EventWriteAccessRequested=re,exports.Method=z,exports.MethodAddToHomeScreen=L,exports.MethodCheckHomeScreen=D,exports.MethodClose=i,exports.MethodCloseScanQrPopup=d,exports.MethodDataSend=u,exports.MethodExitFullscreen=F,exports.MethodExpand=c,exports.MethodIframeReady=_,exports.MethodIframeWillReload=l,exports.MethodInvokeCustomMethod=r,exports.MethodOpenInvoice=x,exports.MethodOpenLink=g,exports.MethodOpenPopup=m,exports.MethodOpenScanQrPopup=a,exports.MethodOpenTgLink=h,exports.MethodReadTextFromClipboard=n,exports.MethodReady=S,exports.MethodRequestContentSafeArea=I,exports.MethodRequestEmojiStatusAccess=G,exports.MethodRequestFileDownload=Q,exports.MethodRequestFullscreen=O,exports.MethodRequestPhone=p,exports.MethodRequestSafeArea=P,exports.MethodRequestTheme=v,exports.MethodRequestViewport=b,exports.MethodRequestWriteAccess=w,exports.MethodSendPreparedMessage=j,exports.MethodSetBackgroundColor=f,exports.MethodSetBottomBarColor=q,exports.MethodSetEmojiStatus=H,exports.MethodSetHeaderColor=y,exports.MethodSetupBackButton=R,exports.MethodSetupClosingBehavior=B,exports.MethodSetupMainButton=k,exports.MethodSetupSettingsButton=E,exports.MethodSetupSwipeBehavior=A,exports.MethodShareToStory=M,exports.MethodSwitchInlineQuery=C,exports.MethodToggleOrientationLock=W,exports.MethodTriggerHapticFeedback=T,exports.NOT_SUPPORTED=ve,exports.ProviderTWA=s=>{const[o,r]=t.createStore({viewport:void 0,theme:void 0,init:void 0});return e.createEffect((()=>{const t=()=>{r("init",Jt())};t();const s=e=>{t(),r("viewport",e)};Re(oe,s),pt();const o=e=>{t(),r("theme",e)};return Re(se,o),pt(),e.onCleanup((()=>{Be(oe,s),Be(se,o)})),()=>{Be(oe,s),Be(se,o)}})),zt.Provider({value:o,children:s.children})},exports.TG_DESKTOP=he,exports.TG_PHONE=me,exports.TG_WEB=ge,exports.bridgeAddToHomeScreen=()=>Pt()?(o(L),{status:!0}):(s(L,1),{status:ve}),exports.bridgeBiometricManager=Nt,exports.bridgeCheckHomeScreen=async e=>new Promise(((t,r)=>{if(!Mt())return s(D,1),void t({status:ve,data:void 0});const a=e=>{e.status=e.status||"unknown",t({status:!0,data:e}),Be(xe,a)};Re(xe,a),o(D,e)})),exports.bridgeClose=Ce,exports.bridgeCloseScanQrPopup=Ae,exports.bridgeDataSend=Pe,exports.bridgeDownloadFile=async e=>Ht()?new Promise(((t,s)=>{ke(ue,(function(e){t({status:"downloading"===e.status})})),o(Q,e)})):(s(Q,1),{status:ve}),exports.bridgeExpand=Oe,exports.bridgeGetInitData=Jt,exports.bridgeGetThemeParams=ye,exports.bridgeIframeReady=We,exports.bridgeIframeWillReload=De,exports.bridgeInvokeCustomMethod=He,exports.bridgeOpenInvoice=Qe,exports.bridgeOpenLink=Ue,exports.bridgeOpenPopup=$e,exports.bridgeOpenScanQrPopup=ze,exports.bridgeOpenTgLink=Xe,exports.bridgeReadTextFromClipboard=Ze,exports.bridgeReady=tt,exports.bridgeRequestContentSafeAreaInset=()=>Ot()?(o(I),{status:!0}):(s(I,1),{status:ve}),exports.bridgeRequestEmojiStatus=async e=>Lt()?new Promise(((t,s)=>{ke(de,(function(e){t({status:"allowed"===e.status})})),o(G,e)})):(s(G,1),{status:ve}),exports.bridgeRequestPhone=ot,exports.bridgeRequestSafeAreaInset=()=>It()?(o(P),{status:!0}):(s(P,1),{status:ve}),exports.bridgeRequestTheme=at,exports.bridgeRequestViewport=pt,exports.bridgeRequestWriteAccess=dt,exports.bridgeSend=o,exports.bridgeSessionStorageGet=({key:e})=>{try{return{is_json:!0,value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(t){return{is_json:!1,value:window.sessionStorage.getItem("__telegram__"+e)??"",status:!0}}},exports.bridgeSessionStorageSet=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(s){return window.sessionStorage.setItem("__telegram__"+e,t),{status:!0}}},exports.bridgeSetBackgroundColor=ct,exports.bridgeSetBottomBarColor=gt,exports.bridgeSetEmojiStatus=async e=>Dt()?new Promise(((t,s)=>{ke(pe,(()=>t({status:!0}))),ke(ie,(()=>t({status:!1}))),o(H,e)})):(s(H,1),{status:ve}),exports.bridgeSetHeaderColor=lt,exports.bridgeSetupBackButton=ht,exports.bridgeSetupClosingBehavior=vt,exports.bridgeSetupFullScreen=e=>{const t=e?.is_full||!1;return Ft()?(o(t?O:F),{status:!0}):(s(t?O:F,1),{status:ve})},exports.bridgeSetupMainButton=wt,exports.bridgeSetupOrientation=e=>Wt()?(o(W,e),{status:!0}):(s(W,1),{status:ve}),exports.bridgeSetupSettingsButton=yt,exports.bridgeSetupSwipeBehavior=Ct,exports.bridgeShareMessage=async e=>jt()?new Promise(((t,s)=>{ke(ae,(()=>t({status:!0}))),ke(ne,(()=>t({status:!1}))),o(j,e)})):(s(j,1),{status:ve}),exports.bridgeShareToStory=e=>At()?e?.text&&e?.text.length>2048?(console.warn(`[@apiteam/twa-bridge](${M}) | Text is too long`),{status:!1,error_id:1}):e?.widget_link?.name&&e?.widget_link.name.length>48?(console.warn(`[@apiteam/twa-bridge](${M}) | Link name is too long`),{status:!1,error_id:2}):(o(M,e),{status:!0}):(s(M,1),{status:ve}),exports.bridgeSwitchInlineQuery=Rt,exports.bridgeTriggerHapticFeedback=kt,exports.createIsViewportChanged=()=>{const[t,s]=e.createSignal({height:0,is_expanded:!1,is_state_stable:!1}),r=e=>s(e);return e.onMount((()=>{Re(oe,r),o(b)})),e.onCleanup((()=>{Be(oe,r)})),t},exports.debug=s,exports.getAppData=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},exports.getPlatform=Se,exports.listener=Ee,exports.sender=o,exports.supportAddToHomeScreen=Pt,exports.supportBiometricManager=Ut,exports.supportCheckHomeScreen=Mt,exports.supportClose=Te,exports.supportCloseScanQrPopup=Me,exports.supportDataSend=Ie,exports.supportDownloadFile=Ht,exports.supportExpand=Fe,exports.supportIframeReady=Le,exports.supportIframeWillReload=je,exports.supportInvokeCustomMethod=Ge,exports.supportOpenInvoice=Ne,exports.supportOpenLink=Ve,exports.supportOpenPopup=Je,exports.supportOpenScanQrPopup=Ke,exports.supportOpenTgLink=Ye,exports.supportReadTextFromClipboard=et,exports.supportReady=st,exports.supportRequestContentSafeAreaInset=Ot,exports.supportRequestEmojiStatus=Lt,exports.supportRequestPhone=rt,exports.supportRequestSafeAreaInset=It,exports.supportRequestTheme=nt,exports.supportRequestViewport=it,exports.supportRequestWriteAccess=ut,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=_t,exports.supportSetBottomBarColor=mt,exports.supportSetEmojiStatus=Dt,exports.supportSetHeaderColor=xt,exports.supportSetupBackButton=St,exports.supportSetupClosingBehavior=bt,exports.supportSetupFullScreen=Ft,exports.supportSetupMainButton=ft,exports.supportSetupOrientation=Wt,exports.supportSetupSettingsButton=qt,exports.supportSetupSwipeBehavior=Tt,exports.supportShareMessage=jt,exports.supportShareToStory=At,exports.supportSwitchInlineQuery=Bt,exports.supportTriggerHapticFeedback=Et;
1
+ "use strict";var e=require("solid-js"),t=require("solid-js/store");const s=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)},o=(e,t)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:e,eventData:t}));else try{window.parent.postMessage(JSON.stringify({eventType:e,eventData:t}),"*")}catch(e){s("postMessage Iframe",10)}},r="web_app_invoke_custom_method",a="web_app_open_scan_qr_popup",n="web_app_read_text_from_clipboard",p="web_app_request_phone",i="web_app_close",d="web_app_close_scan_qr_popup",u="web_app_data_send",c="web_app_expand",_="iframe_ready",l="iframe_will_reload",x="web_app_open_invoice",g="web_app_open_link",m="web_app_open_popup",h="web_app_open_tg_link",S="web_app_ready",b="web_app_request_theme",v="web_app_request_viewport",w="web_app_request_write_access",f="web_app_set_background_color",y="web_app_set_header_color",q="web_app_set_bottom_bar_color",R="web_app_setup_back_button",B="web_app_setup_closing_behavior",k="web_app_setup_main_button",M="web_app_setup_settings_button",E="web_app_switch_inline_query",A="web_app_trigger_haptic_feedback",C="web_app_setup_swipe_behavior",T="web_app_share_to_story",P="web_app_request_safe_area",O="web_app_request_content_safe_area",I="web_app_request_fullscreen",F="web_app_exit_fullscreen",L="web_app_toggle_orientation_lock",W="web_app_add_to_home_screen",D="web_app_check_home_screen",G="web_app_send_prepared_message",j="web_app_set_emoji_status",H="web_app_request_emoji_status_access",Q="web_app_request_file_download",N="web_app_biometry_get_info",U="web_app_biometry_open_settings",V="web_app_biometry_request_access",$="web_app_biometry_request_auth",J="web_app_biometry_update_token";var z=(e=>(e[e.InvokeCustomMethod=r]="InvokeCustomMethod",e[e.OpenScanQrPopup=a]="OpenScanQrPopup",e[e.ReadTextFromClipboard=n]="ReadTextFromClipboard",e[e.RequestPhone=p]="RequestPhone",e[e.Close=i]="Close",e[e.CloseScanQrPopup=d]="CloseScanQrPopup",e[e.DataSend=u]="DataSend",e[e.Expand=c]="Expand",e[e.IframeReady=_]="IframeReady",e[e.IframeWillReload=l]="IframeWillReload",e[e.OpenInvoice=x]="OpenInvoice",e[e.OpenLink=g]="OpenLink",e[e.OpenPopup=m]="OpenPopup",e[e.OpenTgLink=h]="OpenTgLink",e[e.Ready=S]="Ready",e[e.RequestTheme=b]="RequestTheme",e[e.RequestViewport=v]="RequestViewport",e[e.RequestWriteAccess=w]="RequestWriteAccess",e[e.SetBackgroundColor=f]="SetBackgroundColor",e[e.SetHeaderColor=y]="SetHeaderColor",e[e.SetBottomBarColor=q]="SetBottomBarColor",e[e.SetupBackButton=R]="SetupBackButton",e[e.SetupClosingBehavior=B]="SetupClosingBehavior",e[e.SetupMainButton=k]="SetupMainButton",e[e.SetupSettingsButton=M]="SetupSettingsButton",e[e.SwitchInlineQuery=E]="SwitchInlineQuery",e[e.TriggerHapticFeedback=A]="TriggerHapticFeedback",e[e.SetupSwipeBehavior=C]="SetupSwipeBehavior",e[e.ShareToStory=T]="ShareToStory",e[e.RequestSafeArea=P]="RequestSafeArea",e[e.RequestContentSafeArea=O]="RequestContentSafeArea",e[e.RequestFullscreen=I]="RequestFullscreen",e[e.ExitFullscreen=F]="ExitFullscreen",e[e.ToggleOrientationLock=L]="ToggleOrientationLock",e[e.AddToHomeScreen=W]="AddToHomeScreen",e[e.CheckHomeScreen=D]="CheckHomeScreen",e[e.SendPreparedMessage=G]="SendPreparedMessage",e[e.SetEmojiStatus=j]="SetEmojiStatus",e[e.RequestEmojiStatusAccess=H]="RequestEmojiStatusAccess",e[e.RequestFileDownload=Q]="RequestFileDownload",e))(z||{});const K="clipboard_text_received",X="custom_method_invoked",Y="phone_requested",Z="popup_closed",ee="qr_text_received",te="scan_qr_popup_closed",se="theme_changed",oe="viewport_changed",re="write_access_requested",ae="prepared_message_sent",ne="prepared_message_failed",pe="emoji_status_set",ie="emoji_status_failed",de="emoji_status_access_requested",ue="file_download_requested",ce="biometry_auth_requested",_e="biometry_info_received",le="biometry_token_updated",xe="home_screen_checked",ge="web",me="phone",he="desktop",Se=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?me:["tdesktop","macos"].includes(t)?he:ge},be="not_supported",ve=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(Se())},we=()=>Math.random().toString(36).substring(3,9),fe=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),o=parseInt(t[2]),r=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((o<16?"0":"")+o.toString(16))+((r<16?"0":"")+r.toString(16))}return!1},ye=e=>{const t=window.location.hash.slice(1),s=new URLSearchParams(t),o=JSON.parse(s.get("tgWebAppThemeParams")??""),r=e||o;for(var a of Object.keys(r)){var n=fe(r[a]);"string"==typeof n&&(r[a]=n)}return"#1c1c1d"==r?.bg_color&&r?.bg_color==r?.secondary_bg_color&&(r.secondary_bg_color="#2c2c2e"),r},qe=((e=new Map)=>({once:(t,s,o=e.get(t),r=e=>{s(e),o&&o.splice(o.indexOf(s)>>>0,1)})=>o?o.push(r):e.set(t,[r]),on:(t,s,o=e.get(t))=>o?o.push(s):e.set(t,[s]),off:(t,s,o=e.get(t))=>o&&s?o.splice(o.indexOf(s)>>>0,1):e.set(t,[]),emit:(t,s,o=e.get(t)||[])=>{for(const e of o)e(s)}}))();(()=>{function e(e,t){e===se&&(t.theme_params=ye(t.theme_params)),qe.emit(e,t),qe.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const Re=(e,t)=>{qe.on(e,t)},Be=(e,t)=>{qe.off(e,t)},ke=(e,t)=>{qe.once(e,t)};var Me=Object.freeze({__proto__:null,off:Be,on:Re,once:ke});const Ee=e=>Ae()?(o(i,e),{status:!0}):(s(i,1),{status:be}),Ae=()=>ve(0,[ge,he,me]),Ce=e=>Te()?(o(d,e),{status:!0}):(s(d,1),{status:be}),Te=()=>ve(6.4,[me]),Pe=e=>Oe()?(o(u,e),{status:!0}):(s(u,1),{status:be}),Oe=()=>ve(0,[ge,he,me]),Ie=e=>Fe()?(o(c,e),{status:!0}):(s(c,1),{status:be}),Fe=()=>ve(0,[me]),Le=e=>We()?(o(_,e),{status:!0}):(s(_,1),{status:be}),We=()=>ve(0,[ge]),De=()=>Ge()?(o(_),{status:!0}):(s(_,1),{status:be}),Ge=()=>ve(0,[ge]),je=async e=>He()?(void 0===e.req_id&&(e.req_id=we()),o(r,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),Be(X,o))};Re(X,o)}))):(s(r,1),{status:be}),He=()=>ve(6.9,[ge,he,me]),Qe=e=>Ne()?(o(x,e),{status:!0}):(s(x,1),{status:be}),Ne=()=>ve(6.1,[ge,he,me]),Ue=e=>Ve()?(o(g,e),{status:!0}):(s(g,1),{status:be}),Ve=()=>ve(6.4,[ge,he,me]),$e=async e=>Je()?(e.title.length>64&&s(m,3),e.message.length<1&&s(m,4),e.message.length>256&&s(m,5),e.buttons.length<1&&s(m,6),e.buttons.length>3&&s(m,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&s(m,8),o(m,e),new Promise(((t,s)=>{const o=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),Be(Z,o)};Re(Z,o)}))):(s(m,1),{status:be}),Je=()=>ve(6.2,[ge,he,me]),ze=async e=>Ke()?(o(a,e),new Promise(((t,s)=>{ke(ee,(s=>{e.is_close&&Ce(),t({status:!0,data:s})})),ke(te,(()=>{t({status:"closed"})}))}))):(s(a,1),{status:be}),Ke=()=>ve(6.4,[me]),Xe=e=>{const t=function(e){try{return new URL(e)}catch(t){try{return new URL(e,"https://t.me")}catch(t){return e.startsWith("/")||(e="/"+e),new URL(e,"https://t.me")}}}(e.path_full);return e.path_full=t.pathname=t.search,Ye()?(o(h,e),{status:!0}):(s(h,1),{status:be})},Ye=()=>ve(7,[ge,he,me]);const Ze=async e=>et()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=we()),o(n,e),new Promise(((t,s)=>{const o=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),Be(K,o))};Re(K,o)}))):(s(n,1),{status:be}),et=()=>ve(6.4,[ge,he,me]),tt=e=>st()?(o(S,e),{status:!0}):(s(S,1),{status:be}),st=()=>ve(6.9,[ge,he,me]),ot=async()=>rt()?(o(p),new Promise(((e,t)=>{ke(Y,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(s(p,1),{status:be}),rt=()=>ve(6.9,[ge,he,me]),at=e=>nt()?(o(b,e),{status:!0}):(s(b,1),{status:be}),nt=()=>ve(0,[ge,he,me]),pt=e=>it()?(o(v,e),{status:!0}):(s(v,1),{status:be}),it=()=>ve(0,[ge,he,me]),dt=()=>new Promise(((e,t)=>{if(!ut())return s(w,1),void e({status:be});const r=t=>{e({status:"allowed"===t.status}),Be(re,r)};Re(re,r),o(w)})),ut=()=>ve(6.9,[ge,he,me]),ct=e=>_t()?(o(f,e),{status:!0}):(s(f,1),{status:be}),_t=()=>ve(6.1,[ge,he,me]),lt=e=>xt()?(o(y,e),{status:!0}):(s(y,1),{status:be}),xt=()=>ve(6.1,[ge,he,me]),gt=e=>mt()?(o(q,{color:e?.color||e?.color_key}),{status:!0}):(s(q,1),{status:be}),mt=()=>ve(7.1,[ge,he,me]),ht=e=>St()?(o(R,e),{status:!0}):(s(R,1),{status:be}),St=()=>ve(6.1,[ge,he,me]),bt=e=>vt()?(o(B,e),{status:!0}):(s(B,1),{status:be}),vt=()=>ve(6.2,[ge,he,me]),wt=e=>ft()?(o(k,e),{status:!0}):(s(k,1),{status:be}),ft=()=>ve(0,[ge,he,me]),yt=e=>qt()?(o(M,e),{status:!0}):(s(M,1),{status:be}),qt=()=>ve(6.1,[ge,he,me]),Rt=e=>Bt()?(e.query.length>256&&s(E,9),o(E,e),{status:!0}):(s(E,1),{status:be}),Bt=()=>ve(6.7,[ge,he,me]),kt=e=>Mt()?(o(A,e),{status:!0}):(s(A,1),{status:be}),Mt=()=>ve(6.1,[me]),Et=e=>At()?(o(C,e),{status:!0}):(s(C,1),{status:be}),At=()=>ve(7.7,[ge,he,me]),Ct=()=>ve(7.8,[ge,he,me]),Tt=()=>ve(8,[he,me]),Pt=()=>ve(8,[he,me]),Ot=()=>ve(8,[ge,he,me]),It=()=>ve(8,[ge,he,me]),Ft=()=>ve(8,[ge,he,me]),Lt=()=>ve(8,[ge,he,me]),Wt=()=>ve(8,[ge,he,me]),Dt=()=>ve(8,[ge,he,me]),Gt=()=>ve(8,[ge,he,me]),jt=()=>ve(8,[ge,he,me]),[Ht,Qt]=t.createStore({isInited:!1,isBiometricAvailable:!1,isAccessGranted:!1,isAccessRequested:!1,isBiometricTokenSaved:!1,biometricType:"unknown",deviceId:""}),Nt={get isInited(){return Ht.isInited},get isBiometricAvailable(){return Ht.isBiometricAvailable},get isAccessGranted(){return Ht.isAccessGranted},get isAccessRequested(){return Ht.isAccessRequested},get isBiometricTokenSaved(){return Ht.isBiometricTokenSaved},get biometricType(){return Ht.biometricType},get deviceId(){return Ht.deviceId},init:()=>new Promise(((e,t)=>{if(!Ut())return s(N,1),void e({status:be,data:void 0});const r=t=>{Vt(t),e({status:!0,data:Ht}),Be(_e,r)};Re(_e,r),o(N)})),requestAccess:e=>new Promise(((t,r)=>{if(!Ut())return s(V,1),void t({status:be,data:void 0});if(e.reason&&e.reason.length>128)return console.error(`[${V}] Biometric reason is too long`,e.reason),void t({status:!1,data:void 0});const a=e=>{Vt(e),t({status:!0,data:Ht}),Be(_e,a)};Re(_e,a),o(V,e)})),authenticate:e=>new Promise(((t,r)=>{if(!Ut())return s($,1),void t({status:be,data:void 0});if(!Ht.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void t({status:!1,data:void 0});if(!Ht.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void t({status:!1,data:void 0});const a=e=>{t({status:!0,data:e}),Be(ce,a)};Re(ce,a),o($,e)})),updateToken:e=>new Promise(((t,r)=>{if(!Ut())return s(J,1),void t({status:be,data:void 0});if(!Ht.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void t({status:!1,data:void 0});if(!Ht.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void t({status:!1,data:void 0});const a=e=>{t({status:!0,data:e}),Be(le,a)};Re(le,a),o(J,e)})),openSettings:e=>Ut()?Ht.isBiometricAvailable?Ht.isAccessRequested?Ht.isAccessGranted?(console.warn("[Telegram.WebApp] Biometric access was granted by the user, no need to go to settings."),{status:!1}):(o(U,e),{status:!0}):(console.error("[Telegram.WebApp] Biometric access was not granted by the user."),{status:!1}):(console.error("[Telegram.WebApp] Biometrics is not available on this device."),{status:!1}):(s(U,1),{status:be})},Ut=()=>ve(7.2,[he,me,ge]),Vt=e=>{Qt(t.produce((t=>(e.available?(t.isBiometricAvailable=!0,t.biometricType=e.type||"",e.access_requested?(t.isAccessRequested=!0,t.isAccessGranted=!!e.access_granted,t.isBiometricTokenSaved=!!e.token_saved):(t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1)):(t.isBiometricAvailable=!1,t.biometricType="unknown",t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1),t.deviceId=e.device_id||"",t.isInited=!0,t))))},$t=e=>{Qt(t.produce((t=>(t.isBiometricAvailable&&t.isAccessRequested&&("updated"===e.status?t.isBiometricTokenSaved=!0:"removed"===e.status&&(t.isBiometricTokenSaved=!1)),t))))};e.onMount((()=>{Re(_e,Vt),Re(le,$t),e.onCleanup((()=>{Be(_e,Vt),Be(le,$t)}))}));const Jt=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void s("getInitData",2);const o=new URLSearchParams(t);let r={};return o.forEach(((e,t)=>{if(r[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{r[t]=JSON.parse(e)}catch{}})),r},zt=e.createContext({viewport:void 0,theme:void 0,init:void 0});exports.ContextTwa=zt,exports.EventAccelerometerChanged="accelerometer_changed",exports.EventAccelerometerFailed="accelerometer_failed",exports.EventAccelerometerStarted="accelerometer_started",exports.EventAccelerometerStopped="accelerometer_stopped",exports.EventBackButtonPressed="back_button_pressed",exports.EventBiometryAuthRequested=ce,exports.EventBiometryInfoReceived=_e,exports.EventBiometryTokenUpdated=le,exports.EventClipboardTextReceived=K,exports.EventContentSafeAreaChanged="content_safe_area_changed",exports.EventCustomMethodInvoked=X,exports.EventDeviceOrientationChanged="device_orientation_changed",exports.EventDeviceOrientationFailed="device_orientation_failed",exports.EventDeviceOrientationStarted="device_orientation_started",exports.EventDeviceOrientationStopped="device_orientation_stopped",exports.EventEmojiStatusAccessRequested=de,exports.EventEmojiStatusFailed=ie,exports.EventEmojiStatusSet=pe,exports.EventFileDownloadRequested=ue,exports.EventFullscreenChanged="fullscreen_changed",exports.EventFullscreenFailed="fullscreen_failed",exports.EventGyroscopeChanged="gyroscope_changed",exports.EventGyroscopeFailed="gyroscope_failed",exports.EventGyroscopeStarted="gyroscope_started",exports.EventGyroscopeStopped="gyroscope_stopped",exports.EventHomeScreenAdded="home_screen_added",exports.EventHomeScreenChecked=xe,exports.EventHomeScreenFailed="home_screen_failed",exports.EventInvoiceClosed="invoice_closed",exports.EventLocationChecked="location_checked",exports.EventLocationRequested="location_requested",exports.EventMainButtonPressed="main_button_pressed",exports.EventPhoneRequested=Y,exports.EventPopupClosed=Z,exports.EventPreparedMessageFailed=ne,exports.EventPreparedMessageSent=ae,exports.EventQrTextReceived=ee,exports.EventReloadIframe="reload_iframe",exports.EventSafeAreaChanged="safe_area_changed",exports.EventScanQrPopupClosed=te,exports.EventSecondaryButtonPressed="secondary_button_pressed",exports.EventSetCustomStyle="set_custom_style",exports.EventSettingsButtonPressed="settings_button_pressed",exports.EventThemeChanged=se,exports.EventViewportChanged=oe,exports.EventVisibilityChanged="visibility_changed",exports.EventWriteAccessRequested=re,exports.Method=z,exports.MethodAddToHomeScreen=W,exports.MethodBiometryGetInfo=N,exports.MethodBiometryOpenSettings=U,exports.MethodBiometryRequestAccess=V,exports.MethodBiometryRequestAuth=$,exports.MethodBiometryUpdateToken=J,exports.MethodCheckHomeScreen=D,exports.MethodCheckLocation="web_app_check_location",exports.MethodClose=i,exports.MethodCloseScanQrPopup=d,exports.MethodDataSend=u,exports.MethodExitFullscreen=F,exports.MethodExpand=c,exports.MethodIframeReady=_,exports.MethodIframeWillReload=l,exports.MethodInvokeCustomMethod=r,exports.MethodOpenInvoice=x,exports.MethodOpenLink=g,exports.MethodOpenLocationSettings="web_app_open_location_settings",exports.MethodOpenPopup=m,exports.MethodOpenScanQrPopup=a,exports.MethodOpenTgLink=h,exports.MethodReadTextFromClipboard=n,exports.MethodReady=S,exports.MethodRequestContentSafeArea=O,exports.MethodRequestEmojiStatusAccess=H,exports.MethodRequestFileDownload=Q,exports.MethodRequestFullscreen=I,exports.MethodRequestLocation="web_app_request_location",exports.MethodRequestPhone=p,exports.MethodRequestSafeArea=P,exports.MethodRequestTheme=b,exports.MethodRequestViewport=v,exports.MethodRequestWriteAccess=w,exports.MethodSendPreparedMessage=G,exports.MethodSetBackgroundColor=f,exports.MethodSetBottomBarColor=q,exports.MethodSetEmojiStatus=j,exports.MethodSetHeaderColor=y,exports.MethodSetupBackButton=R,exports.MethodSetupClosingBehavior=B,exports.MethodSetupMainButton=k,exports.MethodSetupSecondaryButton="web_app_setup_secondary_button",exports.MethodSetupSettingsButton=M,exports.MethodSetupSwipeBehavior=C,exports.MethodShareToStory=T,exports.MethodStartAccelerometer="web_app_start_accelerometer",exports.MethodStartDeviceOrientation="web_app_start_device_orientation",exports.MethodStartGyroscope="web_app_start_gyroscope",exports.MethodStopAccelerometer="web_app_stop_accelerometer",exports.MethodStopDeviceOrientation="web_app_stop_device_orientation",exports.MethodStopGyroscope="web_app_stop_gyroscope",exports.MethodSwitchInlineQuery=E,exports.MethodToggleOrientationLock=L,exports.MethodTriggerHapticFeedback=A,exports.NOT_SUPPORTED=be,exports.ProviderTWA=s=>{const[o,r]=t.createStore({viewport:void 0,theme:void 0,init:void 0});return e.createEffect((()=>{const t=()=>{r("init",Jt())};t();const s=e=>{t(),r("viewport",e)};Re(oe,s),pt();const o=e=>{t(),r("theme",e)};return Re(se,o),pt(),e.onCleanup((()=>{Be(oe,s),Be(se,o)})),()=>{Be(oe,s),Be(se,o)}})),zt.Provider({value:o,children:s.children})},exports.TG_DESKTOP=he,exports.TG_PHONE=me,exports.TG_WEB=ge,exports.bridgeAddToHomeScreen=()=>Pt()?(o(W),{status:!0}):(s(W,1),{status:be}),exports.bridgeBiometricManager=Nt,exports.bridgeCheckHomeScreen=async e=>new Promise(((t,r)=>{if(!Tt())return s(D,1),void t({status:be,data:void 0});const a=e=>{e.status=e.status||"unknown",t({status:!0,data:e}),Be(xe,a)};Re(xe,a),o(D,e)})),exports.bridgeClose=Ee,exports.bridgeCloseScanQrPopup=Ce,exports.bridgeDataSend=Pe,exports.bridgeDownloadFile=async e=>jt()?new Promise(((t,s)=>{ke(ue,(function(e){t({status:"downloading"===e.status})})),o(Q,e)})):(s(Q,1),{status:be}),exports.bridgeExpand=Ie,exports.bridgeGetInitData=Jt,exports.bridgeGetThemeParams=ye,exports.bridgeIframeReady=Le,exports.bridgeIframeWillReload=De,exports.bridgeInvokeCustomMethod=je,exports.bridgeOpenInvoice=Qe,exports.bridgeOpenLink=Ue,exports.bridgeOpenPopup=$e,exports.bridgeOpenScanQrPopup=ze,exports.bridgeOpenTgLink=Xe,exports.bridgeReadTextFromClipboard=Ze,exports.bridgeReady=tt,exports.bridgeRequestContentSafeAreaInset=()=>It()?(o(O),{status:!0}):(s(O,1),{status:be}),exports.bridgeRequestEmojiStatus=async e=>Wt()?new Promise(((t,s)=>{ke(de,(function(e){t({status:"allowed"===e.status})})),o(H,e)})):(s(H,1),{status:be}),exports.bridgeRequestPhone=ot,exports.bridgeRequestSafeAreaInset=()=>Ot()?(o(P),{status:!0}):(s(P,1),{status:be}),exports.bridgeRequestTheme=at,exports.bridgeRequestViewport=pt,exports.bridgeRequestWriteAccess=dt,exports.bridgeSend=o,exports.bridgeSessionStorageGet=({key:e})=>{try{return{is_json:!0,value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(t){return{is_json:!1,value:window.sessionStorage.getItem("__telegram__"+e)??"",status:!0}}},exports.bridgeSessionStorageSet=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(s){return window.sessionStorage.setItem("__telegram__"+e,t),{status:!0}}},exports.bridgeSetBackgroundColor=ct,exports.bridgeSetBottomBarColor=gt,exports.bridgeSetEmojiStatus=async e=>Dt()?new Promise(((t,s)=>{ke(pe,(()=>t({status:!0}))),ke(ie,(()=>t({status:!1}))),o(j,e)})):(s(j,1),{status:be}),exports.bridgeSetHeaderColor=lt,exports.bridgeSetupBackButton=ht,exports.bridgeSetupClosingBehavior=bt,exports.bridgeSetupFullScreen=e=>{const t=e?.is_full||!1;return Ft()?(o(t?I:F),{status:!0}):(s(t?I:F,1),{status:be})},exports.bridgeSetupMainButton=wt,exports.bridgeSetupOrientation=e=>Lt()?(o(L,e),{status:!0}):(s(L,1),{status:be}),exports.bridgeSetupSettingsButton=yt,exports.bridgeSetupSwipeBehavior=Et,exports.bridgeShareMessage=async e=>Gt()?new Promise(((t,s)=>{ke(ae,(()=>t({status:!0}))),ke(ne,(()=>t({status:!1}))),o(G,e)})):(s(G,1),{status:be}),exports.bridgeShareToStory=e=>Ct()?e?.text&&e?.text.length>2048?(console.warn(`[@apiteam/twa-bridge](${T}) | Text is too long`),{status:!1,error_id:1}):e?.widget_link?.name&&e?.widget_link.name.length>48?(console.warn(`[@apiteam/twa-bridge](${T}) | Link name is too long`),{status:!1,error_id:2}):(o(T,e),{status:!0}):(s(T,1),{status:be}),exports.bridgeSwitchInlineQuery=Rt,exports.bridgeTriggerHapticFeedback=kt,exports.createIsViewportChanged=()=>{const[t,s]=e.createSignal({height:0,is_expanded:!1,is_state_stable:!1}),r=e=>s(e);return e.onMount((()=>{Re(oe,r),o(v)})),e.onCleanup((()=>{Be(oe,r)})),t},exports.debug=s,exports.getAppData=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},exports.getPlatform=Se,exports.listener=Me,exports.sender=o,exports.supportAddToHomeScreen=Pt,exports.supportBiometricManager=Ut,exports.supportCheckHomeScreen=Tt,exports.supportClose=Ae,exports.supportCloseScanQrPopup=Te,exports.supportDataSend=Oe,exports.supportDownloadFile=jt,exports.supportExpand=Fe,exports.supportIframeReady=We,exports.supportIframeWillReload=Ge,exports.supportInvokeCustomMethod=He,exports.supportOpenInvoice=Ne,exports.supportOpenLink=Ve,exports.supportOpenPopup=Je,exports.supportOpenScanQrPopup=Ke,exports.supportOpenTgLink=Ye,exports.supportReadTextFromClipboard=et,exports.supportReady=st,exports.supportRequestContentSafeAreaInset=It,exports.supportRequestEmojiStatus=Wt,exports.supportRequestPhone=rt,exports.supportRequestSafeAreaInset=Ot,exports.supportRequestTheme=nt,exports.supportRequestViewport=it,exports.supportRequestWriteAccess=ut,exports.supportSessionStorageGet=()=>!0,exports.supportSessionStorageSet=()=>!0,exports.supportSetBackgroundColor=_t,exports.supportSetBottomBarColor=mt,exports.supportSetEmojiStatus=Dt,exports.supportSetHeaderColor=xt,exports.supportSetupBackButton=St,exports.supportSetupClosingBehavior=vt,exports.supportSetupFullScreen=Ft,exports.supportSetupMainButton=ft,exports.supportSetupOrientation=Lt,exports.supportSetupSettingsButton=qt,exports.supportSetupSwipeBehavior=At,exports.supportShareMessage=Gt,exports.supportShareToStory=Ct,exports.supportSwitchInlineQuery=Bt,exports.supportTriggerHapticFeedback=Mt;
package/solid/index.mjs CHANGED
@@ -1 +1 @@
1
- import{createSignal as e,onMount as t,onCleanup as s,createContext as a,createEffect as o}from"solid-js";import{createStore as r,produce as i}from"solid-js/store";const n=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)},c=(e,t)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:e,eventData:t}));else try{window.parent.postMessage(JSON.stringify({eventType:e,eventData:t}),"*")}catch(e){n("postMessage Iframe",10)}},d="web_app_invoke_custom_method",u="web_app_open_scan_qr_popup",_="web_app_read_text_from_clipboard",p="web_app_request_phone",l="web_app_close",g="web_app_close_scan_qr_popup",m="web_app_data_send",b="web_app_expand",w="iframe_ready",v="iframe_will_reload",h="web_app_open_invoice",S="web_app_open_link",f="web_app_open_popup",y="web_app_open_tg_link",q="web_app_ready",k="web_app_request_theme",R="web_app_request_viewport",A="web_app_request_write_access",B="web_app_set_background_color",T="web_app_set_header_color",P="web_app_set_bottom_bar_color",I="web_app_setup_back_button",x="web_app_setup_closing_behavior",C="web_app_setup_main_button",O="web_app_setup_settings_button",W="web_app_switch_inline_query",L="web_app_trigger_haptic_feedback",E="web_app_setup_swipe_behavior",j="web_app_share_to_story",F="web_app_request_safe_area",G="web_app_request_content_safe_area",M="web_app_request_fullscreen",D="web_app_exit_fullscreen",H="web_app_toggle_orientation_lock",N="web_app_add_to_home_screen",$="web_app_check_home_screen",Q="web_app_send_prepared_message",U="web_app_set_emoji_status",J="web_app_request_emoji_status_access",V="web_app_request_file_download",z="web_app_biometry_get_info",K="web_app_biometry_open_settings",X="web_app_biometry_request_access",Y="web_app_biometry_request_auth",Z="web_app_biometry_update_token";var ee=(e=>(e[e.InvokeCustomMethod=d]="InvokeCustomMethod",e[e.OpenScanQrPopup=u]="OpenScanQrPopup",e[e.ReadTextFromClipboard=_]="ReadTextFromClipboard",e[e.RequestPhone=p]="RequestPhone",e[e.Close=l]="Close",e[e.CloseScanQrPopup=g]="CloseScanQrPopup",e[e.DataSend=m]="DataSend",e[e.Expand=b]="Expand",e[e.IframeReady=w]="IframeReady",e[e.IframeWillReload=v]="IframeWillReload",e[e.OpenInvoice=h]="OpenInvoice",e[e.OpenLink=S]="OpenLink",e[e.OpenPopup=f]="OpenPopup",e[e.OpenTgLink=y]="OpenTgLink",e[e.Ready=q]="Ready",e[e.RequestTheme=k]="RequestTheme",e[e.RequestViewport=R]="RequestViewport",e[e.RequestWriteAccess=A]="RequestWriteAccess",e[e.SetBackgroundColor=B]="SetBackgroundColor",e[e.SetHeaderColor=T]="SetHeaderColor",e[e.SetBottomBarColor=P]="SetBottomBarColor",e[e.SetupBackButton=I]="SetupBackButton",e[e.SetupClosingBehavior=x]="SetupClosingBehavior",e[e.SetupMainButton=C]="SetupMainButton",e[e.SetupSettingsButton=O]="SetupSettingsButton",e[e.SwitchInlineQuery=W]="SwitchInlineQuery",e[e.TriggerHapticFeedback=L]="TriggerHapticFeedback",e[e.SetupSwipeBehavior=E]="SetupSwipeBehavior",e[e.ShareToStory=j]="ShareToStory",e[e.RequestSafeArea=F]="RequestSafeArea",e[e.RequestContentSafeArea=G]="RequestContentSafeArea",e[e.RequestFullscreen=M]="RequestFullscreen",e[e.ExitFullscreen=D]="ExitFullscreen",e[e.ToggleOrientationLock=H]="ToggleOrientationLock",e[e.AddToHomeScreen=N]="AddToHomeScreen",e[e.CheckHomeScreen=$]="CheckHomeScreen",e[e.SendPreparedMessage=Q]="SendPreparedMessage",e[e.SetEmojiStatus=U]="SetEmojiStatus",e[e.RequestEmojiStatusAccess=J]="RequestEmojiStatusAccess",e[e.RequestFileDownload=V]="RequestFileDownload",e))(ee||{});const te="back_button_pressed",se="clipboard_text_received",ae="custom_method_invoked",oe="invoice_closed",re="main_button_pressed",ie="phone_requested",ne="popup_closed",ce="reload_iframe",de="qr_text_received",ue="scan_qr_popup_closed",_e="set_custom_style",pe="settings_button_pressed",le="theme_changed",ge="viewport_changed",me="write_access_requested",be="safe_area_changed",we="content_safe_area_changed",ve="prepared_message_sent",he="prepared_message_failed",Se="emoji_status_set",fe="emoji_status_failed",ye="emoji_status_access_requested",qe="file_download_requested",ke="accelerometer_changed",Re="accelerometer_failed",Ae="accelerometer_started",Be="accelerometer_stopped",Te="biometry_auth_requested",Pe="biometry_info_received",Ie="biometry_token_updated",xe="device_orientation_changed",Ce="device_orientation_failed",Oe="device_orientation_started",We="device_orientation_stopped",Le="fullscreen_changed",Ee="fullscreen_failed",je="gyroscope_changed",Fe="gyroscope_failed",Ge="gyroscope_started",Me="gyroscope_stopped",De="home_screen_added",He="home_screen_checked",Ne="home_screen_failed",$e="location_checked",Qe="location_requested",Ue="secondary_button_pressed",Je="visibility_changed",Ve="web",ze="phone",Ke="desktop",Xe=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?ze:["tdesktop","macos"].includes(t)?Ke:Ve},Ye="not_supported",Ze=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(Xe())},et=()=>Math.random().toString(36).substring(3,9),tt=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),a=parseInt(t[2]),o=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((a<16?"0":"")+a.toString(16))+((o<16?"0":"")+o.toString(16))}return!1},st=e=>{const t=window.location.hash.slice(1),s=new URLSearchParams(t),a=JSON.parse(s.get("tgWebAppThemeParams")??""),o=e||a;for(var r of Object.keys(o)){var i=tt(o[r]);"string"==typeof i&&(o[r]=i)}return"#1c1c1d"==o?.bg_color&&o?.bg_color==o?.secondary_bg_color&&(o.secondary_bg_color="#2c2c2e"),o},at=((e=new Map)=>({once:(t,s,a=e.get(t),o=e=>{s(e),a&&a.splice(a.indexOf(s)>>>0,1)})=>a?a.push(o):e.set(t,[o]),on:(t,s,a=e.get(t))=>a?a.push(s):e.set(t,[s]),off:(t,s,a=e.get(t))=>a&&s?a.splice(a.indexOf(s)>>>0,1):e.set(t,[]),emit:(t,s,a=e.get(t)||[])=>{for(const e of a)e(s)}}))();(()=>{function e(e,t){e===le&&(t.theme_params=st(t.theme_params)),at.emit(e,t),at.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const ot=(e,t)=>{at.on(e,t)},rt=(e,t)=>{at.off(e,t)},it=(e,t)=>{at.once(e,t)};var nt=Object.freeze({__proto__:null,off:rt,on:ot,once:it});const ct=()=>{const[a,o]=e({height:0,is_expanded:!1,is_state_stable:!1}),r=e=>o(e);return t((()=>{ot(ge,r),c(R)})),s((()=>{rt(ge,r)})),a},dt=e=>ut()?(c(l,e),{status:!0}):(n(l,1),{status:Ye}),ut=()=>Ze(0,[Ve,Ke,ze]),_t=e=>pt()?(c(g,e),{status:!0}):(n(g,1),{status:Ye}),pt=()=>Ze(6.4,[ze]),lt=e=>gt()?(c(m,e),{status:!0}):(n(m,1),{status:Ye}),gt=()=>Ze(0,[Ve,Ke,ze]),mt=e=>bt()?(c(b,e),{status:!0}):(n(b,1),{status:Ye}),bt=()=>Ze(0,[ze]),wt=e=>vt()?(c(w,e),{status:!0}):(n(w,1),{status:Ye}),vt=()=>Ze(0,[Ve]),ht=()=>St()?(c(w),{status:!0}):(n(w,1),{status:Ye}),St=()=>Ze(0,[Ve]),ft=async e=>yt()?(void 0===e.req_id&&(e.req_id=et()),c(d,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),rt(ae,a))};ot(ae,a)}))):(n(d,1),{status:Ye}),yt=()=>Ze(6.9,[Ve,Ke,ze]),qt=e=>kt()?(c(h,e),{status:!0}):(n(h,1),{status:Ye}),kt=()=>Ze(6.1,[Ve,Ke,ze]),Rt=e=>At()?(c(S,e),{status:!0}):(n(S,1),{status:Ye}),At=()=>Ze(6.4,[Ve,Ke,ze]),Bt=async e=>Tt()?(e.title.length>64&&n(f,3),e.message.length<1&&n(f,4),e.message.length>256&&n(f,5),e.buttons.length<1&&n(f,6),e.buttons.length>3&&n(f,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&n(f,8),c(f,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),rt(ne,a)};ot(ne,a)}))):(n(f,1),{status:Ye}),Tt=()=>Ze(6.2,[Ve,Ke,ze]),Pt=async e=>It()?(c(u,e),new Promise(((t,s)=>{it(de,(s=>{e.is_close&&_t(),t({status:!0,data:s})})),it(ue,(()=>{t({status:"closed"})}))}))):(n(u,1),{status:Ye}),It=()=>Ze(6.4,[ze]),xt=e=>{const t=function(e){try{return new URL(e)}catch(t){try{return new URL(e,"https://t.me")}catch(t){return e.startsWith("/")||(e="/"+e),new URL(e,"https://t.me")}}}(e.path_full);return e.path_full=t.pathname=t.search,Ct()?(c(y,e),{status:!0}):(n(y,1),{status:Ye})},Ct=()=>Ze(7,[Ve,Ke,ze]);const Ot=async e=>Wt()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=et()),c(_,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),rt(se,a))};ot(se,a)}))):(n(_,1),{status:Ye}),Wt=()=>Ze(6.4,[Ve,Ke,ze]),Lt=e=>Et()?(c(q,e),{status:!0}):(n(q,1),{status:Ye}),Et=()=>Ze(6.9,[Ve,Ke,ze]),jt=async()=>Ft()?(c(p),new Promise(((e,t)=>{it(ie,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(n(p,1),{status:Ye}),Ft=()=>Ze(6.9,[Ve,Ke,ze]),Gt=e=>Mt()?(c(k,e),{status:!0}):(n(k,1),{status:Ye}),Mt=()=>Ze(0,[Ve,Ke,ze]),Dt=e=>Ht()?(c(R,e),{status:!0}):(n(R,1),{status:Ye}),Ht=()=>Ze(0,[Ve,Ke,ze]),Nt=()=>new Promise(((e,t)=>{if(!$t())return n(A,1),void e({status:Ye});const s=t=>{e({status:"allowed"===t.status}),rt(me,s)};ot(me,s),c(A)})),$t=()=>Ze(6.9,[Ve,Ke,ze]),Qt=e=>Ut()?(c(B,e),{status:!0}):(n(B,1),{status:Ye}),Ut=()=>Ze(6.1,[Ve,Ke,ze]),Jt=e=>Vt()?(c(T,e),{status:!0}):(n(T,1),{status:Ye}),Vt=()=>Ze(6.1,[Ve,Ke,ze]),zt=e=>Kt()?(c(P,{color:e?.color||e?.color_key}),{status:!0}):(n(P,1),{status:Ye}),Kt=()=>Ze(7.1,[Ve,Ke,ze]),Xt=e=>Yt()?(c(I,e),{status:!0}):(n(I,1),{status:Ye}),Yt=()=>Ze(6.1,[Ve,Ke,ze]),Zt=e=>es()?(c(x,e),{status:!0}):(n(x,1),{status:Ye}),es=()=>Ze(6.2,[Ve,Ke,ze]),ts=e=>ss()?(c(C,e),{status:!0}):(n(C,1),{status:Ye}),ss=()=>Ze(0,[Ve,Ke,ze]),as=e=>os()?(c(O,e),{status:!0}):(n(O,1),{status:Ye}),os=()=>Ze(6.1,[Ve,Ke,ze]),rs=e=>is()?(e.query.length>256&&n(W,9),c(W,e),{status:!0}):(n(W,1),{status:Ye}),is=()=>Ze(6.7,[Ve,Ke,ze]),ns=e=>cs()?(c(L,e),{status:!0}):(n(L,1),{status:Ye}),cs=()=>Ze(6.1,[ze]),ds=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(s){return window.sessionStorage.setItem("__telegram__"+e,t),{status:!0}}},us=()=>!0,_s=({key:e})=>{try{return{is_json:!0,value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(t){return{is_json:!1,value:window.sessionStorage.getItem("__telegram__"+e)??"",status:!0}}},ps=()=>!0,ls=e=>gs()?(c(E,e),{status:!0}):(n(E,1),{status:Ye}),gs=()=>Ze(7.7,[Ve,Ke,ze]),ms=e=>bs()?e?.text&&e?.text.length>2048?(console.warn(`[@apiteam/twa-bridge](${j}) | Text is too long`),{status:!1,error_id:1}):e?.widget_link?.name&&e?.widget_link.name.length>48?(console.warn(`[@apiteam/twa-bridge](${j}) | Link name is too long`),{status:!1,error_id:2}):(c(j,e),{status:!0}):(n(j,1),{status:Ye}),bs=()=>Ze(7.8,[Ve,Ke,ze]),ws=async e=>new Promise(((t,s)=>{if(!vs())return n($,1),void t({status:Ye,data:void 0});const a=e=>{e.status=e.status||"unknown",t({status:!0,data:e}),rt(He,a)};ot(He,a),c($,e)})),vs=()=>Ze(8,[Ke,ze]),hs=()=>Ss()?(c(N),{status:!0}):(n(N,1),{status:Ye}),Ss=()=>Ze(8,[Ke,ze]),fs=()=>ys()?(c(F),{status:!0}):(n(F,1),{status:Ye}),ys=()=>Ze(8,[Ve,Ke,ze]),qs=()=>ks()?(c(G),{status:!0}):(n(G,1),{status:Ye}),ks=()=>Ze(8,[Ve,Ke,ze]),Rs=e=>{const t=e?.is_full||!1;return As()?(c(t?M:D),{status:!0}):(n(t?M:D,1),{status:Ye})},As=()=>Ze(8,[Ve,Ke,ze]),Bs=e=>Ts()?(c(H,e),{status:!0}):(n(H,1),{status:Ye}),Ts=()=>Ze(8,[Ve,Ke,ze]),Ps=async e=>Is()?new Promise(((t,s)=>{it(ye,(function(e){t({status:"allowed"===e.status})})),c(J,e)})):(n(J,1),{status:Ye}),Is=()=>Ze(8,[Ve,Ke,ze]),xs=async e=>Cs()?new Promise(((t,s)=>{it(Se,(()=>t({status:!0}))),it(fe,(()=>t({status:!1}))),c(U,e)})):(n(U,1),{status:Ye}),Cs=()=>Ze(8,[Ve,Ke,ze]),Os=async e=>Ws()?new Promise(((t,s)=>{it(ve,(()=>t({status:!0}))),it(he,(()=>t({status:!1}))),c(Q,e)})):(n(Q,1),{status:Ye}),Ws=()=>Ze(8,[Ve,Ke,ze]),Ls=async e=>Es()?new Promise(((t,s)=>{it(qe,(function(e){t({status:"downloading"===e.status})})),c(V,e)})):(n(V,1),{status:Ye}),Es=()=>Ze(8,[Ve,Ke,ze]),[js,Fs]=r({isInited:!1,isBiometricAvailable:!1,isAccessGranted:!1,isAccessRequested:!1,isBiometricTokenSaved:!1,biometricType:"unknown",deviceId:""}),Gs={isInited:js.isInited,isBiometricAvailable:js.isBiometricAvailable,isAccessGranted:js.isAccessGranted,isAccessRequested:js.isAccessRequested,isBiometricTokenSaved:js.isBiometricTokenSaved,biometricType:js.biometricType,deviceId:js.deviceId,init:()=>new Promise(((e,t)=>{if(!Ms())return n(z,1),void e({status:Ye,data:void 0});const s=t=>{Ds(t),e({status:!0,data:js}),rt(Pe,s)};ot(Pe,s),c(z)})),requestAccess:e=>new Promise(((t,s)=>{if(!Ms())return n(X,1),void t({status:Ye,data:void 0});if(e.reason&&e.reason.length>128)return console.error(`[${X}] Biometric reason is too long`,e.reason),void t({status:!1,data:void 0});const a=e=>{Ds(e),t({status:!0,data:js}),rt(Pe,a)};ot(Pe,a),c(X,e)})),authenticate:e=>new Promise(((t,s)=>{if(!Ms())return n(Y,1),void t({status:Ye,data:void 0});if(!js.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void t({status:!1,data:void 0});if(!js.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void t({status:!1,data:void 0});const a=e=>{t({status:!0,data:e}),rt(Te,a)};ot(Te,a),c(Y,e)})),updateToken:e=>new Promise(((t,s)=>{if(!Ms())return n(Z,1),void t({status:Ye,data:void 0});if(!js.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void t({status:!1,data:void 0});if(!js.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void t({status:!1,data:void 0});const a=e=>{t({status:!0,data:e}),rt(Ie,a)};ot(Ie,a),c(Z,e)})),openSettings:e=>Ms()?js.isBiometricAvailable?js.isAccessRequested?js.isAccessGranted?(console.warn("[Telegram.WebApp] Biometric access was granted by the user, no need to go to settings."),{status:!1}):(c(K,e),{status:!0}):(console.error("[Telegram.WebApp] Biometric access was not granted by the user."),{status:!1}):(console.error("[Telegram.WebApp] Biometrics is not available on this device."),{status:!1}):(n(K,1),{status:Ye})},Ms=()=>Ze(7.2,[Ke,ze,Ve]),Ds=e=>{Fs(i((t=>(e.available?(t.isBiometricAvailable=!0,t.biometricType=e.type||"",e.access_requested?(t.isAccessRequested=!0,t.isAccessGranted=!!e.access_granted,t.isBiometricTokenSaved=!!e.token_saved):(t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1)):(t.isBiometricAvailable=!1,t.biometricType="unknown",t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1),t.deviceId=e.device_id||"",t.isInited=!0,t))))},Hs=e=>{Fs(i((t=>(t.isBiometricAvailable&&t.isAccessRequested&&("updated"===e.status?t.isBiometricTokenSaved=!0:"removed"===e.status&&(t.isBiometricTokenSaved=!1)),t))))};t((()=>{ot(Pe,Ds),ot(Ie,Hs),s((()=>{rt(Pe,Ds),rt(Ie,Hs)}))}));const Ns=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void n("getInitData",2);const s=new URLSearchParams(t);let a={};return s.forEach(((e,t)=>{if(a[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{a[t]=JSON.parse(e)}catch{}})),a},$s=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},Qs=a({viewport:void 0,theme:void 0,init:void 0}),Us=e=>{const[t,a]=r({viewport:void 0,theme:void 0,init:void 0});return o((()=>{const e=()=>{a("init",Ns())};e();const t=t=>{e(),a("viewport",t)};ot(ge,t),Dt();const o=t=>{e(),a("theme",t)};return ot(le,o),Dt(),s((()=>{rt(ge,t),rt(le,o)})),()=>{rt(ge,t),rt(le,o)}})),Qs.Provider({value:t,children:e.children})};export{Qs as ContextTwa,ke as EventAccelerometerChanged,Re as EventAccelerometerFailed,Ae as EventAccelerometerStarted,Be as EventAccelerometerStopped,te as EventBackButtonPressed,Te as EventBiometryAuthRequested,Pe as EventBiometryInfoReceived,Ie as EventBiometryTokenUpdated,se as EventClipboardTextReceived,we as EventContentSafeAreaChanged,ae as EventCustomMethodInvoked,xe as EventDeviceOrientationChanged,Ce as EventDeviceOrientationFailed,Oe as EventDeviceOrientationStarted,We as EventDeviceOrientationStopped,ye as EventEmojiStatusAccessRequested,fe as EventEmojiStatusFailed,Se as EventEmojiStatusSet,qe as EventFileDownloadRequested,Le as EventFullscreenChanged,Ee as EventFullscreenFailed,je as EventGyroscopeChanged,Fe as EventGyroscopeFailed,Ge as EventGyroscopeStarted,Me as EventGyroscopeStopped,De as EventHomeScreenAdded,He as EventHomeScreenChecked,Ne as EventHomeScreenFailed,oe as EventInvoiceClosed,$e as EventLocationChecked,Qe as EventLocationRequested,re as EventMainButtonPressed,ie as EventPhoneRequested,ne as EventPopupClosed,he as EventPreparedMessageFailed,ve as EventPreparedMessageSent,de as EventQrTextReceived,ce as EventReloadIframe,be as EventSafeAreaChanged,ue as EventScanQrPopupClosed,Ue as EventSecondaryButtonPressed,_e as EventSetCustomStyle,pe as EventSettingsButtonPressed,le as EventThemeChanged,ge as EventViewportChanged,Je as EventVisibilityChanged,me as EventWriteAccessRequested,ee as Method,N as MethodAddToHomeScreen,$ as MethodCheckHomeScreen,l as MethodClose,g as MethodCloseScanQrPopup,m as MethodDataSend,D as MethodExitFullscreen,b as MethodExpand,w as MethodIframeReady,v as MethodIframeWillReload,d as MethodInvokeCustomMethod,h as MethodOpenInvoice,S as MethodOpenLink,f as MethodOpenPopup,u as MethodOpenScanQrPopup,y as MethodOpenTgLink,_ as MethodReadTextFromClipboard,q as MethodReady,G as MethodRequestContentSafeArea,J as MethodRequestEmojiStatusAccess,V as MethodRequestFileDownload,M as MethodRequestFullscreen,p as MethodRequestPhone,F as MethodRequestSafeArea,k as MethodRequestTheme,R as MethodRequestViewport,A as MethodRequestWriteAccess,Q as MethodSendPreparedMessage,B as MethodSetBackgroundColor,P as MethodSetBottomBarColor,U as MethodSetEmojiStatus,T as MethodSetHeaderColor,I as MethodSetupBackButton,x as MethodSetupClosingBehavior,C as MethodSetupMainButton,O as MethodSetupSettingsButton,E as MethodSetupSwipeBehavior,j as MethodShareToStory,W as MethodSwitchInlineQuery,H as MethodToggleOrientationLock,L as MethodTriggerHapticFeedback,Ye as NOT_SUPPORTED,Us as ProviderTWA,Ke as TG_DESKTOP,ze as TG_PHONE,Ve as TG_WEB,hs as bridgeAddToHomeScreen,Gs as bridgeBiometricManager,ws as bridgeCheckHomeScreen,dt as bridgeClose,_t as bridgeCloseScanQrPopup,lt as bridgeDataSend,Ls as bridgeDownloadFile,mt as bridgeExpand,Ns as bridgeGetInitData,st as bridgeGetThemeParams,wt as bridgeIframeReady,ht as bridgeIframeWillReload,ft as bridgeInvokeCustomMethod,qt as bridgeOpenInvoice,Rt as bridgeOpenLink,Bt as bridgeOpenPopup,Pt as bridgeOpenScanQrPopup,xt as bridgeOpenTgLink,Ot as bridgeReadTextFromClipboard,Lt as bridgeReady,qs as bridgeRequestContentSafeAreaInset,Ps as bridgeRequestEmojiStatus,jt as bridgeRequestPhone,fs as bridgeRequestSafeAreaInset,Gt as bridgeRequestTheme,Dt as bridgeRequestViewport,Nt as bridgeRequestWriteAccess,c as bridgeSend,_s as bridgeSessionStorageGet,ds as bridgeSessionStorageSet,Qt as bridgeSetBackgroundColor,zt as bridgeSetBottomBarColor,xs as bridgeSetEmojiStatus,Jt as bridgeSetHeaderColor,Xt as bridgeSetupBackButton,Zt as bridgeSetupClosingBehavior,Rs as bridgeSetupFullScreen,ts as bridgeSetupMainButton,Bs as bridgeSetupOrientation,as as bridgeSetupSettingsButton,ls as bridgeSetupSwipeBehavior,Os as bridgeShareMessage,ms as bridgeShareToStory,rs as bridgeSwitchInlineQuery,ns as bridgeTriggerHapticFeedback,ct as createIsViewportChanged,n as debug,$s as getAppData,Xe as getPlatform,nt as listener,c as sender,Ss as supportAddToHomeScreen,Ms as supportBiometricManager,vs as supportCheckHomeScreen,ut as supportClose,pt as supportCloseScanQrPopup,gt as supportDataSend,Es as supportDownloadFile,bt as supportExpand,vt as supportIframeReady,St as supportIframeWillReload,yt as supportInvokeCustomMethod,kt as supportOpenInvoice,At as supportOpenLink,Tt as supportOpenPopup,It as supportOpenScanQrPopup,Ct as supportOpenTgLink,Wt as supportReadTextFromClipboard,Et as supportReady,ks as supportRequestContentSafeAreaInset,Is as supportRequestEmojiStatus,Ft as supportRequestPhone,ys as supportRequestSafeAreaInset,Mt as supportRequestTheme,Ht as supportRequestViewport,$t as supportRequestWriteAccess,ps as supportSessionStorageGet,us as supportSessionStorageSet,Ut as supportSetBackgroundColor,Kt as supportSetBottomBarColor,Cs as supportSetEmojiStatus,Vt as supportSetHeaderColor,Yt as supportSetupBackButton,es as supportSetupClosingBehavior,As as supportSetupFullScreen,ss as supportSetupMainButton,Ts as supportSetupOrientation,os as supportSetupSettingsButton,gs as supportSetupSwipeBehavior,Ws as supportShareMessage,bs as supportShareToStory,is as supportSwitchInlineQuery,cs as supportTriggerHapticFeedback};
1
+ import{createSignal as e,onMount as t,onCleanup as s,createContext as a,createEffect as o}from"solid-js";import{createStore as r,produce as i}from"solid-js/store";const n=(e,t)=>{"development"===process.env.NODE_ENV&&console.error(`[@apiteam/twa-bridge](${e}) = ${t}`)},c=(e,t)=>{if(window.TelegramWebviewProxy)window.TelegramWebviewProxy.postEvent(e,JSON.stringify(t));else if(window.external&&"notify"in window.external)window.external.notify(JSON.stringify({eventType:e,eventData:t}));else try{window.parent.postMessage(JSON.stringify({eventType:e,eventData:t}),"*")}catch(e){n("postMessage Iframe",10)}},d="web_app_invoke_custom_method",_="web_app_open_scan_qr_popup",u="web_app_read_text_from_clipboard",p="web_app_request_phone",l="web_app_close",g="web_app_close_scan_qr_popup",b="web_app_data_send",m="web_app_expand",w="iframe_ready",v="iframe_will_reload",h="web_app_open_invoice",S="web_app_open_link",f="web_app_open_popup",y="web_app_open_tg_link",q="web_app_ready",k="web_app_request_theme",R="web_app_request_viewport",A="web_app_request_write_access",B="web_app_set_background_color",T="web_app_set_header_color",P="web_app_set_bottom_bar_color",I="web_app_setup_back_button",x="web_app_setup_closing_behavior",C="web_app_setup_main_button",O="web_app_setup_settings_button",W="web_app_switch_inline_query",L="web_app_trigger_haptic_feedback",E="web_app_setup_swipe_behavior",j="web_app_share_to_story",F="web_app_request_safe_area",G="web_app_request_content_safe_area",M="web_app_request_fullscreen",D="web_app_exit_fullscreen",H="web_app_toggle_orientation_lock",N="web_app_add_to_home_screen",$="web_app_check_home_screen",Q="web_app_send_prepared_message",U="web_app_set_emoji_status",J="web_app_request_emoji_status_access",V="web_app_request_file_download",z="web_app_biometry_get_info",K="web_app_biometry_open_settings",X="web_app_biometry_request_access",Y="web_app_biometry_request_auth",Z="web_app_biometry_update_token",ee="web_app_check_location",te="web_app_open_location_settings",se="web_app_request_location",ae="web_app_start_accelerometer",oe="web_app_start_device_orientation",re="web_app_start_gyroscope",ie="web_app_stop_accelerometer",ne="web_app_stop_device_orientation",ce="web_app_stop_gyroscope",de="web_app_setup_secondary_button";var _e=(e=>(e[e.InvokeCustomMethod=d]="InvokeCustomMethod",e[e.OpenScanQrPopup=_]="OpenScanQrPopup",e[e.ReadTextFromClipboard=u]="ReadTextFromClipboard",e[e.RequestPhone=p]="RequestPhone",e[e.Close=l]="Close",e[e.CloseScanQrPopup=g]="CloseScanQrPopup",e[e.DataSend=b]="DataSend",e[e.Expand=m]="Expand",e[e.IframeReady=w]="IframeReady",e[e.IframeWillReload=v]="IframeWillReload",e[e.OpenInvoice=h]="OpenInvoice",e[e.OpenLink=S]="OpenLink",e[e.OpenPopup=f]="OpenPopup",e[e.OpenTgLink=y]="OpenTgLink",e[e.Ready=q]="Ready",e[e.RequestTheme=k]="RequestTheme",e[e.RequestViewport=R]="RequestViewport",e[e.RequestWriteAccess=A]="RequestWriteAccess",e[e.SetBackgroundColor=B]="SetBackgroundColor",e[e.SetHeaderColor=T]="SetHeaderColor",e[e.SetBottomBarColor=P]="SetBottomBarColor",e[e.SetupBackButton=I]="SetupBackButton",e[e.SetupClosingBehavior=x]="SetupClosingBehavior",e[e.SetupMainButton=C]="SetupMainButton",e[e.SetupSettingsButton=O]="SetupSettingsButton",e[e.SwitchInlineQuery=W]="SwitchInlineQuery",e[e.TriggerHapticFeedback=L]="TriggerHapticFeedback",e[e.SetupSwipeBehavior=E]="SetupSwipeBehavior",e[e.ShareToStory=j]="ShareToStory",e[e.RequestSafeArea=F]="RequestSafeArea",e[e.RequestContentSafeArea=G]="RequestContentSafeArea",e[e.RequestFullscreen=M]="RequestFullscreen",e[e.ExitFullscreen=D]="ExitFullscreen",e[e.ToggleOrientationLock=H]="ToggleOrientationLock",e[e.AddToHomeScreen=N]="AddToHomeScreen",e[e.CheckHomeScreen=$]="CheckHomeScreen",e[e.SendPreparedMessage=Q]="SendPreparedMessage",e[e.SetEmojiStatus=U]="SetEmojiStatus",e[e.RequestEmojiStatusAccess=J]="RequestEmojiStatusAccess",e[e.RequestFileDownload=V]="RequestFileDownload",e))(_e||{});const ue="back_button_pressed",pe="clipboard_text_received",le="custom_method_invoked",ge="invoice_closed",be="main_button_pressed",me="phone_requested",we="popup_closed",ve="reload_iframe",he="qr_text_received",Se="scan_qr_popup_closed",fe="set_custom_style",ye="settings_button_pressed",qe="theme_changed",ke="viewport_changed",Re="write_access_requested",Ae="safe_area_changed",Be="content_safe_area_changed",Te="prepared_message_sent",Pe="prepared_message_failed",Ie="emoji_status_set",xe="emoji_status_failed",Ce="emoji_status_access_requested",Oe="file_download_requested",We="accelerometer_changed",Le="accelerometer_failed",Ee="accelerometer_started",je="accelerometer_stopped",Fe="biometry_auth_requested",Ge="biometry_info_received",Me="biometry_token_updated",De="device_orientation_changed",He="device_orientation_failed",Ne="device_orientation_started",$e="device_orientation_stopped",Qe="fullscreen_changed",Ue="fullscreen_failed",Je="gyroscope_changed",Ve="gyroscope_failed",ze="gyroscope_started",Ke="gyroscope_stopped",Xe="home_screen_added",Ye="home_screen_checked",Ze="home_screen_failed",et="location_checked",tt="location_requested",st="secondary_button_pressed",at="visibility_changed",ot="web",rt="phone",it="desktop",nt=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppPlatform")??"ios";return["android","ios"].includes(t)?rt:["tdesktop","macos"].includes(t)?it:ot},ct="not_supported",dt=(e,t)=>{const s=new URLSearchParams(window.location.hash.slice(1)).get("tgWebAppVersion");return Number(s?.replace(".",""))>=Number(String(e)?.replace(".",""))&&-1!==t.indexOf(nt())},_t=()=>Math.random().toString(36).substring(3,9),ut=e=>{var t;if(t=/^\s*#([0-9a-f]{6})\s*$/i.exec(e+=""))return"#"+t[1].toLowerCase();if(t=/^\s*#([0-9a-f])([0-9a-f])([0-9a-f])\s*$/i.exec(e))return("#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]).toLowerCase();if(t=/^\s*rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+\.{0,1}\d*))?\)\s*$/.exec(e)){var s=parseInt(t[1]),a=parseInt(t[2]),o=parseInt(t[3]);return"#"+((s<16?"0":"")+s.toString(16))+((a<16?"0":"")+a.toString(16))+((o<16?"0":"")+o.toString(16))}return!1},pt=e=>{const t=window.location.hash.slice(1),s=new URLSearchParams(t),a=JSON.parse(s.get("tgWebAppThemeParams")??""),o=e||a;for(var r of Object.keys(o)){var i=ut(o[r]);"string"==typeof i&&(o[r]=i)}return"#1c1c1d"==o?.bg_color&&o?.bg_color==o?.secondary_bg_color&&(o.secondary_bg_color="#2c2c2e"),o},lt=((e=new Map)=>({once:(t,s,a=e.get(t),o=e=>{s(e),a&&a.splice(a.indexOf(s)>>>0,1)})=>a?a.push(o):e.set(t,[o]),on:(t,s,a=e.get(t))=>a?a.push(s):e.set(t,[s]),off:(t,s,a=e.get(t))=>a&&s?a.splice(a.indexOf(s)>>>0,1):e.set(t,[]),emit:(t,s,a=e.get(t)||[])=>{for(const e of a)e(s)}}))();(()=>{function e(e,t){e===qe&&(t.theme_params=pt(t.theme_params)),lt.emit(e,t),lt.emit("*",{name:e,data:t})}window.TelegramGameProxy_receiveEvent=e,window.Telegram={WebView:{receiveEvent:e}},window.TelegramGameProxy={receiveEvent:e}})();const gt=(e,t)=>{lt.on(e,t)},bt=(e,t)=>{lt.off(e,t)},mt=(e,t)=>{lt.once(e,t)};var wt=Object.freeze({__proto__:null,off:bt,on:gt,once:mt});const vt=()=>{const[a,o]=e({height:0,is_expanded:!1,is_state_stable:!1}),r=e=>o(e);return t((()=>{gt(ke,r),c(R)})),s((()=>{bt(ke,r)})),a},ht=e=>St()?(c(l,e),{status:!0}):(n(l,1),{status:ct}),St=()=>dt(0,[ot,it,rt]),ft=e=>yt()?(c(g,e),{status:!0}):(n(g,1),{status:ct}),yt=()=>dt(6.4,[rt]),qt=e=>kt()?(c(b,e),{status:!0}):(n(b,1),{status:ct}),kt=()=>dt(0,[ot,it,rt]),Rt=e=>At()?(c(m,e),{status:!0}):(n(m,1),{status:ct}),At=()=>dt(0,[rt]),Bt=e=>Tt()?(c(w,e),{status:!0}):(n(w,1),{status:ct}),Tt=()=>dt(0,[ot]),Pt=()=>It()?(c(w),{status:!0}):(n(w,1),{status:ct}),It=()=>dt(0,[ot]),xt=async e=>Ct()?(void 0===e.req_id&&(e.req_id=_t()),c(d,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e.req_id&&(t({status:!0,data:s}),bt(le,a))};gt(le,a)}))):(n(d,1),{status:ct}),Ct=()=>dt(6.9,[ot,it,rt]),Ot=e=>Wt()?(c(h,e),{status:!0}):(n(h,1),{status:ct}),Wt=()=>dt(6.1,[ot,it,rt]),Lt=e=>Et()?(c(S,e),{status:!0}):(n(S,1),{status:ct}),Et=()=>dt(6.4,[ot,it,rt]),jt=async e=>Ft()?(e.title.length>64&&n(f,3),e.message.length<1&&n(f,4),e.message.length>256&&n(f,5),e.buttons.length<1&&n(f,6),e.buttons.length>3&&n(f,7),void 0!==e.buttons.find((e=>e.text?.match(/^(ok|close|cancel)$/g)))&&n(f,8),c(f,e),new Promise(((t,s)=>{const a=s=>{t({status:!!e.buttons.find((e=>e.id===s?.button_id)),data:s}),bt(we,a)};gt(we,a)}))):(n(f,1),{status:ct}),Ft=()=>dt(6.2,[ot,it,rt]),Gt=async e=>Mt()?(c(_,e),new Promise(((t,s)=>{mt(he,(s=>{e.is_close&&ft(),t({status:!0,data:s})})),mt(Se,(()=>{t({status:"closed"})}))}))):(n(_,1),{status:ct}),Mt=()=>dt(6.4,[rt]),Dt=e=>{const t=function(e){try{return new URL(e)}catch(t){try{return new URL(e,"https://t.me")}catch(t){return e.startsWith("/")||(e="/"+e),new URL(e,"https://t.me")}}}(e.path_full);return e.path_full=t.pathname=t.search,Ht()?(c(y,e),{status:!0}):(n(y,1),{status:ct})},Ht=()=>dt(7,[ot,it,rt]);const Nt=async e=>$t()?(e||(e={req_id:void 0}),void 0===e.req_id&&(e.req_id=_t()),c(u,e),new Promise(((t,s)=>{const a=s=>{s.req_id===e?.req_id&&(t({status:!0,data:s}),bt(pe,a))};gt(pe,a)}))):(n(u,1),{status:ct}),$t=()=>dt(6.4,[ot,it,rt]),Qt=e=>Ut()?(c(q,e),{status:!0}):(n(q,1),{status:ct}),Ut=()=>dt(6.9,[ot,it,rt]),Jt=async()=>Vt()?(c(p),new Promise(((e,t)=>{mt(me,(t=>{"sent"===t.status&&e({status:!0}),e({status:!1})}))}))):(n(p,1),{status:ct}),Vt=()=>dt(6.9,[ot,it,rt]),zt=e=>Kt()?(c(k,e),{status:!0}):(n(k,1),{status:ct}),Kt=()=>dt(0,[ot,it,rt]),Xt=e=>Yt()?(c(R,e),{status:!0}):(n(R,1),{status:ct}),Yt=()=>dt(0,[ot,it,rt]),Zt=()=>new Promise(((e,t)=>{if(!es())return n(A,1),void e({status:ct});const s=t=>{e({status:"allowed"===t.status}),bt(Re,s)};gt(Re,s),c(A)})),es=()=>dt(6.9,[ot,it,rt]),ts=e=>ss()?(c(B,e),{status:!0}):(n(B,1),{status:ct}),ss=()=>dt(6.1,[ot,it,rt]),as=e=>os()?(c(T,e),{status:!0}):(n(T,1),{status:ct}),os=()=>dt(6.1,[ot,it,rt]),rs=e=>is()?(c(P,{color:e?.color||e?.color_key}),{status:!0}):(n(P,1),{status:ct}),is=()=>dt(7.1,[ot,it,rt]),ns=e=>cs()?(c(I,e),{status:!0}):(n(I,1),{status:ct}),cs=()=>dt(6.1,[ot,it,rt]),ds=e=>_s()?(c(x,e),{status:!0}):(n(x,1),{status:ct}),_s=()=>dt(6.2,[ot,it,rt]),us=e=>ps()?(c(C,e),{status:!0}):(n(C,1),{status:ct}),ps=()=>dt(0,[ot,it,rt]),ls=e=>gs()?(c(O,e),{status:!0}):(n(O,1),{status:ct}),gs=()=>dt(6.1,[ot,it,rt]),bs=e=>ms()?(e.query.length>256&&n(W,9),c(W,e),{status:!0}):(n(W,1),{status:ct}),ms=()=>dt(6.7,[ot,it,rt]),ws=e=>vs()?(c(L,e),{status:!0}):(n(L,1),{status:ct}),vs=()=>dt(6.1,[rt]),hs=({key:e,value:t})=>{try{return window.sessionStorage.setItem("__telegram__"+e,JSON.stringify(t)),{status:!0}}catch(s){return window.sessionStorage.setItem("__telegram__"+e,t),{status:!0}}},Ss=()=>!0,fs=({key:e})=>{try{return{is_json:!0,value:JSON.parse(window.sessionStorage.getItem("__telegram__"+e)??""),status:!0}}catch(t){return{is_json:!1,value:window.sessionStorage.getItem("__telegram__"+e)??"",status:!0}}},ys=()=>!0,qs=e=>ks()?(c(E,e),{status:!0}):(n(E,1),{status:ct}),ks=()=>dt(7.7,[ot,it,rt]),Rs=e=>As()?e?.text&&e?.text.length>2048?(console.warn(`[@apiteam/twa-bridge](${j}) | Text is too long`),{status:!1,error_id:1}):e?.widget_link?.name&&e?.widget_link.name.length>48?(console.warn(`[@apiteam/twa-bridge](${j}) | Link name is too long`),{status:!1,error_id:2}):(c(j,e),{status:!0}):(n(j,1),{status:ct}),As=()=>dt(7.8,[ot,it,rt]),Bs=async e=>new Promise(((t,s)=>{if(!Ts())return n($,1),void t({status:ct,data:void 0});const a=e=>{e.status=e.status||"unknown",t({status:!0,data:e}),bt(Ye,a)};gt(Ye,a),c($,e)})),Ts=()=>dt(8,[it,rt]),Ps=()=>Is()?(c(N),{status:!0}):(n(N,1),{status:ct}),Is=()=>dt(8,[it,rt]),xs=()=>Cs()?(c(F),{status:!0}):(n(F,1),{status:ct}),Cs=()=>dt(8,[ot,it,rt]),Os=()=>Ws()?(c(G),{status:!0}):(n(G,1),{status:ct}),Ws=()=>dt(8,[ot,it,rt]),Ls=e=>{const t=e?.is_full||!1;return Es()?(c(t?M:D),{status:!0}):(n(t?M:D,1),{status:ct})},Es=()=>dt(8,[ot,it,rt]),js=e=>Fs()?(c(H,e),{status:!0}):(n(H,1),{status:ct}),Fs=()=>dt(8,[ot,it,rt]),Gs=async e=>Ms()?new Promise(((t,s)=>{mt(Ce,(function(e){t({status:"allowed"===e.status})})),c(J,e)})):(n(J,1),{status:ct}),Ms=()=>dt(8,[ot,it,rt]),Ds=async e=>Hs()?new Promise(((t,s)=>{mt(Ie,(()=>t({status:!0}))),mt(xe,(()=>t({status:!1}))),c(U,e)})):(n(U,1),{status:ct}),Hs=()=>dt(8,[ot,it,rt]),Ns=async e=>$s()?new Promise(((t,s)=>{mt(Te,(()=>t({status:!0}))),mt(Pe,(()=>t({status:!1}))),c(Q,e)})):(n(Q,1),{status:ct}),$s=()=>dt(8,[ot,it,rt]),Qs=async e=>Us()?new Promise(((t,s)=>{mt(Oe,(function(e){t({status:"downloading"===e.status})})),c(V,e)})):(n(V,1),{status:ct}),Us=()=>dt(8,[ot,it,rt]),[Js,Vs]=r({isInited:!1,isBiometricAvailable:!1,isAccessGranted:!1,isAccessRequested:!1,isBiometricTokenSaved:!1,biometricType:"unknown",deviceId:""}),zs={get isInited(){return Js.isInited},get isBiometricAvailable(){return Js.isBiometricAvailable},get isAccessGranted(){return Js.isAccessGranted},get isAccessRequested(){return Js.isAccessRequested},get isBiometricTokenSaved(){return Js.isBiometricTokenSaved},get biometricType(){return Js.biometricType},get deviceId(){return Js.deviceId},init:()=>new Promise(((e,t)=>{if(!Ks())return n(z,1),void e({status:ct,data:void 0});const s=t=>{Xs(t),e({status:!0,data:Js}),bt(Ge,s)};gt(Ge,s),c(z)})),requestAccess:e=>new Promise(((t,s)=>{if(!Ks())return n(X,1),void t({status:ct,data:void 0});if(e.reason&&e.reason.length>128)return console.error(`[${X}] Biometric reason is too long`,e.reason),void t({status:!1,data:void 0});const a=e=>{Xs(e),t({status:!0,data:Js}),bt(Ge,a)};gt(Ge,a),c(X,e)})),authenticate:e=>new Promise(((t,s)=>{if(!Ks())return n(Y,1),void t({status:ct,data:void 0});if(!Js.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void t({status:!1,data:void 0});if(!Js.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void t({status:!1,data:void 0});const a=e=>{t({status:!0,data:e}),bt(Fe,a)};gt(Fe,a),c(Y,e)})),updateToken:e=>new Promise(((t,s)=>{if(!Ks())return n(Z,1),void t({status:ct,data:void 0});if(!Js.isBiometricAvailable)return console.error("[Telegram.WebApp] Biometrics is not available on this device."),void t({status:!1,data:void 0});if(!Js.isAccessGranted)return console.error("[Telegram.WebApp] Biometric access was not granted by the user."),void t({status:!1,data:void 0});const a=e=>{t({status:!0,data:e}),bt(Me,a)};gt(Me,a),c(Z,e)})),openSettings:e=>Ks()?Js.isBiometricAvailable?Js.isAccessRequested?Js.isAccessGranted?(console.warn("[Telegram.WebApp] Biometric access was granted by the user, no need to go to settings."),{status:!1}):(c(K,e),{status:!0}):(console.error("[Telegram.WebApp] Biometric access was not granted by the user."),{status:!1}):(console.error("[Telegram.WebApp] Biometrics is not available on this device."),{status:!1}):(n(K,1),{status:ct})},Ks=()=>dt(7.2,[it,rt,ot]),Xs=e=>{Vs(i((t=>(e.available?(t.isBiometricAvailable=!0,t.biometricType=e.type||"",e.access_requested?(t.isAccessRequested=!0,t.isAccessGranted=!!e.access_granted,t.isBiometricTokenSaved=!!e.token_saved):(t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1)):(t.isBiometricAvailable=!1,t.biometricType="unknown",t.isAccessRequested=!1,t.isAccessGranted=!1,t.isBiometricTokenSaved=!1),t.deviceId=e.device_id||"",t.isInited=!0,t))))},Ys=e=>{Vs(i((t=>(t.isBiometricAvailable&&t.isAccessRequested&&("updated"===e.status?t.isBiometricTokenSaved=!0:"removed"===e.status&&(t.isBiometricTokenSaved=!1)),t))))};t((()=>{gt(Ge,Xs),gt(Me,Ys),s((()=>{bt(Ge,Xs),bt(Me,Ys)}))}));const Zs=()=>{const e=window.location.hash.slice(1),t=new URLSearchParams(e).get("tgWebAppData");if(!t)return void n("getInitData",2);const s=new URLSearchParams(t);let a={};return s.forEach(((e,t)=>{if(a[t]=e,void 0!==t.match(/^(chat|receiver|user)$/g))try{a[t]=JSON.parse(e)}catch{}})),a},ea=()=>{const e=window.location.hash.slice(1);return new URLSearchParams(e).get("tgWebAppData")},ta=a({viewport:void 0,theme:void 0,init:void 0}),sa=e=>{const[t,a]=r({viewport:void 0,theme:void 0,init:void 0});return o((()=>{const e=()=>{a("init",Zs())};e();const t=t=>{e(),a("viewport",t)};gt(ke,t),Xt();const o=t=>{e(),a("theme",t)};return gt(qe,o),Xt(),s((()=>{bt(ke,t),bt(qe,o)})),()=>{bt(ke,t),bt(qe,o)}})),ta.Provider({value:t,children:e.children})};export{ta as ContextTwa,We as EventAccelerometerChanged,Le as EventAccelerometerFailed,Ee as EventAccelerometerStarted,je as EventAccelerometerStopped,ue as EventBackButtonPressed,Fe as EventBiometryAuthRequested,Ge as EventBiometryInfoReceived,Me as EventBiometryTokenUpdated,pe as EventClipboardTextReceived,Be as EventContentSafeAreaChanged,le as EventCustomMethodInvoked,De as EventDeviceOrientationChanged,He as EventDeviceOrientationFailed,Ne as EventDeviceOrientationStarted,$e as EventDeviceOrientationStopped,Ce as EventEmojiStatusAccessRequested,xe as EventEmojiStatusFailed,Ie as EventEmojiStatusSet,Oe as EventFileDownloadRequested,Qe as EventFullscreenChanged,Ue as EventFullscreenFailed,Je as EventGyroscopeChanged,Ve as EventGyroscopeFailed,ze as EventGyroscopeStarted,Ke as EventGyroscopeStopped,Xe as EventHomeScreenAdded,Ye as EventHomeScreenChecked,Ze as EventHomeScreenFailed,ge as EventInvoiceClosed,et as EventLocationChecked,tt as EventLocationRequested,be as EventMainButtonPressed,me as EventPhoneRequested,we as EventPopupClosed,Pe as EventPreparedMessageFailed,Te as EventPreparedMessageSent,he as EventQrTextReceived,ve as EventReloadIframe,Ae as EventSafeAreaChanged,Se as EventScanQrPopupClosed,st as EventSecondaryButtonPressed,fe as EventSetCustomStyle,ye as EventSettingsButtonPressed,qe as EventThemeChanged,ke as EventViewportChanged,at as EventVisibilityChanged,Re as EventWriteAccessRequested,_e as Method,N as MethodAddToHomeScreen,z as MethodBiometryGetInfo,K as MethodBiometryOpenSettings,X as MethodBiometryRequestAccess,Y as MethodBiometryRequestAuth,Z as MethodBiometryUpdateToken,$ as MethodCheckHomeScreen,ee as MethodCheckLocation,l as MethodClose,g as MethodCloseScanQrPopup,b as MethodDataSend,D as MethodExitFullscreen,m as MethodExpand,w as MethodIframeReady,v as MethodIframeWillReload,d as MethodInvokeCustomMethod,h as MethodOpenInvoice,S as MethodOpenLink,te as MethodOpenLocationSettings,f as MethodOpenPopup,_ as MethodOpenScanQrPopup,y as MethodOpenTgLink,u as MethodReadTextFromClipboard,q as MethodReady,G as MethodRequestContentSafeArea,J as MethodRequestEmojiStatusAccess,V as MethodRequestFileDownload,M as MethodRequestFullscreen,se as MethodRequestLocation,p as MethodRequestPhone,F as MethodRequestSafeArea,k as MethodRequestTheme,R as MethodRequestViewport,A as MethodRequestWriteAccess,Q as MethodSendPreparedMessage,B as MethodSetBackgroundColor,P as MethodSetBottomBarColor,U as MethodSetEmojiStatus,T as MethodSetHeaderColor,I as MethodSetupBackButton,x as MethodSetupClosingBehavior,C as MethodSetupMainButton,de as MethodSetupSecondaryButton,O as MethodSetupSettingsButton,E as MethodSetupSwipeBehavior,j as MethodShareToStory,ae as MethodStartAccelerometer,oe as MethodStartDeviceOrientation,re as MethodStartGyroscope,ie as MethodStopAccelerometer,ne as MethodStopDeviceOrientation,ce as MethodStopGyroscope,W as MethodSwitchInlineQuery,H as MethodToggleOrientationLock,L as MethodTriggerHapticFeedback,ct as NOT_SUPPORTED,sa as ProviderTWA,it as TG_DESKTOP,rt as TG_PHONE,ot as TG_WEB,Ps as bridgeAddToHomeScreen,zs as bridgeBiometricManager,Bs as bridgeCheckHomeScreen,ht as bridgeClose,ft as bridgeCloseScanQrPopup,qt as bridgeDataSend,Qs as bridgeDownloadFile,Rt as bridgeExpand,Zs as bridgeGetInitData,pt as bridgeGetThemeParams,Bt as bridgeIframeReady,Pt as bridgeIframeWillReload,xt as bridgeInvokeCustomMethod,Ot as bridgeOpenInvoice,Lt as bridgeOpenLink,jt as bridgeOpenPopup,Gt as bridgeOpenScanQrPopup,Dt as bridgeOpenTgLink,Nt as bridgeReadTextFromClipboard,Qt as bridgeReady,Os as bridgeRequestContentSafeAreaInset,Gs as bridgeRequestEmojiStatus,Jt as bridgeRequestPhone,xs as bridgeRequestSafeAreaInset,zt as bridgeRequestTheme,Xt as bridgeRequestViewport,Zt as bridgeRequestWriteAccess,c as bridgeSend,fs as bridgeSessionStorageGet,hs as bridgeSessionStorageSet,ts as bridgeSetBackgroundColor,rs as bridgeSetBottomBarColor,Ds as bridgeSetEmojiStatus,as as bridgeSetHeaderColor,ns as bridgeSetupBackButton,ds as bridgeSetupClosingBehavior,Ls as bridgeSetupFullScreen,us as bridgeSetupMainButton,js as bridgeSetupOrientation,ls as bridgeSetupSettingsButton,qs as bridgeSetupSwipeBehavior,Ns as bridgeShareMessage,Rs as bridgeShareToStory,bs as bridgeSwitchInlineQuery,ws as bridgeTriggerHapticFeedback,vt as createIsViewportChanged,n as debug,ea as getAppData,nt as getPlatform,wt as listener,c as sender,Is as supportAddToHomeScreen,Ks as supportBiometricManager,Ts as supportCheckHomeScreen,St as supportClose,yt as supportCloseScanQrPopup,kt as supportDataSend,Us as supportDownloadFile,At as supportExpand,Tt as supportIframeReady,It as supportIframeWillReload,Ct as supportInvokeCustomMethod,Wt as supportOpenInvoice,Et as supportOpenLink,Ft as supportOpenPopup,Mt as supportOpenScanQrPopup,Ht as supportOpenTgLink,$t as supportReadTextFromClipboard,Ut as supportReady,Ws as supportRequestContentSafeAreaInset,Ms as supportRequestEmojiStatus,Vt as supportRequestPhone,Cs as supportRequestSafeAreaInset,Kt as supportRequestTheme,Yt as supportRequestViewport,es as supportRequestWriteAccess,ys as supportSessionStorageGet,Ss as supportSessionStorageSet,ss as supportSetBackgroundColor,is as supportSetBottomBarColor,Hs as supportSetEmojiStatus,os as supportSetHeaderColor,cs as supportSetupBackButton,_s as supportSetupClosingBehavior,Es as supportSetupFullScreen,ps as supportSetupMainButton,Fs as supportSetupOrientation,gs as supportSetupSettingsButton,ks as supportSetupSwipeBehavior,$s as supportShareMessage,As as supportShareToStory,ms as supportSwitchInlineQuery,vs as supportTriggerHapticFeedback};